<\/a>",
+ "markdown": ""
+ }
+}
\ No newline at end of file
diff --git a/dev/api/responses/imports-create.json b/dev/api/responses/imports-create.json
new file mode 100644
index 00000000000..997758799a4
--- /dev/null
+++ b/dev/api/responses/imports-create.json
@@ -0,0 +1,10 @@
+{
+ "type": "chapter",
+ "name": "Pension Providers",
+ "created_by": 1,
+ "size": 2757,
+ "path": "uploads\/files\/imports\/ghnxmS3u9QxLWu82.zip",
+ "updated_at": "2025-07-18T14:50:27.000000Z",
+ "created_at": "2025-07-18T14:50:27.000000Z",
+ "id": 31
+}
\ No newline at end of file
diff --git a/dev/api/responses/imports-list.json b/dev/api/responses/imports-list.json
new file mode 100644
index 00000000000..7451e443783
--- /dev/null
+++ b/dev/api/responses/imports-list.json
@@ -0,0 +1,23 @@
+{
+ "data": [
+ {
+ "id": 25,
+ "name": "IT Department",
+ "size": 618462,
+ "type": "book",
+ "created_by": 1,
+ "created_at": "2024-12-20T18:40:38.000000Z",
+ "updated_at": "2024-12-20T18:40:38.000000Z"
+ },
+ {
+ "id": 27,
+ "name": "Clients",
+ "size": 15364,
+ "type": "chapter",
+ "created_by": 1,
+ "created_at": "2025-03-20T12:41:44.000000Z",
+ "updated_at": "2025-03-20T12:41:44.000000Z"
+ }
+ ],
+ "total": 2
+}
\ No newline at end of file
diff --git a/dev/api/responses/imports-read.json b/dev/api/responses/imports-read.json
new file mode 100644
index 00000000000..e256854d127
--- /dev/null
+++ b/dev/api/responses/imports-read.json
@@ -0,0 +1,51 @@
+{
+ "id": 25,
+ "name": "IT Department",
+ "path": "uploads\/files\/imports\/7YOpZ6sGIEbYdRFL.zip",
+ "size": 618462,
+ "type": "book",
+ "created_by": 1,
+ "created_at": "2024-12-20T18:40:38.000000Z",
+ "updated_at": "2024-12-20T18:40:38.000000Z",
+ "details": {
+ "id": 4,
+ "name": "IT Department",
+ "chapters": [
+ {
+ "id": 3,
+ "name": "Server Systems",
+ "priority": 1,
+ "pages": [
+ {
+ "id": 22,
+ "name": "prod-aws-stonehawk",
+ "priority": 0,
+ "attachments": [],
+ "images": [],
+ "tags": []
+ }
+ ],
+ "tags": []
+ }
+ ],
+ "pages": [
+ {
+ "id": 23,
+ "name": "Member Onboarding Guide",
+ "priority": 0,
+ "attachments": [],
+ "images": [],
+ "tags": []
+ },
+ {
+ "id": 25,
+ "name": "IT Holiday Party Event",
+ "priority": 2,
+ "attachments": [],
+ "images": [],
+ "tags": []
+ }
+ ],
+ "tags": []
+ }
+}
\ No newline at end of file
diff --git a/dev/api/responses/imports-run.json b/dev/api/responses/imports-run.json
new file mode 100644
index 00000000000..90b34d6aa09
--- /dev/null
+++ b/dev/api/responses/imports-run.json
@@ -0,0 +1,14 @@
+{
+ "id": 1067,
+ "book_id": 28,
+ "slug": "pension-providers",
+ "name": "Pension Providers",
+ "description": "Details on the various pension providers that are available",
+ "priority": 7,
+ "created_at": "2025-07-18T14:53:35.000000Z",
+ "updated_at": "2025-07-18T14:53:36.000000Z",
+ "created_by": 1,
+ "updated_by": 1,
+ "owned_by": 1,
+ "default_template_id": null
+}
\ No newline at end of file
diff --git a/dev/api/responses/pages-create.json b/dev/api/responses/pages-create.json
index 0b19fb47309..705dea6f619 100644
--- a/dev/api/responses/pages-create.json
+++ b/dev/api/responses/pages-create.json
@@ -1,29 +1,34 @@
{
"id": 358,
"book_id": 1,
- "chapter_id": 0,
+ "chapter_id": null,
"name": "My API Page",
"slug": "my-api-page",
"html": "my new API page
",
- "priority": 14,
- "created_at": "2020-11-28 15:01:39",
- "updated_at": "2020-11-28 15:01:39",
+ "raw_html": "my new API page
",
+ "priority": 15,
+ "created_at": "2020-11-28T15:01:39.000000Z",
+ "updated_at": "2020-11-28T15:01:39.000000Z",
"created_by": {
"id": 1,
- "name": "Admin"
+ "name": "Admin",
+ "slug": "admin"
},
"updated_by": {
"id": 1,
- "name": "Admin"
+ "name": "Admin",
+ "slug": "admin"
},
"owned_by": {
"id": 1,
- "name": "Admin"
+ "name": "Admin",
+ "slug": "admin"
},
"draft": false,
"markdown": "",
"revision_count": 1,
"template": false,
+ "editor": "wysiwyg",
"tags": [
{
"name": "Category",
diff --git a/dev/api/responses/pages-list.json b/dev/api/responses/pages-list.json
index 9c162c6b6ee..8f95c498524 100644
--- a/dev/api/responses/pages-list.json
+++ b/dev/api/responses/pages-list.json
@@ -8,12 +8,15 @@
"slug": "how-to-create-page-content",
"priority": 0,
"draft": false,
+ "revision_count": 3,
"template": false,
- "created_at": "2019-05-05 21:49:58",
- "updated_at": "2020-07-04 15:50:58",
+ "created_at": "2019-05-05T21:49:58.000000Z",
+ "updated_at": "2020-07-04T15:50:58.000000Z",
"created_by": 1,
"updated_by": 1,
- "owned_by": 1
+ "owned_by": 1,
+ "editor": "wysiwyg",
+ "book_slug": "example-book"
},
{
"id": 2,
@@ -23,12 +26,15 @@
"slug": "how-to-use-images",
"priority": 2,
"draft": false,
+ "revision_count": 3,
"template": false,
- "created_at": "2019-05-05 21:53:30",
- "updated_at": "2019-06-06 12:03:04",
+ "created_at": "2019-05-05T21:53:30.000000Z",
+ "updated_at": "2019-06-06T12:03:04.000000Z",
"created_by": 1,
"updated_by": 1,
- "owned_by": 1
+ "owned_by": 1,
+ "editor": "wysiwyg",
+ "book_slug": "example-book"
},
{
"id": 3,
@@ -38,12 +44,15 @@
"slug": "drawings-via-drawio",
"priority": 3,
"draft": false,
+ "revision_count": 3,
"template": false,
- "created_at": "2019-05-05 21:53:49",
- "updated_at": "2019-12-18 21:56:52",
+ "created_at": "2019-05-05T21:53:49.000000Z",
+ "updated_at": "2019-12-18T21:56:52.000000Z",
"created_by": 1,
"updated_by": 1,
- "owned_by": 1
+ "owned_by": 1,
+ "editor": "wysiwyg",
+ "book_slug": "example-book"
}
],
"total": 322
diff --git a/dev/api/responses/pages-read.json b/dev/api/responses/pages-read.json
index 93f7770ac78..e38a9cf9242 100644
--- a/dev/api/responses/pages-read.json
+++ b/dev/api/responses/pages-read.json
@@ -1,29 +1,107 @@
{
"id": 306,
"book_id": 1,
- "chapter_id": 0,
+ "chapter_id": null,
"name": "A page written in markdown",
"slug": "a-page-written-in-markdown",
- "html": "How this is built \r\nThis page is written in markdown. BookStack stores the page data in HTML.
\r\nHere's a cute picture of my cat:
\r\n
",
+ "html": "This is my cool page! With some included text ",
+ "raw_html": "This is my cool page! {{@1#bkmrk-a}} ",
"priority": 13,
- "created_at": "2020-02-02 21:40:38",
- "updated_at": "2020-11-28 14:43:20",
+ "created_at": "2020-02-02T21:40:38.000000Z",
+ "updated_at": "2020-11-28T14:43:20.000000Z",
"created_by": {
"id": 1,
- "name": "Admin"
+ "name": "Admin",
+ "slug": "admin"
},
"updated_by": {
"id": 1,
- "name": "Admin"
+ "name": "Admin",
+ "slug": "admin"
},
"owned_by": {
"id": 1,
- "name": "Admin"
+ "name": "Admin",
+ "slug": "admin"
},
"draft": false,
"markdown": "# How this is built\r\n\r\nThis page is written in markdown. BookStack stores the page data in HTML.\r\n\r\nHere's a cute picture of my cat:\r\n\r\n[](http://example.com/uploads/images/gallery/2020-04/yXSrubes.jpg)",
"revision_count": 5,
"template": false,
+ "editor": "wysiwyg",
+ "comments": {
+ "active": [
+ {
+ "comment": {
+ "id": 22,
+ "commentable_id": 306,
+ "commentable_type": "page",
+ "html": "Does this need revising?<\/p>\n",
+ "parent_id": null,
+ "local_id": 1,
+ "created_by": {
+ "id": 1,
+ "name": "Admin",
+ "slug": "admin"
+ },
+ "updated_by": 1,
+ "created_at": "2023-06-07T07:50:56.000000Z",
+ "updated_at": "2023-06-07T07:50:56.000000Z",
+ "content_ref": "",
+ "archived": false
+ },
+ "depth": 0,
+ "children": [
+ {
+ "comment": {
+ "id": 34,
+ "commentable_id": 2646,
+ "commentable_type": "page",
+ "html": "
I think it's okay!<\/p>\n",
+ "parent_id": 1,
+ "local_id": 2,
+ "created_by": {
+ "id": 2,
+ "name": "Editor",
+ "slug": "editor"
+ },
+ "updated_by": 1,
+ "created_at": "2023-06-07T13:46:25.000000Z",
+ "updated_at": "2023-06-07T13:46:25.000000Z",
+ "content_ref": "",
+ "archived": false
+ },
+ "depth": 1,
+ "children": []
+ }
+ ]
+ }
+ ],
+ "archived": [
+ {
+ "comment": {
+ "id": 21,
+ "commentable_id": 2646,
+ "commentable_type": "page",
+ "html": "
The title needs to be fixed<\/p>\n",
+ "parent_id": null,
+ "local_id": 3,
+ "created_by": {
+ "id": 2,
+ "name": "Editor",
+ "slug": "editor"
+ },
+ "updated_by": 1,
+ "created_at": "2023-06-07T07:50:49.000000Z",
+ "updated_at": "2025-10-24T08:37:22.000000Z",
+ "content_ref": "",
+ "archived": true
+ },
+ "depth": 0,
+ "children": []
+ }
+ ]
+ },
"tags": [
{
"name": "Category",
diff --git a/dev/api/responses/pages-update.json b/dev/api/responses/pages-update.json
index ae5c0ea3fcb..eb1c5bd855a 100644
--- a/dev/api/responses/pages-update.json
+++ b/dev/api/responses/pages-update.json
@@ -5,25 +5,30 @@
"name": "My updated API Page",
"slug": "my-updated-api-page",
"html": "
my new API page - Updated
",
+ "raw_html": "my new API page - Updated
",
"priority": 16,
- "created_at": "2020-11-28 15:10:54",
- "updated_at": "2020-11-28 15:13:03",
+ "created_at": "2020-11-28T15:10:54.000000Z",
+ "updated_at": "2020-11-28T15:13:03.000000Z",
"created_by": {
"id": 1,
- "name": "Admin"
+ "name": "Admin",
+ "slug": "admin"
},
"updated_by": {
"id": 1,
- "name": "Admin"
+ "name": "Admin",
+ "slug": "admin"
},
"owned_by": {
"id": 1,
- "name": "Admin"
+ "name": "Admin",
+ "slug": "admin"
},
"draft": false,
"markdown": "",
"revision_count": 5,
"template": false,
+ "editor": "wysiwyg",
"tags": [
{
"name": "Category",
diff --git a/dev/api/responses/recycle-bin-destroy.json b/dev/api/responses/recycle-bin-destroy.json
new file mode 100644
index 00000000000..21cfc401ba7
--- /dev/null
+++ b/dev/api/responses/recycle-bin-destroy.json
@@ -0,0 +1,3 @@
+{
+ "delete_count": 2
+}
\ No newline at end of file
diff --git a/dev/api/responses/recycle-bin-list.json b/dev/api/responses/recycle-bin-list.json
new file mode 100644
index 00000000000..19167ec05fa
--- /dev/null
+++ b/dev/api/responses/recycle-bin-list.json
@@ -0,0 +1,64 @@
+{
+ "data": [
+ {
+ "id": 18,
+ "deleted_by": 1,
+ "created_at": "2022-04-20T12:57:46.000000Z",
+ "updated_at": "2022-04-20T12:57:46.000000Z",
+ "deletable_type": "page",
+ "deletable_id": 2582,
+ "deletable": {
+ "id": 2582,
+ "book_id": 25,
+ "chapter_id": null,
+ "name": "A Wonderful Page",
+ "slug": "a-wonderful-page",
+ "priority": 9,
+ "created_at": "2022-02-08T00:44:45.000000Z",
+ "updated_at": "2022-04-20T12:57:46.000000Z",
+ "created_by": 1,
+ "updated_by": 1,
+ "draft": false,
+ "revision_count": 1,
+ "template": false,
+ "owned_by": 1,
+ "editor": "wysiwyg",
+ "book_slug": "a-great-book",
+ "parent": {
+ "id": 25,
+ "name": "A Great Book",
+ "slug": "a-great-book",
+ "description": "",
+ "created_at": "2022-01-24T16:14:28.000000Z",
+ "updated_at": "2022-03-06T15:14:50.000000Z",
+ "created_by": 1,
+ "updated_by": 1,
+ "owned_by": 1,
+ "type": "book"
+ }
+ }
+ },
+ {
+ "id": 19,
+ "deleted_by": 1,
+ "created_at": "2022-04-25T16:07:46.000000Z",
+ "updated_at": "2022-04-25T16:07:46.000000Z",
+ "deletable_type": "book",
+ "deletable_id": 13,
+ "deletable": {
+ "id": 13,
+ "name": "A Big Book!",
+ "slug": "a-big-book",
+ "description": "This is a very large book with loads of cool stuff in it!",
+ "created_at": "2021-11-08T11:26:43.000000Z",
+ "updated_at": "2022-04-25T16:07:47.000000Z",
+ "created_by": 27,
+ "updated_by": 1,
+ "owned_by": 1,
+ "pages_count": 208,
+ "chapters_count": 50
+ }
+ }
+ ],
+ "total": 2
+}
\ No newline at end of file
diff --git a/dev/api/responses/recycle-bin-restore.json b/dev/api/responses/recycle-bin-restore.json
new file mode 100644
index 00000000000..ac5c94808fb
--- /dev/null
+++ b/dev/api/responses/recycle-bin-restore.json
@@ -0,0 +1,3 @@
+{
+ "restore_count": 2
+}
\ No newline at end of file
diff --git a/dev/api/responses/roles-create.json b/dev/api/responses/roles-create.json
new file mode 100644
index 00000000000..e29dd128bc7
--- /dev/null
+++ b/dev/api/responses/roles-create.json
@@ -0,0 +1,15 @@
+{
+ "display_name": "Book Maintainer",
+ "description": "People who maintain books",
+ "mfa_enforced": true,
+ "updated_at": "2023-02-19T15:38:40.000000Z",
+ "created_at": "2023-02-19T15:38:40.000000Z",
+ "id": 26,
+ "permissions": [
+ "book-delete-all",
+ "book-update-all",
+ "book-view-all",
+ "restrictions-manage-all"
+ ],
+ "users": []
+}
\ No newline at end of file
diff --git a/dev/api/responses/roles-list.json b/dev/api/responses/roles-list.json
new file mode 100644
index 00000000000..921c91779b6
--- /dev/null
+++ b/dev/api/responses/roles-list.json
@@ -0,0 +1,41 @@
+{
+ "data": [
+ {
+ "id": 1,
+ "display_name": "Admin",
+ "description": "Administrator of the whole application",
+ "created_at": "2021-09-29T16:29:19.000000Z",
+ "updated_at": "2022-11-03T13:26:18.000000Z",
+ "system_name": "admin",
+ "external_auth_id": "wizards",
+ "mfa_enforced": true,
+ "users_count": 11,
+ "permissions_count": 54
+ },
+ {
+ "id": 2,
+ "display_name": "Editor",
+ "description": "User can edit Books, Chapters & Pages",
+ "created_at": "2021-09-29T16:29:19.000000Z",
+ "updated_at": "2022-12-01T02:32:57.000000Z",
+ "system_name": "",
+ "external_auth_id": "",
+ "mfa_enforced": false,
+ "users_count": 17,
+ "permissions_count": 49
+ },
+ {
+ "id": 3,
+ "display_name": "Public",
+ "description": "The role given to public visitors if allowed",
+ "created_at": "2021-09-29T16:29:19.000000Z",
+ "updated_at": "2022-09-02T12:32:12.000000Z",
+ "system_name": "public",
+ "external_auth_id": "",
+ "mfa_enforced": false,
+ "users_count": 1,
+ "permissions_count": 2
+ }
+ ],
+ "total": 3
+}
\ No newline at end of file
diff --git a/dev/api/responses/roles-read.json b/dev/api/responses/roles-read.json
new file mode 100644
index 00000000000..ead6b850ed0
--- /dev/null
+++ b/dev/api/responses/roles-read.json
@@ -0,0 +1,23 @@
+{
+ "id": 26,
+ "display_name": "Book Maintainer",
+ "description": "People who maintain books",
+ "created_at": "2023-02-19T15:38:40.000000Z",
+ "updated_at": "2023-02-19T15:38:40.000000Z",
+ "system_name": "",
+ "external_auth_id": "",
+ "mfa_enforced": true,
+ "permissions": [
+ "book-delete-all",
+ "book-update-all",
+ "book-view-all",
+ "restrictions-manage-all"
+ ],
+ "users": [
+ {
+ "id": 11,
+ "name": "Barry Scott",
+ "slug": "barry-scott"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/dev/api/responses/roles-update.json b/dev/api/responses/roles-update.json
new file mode 100644
index 00000000000..ca17e95057d
--- /dev/null
+++ b/dev/api/responses/roles-update.json
@@ -0,0 +1,26 @@
+{
+ "id": 26,
+ "display_name": "Book & Shelf Maintainers",
+ "description": "All those who maintain books & shelves",
+ "created_at": "2023-02-19T15:38:40.000000Z",
+ "updated_at": "2023-02-19T15:49:13.000000Z",
+ "system_name": "",
+ "external_auth_id": "",
+ "mfa_enforced": false,
+ "permissions": [
+ "book-delete-all",
+ "book-update-all",
+ "book-view-all",
+ "bookshelf-delete-all",
+ "bookshelf-update-all",
+ "bookshelf-view-all",
+ "restrictions-manage-all"
+ ],
+ "users": [
+ {
+ "id": 11,
+ "name": "Barry Scott",
+ "slug": "barry-scott"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/dev/api/responses/search-all.json b/dev/api/responses/search-all.json
new file mode 100644
index 00000000000..2ad89641693
--- /dev/null
+++ b/dev/api/responses/search-all.json
@@ -0,0 +1,92 @@
+{
+ "data": [
+ {
+ "id": 84,
+ "book_id": 1,
+ "slug": "a-chapter-for-cats",
+ "name": "A chapter for cats",
+ "created_at": "2021-11-14T15:57:35.000000Z",
+ "updated_at": "2021-11-14T15:57:35.000000Z",
+ "type": "chapter",
+ "url": "https://example.com/books/cats/chapter/a-chapter-for-cats",
+ "book": {
+ "id": 1,
+ "name": "Cats",
+ "slug": "cats"
+ },
+ "preview_html": {
+ "name": "A chapter for cats ",
+ "content": "...once a bunch of cats named tony...behaviour of cats is unsuitable"
+ },
+ "tags": []
+ },
+ {
+ "name": "The hows and whys of cats",
+ "id": 396,
+ "slug": "the-hows-and-whys-of-cats",
+ "book_id": 1,
+ "chapter_id": 75,
+ "draft": false,
+ "template": false,
+ "created_at": "2021-05-15T16:28:10.000000Z",
+ "updated_at": "2021-11-14T15:56:49.000000Z",
+ "type": "page",
+ "url": "https://example.com/books/cats/page/the-hows-and-whys-of-cats",
+ "book": {
+ "id": 1,
+ "name": "Cats",
+ "slug": "cats"
+ },
+ "chapter": {
+ "id": 75,
+ "name": "A chapter for cats",
+ "slug": "a-chapter-for-cats"
+ },
+ "preview_html": {
+ "name": "The hows and whys of cats ",
+ "content": "...people ask why cats ? but there are...the reason that cats are fast are due to..."
+ },
+ "tags": [
+ {
+ "name": "Animal",
+ "value": "Cat",
+ "order": 0
+ },
+ {
+ "name": "Category",
+ "value": "Top Content",
+ "order": 0
+ }
+ ]
+ },
+ {
+ "name": "How advanced are cats?",
+ "id": 362,
+ "slug": "how-advanced-are-cats",
+ "book_id": 13,
+ "chapter_id": 73,
+ "draft": false,
+ "template": false,
+ "created_at": "2020-11-29T21:55:07.000000Z",
+ "updated_at": "2021-11-14T16:02:39.000000Z",
+ "type": "page",
+ "url": "https://example.com/books/big-cats/page/how-advanced-are-cats",
+ "book": {
+ "id": 13,
+ "name": "Big Cats",
+ "slug": "big-cats"
+ },
+ "chapter": {
+ "id": 73,
+ "name": "A chapter for bigger cats",
+ "slug": "a-chapter-for-bigger-cats"
+ },
+ "preview_html": {
+ "name": "How advanced are cats ?",
+ "content": "cats are some of the most advanced animals in the world."
+ },
+ "tags": []
+ }
+ ],
+ "total": 3
+}
diff --git a/dev/api/responses/shelves-create.json b/dev/api/responses/shelves-create.json
index fafa4c9cd1e..23555783470 100644
--- a/dev/api/responses/shelves-create.json
+++ b/dev/api/responses/shelves-create.json
@@ -1,11 +1,20 @@
{
+ "id": 20,
"name": "My shelf",
+ "slug": "my-shelf",
"description": "This is my shelf with some books",
"created_by": 1,
"updated_by": 1,
+ "created_at": "2023-12-22T14:33:52.000000Z",
+ "updated_at": "2023-12-22T14:33:52.000000Z",
"owned_by": 1,
- "slug": "my-shelf",
- "updated_at": "2020-04-10 13:24:09",
- "created_at": "2020-04-10 13:24:09",
- "id": 14
+ "description_html": "This is my shelf<\/strong> with some books<\/p>",
+ "tags": [
+ {
+ "name": "Category",
+ "value": "Learning",
+ "order": 0
+ }
+ ],
+ "cover": null
}
\ No newline at end of file
diff --git a/dev/api/responses/shelves-list.json b/dev/api/responses/shelves-list.json
index f5e9d03bb6f..d5debfaef10 100644
--- a/dev/api/responses/shelves-list.json
+++ b/dev/api/responses/shelves-list.json
@@ -5,36 +5,40 @@
"name": "Qui qui aspernatur autem molestiae libero necessitatibus molestias.",
"slug": "qui-qui-aspernatur-autem-molestiae-libero-necessitatibus-molestias",
"description": "Enim dolor ut quia error dolores est. Aut distinctio consequuntur non nisi nostrum. Labore cupiditate error labore aliquid provident impedit voluptatibus. Quaerat impedit excepturi eius qui eius voluptatem reiciendis.",
- "created_at": "2019-05-05 22:10:16",
- "updated_at": "2020-04-10 13:00:45",
+ "created_at": "2019-05-05T22:10:16.000000Z",
+ "updated_at": "2020-04-10T13:00:45.000000Z",
"created_by": 4,
"updated_by": 1,
"owned_by": 1,
- "image_id": 31
+ "cover": {
+ "id": 4,
+ "name": "shelf.jpg",
+ "url": "https://example.com/uploads/images/cover_bookshelf/2024-12/shelf.jpg"
+ }
},
{
"id": 9,
"name": "Ipsum aut inventore fuga libero non facilis.",
"slug": "ipsum-aut-inventore-fuga-libero-non-facilis",
"description": "Labore culpa modi perspiciatis harum sit. Maxime non et nam est. Quae ut laboriosam repellendus sunt quisquam. Velit at est perspiciatis nesciunt adipisci nobis illo. Sed possimus odit optio officiis nisi voluptates officiis dolor.",
- "created_at": "2019-05-05 22:10:16",
- "updated_at": "2020-04-10 13:00:58",
+ "created_at": "2019-05-05T22:10:16.000000Z",
+ "updated_at": "2020-04-10T13:00:58.000000Z",
"created_by": 4,
"updated_by": 1,
"owned_by": 1,
- "image_id": 28
+ "cover": null
},
{
"id": 10,
"name": "Omnis reiciendis aut molestias sint accusantium.",
"slug": "omnis-reiciendis-aut-molestias-sint-accusantium",
"description": "Qui ea occaecati alias est dolores voluptatem doloribus. Ad reiciendis corporis vero nostrum omnis et. Non doloribus ut eaque ut quos dolores.",
- "created_at": "2019-05-05 22:10:16",
- "updated_at": "2020-04-10 13:00:53",
+ "created_at": "2019-05-05T22:10:16.000000Z",
+ "updated_at": "2020-04-10T13:00:53.000000Z",
"created_by": 4,
"updated_by": 1,
"owned_by": 4,
- "image_id": 30
+ "cover": null
}
],
"total": 3
diff --git a/dev/api/responses/shelves-read.json b/dev/api/responses/shelves-read.json
index d663e82c5fe..eca06a46b32 100644
--- a/dev/api/responses/shelves-read.json
+++ b/dev/api/responses/shelves-read.json
@@ -3,23 +3,26 @@
"name": "My shelf",
"slug": "my-shelf",
"description": "This is my shelf with some books",
+ "description_html": "This is my shelf with some books
",
"created_by": {
"id": 1,
- "name": "Admin"
+ "name": "Admin",
+ "slug": "admin"
},
"updated_by": {
"id": 1,
- "name": "Admin"
+ "name": "Admin",
+ "slug": "admin"
},
"owned_by": {
"id": 1,
- "name": "Admin"
+ "name": "Admin",
+ "slug": "admin"
},
- "created_at": "2020-04-10 13:24:09",
- "updated_at": "2020-04-10 13:31:04",
+ "created_at": "2020-04-10T13:24:09.000000Z",
+ "updated_at": "2020-04-10T13:31:04.000000Z",
"tags": [
{
- "id": 16,
"name": "Category",
"value": "Guide",
"order": 0
@@ -29,8 +32,8 @@
"id": 501,
"name": "anafrancisconi_Sp04AfFCPNM.jpg",
"url": "http://bookstack.local/uploads/images/cover_book/2020-04/anafrancisconi_Sp04AfFCPNM.jpg",
- "created_at": "2020-04-10 13:31:04",
- "updated_at": "2020-04-10 13:31:04",
+ "created_at": "2020-04-10T13:31:04.000000Z",
+ "updated_at": "2020-04-10T13:31:04.000000Z",
"created_by": 1,
"updated_by": 1,
"path": "/uploads/images/cover_book/2020-04/anafrancisconi_Sp04AfFCPNM.jpg",
@@ -41,17 +44,35 @@
{
"id": 5,
"name": "Sint explicabo alias sunt.",
- "slug": "jbsQrzuaXe"
+ "slug": "jbsQrzuaXe",
+ "description": "Hic forum est.",
+ "created_at": "2020-04-10T13:31:04.000000Z",
+ "updated_at": "2020-04-10T13:31:04.000000Z",
+ "created_by": 1,
+ "updated_by": 1,
+ "owned_by": 1
},
{
"id": 1,
"name": "BookStack User Guide",
- "slug": "bookstack-user-guide"
+ "slug": "bookstack-user-guide",
+ "description": "The Bookstack User Guide Book.",
+ "created_at": "2020-04-10T15:30:32.000000Z",
+ "updated_at": "2020-04-13T09:01:04.000000Z",
+ "created_by": 1,
+ "updated_by": 2,
+ "owned_by": 1
},
{
"id": 3,
"name": "Molestiae doloribus sint velit suscipit dolorem.",
- "slug": "H99QxALaoG"
+ "slug": "H99QxALaoG",
+ "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
+ "created_at": "2020-04-10T13:31:04.000000Z",
+ "updated_at": "2020-04-10T13:31:04.000000Z",
+ "created_by": 1,
+ "updated_by": 1,
+ "owned_by": 1
}
]
}
\ No newline at end of file
diff --git a/dev/api/responses/shelves-update.json b/dev/api/responses/shelves-update.json
index 4bde44b54d5..3b3f0538e68 100644
--- a/dev/api/responses/shelves-update.json
+++ b/dev/api/responses/shelves-update.json
@@ -1,12 +1,20 @@
{
- "id": 14,
+ "id": 20,
"name": "My updated shelf",
"slug": "my-updated-shelf",
- "description": "This is my update shelf with some books",
+ "description": "This is my updated shelf with some books",
"created_by": 1,
"updated_by": 1,
+ "created_at": "2023-12-22T14:33:52.000000Z",
+ "updated_at": "2023-12-22T14:35:00.000000Z",
"owned_by": 1,
- "image_id": 501,
- "created_at": "2020-04-10 13:24:09",
- "updated_at": "2020-04-10 13:48:22"
+ "description_html": "This is my updated shelf<\/em> with some books<\/p>",
+ "tags": [
+ {
+ "name": "Category",
+ "value": "Learning",
+ "order": 0
+ }
+ ],
+ "cover": null
}
\ No newline at end of file
diff --git a/dev/api/responses/system-read.json b/dev/api/responses/system-read.json
new file mode 100644
index 00000000000..4687d6ffc09
--- /dev/null
+++ b/dev/api/responses/system-read.json
@@ -0,0 +1,7 @@
+{
+ "version": "v25.02.4",
+ "instance_id": "1234abcd-cc12-7808-af0a-264cb0cbd611",
+ "app_name": "My BookStack Instance",
+ "app_logo": "https://docs.example.com/uploads/images/system/2025-05/cat-icon.png",
+ "base_url": "https://docs.example.com"
+}
\ No newline at end of file
diff --git a/dev/api/responses/users-create.json b/dev/api/responses/users-create.json
new file mode 100644
index 00000000000..509d88941e9
--- /dev/null
+++ b/dev/api/responses/users-create.json
@@ -0,0 +1,19 @@
+{
+ "id": 1,
+ "name": "Dan Brown",
+ "email": "dannyb@example.com",
+ "created_at": "2022-02-03T16:27:55.000000Z",
+ "updated_at": "2022-02-03T16:27:55.000000Z",
+ "external_auth_id": "abc123456",
+ "slug": "dan-brown",
+ "last_activity_at": "2022-02-03T16:27:55.000000Z",
+ "profile_url": "https://docs.example.com/user/dan-brown",
+ "edit_url": "https://docs.example.com/settings/users/1",
+ "avatar_url": "https://docs.example.com/uploads/images/user/2021-10/thumbs-50-50/profile-2021.jpg",
+ "roles": [
+ {
+ "id": 1,
+ "display_name": "Admin"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/dev/api/responses/users-list.json b/dev/api/responses/users-list.json
new file mode 100644
index 00000000000..9cc2517b7ff
--- /dev/null
+++ b/dev/api/responses/users-list.json
@@ -0,0 +1,31 @@
+{
+ "data": [
+ {
+ "id": 1,
+ "name": "Dan Brown",
+ "email": "dannyb@example.com",
+ "created_at": "2022-02-03T16:27:55.000000Z",
+ "updated_at": "2022-02-03T16:27:55.000000Z",
+ "external_auth_id": "abc123456",
+ "slug": "dan-brown",
+ "last_activity_at": "2022-02-03T16:27:55.000000Z",
+ "profile_url": "https://docs.example.com/user/dan-brown",
+ "edit_url": "https://docs.example.com/settings/users/1",
+ "avatar_url": "https://docs.example.com/uploads/images/user/2021-10/thumbs-50-50/profile-2021.jpg"
+ },
+ {
+ "id": 2,
+ "name": "Benny",
+ "email": "benny@example.com",
+ "created_at": "2020-01-15T04:43:11.000000Z",
+ "updated_at": "2021-11-18T17:10:58.000000Z",
+ "external_auth_id": "",
+ "slug": "benny",
+ "last_activity_at": "2022-01-31T20:39:24.000000Z",
+ "profile_url": "https://docs.example.com/user/benny",
+ "edit_url": "https://docs.example.com/settings/users/2",
+ "avatar_url": "https://docs.example.com/uploads/images/user/2021-11/thumbs-50-50/guest.jpg"
+ }
+ ],
+ "total": 28
+}
\ No newline at end of file
diff --git a/dev/api/responses/users-read.json b/dev/api/responses/users-read.json
new file mode 100644
index 00000000000..509d88941e9
--- /dev/null
+++ b/dev/api/responses/users-read.json
@@ -0,0 +1,19 @@
+{
+ "id": 1,
+ "name": "Dan Brown",
+ "email": "dannyb@example.com",
+ "created_at": "2022-02-03T16:27:55.000000Z",
+ "updated_at": "2022-02-03T16:27:55.000000Z",
+ "external_auth_id": "abc123456",
+ "slug": "dan-brown",
+ "last_activity_at": "2022-02-03T16:27:55.000000Z",
+ "profile_url": "https://docs.example.com/user/dan-brown",
+ "edit_url": "https://docs.example.com/settings/users/1",
+ "avatar_url": "https://docs.example.com/uploads/images/user/2021-10/thumbs-50-50/profile-2021.jpg",
+ "roles": [
+ {
+ "id": 1,
+ "display_name": "Admin"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/dev/api/responses/users-update.json b/dev/api/responses/users-update.json
new file mode 100644
index 00000000000..611e4e14a53
--- /dev/null
+++ b/dev/api/responses/users-update.json
@@ -0,0 +1,19 @@
+{
+ "id": 1,
+ "name": "Dan Spaggleforth",
+ "email": "dspaggles@example.com",
+ "created_at": "2022-02-03T16:27:55.000000Z",
+ "updated_at": "2022-02-03T16:27:55.000000Z",
+ "external_auth_id": "abc123456",
+ "slug": "dan-spaggleforth",
+ "last_activity_at": "2022-02-03T16:27:55.000000Z",
+ "profile_url": "https://docs.example.com/user/dan-spaggleforth",
+ "edit_url": "https://docs.example.com/settings/users/1",
+ "avatar_url": "https://docs.example.com/uploads/images/user/2021-10/thumbs-50-50/profile-2021.jpg",
+ "roles": [
+ {
+ "id": 2,
+ "display_name": "Editors"
+ }
+ ]
+}
\ No newline at end of file
diff --git a/dev/build/esbuild.mjs b/dev/build/esbuild.mjs
new file mode 100644
index 00000000000..fa223115750
--- /dev/null
+++ b/dev/build/esbuild.mjs
@@ -0,0 +1,87 @@
+#!/usr/bin/env node
+
+import * as esbuild from 'esbuild';
+import * as path from 'node:path';
+import * as fs from 'node:fs';
+import * as process from "node:process";
+
+// Check if we're building for production
+// (Set via passing `production` as first argument)
+const mode = process.argv[2];
+const isProd = mode === 'production';
+const __dirname = import.meta.dirname;
+
+// Gather our input files
+const entryPoints = {
+ app: path.join(__dirname, '../../resources/js/app.ts'),
+ code: path.join(__dirname, '../../resources/js/code/index.mjs'),
+ 'legacy-modes': path.join(__dirname, '../../resources/js/code/legacy-modes.mjs'),
+ markdown: path.join(__dirname, '../../resources/js/markdown/index.mts'),
+ wysiwyg: path.join(__dirname, '../../resources/js/wysiwyg/index.ts'),
+};
+
+// Watch styles so we can reload on change
+if (mode === 'watch') {
+ entryPoints['styles-dummy'] = path.join(__dirname, '../../public/dist/styles.css');
+}
+
+// Locate our output directory
+const outdir = path.join(__dirname, '../../public/dist');
+
+// Define the options for esbuild
+const options = {
+ bundle: true,
+ metafile: true,
+ entryPoints,
+ outdir,
+ sourcemap: true,
+ target: 'es2021',
+ mainFields: ['module', 'main'],
+ format: 'esm',
+ minify: isProd,
+ logLevel: 'info',
+ loader: {
+ '.html': 'copy',
+ '.svg': 'text',
+ },
+ absWorkingDir: path.join(__dirname, '../..'),
+ alias: {
+ '@icons': './resources/icons',
+ lexical: './resources/js/wysiwyg/lexical/core',
+ '@lexical': './resources/js/wysiwyg/lexical',
+ },
+ banner: {
+ js: '// See the "/licenses" URI for full package license details',
+ css: '/* See the "/licenses" URI for full package license details */',
+ },
+};
+
+if (mode === 'watch') {
+ options.inject = [
+ path.join(__dirname, './livereload.js'),
+ ];
+}
+
+const ctx = await esbuild.context(options);
+
+if (mode === 'watch') {
+ // Watch for changes and rebuild on change
+ ctx.watch({});
+ let {hosts, port} = await ctx.serve({
+ servedir: path.join(__dirname, '../../public'),
+ cors: {
+ origin: '*',
+ }
+ });
+} else {
+ // Build with meta output for analysis
+ const result = await ctx.rebuild();
+ const outputs = result.metafile.outputs;
+ const files = Object.keys(outputs);
+ for (const file of files) {
+ const output = outputs[file];
+ console.log(`Written: ${file} @ ${Math.round(output.bytes / 1000)}kB`);
+ }
+ fs.writeFileSync('esbuild-meta.json', JSON.stringify(result.metafile));
+ process.exit(0);
+}
diff --git a/dev/build/livereload.js b/dev/build/livereload.js
new file mode 100644
index 00000000000..c2d8ac62007
--- /dev/null
+++ b/dev/build/livereload.js
@@ -0,0 +1,35 @@
+if (!window.__dev_reload_listening) {
+ listen();
+ window.__dev_reload_listening = true;
+}
+
+
+function listen() {
+ console.log('Listening for livereload events...');
+ new EventSource("http://127.0.0.1:8000/esbuild").addEventListener('change', e => {
+ const { added, removed, updated } = JSON.parse(e.data);
+
+ if (!added.length && !removed.length && updated.length > 0) {
+ const updatedPath = updated.filter(path => path.endsWith('.css'))[0]
+ if (!updatedPath) return;
+
+ const links = [...document.querySelectorAll("link[rel='stylesheet']")];
+ for (const link of links) {
+ const url = new URL(link.href);
+ const name = updatedPath.replace('-dummy', '');
+
+ if (url.pathname.endsWith(name)) {
+ const next = link.cloneNode();
+ next.href = name + '?version=' + Math.random().toString(36).slice(2);
+ next.onload = function() {
+ link.remove();
+ };
+ link.after(next);
+ return
+ }
+ }
+ }
+
+ location.reload()
+ });
+}
\ No newline at end of file
diff --git a/dev/build/svg-blank-transform.js b/dev/build/svg-blank-transform.js
new file mode 100644
index 00000000000..5183014c880
--- /dev/null
+++ b/dev/build/svg-blank-transform.js
@@ -0,0 +1,14 @@
+// This is a basic transformer stub to help jest handle SVG files.
+// Essentially blanks them since we don't really need to involve them
+// in our tests (yet).
+module.exports = {
+ process() {
+ return {
+ code: 'module.exports = \'\';',
+ };
+ },
+ getCacheKey() {
+ // The output is always the same.
+ return 'svgTransform';
+ },
+};
diff --git a/dev/checksums/.gitignore b/dev/checksums/.gitignore
new file mode 100644
index 00000000000..b722e9e13ef
--- /dev/null
+++ b/dev/checksums/.gitignore
@@ -0,0 +1 @@
+!.gitignore
\ No newline at end of file
diff --git a/dev/checksums/vendor b/dev/checksums/vendor
new file mode 100644
index 00000000000..eb8b2f05237
--- /dev/null
+++ b/dev/checksums/vendor
@@ -0,0 +1 @@
+22e02ee72d21ff719c1073abbec8302f8e2096ba6d072e133051064ed24b45b1
diff --git a/dev/docker/Dockerfile b/dev/docker/Dockerfile
index 178ea9a6c86..b64899f797f 100644
--- a/dev/docker/Dockerfile
+++ b/dev/docker/Dockerfile
@@ -1,23 +1,41 @@
-FROM php:7.4-apache
+FROM php:8.3-apache
-ENV APACHE_DOCUMENT_ROOT /app/public
-WORKDIR /app
+# Install additional dependencies
+RUN apt-get update && \
+ apt-get install -y \
+ git \
+ zip \
+ unzip \
+ libfreetype-dev \
+ libjpeg62-turbo-dev \
+ libldap2-dev \
+ libpng-dev \
+ libzip-dev \
+ wait-for-it && \
+ rm -rf /var/lib/apt/lists/*
+
+# Mark /app as safe for Git >= 2.35.2
+RUN git config --system --add safe.directory /app
-# Install additional dependacnies and configure apache
-RUN apt-get update -y \
- && apt-get install -y git zip unzip libpng-dev libldap2-dev libzip-dev wait-for-it \
- && docker-php-ext-configure ldap --with-libdir=lib/x86_64-linux-gnu \
- && docker-php-ext-install pdo_mysql gd ldap zip \
- && a2enmod rewrite \
- && sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf \
- && sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
+# Install PHP extensions
+RUN docker-php-ext-configure ldap --with-libdir="lib/$(gcc -dumpmachine)" && \
+ docker-php-ext-configure gd --with-freetype --with-jpeg && \
+ docker-php-ext-install -j$(nproc) pdo_mysql gd ldap zip && \
+ pecl install xdebug && \
+ docker-php-ext-enable xdebug
# Install composer
-RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \
- && php composer-setup.php \
- && mv composer.phar /usr/bin/composer \
- && php -r "unlink('composer-setup.php');"
+RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer
+
+# Configure apache
+RUN a2enmod rewrite && \
+ sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf && \
+ sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
# Use the default production configuration and update it as required
-RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" \
- && sed -i 's/memory_limit = 128M/memory_limit = 512M/g' "$PHP_INI_DIR/php.ini"
+RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" && \
+ sed -i 's/memory_limit = 128M/memory_limit = 512M/g' "$PHP_INI_DIR/php.ini"
+
+ENV APACHE_DOCUMENT_ROOT="/app/public"
+
+WORKDIR /app
diff --git a/dev/docker/db-testing/Dockerfile b/dev/docker/db-testing/Dockerfile
new file mode 100644
index 00000000000..618f5bb8281
--- /dev/null
+++ b/dev/docker/db-testing/Dockerfile
@@ -0,0 +1,30 @@
+FROM ubuntu:24.04
+
+# Install additional dependencies
+RUN apt-get update && \
+ apt-get install -y \
+ git \
+ wget \
+ zip \
+ unzip \
+ php \
+ php-bcmath php-curl php-mbstring php-gd php-xml php-zip php-mysql php-ldap \
+ && \
+ rm -rf /var/lib/apt/lists/*
+
+# Take branch as an argument so we can choose which BookStack
+# branch to test against
+ARG BRANCH=development
+
+# Download BookStack & install PHP deps
+RUN mkdir -p /var/www && \
+ git clone https://github.com/bookstackapp/bookstack.git --branch "$BRANCH" --single-branch /var/www/bookstack && \
+ cd /var/www/bookstack && \
+ wget https://raw.githubusercontent.com/composer/getcomposer.org/f3108f64b4e1c1ce6eb462b159956461592b3e3e/web/installer -O - -q | php -- --quiet --filename=composer && \
+ php composer install
+
+# Set the BookStack dir as the default working dir
+WORKDIR /var/www/bookstack
+
+# Set the default action as running php
+ENTRYPOINT ["/bin/php"]
diff --git a/dev/docker/db-testing/readme.md b/dev/docker/db-testing/readme.md
new file mode 100644
index 00000000000..89892408e7e
--- /dev/null
+++ b/dev/docker/db-testing/readme.md
@@ -0,0 +1,32 @@
+# Database Testing Suite
+
+This docker setup is designed to run BookStack's test suite against each major database version we support
+across MySQL and MariaDB to ensure compatibility and highlight any potential issues before a release.
+This is a fairly slow and heavy process, so is designed to just be run manually before a release which
+makes changes to the database schema, or a release which makes significant changes to database queries.
+
+### Running
+
+Everything is ran via the `run.sh` script. This will:
+
+- Optionally, accept a branch of BookStack to use for testing.
+- Build the docker image from the `Dockerfile`.
+ - This will include a built-in copy of the chosen BookStack branch.
+- Cycle through each major supported database version:
+ - Migrate and seed the database.
+ - Run the full PHP test suite.
+
+If there's a failure for a database version, the script will prompt if you'd like to continue or stop testing.
+
+This script should be ran from this `db-testing` directory:
+
+```bash
+# Enter this directory
+cd dev/docker/db-testing
+
+# Runs for the 'development' branch by default
+./run.sh
+
+# Run for a specific branch
+./run.sh v25-11
+```
diff --git a/dev/docker/db-testing/run.sh b/dev/docker/db-testing/run.sh
new file mode 100755
index 00000000000..fe6ee45085a
--- /dev/null
+++ b/dev/docker/db-testing/run.sh
@@ -0,0 +1,55 @@
+#!/bin/bash
+
+BRANCH=${1:-development}
+
+# Build the container with a known name
+docker build --no-cache --build-arg BRANCH="$BRANCH" -t bookstack:db-testing .
+if [ $? -eq 1 ]; then
+ echo "Failed to build app container for testing"
+ exit 1
+fi
+
+# List of database containers to test against
+containers=(
+ "mysql:8.0"
+ "mysql:8.4"
+ "mysql:9.5"
+ "mariadb:10.6"
+ "mariadb:10.11"
+ "mariadb:11.4"
+ "mariadb:11.8"
+ "mariadb:12.0"
+)
+
+# Pre-clean-up from prior runs
+docker stop bs-dbtest-db
+docker network rm bs-dbtest-net
+
+# Cycle over each database image
+for img in "${containers[@]}"; do
+ echo "Starting tests with $img..."
+ docker network create bs-dbtest-net
+ docker run -d --rm --name "bs-dbtest-db" \
+ -e MYSQL_DATABASE=bookstack-test \
+ -e MYSQL_USER=bookstack \
+ -e MYSQL_PASSWORD=bookstack \
+ -e MYSQL_ROOT_PASSWORD=password \
+ --network=bs-dbtest-net \
+ "$img"
+ sleep 20
+ APP_RUN='docker run -it --rm --network=bs-dbtest-net -e TEST_DATABASE_URL="mysql://bookstack:bookstack@bs-dbtest-db:3306" bookstack:db-testing'
+ $APP_RUN artisan migrate --force --database=mysql_testing
+ $APP_RUN artisan db:seed --force --class=DummyContentSeeder --database=mysql_testing
+ $APP_RUN vendor/bin/phpunit
+ if [ $? -eq 0 ]; then
+ echo "$img - Success"
+ else
+ echo "$img - Error"
+ read -p "Stop script? [y/N] " ans
+ [[ $ans == [yY] ]] && exit 0
+ fi
+
+ docker stop "bs-dbtest-db"
+ docker network rm bs-dbtest-net
+done
+
diff --git a/dev/docker/entrypoint.app.sh b/dev/docker/entrypoint.app.sh
index e91d34a7133..b09edda8863 100755
--- a/dev/docker/entrypoint.app.sh
+++ b/dev/docker/entrypoint.app.sh
@@ -9,7 +9,7 @@ if [[ -n "$1" ]]; then
else
composer install
wait-for-it db:3306 -t 45
- php artisan migrate --database=mysql
- chown -R www-data:www-data storage
+ php artisan migrate --database=mysql --force
+ chown -R www-data storage public/uploads bootstrap/cache
exec apache2-foreground
fi
diff --git a/dev/docker/php/conf.d/xdebug.ini b/dev/docker/php/conf.d/xdebug.ini
new file mode 100644
index 00000000000..8eaad6101cb
--- /dev/null
+++ b/dev/docker/php/conf.d/xdebug.ini
@@ -0,0 +1,7 @@
+zend_extension=xdebug
+
+[xdebug]
+xdebug.mode=debug
+xdebug.client_host=host.docker.internal
+xdebug.start_with_request=yes
+xdebug.client_port=9090
\ No newline at end of file
diff --git a/dev/docs/components.md b/dev/docs/components.md
deleted file mode 100644
index 832765dd6a3..00000000000
--- a/dev/docs/components.md
+++ /dev/null
@@ -1,99 +0,0 @@
-# JavaScript Components
-
-This document details the format for JavaScript components in BookStack. This is a really simple class-based setup with a few helpers provided.
-
-#### Defining a Component in JS
-
-```js
-class Dropdown {
- setup() {
- this.toggle = this.$refs.toggle;
- this.menu = this.$refs.menu;
-
- this.speed = parseInt(this.$opts.speed);
- }
-}
-```
-
-All usage of $refs, $manyRefs and $opts should be done at the top of the `setup` function so any requirements can be easily seen.
-
-#### Using a Component in HTML
-
-A component is used like so:
-
-```html
-
-
-
-
-
-```
-
-The names will be parsed and new component instance will be created if a matching name is found in the `components/index.js` componentMapping.
-
-#### Element References
-
-Within a component you'll often need to refer to other element instances. This can be done like so:
-
-```html
-
- View more
-
-```
-
-You can then access the span element as `this.$refs.toggle` in your component.
-
-#### Component Options
-
-```html
-
-
-```
-
-Will result with `this.$opts` being:
-
-```json
-{
- "delay": "500",
- "show": ""
-}
-```
-
-#### Global Helpers
-
-There are various global helper libraries which can be used in components:
-
-```js
-// HTTP service
-window.$http.get(url, params);
-window.$http.post(url, data);
-window.$http.put(url, data);
-window.$http.delete(url, data);
-window.$http.patch(url, data);
-
-// Global event system
-// Emit a global event
-window.$events.emit(eventName, eventData);
-// Listen to a global event
-window.$events.listen(eventName, callback);
-// Show a success message
-window.$events.success(message);
-// Show an error message
-window.$events.error(message);
-// Show validation errors, if existing, as an error notification
-window.$events.showValidationErrors(error);
-
-// Translator
-// Take the given plural text and count to decide on what plural option
-// to use, Similar to laravel's trans_choice function but instead
-// takes the direction directly instead of a translation key.
-window.trans_plural(translationString, count, replacements);
-
-// Component System
-// Parse and initialise any components from the given root el down.
-window.components.init(rootEl);
-// Get the first active component of the given name
-window.components.first(name);
-```
\ No newline at end of file
diff --git a/dev/docs/development.md b/dev/docs/development.md
new file mode 100644
index 00000000000..418e9ead672
--- /dev/null
+++ b/dev/docs/development.md
@@ -0,0 +1,116 @@
+# Development & Testing
+
+All development on BookStack is currently done on the `development` branch.
+When it's time for a release the `development` branch is merged into release with built & minified CSS & JS then tagged at its version. Here are the current development requirements:
+
+* [Node.js](https://nodejs.org/en/) v22.0+
+
+## Building CSS & JavaScript Assets
+
+This project uses SASS for CSS development which is built, along with the JavaScript, using a range of npm scripts. The below npm commands can be used to install the dependencies & run the build tasks:
+
+``` bash
+# Install NPM Dependencies
+npm install
+
+# Build assets for development
+npm run build
+
+# Build and minify assets for production
+npm run production
+
+# Build for dev (With sourcemaps) and watch for changes
+npm run dev
+```
+
+Further details about the BookStack JavaScript codebase can be found in the [javascript-code.md document](javascript-code.md).
+
+## Automated App Testing
+
+BookStack has a large suite of PHP tests to cover application functionality. We try to ensure that all additions and changes to the platform are covered with testing.
+
+For details about setting-up, running and writing tests please see the [php-testing.md document](php-testing.md).
+
+## Code Standards
+
+We use tools to manage code standards and formatting within the project. If submitting a PR, formatting as per our project standards would help for clarity but don't worry too much about using/understanding these tools as we can always address issues at a later stage when they're picked up by our automated tools.
+
+### PHP
+
+PHP code standards are managed by [using PHP_CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer).
+Static analysis is in place using [PHPStan](https://phpstan.org/) & [Larastan](https://github.com/nunomaduro/larastan).
+The below commands can be used to utilise these tools:
+
+```bash
+# Run code linting using PHP_CodeSniffer
+composer lint
+
+# As above, but show rule names in output
+composer lint -- -s
+
+# Auto-fix formatting & lint issues via PHP_CodeSniffer phpcbf
+composer format
+
+# Run static analysis via larastan/phpstan
+composer check-static
+```
+
+### JavaScript
+
+JavaScript code standards use managed using [ESLint](https://eslint.org/).
+The ESLint rule configuration is managed within the `package.json` file.
+The below commands can be used to lint and format:
+
+```bash
+# Run code linting using ESLint
+npm run lint
+
+# Fix code where possible using ESLint
+npm run fix
+```
+
+## Development using Docker
+
+This repository ships with a Docker Compose configuration intended for development purposes. It'll build a PHP image with all needed extensions installed and start up a MySQL server and a Node image watching the UI assets.
+
+To get started, make sure you meet the following requirements:
+
+- Docker and Docker Compose are installed
+- Your user is part of the `docker` group
+
+If all the conditions are met, you can proceed with the following steps:
+
+1. **Copy `.env.example` to `.env`**, change `APP_KEY` to a random 32 char string and set `APP_ENV` to `local`.
+2. Make sure **port 8080 is unused** *or else* change `DEV_PORT` to a free port on your host.
+3. **Run `chgrp -R docker storage`**. The development container will chown the `storage`, `public/uploads` and `bootstrap/cache` directories to the `www-data` user inside the container so BookStack can write to it. You need to change the group to your host's `docker` group here to not lose access to the `storage` directory.
+4. **Run `docker-compose up`** and wait until the image is built and all database migrations have been done.
+5. You can now login with `admin@admin.com` and `password` as password on `localhost:8080` (or another port if specified).
+
+If needed, You'll be able to run any artisan commands via docker-compose like so:
+
+```bash
+docker-compose run app php artisan list
+```
+
+The docker-compose setup runs an instance of [MailHog](https://github.com/mailhog/MailHog) and sets environment variables to redirect any BookStack-sent emails to MailHog. You can view this mail via the MailHog web interface on `localhost:8025`. You can change the port MailHog is accessible on by setting a `DEV_MAIL_PORT` environment variable.
+
+### Running tests
+
+After starting the general development Docker, migrate & seed the testing database:
+
+ ```bash
+# This only needs to be done once
+docker-compose run app php artisan migrate --database=mysql_testing
+docker-compose run app php artisan db:seed --class=DummyContentSeeder --database=mysql_testing
+```
+
+Once the database has been migrated & seeded, you can run the tests like so:
+
+ ```bash
+docker-compose run app php vendor/bin/phpunit
+```
+
+### Debugging
+
+The docker-compose setup ships with Xdebug, which you can listen to on port 9090.
+NB: For some editors like Visual Studio Code, you might need to map your workspace folder to the /app folder within the docker container for this to work.
diff --git a/dev/docs/javascript-code.md b/dev/docs/javascript-code.md
new file mode 100644
index 00000000000..4de6223d811
--- /dev/null
+++ b/dev/docs/javascript-code.md
@@ -0,0 +1,167 @@
+# BookStack JavaScript Code
+
+BookStack is primarily server-side-rendered, but it uses JavaScript sparingly to drive any required dynamic elements. Most JavaScript is applied via a custom, and very thin, component interface to keep code organised and somewhat reusable.
+
+JavaScript source code can be found in the `resources/js` directory. This gets bundled and transformed by `esbuild`, ending up in the `public/dist` folder for browser use. Read the [Development > "Building CSS & JavaScript Assets"](development.md#building-css-&-javascript-assets) documentation for details on this process.
+
+## Components
+
+This section details the format for JavaScript components in BookStack. This is a really simple class-based setup with a few helpers provided.
+
+### Defining a Component in JS
+
+```js
+class Dropdown {
+ setup() {
+ this.container = this.$el;
+ this.menu = this.$refs.menu;
+ this.toggles = this.$manyRefs.toggle;
+
+ this.speed = parseInt(this.$opts.speed);
+ }
+}
+```
+
+All usage of $refs, $manyRefs and $opts should be done at the top of the `setup` function so any requirements can be easily seen.
+
+Once defined, the component has to be registered for use. This is done in the `resources/js/components/index.js` file by defining an additional export, following the pattern of other components.
+
+### Using a Component in HTML
+
+A component is used like so:
+
+```html
+
+
+
+
+
+```
+
+The names will be parsed and new component instance will be created if a matching name is found in the `components/index.js` componentMapping.
+
+### Element References
+
+Within a component you'll often need to refer to other element instances. This can be done like so:
+
+```html
+
+ View more
+
+```
+
+You can then access the span element as `this.$refs.toggle` in your component.
+
+Multiple elements of the same reference name can be accessed via a `this.$manyRefs` property within your component. For example, all the buttons in the below example could be accessed via `this.$manyRefs.buttons`.
+
+```html
+
+ Click here
+ No, Click here
+ This button is better
+
+```
+
+### Component Options
+
+```html
+
+
+```
+
+Will result with `this.$opts` being:
+
+```json
+{
+ "delay": "500",
+ "show": ""
+}
+```
+
+#### Component Properties & Methods
+
+A component has the below shown properties & methods available for use. As mentioned above, most of these should be used within the `setup()` function to make the requirements/dependencies of the component clear.
+
+```javascript
+// The root element that the component has been applied to.
+this.$el
+
+// A map of defined element references within the component.
+// See "Element References" above.
+this.$refs
+
+// A map of defined multi-element references within the component.
+// See "Element References" above.
+this.$manyRefs
+
+// Options defined for the component.
+this.$opts
+
+// The registered name of the component, usually kebab-case.
+this.$name
+
+// Emit a custom event from this component.
+// Will be bubbled up from the dom element this is registered on,
+// as a custom event with the name `-`,
+// with the provided data in the event detail.
+this.$emit(eventName, data = {})
+```
+
+## Global JavaScript Helpers
+
+There are various global helper libraries in BookStack which can be accessed via the `window`. The below provides an overview of what's available.
+
+```js
+// HTTP service
+// Relative URLs will be resolved against the instance BASE_URL
+window.$http.get(url, params);
+window.$http.post(url, data);
+window.$http.put(url, data);
+window.$http.delete(url, data);
+window.$http.patch(url, data);
+
+// Global event system
+// Emit a global event
+window.$events.emit(eventName, eventData);
+// Listen to a global event
+window.$events.listen(eventName, callback);
+// Show a success message
+window.$events.success(message);
+// Show an error message
+window.$events.error(message);
+// Show validation errors, if existing, as an error notification
+window.$events.showValidationErrors(error);
+
+// Translator
+// Take the given plural text and count to decide on what plural option
+// to use, Similar to laravel's trans_choice function but instead
+// takes the translation text directly instead of a translation key.
+window.$trans.choice(translationString, count, replacements);
+
+// Component System
+// Parse and initialise any components from the given root el down.
+window.$components.init(rootEl);
+// Register component models to be used by the component system.
+// Takes a mapping of classes/constructors keyed by component names.
+// Names will be converted to kebab-case.
+window.$components.register(mapping);
+// Get the first active component of the given name.
+window.$components.first(name);
+// Get all the active components of the given name.
+window.$components.get(name);
+// Get the first active component of the given name that's been
+// created on the given element.
+window.$components.firstOnElement(element, name);
+```
+
+## Public Events
+
+There are a range of available events that are emitted as part of a public & supported API for accessing or extending JavaScript libraries & components used in the system.
+
+Details on these events can be found in the [JavaScript Public Events file](javascript-public-events.md).
+
+## WYSIWYG Editor API
+
+Details on the API for our custom-built WYSIWYG editor can be found in the [WYSIWYG JavaScript API file](./wysiwyg-js-api.md).
\ No newline at end of file
diff --git a/dev/docs/javascript-public-events.md b/dev/docs/javascript-public-events.md
new file mode 100644
index 00000000000..e9ea014ef46
--- /dev/null
+++ b/dev/docs/javascript-public-events.md
@@ -0,0 +1,362 @@
+# JavaScript Public Events
+
+There are a range of available events emitted as part of a public & [supported](#support) API for accessing or extending JavaScript libraries and components used in the system.
+These are emitted via standard DOM events so can be consumed using standard DOM APIs like so:
+
+```javascript
+window.addEventListener('event-name', event => {
+ const eventData = event.detail;
+});
+```
+
+Such events are typically emitted from a DOM element relevant to event, which then bubbles up.
+For most use-cases you can probably just listen on the `window` as shown above.
+
+## Support
+
+This event system, and the events emitted, are considered semi-supported.
+Breaking changes of the event API, event names, or event properties, are possible but will be documented in update notes.
+The detail provided within the events, and the libraries made accessible, are not considered supported nor stable, and changes to these won't be clearly documented changelogs.
+
+## Event Naming Scheme
+
+Events are typically named in the following format:
+
+```text
+::
+
+# Examples:
+editor-tinymce::setup
+library-cm6::configure-theme
+```
+
+If the event is generic in use but specific to a library, the `` will start with `library-` followed by the library name. Otherwise `` may reflect the UI context/component.
+
+The `` reflects the lifecycle stage of the context, or a specific action to perform if the event is specific to a certain use-case.
+
+## Event Listing
+
+### `editor-markdown-cm6::pre-init`
+
+This event is called before the markdown input editor CodeMirror instance is created or loaded.
+
+#### Event Data
+
+- `editorViewConfig` - An [EditorViewConfig](https://codemirror.net/docs/ref/#view.EditorViewConfig) object that will eventually be passed when creating the CodeMirror EditorView instance.
+
+##### Example
+
+```javascript
+// Always load the editor with specific pre-defined content if empty
+window.addEventListener('editor-markdown-cm6::pre-init', event => {
+ const config = event.detail.editorViewConfig;
+ config.doc = config.doc || "Start this page with a nice story";
+});
+```
+
+### `editor-markdown::setup`
+
+This event is called when the markdown editor loads, post configuration but before the editor is ready to use.
+
+#### Event Data
+
+- `markdownIt` - A reference to the [MarkdownIt](https://markdown-it.github.io/markdown-it/#MarkdownIt) instance used to render markdown to HTML (Just for the preview).
+- `displayEl` - The IFrame Element that wraps the HTML preview display.
+- `cmEditorView` - The CodeMirror [EditorView](https://codemirror.net/docs/ref/#view.EditorView) instance used for the markdown input editor.
+
+##### Example
+
+```javascript
+// Set all text in the display to be red by default.
+window.addEventListener('editor-markdown::setup', event => {
+ const display = event.detail.displayEl;
+ display.contentDocument.body.style.color = 'red';
+});
+```
+
+### `editor-drawio::configure`
+
+This event is called as the embedded diagrams.net drawing editor loads, to allow configuration of the diagrams.net interface.
+See [this diagrams.net page](https://www.diagrams.net/doc/faq/configure-diagram-editor) for details on the available options for the configure event.
+
+If using a custom diagrams.net instance, via the `DRAWIO` option, you will need to ensure your DRAWIO option URL has the `configure=1` query parameter.
+
+#### Event Data
+
+- `config` - The configuration object that will be passed to diagrams.net.
+ - This will likely be empty by default, but modify this object in-place as needed with your desired options.
+
+##### Example
+
+```javascript
+// Set only the "general" and "android" libraries to show by default
+window.addEventListener('editor-drawio::configure', event => {
+ const config = event.detail.config;
+ config.enabledLibraries = ["general", "android"];
+});
+```
+
+### `editor-tinymce::pre-init`
+
+This event is called before the TinyMCE editor, used as the BookStack WYSIWYG page editor, is initialised.
+
+#### Event Data
+
+- `config` - Object containing the configuration that's going to be passed to [tinymce.init](https://www.tiny.cloud/docs/api/tinymce/root_tinymce/#init).
+
+##### Example
+
+```javascript
+// Removed "bold" from the editor toolbar
+window.addEventListener('editor-tinymce::pre-init', event => {
+ const tinyConfig = event.detail.config;
+ tinyConfig.toolbar = tinyConfig.toolbar.replace('bold ', '');
+});
+```
+
+### `editor-tinymce::setup`
+
+This event is called during the `setup` lifecycle stage of the TinyMCE editor used as the BookStack WYSIWYG editor. This is after configuration, but before the editor is fully loaded and ready to use.
+
+##### Event Data
+
+- `editor` - The [tinymce.Editor](https://www.tiny.cloud/docs/api/tinymce/tinymce.editor/) instance used for the WYSIWYG editor.
+
+##### Example
+
+```javascript
+// Replaces the editor content with redacted message 3 seconds after load.
+window.addEventListener('editor-tinymce::setup', event => {
+ const editor = event.detail.editor;
+ setTimeout(() => {
+ editor.setContent('REDACTED!');
+ }, 3000);
+});
+```
+
+### `editor-wysiwyg::post-init`
+
+This is called after the (new custom-built Lexical-based) WYSIWYG editor has been initialised.
+
+#### Event Data
+
+- `usage` - A string label to identify the usage type of the WYSIWYG editor in BookStack.
+- `api` - An instance to the WYSIWYG editor API, as documented in the [WYSIWYG JavaScript API file](./wysiwyg-js-api.md).
+
+##### Example
+
+The below example shows how you'd use this API to create a button, with that button added to the main toolbar of the page editor, which inserts bold "Hello!" text on press:
+
+
+Show Example
+
+```javascript
+window.addEventListener('editor-wysiwyg::post-init', event => {
+ const {usage, api} = event.detail;
+ // Check that it's the page editor which is being loaded
+ if (usage !== 'page-editor') {
+ return;
+ }
+
+ // Create a custom button which inserts bold hello text on press
+ const button = api.ui.createButton({
+ label: 'Greet',
+ action: () => {
+ api.content.insertHtml(`Hello! `);
+ }
+ });
+
+ // Add the button to the start of the first section within the main toolbar
+ const toolbar = api.ui.getMainToolbar();
+ if (toolbar) {
+ toolbar.getSections()[0]?.addButton(button, 0);
+ }
+});
+```
+
+
+### `library-cm6::configure-theme`
+
+This event is called whenever a CodeMirror instance is loaded, as a method to configure the theme used by CodeMirror. This applies to all CodeMirror instances including in-page code blocks, editors using in BookStack settings, and the Page markdown editor.
+
+#### Event Data
+
+- `darkModeActive` - A boolean to indicate if the current view/page is being loaded with dark mode active.
+- `registerViewTheme(builder)` - A method that can be called to register a new view (CodeMirror UI) theme.
+ - `builder` - A function that will return an object that will be passed into the CodeMirror [EditorView.theme()](https://codemirror.net/docs/ref/#view.EditorView^theme) function as a StyleSpec.
+- `registerHighlightStyle(builder)` - A method that can be called to register a new HighlightStyle (code highlighting) theme.
+ - `builder` - A function, that receives a reference to [Tag.tags](https://lezer.codemirror.net/docs/ref/#highlight.tags) and returns an array of [TagStyle](https://codemirror.net/docs/ref/#language.TagStyle) objects.
+
+##### Example
+
+The below shows registering a custom "Solarized dark" editor and syntax theme:
+
+
+Show Example
+
+```javascript
+// Theme data taken from:
+// https://github.com/craftzdog/cm6-themes/blob/main/packages/solarized-dark/src/index.ts
+// (MIT License) - Copyright (C) 2022 by Takuya Matsuyama and others
+const base00 = '#002b36',
+ base01 = '#073642',
+ base02 = '#586e75',
+ base03 = '#657b83',
+ base04 = '#839496',
+ base05 = '#93a1a1',
+ base06 = '#eee8d5',
+ base07 = '#fdf6e3',
+ base_red = '#dc322f',
+ base_orange = '#cb4b16',
+ base_yellow = '#b58900',
+ base_green = '#859900',
+ base_cyan = '#2aa198',
+ base_blue = '#268bd2',
+ base_violet = '#6c71c4',
+ base_magenta = '#d33682'
+
+const invalid = '#d30102',
+ stone = base04,
+ darkBackground = '#00252f',
+ highlightBackground = '#173541',
+ background = base00,
+ tooltipBackground = base01,
+ selection = '#173541',
+ cursor = base04
+
+function viewThemeBuilder() {
+ return {
+ '&':{color:base05,backgroundColor:background},
+ '.cm-content':{caretColor:cursor},
+ '.cm-cursor, .cm-dropCursor':{borderLeftColor:cursor},
+ '&.cm-focused .cm-selectionBackground, .cm-selectionBackground, .cm-content ::selection':{backgroundColor:selection},
+ '.cm-panels':{backgroundColor:darkBackground,color:base03},
+ '.cm-panels.cm-panels-top':{borderBottom:'2px solid black'},
+ '.cm-panels.cm-panels-bottom':{borderTop:'2px solid black'},
+ '.cm-searchMatch':{backgroundColor:'#72a1ff59',outline:'1px solid #457dff'},
+ '.cm-searchMatch.cm-searchMatch-selected':{backgroundColor:'#6199ff2f'},
+ '.cm-activeLine':{backgroundColor:highlightBackground},
+ '.cm-selectionMatch':{backgroundColor:'#aafe661a'},
+ '&.cm-focused .cm-matchingBracket, &.cm-focused .cm-nonmatchingBracket':{outline:`1px solid ${base06}`},
+ '.cm-gutters':{backgroundColor:darkBackground,color:stone,border:'none'},
+ '.cm-activeLineGutter':{backgroundColor:highlightBackground},
+ '.cm-foldPlaceholder':{backgroundColor:'transparent',border:'none',color:'#ddd'},
+ '.cm-tooltip':{border:'none',backgroundColor:tooltipBackground},
+ '.cm-tooltip .cm-tooltip-arrow:before':{borderTopColor:'transparent',borderBottomColor:'transparent'},
+ '.cm-tooltip .cm-tooltip-arrow:after':{borderTopColor:tooltipBackground,borderBottomColor:tooltipBackground},
+ '.cm-tooltip-autocomplete':{
+ '& > ul > li[aria-selected]':{backgroundColor:highlightBackground,color:base03}
+ }
+ };
+}
+
+function highlightStyleBuilder(t) {
+ return [{tag:t.keyword,color:base_green},
+ {tag:[t.name,t.deleted,t.character,t.propertyName,t.macroName],color:base_cyan},
+ {tag:[t.variableName],color:base05},
+ {tag:[t.function(t.variableName)],color:base_blue},
+ {tag:[t.labelName],color:base_magenta},
+ {tag:[t.color,t.constant(t.name),t.standard(t.name)],color:base_yellow},
+ {tag:[t.definition(t.name),t.separator],color:base_cyan},
+ {tag:[t.brace],color:base_magenta},
+ {tag:[t.annotation],color:invalid},
+ {tag:[t.number,t.changed,t.annotation,t.modifier,t.self,t.namespace],color:base_magenta},
+ {tag:[t.typeName,t.className],color:base_orange},
+ {tag:[t.operator,t.operatorKeyword],color:base_violet},
+ {tag:[t.tagName],color:base_blue},
+ {tag:[t.squareBracket],color:base_red},
+ {tag:[t.angleBracket],color:base02},
+ {tag:[t.attributeName],color:base05},
+ {tag:[t.regexp],color:invalid},
+ {tag:[t.quote],color:base_green},
+ {tag:[t.string],color:base_yellow},
+ {tag:t.link,color:base_cyan,textDecoration:'underline',textUnderlinePosition:'under'},
+ {tag:[t.url,t.escape,t.special(t.string)],color:base_yellow},
+ {tag:[t.meta],color:base_red},
+ {tag:[t.comment],color:base02,fontStyle:'italic'},
+ {tag:t.strong,fontWeight:'bold',color:base06},
+ {tag:t.emphasis,fontStyle:'italic',color:base_green},
+ {tag:t.strikethrough,textDecoration:'line-through'},
+ {tag:t.heading,fontWeight:'bold',color:base_yellow},
+ {tag:t.heading1,fontWeight:'bold',color:base07},
+ {tag:[t.heading2,t.heading3,t.heading4],fontWeight:'bold',color:base06},
+ {tag:[t.heading5,t.heading6],color:base06},
+ {tag:[t.atom,t.bool,t.special(t.variableName)],color:base_magenta},
+ {tag:[t.processingInstruction,t.inserted,t.contentSeparator],color:base_red},
+ {tag:[t.contentSeparator],color:base_yellow},
+ {tag:t.invalid,color:base02,borderBottom:`1px dotted ${base_red}`}];
+}
+
+window.addEventListener('library-cm6::configure-theme', event => {
+ const detail = event.detail;
+ detail.registerViewTheme(viewThemeBuilder);
+ detail.registerHighlightStyle(highlightStyleBuilder);
+});
+```
+
+
+### `library-cm6::pre-init`
+
+This event is called just before any CodeMirror instances are initialised so that the instance configuration can be viewed and altered before the instance is created.
+
+#### Event Data
+
+- `usage` - A string label to identify the usage type of the CodeMirror instance in BookStack.
+- `editorViewConfig` - A reference to the [EditorViewConfig](https://codemirror.net/docs/ref/#view.EditorViewConfig) that will be used to create the instance.
+- `libEditorView` - The CodeMirror [EditorView](https://codemirror.net/docs/ref/#view.EditorView) class object, provided for convenience.
+- `libEditorState` - The CodeMirror [EditorState](https://codemirror.net/docs/ref/#state.EditorState) class object, provided for convenience.
+- `libCompartment` - The CodeMirror [Compartment](https://codemirror.net/docs/ref/#state.Compartment) class object, provided for convenience.
+
+##### Example
+
+The below shows how you'd enable the built-in line wrapping extension for page content code blocks:
+
+
+Show Example
+
+```javascript
+window.addEventListener('library-cm6::pre-init', event => {
+ const detail = event.detail;
+ const config = detail.editorViewConfig;
+ const EditorView = detail.libEditorView;
+
+ if (detail.usage === 'content-code-block') {
+ config.extensions.push(EditorView.lineWrapping);
+ }
+});
+```
+
+
+### `library-cm6::post-init`
+
+This event is called just after any CodeMirror instances are initialised so that you're able to gain a reference to the CodeMirror EditorView instance.
+
+#### Event Data
+
+- `usage` - A string label to identify the usage type of the CodeMirror instance in BookStack.
+- `editorView` - A reference to the [EditorView](https://codemirror.net/docs/ref/#view.EditorView) instance that has been created.
+- `editorViewConfig` - A reference to the [EditorViewConfig](https://codemirror.net/docs/ref/#view.EditorViewConfig) that was used to create the instance.
+- `libEditorView` - The CodeMirror [EditorView](https://codemirror.net/docs/ref/#view.EditorView) class object, provided for convenience.
+- `libEditorState` - The CodeMirror [EditorState](https://codemirror.net/docs/ref/#state.EditorState) class object, provided for convenience.
+- `libCompartment` - The CodeMirror [Compartment](https://codemirror.net/docs/ref/#state.Compartment) class object, provided for convenience.
+
+##### Example
+
+The below example shows how you'd prepend some default text to all content (page) code blocks.
+
+
+Show Example
+
+```javascript
+window.addEventListener('library-cm6::post-init', event => {
+ const detail = event.detail;
+ const editorView = detail.editorView;
+
+ if (detail.usage === 'content-code-block') {
+ editorView.dispatch({
+ changes: {from: 0, to: 0, insert: 'Copyright 2023\n\n'}
+ });
+ }
+});
+```
+
diff --git a/dev/docs/logical-theme-system.md b/dev/docs/logical-theme-system.md
index b950d7df95c..9457ca78b52 100644
--- a/dev/docs/logical-theme-system.md
+++ b/dev/docs/logical-theme-system.md
@@ -2,10 +2,14 @@
BookStack allows logical customization via the theme system which enables you to add, or extend, functionality within the PHP side of the system without needing to alter the core application files.
-WARNING: This system is currently in alpha so may incur changes. Once we've gathered some feedback on usage we'll look to removing this warning. This system will be considered semi-stable in the future. The `Theme::` system will be kept maintained but specific customizations or deeper app/framework usage using this system will not be supported nor considered in any way stable. Customizations using this system should be checked after updates.
+This is part of the theme system alongside the [visual theme system](./visual-theme-system.md).
+
+**Note:** This system is considered semi-stable. The `Theme::` system is kept maintained but specific customizations or deeper app/framework usage using this system will not be supported nor considered in any way stable. Customizations using this system should be checked after updates.
## Getting Started
+*[Video Guide](https://www.youtube.com/watch?v=YVbpm_35crQ)*
+
This makes use of the theme system. Create a folder for your theme within your BookStack `themes` directory. As an example we'll use `my_theme`, so we'd create a `themes/my_theme` folder.
You'll need to tell BookStack to use your theme via the `APP_THEME` option in your `.env` file. For example: `APP_THEME=my_theme`.
@@ -45,11 +49,29 @@ This method allows you to register a custom social authentication driver within
- string $driverName
- array $config
- string $socialiteHandler
+- callable|null $configureForRedirect = null
**Example**
*See "Custom Socialite Service Example" below.*
+### `Theme::registerCommand`
+
+This method allows you to register a custom command which can then be used via the artisan console.
+
+**Arguments**
+- string $driverName
+- array $config
+- string $socialiteHandler
+
+**Example**
+
+*See "Custom Command Registration Example" below for a more detailed example.*
+
+```php
+Theme::registerCommand(new SayHelloCommand());
+```
+
## Available Events
All available events dispatched by BookStack are exposed as static properties on the `\BookStack\Theming\ThemeEvents` class, which can be found within the file `app/Theming/ThemeEvents.php` relative to your root BookStack folder. Alternatively, the events for the latest release can be [seen on GitHub here](https://github.com/BookStackApp/BookStack/blob/release/app/Theming/ThemeEvents.php).
@@ -77,6 +99,68 @@ Theme::listen(ThemeEvents::APP_BOOT, function($app) {
});
```
+## Custom View Registration Example
+
+Using the logical theme system, you can register custom views to be rendered before/after other existing views, providing a flexible way to add content without needing to override and/or replicate existing content. This is done by listening to the `THEME_REGISTER_VIEWS`.
+
+**Note:** You don't need to use this to override existing views, or register whole new main views to use, since that's done automatically based on their existence. This is just for advanced capabilities like inserting before/after existing views.
+
+This event provides a `ThemeViews` instance which has the following methods made available:
+
+- `renderBefore(string $targetView, string $localView, int $priority)`
+- `renderAfter(string $targetView, string $localView, int $priority)`
+
+The target view is the name of that which we want to insert our custom view relative to.
+The local view is the name of the view we want to add and render.
+The priority provides a suggestion to the ordering of view display, with lower numbers being shown first. This defaults to 50 if not provided.
+
+Here's an example of this in use:
+
+```php
+renderBefore('layouts.parts.header', 'welcome-banner', 4);
+ $themeViews->renderAfter('layouts.parts.header', 'information-alert');
+ $themeViews->renderAfter('layouts.parts.header', 'additions.password-notice', 20);
+});
+```
+
+In this example, we're inserting custom views before and after the main header bar.
+BookStack will look for a `welcome-banner.blade.php` file within our theme folder (or a theme module view folder) to render before the header. It'll look for the `information-alert.blade.php` and `additions/password-notice.blade.php` views to render afterwards.
+The password notice will be shown above the information alert view, since it has a specified priority of 20, whereas the information alert view would default to a priority of 50.
+
+## Custom Command Registration Example
+
+The logical theme system supports adding custom [artisan commands](https://laravel.com/docs/8.x/artisan) to BookStack.
+These can be registered in your `functions.php` file by calling `Theme::registerCommand($command)`, where `$command` is an instance of `\Symfony\Component\Console\Command\Command`.
+
+Below is an example of registering a command that could then be ran using `php artisan bookstack:meow` on the command line.
+
+```php
+line('Meow there!');
+ }
+}
+
+Theme::registerCommand(new MeowCommand);
+```
+
## Custom Socialite Service Example
The below shows an example of adding a custom reddit socialite service to BookStack.
diff --git a/dev/docs/permission-scenario-testing.md b/dev/docs/permission-scenario-testing.md
new file mode 100644
index 00000000000..0a910d20336
--- /dev/null
+++ b/dev/docs/permission-scenario-testing.md
@@ -0,0 +1,363 @@
+# Permission Scenario Testing
+
+Due to complexity that can arise in the various combinations of permissions, this document details scenarios and their expected results.
+
+Test cases are written ability abstract, since all abilities should act the same in theory. Functional test cases may test abilities separate due to implementation differences.
+
+Tests are categorised by the most specific element involved in the scenario, where the below list is most specific to least:
+
+- Role entity permissions.
+- Fallback entity permissions.
+- Role permissions.
+
+## General Permission Logical Rules
+
+The below are some general rules we follow to standardise the behaviour of permissions in the platform:
+
+- Most specific permission application (as above) take priority and can deny less specific permissions.
+- Parent role entity permissions that may be inherited, are considered to essentially be applied on the item they are inherited to unless a lower level has its own permission rule for an already specific role.
+- Where both grant and deny exist at the same specificity, we side towards grant.
+
+## Cases
+
+### Content Role Permissions
+
+These are tests related to item/entity permissions that are set only at a role level.
+
+#### test_01_allow
+
+- Role A has role all-page permission.
+- User has Role A.
+
+User granted page permission.
+
+#### test_02_deny
+
+- Role A has no page permission.
+- User has Role A.
+
+User denied page permission.
+
+#### test_10_allow_on_own_with_own
+
+- Role A has role own-page permission.
+- User has Role A.
+- User is owner of page.
+
+User granted page permission.
+
+#### test_11_deny_on_other_with_own
+
+- Role A has role own-page permission.
+- User has Role A.
+- User is not owner of page.
+
+User denied page permission.
+
+#### test_20_multiple_role_conflicting_all
+
+- Role A has role all-page permission.
+- Role B has no page permission.
+- User has Role A & B.
+
+User granted page permission.
+
+#### test_21_multiple_role_conflicting_own
+
+- Role A has role own-page permission.
+- Role B has no page permission.
+- User has Role A & B.
+- User is owner of page.
+
+User granted page permission.
+
+---
+
+### Entity Role Permissions
+
+These are tests related to entity-level role-specific permission overrides.
+
+#### test_01_explicit_allow
+
+- Page permissions have inherit disabled.
+- Role A has entity allow page permission.
+- User has Role A.
+
+User granted page permission.
+
+#### test_02_explicit_deny
+
+- Page permissions have inherit disabled.
+- Role A has entity deny page permission.
+- User has Role A.
+
+User denied page permission.
+
+#### test_03_same_level_conflicting
+
+- Page permissions have inherit disabled.
+- Role A has entity allow page permission.
+- Role B has entity deny page permission.
+- User has both Role A & B.
+
+User granted page permission.
+Explicit grant overrides entity deny at same level.
+
+#### test_20_inherit_allow
+
+- Page permissions have inherit enabled.
+- Chapter permissions has inherit disabled.
+- Role A has entity allow chapter permission.
+- User has Role A.
+
+User granted page permission.
+
+#### test_21_inherit_deny
+
+- Page permissions have inherit enabled.
+- Chapter permissions has inherit disabled.
+- Role A has entity deny chapter permission.
+- User has Role A.
+
+User denied page permission.
+
+#### test_22_same_level_conflict_inherit
+
+- Page permissions have inherit enabled.
+- Chapter permissions has inherit disabled.
+- Role A has entity deny chapter permission.
+- Role B has entity allow chapter permission.
+- User has both Role A & B.
+
+User granted page permission.
+
+#### test_30_child_inherit_override_allow
+
+- Page permissions have inherit enabled.
+- Chapter permissions has inherit disabled.
+- Role A has entity deny chapter permission.
+- Role A has entity allow page permission.
+- User has Role A.
+
+User granted page permission.
+
+#### test_31_child_inherit_override_deny
+
+- Page permissions have inherit enabled.
+- Chapter permissions has inherit disabled.
+- Role A has entity allow chapter permission.
+- Role A has entity deny page permission.
+- User has Role A.
+
+User denied page permission.
+
+#### test_40_multi_role_inherit_conflict_override_deny
+
+- Page permissions have inherit enabled.
+- Chapter permissions has inherit disabled.
+- Role A has entity deny page permission.
+- Role B has entity allow chapter permission.
+- User has Role A & B.
+
+User granted page permission.
+
+#### test_41_multi_role_inherit_conflict_retain_allow
+
+- Page permissions have inherit enabled.
+- Chapter permissions has inherit disabled.
+- Role A has entity allow page permission.
+- Role B has entity deny chapter permission.
+- User has Role A & B.
+
+User granted page permission.
+
+#### test_50_role_override_allow
+
+- Page permissions have inherit enabled.
+- Role A has no page role permission.
+- Role A has entity allow page permission.
+- User has Role A.
+
+User granted page permission.
+
+#### test_51_role_override_deny
+
+- Page permissions have inherit enabled.
+- Role A has no page-view-all role permission.
+- Role A has entity deny page permission.
+- User has Role A.
+
+User denied page permission.
+
+#### test_60_inherited_role_override_allow
+
+- Page permissions have inherit enabled.
+- Chapter permissions have inherit enabled.
+- Role A has no page role permission.
+- Role A has entity allow chapter permission.
+- User has Role A.
+
+User granted page permission.
+
+#### test_61_inherited_role_override_deny
+
+- Page permissions have inherit enabled.
+- Chapter permissions have inherit enabled.
+- Role A has page role permission.
+- Role A has entity denied chapter permission.
+- User has Role A.
+
+User denied page permission.
+
+#### test_62_inherited_role_override_deny_on_own
+
+- Page permissions have inherit enabled.
+- Chapter permissions have inherit enabled.
+- Role A has own-page role permission.
+- Role A has entity denied chapter permission.
+- User has Role A.
+- User owns Page.
+
+User denied page permission.
+
+#### test_70_multi_role_inheriting_deny
+
+- Page permissions have inherit enabled.
+- Role A has all page role permission.
+- Role B has entity denied page permission.
+- User has Role A and B.
+
+User denied page permission.
+
+#### test_71_multi_role_inheriting_deny_on_own
+
+- Page permissions have inherit enabled.
+- Role A has own page role permission.
+- Role B has entity denied page permission.
+- User has Role A and B.
+- Use owns Page.
+
+User denied page permission.
+
+#### test_75_multi_role_inherited_deny_via_parent
+
+- Page permissions have inherit enabled.
+- Chapter permissions have inherit enabled.
+- Role A has all-pages role permission.
+- Role B has entity denied chapter permission.
+- User has Role A & B.
+
+User denied page permission.
+
+#### test_76_multi_role_inherited_deny_via_parent_on_own
+
+- Page permissions have inherit enabled.
+- Chapter permissions have inherit enabled.
+- Role A has own page role permission.
+- Role B has entity denied chapter permission.
+- User has Role A & B.
+
+User denied page permission.
+
+#### test_80_fallback_override_allow
+
+- Page permissions have inherit disabled.
+- Page fallback has entity deny permission.
+- Role A has entity allow page permission.
+- User has Role A.
+
+User granted page permission.
+
+#### test_81_fallback_override_deny
+
+- Page permissions have inherit disabled.
+- Page fallback has entity allow permission.
+- Role A has entity deny page permission.
+- User has Role A.
+
+User denied page permission.
+
+#### test_84_fallback_override_allow_multi_role
+
+- Page permissions have inherit disabled.
+- Page fallback has entity deny permission.
+- Role A has entity allow page permission.
+- Role B has no entity page permissions.
+- User has Role A & B.
+
+User granted page permission.
+
+#### test_85_fallback_override_deny_multi_role
+
+- Page permissions have inherit disabled.
+- Page fallback has entity allow permission.
+- Role A has entity deny page permission.
+- Role B has no entity page permissions.
+- User has Role A & B.
+
+User denied page permission.
+
+#### test_86_fallback_override_allow_inherit
+
+- Chapter permissions have inherit disabled.
+- Page permissions have inherit enabled.
+- Chapter fallback has entity deny permission.
+- Role A has entity allow chapter permission.
+- User has Role A.
+
+User granted page permission.
+
+#### test_87_fallback_override_deny_inherit
+
+- Chapter permissions have inherit disabled.
+- Page permissions have inherit enabled.
+- Chapter fallback has entity allow permission.
+- Role A has entity deny chapter permission.
+- User has Role A.
+
+User denied page permission.
+
+#### test_88_fallback_override_allow_multi_role_inherit
+
+- Chapter permissions have inherit disabled.
+- Page permissions have inherit enabled.
+- Chapter fallback has entity deny permission.
+- Role A has entity allow chapter permission.
+- Role B has no entity chapter permissions.
+- User has Role A & B.
+
+User granted page permission.
+
+#### test_89_fallback_override_deny_multi_role_inherit
+
+- Chapter permissions have inherit disabled.
+- Page permissions have inherit enabled.
+- Chapter fallback has entity allow permission.
+- Role A has entity deny chapter permission.
+- Role B has no entity chapter permissions.
+- User has Role A & B.
+
+User denied page permission.
+
+#### test_90_fallback_overrides_parent_entity_role_deny
+
+- Chapter permissions have inherit disabled.
+- Page permissions have inherit disabled.
+- Chapter fallback has entity deny permission.
+- Page fallback has entity deny permission.
+- Role A has entity allow chapter permission.
+- User has Role A.
+
+User denied page permission.
+
+#### test_91_fallback_overrides_parent_entity_role_inherit
+
+- Book permissions have inherit disabled.
+- Chapter permissions have inherit disabled.
+- Page permissions have inherit enabled.
+- Book fallback has entity deny permission.
+- Chapter fallback has entity deny permission.
+- Role A has entity allow book permission.
+- User has Role A.
+
+User denied page permission.
\ No newline at end of file
diff --git a/dev/docs/php-testing.md b/dev/docs/php-testing.md
new file mode 100644
index 00000000000..3d3e91fa2bc
--- /dev/null
+++ b/dev/docs/php-testing.md
@@ -0,0 +1,87 @@
+# BookStack PHP Testing
+
+BookStack has many test cases defined within the `tests/` directory of the app. These are built upon [PHPUnit](https://phpunit.de/) along with Laravel's own test framework additions, and a bunch of custom helper classes.
+
+## Setup
+
+The application tests are mostly functional, rather than unit tests, meaning they simulate user actions and system components, and therefore these require use of the database. To avoid potential conflicts within your development environment, the tests use a separate database. This is defined via a specific `mysql_testing` database connection in our configuration, and expects to use the following database access details:
+
+- Host: `127.0.0.1`
+- Username: `bookstack-test`
+- Password: `bookstack-test`
+- Database: `bookstack-test`
+
+You will need to create a database, with access for these credentials, to allow the system to connect when running tests. Alternatively, if those don't suit, you can define a `TEST_DATABASE_URL` option in your `.env` file, or environment, with connection details like so:
+
+```bash
+TEST_DATABASE_URL="mysql://username:password@host-name:port/database-name"
+```
+
+The testing database will need migrating and seeding with test data beforehand. This can be done by running `composer refresh-test-database`.
+
+## Running Tests
+
+You can run all tests via composer with `composer test` in the application root directory.
+Alternatively, you can run PHPUnit directly with `php vendor/bin/phpunit`.
+
+Some editors, like PHPStorm, have in-built support for running tests on a per file, directory or class basis.
+Otherwise, you can run PHPUnit with specified tests and/or filter to limit the tests ran:
+
+```bash
+# Run all test in the "./tests/HomepageTest.php" file
+php vendor/bin/phpunit ./tests/HomepageTest.php
+
+# Run all test in the "./tests/User" directory
+php vendor/bin/phpunit ./tests/User
+
+# Filter to a particular test method name
+php vendor/bin/phpunit --filter test_default_homepage_visible
+
+# Filter to a particular test class name
+php vendor/bin/phpunit --filter HomepageTest
+```
+
+If the codebase needs to be tested with deprecations, this can be done via uncommenting the relevant line within the `TestCase@setUp` function. This is not expected for most PRs to the project, but instead used for maintenance tasks like dependency & PHP upgrades.
+
+## Writing Tests
+
+To understand how tests are written & used, it's advised you read through existing test cases similar to what you need to write. Tests are written in a rather scrappy manner, compared to the core app codebase, which is fine and expected since there's often hoops to jump through for various functionality. Scrappy tests are better than no tests.
+
+Test classes have to be within the `tests/` folder, and be named ending in `Test`. These should always extend the `Tests\TestCase` class.
+Test methods should be written in snake_case, start with `test_`, and be public methods.
+
+Here are some general rules & patterns we follow in the tests:
+
+- All external remote system resources, like HTTP calls and LDAP connections, are mocked.
+- We prefer to hard-code expected text & URLs to better detect potential changes in the system rather than use dynamic references. This provides higher sensitivity to changes, and has never been much of a maintenance issue.
+- Only test with an admin user if needed, otherwise keep to less privileged users to ensure permission systems are active and exercised within tests.
+- If testing for the lack of something (e.g. `$this->assertDontSee('TextAfterChange')`) then this should be accompanied by some form of positive confirmation (e.g. `$this->assertSee('TextBeforeChange')`).
+
+### Test Helpers
+
+Our default `TestCase` is bloated with helpers to assist in testing scenarios. Some of these shown below, but you should jump through and explore these in your IDE/editor to explore their full capabilities and options:
+
+```php
+// Run the test as a logged-in-user at a certain privilege level
+$this->asAdmin();
+$this->asEditor();
+$this->asViewer();
+
+// Provides a bunch of entity (shelf/book/chapter/page) content and actions
+$this->entities;
+
+// Provides various user & role abilities
+$this->users;
+
+// Provides many helpful actions relate to system & content permissions
+$this->permissions;
+
+// Provides a range of methods for dealing with files & uploads in tests
+$this->files;
+
+// Parse HTML of a response to assert HTML-based conditions
+// Uses https://github.com/ssddanbrown/asserthtml library.
+$this->withHtml($resp);
+// Example:
+$this->withHtml($this->get('/'))->assertElementContains('p[id="top"]', 'Hello!');
+```
\ No newline at end of file
diff --git a/dev/docs/portable-zip-file-format.md b/dev/docs/portable-zip-file-format.md
new file mode 100644
index 00000000000..754cb4d3e94
--- /dev/null
+++ b/dev/docs/portable-zip-file-format.md
@@ -0,0 +1,160 @@
+# Portable ZIP File Format
+
+BookStack provides exports in a "Portable ZIP" which allows the portable transfer, storage, import & export of BookStack content.
+This document details the format used, and is intended for our own internal development use in addition to detailing the format for potential external use-cases (readers, apps, import for other platforms etc...).
+
+**Note:** This is not a BookStack backup format! This format misses much of the data that would be needed to re-create/restore a BookStack instance. There are existing better alternative options for this use-case.
+
+## Stability
+
+Following the goals & ideals of BookStack, stability is very important. We aim for this defined format to be stable and forwards compatible, to prevent breakages in use-case due to changes. Here are the general rules we follow in regard to stability & changes:
+
+- New features & properties may be added with any release.
+- Where reasonably possible, we will attempt to avoid modifications/removals of existing features/properties.
+- Where potentially breaking changes do have to be made, these will be noted in BookStack release/update notes.
+
+The addition of new features/properties alone are not considered as a breaking change to the format. Breaking changes are considered as such where they could impact common/expected use of the existing properties and features we document, they are not considered based upon user assumptions or any possible breakage.
+For example if your application, using the format, breaks because we added a new property while you hard-coded your application to use the third property (instead of a property name), then that's on you.
+
+## Format Outline
+
+The format is intended to be very simple, readable and based on open standards that could be easily read/handled in most common programming languages.
+The below outlines the structure of the format:
+
+- **ZIP archive container**
+ - **data.json** - Export data.
+ - **files/** - Directory containing referenced files.
+ - *file-a*
+ - *file-b*
+ - *...*
+
+## References
+
+Some properties in the export data JSON are indicated as `String reference`, and these are direct references to a file name within the `files/` directory of the ZIP. For example, the below book cover is directly referencing a `files/4a5m4a.jpg` within the ZIP which would be expected to exist.
+
+```json
+{
+ "book": {
+ "cover": "4a5m4a.jpg"
+ }
+}
+```
+
+Within HTML and markdown content, you may require references across to other items within the export content.
+This can be done using the following format:
+
+```
+[[bsexport::]]
+```
+
+References are to the `id` for data objects.
+Here's an example of each type of such reference that could be used:
+
+```
+[[bsexport:image:22]]
+[[bsexport:attachment:55]]
+[[bsexport:page:40]]
+[[bsexport:chapter:2]]
+[[bsexport:book:8]]
+```
+
+## HTML & Markdown Content
+
+BookStack commonly stores & utilises content in the HTML format.
+Properties that expect or provided HTML will either be named `html` or contain `html` in the property name.
+While BookStack supports a range of HTML, not all HTML content will be supported by BookStack and be assured to work as desired across all BookStack features.
+The HTML supported by BookStack is not yet formally documented, but you can inspect to what the WYSIWYG editor produces as a basis.
+Generally, top-level elements should keep to common block formats (p, blockquote, h1, h2 etc...) with no nesting or custom structure apart from common inline elements.
+Some areas of BookStack where HTML is used, like book & chapter descriptions, will strictly limit/filter HTML tag & attributes to an allow-list.
+
+For markdown content, in BookStack we target [the commonmark spec](https://commonmark.org/) with the addition of tables & task-lists.
+HTML within markdown is supported but not all HTML is assured to work as advised above.
+
+### Content Security
+
+If you're consuming HTML or markdown within an export please consider that the content is not assured to be safe, even if provided directly by a BookStack instance. It's best to treat such content as potentially unsafe.
+By default, BookStack performs some basic filtering to remove scripts among other potentially dangerous elements but this is not foolproof. BookStack itself relies on additional security mechanisms such as [CSP](https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP) to help prevent a range of exploits.
+
+## Export Data - `data.json`
+
+The `data.json` file is a JSON format file which contains all structured data for the export. The properties are as follows:
+
+- `instance` - [Instance](#instance) Object, optional, details of the export source instance.
+- `exported_at` - String, optional, full ISO 8601 datetime of when the export was created.
+- `book` - [Book](#book) Object, optional, book export data.
+- `chapter` - [Chapter](#chapter) Object, optional, chapter export data.
+- `page` - [Page](#page) Object, optional, page export data.
+
+Either `book`, `chapter` or `page` will exist depending on export type. You'd want to check for each to check what kind of export this is, and if it's an export you can handle. It's possible that other options are added in the future (`books` for a range of books for example) so it'd be wise to specifically check for properties that can be handled, otherwise error to indicate lack of support.
+
+## Data Objects
+
+The below details the objects & their properties used in Application Data.
+
+#### Instance
+
+These details are informational regarding the exporting BookStack instance from where an export was created from.
+
+- `id` - String, required, unique identifier for the BookStack instance.
+- `version` - String, required, BookStack version of the export source instance.
+
+#### Book
+
+- `id` - Number, optional, original ID for the book from exported system.
+- `name` - String, required, name/title of the book.
+- `description_html` - String, optional, HTML description content.
+- `cover` - String reference, optional, reference to book cover image.
+- `chapters` - [Chapter](#chapter) array, optional, chapters within this book.
+- `pages` - [Page](#page) array, optional, direct child pages for this book.
+- `tags` - [Tag](#tag) array, optional, tags assigned to this book.
+
+The `pages` are not all pages within the book, just those that are direct children (not in a chapter). To build an ordered mixed chapter/page list for the book, as what you'd see in BookStack, you'd need to combine `chapters` and `pages` together and sort by their `priority` value (low to high).
+
+#### Chapter
+
+- `id` - Number, optional, original ID for the chapter from exported system.
+- `name` - String, required, name/title of the chapter.
+- `description_html` - String, optional, HTML description content.
+- `priority` - Number, optional, integer order for when shown within a book (shown low to high).
+- `pages` - [Page](#page) array, optional, pages within this chapter.
+- `tags` - [Tag](#tag) array, optional, tags assigned to this chapter.
+
+#### Page
+
+- `id` - Number, optional, original ID for the page from exported system.
+- `name` - String, required, name/title of the page.
+- `html` - String, optional, page HTML content.
+- `markdown` - String, optional, user markdown content for this page.
+- `priority` - Number, optional, integer order for when shown within a book (shown low to high).
+- `attachments` - [Attachment](#attachment) array, optional, attachments uploaded to this page.
+- `images` - [Image](#image) array, optional, images used in this page.
+- `tags` - [Tag](#tag) array, optional, tags assigned to this page.
+
+To define the page content, either `markdown` or `html` should be provided. Ideally these should be limited to the range of markdown and HTML which BookStack supports. See the ["HTML & Markdown Content"](#html--markdown-content) section.
+
+The page editor type, and edit content will be determined by what content is provided. If non-empty `markdown` is provided, the page will be assumed as a markdown editor page (where permissions allow) and the HTML will be rendered from the markdown content. Otherwise, the provided `html` will be used as editor & display content.
+
+#### Image
+
+- `id` - Number, optional, original ID for the page from exported system.
+- `name` - String, required, name of image.
+- `file` - String reference, required, reference to image file.
+- `type` - String, required, must be 'gallery' or 'drawio'
+
+File must be an image type accepted by BookStack (png, jpg, gif, webp).
+Images of type 'drawio' are expected to be png with draw.io drawing data
+embedded within it.
+
+#### Attachment
+
+- `id` - Number, optional, original ID for the attachment from exported system.
+- `name` - String, required, name of attachment.
+- `link` - String, semi-optional, URL of attachment.
+- `file` - String reference, semi-optional, reference to attachment file.
+
+Either `link` or `file` must be present, as that will determine the type of attachment.
+
+#### Tag
+
+- `name` - String, required, name of the tag.
+- `value` - String, optional, value of the tag (can be empty).
\ No newline at end of file
diff --git a/dev/docs/release-process.md b/dev/docs/release-process.md
new file mode 100644
index 00000000000..758d6db4cfc
--- /dev/null
+++ b/dev/docs/release-process.md
@@ -0,0 +1,24 @@
+# Release Versioning & Process
+
+### BookStack Version Number Scheme
+
+BookStack releases are each assigned a date-based version number in the format `v.[.]`. For example:
+
+- `v20.12` - New feature released launched during December 2020.
+- `v21.06.2` - Second patch release upon the June 2021 feature release.
+
+Patch releases are generally fairly minor, primarily intended for fixes and therefore are fairly unlikely to cause breakages upon update.
+Feature releases are generally larger, bringing new features in addition to fixes and enhancements. These releases have a greater chance of introducing breaking changes upon update, so it's worth checking for any notes in the [update guide](https://www.bookstackapp.com/docs/admin/updates/).
+
+### Release Planning Process
+
+Each BookStack release will have a [milestone](https://github.com/BookStackApp/BookStack/milestones) created with issues & pull requests assigned to it to define what will be in that release. Milestones are built up then worked through until complete at which point, after some testing and documentation updates, the release will be deployed.
+
+### Release Announcements
+
+Feature releases, and some patch releases, will be accompanied by a post on the [BookStack blog](https://www.bookstackapp.com/blog/) which will provide additional detail on features, changes & updates otherwise the [GitHub release page](https://github.com/BookStackApp/BookStack/releases) will show a list of changes. You can sign up to be alerted to new BookStack blog posts (once per week maximum) [at this link](https://updates.bookstackapp.com/signup/bookstack-news-and-updates).
+
+### Release Technical Process
+
+Deploying a release, at a high level, simply involves merging the development branch into the release branch before then building & committing any release-only assets.
+A helper script [can be found in our](https://github.com/BookStackApp/devops/blob/main/meta-scripts/bookstack-release-steps) devops repo which provides the steps and commands for deploying a new release.
\ No newline at end of file
diff --git a/dev/docs/theme-system-modules.md b/dev/docs/theme-system-modules.md
new file mode 100644
index 00000000000..8aa9370ed26
--- /dev/null
+++ b/dev/docs/theme-system-modules.md
@@ -0,0 +1,72 @@
+# Theme System Modules
+
+A theme system module is a collection of customizations using the [visual](visual-theme-system.md) and [logical](logical-theme-system.md) theme systems, provided along with some metadata, that can be installed alongside other modules within a theme. They can effectively be thought of as "plugins" or "extensions" that can be applied in addition to any customizations in the active theme.
+
+### Module Location
+
+Modules are contained within a folder themselves, which should be located inside a `modules` folder within a [BookStack theme folder](visual-theme-system.md#getting-started).
+As an example, starting from the `themes/` top-level folder of a BookStack instance:
+
+```txt
+themes
+└── my-theme
+ └── modules
+ ├── module-a
+ │ └── bookstack-module.json
+ └── module-b
+ └── bookstack-module.json
+```
+
+### Module Format
+
+A module exists as a folder in the location [as detailed above](#module-location).
+The content within the module folder should then follow this format:
+
+- `bookstack-module.json` - REQUIRED - A JSON file containing [the metadata](#module-json-metadata) for the module.
+- `functions.php` - OPTIONAL - A PHP file containing code for the [logical theme system](logical-theme-system.md).
+- `head/` - OPTIONAL - A folder containing HTML files which will be included into the HTML head of app-views.
+- `icons/` - OPTIONAL - A folder containing any icons to use as per [the visual theme system](visual-theme-system.md#customizing-icons).
+- `lang/` - OPTIONAL - A folder containing any language files to use as per [the visual theme system](visual-theme-system.md#customizing-text-content).
+- `public/` - OPTIONAL - A folder containing any files to expose into public web-space as per [the visual theme system](visual-theme-system.md#publicly-accessible-files).
+- `views/` - OPTIONAL - A folder containing any view additions or overrides as per [the visual theme system](visual-theme-system.md#customizing-view-files).
+
+You can create additional directories/files for your own needs within the module, but ideally name them something unique to prevent conflicts with the above structure.
+
+### Module JSON Metadata
+
+Modules are required to have a `bookstack-module.json` file in the top level directory of the module.
+This must be a JSON file with the following properties:
+
+- `name` - string - An (ideally unique) name for the module.
+- `description` - string - A short description of the module.
+- `version` - string - A string version number generally following [semantic versioning](https://semver.org/).
+ - Examples: `v0.4.0`, `4.3.12`, `v0.1.0-beta4`.
+
+### Customization Order/Precedence
+
+It's possible that multiple modules may override/customize the same content.
+Right now, there's no assurance in regard to the order in which modules may be loaded.
+Generally they will be used/searched in order of their module folder name, but this is not assured and should not be relied upon.
+
+It's also possible that modules customize the same content as the configured theme.
+In this scenario, the theme takes precedence. Modules are designed to be more portable and instance abstract, whereas the theme folder would typically be specific to the instance.
+This allows the theme to be used to customize or override module content for the BookStack instance, without altering the module code itself.
+
+### Module Best Practices
+
+Here are some general best practices when it comes to creating modules:
+
+- Use a unique name and clear description so the user can understand the purpose of the module.
+- Increment the metadata version on change, keeping to [semver](https://semver.org/) to indicate compatibility of new versions.
+- Where possible, prefer to [insert views before/after](logical-theme-system.md#custom-view-registration-example) instead of overriding existing views, to reduce likelihood of conflicts or update troubles.
+- When using/registering custom views, use some level of unique namespacing within the view path to prevent potential conflicts with other customizations.
+ - For example, I may store a view within my module as `views/my-module-name-welcome.blade.php`, to be registered as 'my-module-name-welcome'.
+ - This is important since views may be resolved from other modules or the active theme, which may/will override your module level view.
+
+### Distribution Format
+
+Modules are expected to be distributed as a compressed ZIP file, where the ZIP contents follow that of a module folder.
+BookStack provides a `php artisan bookstack:install-module` command which allows modules to be installed from these ZIP files, either from a local path or from a web URL.
+Currently, there's a hardcoded total filesize limit of 50MB for module contents installed via this method.
+
+There is not yet any direct update mechanism for modules, although this is something we may introduce in the future.
\ No newline at end of file
diff --git a/dev/docs/visual-theme-system.md b/dev/docs/visual-theme-system.md
index 058bd2823b2..327660be52e 100644
--- a/dev/docs/visual-theme-system.md
+++ b/dev/docs/visual-theme-system.md
@@ -2,16 +2,24 @@
BookStack allows visual customization via the theme system which enables you to extensively customize views, translation text & icons.
-This theme system itself is maintained and supported but usages of this system, including the files you are able to override, are not considered stable and may change upon any update. You should test any customizations made after updates.
+This is part of the theme system alongside the [logical theme system](./logical-theme-system.md).
+
+**Note:** This theme system itself is maintained and supported, but usages of this system, including the files you are able to override, are not considered stable and may change upon any update. You should test any customizations made after updates.
## Getting Started
+*[Video Guide](https://foss.video/w/ibNY6bGmKFV1tva3Jz4KfA)*
+
This makes use of the theme system. Create a folder for your theme within your BookStack `themes` directory. As an example we'll use `my_theme`, so we'd create a `themes/my_theme` folder.
You'll need to tell BookStack to use your theme via the `APP_THEME` option in your `.env` file. For example: `APP_THEME=my_theme`.
## Customizing View Files
-Content placed in your `themes//` folder will override the original view files found in the `resources/views` folder. These files are typically [Laravel Blade](https://laravel.com/docs/6.x/blade) files.
+Content placed in your `themes//` folder will override the original view files found in the `resources/views` folder. These files are typically [Laravel Blade](https://laravel.com/docs/10.x/blade) files.
+As an example, I could override the `resources/views/books/parts/list-item.blade.php` file with my own template at the path `themes//books/parts/list-item.blade.php`.
+
+In addition to overriding original views, this could be used to add new views for use via the [logical theme system](logical-theme-system.md).
+By using the `THEME_REGISTER_VIEWS` logical event, you can also register your views to be rendered before/after existing views. An example of this can be found in our [logical theme guidance](logical-theme-system.md#custom-view-registration-example).
## Customizing Icons
@@ -19,7 +27,7 @@ SVG files placed in a `themes//icons` folder will override any icons
## Customizing Text Content
-Folders with PHP translation files placed in a `themes//lang` folder will override translations defined within the `resources/lang` folder. Custom translations are merged with the original files so you only need to override the select translations you want to override, you don't need to copy the whole original file. Note that you'll need to include the language folder.
+Folders with PHP translation files placed in a `themes//lang` folder will override translations defined within the `lang` folder. Custom translations are merged with the original files, so you only need to override the select translations you want to override, you don't need to copy the whole original file. Note that you'll need to include the language folder.
As an example, Say I wanted to change 'Search' to 'Find'; Within a `themes//lang/en/common.php` file I'd set the following:
@@ -28,4 +36,25 @@ As an example, Say I wanted to change 'Search' to 'Find'; Within a `themes/ 'find',
];
-```
\ No newline at end of file
+```
+
+## Publicly Accessible Files
+
+As part of deeper customizations you may want to expose additional files
+(images, scripts, styles, etc...) as part of your theme, in a way so they're
+accessible in public web-space to browsers.
+
+To achieve this, you can put files within a `themes//public` folder.
+BookStack will serve any files within this folder from a `/theme/` base path.
+
+As an example, if I had an image located at `themes/custom/public/cat.jpg`, I could access
+that image via the URL path `/theme/custom/cat.jpg`. That's assuming that `custom` is the currently
+configured application theme.
+
+There are some considerations to these publicly served files:
+
+- Only a predetermined range of "web safe" content-types are currently served.
+ - This limits running into potential insecure scenarios in serving problematic file types.
+- A static 1-day cache time it set on files served from this folder.
+ - You can use alternative cache-breaking techniques (change of query string) upon changes if needed.
+ - If required, you could likely override caching at the webserver level.
diff --git a/dev/docs/wysiwyg-js-api.md b/dev/docs/wysiwyg-js-api.md
new file mode 100644
index 00000000000..4b4fafe5624
--- /dev/null
+++ b/dev/docs/wysiwyg-js-api.md
@@ -0,0 +1,136 @@
+# WYSIWYG JavaScript API
+
+**Warning: This API is currently in development and may change without notice.**
+
+Feedback is very much welcomed via this issue: https://github.com/BookStackApp/BookStack/issues/5937
+
+This document covers the JavaScript API for the (newer Lexical-based) WYSIWYG editor.
+This API is built and designed to abstract the internals of the editor away
+to provide a stable interface for performing common customizations.
+
+Only the methods and properties documented here are guaranteed to be stable **once this API
+is out of initial development**.
+Other elements may be accessible but are not designed to be used directly, and therefore may change
+without notice.
+Stable parts of the API may still change where needed, but such changes would be noted as part of BookStack update advisories.
+
+The methods shown here are documented using standard TypeScript notation.
+
+## Overview
+
+The API is provided as an object, which itself provides a number of modules
+via its properties:
+
+- `ui` - Provides methods related to the UI of the editor, like buttons and toolbars.
+- `content` - Provides methods related to the live user content being edited upon.
+
+Each of these modules, and the relevant types used within, are documented in detail below.
+
+The API object itself is provided via the [editor-wysiwyg::post-init](./javascript-public-events.md#editor-wysiwygpost-init)
+JavaScript public event, so you can access it like so:
+
+```javascript
+window.addEventListener('editor-wysiwyg::post-init', event => {
+ const {api} = event.detail;
+});
+```
+
+---
+
+## UI Module
+
+This module provides methods related to the UI of the editor, like buttons and toolbars.
+
+### Methods
+
+#### createButton(options: object): EditorApiButton
+
+Creates a new button which can be used by other methods.
+This takes an option object with the following properties:
+
+- `label` - string, optional - Used for the button text if no icon provided, or the button tooltip if an icon is provided.
+- `icon` - string, optional - The icon to use for the button. Expected to be an SVG string.
+- `action` - callback, required - The action to perform when the button is clicked.
+
+The function returns an [EditorApiButton](#editorapibutton) object.
+
+**Example**
+
+```javascript
+const button = api.ui.createButton({
+ label: 'Warn',
+ icon: '... ',
+ action: () => {
+ window.alert('You clicked the button!');
+ }
+});
+```
+
+### getMainToolbar(): EditorApiToolbar
+
+Get the main editor toolbar. This is typically the toolbar at the top of the editor.
+The function returns an [EditorApiToolbar](#editorapitoolbar) object, or null if no toolbar is found.
+
+**Example**
+
+```javascript
+const toolbar = api.ui.getMainToolbar();
+const sections = toolbar?.getSections() || [];
+if (sections.length > 0) {
+ sections[0].addButton(button);
+}
+```
+
+### Types
+
+These are types which may be provided from UI module methods.
+
+#### EditorApiButton
+
+Represents a button created via the `createButton` method.
+This has the following methods:
+
+- `setActive(isActive: boolean): void` - Sets whether the button should be in an active state or not (typically active buttons appear as pressed).
+
+#### EditorApiToolbar
+
+Represents a toolbar within the editor. This is a bar typically containing sets of buttons.
+This has the following methods:
+
+- `getSections(): EditorApiToolbarSection[]` - Provides the main [EditorApiToolbarSections](#editorapitoolbarsection) contained within this toolbar.
+
+#### EditorApiToolbarSection
+
+Represents a section of the main editor toolbar, which contains a set of buttons.
+This has the following methods:
+
+- `getLabel(): string` - Provides the string label of the section.
+- `addButton(button: EditorApiButton, targetIndex: number = -1): void` - Adds a button to the section.
+ - By default, this will append the button, although a target index can be provided to insert at a specific position.
+
+---
+
+## Content Module
+
+This module provides methods related to the live user content being edited within the editor.
+
+### Methods
+
+#### insertHtml(html: string, position: string = 'selection'): void
+
+Inserts the given HTML string at the given position string.
+The position, if not provided, will default to `'selection'`, replacing any existing selected content (or inserting at the selection if there's no active selection range).
+Valid position string values are: `selection`, `start` and `end`. `start` & `end` are relative to the whole editor document.
+The HTML is not assured to be added to the editor exactly as provided, since it will be parsed and serialised to fit the editor's internal known model format. Different parts of the HTML content may be handled differently depending on if it's block or inline content.
+
+The function does not return anything.
+
+**Example**
+
+```javascript
+// Basic insert at selection
+api.content.insertHtml('Hello world !
');
+
+// Insert at the start of the editor content
+api.content.insertHtml('I\'m at the start!
', 'start');
+```
\ No newline at end of file
diff --git a/dev/licensing/gen-js-licenses b/dev/licensing/gen-js-licenses
new file mode 100644
index 00000000000..191a16f302f
--- /dev/null
+++ b/dev/licensing/gen-js-licenses
@@ -0,0 +1,63 @@
+#!/usr/bin/env php
+name}"];
+
+ $license = $package->license ?? '';
+ if ($license) {
+ $output[] = "License: {$license}";
+ } else {
+ warn("Package {$package->name}: No license found");
+ }
+
+ $licenseFile = findLicenseFile($package->name, $packagePath);
+ if ($licenseFile) {
+ $relLicenseFile = str_replace("{$rootPath}/", '', $licenseFile);
+ $output[] = "License File: {$relLicenseFile}";
+ $copyright = findCopyright($licenseFile);
+ if ($copyright) {
+ $output[] = "Copyright: {$copyright}";
+ } else {
+ warn("Package {$package->name}: no copyright found in its license");
+ }
+ }
+
+ $source = $package->repository->url ?? $package->repository ?? '';
+ if ($source) {
+ $output[] = "Source: {$source}";
+ }
+
+ $link = $package->homepage ?? $source;
+ if ($link) {
+ $output[] = "Link: {$link}";
+ }
+
+ return implode("\n", $output);
+}
diff --git a/dev/licensing/gen-licenses-shared.php b/dev/licensing/gen-licenses-shared.php
new file mode 100644
index 00000000000..a8ad350f22d
--- /dev/null
+++ b/dev/licensing/gen-licenses-shared.php
@@ -0,0 +1,66 @@
+ 1) {
+ warn("Package {$packageName}: more than one license file found");
+ }
+
+ if (count($foundLicenses) > 0) {
+ $fileName = basename($foundLicenses[0]);
+ return "{$packageDir}/{$fileName}";
+ }
+
+ warn("Package {$packageName}: no license files found");
+ return '';
+}
+
+function findCopyright(string $licenseFile): string
+{
+ $fileContents = file_get_contents($licenseFile);
+ $pattern = '/^.*?copyright (\(c\)|\d{4})[\s\S]*?(\n\n|\.\n)/mi';
+ $matches = [];
+ preg_match($pattern, $fileContents, $matches);
+ $copyright = trim($matches[0] ?? '');
+
+ if (str_contains($copyright, 'i.e.')) {
+ return '';
+ }
+
+ $emailPattern = '/([a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,})/i';
+ return preg_replace_callback($emailPattern, obfuscateEmail(...), $copyright);
+}
+
+function obfuscateEmail(array $matches): string
+{
+ return preg_replace('/[^@.]/', '*', $matches[1]);
+}
+
+function warn(string $text): void
+{
+ global $warnings;
+ $warnings[] = "WARN:" . $text;
+}
+
+function getWarnings(): array
+{
+ global $warnings;
+ return $warnings;
+}
diff --git a/dev/licensing/gen-php-licenses b/dev/licensing/gen-php-licenses
new file mode 100644
index 00000000000..79f4c2ff696
--- /dev/null
+++ b/dev/licensing/gen-php-licenses
@@ -0,0 +1,55 @@
+#!/usr/bin/env php
+packages;
+$packageOutput = array_map(packageToOutput(...), $packages);
+
+$licenseInfo = implode($outputSeparator, $packageOutput) . "\n";
+file_put_contents($outputPath, $licenseInfo);
+
+echo "License information written to {$outputPath}\n";
+echo implode("\n", getWarnings()) . "\n";
+
+function packageToOutput(stdClass $package) : string {
+ global $rootPath;
+ $output = ["{$package->name}"];
+
+ $licenses = is_array($package->license) ? $package->license : [$package->license];
+ $output[] = "License: " . implode(' ', $licenses);
+
+ $packagePath = "{$rootPath}/vendor/{$package->name}/package.json";
+ $licenseFile = findLicenseFile($package->name, $packagePath);
+ if ($licenseFile) {
+ $relLicenseFile = str_replace("{$rootPath}/", '', $licenseFile);
+ $output[] = "License File: {$relLicenseFile}";
+ $copyright = findCopyright($licenseFile);
+ if ($copyright) {
+ $output[] = "Copyright: {$copyright}";
+ } else {
+ warn("Package {$package->name}: no copyright found in its license");
+ }
+ }
+
+ $source = $package->source->url;
+ if ($source) {
+ $output[] = "Source: {$source}";
+ }
+
+ $link = $package->homepage ?? $package->source->url ?? '';
+ if ($link) {
+ $output[] = "Link: {$link}";
+ }
+
+ return implode("\n", $output);
+}
\ No newline at end of file
diff --git a/dev/licensing/js-library-licenses.txt b/dev/licensing/js-library-licenses.txt
new file mode 100644
index 00000000000..1c23c093762
--- /dev/null
+++ b/dev/licensing/js-library-licenses.txt
@@ -0,0 +1,3933 @@
+acorn-jsx
+License: MIT
+License File: node_modules/acorn-jsx/LICENSE
+Copyright: Copyright (C) 2012-2017 by Ingvar Stepanyan
+Source: https://github.com/acornjs/acorn-jsx
+Link: https://github.com/acornjs/acorn-jsx
+-----------
+acorn-walk
+License: MIT
+License File: node_modules/acorn-walk/LICENSE
+Copyright: Copyright (C) 2012-2020 by various contributors (see AUTHORS)
+Source: https://github.com/acornjs/acorn.git
+Link: https://github.com/acornjs/acorn
+-----------
+acorn
+License: MIT
+License File: node_modules/acorn/LICENSE
+Copyright: Copyright (C) 2012-2022 by various contributors (see AUTHORS)
+Source: git+https://github.com/acornjs/acorn.git
+Link: https://github.com/acornjs/acorn
+-----------
+agent-base
+License: MIT
+License File: node_modules/agent-base/LICENSE
+Copyright: Copyright (c) 2013 Nathan Rajlich <******@***********.***>
+Source: https://github.com/TooTallNate/proxy-agents.git
+Link: https://github.com/TooTallNate/proxy-agents.git
+-----------
+ajv
+License: MIT
+License File: node_modules/ajv/LICENSE
+Copyright: Copyright (c) 2015-2017 Evgeny Poberezkin
+Source: https://github.com/ajv-validator/ajv.git
+Link: https://github.com/ajv-validator/ajv
+-----------
+ansi-escapes
+License: MIT
+License File: node_modules/ansi-escapes/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: sindresorhus/ansi-escapes
+Link: sindresorhus/ansi-escapes
+-----------
+ansi-regex
+License: MIT
+License File: node_modules/ansi-regex/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: chalk/ansi-regex
+Link: chalk/ansi-regex
+-----------
+ansi-styles
+License: MIT
+License File: node_modules/ansi-styles/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: chalk/ansi-styles
+Link: chalk/ansi-styles
+-----------
+anymatch
+License: ISC
+License File: node_modules/anymatch/LICENSE
+Copyright: Copyright (c) 2019 Elan Shanker, Paul Miller (https://paulmillr.com)
+Source: https://github.com/micromatch/anymatch
+Link: https://github.com/micromatch/anymatch
+-----------
+arg
+License: MIT
+License File: node_modules/arg/LICENSE.md
+Copyright: Copyright (c) 2017-2019 Zeit, Inc.
+Source: zeit/arg
+Link: zeit/arg
+-----------
+argparse
+License: Python-2.0
+License File: node_modules/argparse/LICENSE
+Source: nodeca/argparse
+Link: nodeca/argparse
+-----------
+array-buffer-byte-length
+License: MIT
+License File: node_modules/array-buffer-byte-length/LICENSE
+Copyright: Copyright (c) 2023 Inspect JS
+Source: git+https://github.com/inspect-js/array-buffer-byte-length.git
+Link: https://github.com/inspect-js/array-buffer-byte-length#readme
+-----------
+array-includes
+License: MIT
+License File: node_modules/array-includes/LICENSE
+Copyright: Copyright (C) 2015 Jordan Harband
+Source: git://github.com/es-shims/array-includes.git
+Link: git://github.com/es-shims/array-includes.git
+-----------
+array.prototype.findlastindex
+License: MIT
+License File: node_modules/array.prototype.findlastindex/LICENSE
+Copyright: Copyright (c) 2021 ECMAScript Shims
+Source: git+https://github.com/es-shims/Array.prototype.findLastIndex.git
+Link: https://github.com/es-shims/Array.prototype.findLastIndex#readme
+-----------
+array.prototype.flat
+License: MIT
+License File: node_modules/array.prototype.flat/LICENSE
+Copyright: Copyright (c) 2017 ECMAScript Shims
+Source: git://github.com/es-shims/Array.prototype.flat.git
+Link: git://github.com/es-shims/Array.prototype.flat.git
+-----------
+array.prototype.flatmap
+License: MIT
+License File: node_modules/array.prototype.flatmap/LICENSE
+Copyright: Copyright (c) 2017 ECMAScript Shims
+Source: git://github.com/es-shims/Array.prototype.flatMap.git
+Link: git://github.com/es-shims/Array.prototype.flatMap.git
+-----------
+arraybuffer.prototype.slice
+License: MIT
+License File: node_modules/arraybuffer.prototype.slice/LICENSE
+Copyright: Copyright (c) 2023 ECMAScript Shims
+Source: git+https://github.com/es-shims/ArrayBuffer.prototype.slice.git
+Link: https://github.com/es-shims/ArrayBuffer.prototype.slice#readme
+-----------
+async-function
+License: MIT
+License File: node_modules/async-function/LICENSE
+Copyright: Copyright (c) 2016 EduardoRFS
+Source: git+https://github.com/ljharb/async-function.git
+Link: https://github.com/ljharb/async-function#readme
+-----------
+available-typed-arrays
+License: MIT
+License File: node_modules/available-typed-arrays/LICENSE
+Copyright: Copyright (c) 2020 Inspect JS
+Source: git+https://github.com/inspect-js/available-typed-arrays.git
+Link: https://github.com/inspect-js/available-typed-arrays#readme
+-----------
+babel-jest
+License: MIT
+License File: node_modules/babel-jest/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+babel-plugin-istanbul
+License: BSD-3-Clause
+License File: node_modules/babel-plugin-istanbul/LICENSE
+Copyright: Copyright (c) 2016, Istanbul Code Coverage
+All rights reserved.
+Source: git+https://github.com/istanbuljs/babel-plugin-istanbul.git
+Link: https://github.com/istanbuljs/babel-plugin-istanbul#readme
+-----------
+babel-plugin-jest-hoist
+License: MIT
+License File: node_modules/babel-plugin-jest-hoist/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+babel-preset-current-node-syntax
+License: MIT
+License File: node_modules/babel-preset-current-node-syntax/LICENSE
+Copyright: Copyright (c) 2020 Nicolò Ribaudo and other contributors
+Source: https://github.com/nicolo-ribaudo/babel-preset-current-node-syntax.git
+Link: https://github.com/nicolo-ribaudo/babel-preset-current-node-syntax.git
+-----------
+babel-preset-jest
+License: MIT
+License File: node_modules/babel-preset-jest/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+balanced-match
+License: MIT
+License File: node_modules/balanced-match/LICENSE.md
+Copyright: Copyright (c) 2013 Julian Gruber <******@************.***>
+Source: git://github.com/juliangruber/balanced-match.git
+Link: https://github.com/juliangruber/balanced-match
+-----------
+binary-extensions
+License: MIT
+License File: node_modules/binary-extensions/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Copyright (c) Paul Miller (https://paulmillr.com)
+Source: sindresorhus/binary-extensions
+Link: sindresorhus/binary-extensions
+-----------
+brace-expansion
+License: MIT
+License File: node_modules/brace-expansion/LICENSE
+Copyright: Copyright (c) 2013 Julian Gruber <******@************.***>
+Source: git://github.com/juliangruber/brace-expansion.git
+Link: https://github.com/juliangruber/brace-expansion
+-----------
+braces
+License: MIT
+License File: node_modules/braces/LICENSE
+Copyright: Copyright (c) 2014-present, Jon Schlinkert.
+Source: micromatch/braces
+Link: https://github.com/micromatch/braces
+-----------
+browserslist
+License: MIT
+License File: node_modules/browserslist/LICENSE
+Copyright: Copyright 2014 Andrey Sitnik <******@******.**> and other contributors
+Source: browserslist/browserslist
+Link: browserslist/browserslist
+-----------
+bs-logger
+License: MIT
+License File: node_modules/bs-logger/LICENSE
+Copyright: Copyright (c) 2018 Huafu Gandon
+Source: git+https://github.com/huafu/bs-logger.git
+Link: git+https://github.com/huafu/bs-logger.git
+-----------
+bser
+License: Apache-2.0
+Source: https://github.com/facebook/watchman
+Link: https://facebook.github.io/watchman/docs/bser.html
+-----------
+buffer-from
+License: MIT
+License File: node_modules/buffer-from/LICENSE
+Copyright: Copyright (c) 2016, 2018 Linus Unnebäck
+Source: LinusU/buffer-from
+Link: LinusU/buffer-from
+-----------
+call-bind-apply-helpers
+License: MIT
+License File: node_modules/call-bind-apply-helpers/LICENSE
+Copyright: Copyright (c) 2024 Jordan Harband
+Source: git+https://github.com/ljharb/call-bind-apply-helpers.git
+Link: https://github.com/ljharb/call-bind-apply-helpers#readme
+-----------
+call-bind
+License: MIT
+License File: node_modules/call-bind/LICENSE
+Copyright: Copyright (c) 2020 Jordan Harband
+Source: git+https://github.com/ljharb/call-bind.git
+Link: https://github.com/ljharb/call-bind#readme
+-----------
+call-bound
+License: MIT
+License File: node_modules/call-bound/LICENSE
+Copyright: Copyright (c) 2024 Jordan Harband
+Source: git+https://github.com/ljharb/call-bound.git
+Link: https://github.com/ljharb/call-bound#readme
+-----------
+callsites
+License: MIT
+License File: node_modules/callsites/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/callsites
+Link: sindresorhus/callsites
+-----------
+camelcase
+License: MIT
+License File: node_modules/camelcase/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/camelcase
+Link: sindresorhus/camelcase
+-----------
+caniuse-lite
+License: CC-BY-4.0
+License File: node_modules/caniuse-lite/LICENSE
+Source: browserslist/caniuse-lite
+Link: browserslist/caniuse-lite
+-----------
+chalk
+License: MIT
+License File: node_modules/chalk/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: chalk/chalk
+Link: chalk/chalk
+-----------
+char-regex
+License: MIT
+License File: node_modules/char-regex/LICENSE
+Source: https://github.com/Richienb/char-regex.git
+Link: https://github.com/Richienb/char-regex.git
+-----------
+chokidar-cli
+License: MIT
+License File: node_modules/chokidar-cli/LICENSE
+Copyright: Copyright (c) 2015 Kimmo Brunfeldt
+Source: https://github.com/open-npm-tools/chokidar-cli.git
+Link: https://github.com/open-npm-tools/chokidar-cli
+-----------
+chokidar
+License: MIT
+License File: node_modules/chokidar/LICENSE
+Copyright: Copyright (c) 2012-2019 Paul Miller (https://paulmillr.com), Elan Shanker
+Source: git+https://github.com/paulmillr/chokidar.git
+Link: https://github.com/paulmillr/chokidar
+-----------
+ci-info
+License: MIT
+License File: node_modules/ci-info/LICENSE
+Copyright: Copyright (c) 2016 Thomas Watson Steen
+Source: github:watson/ci-info
+Link: https://github.com/watson/ci-info
+-----------
+cjs-module-lexer
+License: MIT
+License File: node_modules/cjs-module-lexer/LICENSE
+Copyright: Copyright (C) 2018-2020 Guy Bedford
+Source: git+https://github.com/nodejs/cjs-module-lexer.git
+Link: https://github.com/nodejs/cjs-module-lexer#readme
+-----------
+cliui
+License: ISC
+License File: node_modules/cliui/LICENSE.txt
+Copyright: Copyright (c) 2015, Contributors
+Source: http://github.com/yargs/cliui.git
+Link: http://github.com/yargs/cliui.git
+-----------
+co
+License: MIT
+License File: node_modules/co/LICENSE
+Copyright: Copyright (c) 2014 TJ Holowaychuk <**@************.**>
+Source: tj/co
+Link: tj/co
+-----------
+codemirror
+License: MIT
+License File: node_modules/codemirror/LICENSE
+Copyright: Copyright (C) 2018-2021 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/codemirror/basic-setup.git
+Link: https://github.com/codemirror/basic-setup.git
+-----------
+collect-v8-coverage
+License: MIT
+License File: node_modules/collect-v8-coverage/LICENSE
+Copyright: Copyright (c) 2019 Simen Bekkhus
+Source: SimenB/collect-v8-coverage
+Link: SimenB/collect-v8-coverage
+-----------
+color-convert
+License: MIT
+License File: node_modules/color-convert/LICENSE
+Copyright: Copyright (c) 2011-2016 Heather Arthur <**********@*****.***>
+Source: Qix-/color-convert
+Link: Qix-/color-convert
+-----------
+color-name
+License: MIT
+License File: node_modules/color-name/LICENSE
+Source: git@github.com:colorjs/color-name.git
+Link: https://github.com/colorjs/color-name
+-----------
+concat-map
+License: MIT
+License File: node_modules/concat-map/LICENSE
+Source: git://github.com/substack/node-concat-map.git
+Link: git://github.com/substack/node-concat-map.git
+-----------
+convert-source-map
+License: MIT
+License File: node_modules/convert-source-map/LICENSE
+Copyright: Copyright 2013 Thorsten Lorenz.
+All rights reserved.
+Source: git://github.com/thlorenz/convert-source-map.git
+Link: https://github.com/thlorenz/convert-source-map
+-----------
+create-require
+License: MIT
+License File: node_modules/create-require/LICENSE
+Copyright: Copyright (c) 2020
+Source: nuxt-contrib/create-require
+Link: nuxt-contrib/create-require
+-----------
+crelt
+License: MIT
+License File: node_modules/crelt/LICENSE
+Copyright: Copyright (C) 2020 by Marijn Haverbeke <******@*********.******>
+Source: git+https://github.com/marijnh/crelt.git
+Link: https://github.com/marijnh/crelt#readme
+-----------
+cross-spawn
+License: MIT
+License File: node_modules/cross-spawn/LICENSE
+Copyright: Copyright (c) 2018 Made With MOXY Lda <*****@****.******>
+Source: git@github.com:moxystudio/node-cross-spawn.git
+Link: https://github.com/moxystudio/node-cross-spawn
+-----------
+cssstyle
+License: MIT
+License File: node_modules/cssstyle/LICENSE
+Copyright: Copyright (c) Chad Walker
+Source: jsdom/cssstyle
+Link: https://github.com/jsdom/cssstyle
+-----------
+data-urls
+License: MIT
+License File: node_modules/data-urls/LICENSE.txt
+Source: jsdom/data-urls
+Link: jsdom/data-urls
+-----------
+data-view-buffer
+License: MIT
+License File: node_modules/data-view-buffer/LICENSE
+Copyright: Copyright (c) 2023 Jordan Harband
+Source: git+https://github.com/inspect-js/data-view-buffer.git
+Link: https://github.com/inspect-js/data-view-buffer#readme
+-----------
+data-view-byte-length
+License: MIT
+License File: node_modules/data-view-byte-length/LICENSE
+Copyright: Copyright (c) 2024 Jordan Harband
+Source: git+https://github.com/inspect-js/data-view-byte-length.git
+Link: https://github.com/inspect-js/data-view-byte-length#readme
+-----------
+data-view-byte-offset
+License: MIT
+License File: node_modules/data-view-byte-offset/LICENSE
+Copyright: Copyright (c) 2024 Jordan Harband
+Source: git+https://github.com/inspect-js/data-view-byte-offset.git
+Link: https://github.com/inspect-js/data-view-byte-offset#readme
+-----------
+debug
+License: MIT
+License File: node_modules/debug/LICENSE
+Copyright: Copyright (c) 2014-2017 TJ Holowaychuk <**@************.**>
+Copyright (c) 2018-2021 Josh Junon
+Source: git://github.com/debug-js/debug.git
+Link: git://github.com/debug-js/debug.git
+-----------
+decamelize
+License: MIT
+License File: node_modules/decamelize/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/decamelize
+Link: sindresorhus/decamelize
+-----------
+decimal.js
+License: MIT
+Source: https://github.com/MikeMcl/decimal.js.git
+Link: https://github.com/MikeMcl/decimal.js.git
+-----------
+dedent
+License: MIT
+License File: node_modules/dedent/LICENSE.md
+Source: https://github.com/dmnd/dedent
+Link: https://github.com/dmnd/dedent
+-----------
+deep-is
+License: MIT
+License File: node_modules/deep-is/LICENSE
+Copyright: Copyright (c) 2012, 2013 Thorsten Lorenz <********@***.**>
+Copyright (c) 2012 James Halliday <****@********.***>
+Copyright (c) 2009 Thomas Robinson <280north.com>
+Source: http://github.com/thlorenz/deep-is.git
+Link: http://github.com/thlorenz/deep-is.git
+-----------
+deepmerge
+License: MIT
+License File: node_modules/deepmerge/license.txt
+Copyright: Copyright (c) 2012 James Halliday, Josh Duff, and other contributors
+Source: git://github.com/TehShrike/deepmerge.git
+Link: https://github.com/TehShrike/deepmerge
+-----------
+define-data-property
+License: MIT
+License File: node_modules/define-data-property/LICENSE
+Copyright: Copyright (c) 2023 Jordan Harband
+Source: git+https://github.com/ljharb/define-data-property.git
+Link: https://github.com/ljharb/define-data-property#readme
+-----------
+define-properties
+License: MIT
+License File: node_modules/define-properties/LICENSE
+Copyright: Copyright (C) 2015 Jordan Harband
+Source: git://github.com/ljharb/define-properties.git
+Link: git://github.com/ljharb/define-properties.git
+-----------
+detect-libc
+License: Apache-2.0
+License File: node_modules/detect-libc/LICENSE
+Source: git://github.com/lovell/detect-libc
+Link: git://github.com/lovell/detect-libc
+-----------
+detect-newline
+License: MIT
+License File: node_modules/detect-newline/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/detect-newline
+Link: sindresorhus/detect-newline
+-----------
+diff
+License: BSD-3-Clause
+License File: node_modules/diff/LICENSE
+Copyright: Copyright (c) 2009-2015, Kevin Decker <********@*****.***>
+Source: git://github.com/kpdecker/jsdiff.git
+Link: git://github.com/kpdecker/jsdiff.git
+-----------
+doctrine
+License: Apache-2.0
+License File: node_modules/doctrine/LICENSE
+Source: eslint/doctrine
+Link: https://github.com/eslint/doctrine
+-----------
+dunder-proto
+License: MIT
+License File: node_modules/dunder-proto/LICENSE
+Copyright: Copyright (c) 2024 ECMAScript Shims
+Source: git+https://github.com/es-shims/dunder-proto.git
+Link: https://github.com/es-shims/dunder-proto#readme
+-----------
+eastasianwidth
+License: MIT
+Source: git://github.com/komagata/eastasianwidth.git
+Link: git://github.com/komagata/eastasianwidth.git
+-----------
+electron-to-chromium
+License: ISC
+License File: node_modules/electron-to-chromium/LICENSE
+Copyright: Copyright 2018 Kilian Valkhof
+Source: https://github.com/kilian/electron-to-chromium/
+Link: https://github.com/kilian/electron-to-chromium/
+-----------
+emittery
+License: MIT
+License File: node_modules/emittery/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: sindresorhus/emittery
+Link: sindresorhus/emittery
+-----------
+emoji-regex
+License: MIT
+License File: node_modules/emoji-regex/LICENSE-MIT.txt
+Source: https://github.com/mathiasbynens/emoji-regex.git
+Link: https://mths.be/emoji-regex
+-----------
+entities
+License: BSD-2-Clause
+License File: node_modules/entities/LICENSE
+Copyright: Copyright (c) Felix Böhm
+All rights reserved.
+Source: git://github.com/fb55/entities.git
+Link: git://github.com/fb55/entities.git
+-----------
+error-ex
+License: MIT
+License File: node_modules/error-ex/LICENSE
+Copyright: Copyright (c) 2015 JD Ballard
+Source: qix-/node-error-ex
+Link: qix-/node-error-ex
+-----------
+es-abstract
+License: MIT
+License File: node_modules/es-abstract/LICENSE
+Copyright: Copyright (C) 2015 Jordan Harband
+Source: git://github.com/ljharb/es-abstract.git
+Link: git://github.com/ljharb/es-abstract.git
+-----------
+es-define-property
+License: MIT
+License File: node_modules/es-define-property/LICENSE
+Copyright: Copyright (c) 2024 Jordan Harband
+Source: git+https://github.com/ljharb/es-define-property.git
+Link: https://github.com/ljharb/es-define-property#readme
+-----------
+es-errors
+License: MIT
+License File: node_modules/es-errors/LICENSE
+Copyright: Copyright (c) 2024 Jordan Harband
+Source: git+https://github.com/ljharb/es-errors.git
+Link: https://github.com/ljharb/es-errors#readme
+-----------
+es-object-atoms
+License: MIT
+License File: node_modules/es-object-atoms/LICENSE
+Copyright: Copyright (c) 2024 Jordan Harband
+Source: git+https://github.com/ljharb/es-object-atoms.git
+Link: https://github.com/ljharb/es-object-atoms#readme
+-----------
+es-set-tostringtag
+License: MIT
+License File: node_modules/es-set-tostringtag/LICENSE
+Copyright: Copyright (c) 2022 ECMAScript Shims
+Source: git+https://github.com/es-shims/es-set-tostringtag.git
+Link: https://github.com/es-shims/es-set-tostringtag#readme
+-----------
+es-shim-unscopables
+License: MIT
+License File: node_modules/es-shim-unscopables/LICENSE
+Copyright: Copyright (c) 2022 Jordan Harband
+Source: git+https://github.com/ljharb/es-shim-unscopables.git
+Link: https://github.com/ljharb/es-shim-unscopables#readme
+-----------
+es-to-primitive
+License: MIT
+License File: node_modules/es-to-primitive/LICENSE
+Copyright: Copyright (c) 2015 Jordan Harband
+Source: git://github.com/ljharb/es-to-primitive.git
+Link: git://github.com/ljharb/es-to-primitive.git
+-----------
+esbuild
+License: MIT
+License File: node_modules/esbuild/LICENSE.md
+Copyright: Copyright (c) 2020 Evan Wallace
+Source: git+https://github.com/evanw/esbuild.git
+Link: git+https://github.com/evanw/esbuild.git
+-----------
+escalade
+License: MIT
+License File: node_modules/escalade/license
+Copyright: Copyright (c) Luke Edwards <****.*********@*****.***> (lukeed.com)
+Source: lukeed/escalade
+Link: lukeed/escalade
+-----------
+escape-string-regexp
+License: MIT
+License File: node_modules/escape-string-regexp/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: sindresorhus/escape-string-regexp
+Link: sindresorhus/escape-string-regexp
+-----------
+eslint-import-resolver-node
+License: MIT
+License File: node_modules/eslint-import-resolver-node/LICENSE
+Copyright: Copyright (c) 2015 Ben Mosher
+Source: https://github.com/import-js/eslint-plugin-import
+Link: https://github.com/import-js/eslint-plugin-import
+-----------
+eslint-module-utils
+License: MIT
+License File: node_modules/eslint-module-utils/LICENSE
+Copyright: Copyright (c) 2015 Ben Mosher
+Source: git+https://github.com/import-js/eslint-plugin-import.git
+Link: https://github.com/import-js/eslint-plugin-import#readme
+-----------
+eslint-plugin-import
+License: MIT
+License File: node_modules/eslint-plugin-import/LICENSE
+Copyright: Copyright (c) 2015 Ben Mosher
+Source: https://github.com/import-js/eslint-plugin-import
+Link: https://github.com/import-js/eslint-plugin-import
+-----------
+eslint-scope
+License: BSD-2-Clause
+License File: node_modules/eslint-scope/LICENSE
+Copyright: Copyright (C) 2012-2013 Yusuke Suzuki (twitter: @Constellation) and other contributors.
+Source: https://github.com/eslint/js.git
+Link: https://github.com/eslint/js/blob/main/packages/eslint-scope/README.md
+-----------
+eslint-visitor-keys
+License: Apache-2.0
+License File: node_modules/eslint-visitor-keys/LICENSE
+Source: https://github.com/eslint/js.git
+Link: https://github.com/eslint/js/blob/main/packages/eslint-visitor-keys/README.md
+-----------
+eslint
+License: MIT
+License File: node_modules/eslint/LICENSE
+Source: eslint/eslint
+Link: https://eslint.org
+-----------
+espree
+License: BSD-2-Clause
+License File: node_modules/espree/LICENSE
+Copyright: Copyright (c) Open JS Foundation
+All rights reserved.
+Source: https://github.com/eslint/js.git
+Link: https://github.com/eslint/js/blob/main/packages/espree/README.md
+-----------
+esprima
+License: BSD-2-Clause
+License File: node_modules/esprima/LICENSE.BSD
+Source: https://github.com/jquery/esprima.git
+Link: http://esprima.org
+-----------
+esquery
+License: BSD-3-Clause
+License File: node_modules/esquery/license.txt
+Copyright: Copyright (c) 2013, Joel Feenstra
+All rights reserved.
+Source: https://github.com/estools/esquery.git
+Link: https://github.com/estools/esquery/
+-----------
+esrecurse
+License: BSD-2-Clause
+Source: https://github.com/estools/esrecurse.git
+Link: https://github.com/estools/esrecurse
+-----------
+estraverse
+License: BSD-2-Clause
+License File: node_modules/estraverse/LICENSE.BSD
+Source: http://github.com/estools/estraverse.git
+Link: https://github.com/estools/estraverse
+-----------
+esutils
+License: BSD-2-Clause
+License File: node_modules/esutils/LICENSE.BSD
+Source: http://github.com/estools/esutils.git
+Link: https://github.com/estools/esutils
+-----------
+execa
+License: MIT
+License File: node_modules/execa/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: sindresorhus/execa
+Link: sindresorhus/execa
+-----------
+exit-x
+License: MIT
+Source: git://github.com/gruntjs/node-exit-x.git
+Link: https://github.com/gruntjs/node-exit-x
+-----------
+expect
+License: MIT
+License File: node_modules/expect/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+fast-deep-equal
+License: MIT
+License File: node_modules/fast-deep-equal/LICENSE
+Copyright: Copyright (c) 2017 Evgeny Poberezkin
+Source: git+https://github.com/epoberezkin/fast-deep-equal.git
+Link: https://github.com/epoberezkin/fast-deep-equal#readme
+-----------
+fast-json-stable-stringify
+License: MIT
+License File: node_modules/fast-json-stable-stringify/LICENSE
+Copyright: Copyright (c) 2017 Evgeny Poberezkin
+Copyright (c) 2013 James Halliday
+Source: git://github.com/epoberezkin/fast-json-stable-stringify.git
+Link: https://github.com/epoberezkin/fast-json-stable-stringify
+-----------
+fast-levenshtein
+License: MIT
+License File: node_modules/fast-levenshtein/LICENSE.md
+Copyright: Copyright (c) 2013 [Ramesh Nair](http://www.hiddentao.com/)
+Source: https://github.com/hiddentao/fast-levenshtein.git
+Link: https://github.com/hiddentao/fast-levenshtein.git
+-----------
+fb-watchman
+License: Apache-2.0
+Source: git@github.com:facebook/watchman.git
+Link: https://facebook.github.io/watchman/
+-----------
+file-entry-cache
+License: MIT
+License File: node_modules/file-entry-cache/LICENSE
+Copyright: Copyright (c) Roy Riojas & Jared Wray
+Source: jaredwray/file-entry-cache
+Link: jaredwray/file-entry-cache
+-----------
+fill-range
+License: MIT
+License File: node_modules/fill-range/LICENSE
+Copyright: Copyright (c) 2014-present, Jon Schlinkert.
+Source: jonschlinkert/fill-range
+Link: https://github.com/jonschlinkert/fill-range
+-----------
+find-up
+License: MIT
+License File: node_modules/find-up/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: sindresorhus/find-up
+Link: sindresorhus/find-up
+-----------
+flat-cache
+License: MIT
+License File: node_modules/flat-cache/LICENSE
+Copyright: Copyright (c) Roy Riojas and Jared Wray
+Source: jaredwray/flat-cache
+Link: jaredwray/flat-cache
+-----------
+flatted
+License: ISC
+License File: node_modules/flatted/LICENSE
+Copyright: Copyright (c) 2018-2020, Andrea Giammarchi, @WebReflection
+Source: git+https://github.com/WebReflection/flatted.git
+Link: https://github.com/WebReflection/flatted#readme
+-----------
+for-each
+License: MIT
+License File: node_modules/for-each/LICENSE
+Copyright: Copyright (c) 2012 Raynos.
+Source: https://github.com/Raynos/for-each.git
+Link: https://github.com/Raynos/for-each
+-----------
+foreground-child
+License: ISC
+License File: node_modules/foreground-child/LICENSE
+Copyright: Copyright (c) 2015-2023 Isaac Z. Schlueter and Contributors
+Source: git+https://github.com/tapjs/foreground-child.git
+Link: git+https://github.com/tapjs/foreground-child.git
+-----------
+fs.realpath
+License: ISC
+License File: node_modules/fs.realpath/LICENSE
+Copyright: Copyright (c) Isaac Z. Schlueter and Contributors
+Source: git+https://github.com/isaacs/fs.realpath.git
+Link: git+https://github.com/isaacs/fs.realpath.git
+-----------
+function-bind
+License: MIT
+License File: node_modules/function-bind/LICENSE
+Copyright: Copyright (c) 2013 Raynos.
+Source: https://github.com/Raynos/function-bind.git
+Link: https://github.com/Raynos/function-bind
+-----------
+function.prototype.name
+License: MIT
+License File: node_modules/function.prototype.name/LICENSE
+Copyright: Copyright (c) 2016 Jordan Harband
+Source: git://github.com/es-shims/Function.prototype.name.git
+Link: git://github.com/es-shims/Function.prototype.name.git
+-----------
+functions-have-names
+License: MIT
+License File: node_modules/functions-have-names/LICENSE
+Copyright: Copyright (c) 2019 Jordan Harband
+Source: git+https://github.com/inspect-js/functions-have-names.git
+Link: https://github.com/inspect-js/functions-have-names#readme
+-----------
+gensync
+License: MIT
+License File: node_modules/gensync/LICENSE
+Copyright: Copyright 2018 Logan Smyth <***********@*****.***>
+Source: https://github.com/loganfsmyth/gensync.git
+Link: https://github.com/loganfsmyth/gensync
+-----------
+get-caller-file
+License: ISC
+License File: node_modules/get-caller-file/LICENSE.md
+Copyright: Copyright 2018 Stefan Penner
+Source: git+https://github.com/stefanpenner/get-caller-file.git
+Link: https://github.com/stefanpenner/get-caller-file#readme
+-----------
+get-intrinsic
+License: MIT
+License File: node_modules/get-intrinsic/LICENSE
+Copyright: Copyright (c) 2020 Jordan Harband
+Source: git+https://github.com/ljharb/get-intrinsic.git
+Link: https://github.com/ljharb/get-intrinsic#readme
+-----------
+get-package-type
+License: MIT
+License File: node_modules/get-package-type/LICENSE
+Copyright: Copyright (c) 2020 CFWare, LLC
+Source: git+https://github.com/cfware/get-package-type.git
+Link: https://github.com/cfware/get-package-type#readme
+-----------
+get-proto
+License: MIT
+License File: node_modules/get-proto/LICENSE
+Copyright: Copyright (c) 2025 Jordan Harband
+Source: git+https://github.com/ljharb/get-proto.git
+Link: https://github.com/ljharb/get-proto#readme
+-----------
+get-stream
+License: MIT
+License File: node_modules/get-stream/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: sindresorhus/get-stream
+Link: sindresorhus/get-stream
+-----------
+get-symbol-description
+License: MIT
+License File: node_modules/get-symbol-description/LICENSE
+Copyright: Copyright (c) 2021 Inspect JS
+Source: git+https://github.com/inspect-js/get-symbol-description.git
+Link: https://github.com/inspect-js/get-symbol-description#readme
+-----------
+glob-parent
+License: ISC
+License File: node_modules/glob-parent/LICENSE
+Copyright: Copyright (c) 2015, 2019 Elan Shanker
+Source: gulpjs/glob-parent
+Link: gulpjs/glob-parent
+-----------
+glob
+License: ISC
+License File: node_modules/glob/LICENSE
+Copyright: Copyright (c) 2009-2023 Isaac Z. Schlueter and Contributors
+Source: git://github.com/isaacs/node-glob.git
+Link: git://github.com/isaacs/node-glob.git
+-----------
+globals
+License: MIT
+License File: node_modules/globals/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: sindresorhus/globals
+Link: sindresorhus/globals
+-----------
+globalthis
+License: MIT
+License File: node_modules/globalthis/LICENSE
+Copyright: Copyright (c) 2016 Jordan Harband
+Source: git://github.com/ljharb/System.global.git
+Link: git://github.com/ljharb/System.global.git
+-----------
+gopd
+License: MIT
+License File: node_modules/gopd/LICENSE
+Copyright: Copyright (c) 2022 Jordan Harband
+Source: git+https://github.com/ljharb/gopd.git
+Link: https://github.com/ljharb/gopd#readme
+-----------
+graceful-fs
+License: ISC
+License File: node_modules/graceful-fs/LICENSE
+Copyright: Copyright (c) 2011-2022 Isaac Z. Schlueter, Ben Noordhuis, and Contributors
+Source: https://github.com/isaacs/node-graceful-fs
+Link: https://github.com/isaacs/node-graceful-fs
+-----------
+handlebars
+License: MIT
+License File: node_modules/handlebars/LICENSE
+Copyright: Copyright (C) 2011-2019 by Yehuda Katz
+Source: https://github.com/handlebars-lang/handlebars.js.git
+Link: https://www.handlebarsjs.com/
+-----------
+has-bigints
+License: MIT
+License File: node_modules/has-bigints/LICENSE
+Copyright: Copyright (c) 2019 Jordan Harband
+Source: git+https://github.com/ljharb/has-bigints.git
+Link: https://github.com/ljharb/has-bigints#readme
+-----------
+has-flag
+License: MIT
+License File: node_modules/has-flag/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/has-flag
+Link: sindresorhus/has-flag
+-----------
+has-property-descriptors
+License: MIT
+License File: node_modules/has-property-descriptors/LICENSE
+Copyright: Copyright (c) 2022 Inspect JS
+Source: git+https://github.com/inspect-js/has-property-descriptors.git
+Link: https://github.com/inspect-js/has-property-descriptors#readme
+-----------
+has-proto
+License: MIT
+License File: node_modules/has-proto/LICENSE
+Copyright: Copyright (c) 2022 Inspect JS
+Source: git+https://github.com/inspect-js/has-proto.git
+Link: https://github.com/inspect-js/has-proto#readme
+-----------
+has-symbols
+License: MIT
+License File: node_modules/has-symbols/LICENSE
+Copyright: Copyright (c) 2016 Jordan Harband
+Source: git://github.com/inspect-js/has-symbols.git
+Link: https://github.com/ljharb/has-symbols#readme
+-----------
+has-tostringtag
+License: MIT
+License File: node_modules/has-tostringtag/LICENSE
+Copyright: Copyright (c) 2021 Inspect JS
+Source: git+https://github.com/inspect-js/has-tostringtag.git
+Link: https://github.com/inspect-js/has-tostringtag#readme
+-----------
+hasown
+License: MIT
+License File: node_modules/hasown/LICENSE
+Copyright: Copyright (c) Jordan Harband and contributors
+Source: git+https://github.com/inspect-js/hasOwn.git
+Link: https://github.com/inspect-js/hasOwn#readme
+-----------
+hosted-git-info
+License: ISC
+License File: node_modules/hosted-git-info/LICENSE
+Copyright: Copyright (c) 2015, Rebecca Turner
+Source: git+https://github.com/npm/hosted-git-info.git
+Link: https://github.com/npm/hosted-git-info
+-----------
+html-encoding-sniffer
+License: MIT
+License File: node_modules/html-encoding-sniffer/LICENSE.txt
+Source: jsdom/html-encoding-sniffer
+Link: jsdom/html-encoding-sniffer
+-----------
+html-escaper
+License: MIT
+License File: node_modules/html-escaper/LICENSE.txt
+Copyright: Copyright (C) 2017-present by Andrea Giammarchi - @WebReflection
+Source: https://github.com/WebReflection/html-escaper.git
+Link: https://github.com/WebReflection/html-escaper
+-----------
+http-proxy-agent
+License: MIT
+License File: node_modules/http-proxy-agent/LICENSE
+Copyright: Copyright (c) 2013 Nathan Rajlich <******@***********.***>
+Source: https://github.com/TooTallNate/proxy-agents.git
+Link: https://github.com/TooTallNate/proxy-agents.git
+-----------
+https-proxy-agent
+License: MIT
+License File: node_modules/https-proxy-agent/LICENSE
+Copyright: Copyright (c) 2013 Nathan Rajlich <******@***********.***>
+Source: https://github.com/TooTallNate/proxy-agents.git
+Link: https://github.com/TooTallNate/proxy-agents.git
+-----------
+human-signals
+License: Apache-2.0
+License File: node_modules/human-signals/LICENSE
+Copyright: Copyright 2019 ehmicky <*******@*****.***>
+Source: ehmicky/human-signals
+Link: https://git.io/JeluP
+-----------
+iconv-lite
+License: MIT
+License File: node_modules/iconv-lite/LICENSE
+Copyright: Copyright (c) 2011 Alexander Shtuchkin
+Source: git://github.com/ashtuchkin/iconv-lite.git
+Link: https://github.com/ashtuchkin/iconv-lite
+-----------
+idb-keyval
+License: Apache-2.0
+Source: git+https://github.com/jakearchibald/idb-keyval.git
+Link: https://github.com/jakearchibald/idb-keyval#readme
+-----------
+ignore
+License: MIT
+Source: git@github.com:kaelzhang/node-ignore.git
+Link: git@github.com:kaelzhang/node-ignore.git
+-----------
+immutable
+License: MIT
+License File: node_modules/immutable/LICENSE
+Copyright: Copyright (c) 2014-present, Lee Byron and other contributors.
+Source: git://github.com/immutable-js/immutable-js.git
+Link: https://immutable-js.com
+-----------
+import-fresh
+License: MIT
+License File: node_modules/import-fresh/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: sindresorhus/import-fresh
+Link: sindresorhus/import-fresh
+-----------
+import-local
+License: MIT
+License File: node_modules/import-local/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: sindresorhus/import-local
+Link: sindresorhus/import-local
+-----------
+imurmurhash
+License: MIT
+Source: https://github.com/jensyt/imurmurhash-js
+Link: https://github.com/jensyt/imurmurhash-js
+-----------
+inflight
+License: ISC
+License File: node_modules/inflight/LICENSE
+Copyright: Copyright (c) Isaac Z. Schlueter
+Source: https://github.com/npm/inflight.git
+Link: https://github.com/isaacs/inflight
+-----------
+inherits
+License: ISC
+License File: node_modules/inherits/LICENSE
+Copyright: Copyright (c) Isaac Z. Schlueter
+Source: git://github.com/isaacs/inherits
+Link: git://github.com/isaacs/inherits
+-----------
+internal-slot
+License: MIT
+License File: node_modules/internal-slot/LICENSE
+Copyright: Copyright (c) 2019 Jordan Harband
+Source: git+https://github.com/ljharb/internal-slot.git
+Link: https://github.com/ljharb/internal-slot#readme
+-----------
+is-array-buffer
+License: MIT
+License File: node_modules/is-array-buffer/LICENSE
+Copyright: Copyright (c) 2015 Chen Gengyuan, Inspect JS
+Source: git+https://github.com/inspect-js/is-array-buffer.git
+Link: https://github.com/inspect-js/is-array-buffer#readme
+-----------
+is-arrayish
+License: MIT
+License File: node_modules/is-arrayish/LICENSE
+Copyright: Copyright (c) 2015 JD Ballard
+Source: https://github.com/qix-/node-is-arrayish.git
+Link: https://github.com/qix-/node-is-arrayish.git
+-----------
+is-async-function
+License: MIT
+License File: node_modules/is-async-function/LICENSE
+Copyright: Copyright (c) 2021 Jordan Harband
+Source: git://github.com/inspect-js/is-async-function.git
+Link: git://github.com/inspect-js/is-async-function.git
+-----------
+is-bigint
+License: MIT
+License File: node_modules/is-bigint/LICENSE
+Copyright: Copyright (c) 2018 Jordan Harband
+Source: git+https://github.com/inspect-js/is-bigint.git
+Link: https://github.com/inspect-js/is-bigint#readme
+-----------
+is-binary-path
+License: MIT
+License File: node_modules/is-binary-path/license
+Copyright: Copyright (c) 2019 Sindre Sorhus <************@*****.***> (https://sindresorhus.com), Paul Miller (https://paulmillr.com)
+Source: sindresorhus/is-binary-path
+Link: sindresorhus/is-binary-path
+-----------
+is-boolean-object
+License: MIT
+License File: node_modules/is-boolean-object/LICENSE
+Copyright: Copyright (c) 2015 Jordan Harband
+Source: git://github.com/inspect-js/is-boolean-object.git
+Link: git://github.com/inspect-js/is-boolean-object.git
+-----------
+is-callable
+License: MIT
+License File: node_modules/is-callable/LICENSE
+Copyright: Copyright (c) 2015 Jordan Harband
+Source: git://github.com/inspect-js/is-callable.git
+Link: git://github.com/inspect-js/is-callable.git
+-----------
+is-core-module
+License: MIT
+License File: node_modules/is-core-module/LICENSE
+Copyright: Copyright (c) 2014 Dave Justice
+Source: git+https://github.com/inspect-js/is-core-module.git
+Link: https://github.com/inspect-js/is-core-module
+-----------
+is-data-view
+License: MIT
+License File: node_modules/is-data-view/LICENSE
+Copyright: Copyright (c) 2024 Inspect JS
+Source: git+https://github.com/inspect-js/is-data-view.git
+Link: https://github.com/inspect-js/is-data-view#readme
+-----------
+is-date-object
+License: MIT
+License File: node_modules/is-date-object/LICENSE
+Copyright: Copyright (c) 2015 Jordan Harband
+Source: git://github.com/inspect-js/is-date-object.git
+Link: git://github.com/inspect-js/is-date-object.git
+-----------
+is-extglob
+License: MIT
+License File: node_modules/is-extglob/LICENSE
+Copyright: Copyright (c) 2014-2016, Jon Schlinkert
+Source: jonschlinkert/is-extglob
+Link: https://github.com/jonschlinkert/is-extglob
+-----------
+is-finalizationregistry
+License: MIT
+License File: node_modules/is-finalizationregistry/LICENSE
+Copyright: Copyright (c) 2020 Inspect JS
+Source: git+https://github.com/inspect-js/is-finalizationregistry.git
+Link: https://github.com/inspect-js/is-finalizationregistry#readme
+-----------
+is-fullwidth-code-point
+License: MIT
+License File: node_modules/is-fullwidth-code-point/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/is-fullwidth-code-point
+Link: sindresorhus/is-fullwidth-code-point
+-----------
+is-generator-fn
+License: MIT
+License File: node_modules/is-generator-fn/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/is-generator-fn
+Link: sindresorhus/is-generator-fn
+-----------
+is-generator-function
+License: MIT
+License File: node_modules/is-generator-function/LICENSE
+Copyright: Copyright (c) 2014 Jordan Harband
+Source: git://github.com/inspect-js/is-generator-function.git
+Link: git://github.com/inspect-js/is-generator-function.git
+-----------
+is-glob
+License: MIT
+License File: node_modules/is-glob/LICENSE
+Copyright: Copyright (c) 2014-2017, Jon Schlinkert.
+Source: micromatch/is-glob
+Link: https://github.com/micromatch/is-glob
+-----------
+is-map
+License: MIT
+License File: node_modules/is-map/LICENSE
+Copyright: Copyright (c) 2019 Inspect JS
+Source: git+https://github.com/inspect-js/is-map.git
+Link: https://github.com/inspect-js/is-map#readme
+-----------
+is-negative-zero
+License: MIT
+License File: node_modules/is-negative-zero/LICENSE
+Copyright: Copyright (c) 2014 Jordan Harband
+Source: git://github.com/inspect-js/is-negative-zero.git
+Link: https://github.com/inspect-js/is-negative-zero
+-----------
+is-number-object
+License: MIT
+License File: node_modules/is-number-object/LICENSE
+Copyright: Copyright (c) 2015 Jordan Harband
+Source: git://github.com/inspect-js/is-number-object.git
+Link: https://github.com/inspect-js/is-number-object#readme
+-----------
+is-number
+License: MIT
+License File: node_modules/is-number/LICENSE
+Copyright: Copyright (c) 2014-present, Jon Schlinkert.
+Source: jonschlinkert/is-number
+Link: https://github.com/jonschlinkert/is-number
+-----------
+is-potential-custom-element-name
+License: MIT
+License File: node_modules/is-potential-custom-element-name/LICENSE-MIT.txt
+Source: https://github.com/mathiasbynens/is-potential-custom-element-name.git
+Link: https://github.com/mathiasbynens/is-potential-custom-element-name
+-----------
+is-regex
+License: MIT
+License File: node_modules/is-regex/LICENSE
+Copyright: Copyright (c) 2014 Jordan Harband
+Source: git://github.com/inspect-js/is-regex.git
+Link: https://github.com/inspect-js/is-regex
+-----------
+is-set
+License: MIT
+License File: node_modules/is-set/LICENSE
+Copyright: Copyright (c) 2019 Inspect JS
+Source: git+https://github.com/inspect-js/is-set.git
+Link: https://github.com/inspect-js/is-set#readme
+-----------
+is-shared-array-buffer
+License: MIT
+License File: node_modules/is-shared-array-buffer/LICENSE
+Copyright: Copyright (c) 2021 Inspect JS
+Source: git+https://github.com/inspect-js/is-shared-array-buffer.git
+Link: https://github.com/inspect-js/is-shared-array-buffer#readme
+-----------
+is-stream
+License: MIT
+License File: node_modules/is-stream/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: sindresorhus/is-stream
+Link: sindresorhus/is-stream
+-----------
+is-string
+License: MIT
+License File: node_modules/is-string/LICENSE
+Copyright: Copyright (c) 2015 Jordan Harband
+Source: git://github.com/inspect-js/is-string.git
+Link: git://github.com/inspect-js/is-string.git
+-----------
+is-symbol
+License: MIT
+License File: node_modules/is-symbol/LICENSE
+Copyright: Copyright (c) 2015 Jordan Harband
+Source: git://github.com/inspect-js/is-symbol.git
+Link: git://github.com/inspect-js/is-symbol.git
+-----------
+is-typed-array
+License: MIT
+License File: node_modules/is-typed-array/LICENSE
+Copyright: Copyright (c) 2015 Jordan Harband
+Source: git://github.com/inspect-js/is-typed-array.git
+Link: git://github.com/inspect-js/is-typed-array.git
+-----------
+is-weakmap
+License: MIT
+License File: node_modules/is-weakmap/LICENSE
+Copyright: Copyright (c) 2019 Inspect JS
+Source: git+https://github.com/inspect-js/is-weakmap.git
+Link: https://github.com/inspect-js/is-weakmap#readme
+-----------
+is-weakref
+License: MIT
+License File: node_modules/is-weakref/LICENSE
+Copyright: Copyright (c) 2020 Inspect JS
+Source: git+https://github.com/inspect-js/is-weakref.git
+Link: https://github.com/inspect-js/is-weakref#readme
+-----------
+is-weakset
+License: MIT
+License File: node_modules/is-weakset/LICENSE
+Copyright: Copyright (c) 2019 Inspect JS
+Source: git+https://github.com/inspect-js/is-weakset.git
+Link: https://github.com/inspect-js/is-weakset#readme
+-----------
+isarray
+License: MIT
+License File: node_modules/isarray/LICENSE
+Copyright: Copyright (c) 2013 Julian Gruber <******@************.***>
+Source: git://github.com/juliangruber/isarray.git
+Link: https://github.com/juliangruber/isarray
+-----------
+isexe
+License: ISC
+License File: node_modules/isexe/LICENSE
+Copyright: Copyright (c) Isaac Z. Schlueter and Contributors
+Source: git+https://github.com/isaacs/isexe.git
+Link: https://github.com/isaacs/isexe#readme
+-----------
+istanbul-lib-coverage
+License: BSD-3-Clause
+License File: node_modules/istanbul-lib-coverage/LICENSE
+Copyright: Copyright 2012-2015 Yahoo! Inc.
+Source: git+ssh://git@github.com/istanbuljs/istanbuljs.git
+Link: https://istanbul.js.org/
+-----------
+istanbul-lib-instrument
+License: BSD-3-Clause
+License File: node_modules/istanbul-lib-instrument/LICENSE
+Copyright: Copyright 2012-2015 Yahoo! Inc.
+Source: git+ssh://git@github.com/istanbuljs/istanbuljs.git
+Link: https://istanbul.js.org/
+-----------
+istanbul-lib-report
+License: BSD-3-Clause
+License File: node_modules/istanbul-lib-report/LICENSE
+Copyright: Copyright 2012-2015 Yahoo! Inc.
+Source: git+ssh://git@github.com/istanbuljs/istanbuljs.git
+Link: https://istanbul.js.org/
+-----------
+istanbul-lib-source-maps
+License: BSD-3-Clause
+License File: node_modules/istanbul-lib-source-maps/LICENSE
+Copyright: Copyright 2015 Yahoo! Inc.
+Source: git+ssh://git@github.com/istanbuljs/istanbuljs.git
+Link: https://istanbul.js.org/
+-----------
+istanbul-reports
+License: BSD-3-Clause
+License File: node_modules/istanbul-reports/LICENSE
+Copyright: Copyright 2012-2015 Yahoo! Inc.
+Source: git+ssh://git@github.com/istanbuljs/istanbuljs.git
+Link: https://istanbul.js.org/
+-----------
+jackspeak
+License: BlueOak-1.0.0
+License File: node_modules/jackspeak/LICENSE.md
+Source: git+https://github.com/isaacs/jackspeak.git
+Link: git+https://github.com/isaacs/jackspeak.git
+-----------
+jest-changed-files
+License: MIT
+License File: node_modules/jest-changed-files/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-circus
+License: MIT
+License File: node_modules/jest-circus/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-cli
+License: MIT
+License File: node_modules/jest-cli/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://jestjs.io/
+-----------
+jest-config
+License: MIT
+License File: node_modules/jest-config/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-diff
+License: MIT
+License File: node_modules/jest-diff/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-docblock
+License: MIT
+License File: node_modules/jest-docblock/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-each
+License: MIT
+License File: node_modules/jest-each/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-environment-jsdom
+License: MIT
+License File: node_modules/jest-environment-jsdom/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-environment-node
+License: MIT
+License File: node_modules/jest-environment-node/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-haste-map
+License: MIT
+License File: node_modules/jest-haste-map/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-leak-detector
+License: MIT
+License File: node_modules/jest-leak-detector/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-matcher-utils
+License: MIT
+License File: node_modules/jest-matcher-utils/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-message-util
+License: MIT
+License File: node_modules/jest-message-util/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-mock
+License: MIT
+License File: node_modules/jest-mock/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-pnp-resolver
+License: MIT
+Source: https://github.com/arcanis/jest-pnp-resolver.git
+Link: https://github.com/arcanis/jest-pnp-resolver
+-----------
+jest-regex-util
+License: MIT
+License File: node_modules/jest-regex-util/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-resolve-dependencies
+License: MIT
+License File: node_modules/jest-resolve-dependencies/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-resolve
+License: MIT
+License File: node_modules/jest-resolve/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-runner
+License: MIT
+License File: node_modules/jest-runner/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-runtime
+License: MIT
+License File: node_modules/jest-runtime/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-snapshot
+License: MIT
+License File: node_modules/jest-snapshot/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-util
+License: MIT
+License File: node_modules/jest-util/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-validate
+License: MIT
+License File: node_modules/jest-validate/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest-watcher
+License: MIT
+License File: node_modules/jest-watcher/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://jestjs.io/
+-----------
+jest-worker
+License: MIT
+License File: node_modules/jest-worker/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+jest
+License: MIT
+License File: node_modules/jest/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://jestjs.io/
+-----------
+js-tokens
+License: MIT
+License File: node_modules/js-tokens/LICENSE
+Copyright: Copyright (c) 2014, 2015, 2016, 2017, 2018 Simon Lydell
+Source: lydell/js-tokens
+Link: lydell/js-tokens
+-----------
+js-yaml
+License: MIT
+License File: node_modules/js-yaml/LICENSE
+Copyright: Copyright (C) 2011-2015 by Vitaly Puzrin
+Source: nodeca/js-yaml
+Link: nodeca/js-yaml
+-----------
+jsdom
+License: MIT
+License File: node_modules/jsdom/LICENSE.txt
+Copyright: Copyright (c) 2010 Elijah Insua
+Source: git+https://github.com/jsdom/jsdom.git
+Link: git+https://github.com/jsdom/jsdom.git
+-----------
+jsesc
+License: MIT
+License File: node_modules/jsesc/LICENSE-MIT.txt
+Source: https://github.com/mathiasbynens/jsesc.git
+Link: https://mths.be/jsesc
+-----------
+json-buffer
+License: MIT
+License File: node_modules/json-buffer/LICENSE
+Copyright: Copyright (c) 2013 Dominic Tarr
+Source: git://github.com/dominictarr/json-buffer.git
+Link: https://github.com/dominictarr/json-buffer
+-----------
+json-parse-better-errors
+License: MIT
+License File: node_modules/json-parse-better-errors/LICENSE.md
+Copyright: Copyright 2017 Kat Marchán
+Source: https://github.com/zkat/json-parse-better-errors
+Link: https://github.com/zkat/json-parse-better-errors
+-----------
+json-parse-even-better-errors
+License: MIT
+License File: node_modules/json-parse-even-better-errors/LICENSE.md
+Copyright: Copyright 2017 Kat Marchán
+Copyright npm, Inc.
+Source: https://github.com/npm/json-parse-even-better-errors
+Link: https://github.com/npm/json-parse-even-better-errors
+-----------
+json-schema-traverse
+License: MIT
+License File: node_modules/json-schema-traverse/LICENSE
+Copyright: Copyright (c) 2017 Evgeny Poberezkin
+Source: git+https://github.com/epoberezkin/json-schema-traverse.git
+Link: https://github.com/epoberezkin/json-schema-traverse#readme
+-----------
+json-stable-stringify-without-jsonify
+License: MIT
+License File: node_modules/json-stable-stringify-without-jsonify/LICENSE
+Source: git://github.com/samn/json-stable-stringify.git
+Link: https://github.com/samn/json-stable-stringify
+-----------
+json5
+License: MIT
+License File: node_modules/json5/LICENSE.md
+Copyright: Copyright (c) 2012-2018 Aseem Kishore, and [others].
+Source: git+https://github.com/json5/json5.git
+Link: http://json5.org/
+-----------
+keyv
+License: MIT
+Source: git+https://github.com/jaredwray/keyv.git
+Link: https://github.com/jaredwray/keyv
+-----------
+leven
+License: MIT
+License File: node_modules/leven/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/leven
+Link: sindresorhus/leven
+-----------
+levn
+License: MIT
+License File: node_modules/levn/LICENSE
+Copyright: Copyright (c) George Zahariev
+Source: git://github.com/gkz/levn.git
+Link: https://github.com/gkz/levn
+-----------
+lines-and-columns
+License: MIT
+License File: node_modules/lines-and-columns/LICENSE
+Copyright: Copyright (c) 2015 Brian Donovan
+Source: https://github.com/eventualbuddha/lines-and-columns.git
+Link: https://github.com/eventualbuddha/lines-and-columns#readme
+-----------
+linkify-it
+License: MIT
+License File: node_modules/linkify-it/LICENSE
+Copyright: Copyright (c) 2015 Vitaly Puzrin.
+Source: markdown-it/linkify-it
+Link: markdown-it/linkify-it
+-----------
+load-json-file
+License: MIT
+License File: node_modules/load-json-file/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/load-json-file
+Link: sindresorhus/load-json-file
+-----------
+locate-path
+License: MIT
+License File: node_modules/locate-path/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: sindresorhus/locate-path
+Link: sindresorhus/locate-path
+-----------
+lodash.debounce
+License: MIT
+License File: node_modules/lodash.debounce/LICENSE
+Source: lodash/lodash
+Link: https://lodash.com/
+-----------
+lodash.memoize
+License: MIT
+License File: node_modules/lodash.memoize/LICENSE
+Source: lodash/lodash
+Link: https://lodash.com/
+-----------
+lodash.merge
+License: MIT
+License File: node_modules/lodash.merge/LICENSE
+Source: lodash/lodash
+Link: https://lodash.com/
+-----------
+lodash.throttle
+License: MIT
+License File: node_modules/lodash.throttle/LICENSE
+Source: lodash/lodash
+Link: https://lodash.com/
+-----------
+lru-cache
+License: ISC
+License File: node_modules/lru-cache/LICENSE
+Copyright: Copyright (c) Isaac Z. Schlueter and Contributors
+Source: git://github.com/isaacs/node-lru-cache.git
+Link: git://github.com/isaacs/node-lru-cache.git
+-----------
+make-dir
+License: MIT
+License File: node_modules/make-dir/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: sindresorhus/make-dir
+Link: sindresorhus/make-dir
+-----------
+make-error
+License: ISC
+License File: node_modules/make-error/LICENSE
+Copyright: Copyright 2014 Julien Fontanet
+Source: git://github.com/JsCommunity/make-error.git
+Link: https://github.com/JsCommunity/make-error
+-----------
+makeerror
+License: BSD-3-Clause
+License File: node_modules/makeerror/license
+Copyright: Copyright (c) 2014, Naitik Shah. All rights reserved.
+Source: https://github.com/daaku/nodejs-makeerror
+Link: https://github.com/daaku/nodejs-makeerror
+-----------
+markdown-it-task-lists
+License: ISC
+License File: node_modules/markdown-it-task-lists/LICENSE
+Copyright: Copyright (c) 2016, Revin Guillen
+Source: git@github.com:revin/markdown-it-task-lists.git
+Link: https://github.com/revin/markdown-it-task-lists#readme
+-----------
+markdown-it
+License: MIT
+License File: node_modules/markdown-it/LICENSE
+Copyright: Copyright (c) 2014 Vitaly Puzrin, Alex Kocharin.
+Source: markdown-it/markdown-it
+Link: markdown-it/markdown-it
+-----------
+math-intrinsics
+License: MIT
+License File: node_modules/math-intrinsics/LICENSE
+Copyright: Copyright (c) 2024 ECMAScript Shims
+Source: git+https://github.com/es-shims/math-intrinsics.git
+Link: https://github.com/es-shims/math-intrinsics#readme
+-----------
+mdurl
+License: MIT
+License File: node_modules/mdurl/LICENSE
+Copyright: Copyright (c) 2015 Vitaly Puzrin, Alex Kocharin.
+Source: markdown-it/mdurl
+Link: markdown-it/mdurl
+-----------
+memorystream
+License File: node_modules/memorystream/LICENSE
+Copyright: Copyright (C) 2011 Dmitry Nizovtsev
+Source: https://github.com/JSBizon/node-memorystream.git
+Link: https://github.com/JSBizon/node-memorystream
+-----------
+merge-stream
+License: MIT
+License File: node_modules/merge-stream/LICENSE
+Copyright: Copyright (c) Stephen Sugden <**@*************.***> (stephensugden.com)
+Source: grncdr/merge-stream
+Link: grncdr/merge-stream
+-----------
+micromatch
+License: MIT
+License File: node_modules/micromatch/LICENSE
+Copyright: Copyright (c) 2014-present, Jon Schlinkert.
+Source: micromatch/micromatch
+Link: https://github.com/micromatch/micromatch
+-----------
+mimic-fn
+License: MIT
+License File: node_modules/mimic-fn/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/mimic-fn
+Link: sindresorhus/mimic-fn
+-----------
+minimatch
+License: ISC
+License File: node_modules/minimatch/LICENSE
+Copyright: Copyright (c) Isaac Z. Schlueter and Contributors
+Source: git://github.com/isaacs/minimatch.git
+Link: git://github.com/isaacs/minimatch.git
+-----------
+minimist
+License: MIT
+License File: node_modules/minimist/LICENSE
+Source: git://github.com/minimistjs/minimist.git
+Link: https://github.com/minimistjs/minimist
+-----------
+minipass
+License: ISC
+License File: node_modules/minipass/LICENSE
+Copyright: Copyright (c) 2017-2023 npm, Inc., Isaac Z. Schlueter, and Contributors
+Source: https://github.com/isaacs/minipass
+Link: https://github.com/isaacs/minipass
+-----------
+ms
+License: MIT
+License File: node_modules/ms/license.md
+Copyright: Copyright (c) 2020 Vercel, Inc.
+Source: vercel/ms
+Link: vercel/ms
+-----------
+napi-postinstall
+License: MIT
+License File: node_modules/napi-postinstall/LICENSE
+Copyright: Copyright (c) 2021-present UnTS
+Source: git+https://github.com/un-ts/napi-postinstall.git
+Link: git+https://github.com/un-ts/napi-postinstall.git
+-----------
+natural-compare
+License: MIT
+Source: git://github.com/litejs/natural-compare-lite.git
+Link: git://github.com/litejs/natural-compare-lite.git
+-----------
+neo-async
+License: MIT
+License File: node_modules/neo-async/LICENSE
+Copyright: Copyright (c) 2014-2018 Suguru Motegi
+Based on Async.js, Copyright Caolan McMahon
+Source: git@github.com:suguru03/neo-async.git
+Link: https://github.com/suguru03/neo-async
+-----------
+nice-try
+License: MIT
+License File: node_modules/nice-try/LICENSE
+Copyright: Copyright (c) 2018 Tobias Reich
+Source: https://github.com/electerious/nice-try.git
+Link: https://github.com/electerious/nice-try
+-----------
+node-addon-api
+License: MIT
+License File: node_modules/node-addon-api/LICENSE.md
+Copyright: Copyright (c) 2017 [Node.js API collaborators](https://github.com/nodejs/node-addon-api#collaborators)
+Source: git://github.com/nodejs/node-addon-api.git
+Link: https://github.com/nodejs/node-addon-api
+-----------
+node-int64
+License: MIT
+License File: node_modules/node-int64/LICENSE
+Copyright: Copyright (c) 2014 Robert Kieffer
+Source: https://github.com/broofa/node-int64
+Link: https://github.com/broofa/node-int64
+-----------
+node-releases
+License: MIT
+License File: node_modules/node-releases/LICENSE
+Copyright: Copyright (c) 2017 Sergey Rubanov (https://github.com/chicoxyzzy)
+Source: git+https://github.com/chicoxyzzy/node-releases.git
+Link: git+https://github.com/chicoxyzzy/node-releases.git
+-----------
+normalize-package-data
+License: BSD-2-Clause
+License File: node_modules/normalize-package-data/LICENSE
+Copyright: Copyright (c) Meryn Stol ("Author")
+All rights reserved.
+Source: git://github.com/npm/normalize-package-data.git
+Link: git://github.com/npm/normalize-package-data.git
+-----------
+normalize-path
+License: MIT
+License File: node_modules/normalize-path/LICENSE
+Copyright: Copyright (c) 2014-2018, Jon Schlinkert.
+Source: jonschlinkert/normalize-path
+Link: https://github.com/jonschlinkert/normalize-path
+-----------
+npm-run-all
+License: MIT
+License File: node_modules/npm-run-all/LICENSE
+Copyright: Copyright (c) 2015 Toru Nagashima
+Source: mysticatea/npm-run-all
+Link: https://github.com/mysticatea/npm-run-all
+-----------
+npm-run-path
+License: MIT
+License File: node_modules/npm-run-path/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/npm-run-path
+Link: sindresorhus/npm-run-path
+-----------
+nwsapi
+License: MIT
+License File: node_modules/nwsapi/LICENSE
+Copyright: Copyright (c) 2007-2025 Diego Perini (http://www.iport.it/)
+Source: git://github.com/dperini/nwsapi.git
+Link: https://javascript.nwbox.com/nwsapi/
+-----------
+object-inspect
+License: MIT
+License File: node_modules/object-inspect/LICENSE
+Copyright: Copyright (c) 2013 James Halliday
+Source: git://github.com/inspect-js/object-inspect.git
+Link: https://github.com/inspect-js/object-inspect
+-----------
+object-keys
+License: MIT
+License File: node_modules/object-keys/LICENSE
+Copyright: Copyright (C) 2013 Jordan Harband
+Source: git://github.com/ljharb/object-keys.git
+Link: git://github.com/ljharb/object-keys.git
+-----------
+object.assign
+License: MIT
+License File: node_modules/object.assign/LICENSE
+Copyright: Copyright (c) 2014 Jordan Harband
+Source: git://github.com/ljharb/object.assign.git
+Link: git://github.com/ljharb/object.assign.git
+-----------
+object.fromentries
+License: MIT
+License File: node_modules/object.fromentries/LICENSE
+Copyright: Copyright (c) 2018 Jordan Harband
+Source: git://github.com/es-shims/Object.fromEntries.git
+Link: git://github.com/es-shims/Object.fromEntries.git
+-----------
+object.groupby
+License: MIT
+License File: node_modules/object.groupby/LICENSE
+Copyright: Copyright (c) 2023 ECMAScript Shims
+Source: git+https://github.com/es-shims/Object.groupBy.git
+Link: https://github.com/es-shims/Object.groupBy#readme
+-----------
+object.values
+License: MIT
+License File: node_modules/object.values/LICENSE
+Copyright: Copyright (c) 2015 Jordan Harband
+Source: git://github.com/es-shims/Object.values.git
+Link: git://github.com/es-shims/Object.values.git
+-----------
+once
+License: ISC
+License File: node_modules/once/LICENSE
+Copyright: Copyright (c) Isaac Z. Schlueter and Contributors
+Source: git://github.com/isaacs/once
+Link: git://github.com/isaacs/once
+-----------
+onetime
+License: MIT
+License File: node_modules/onetime/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: sindresorhus/onetime
+Link: sindresorhus/onetime
+-----------
+optionator
+License: MIT
+License File: node_modules/optionator/LICENSE
+Copyright: Copyright (c) George Zahariev
+Source: git://github.com/gkz/optionator.git
+Link: https://github.com/gkz/optionator
+-----------
+own-keys
+License: MIT
+License File: node_modules/own-keys/LICENSE
+Copyright: Copyright (c) 2024 Jordan Harband
+Source: git+https://github.com/ljharb/own-keys.git
+Link: https://github.com/ljharb/own-keys#readme
+-----------
+p-limit
+License: MIT
+License File: node_modules/p-limit/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: sindresorhus/p-limit
+Link: sindresorhus/p-limit
+-----------
+p-locate
+License: MIT
+License File: node_modules/p-locate/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: sindresorhus/p-locate
+Link: sindresorhus/p-locate
+-----------
+p-try
+License: MIT
+License File: node_modules/p-try/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/p-try
+Link: sindresorhus/p-try
+-----------
+package-json-from-dist
+License: BlueOak-1.0.0
+License File: node_modules/package-json-from-dist/LICENSE.md
+Source: git+https://github.com/isaacs/package-json-from-dist.git
+Link: git+https://github.com/isaacs/package-json-from-dist.git
+-----------
+parent-module
+License: MIT
+License File: node_modules/parent-module/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/parent-module
+Link: sindresorhus/parent-module
+-----------
+parse-json
+License: MIT
+License File: node_modules/parse-json/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: sindresorhus/parse-json
+Link: sindresorhus/parse-json
+-----------
+parse5
+License: MIT
+License File: node_modules/parse5/LICENSE
+Copyright: Copyright (c) 2013-2019 Ivan Nikulin (******@*****.***, https://github.com/inikulin)
+Source: git://github.com/inikulin/parse5.git
+Link: https://parse5.js.org
+-----------
+path-exists
+License: MIT
+License File: node_modules/path-exists/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/path-exists
+Link: sindresorhus/path-exists
+-----------
+path-is-absolute
+License: MIT
+License File: node_modules/path-is-absolute/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/path-is-absolute
+Link: sindresorhus/path-is-absolute
+-----------
+path-key
+License: MIT
+License File: node_modules/path-key/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/path-key
+Link: sindresorhus/path-key
+-----------
+path-parse
+License: MIT
+License File: node_modules/path-parse/LICENSE
+Copyright: Copyright (c) 2015 Javier Blanco
+Source: https://github.com/jbgutierrez/path-parse.git
+Link: https://github.com/jbgutierrez/path-parse#readme
+-----------
+path-scurry
+License: BlueOak-1.0.0
+License File: node_modules/path-scurry/LICENSE.md
+Source: git+https://github.com/isaacs/path-scurry
+Link: git+https://github.com/isaacs/path-scurry
+-----------
+path-type
+License: MIT
+License File: node_modules/path-type/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/path-type
+Link: sindresorhus/path-type
+-----------
+picocolors
+License: ISC
+License File: node_modules/picocolors/LICENSE
+Copyright: Copyright (c) 2021-2024 Oleksii Raspopov, Kostiantyn Denysov, Anton Verinov
+Source: alexeyraspopov/picocolors
+Link: alexeyraspopov/picocolors
+-----------
+picomatch
+License: MIT
+License File: node_modules/picomatch/LICENSE
+Copyright: Copyright (c) 2017-present, Jon Schlinkert.
+Source: micromatch/picomatch
+Link: https://github.com/micromatch/picomatch
+-----------
+pidtree
+License: MIT
+License File: node_modules/pidtree/license
+Copyright: Copyright (c) 2018 Simone Primarosa
+Source: github:simonepri/pidtree
+Link: http://github.com/simonepri/pidtree#readme
+-----------
+pify
+License: MIT
+License File: node_modules/pify/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/pify
+Link: sindresorhus/pify
+-----------
+pirates
+License: MIT
+License File: node_modules/pirates/LICENSE
+Copyright: Copyright (c) 2016-2018 Ari Porad
+Source: https://github.com/danez/pirates.git
+Link: https://github.com/danez/pirates#readme
+-----------
+pkg-dir
+License: MIT
+License File: node_modules/pkg-dir/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/pkg-dir
+Link: sindresorhus/pkg-dir
+-----------
+possible-typed-array-names
+License: MIT
+License File: node_modules/possible-typed-array-names/LICENSE
+Copyright: Copyright (c) 2024 Jordan Harband
+Source: git+https://github.com/ljharb/possible-typed-array-names.git
+Link: https://github.com/ljharb/possible-typed-array-names#readme
+-----------
+prelude-ls
+License: MIT
+License File: node_modules/prelude-ls/LICENSE
+Copyright: Copyright (c) George Zahariev
+Source: git://github.com/gkz/prelude-ls.git
+Link: http://preludels.com
+-----------
+pretty-format
+License: MIT
+License File: node_modules/pretty-format/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+punycode.js
+License: MIT
+License File: node_modules/punycode.js/LICENSE-MIT.txt
+Source: https://github.com/mathiasbynens/punycode.js.git
+Link: https://mths.be/punycode
+-----------
+punycode
+License: MIT
+License File: node_modules/punycode/LICENSE-MIT.txt
+Source: https://github.com/mathiasbynens/punycode.js.git
+Link: https://mths.be/punycode
+-----------
+pure-rand
+License: MIT
+License File: node_modules/pure-rand/LICENSE
+Copyright: Copyright (c) 2018 Nicolas DUBIEN
+Source: git+https://github.com/dubzzz/pure-rand.git
+Link: https://github.com/dubzzz/pure-rand#readme
+-----------
+react-is
+License: MIT
+License File: node_modules/react-is/LICENSE
+Copyright: Copyright (c) Facebook, Inc. and its affiliates.
+Source: https://github.com/facebook/react.git
+Link: https://reactjs.org/
+-----------
+read-pkg
+License: MIT
+License File: node_modules/read-pkg/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/read-pkg
+Link: sindresorhus/read-pkg
+-----------
+readdirp
+License: MIT
+License File: node_modules/readdirp/LICENSE
+Copyright: Copyright (c) 2012-2019 Thorsten Lorenz, Paul Miller (https://paulmillr.com)
+Source: git://github.com/paulmillr/readdirp.git
+Link: https://github.com/paulmillr/readdirp
+-----------
+reflect.getprototypeof
+License: MIT
+License File: node_modules/reflect.getprototypeof/LICENSE
+Copyright: Copyright (c) 2021 ECMAScript Shims
+Source: git+https://github.com/es-shims/Reflect.getPrototypeOf.git
+Link: https://github.com/es-shims/Reflect.getPrototypeOf
+-----------
+regexp.prototype.flags
+License: MIT
+License File: node_modules/regexp.prototype.flags/LICENSE
+Copyright: Copyright (C) 2014 Jordan Harband
+Source: git://github.com/es-shims/RegExp.prototype.flags.git
+Link: git://github.com/es-shims/RegExp.prototype.flags.git
+-----------
+require-directory
+License: MIT
+License File: node_modules/require-directory/LICENSE
+Copyright: Copyright (c) 2011 Troy Goode <*********@*****.***>
+Source: git://github.com/troygoode/node-require-directory.git
+Link: https://github.com/troygoode/node-require-directory/
+-----------
+require-main-filename
+License: ISC
+License File: node_modules/require-main-filename/LICENSE.txt
+Copyright: Copyright (c) 2016, Contributors
+Source: git+ssh://git@github.com/yargs/require-main-filename.git
+Link: https://github.com/yargs/require-main-filename#readme
+-----------
+resolve-cwd
+License: MIT
+License File: node_modules/resolve-cwd/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/resolve-cwd
+Link: sindresorhus/resolve-cwd
+-----------
+resolve-from
+License: MIT
+License File: node_modules/resolve-from/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/resolve-from
+Link: sindresorhus/resolve-from
+-----------
+resolve
+License: MIT
+License File: node_modules/resolve/LICENSE
+Copyright: Copyright (c) 2012 James Halliday
+Source: git://github.com/browserify/resolve.git
+Link: git://github.com/browserify/resolve.git
+-----------
+rrweb-cssom
+License: MIT
+License File: node_modules/rrweb-cssom/LICENSE.txt
+Copyright: Copyright (c) Nikita Vasilyev
+Source: rrweb-io/CSSOM
+Link: rrweb-io/CSSOM
+-----------
+safe-array-concat
+License: MIT
+License File: node_modules/safe-array-concat/LICENSE
+Copyright: Copyright (c) 2023 Jordan Harband
+Source: git+https://github.com/ljharb/safe-array-concat.git
+Link: https://github.com/ljharb/safe-array-concat#readme
+-----------
+safe-push-apply
+License: MIT
+License File: node_modules/safe-push-apply/LICENSE
+Copyright: Copyright (c) 2024 Jordan Harband
+Source: git+https://github.com/ljharb/safe-push-apply.git
+Link: https://github.com/ljharb/safe-push-apply#readme
+-----------
+safe-regex-test
+License: MIT
+License File: node_modules/safe-regex-test/LICENSE
+Copyright: Copyright (c) 2022 Jordan Harband
+Source: git+https://github.com/ljharb/safe-regex-test.git
+Link: https://github.com/ljharb/safe-regex-test#readme
+-----------
+safer-buffer
+License: MIT
+License File: node_modules/safer-buffer/LICENSE
+Copyright: Copyright (c) 2018 Nikita Skovoroda <********@*****.***>
+Source: git+https://github.com/ChALkeR/safer-buffer.git
+Link: git+https://github.com/ChALkeR/safer-buffer.git
+-----------
+sass
+License: MIT
+License File: node_modules/sass/LICENSE
+Copyright: Copyright (c) 2016, Google Inc.
+Source: https://github.com/sass/dart-sass
+Link: https://github.com/sass/dart-sass
+-----------
+saxes
+License: ISC
+Source: https://github.com/lddubeau/saxes.git
+Link: https://github.com/lddubeau/saxes.git
+-----------
+semver
+License: ISC
+License File: node_modules/semver/LICENSE
+Copyright: Copyright (c) Isaac Z. Schlueter and Contributors
+Source: https://github.com/npm/node-semver.git
+Link: https://github.com/npm/node-semver.git
+-----------
+set-blocking
+License: ISC
+License File: node_modules/set-blocking/LICENSE.txt
+Copyright: Copyright (c) 2016, Contributors
+Source: git+https://github.com/yargs/set-blocking.git
+Link: https://github.com/yargs/set-blocking#readme
+-----------
+set-function-length
+License: MIT
+License File: node_modules/set-function-length/LICENSE
+Copyright: Copyright (c) Jordan Harband and contributors
+Source: git+https://github.com/ljharb/set-function-length.git
+Link: https://github.com/ljharb/set-function-length#readme
+-----------
+set-function-name
+License: MIT
+License File: node_modules/set-function-name/LICENSE
+Copyright: Copyright (c) Jordan Harband and contributors
+Source: git+https://github.com/ljharb/set-function-name.git
+Link: https://github.com/ljharb/set-function-name#readme
+-----------
+set-proto
+License: MIT
+License File: node_modules/set-proto/LICENSE
+Copyright: Copyright (c) 2024 Jordan Harband
+Source: git+https://github.com/ljharb/set-proto.git
+Link: https://github.com/ljharb/set-proto#readme
+-----------
+shebang-command
+License: MIT
+License File: node_modules/shebang-command/license
+Copyright: Copyright (c) Kevin Mårtensson <***************@*****.***> (github.com/kevva)
+Source: kevva/shebang-command
+Link: kevva/shebang-command
+-----------
+shebang-regex
+License: MIT
+License File: node_modules/shebang-regex/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/shebang-regex
+Link: sindresorhus/shebang-regex
+-----------
+shell-quote
+License: MIT
+License File: node_modules/shell-quote/LICENSE
+Copyright: Copyright (c) 2013 James Halliday (****@********.***)
+Source: http://github.com/ljharb/shell-quote.git
+Link: https://github.com/ljharb/shell-quote
+-----------
+side-channel-list
+License: MIT
+License File: node_modules/side-channel-list/LICENSE
+Copyright: Copyright (c) 2024 Jordan Harband
+Source: git+https://github.com/ljharb/side-channel-list.git
+Link: https://github.com/ljharb/side-channel-list#readme
+-----------
+side-channel-map
+License: MIT
+License File: node_modules/side-channel-map/LICENSE
+Copyright: Copyright (c) 2024 Jordan Harband
+Source: git+https://github.com/ljharb/side-channel-map.git
+Link: https://github.com/ljharb/side-channel-map#readme
+-----------
+side-channel-weakmap
+License: MIT
+License File: node_modules/side-channel-weakmap/LICENSE
+Copyright: Copyright (c) 2019 Jordan Harband
+Source: git+https://github.com/ljharb/side-channel-weakmap.git
+Link: https://github.com/ljharb/side-channel-weakmap#readme
+-----------
+side-channel
+License: MIT
+License File: node_modules/side-channel/LICENSE
+Copyright: Copyright (c) 2019 Jordan Harband
+Source: git+https://github.com/ljharb/side-channel.git
+Link: https://github.com/ljharb/side-channel#readme
+-----------
+signal-exit
+License: ISC
+License File: node_modules/signal-exit/LICENSE.txt
+Copyright: Copyright (c) 2015-2023 Benjamin Coe, Isaac Z. Schlueter, and Contributors
+Source: https://github.com/tapjs/signal-exit.git
+Link: https://github.com/tapjs/signal-exit.git
+-----------
+slash
+License: MIT
+License File: node_modules/slash/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/slash
+Link: sindresorhus/slash
+-----------
+snabbdom
+License: MIT
+License File: node_modules/snabbdom/LICENSE
+Copyright: Copyright (c) 2015 Simon Friis Vindum
+Source: git+https://github.com/snabbdom/snabbdom.git
+Link: https://github.com/snabbdom/snabbdom#readme
+-----------
+sortablejs
+License: MIT
+License File: node_modules/sortablejs/LICENSE
+Source: git://github.com/SortableJS/Sortable.git
+Link: git://github.com/SortableJS/Sortable.git
+-----------
+source-map-js
+License: BSD-3-Clause
+License File: node_modules/source-map-js/LICENSE
+Copyright: Copyright (c) 2009-2011, Mozilla Foundation and contributors
+All rights reserved.
+Source: 7rulnik/source-map-js
+Link: https://github.com/7rulnik/source-map-js
+-----------
+source-map-support
+License: MIT
+License File: node_modules/source-map-support/LICENSE.md
+Copyright: Copyright (c) 2014 Evan Wallace
+Source: https://github.com/evanw/node-source-map-support
+Link: https://github.com/evanw/node-source-map-support
+-----------
+source-map
+License: BSD-3-Clause
+License File: node_modules/source-map/LICENSE
+Copyright: Copyright (c) 2009-2011, Mozilla Foundation and contributors
+All rights reserved.
+Source: http://github.com/mozilla/source-map.git
+Link: https://github.com/mozilla/source-map
+-----------
+spdx-correct
+License: Apache-2.0
+License File: node_modules/spdx-correct/LICENSE
+Source: jslicense/spdx-correct.js
+Link: jslicense/spdx-correct.js
+-----------
+spdx-exceptions
+License: CC-BY-3.0
+Source: kemitchell/spdx-exceptions.json
+Link: kemitchell/spdx-exceptions.json
+-----------
+spdx-expression-parse
+License: MIT
+License File: node_modules/spdx-expression-parse/LICENSE
+Copyright: Copyright (c) 2015 Kyle E. Mitchell & other authors listed in AUTHORS
+Source: jslicense/spdx-expression-parse.js
+Link: jslicense/spdx-expression-parse.js
+-----------
+spdx-license-ids
+License: CC0-1.0
+Source: jslicense/spdx-license-ids
+Link: jslicense/spdx-license-ids
+-----------
+sprintf-js
+License: BSD-3-Clause
+License File: node_modules/sprintf-js/LICENSE
+Copyright: Copyright (c) 2007-2014, Alexandru Marasteanu
+All rights reserved.
+Source: https://github.com/alexei/sprintf.js.git
+Link: https://github.com/alexei/sprintf.js.git
+-----------
+stack-utils
+License: MIT
+License File: node_modules/stack-utils/LICENSE.md
+Copyright: Copyright (c) 2016-2022 Isaac Z. Schlueter <*@***.**>, James Talmage <*****@*******.**> (github.com/jamestalmage), and Contributors
+Source: tapjs/stack-utils
+Link: tapjs/stack-utils
+-----------
+stop-iteration-iterator
+License: MIT
+License File: node_modules/stop-iteration-iterator/LICENSE
+Copyright: Copyright (c) 2023 Jordan Harband
+Source: git+https://github.com/ljharb/stop-iteration-iterator.git
+Link: https://github.com/ljharb/stop-iteration-iterator#readme
+-----------
+string-length
+License: MIT
+License File: node_modules/string-length/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: sindresorhus/string-length
+Link: sindresorhus/string-length
+-----------
+string-width
+License: MIT
+License File: node_modules/string-width-cjs/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/string-width
+Link: sindresorhus/string-width
+-----------
+string-width
+License: MIT
+License File: node_modules/string-width/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/string-width
+Link: sindresorhus/string-width
+-----------
+string.prototype.padend
+License: MIT
+License File: node_modules/string.prototype.padend/LICENSE
+Copyright: Copyright (c) 2015 EcmaScript Shims
+Source: git://github.com/es-shims/String.prototype.padEnd.git
+Link: git://github.com/es-shims/String.prototype.padEnd.git
+-----------
+string.prototype.trim
+License: MIT
+License File: node_modules/string.prototype.trim/LICENSE
+Copyright: Copyright (c) 2015 Jordan Harband
+Source: git://github.com/es-shims/String.prototype.trim.git
+Link: git://github.com/es-shims/String.prototype.trim.git
+-----------
+string.prototype.trimend
+License: MIT
+License File: node_modules/string.prototype.trimend/LICENSE
+Copyright: Copyright (c) 2017 Khaled Al-Ansari
+Source: git://github.com/es-shims/String.prototype.trimEnd.git
+Link: git://github.com/es-shims/String.prototype.trimEnd.git
+-----------
+string.prototype.trimstart
+License: MIT
+License File: node_modules/string.prototype.trimstart/LICENSE
+Copyright: Copyright (c) 2017 Khaled Al-Ansari
+Source: git://github.com/es-shims/String.prototype.trimStart.git
+Link: git://github.com/es-shims/String.prototype.trimStart.git
+-----------
+strip-ansi
+License: MIT
+License File: node_modules/strip-ansi-cjs/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: chalk/strip-ansi
+Link: chalk/strip-ansi
+-----------
+strip-ansi
+License: MIT
+License File: node_modules/strip-ansi/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: chalk/strip-ansi
+Link: chalk/strip-ansi
+-----------
+strip-bom
+License: MIT
+License File: node_modules/strip-bom/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/strip-bom
+Link: sindresorhus/strip-bom
+-----------
+strip-final-newline
+License: MIT
+License File: node_modules/strip-final-newline/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/strip-final-newline
+Link: sindresorhus/strip-final-newline
+-----------
+strip-json-comments
+License: MIT
+License File: node_modules/strip-json-comments/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: sindresorhus/strip-json-comments
+Link: sindresorhus/strip-json-comments
+-----------
+style-mod
+License: MIT
+License File: node_modules/style-mod/LICENSE
+Copyright: Copyright (C) 2018 by Marijn Haverbeke <******@*********.******> and others
+Source: git+https://github.com/marijnh/style-mod.git
+Link: git+https://github.com/marijnh/style-mod.git
+-----------
+supports-color
+License: MIT
+License File: node_modules/supports-color/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: chalk/supports-color
+Link: chalk/supports-color
+-----------
+supports-preserve-symlinks-flag
+License: MIT
+License File: node_modules/supports-preserve-symlinks-flag/LICENSE
+Copyright: Copyright (c) 2022 Inspect JS
+Source: git+https://github.com/inspect-js/node-supports-preserve-symlinks-flag.git
+Link: https://github.com/inspect-js/node-supports-preserve-symlinks-flag#readme
+-----------
+symbol-tree
+License: MIT
+License File: node_modules/symbol-tree/LICENSE
+Copyright: Copyright (c) 2015 Joris van der Wel
+Source: https://github.com/jsdom/js-symbol-tree.git
+Link: https://github.com/jsdom/js-symbol-tree#symbol-tree
+-----------
+synckit
+License: MIT
+License File: node_modules/synckit/LICENSE
+Copyright: Copyright (c) 2021 UnTS
+Source: https://github.com/un-ts/synckit.git
+Link: https://github.com/un-ts/synckit.git
+-----------
+test-exclude
+License: ISC
+License File: node_modules/test-exclude/LICENSE.txt
+Copyright: Copyright (c) 2016, Contributors
+Source: git+https://github.com/istanbuljs/test-exclude.git
+Link: https://istanbul.js.org/
+-----------
+tldts-core
+License: MIT
+License File: node_modules/tldts-core/LICENSE
+Copyright: Copyright (c) 2017 Thomas Parisot, 2018 Rémi Berson
+Source: git+ssh://git@github.com/remusao/tldts.git
+Link: https://github.com/remusao/tldts#readme
+-----------
+tldts
+License: MIT
+License File: node_modules/tldts/LICENSE
+Copyright: Copyright (c) 2017 Thomas Parisot, 2018 Rémi Berson
+Source: git+ssh://git@github.com/remusao/tldts.git
+Link: https://github.com/remusao/tldts#readme
+-----------
+tmpl
+License: BSD-3-Clause
+License File: node_modules/tmpl/license
+Copyright: Copyright (c) 2014, Naitik Shah. All rights reserved.
+Source: https://github.com/daaku/nodejs-tmpl
+Link: https://github.com/daaku/nodejs-tmpl
+-----------
+to-regex-range
+License: MIT
+License File: node_modules/to-regex-range/LICENSE
+Copyright: Copyright (c) 2015-present, Jon Schlinkert.
+Source: micromatch/to-regex-range
+Link: https://github.com/micromatch/to-regex-range
+-----------
+tough-cookie
+License: BSD-3-Clause
+License File: node_modules/tough-cookie/LICENSE
+Copyright: Copyright (c) 2015, Salesforce.com, Inc.
+Source: git://github.com/salesforce/tough-cookie.git
+Link: https://github.com/salesforce/tough-cookie
+-----------
+tr46
+License: MIT
+License File: node_modules/tr46/LICENSE.md
+Copyright: Copyright (c) Sebastian Mayr
+Source: https://github.com/jsdom/tr46
+Link: https://github.com/jsdom/tr46
+-----------
+ts-jest
+License: MIT
+License File: node_modules/ts-jest/LICENSE.md
+Copyright: Copyright (c) 2016-2025
+Source: git+https://github.com/kulshekhar/ts-jest.git
+Link: https://kulshekhar.github.io/ts-jest
+-----------
+ts-node
+License: MIT
+License File: node_modules/ts-node/LICENSE
+Copyright: Copyright (c) 2014 Blake Embrey (*****@***********.***)
+Source: git://github.com/TypeStrong/ts-node.git
+Link: https://typestrong.org/ts-node
+-----------
+tsconfig-paths
+License: MIT
+License File: node_modules/tsconfig-paths/LICENSE
+Copyright: Copyright (c) 2016 Jonas Kello
+Source: https://github.com/dividab/tsconfig-paths
+Link: https://github.com/dividab/tsconfig-paths
+-----------
+type-check
+License: MIT
+License File: node_modules/type-check/LICENSE
+Copyright: Copyright (c) George Zahariev
+Source: git://github.com/gkz/type-check.git
+Link: https://github.com/gkz/type-check
+-----------
+type-detect
+License: MIT
+License File: node_modules/type-detect/LICENSE
+Copyright: Copyright (c) 2013 Jake Luer <****@***************.***> (http://alogicalparadox.com)
+Source: git+ssh://git@github.com/chaijs/type-detect.git
+Link: git+ssh://git@github.com/chaijs/type-detect.git
+-----------
+type-fest
+License: (MIT OR CC0-1.0)
+License File: node_modules/type-fest/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https:/sindresorhus.com)
+Source: sindresorhus/type-fest
+Link: sindresorhus/type-fest
+-----------
+typed-array-buffer
+License: MIT
+License File: node_modules/typed-array-buffer/LICENSE
+Copyright: Copyright (c) 2023 Jordan Harband
+Source: git+https://github.com/inspect-js/typed-array-buffer.git
+Link: https://github.com/inspect-js/typed-array-buffer#readme
+-----------
+typed-array-byte-length
+License: MIT
+License File: node_modules/typed-array-byte-length/LICENSE
+Copyright: Copyright (c) 2020 Inspect JS
+Source: git+https://github.com/inspect-js/typed-array-byte-length.git
+Link: https://github.com/inspect-js/typed-array-byte-length#readme
+-----------
+typed-array-byte-offset
+License: MIT
+License File: node_modules/typed-array-byte-offset/LICENSE
+Copyright: Copyright (c) 2020 Inspect JS
+Source: git+https://github.com/inspect-js/typed-array-byte-offset.git
+Link: https://github.com/inspect-js/typed-array-byte-offset#readme
+-----------
+typed-array-length
+License: MIT
+License File: node_modules/typed-array-length/LICENSE
+Copyright: Copyright (c) 2020 Inspect JS
+Source: git+https://github.com/inspect-js/typed-array-length.git
+Link: https://github.com/inspect-js/typed-array-length#readme
+-----------
+typescript
+License: Apache-2.0
+License File: node_modules/typescript/LICENSE.txt
+Source: https://github.com/microsoft/TypeScript.git
+Link: https://www.typescriptlang.org/
+-----------
+uc.micro
+License: MIT
+License File: node_modules/uc.micro/LICENSE.txt
+Source: markdown-it/uc.micro
+Link: markdown-it/uc.micro
+-----------
+uglify-js
+License: BSD-2-Clause
+License File: node_modules/uglify-js/LICENSE
+Copyright: Copyright 2012-2024 (c) Mihai Bazon <*****.*****@*****.***>
+Source: mishoo/UglifyJS
+Link: mishoo/UglifyJS
+-----------
+unbox-primitive
+License: MIT
+License File: node_modules/unbox-primitive/LICENSE
+Copyright: Copyright (c) 2019 Jordan Harband
+Source: git+https://github.com/ljharb/unbox-primitive.git
+Link: https://github.com/ljharb/unbox-primitive#readme
+-----------
+undici-types
+License: MIT
+License File: node_modules/undici-types/LICENSE
+Copyright: Copyright (c) Matteo Collina and Undici contributors
+Source: git+https://github.com/nodejs/undici.git
+Link: https://undici.nodejs.org
+-----------
+unrs-resolver
+License: MIT
+Source: git+https://github.com/unrs/unrs-resolver.git
+Link: https://github.com/unrs/unrs-resolver#readme
+-----------
+update-browserslist-db
+License: MIT
+License File: node_modules/update-browserslist-db/LICENSE
+Copyright: Copyright 2022 Andrey Sitnik <******@******.**> and other contributors
+Source: browserslist/update-db
+Link: browserslist/update-db
+-----------
+uri-js
+License: BSD-2-Clause
+License File: node_modules/uri-js/LICENSE
+Copyright: Copyright 2011 Gary Court. All rights reserved.
+Source: http://github.com/garycourt/uri-js
+Link: https://github.com/garycourt/uri-js
+-----------
+v8-compile-cache-lib
+License: MIT
+License File: node_modules/v8-compile-cache-lib/LICENSE
+Copyright: Copyright (c) 2019 Andres Suarez
+Source: https://github.com/cspotcode/v8-compile-cache-lib.git
+Link: https://github.com/cspotcode/v8-compile-cache-lib.git
+-----------
+v8-to-istanbul
+License: ISC
+License File: node_modules/v8-to-istanbul/LICENSE.txt
+Copyright: Copyright (c) 2017, Contributors
+Source: istanbuljs/v8-to-istanbul
+Link: istanbuljs/v8-to-istanbul
+-----------
+validate-npm-package-license
+License: Apache-2.0
+License File: node_modules/validate-npm-package-license/LICENSE
+Source: kemitchell/validate-npm-package-license.js
+Link: kemitchell/validate-npm-package-license.js
+-----------
+w3c-keyname
+License: MIT
+License File: node_modules/w3c-keyname/LICENSE
+Copyright: Copyright (C) 2016 by Marijn Haverbeke <******@*********.******> and others
+Source: git+https://github.com/marijnh/w3c-keyname.git
+Link: https://github.com/marijnh/w3c-keyname#readme
+-----------
+w3c-xmlserializer
+License: MIT
+License File: node_modules/w3c-xmlserializer/LICENSE.md
+Source: jsdom/w3c-xmlserializer
+Link: jsdom/w3c-xmlserializer
+-----------
+walker
+License: Apache-2.0
+License File: node_modules/walker/LICENSE
+Copyright: Copyright 2013 Naitik Shah
+Source: https://github.com/daaku/nodejs-walker
+Link: https://github.com/daaku/nodejs-walker
+-----------
+webidl-conversions
+License: BSD-2-Clause
+License File: node_modules/webidl-conversions/LICENSE.md
+Copyright: Copyright (c) 2014, Domenic Denicola
+All rights reserved.
+Source: jsdom/webidl-conversions
+Link: jsdom/webidl-conversions
+-----------
+whatwg-encoding
+License: MIT
+License File: node_modules/whatwg-encoding/LICENSE.txt
+Source: jsdom/whatwg-encoding
+Link: jsdom/whatwg-encoding
+-----------
+whatwg-mimetype
+License: MIT
+License File: node_modules/whatwg-mimetype/LICENSE.txt
+Source: jsdom/whatwg-mimetype
+Link: jsdom/whatwg-mimetype
+-----------
+whatwg-url
+License: MIT
+License File: node_modules/whatwg-url/LICENSE.txt
+Copyright: Copyright (c) Sebastian Mayr
+Source: jsdom/whatwg-url
+Link: jsdom/whatwg-url
+-----------
+which-boxed-primitive
+License: MIT
+License File: node_modules/which-boxed-primitive/LICENSE
+Copyright: Copyright (c) 2019 Jordan Harband
+Source: git+https://github.com/inspect-js/which-boxed-primitive.git
+Link: https://github.com/inspect-js/which-boxed-primitive#readme
+-----------
+which-builtin-type
+License: MIT
+License File: node_modules/which-builtin-type/LICENSE
+Copyright: Copyright (c) 2020 ECMAScript Shims
+Source: git+https://github.com/inspect-js/which-builtin-type.git
+Link: https://github.com/inspect-js/which-builtin-type#readme
+-----------
+which-collection
+License: MIT
+License File: node_modules/which-collection/LICENSE
+Copyright: Copyright (c) 2019 Inspect JS
+Source: git+https://github.com/inspect-js/which-collection.git
+Link: https://github.com/inspect-js/which-collection#readme
+-----------
+which-module
+License: ISC
+License File: node_modules/which-module/LICENSE
+Copyright: Copyright (c) 2016, Contributors
+Source: git+https://github.com/nexdrew/which-module.git
+Link: https://github.com/nexdrew/which-module#readme
+-----------
+which-typed-array
+License: MIT
+License File: node_modules/which-typed-array/LICENSE
+Copyright: Copyright (c) 2015 Jordan Harband
+Source: git://github.com/inspect-js/which-typed-array.git
+Link: git://github.com/inspect-js/which-typed-array.git
+-----------
+which
+License: ISC
+License File: node_modules/which/LICENSE
+Copyright: Copyright (c) Isaac Z. Schlueter and Contributors
+Source: git://github.com/isaacs/node-which.git
+Link: git://github.com/isaacs/node-which.git
+-----------
+word-wrap
+License: MIT
+License File: node_modules/word-wrap/LICENSE
+Copyright: Copyright (c) 2014-2016, Jon Schlinkert
+Source: jonschlinkert/word-wrap
+Link: https://github.com/jonschlinkert/word-wrap
+-----------
+wordwrap
+License: MIT
+License File: node_modules/wordwrap/LICENSE
+Source: git://github.com/substack/node-wordwrap.git
+Link: git://github.com/substack/node-wordwrap.git
+-----------
+wrap-ansi
+License: MIT
+License File: node_modules/wrap-ansi-cjs/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: chalk/wrap-ansi
+Link: chalk/wrap-ansi
+-----------
+wrap-ansi
+License: MIT
+License File: node_modules/wrap-ansi/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: chalk/wrap-ansi
+Link: chalk/wrap-ansi
+-----------
+wrappy
+License: ISC
+License File: node_modules/wrappy/LICENSE
+Copyright: Copyright (c) Isaac Z. Schlueter and Contributors
+Source: https://github.com/npm/wrappy
+Link: https://github.com/npm/wrappy
+-----------
+write-file-atomic
+License: ISC
+License File: node_modules/write-file-atomic/LICENSE.md
+Copyright: Copyright (c) 2015, Rebecca Turner
+Source: https://github.com/npm/write-file-atomic.git
+Link: https://github.com/npm/write-file-atomic
+-----------
+ws
+License: MIT
+License File: node_modules/ws/LICENSE
+Copyright: Copyright (c) 2011 Einar Otto Stangvik <*******@*****.***>
+Copyright (c) 2013 Arnout Kazemier and contributors
+Copyright (c) 2016 Luigi Pinca and contributors
+Source: git+https://github.com/websockets/ws.git
+Link: https://github.com/websockets/ws
+-----------
+xml-name-validator
+License: Apache-2.0
+License File: node_modules/xml-name-validator/LICENSE.txt
+Source: jsdom/xml-name-validator
+Link: jsdom/xml-name-validator
+-----------
+xmlchars
+License: MIT
+License File: node_modules/xmlchars/LICENSE
+Source: https://github.com/lddubeau/xmlchars.git
+Link: https://github.com/lddubeau/xmlchars.git
+-----------
+y18n
+License: ISC
+License File: node_modules/y18n/LICENSE
+Copyright: Copyright (c) 2015, Contributors
+Source: git@github.com:yargs/y18n.git
+Link: https://github.com/yargs/y18n
+-----------
+yallist
+License: ISC
+License File: node_modules/yallist/LICENSE
+Copyright: Copyright (c) Isaac Z. Schlueter and Contributors
+Source: git+https://github.com/isaacs/yallist.git
+Link: git+https://github.com/isaacs/yallist.git
+-----------
+yargs-parser
+License: ISC
+License File: node_modules/yargs-parser/LICENSE.txt
+Copyright: Copyright (c) 2016, Contributors
+Source: https://github.com/yargs/yargs-parser.git
+Link: https://github.com/yargs/yargs-parser.git
+-----------
+yargs
+License: MIT
+License File: node_modules/yargs/LICENSE
+Copyright: Copyright 2010 James Halliday (****@********.***)
+Modified work Copyright 2014 Contributors (***@*****.***)
+Source: https://github.com/yargs/yargs.git
+Link: https://yargs.js.org/
+-----------
+yn
+License: MIT
+License File: node_modules/yn/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (sindresorhus.com)
+Source: sindresorhus/yn
+Link: sindresorhus/yn
+-----------
+yocto-queue
+License: MIT
+License File: node_modules/yocto-queue/license
+Copyright: Copyright (c) Sindre Sorhus <************@*****.***> (https://sindresorhus.com)
+Source: sindresorhus/yocto-queue
+Link: sindresorhus/yocto-queue
+-----------
+@ampproject/remapping
+License: Apache-2.0
+License File: node_modules/@ampproject/remapping/LICENSE
+Source: git+https://github.com/ampproject/remapping.git
+Link: git+https://github.com/ampproject/remapping.git
+-----------
+@asamuzakjp/css-color
+License: MIT
+License File: node_modules/@asamuzakjp/css-color/LICENSE
+Copyright: Copyright (c) 2024 asamuzaK (Kazz)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
+Source: git+https://github.com/asamuzaK/cssColor.git
+Link: https://github.com/asamuzaK/cssColor#readme
+-----------
+@babel/code-frame
+License: MIT
+License File: node_modules/@babel/code-frame/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://babel.dev/docs/en/next/babel-code-frame
+-----------
+@babel/compat-data
+License: MIT
+License File: node_modules/@babel/compat-data/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://github.com/babel/babel.git
+-----------
+@babel/core
+License: MIT
+License File: node_modules/@babel/core/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://babel.dev/docs/en/next/babel-core
+-----------
+@babel/generator
+License: MIT
+License File: node_modules/@babel/generator/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://babel.dev/docs/en/next/babel-generator
+-----------
+@babel/helper-compilation-targets
+License: MIT
+License File: node_modules/@babel/helper-compilation-targets/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://github.com/babel/babel.git
+-----------
+@babel/helper-globals
+License: MIT
+License File: node_modules/@babel/helper-globals/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://github.com/babel/babel.git
+-----------
+@babel/helper-module-imports
+License: MIT
+License File: node_modules/@babel/helper-module-imports/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://babel.dev/docs/en/next/babel-helper-module-imports
+-----------
+@babel/helper-module-transforms
+License: MIT
+License File: node_modules/@babel/helper-module-transforms/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://babel.dev/docs/en/next/babel-helper-module-transforms
+-----------
+@babel/helper-plugin-utils
+License: MIT
+License File: node_modules/@babel/helper-plugin-utils/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://babel.dev/docs/en/next/babel-helper-plugin-utils
+-----------
+@babel/helper-string-parser
+License: MIT
+License File: node_modules/@babel/helper-string-parser/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://babel.dev/docs/en/next/babel-helper-string-parser
+-----------
+@babel/helper-validator-identifier
+License: MIT
+License File: node_modules/@babel/helper-validator-identifier/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://github.com/babel/babel.git
+-----------
+@babel/helper-validator-option
+License: MIT
+License File: node_modules/@babel/helper-validator-option/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://github.com/babel/babel.git
+-----------
+@babel/helpers
+License: MIT
+License File: node_modules/@babel/helpers/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Copyright (c) 2014-present, Facebook, Inc. (ONLY ./src/helpers/regenerator* files)
+Source: https://github.com/babel/babel.git
+Link: https://babel.dev/docs/en/next/babel-helpers
+-----------
+@babel/parser
+License: MIT
+License File: node_modules/@babel/parser/LICENSE
+Copyright: Copyright (C) 2012-2014 by various contributors (see AUTHORS)
+Source: https://github.com/babel/babel.git
+Link: https://babel.dev/docs/en/next/babel-parser
+-----------
+@babel/plugin-syntax-async-generators
+License: MIT
+License File: node_modules/@babel/plugin-syntax-async-generators/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-async-generators
+Link: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-async-generators
+-----------
+@babel/plugin-syntax-bigint
+License: MIT
+License File: node_modules/@babel/plugin-syntax-bigint/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-bigint
+Link: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-bigint
+-----------
+@babel/plugin-syntax-class-properties
+License: MIT
+License File: node_modules/@babel/plugin-syntax-class-properties/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://babel.dev/docs/en/next/babel-plugin-syntax-class-properties
+-----------
+@babel/plugin-syntax-class-static-block
+License: MIT
+License File: node_modules/@babel/plugin-syntax-class-static-block/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://babel.dev/docs/en/next/babel-plugin-syntax-class-static-block
+-----------
+@babel/plugin-syntax-import-attributes
+License: MIT
+License File: node_modules/@babel/plugin-syntax-import-attributes/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://github.com/babel/babel.git
+-----------
+@babel/plugin-syntax-import-meta
+License: MIT
+License File: node_modules/@babel/plugin-syntax-import-meta/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://github.com/babel/babel.git
+-----------
+@babel/plugin-syntax-json-strings
+License: MIT
+License File: node_modules/@babel/plugin-syntax-json-strings/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-json-strings
+Link: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-json-strings
+-----------
+@babel/plugin-syntax-jsx
+License: MIT
+License File: node_modules/@babel/plugin-syntax-jsx/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://babel.dev/docs/en/next/babel-plugin-syntax-jsx
+-----------
+@babel/plugin-syntax-logical-assignment-operators
+License: MIT
+License File: node_modules/@babel/plugin-syntax-logical-assignment-operators/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://github.com/babel/babel.git
+-----------
+@babel/plugin-syntax-nullish-coalescing-operator
+License: MIT
+License File: node_modules/@babel/plugin-syntax-nullish-coalescing-operator/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-nullish-coalescing-operator
+Link: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-nullish-coalescing-operator
+-----------
+@babel/plugin-syntax-numeric-separator
+License: MIT
+License File: node_modules/@babel/plugin-syntax-numeric-separator/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://github.com/babel/babel.git
+-----------
+@babel/plugin-syntax-object-rest-spread
+License: MIT
+License File: node_modules/@babel/plugin-syntax-object-rest-spread/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-object-rest-spread
+Link: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-object-rest-spread
+-----------
+@babel/plugin-syntax-optional-catch-binding
+License: MIT
+License File: node_modules/@babel/plugin-syntax-optional-catch-binding/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-catch-binding
+Link: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-catch-binding
+-----------
+@babel/plugin-syntax-optional-chaining
+License: MIT
+License File: node_modules/@babel/plugin-syntax-optional-chaining/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-chaining
+Link: https://github.com/babel/babel/tree/master/packages/babel-plugin-syntax-optional-chaining
+-----------
+@babel/plugin-syntax-private-property-in-object
+License: MIT
+License File: node_modules/@babel/plugin-syntax-private-property-in-object/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://babel.dev/docs/en/next/babel-plugin-syntax-private-property-in-object
+-----------
+@babel/plugin-syntax-top-level-await
+License: MIT
+License File: node_modules/@babel/plugin-syntax-top-level-await/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://babel.dev/docs/en/next/babel-plugin-syntax-top-level-await
+-----------
+@babel/plugin-syntax-typescript
+License: MIT
+License File: node_modules/@babel/plugin-syntax-typescript/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://babel.dev/docs/en/next/babel-plugin-syntax-typescript
+-----------
+@babel/template
+License: MIT
+License File: node_modules/@babel/template/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://babel.dev/docs/en/next/babel-template
+-----------
+@babel/traverse
+License: MIT
+License File: node_modules/@babel/traverse/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://babel.dev/docs/en/next/babel-traverse
+-----------
+@babel/types
+License: MIT
+License File: node_modules/@babel/types/LICENSE
+Copyright: Copyright (c) 2014-present Sebastian McKenzie and other contributors
+Source: https://github.com/babel/babel.git
+Link: https://babel.dev/docs/en/next/babel-types
+-----------
+@bcoe/v8-coverage
+License: MIT
+License File: node_modules/@bcoe/v8-coverage/LICENSE.md
+Source: git://github.com/demurgos/v8-coverage.git
+Link: https://demurgos.github.io/v8-coverage
+-----------
+@codemirror/autocomplete
+License: MIT
+License File: node_modules/@codemirror/autocomplete/LICENSE
+Copyright: Copyright (C) 2018-2021 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/codemirror/autocomplete.git
+Link: https://github.com/codemirror/autocomplete.git
+-----------
+@codemirror/commands
+License: MIT
+License File: node_modules/@codemirror/commands/LICENSE
+Copyright: Copyright (C) 2018-2021 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/codemirror/commands.git
+Link: https://github.com/codemirror/commands.git
+-----------
+@codemirror/lang-css
+License: MIT
+License File: node_modules/@codemirror/lang-css/LICENSE
+Copyright: Copyright (C) 2018-2021 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/codemirror/lang-css.git
+Link: https://github.com/codemirror/lang-css.git
+-----------
+@codemirror/lang-html
+License: MIT
+License File: node_modules/@codemirror/lang-html/LICENSE
+Copyright: Copyright (C) 2018-2021 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/codemirror/lang-html.git
+Link: https://github.com/codemirror/lang-html.git
+-----------
+@codemirror/lang-javascript
+License: MIT
+License File: node_modules/@codemirror/lang-javascript/LICENSE
+Copyright: Copyright (C) 2018-2021 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/codemirror/lang-javascript.git
+Link: https://github.com/codemirror/lang-javascript.git
+-----------
+@codemirror/lang-json
+License: MIT
+License File: node_modules/@codemirror/lang-json/LICENSE
+Copyright: Copyright (C) 2018-2021 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/codemirror/lang-json.git
+Link: https://github.com/codemirror/lang-json.git
+-----------
+@codemirror/lang-markdown
+License: MIT
+License File: node_modules/@codemirror/lang-markdown/LICENSE
+Copyright: Copyright (C) 2018-2021 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/codemirror/lang-markdown.git
+Link: https://github.com/codemirror/lang-markdown.git
+-----------
+@codemirror/lang-php
+License: MIT
+License File: node_modules/@codemirror/lang-php/LICENSE
+Copyright: Copyright (C) 2018-2021 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/codemirror/lang-php.git
+Link: https://github.com/codemirror/lang-php.git
+-----------
+@codemirror/lang-xml
+License: MIT
+License File: node_modules/@codemirror/lang-xml/LICENSE
+Copyright: Copyright (C) 2018-2021 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/codemirror/lang-xml.git
+Link: https://github.com/codemirror/lang-xml.git
+-----------
+@codemirror/language
+License: MIT
+License File: node_modules/@codemirror/language/LICENSE
+Copyright: Copyright (C) 2018-2021 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/codemirror/language.git
+Link: https://github.com/codemirror/language.git
+-----------
+@codemirror/legacy-modes
+License: MIT
+License File: node_modules/@codemirror/legacy-modes/LICENSE
+Copyright: Copyright (C) 2018-2021 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/codemirror/legacy-modes.git
+Link: https://github.com/codemirror/legacy-modes.git
+-----------
+@codemirror/lint
+License: MIT
+License File: node_modules/@codemirror/lint/LICENSE
+Copyright: Copyright (C) 2018-2021 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/codemirror/lint.git
+Link: https://github.com/codemirror/lint.git
+-----------
+@codemirror/search
+License: MIT
+License File: node_modules/@codemirror/search/LICENSE
+Copyright: Copyright (C) 2018-2021 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/codemirror/search.git
+Link: https://github.com/codemirror/search.git
+-----------
+@codemirror/state
+License: MIT
+License File: node_modules/@codemirror/state/LICENSE
+Copyright: Copyright (C) 2018-2021 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/codemirror/state.git
+Link: https://github.com/codemirror/state.git
+-----------
+@codemirror/theme-one-dark
+License: MIT
+License File: node_modules/@codemirror/theme-one-dark/LICENSE
+Copyright: Copyright (C) 2018-2021 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/codemirror/theme-one-dark.git
+Link: https://github.com/codemirror/theme-one-dark.git
+-----------
+@codemirror/view
+License: MIT
+License File: node_modules/@codemirror/view/LICENSE
+Copyright: Copyright (C) 2018-2021 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/codemirror/view.git
+Link: https://github.com/codemirror/view.git
+-----------
+@cspotcode/source-map-support
+License: MIT
+License File: node_modules/@cspotcode/source-map-support/LICENSE.md
+Copyright: Copyright (c) 2014 Evan Wallace
+Source: https://github.com/cspotcode/node-source-map-support
+Link: https://github.com/cspotcode/node-source-map-support
+-----------
+@csstools/color-helpers
+License: MIT-0
+License File: node_modules/@csstools/color-helpers/LICENSE.md
+Source: git+https://github.com/csstools/postcss-plugins.git
+Link: https://github.com/csstools/postcss-plugins/tree/main/packages/color-helpers#readme
+-----------
+@csstools/css-calc
+License: MIT
+License File: node_modules/@csstools/css-calc/LICENSE.md
+Copyright: Copyright 2022 Romain Menke, Antonio Laguna <*******@******.**>
+Source: git+https://github.com/csstools/postcss-plugins.git
+Link: https://github.com/csstools/postcss-plugins/tree/main/packages/css-calc#readme
+-----------
+@csstools/css-color-parser
+License: MIT
+License File: node_modules/@csstools/css-color-parser/LICENSE.md
+Copyright: Copyright 2022 Romain Menke, Antonio Laguna <*******@******.**>
+Source: git+https://github.com/csstools/postcss-plugins.git
+Link: https://github.com/csstools/postcss-plugins/tree/main/packages/css-color-parser#readme
+-----------
+@csstools/css-parser-algorithms
+License: MIT
+License File: node_modules/@csstools/css-parser-algorithms/LICENSE.md
+Copyright: Copyright 2022 Romain Menke, Antonio Laguna <*******@******.**>
+Source: git+https://github.com/csstools/postcss-plugins.git
+Link: https://github.com/csstools/postcss-plugins/tree/main/packages/css-parser-algorithms#readme
+-----------
+@csstools/css-tokenizer
+License: MIT
+License File: node_modules/@csstools/css-tokenizer/LICENSE.md
+Copyright: Copyright 2022 Romain Menke, Antonio Laguna <*******@******.**>
+Source: git+https://github.com/csstools/postcss-plugins.git
+Link: https://github.com/csstools/postcss-plugins/tree/main/packages/css-tokenizer#readme
+-----------
+@esbuild/linux-x64
+License: MIT
+Source: git+https://github.com/evanw/esbuild.git
+Link: git+https://github.com/evanw/esbuild.git
+-----------
+@eslint-community/eslint-utils
+License: MIT
+License File: node_modules/@eslint-community/eslint-utils/LICENSE
+Copyright: Copyright (c) 2018 Toru Nagashima
+Source: https://github.com/eslint-community/eslint-utils
+Link: https://github.com/eslint-community/eslint-utils#readme
+-----------
+@eslint-community/regexpp
+License: MIT
+License File: node_modules/@eslint-community/regexpp/LICENSE
+Copyright: Copyright (c) 2018 Toru Nagashima
+Source: https://github.com/eslint-community/regexpp
+Link: https://github.com/eslint-community/regexpp#readme
+-----------
+@eslint/config-array
+License: Apache-2.0
+License File: node_modules/@eslint/config-array/LICENSE
+Source: git+https://github.com/eslint/rewrite.git
+Link: https://github.com/eslint/rewrite/tree/main/packages/config-array#readme
+-----------
+@eslint/config-helpers
+License: Apache-2.0
+License File: node_modules/@eslint/config-helpers/LICENSE
+Source: git+https://github.com/eslint/rewrite.git
+Link: https://github.com/eslint/rewrite/tree/main/packages/config-helpers#readme
+-----------
+@eslint/core
+License: Apache-2.0
+License File: node_modules/@eslint/core/LICENSE
+Source: git+https://github.com/eslint/rewrite.git
+Link: https://github.com/eslint/rewrite/tree/main/packages/core#readme
+-----------
+@eslint/eslintrc
+License: MIT
+License File: node_modules/@eslint/eslintrc/LICENSE
+Source: eslint/eslintrc
+Link: https://github.com/eslint/eslintrc#readme
+-----------
+@eslint/js
+License: MIT
+License File: node_modules/@eslint/js/LICENSE
+Source: https://github.com/eslint/eslint.git
+Link: https://eslint.org
+-----------
+@eslint/object-schema
+License: Apache-2.0
+License File: node_modules/@eslint/object-schema/LICENSE
+Source: git+https://github.com/eslint/rewrite.git
+Link: https://github.com/eslint/rewrite/tree/main/packages/object-schema#readme
+-----------
+@eslint/plugin-kit
+License: Apache-2.0
+License File: node_modules/@eslint/plugin-kit/LICENSE
+Source: git+https://github.com/eslint/rewrite.git
+Link: https://github.com/eslint/rewrite/tree/main/packages/plugin-kit#readme
+-----------
+@humanfs/core
+License: Apache-2.0
+License File: node_modules/@humanfs/core/LICENSE
+Source: git+https://github.com/humanwhocodes/humanfs.git
+Link: https://github.com/humanwhocodes/humanfs#readme
+-----------
+@humanfs/node
+License: Apache-2.0
+License File: node_modules/@humanfs/node/LICENSE
+Source: git+https://github.com/humanwhocodes/humanfs.git
+Link: https://github.com/humanwhocodes/humanfs#readme
+-----------
+@humanwhocodes/module-importer
+License: Apache-2.0
+License File: node_modules/@humanwhocodes/module-importer/LICENSE
+Source: git+https://github.com/humanwhocodes/module-importer.git
+Link: git+https://github.com/humanwhocodes/module-importer.git
+-----------
+@humanwhocodes/retry
+License: Apache-2.0
+License File: node_modules/@humanwhocodes/retry/LICENSE
+Source: git+https://github.com/humanwhocodes/retry.git
+Link: git+https://github.com/humanwhocodes/retry.git
+-----------
+@isaacs/cliui
+License: ISC
+License File: node_modules/@isaacs/cliui/LICENSE.txt
+Copyright: Copyright (c) 2015, Contributors
+Source: yargs/cliui
+Link: yargs/cliui
+-----------
+@istanbuljs/load-nyc-config
+License: ISC
+License File: node_modules/@istanbuljs/load-nyc-config/LICENSE
+Copyright: Copyright (c) 2019, Contributors
+Source: git+https://github.com/istanbuljs/load-nyc-config.git
+Link: https://github.com/istanbuljs/load-nyc-config#readme
+-----------
+@istanbuljs/schema
+License: MIT
+License File: node_modules/@istanbuljs/schema/LICENSE
+Copyright: Copyright (c) 2019 CFWare, LLC
+Source: git+https://github.com/istanbuljs/schema.git
+Link: https://github.com/istanbuljs/schema#readme
+-----------
+@jest/console
+License: MIT
+License File: node_modules/@jest/console/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+@jest/core
+License: MIT
+License File: node_modules/@jest/core/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://jestjs.io/
+-----------
+@jest/diff-sequences
+License: MIT
+License File: node_modules/@jest/diff-sequences/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+@jest/environment-jsdom-abstract
+License: MIT
+License File: node_modules/@jest/environment-jsdom-abstract/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+@jest/environment
+License: MIT
+License File: node_modules/@jest/environment/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+@jest/expect-utils
+License: MIT
+License File: node_modules/@jest/expect-utils/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+@jest/expect
+License: MIT
+License File: node_modules/@jest/expect/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+@jest/fake-timers
+License: MIT
+License File: node_modules/@jest/fake-timers/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+@jest/get-type
+License: MIT
+License File: node_modules/@jest/get-type/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+@jest/globals
+License: MIT
+License File: node_modules/@jest/globals/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+@jest/pattern
+License: MIT
+License File: node_modules/@jest/pattern/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+@jest/reporters
+License: MIT
+License File: node_modules/@jest/reporters/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://jestjs.io/
+-----------
+@jest/schemas
+License: MIT
+License File: node_modules/@jest/schemas/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+@jest/snapshot-utils
+License: MIT
+License File: node_modules/@jest/snapshot-utils/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+@jest/source-map
+License: MIT
+License File: node_modules/@jest/source-map/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+@jest/test-result
+License: MIT
+License File: node_modules/@jest/test-result/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+@jest/test-sequencer
+License: MIT
+License File: node_modules/@jest/test-sequencer/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+@jest/transform
+License: MIT
+License File: node_modules/@jest/transform/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+@jest/types
+License: MIT
+License File: node_modules/@jest/types/LICENSE
+Copyright: Copyright (c) Meta Platforms, Inc. and affiliates.
+Source: https://github.com/jestjs/jest.git
+Link: https://github.com/jestjs/jest.git
+-----------
+@jridgewell/gen-mapping
+License: MIT
+License File: node_modules/@jridgewell/gen-mapping/LICENSE
+Copyright: Copyright 2024 Justin Ridgewell <******@*********.****>
+Source: git+https://github.com/jridgewell/sourcemaps.git
+Link: https://github.com/jridgewell/sourcemaps/tree/main/packages/gen-mapping
+-----------
+@jridgewell/resolve-uri
+License: MIT
+License File: node_modules/@jridgewell/resolve-uri/LICENSE
+Copyright: Copyright 2019 Justin Ridgewell <**********@******.***>
+Source: https://github.com/jridgewell/resolve-uri
+Link: https://github.com/jridgewell/resolve-uri
+-----------
+@jridgewell/sourcemap-codec
+License: MIT
+License File: node_modules/@jridgewell/sourcemap-codec/LICENSE
+Copyright: Copyright 2024 Justin Ridgewell <******@*********.****>
+Source: git+https://github.com/jridgewell/sourcemaps.git
+Link: https://github.com/jridgewell/sourcemaps/tree/main/packages/sourcemap-codec
+-----------
+@jridgewell/trace-mapping
+License: MIT
+License File: node_modules/@jridgewell/trace-mapping/LICENSE
+Copyright: Copyright 2024 Justin Ridgewell <******@*********.****>
+Source: git+https://github.com/jridgewell/sourcemaps.git
+Link: https://github.com/jridgewell/sourcemaps/tree/main/packages/trace-mapping
+-----------
+@lezer/common
+License: MIT
+License File: node_modules/@lezer/common/LICENSE
+Copyright: Copyright (C) 2018 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/lezer-parser/common.git
+Link: https://github.com/lezer-parser/common.git
+-----------
+@lezer/css
+License: MIT
+License File: node_modules/@lezer/css/LICENSE
+Copyright: Copyright (C) 2018 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/lezer-parser/css.git
+Link: https://github.com/lezer-parser/css.git
+-----------
+@lezer/generator
+License: MIT
+License File: node_modules/@lezer/generator/LICENSE
+Copyright: Copyright (C) 2018 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/lezer-parser/generator.git
+Link: https://github.com/lezer-parser/generator.git
+-----------
+@lezer/highlight
+License: MIT
+License File: node_modules/@lezer/highlight/LICENSE
+Copyright: Copyright (C) 2018 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/lezer-parser/highlight.git
+Link: https://github.com/lezer-parser/highlight.git
+-----------
+@lezer/html
+License: MIT
+License File: node_modules/@lezer/html/LICENSE
+Copyright: Copyright (C) 2018 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/lezer-parser/html.git
+Link: https://github.com/lezer-parser/html.git
+-----------
+@lezer/javascript
+License: MIT
+License File: node_modules/@lezer/javascript/LICENSE
+Copyright: Copyright (C) 2018 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/lezer-parser/javascript.git
+Link: https://github.com/lezer-parser/javascript.git
+-----------
+@lezer/json
+License: MIT
+License File: node_modules/@lezer/json/LICENSE
+Copyright: Copyright (C) 2020 by Marijn Haverbeke <******@*********.******>, Arun Srinivasan <*******@*****.***>, and others
+Source: https://github.com/lezer-parser/json.git
+Link: https://github.com/lezer-parser/json.git
+-----------
+@lezer/lr
+License: MIT
+License File: node_modules/@lezer/lr/LICENSE
+Copyright: Copyright (C) 2018 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/lezer-parser/lr.git
+Link: https://github.com/lezer-parser/lr.git
+-----------
+@lezer/markdown
+License: MIT
+License File: node_modules/@lezer/markdown/LICENSE
+Copyright: Copyright (C) 2020 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/lezer-parser/markdown.git
+Link: https://github.com/lezer-parser/markdown.git
+-----------
+@lezer/php
+License: MIT
+License File: node_modules/@lezer/php/LICENSE
+Copyright: Copyright (C) 2018 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/lezer-parser/php.git
+Link: https://github.com/lezer-parser/php.git
+-----------
+@lezer/xml
+License: MIT
+License File: node_modules/@lezer/xml/LICENSE
+Copyright: Copyright (C) 2018 by Marijn Haverbeke <******@*********.******> and others
+Source: https://github.com/lezer-parser/xml.git
+Link: https://github.com/lezer-parser/xml.git
+-----------
+@marijn/find-cluster-break
+License: MIT
+License File: node_modules/@marijn/find-cluster-break/LICENSE
+Copyright: Copyright (C) 2024 by Marijn Haverbeke <******@*********.******>
+Source: git+https://github.com/marijnh/find-cluster-break.git
+Link: https://github.com/marijnh/find-cluster-break#readme
+-----------
+@parcel/watcher-linux-x64-glibc
+License: MIT
+License File: node_modules/@parcel/watcher-linux-x64-glibc/LICENSE
+Copyright: Copyright (c) 2017-present Devon Govett
+Source: https://github.com/parcel-bundler/watcher.git
+Link: https://github.com/parcel-bundler/watcher.git
+-----------
+@parcel/watcher-linux-x64-musl
+License: MIT
+License File: node_modules/@parcel/watcher-linux-x64-musl/LICENSE
+Copyright: Copyright (c) 2017-present Devon Govett
+Source: https://github.com/parcel-bundler/watcher.git
+Link: https://github.com/parcel-bundler/watcher.git
+-----------
+@parcel/watcher
+License: MIT
+License File: node_modules/@parcel/watcher/LICENSE
+Copyright: Copyright (c) 2017-present Devon Govett
+Source: https://github.com/parcel-bundler/watcher.git
+Link: https://github.com/parcel-bundler/watcher.git
+-----------
+@pkgjs/parseargs
+License: MIT
+License File: node_modules/@pkgjs/parseargs/LICENSE
+Source: git@github.com:pkgjs/parseargs.git
+Link: https://github.com/pkgjs/parseargs#readme
+-----------
+@pkgr/core
+License: MIT
+Source: git+https://github.com/un-ts/pkgr.git
+Link: https://github.com/un-ts/pkgr/blob/master/packages/core
+-----------
+@rtsao/scc
+License: MIT
+License File: node_modules/@rtsao/scc/LICENSE
+Copyright: Copyright (c) 2019 Ryan Tsao
+Source: rtsao/scc
+Link: rtsao/scc
+-----------
+@sinclair/typebox
+License: MIT
+License File: node_modules/@sinclair/typebox/license
+Source: https://github.com/sinclairzx81/typebox
+Link: https://github.com/sinclairzx81/typebox
+-----------
+@sinonjs/commons
+License: BSD-3-Clause
+License File: node_modules/@sinonjs/commons/LICENSE
+Copyright: Copyright (c) 2018, Sinon.JS
+All rights reserved.
+Source: git+https://github.com/sinonjs/commons.git
+Link: https://github.com/sinonjs/commons#readme
+-----------
+@sinonjs/fake-timers
+License: BSD-3-Clause
+License File: node_modules/@sinonjs/fake-timers/LICENSE
+Copyright: Copyright (c) 2010-2014, Christian Johansen, *********@*********.**. All rights reserved.
+Source: git+https://github.com/sinonjs/fake-timers.git
+Link: https://github.com/sinonjs/fake-timers
+-----------
+@ssddanbrown/codemirror-lang-smarty
+License: MIT
+License File: node_modules/@ssddanbrown/codemirror-lang-smarty/LICENSE
+Copyright: Copyright (C) 2023 by Dan Brown, Marijn Haverbeke and others
+-----------
+@ssddanbrown/codemirror-lang-twig
+License: MIT
+License File: node_modules/@ssddanbrown/codemirror-lang-twig/LICENSE
+Copyright: Copyright (C) 2023 by Dan Brown, Marijn Haverbeke and others
+-----------
+@tsconfig/node10
+License: MIT
+License File: node_modules/@tsconfig/node10/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/tsconfig/bases.git
+Link: https://github.com/tsconfig/bases.git
+-----------
+@tsconfig/node12
+License: MIT
+License File: node_modules/@tsconfig/node12/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/tsconfig/bases.git
+Link: https://github.com/tsconfig/bases.git
+-----------
+@tsconfig/node14
+License: MIT
+License File: node_modules/@tsconfig/node14/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/tsconfig/bases.git
+Link: https://github.com/tsconfig/bases.git
+-----------
+@tsconfig/node16
+License: MIT
+License File: node_modules/@tsconfig/node16/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/tsconfig/bases.git
+Link: https://github.com/tsconfig/bases.git
+-----------
+@types/babel__core
+License: MIT
+License File: node_modules/@types/babel__core/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/babel__core
+-----------
+@types/babel__generator
+License: MIT
+License File: node_modules/@types/babel__generator/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/babel__generator
+-----------
+@types/babel__template
+License: MIT
+License File: node_modules/@types/babel__template/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/babel__template
+-----------
+@types/babel__traverse
+License: MIT
+License File: node_modules/@types/babel__traverse/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/babel__traverse
+-----------
+@types/estree
+License: MIT
+License File: node_modules/@types/estree/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/estree
+-----------
+@types/istanbul-lib-coverage
+License: MIT
+License File: node_modules/@types/istanbul-lib-coverage/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/istanbul-lib-coverage
+-----------
+@types/istanbul-lib-report
+License: MIT
+License File: node_modules/@types/istanbul-lib-report/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/istanbul-lib-report
+-----------
+@types/istanbul-reports
+License: MIT
+License File: node_modules/@types/istanbul-reports/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/istanbul-reports
+-----------
+@types/jest
+License: MIT
+License File: node_modules/@types/jest/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/jest
+-----------
+@types/jsdom
+License: MIT
+License File: node_modules/@types/jsdom/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/jsdom
+-----------
+@types/json-schema
+License: MIT
+License File: node_modules/@types/json-schema/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/json-schema
+-----------
+@types/json5
+License: MIT
+Source: https://www.github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://www.github.com/DefinitelyTyped/DefinitelyTyped.git
+-----------
+@types/linkify-it
+License: MIT
+License File: node_modules/@types/linkify-it/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/linkify-it
+-----------
+@types/markdown-it
+License: MIT
+License File: node_modules/@types/markdown-it/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/markdown-it
+-----------
+@types/mdurl
+License: MIT
+License File: node_modules/@types/mdurl/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/mdurl
+-----------
+@types/node
+License: MIT
+License File: node_modules/@types/node/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/node
+-----------
+@types/sortablejs
+License: MIT
+License File: node_modules/@types/sortablejs/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/sortablejs
+-----------
+@types/stack-utils
+License: MIT
+License File: node_modules/@types/stack-utils/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/stack-utils
+-----------
+@types/tough-cookie
+License: MIT
+License File: node_modules/@types/tough-cookie/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/tough-cookie
+-----------
+@types/yargs-parser
+License: MIT
+License File: node_modules/@types/yargs-parser/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/yargs-parser
+-----------
+@types/yargs
+License: MIT
+License File: node_modules/@types/yargs/LICENSE
+Copyright: Copyright (c) Microsoft Corporation.
+Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
+Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/yargs
+-----------
+@ungap/structured-clone
+License: ISC
+License File: node_modules/@ungap/structured-clone/LICENSE
+Copyright: Copyright (c) 2021, Andrea Giammarchi, @WebReflection
+Source: git+https://github.com/ungap/structured-clone.git
+Link: https://github.com/ungap/structured-clone#readme
+-----------
+@unrs/resolver-binding-linux-x64-gnu
+License: MIT
+Source: git+https://github.com/unrs/unrs-resolver.git
+Link: https://github.com/unrs/unrs-resolver#readme
+-----------
+@unrs/resolver-binding-linux-x64-musl
+License: MIT
+Source: git+https://github.com/unrs/unrs-resolver.git
+Link: https://github.com/unrs/unrs-resolver#readme
diff --git a/dev/licensing/php-library-licenses.txt b/dev/licensing/php-library-licenses.txt
new file mode 100644
index 00000000000..348fce2ff98
--- /dev/null
+++ b/dev/licensing/php-library-licenses.txt
@@ -0,0 +1,803 @@
+aws/aws-crt-php
+License: Apache-2.0
+License File: vendor/aws/aws-crt-php/LICENSE
+Source: https://github.com/awslabs/aws-crt-php.git
+Link: https://github.com/awslabs/aws-crt-php
+-----------
+aws/aws-sdk-php
+License: Apache-2.0
+License File: vendor/aws/aws-sdk-php/LICENSE
+Source: https://github.com/aws/aws-sdk-php.git
+Link: https://aws.amazon.com/sdk-for-php
+-----------
+bacon/bacon-qr-code
+License: BSD-2-Clause
+License File: vendor/bacon/bacon-qr-code/LICENSE
+Copyright: Copyright (c) 2017-present, Ben Scholzen 'DASPRiD'
+All rights reserved.
+Source: https://github.com/Bacon/BaconQrCode.git
+Link: https://github.com/Bacon/BaconQrCode
+-----------
+brick/math
+License: MIT
+License File: vendor/brick/math/LICENSE
+Copyright: Copyright (c) 2013-present Benjamin Morel
+Source: https://github.com/brick/math.git
+Link: https://github.com/brick/math.git
+-----------
+carbonphp/carbon-doctrine-types
+License: MIT
+License File: vendor/carbonphp/carbon-doctrine-types/LICENSE
+Copyright: Copyright (c) 2023 Carbon
+Source: https://github.com/CarbonPHP/carbon-doctrine-types.git
+Link: https://github.com/CarbonPHP/carbon-doctrine-types.git
+-----------
+dasprid/enum
+License: BSD-2-Clause
+License File: vendor/dasprid/enum/LICENSE
+Copyright: Copyright (c) 2017, Ben Scholzen 'DASPRiD'
+All rights reserved.
+Source: https://github.com/DASPRiD/Enum.git
+Link: https://github.com/DASPRiD/Enum.git
+-----------
+dflydev/dot-access-data
+License: MIT
+License File: vendor/dflydev/dot-access-data/LICENSE
+Copyright: Copyright (c) 2012 Dragonfly Development Inc.
+Source: https://github.com/dflydev/dflydev-dot-access-data.git
+Link: https://github.com/dflydev/dflydev-dot-access-data
+-----------
+doctrine/inflector
+License: MIT
+License File: vendor/doctrine/inflector/LICENSE
+Copyright: Copyright (c) 2006-2015 Doctrine Project
+Source: https://github.com/doctrine/inflector.git
+Link: https://www.doctrine-project.org/projects/inflector.html
+-----------
+doctrine/lexer
+License: MIT
+License File: vendor/doctrine/lexer/LICENSE
+Copyright: Copyright (c) 2006-2018 Doctrine Project
+Source: https://github.com/doctrine/lexer.git
+Link: https://www.doctrine-project.org/projects/lexer.html
+-----------
+dompdf/dompdf
+License: LGPL-2.1
+License File: vendor/dompdf/dompdf/LICENSE.LGPL
+Copyright: Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+Source: https://github.com/dompdf/dompdf.git
+Link: https://github.com/dompdf/dompdf
+-----------
+dompdf/php-font-lib
+License: LGPL-2.1-or-later
+License File: vendor/dompdf/php-font-lib/LICENSE
+Copyright: Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+Source: https://github.com/dompdf/php-font-lib.git
+Link: https://github.com/dompdf/php-font-lib
+-----------
+dompdf/php-svg-lib
+License: LGPL-3.0-or-later
+License File: vendor/dompdf/php-svg-lib/LICENSE
+Copyright: Copyright (C) 2007 Free Software Foundation, Inc.
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+Source: https://github.com/dompdf/php-svg-lib.git
+Link: https://github.com/dompdf/php-svg-lib
+-----------
+dragonmantank/cron-expression
+License: MIT
+License File: vendor/dragonmantank/cron-expression/LICENSE
+Copyright: Copyright (c) 2011 Michael Dowling <*********@*****.***>, 2016 Chris Tankersley <*****@***********.***>, and contributors
+Source: https://github.com/dragonmantank/cron-expression.git
+Link: https://github.com/dragonmantank/cron-expression.git
+-----------
+egulias/email-validator
+License: MIT
+License File: vendor/egulias/email-validator/LICENSE
+Copyright: Copyright (c) 2013-2023 Eduardo Gulias Davis
+Source: https://github.com/egulias/EmailValidator.git
+Link: https://github.com/egulias/EmailValidator
+-----------
+ezyang/htmlpurifier
+License: LGPL-2.1-or-later
+License File: vendor/ezyang/htmlpurifier/LICENSE
+Copyright: Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+Source: https://github.com/ezyang/htmlpurifier.git
+Link: http://htmlpurifier.org/
+-----------
+firebase/php-jwt
+License: BSD-3-Clause
+License File: vendor/firebase/php-jwt/LICENSE
+Copyright: Copyright (c) 2011, Neuman Vong
+Source: https://github.com/firebase/php-jwt.git
+Link: https://github.com/firebase/php-jwt
+-----------
+fruitcake/php-cors
+License: MIT
+License File: vendor/fruitcake/php-cors/LICENSE
+Copyright: Copyright (c) 2013-2017 Alexander <***.*****@*****.***>
+Copyright (c) 2017-2022 Barryvdh <********@*****.***>
+Source: https://github.com/fruitcake/php-cors.git
+Link: https://github.com/fruitcake/php-cors
+-----------
+graham-campbell/result-type
+License: MIT
+License File: vendor/graham-campbell/result-type/LICENSE
+Copyright: Copyright (c) 2020-2024 Graham Campbell <*****@**********.**.**>
+Source: https://github.com/GrahamCampbell/Result-Type.git
+Link: https://github.com/GrahamCampbell/Result-Type.git
+-----------
+guzzlehttp/guzzle
+License: MIT
+License File: vendor/guzzlehttp/guzzle/LICENSE
+Copyright: Copyright (c) 2011 Michael Dowling <*********@*****.***>
+Copyright (c) 2012 Jeremy Lindblom <**********@*****.***>
+Copyright (c) 2014 Graham Campbell <*****@**********.**.**>
+Copyright (c) 2015 Márk Sági-Kazár <****.*********@*****.***>
+Copyright (c) 2015 Tobias Schultze <*********@**********.**>
+Copyright (c) 2016 Tobias Nyholm <******.******@*****.***>
+Copyright (c) 2016 George Mponos <*******@*****.***>
+Source: https://github.com/guzzle/guzzle.git
+Link: https://github.com/guzzle/guzzle.git
+-----------
+guzzlehttp/promises
+License: MIT
+License File: vendor/guzzlehttp/promises/LICENSE
+Copyright: Copyright (c) 2015 Michael Dowling <*********@*****.***>
+Copyright (c) 2015 Graham Campbell <*****@**********.**.**>
+Copyright (c) 2017 Tobias Schultze <*********@**********.**>
+Copyright (c) 2020 Tobias Nyholm <******.******@*****.***>
+Source: https://github.com/guzzle/promises.git
+Link: https://github.com/guzzle/promises.git
+-----------
+guzzlehttp/psr7
+License: MIT
+License File: vendor/guzzlehttp/psr7/LICENSE
+Copyright: Copyright (c) 2015 Michael Dowling <*********@*****.***>
+Copyright (c) 2015 Márk Sági-Kazár <****.*********@*****.***>
+Copyright (c) 2015 Graham Campbell <*****@**********.**.**>
+Copyright (c) 2016 Tobias Schultze <*********@**********.**>
+Copyright (c) 2016 George Mponos <*******@*****.***>
+Copyright (c) 2018 Tobias Nyholm <******.******@*****.***>
+Source: https://github.com/guzzle/psr7.git
+Link: https://github.com/guzzle/psr7.git
+-----------
+guzzlehttp/uri-template
+License: MIT
+License File: vendor/guzzlehttp/uri-template/LICENSE
+Copyright: Copyright (c) 2014 Michael Dowling <*********@*****.***>
+Copyright (c) 2020 George Mponos <*******@*****.***>
+Copyright (c) 2020 Graham Campbell <*****@**********.**.**>
+Source: https://github.com/guzzle/uri-template.git
+Link: https://github.com/guzzle/uri-template.git
+-----------
+intervention/gif
+License: MIT
+License File: vendor/intervention/gif/LICENSE
+Copyright: Copyright (c) 2020-present Oliver Vogel
+Source: https://github.com/Intervention/gif.git
+Link: https://github.com/intervention/gif
+-----------
+intervention/image
+License: MIT
+License File: vendor/intervention/image/LICENSE
+Copyright: Copyright (c) 2013-present Oliver Vogel
+Source: https://github.com/Intervention/image.git
+Link: https://image.intervention.io
+-----------
+knplabs/knp-snappy
+License: MIT
+License File: vendor/knplabs/knp-snappy/LICENSE
+Copyright: Copyright (c) 2010 Matthieu Bontemps
+Source: https://github.com/KnpLabs/snappy.git
+Link: http://github.com/KnpLabs/snappy
+-----------
+laravel/framework
+License: MIT
+License File: vendor/laravel/framework/LICENSE.md
+Copyright: Copyright (c) Taylor Otwell
+Source: https://github.com/laravel/framework.git
+Link: https://laravel.com
+-----------
+laravel/prompts
+License: MIT
+License File: vendor/laravel/prompts/LICENSE.md
+Copyright: Copyright (c) Taylor Otwell
+Source: https://github.com/laravel/prompts.git
+Link: https://github.com/laravel/prompts.git
+-----------
+laravel/serializable-closure
+License: MIT
+License File: vendor/laravel/serializable-closure/LICENSE.md
+Copyright: Copyright (c) Taylor Otwell
+Source: https://github.com/laravel/serializable-closure.git
+Link: https://github.com/laravel/serializable-closure.git
+-----------
+laravel/socialite
+License: MIT
+License File: vendor/laravel/socialite/LICENSE.md
+Copyright: Copyright (c) Taylor Otwell
+Source: https://github.com/laravel/socialite.git
+Link: https://laravel.com
+-----------
+laravel/tinker
+License: MIT
+License File: vendor/laravel/tinker/LICENSE.md
+Copyright: Copyright (c) Taylor Otwell
+Source: https://github.com/laravel/tinker.git
+Link: https://github.com/laravel/tinker.git
+-----------
+league/commonmark
+License: BSD-3-Clause
+License File: vendor/league/commonmark/LICENSE
+Copyright: Copyright (c) 2014-2022, Colin O'Dell. All rights reserved. Some code based on commonmark.js (copyright 2014-2018, John MacFarlane) and commonmark-java (copyright 2015-2016, Atlassian Pty Ltd)
+Source: https://github.com/thephpleague/commonmark.git
+Link: https://commonmark.thephpleague.com
+-----------
+league/config
+License: BSD-3-Clause
+License File: vendor/league/config/LICENSE.md
+Copyright: Copyright (c) 2022, Colin O'Dell. All rights reserved.
+Source: https://github.com/thephpleague/config.git
+Link: https://config.thephpleague.com
+-----------
+league/flysystem
+License: MIT
+License File: vendor/league/flysystem/LICENSE
+Copyright: Copyright (c) 2013-2026 Frank de Jonge
+Source: https://github.com/thephpleague/flysystem.git
+Link: https://github.com/thephpleague/flysystem.git
+-----------
+league/flysystem-aws-s3-v3
+License: MIT
+License File: vendor/league/flysystem-aws-s3-v3/LICENSE
+Copyright: Copyright (c) 2013-2026 Frank de Jonge
+Source: https://github.com/thephpleague/flysystem-aws-s3-v3.git
+Link: https://github.com/thephpleague/flysystem-aws-s3-v3.git
+-----------
+league/flysystem-local
+License: MIT
+License File: vendor/league/flysystem-local/LICENSE
+Copyright: Copyright (c) 2013-2026 Frank de Jonge
+Source: https://github.com/thephpleague/flysystem-local.git
+Link: https://github.com/thephpleague/flysystem-local.git
+-----------
+league/html-to-markdown
+License: MIT
+License File: vendor/league/html-to-markdown/LICENSE
+Copyright: Copyright (c) 2015 Colin O'Dell; Originally created by Nick Cernis
+Source: https://github.com/thephpleague/html-to-markdown.git
+Link: https://github.com/thephpleague/html-to-markdown
+-----------
+league/mime-type-detection
+License: MIT
+License File: vendor/league/mime-type-detection/LICENSE
+Copyright: Copyright (c) 2013-2023 Frank de Jonge
+Source: https://github.com/thephpleague/mime-type-detection.git
+Link: https://github.com/thephpleague/mime-type-detection.git
+-----------
+league/oauth1-client
+License: MIT
+License File: vendor/league/oauth1-client/LICENSE
+Copyright: Copyright (c) 2013 Ben Corlett <**********@**.***>
+Source: https://github.com/thephpleague/oauth1-client.git
+Link: https://github.com/thephpleague/oauth1-client.git
+-----------
+league/oauth2-client
+License: MIT
+License File: vendor/league/oauth2-client/LICENSE
+Copyright: Copyright (c) 2013-2023 Alex Bilbie <*****@**********.***>
+Source: https://github.com/thephpleague/oauth2-client.git
+Link: https://github.com/thephpleague/oauth2-client.git
+-----------
+league/uri
+License: MIT
+License File: vendor/league/uri/LICENSE
+Copyright: Copyright (c) 2015 ignace nyamagana butera
+Source: https://github.com/thephpleague/uri.git
+Link: https://uri.thephpleague.com
+-----------
+league/uri-interfaces
+License: MIT
+License File: vendor/league/uri-interfaces/LICENSE
+Copyright: Copyright (c) 2015 ignace nyamagana butera
+Source: https://github.com/thephpleague/uri-interfaces.git
+Link: https://uri.thephpleague.com
+-----------
+masterminds/html5
+License: MIT
+License File: vendor/masterminds/html5/LICENSE.txt
+Copyright: Copyright (c) 2013 The Authors of HTML5-PHP
+Source: https://github.com/Masterminds/html5-php.git
+Link: http://masterminds.github.io/html5-php
+-----------
+monolog/monolog
+License: MIT
+License File: vendor/monolog/monolog/LICENSE
+Copyright: Copyright (c) 2011-2020 Jordi Boggiano
+Source: https://github.com/Seldaek/monolog.git
+Link: https://github.com/Seldaek/monolog
+-----------
+mtdowling/jmespath.php
+License: MIT
+License File: vendor/mtdowling/jmespath.php/LICENSE
+Copyright: Copyright (c) 2014 Michael Dowling, https://github.com/mtdowling
+Source: https://github.com/jmespath/jmespath.php.git
+Link: https://github.com/jmespath/jmespath.php.git
+-----------
+nesbot/carbon
+License: MIT
+License File: vendor/nesbot/carbon/LICENSE
+Copyright: Copyright (C) Brian Nesbitt
+Source: https://github.com/CarbonPHP/carbon.git
+Link: https://carbonphp.github.io/carbon/
+-----------
+nette/schema
+License: BSD-3-Clause GPL-2.0-only GPL-3.0-only
+License File: vendor/nette/schema/license.md
+Copyright: Copyright (c) 2004, 2014 David Grudl (https://davidgrudl.com)
+All rights reserved.
+Source: https://github.com/nette/schema.git
+Link: https://nette.org
+-----------
+nette/utils
+License: BSD-3-Clause GPL-2.0-only GPL-3.0-only
+License File: vendor/nette/utils/license.md
+Copyright: Copyright (c) 2004, 2014 David Grudl (https://davidgrudl.com)
+All rights reserved.
+Source: https://github.com/nette/utils.git
+Link: https://nette.org
+-----------
+nikic/php-parser
+License: BSD-3-Clause
+License File: vendor/nikic/php-parser/LICENSE
+Copyright: Copyright (c) 2011, Nikita Popov
+All rights reserved.
+Source: https://github.com/nikic/PHP-Parser.git
+Link: https://github.com/nikic/PHP-Parser.git
+-----------
+nunomaduro/termwind
+License: MIT
+License File: vendor/nunomaduro/termwind/LICENSE.md
+Copyright: Copyright (c) Nuno Maduro <***********@*****.***>
+Source: https://github.com/nunomaduro/termwind.git
+Link: https://github.com/nunomaduro/termwind.git
+-----------
+onelogin/php-saml
+License: MIT
+License File: vendor/onelogin/php-saml/LICENSE
+Copyright: Copyright (c) 2010-2022 OneLogin, Inc.
+Source: https://github.com/SAML-Toolkits/php-saml.git
+Link: https://github.com/SAML-Toolkits/php-saml
+-----------
+paragonie/constant_time_encoding
+License: MIT
+License File: vendor/paragonie/constant_time_encoding/LICENSE.txt
+Copyright: Copyright (c) 2016 - 2022 Paragon Initiative Enterprises
+Source: https://github.com/paragonie/constant_time_encoding.git
+Link: https://github.com/paragonie/constant_time_encoding.git
+-----------
+paragonie/random_compat
+License: MIT
+License File: vendor/paragonie/random_compat/LICENSE
+Copyright: Copyright (c) 2015 Paragon Initiative Enterprises
+Source: https://github.com/paragonie/random_compat.git
+Link: https://github.com/paragonie/random_compat.git
+-----------
+phpoption/phpoption
+License: Apache-2.0
+License File: vendor/phpoption/phpoption/LICENSE
+Source: https://github.com/schmittjoh/php-option.git
+Link: https://github.com/schmittjoh/php-option.git
+-----------
+phpseclib/phpseclib
+License: MIT
+License File: vendor/phpseclib/phpseclib/LICENSE
+Copyright: Copyright (c) 2011-2019 TerraFrost and other contributors
+Source: https://github.com/phpseclib/phpseclib.git
+Link: http://phpseclib.sourceforge.net
+-----------
+pragmarx/google2fa
+License: MIT
+License File: vendor/pragmarx/google2fa/LICENSE.md
+Copyright: Copyright 2014-2018 Phil, Antonio Carlos Ribeiro and All Contributors
+Source: https://github.com/antonioribeiro/google2fa.git
+Link: https://github.com/antonioribeiro/google2fa.git
+-----------
+predis/predis
+License: MIT
+License File: vendor/predis/predis/LICENSE
+Copyright: Copyright (c) 2009-2020 Daniele Alessandri (original work)
+Copyright (c) 2021-2024 Till Krüss (modified work)
+Source: https://github.com/predis/predis.git
+Link: http://github.com/predis/predis
+-----------
+psr/clock
+License: MIT
+License File: vendor/psr/clock/LICENSE
+Copyright: Copyright (c) 2017 PHP Framework Interoperability Group
+Source: https://github.com/php-fig/clock.git
+Link: https://github.com/php-fig/clock
+-----------
+psr/container
+License: MIT
+License File: vendor/psr/container/LICENSE
+Copyright: Copyright (c) 2013-2016 container-interop
+Copyright (c) 2016 PHP Framework Interoperability Group
+Source: https://github.com/php-fig/container.git
+Link: https://github.com/php-fig/container
+-----------
+psr/event-dispatcher
+License: MIT
+License File: vendor/psr/event-dispatcher/LICENSE
+Copyright: Copyright (c) 2018 PHP-FIG
+Source: https://github.com/php-fig/event-dispatcher.git
+Link: https://github.com/php-fig/event-dispatcher.git
+-----------
+psr/http-client
+License: MIT
+License File: vendor/psr/http-client/LICENSE
+Copyright: Copyright (c) 2017 PHP Framework Interoperability Group
+Source: https://github.com/php-fig/http-client.git
+Link: https://github.com/php-fig/http-client
+-----------
+psr/http-factory
+License: MIT
+License File: vendor/psr/http-factory/LICENSE
+Copyright: Copyright (c) 2018 PHP-FIG
+Source: https://github.com/php-fig/http-factory.git
+Link: https://github.com/php-fig/http-factory.git
+-----------
+psr/http-message
+License: MIT
+License File: vendor/psr/http-message/LICENSE
+Copyright: Copyright (c) 2014 PHP Framework Interoperability Group
+Source: https://github.com/php-fig/http-message.git
+Link: https://github.com/php-fig/http-message
+-----------
+psr/log
+License: MIT
+License File: vendor/psr/log/LICENSE
+Copyright: Copyright (c) 2012 PHP Framework Interoperability Group
+Source: https://github.com/php-fig/log.git
+Link: https://github.com/php-fig/log
+-----------
+psr/simple-cache
+License: MIT
+License File: vendor/psr/simple-cache/LICENSE.md
+Copyright: Copyright (c) 2016 PHP Framework Interoperability Group
+Source: https://github.com/php-fig/simple-cache.git
+Link: https://github.com/php-fig/simple-cache.git
+-----------
+psy/psysh
+License: MIT
+License File: vendor/psy/psysh/LICENSE
+Copyright: Copyright (c) 2012-2026 Justin Hileman
+Source: https://github.com/bobthecow/psysh.git
+Link: https://psysh.org
+-----------
+ralouphie/getallheaders
+License: MIT
+License File: vendor/ralouphie/getallheaders/LICENSE
+Copyright: Copyright (c) 2014 Ralph Khattar
+Source: https://github.com/ralouphie/getallheaders.git
+Link: https://github.com/ralouphie/getallheaders.git
+-----------
+ramsey/collection
+License: MIT
+License File: vendor/ramsey/collection/LICENSE
+Copyright: Copyright (c) 2015-2022 Ben Ramsey <***@*********.***>
+Source: https://github.com/ramsey/collection.git
+Link: https://github.com/ramsey/collection.git
+-----------
+ramsey/uuid
+License: MIT
+License File: vendor/ramsey/uuid/LICENSE
+Copyright: Copyright (c) 2012-2025 Ben Ramsey <***@*********.***>
+Source: https://github.com/ramsey/uuid.git
+Link: https://github.com/ramsey/uuid.git
+-----------
+robrichards/xmlseclibs
+License: BSD-3-Clause
+License File: vendor/robrichards/xmlseclibs/LICENSE
+Copyright: Copyright (c) 2007-2024, Robert Richards <*********@*********.***>.
+Source: https://github.com/robrichards/xmlseclibs.git
+Link: https://github.com/robrichards/xmlseclibs
+-----------
+sabberworm/php-css-parser
+License: MIT
+License File: vendor/sabberworm/php-css-parser/LICENSE
+Copyright: Copyright (c) 2011 Raphael Schweikert, https://www.sabberworm.com/
+Source: https://github.com/MyIntervals/PHP-CSS-Parser.git
+Link: https://www.sabberworm.com/blog/2010/6/10/php-css-parser
+-----------
+socialiteproviders/discord
+License: MIT
+Source: https://github.com/SocialiteProviders/Discord.git
+Link: https://github.com/SocialiteProviders/Discord.git
+-----------
+socialiteproviders/gitlab
+License: MIT
+Source: https://github.com/SocialiteProviders/GitLab.git
+Link: https://github.com/SocialiteProviders/GitLab.git
+-----------
+socialiteproviders/manager
+License: MIT
+License File: vendor/socialiteproviders/manager/LICENSE
+Copyright: Copyright (c) 2015 Andy Wendt
+Source: https://github.com/SocialiteProviders/Manager.git
+Link: https://socialiteproviders.com
+-----------
+socialiteproviders/microsoft-azure
+License: MIT
+Source: https://github.com/SocialiteProviders/Microsoft-Azure.git
+Link: https://github.com/SocialiteProviders/Microsoft-Azure.git
+-----------
+socialiteproviders/okta
+License: MIT
+Source: https://github.com/SocialiteProviders/Okta.git
+Link: https://github.com/SocialiteProviders/Okta.git
+-----------
+socialiteproviders/twitch
+License: MIT
+Source: https://github.com/SocialiteProviders/Twitch.git
+Link: https://github.com/SocialiteProviders/Twitch.git
+-----------
+ssddanbrown/htmldiff
+License: MIT
+License File: vendor/ssddanbrown/htmldiff/license.md
+Copyright: Copyright (c) 2024 Nathan Herald, Rohland de Charmoy, Dan Brown
+Source: https://codeberg.org/danb/HtmlDiff
+Link: https://codeberg.org/danb/HtmlDiff
+-----------
+symfony/clock
+License: MIT
+License File: vendor/symfony/clock/LICENSE
+Copyright: Copyright (c) 2022-present Fabien Potencier
+Source: https://github.com/symfony/clock.git
+Link: https://symfony.com
+-----------
+symfony/console
+License: MIT
+License File: vendor/symfony/console/LICENSE
+Copyright: Copyright (c) 2004-present Fabien Potencier
+Source: https://github.com/symfony/console.git
+Link: https://symfony.com
+-----------
+symfony/css-selector
+License: MIT
+License File: vendor/symfony/css-selector/LICENSE
+Copyright: Copyright (c) 2004-present Fabien Potencier
+Source: https://github.com/symfony/css-selector.git
+Link: https://symfony.com
+-----------
+symfony/deprecation-contracts
+License: MIT
+License File: vendor/symfony/deprecation-contracts/LICENSE
+Copyright: Copyright (c) 2020-present Fabien Potencier
+Source: https://github.com/symfony/deprecation-contracts.git
+Link: https://symfony.com
+-----------
+symfony/error-handler
+License: MIT
+License File: vendor/symfony/error-handler/LICENSE
+Copyright: Copyright (c) 2019-present Fabien Potencier
+Source: https://github.com/symfony/error-handler.git
+Link: https://symfony.com
+-----------
+symfony/event-dispatcher
+License: MIT
+License File: vendor/symfony/event-dispatcher/LICENSE
+Copyright: Copyright (c) 2004-present Fabien Potencier
+Source: https://github.com/symfony/event-dispatcher.git
+Link: https://symfony.com
+-----------
+symfony/event-dispatcher-contracts
+License: MIT
+License File: vendor/symfony/event-dispatcher-contracts/LICENSE
+Copyright: Copyright (c) 2018-present Fabien Potencier
+Source: https://github.com/symfony/event-dispatcher-contracts.git
+Link: https://symfony.com
+-----------
+symfony/filesystem
+License: MIT
+License File: vendor/symfony/filesystem/LICENSE
+Copyright: Copyright (c) 2004-present Fabien Potencier
+Source: https://github.com/symfony/filesystem.git
+Link: https://symfony.com
+-----------
+symfony/finder
+License: MIT
+License File: vendor/symfony/finder/LICENSE
+Copyright: Copyright (c) 2004-present Fabien Potencier
+Source: https://github.com/symfony/finder.git
+Link: https://symfony.com
+-----------
+symfony/http-foundation
+License: MIT
+License File: vendor/symfony/http-foundation/LICENSE
+Copyright: Copyright (c) 2004-present Fabien Potencier
+Source: https://github.com/symfony/http-foundation.git
+Link: https://symfony.com
+-----------
+symfony/http-kernel
+License: MIT
+License File: vendor/symfony/http-kernel/LICENSE
+Copyright: Copyright (c) 2004-present Fabien Potencier
+Source: https://github.com/symfony/http-kernel.git
+Link: https://symfony.com
+-----------
+symfony/mailer
+License: MIT
+License File: vendor/symfony/mailer/LICENSE
+Copyright: Copyright (c) 2019-present Fabien Potencier
+Source: https://github.com/symfony/mailer.git
+Link: https://symfony.com
+-----------
+symfony/mime
+License: MIT
+License File: vendor/symfony/mime/LICENSE
+Copyright: Copyright (c) 2010-present Fabien Potencier
+Source: https://github.com/symfony/mime.git
+Link: https://symfony.com
+-----------
+symfony/polyfill-ctype
+License: MIT
+License File: vendor/symfony/polyfill-ctype/LICENSE
+Copyright: Copyright (c) 2018-present Fabien Potencier
+Source: https://github.com/symfony/polyfill-ctype.git
+Link: https://symfony.com
+-----------
+symfony/polyfill-intl-grapheme
+License: MIT
+License File: vendor/symfony/polyfill-intl-grapheme/LICENSE
+Copyright: Copyright (c) 2015-present Fabien Potencier
+Source: https://github.com/symfony/polyfill-intl-grapheme.git
+Link: https://symfony.com
+-----------
+symfony/polyfill-intl-idn
+License: MIT
+License File: vendor/symfony/polyfill-intl-idn/LICENSE
+Copyright: Copyright (c) 2018-present Fabien Potencier and Trevor Rowbotham <******.*********@**.**>
+Source: https://github.com/symfony/polyfill-intl-idn.git
+Link: https://symfony.com
+-----------
+symfony/polyfill-intl-normalizer
+License: MIT
+License File: vendor/symfony/polyfill-intl-normalizer/LICENSE
+Copyright: Copyright (c) 2015-present Fabien Potencier
+Source: https://github.com/symfony/polyfill-intl-normalizer.git
+Link: https://symfony.com
+-----------
+symfony/polyfill-mbstring
+License: MIT
+License File: vendor/symfony/polyfill-mbstring/LICENSE
+Copyright: Copyright (c) 2015-present Fabien Potencier
+Source: https://github.com/symfony/polyfill-mbstring.git
+Link: https://symfony.com
+-----------
+symfony/polyfill-php80
+License: MIT
+License File: vendor/symfony/polyfill-php80/LICENSE
+Copyright: Copyright (c) 2020-present Fabien Potencier
+Source: https://github.com/symfony/polyfill-php80.git
+Link: https://symfony.com
+-----------
+symfony/polyfill-php83
+License: MIT
+License File: vendor/symfony/polyfill-php83/LICENSE
+Copyright: Copyright (c) 2022-present Fabien Potencier
+Source: https://github.com/symfony/polyfill-php83.git
+Link: https://symfony.com
+-----------
+symfony/polyfill-php84
+License: MIT
+License File: vendor/symfony/polyfill-php84/LICENSE
+Copyright: Copyright (c) 2024-present Fabien Potencier
+Source: https://github.com/symfony/polyfill-php84.git
+Link: https://symfony.com
+-----------
+symfony/polyfill-php85
+License: MIT
+License File: vendor/symfony/polyfill-php85/LICENSE
+Copyright: Copyright (c) 2025-present Fabien Potencier
+Source: https://github.com/symfony/polyfill-php85.git
+Link: https://symfony.com
+-----------
+symfony/polyfill-uuid
+License: MIT
+License File: vendor/symfony/polyfill-uuid/LICENSE
+Copyright: Copyright (c) 2018-present Fabien Potencier
+Source: https://github.com/symfony/polyfill-uuid.git
+Link: https://symfony.com
+-----------
+symfony/process
+License: MIT
+License File: vendor/symfony/process/LICENSE
+Copyright: Copyright (c) 2004-present Fabien Potencier
+Source: https://github.com/symfony/process.git
+Link: https://symfony.com
+-----------
+symfony/routing
+License: MIT
+License File: vendor/symfony/routing/LICENSE
+Copyright: Copyright (c) 2004-present Fabien Potencier
+Source: https://github.com/symfony/routing.git
+Link: https://symfony.com
+-----------
+symfony/service-contracts
+License: MIT
+License File: vendor/symfony/service-contracts/LICENSE
+Copyright: Copyright (c) 2018-present Fabien Potencier
+Source: https://github.com/symfony/service-contracts.git
+Link: https://symfony.com
+-----------
+symfony/string
+License: MIT
+License File: vendor/symfony/string/LICENSE
+Copyright: Copyright (c) 2019-present Fabien Potencier
+Source: https://github.com/symfony/string.git
+Link: https://symfony.com
+-----------
+symfony/translation
+License: MIT
+License File: vendor/symfony/translation/LICENSE
+Copyright: Copyright (c) 2004-present Fabien Potencier
+Source: https://github.com/symfony/translation.git
+Link: https://symfony.com
+-----------
+symfony/translation-contracts
+License: MIT
+License File: vendor/symfony/translation-contracts/LICENSE
+Copyright: Copyright (c) 2018-present Fabien Potencier
+Source: https://github.com/symfony/translation-contracts.git
+Link: https://symfony.com
+-----------
+symfony/uid
+License: MIT
+License File: vendor/symfony/uid/LICENSE
+Copyright: Copyright (c) 2020-present Fabien Potencier
+Source: https://github.com/symfony/uid.git
+Link: https://symfony.com
+-----------
+symfony/var-dumper
+License: MIT
+License File: vendor/symfony/var-dumper/LICENSE
+Copyright: Copyright (c) 2014-present Fabien Potencier
+Source: https://github.com/symfony/var-dumper.git
+Link: https://symfony.com
+-----------
+thecodingmachine/safe
+License: MIT
+License File: vendor/thecodingmachine/safe/LICENSE
+Copyright: Copyright (c) 2018 TheCodingMachine
+Source: https://github.com/thecodingmachine/safe.git
+Link: https://github.com/thecodingmachine/safe.git
+-----------
+tijsverkoyen/css-to-inline-styles
+License: BSD-3-Clause
+License File: vendor/tijsverkoyen/css-to-inline-styles/LICENSE.md
+Copyright: Copyright (c) Tijs Verkoyen. All rights reserved.
+Source: https://github.com/tijsverkoyen/CssToInlineStyles.git
+Link: https://github.com/tijsverkoyen/CssToInlineStyles
+-----------
+vlucas/phpdotenv
+License: BSD-3-Clause
+License File: vendor/vlucas/phpdotenv/LICENSE
+Copyright: Copyright (c) 2014, Graham Campbell.
+Source: https://github.com/vlucas/phpdotenv.git
+Link: https://github.com/vlucas/phpdotenv.git
+-----------
+voku/portable-ascii
+License: MIT
+License File: vendor/voku/portable-ascii/LICENSE.txt
+Copyright: Copyright (C) 2019 Lars Moelleken
+Source: https://github.com/voku/portable-ascii.git
+Link: https://github.com/voku/portable-ascii
+-----------
+xemlock/htmlpurifier-html5
+License: MIT
+License File: vendor/xemlock/htmlpurifier-html5/LICENSE
+Copyright: Copyright (c) 2015 Xemlock
+Source: https://github.com/xemlock/htmlpurifier-html5.git
+Link: https://github.com/xemlock/htmlpurifier-html5
diff --git a/docker-compose.yml b/docker-compose.yml
index 79202589446..f4c3a64c664 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -1,20 +1,17 @@
# This is a Docker Compose configuration
# intended for development purposes only
-version: '3'
-
volumes:
db: {}
services:
db:
- image: mysql:8
+ image: mysql:8.4
environment:
MYSQL_DATABASE: bookstack-dev
MYSQL_USER: bookstack-test
MYSQL_PASSWORD: bookstack-test
MYSQL_RANDOM_ROOT_PASSWORD: 'true'
- command: --default-authentication-plugin=mysql_native_password
volumes:
- ./dev/docker/init.db:/docker-entrypoint-initdb.d
- db:/var/lib/mysql
@@ -38,9 +35,12 @@ services:
- ${DEV_PORT:-8080}:80
volumes:
- ./:/app
+ - ./dev/docker/php/conf.d/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
entrypoint: /app/dev/docker/entrypoint.app.sh
+ extra_hosts:
+ - "host.docker.internal:host-gateway"
node:
- image: node:alpine
+ image: node:22-alpine
working_dir: /app
user: node
volumes:
diff --git a/eslint.config.mjs b/eslint.config.mjs
new file mode 100644
index 00000000000..0071e65985a
--- /dev/null
+++ b/eslint.config.mjs
@@ -0,0 +1,64 @@
+import globals from 'globals';
+import js from '@eslint/js';
+
+export default [
+ js.configs.recommended,
+ {
+ ignores: ['resources/**/*-stub.js', 'resources/**/*.ts'],
+ }, {
+ languageOptions: {
+ globals: {
+ ...globals.browser,
+ },
+
+ ecmaVersion: 'latest',
+ sourceType: 'module',
+ },
+
+ rules: {
+ indent: ['error', 4],
+ 'arrow-parens': ['error', 'as-needed'],
+
+ 'padded-blocks': ['error', {
+ blocks: 'never',
+ classes: 'always',
+ }],
+
+ 'object-curly-spacing': ['error', 'never'],
+
+ 'space-before-function-paren': ['error', {
+ anonymous: 'never',
+ named: 'never',
+ asyncArrow: 'always',
+ }],
+
+ 'import/prefer-default-export': 'off',
+
+ 'no-plusplus': ['error', {
+ allowForLoopAfterthoughts: true,
+ }],
+
+ 'arrow-body-style': 'off',
+ 'no-restricted-syntax': 'off',
+ 'no-continue': 'off',
+ 'prefer-destructuring': 'off',
+ 'class-methods-use-this': 'off',
+ 'no-param-reassign': 'off',
+
+ 'no-console': ['warn', {
+ allow: ['error', 'warn'],
+ }],
+
+ 'no-new': 'off',
+
+ 'max-len': ['error', {
+ code: 110,
+ tabWidth: 4,
+ ignoreUrls: true,
+ ignoreComments: false,
+ ignoreRegExpLiterals: true,
+ ignoreStrings: true,
+ ignoreTemplateLiterals: true,
+ }],
+ },
+ }];
diff --git a/jest.config.ts b/jest.config.ts
new file mode 100644
index 00000000000..53bfceb053e
--- /dev/null
+++ b/jest.config.ts
@@ -0,0 +1,210 @@
+/**
+ * For a detailed explanation regarding each configuration property, visit:
+ * https://jestjs.io/docs/configuration
+ */
+
+import type {Config} from 'jest';
+import {pathsToModuleNameMapper} from "ts-jest";
+import { compilerOptions } from './tsconfig.json';
+
+const config: Config = {
+ // All imported modules in your tests should be mocked automatically
+ // automock: false,
+
+ // Stop running tests after `n` failures
+ // bail: 0,
+
+ // The directory where Jest should store its cached dependency information
+ // cacheDirectory: "/tmp/jest_rs",
+
+ // Automatically clear mock calls, instances, contexts and results before every test
+ clearMocks: true,
+
+ // Indicates whether the coverage information should be collected while executing the test
+ collectCoverage: false,
+
+ // An array of glob patterns indicating a set of files for which coverage information should be collected
+ // collectCoverageFrom: undefined,
+
+ // The directory where Jest should output its coverage files
+ coverageDirectory: "coverage",
+
+ // An array of regexp pattern strings used to skip coverage collection
+ // coveragePathIgnorePatterns: [
+ // "/node_modules/"
+ // ],
+
+ // Indicates which provider should be used to instrument code for coverage
+ coverageProvider: "v8",
+
+ // A list of reporter names that Jest uses when writing coverage reports
+ // coverageReporters: [
+ // "json",
+ // "text",
+ // "lcov",
+ // "clover"
+ // ],
+
+ // An object that configures minimum threshold enforcement for coverage results
+ // coverageThreshold: undefined,
+
+ // A path to a custom dependency extractor
+ // dependencyExtractor: undefined,
+
+ // Make calling deprecated APIs throw helpful error messages
+ // errorOnDeprecated: false,
+
+ // The default configuration for fake timers
+ // fakeTimers: {
+ // "enableGlobally": false
+ // },
+
+ // Force coverage collection from ignored files using an array of glob patterns
+ // forceCoverageMatch: [],
+
+ // A path to a module which exports an async function that is triggered once before all test suites
+ // globalSetup: undefined,
+
+ // A path to a module which exports an async function that is triggered once after all test suites
+ // globalTeardown: undefined,
+
+ // A set of global variables that need to be available in all test environments
+ globals: {
+ __DEV__: true,
+ },
+
+ // The maximum amount of workers used to run your tests. Can be specified as % or a number. E.g. maxWorkers: 10% will use 10% of your CPU amount + 1 as the maximum worker number. maxWorkers: 2 will use a maximum of 2 workers.
+ // maxWorkers: "50%",
+
+ // An array of directory names to be searched recursively up from the requiring module's location
+ // moduleDirectories: [
+ // "node_modules"
+ // ],
+
+ // An array of file extensions your modules use
+ // moduleFileExtensions: [
+ // "js",
+ // "mjs",
+ // "cjs",
+ // "jsx",
+ // "ts",
+ // "tsx",
+ // "json",
+ // "node"
+ // ],
+
+ modulePaths: ['./'],
+
+ // A map from regular expressions to module names or to arrays of module names that allow to stub out resources with a single module
+ moduleNameMapper: {
+ 'lexical/shared/invariant': 'resources/js/wysiwyg/lexical/core/shared/__mocks__/invariant',
+ ...pathsToModuleNameMapper(compilerOptions.paths),
+ },
+
+ // An array of regexp pattern strings, matched against all module paths before considered 'visible' to the module loader
+ // modulePathIgnorePatterns: [],
+
+ // Activates notifications for test results
+ // notify: false,
+
+ // An enum that specifies notification mode. Requires { notify: true }
+ // notifyMode: "failure-change",
+
+ // A preset that is used as a base for Jest's configuration
+ // preset: undefined,
+
+ // Run tests from one or more projects
+ // projects: undefined,
+
+ // Use this configuration option to add custom reporters to Jest
+ // reporters: undefined,
+
+ // Automatically reset mock state before every test
+ // resetMocks: false,
+
+ // Reset the module registry before running each individual test
+ // resetModules: false,
+
+ // A path to a custom resolver
+ // resolver: undefined,
+
+ // Automatically restore mock state and implementation before every test
+ // restoreMocks: false,
+
+ // The root directory that Jest should scan for tests and modules within
+ // rootDir: undefined,
+
+ // A list of paths to directories that Jest should use to search for files in
+ roots: [
+ "./resources/js"
+ ],
+
+ // Allows you to use a custom runner instead of Jest's default test runner
+ // runner: "jest-runner",
+
+ // The paths to modules that run some code to configure or set up the testing environment before each test
+ // setupFiles: [],
+
+ // A list of paths to modules that run some code to configure or set up the testing framework before each test
+ // setupFilesAfterEnv: [],
+
+ // The number of seconds after which a test is considered as slow and reported as such in the results.
+ // slowTestThreshold: 5,
+
+ // A list of paths to snapshot serializer modules Jest should use for snapshot testing
+ // snapshotSerializers: [],
+
+ // The test environment that will be used for testing
+ testEnvironment: "jsdom",
+
+ // Options that will be passed to the testEnvironment
+ // testEnvironmentOptions: {},
+
+ // Adds a location field to test results
+ // testLocationInResults: false,
+
+ // The glob patterns Jest uses to detect test files
+ testMatch: [
+ "**/__tests__/**/*.test.[jt]s",
+ ],
+
+ // An array of regexp pattern strings that are matched against all test paths, matched tests are skipped
+ // testPathIgnorePatterns: [
+ // "/node_modules/"
+ // ],
+
+ // The regexp pattern or array of patterns that Jest uses to detect test files
+ // testRegex: [],
+
+ // This option allows the use of a custom results processor
+ // testResultsProcessor: undefined,
+
+ // This option allows use of a custom test runner
+ // testRunner: "jest-circus/runner",
+
+ // A map from regular expressions to paths to transformers
+ transform: {
+ "^.+.tsx?$": ["ts-jest",{}],
+ "^.+.svg$": ["/dev/build/svg-blank-transform.js",{}],
+ },
+
+ // An array of regexp pattern strings that are matched against all source file paths, matched files will skip transformation
+ // transformIgnorePatterns: [
+ // "/node_modules/",
+ // "\\.pnp\\.[^\\/]+$"
+ // ],
+
+ // An array of regexp pattern strings that are matched against all modules before the module loader will automatically return a mock for them
+ // unmockedModulePathPatterns: undefined,
+
+ // Indicates whether each individual test should be reported during the run
+ // verbose: undefined,
+
+ // An array of regexp patterns that are matched against all source file paths before re-running tests in watch mode
+ // watchPathIgnorePatterns: [],
+
+ // Whether to use watchman for file crawling
+ // watchman: true,
+};
+
+export default config;
diff --git a/lang/ar/activities.php b/lang/ar/activities.php
new file mode 100644
index 00000000000..69da1213846
--- /dev/null
+++ b/lang/ar/activities.php
@@ -0,0 +1,140 @@
+ 'تم إنشاء صفحة',
+ 'page_create_notification' => 'تم إنشاء الصفحة بنجاح',
+ 'page_update' => 'تم تحديث الصفحة',
+ 'page_update_notification' => 'تم تحديث الصفحة بنجاح',
+ 'page_delete' => 'تم حذف الصفحة',
+ 'page_delete_notification' => 'تم حذف الصفحة بنجاح',
+ 'page_restore' => 'تمت استعادة الصفحة',
+ 'page_restore_notification' => 'تمت استعادة الصفحة بنجاح',
+ 'page_move' => 'تم نقل الصفحة',
+ 'page_move_notification' => 'تم نقل الصفحة بنجاح',
+
+ // Chapters
+ 'chapter_create' => 'تم إنشاء فصل',
+ 'chapter_create_notification' => 'تم إنشاء الفصل بنجاح',
+ 'chapter_update' => 'تم تحديث الفصل',
+ 'chapter_update_notification' => 'تم تحديث الفصل بنجاح',
+ 'chapter_delete' => 'تم حذف الفصل',
+ 'chapter_delete_notification' => 'تم حذف الفصل بنجاح',
+ 'chapter_move' => 'تم نقل الفصل',
+ 'chapter_move_notification' => 'تم نقل الفصل بنجاح',
+
+ // Books
+ 'book_create' => 'تم إنشاء كتاب',
+ 'book_create_notification' => 'تم إنشاء الكتاب بنجاح',
+ 'book_create_from_chapter' => 'تم تحويل الفصل إلى كتاب',
+ 'book_create_from_chapter_notification' => 'تم تحويل الفصل إلى كتاب بنجاح',
+ 'book_update' => 'تم تحديث الكتاب',
+ 'book_update_notification' => 'تم تحديث الكتاب بنجاح',
+ 'book_delete' => 'تم حذف الكتاب',
+ 'book_delete_notification' => 'تم حذف الكتاب بنجاح',
+ 'book_sort' => 'تم سرد الكتاب',
+ 'book_sort_notification' => 'تم إعادة فرز الكتاب بنجاح',
+
+ // Bookshelves
+ 'bookshelf_create' => 'تم إنشاء رف',
+ 'bookshelf_create_notification' => 'تم إنشاء رف بنجاح',
+ 'bookshelf_create_from_book' => 'تم تحويل الكتاب إلى رف',
+ 'bookshelf_create_from_book_notification' => 'تم تحويل الكتاب إلى رف بنجاح',
+ 'bookshelf_update' => 'تم تحديث الرف',
+ 'bookshelf_update_notification' => 'تم تحديث الرف بنجاح',
+ 'bookshelf_delete' => 'تم حذف الرف',
+ 'bookshelf_delete_notification' => 'تم حذف الرف بنجاح',
+
+ // Revisions
+ 'revision_restore' => 'استعادة مراجعة',
+ 'revision_delete' => 'مراجعة محذوفة',
+ 'revision_delete_notification' => 'تم حذف المراجعة بنجاح',
+
+ // Favourites
+ 'favourite_add_notification' => 'تم إضافة ":name" إلى المفضلة لديك',
+ 'favourite_remove_notification' => 'تم إزالة ":name" من المفضلة لديك',
+
+ // Watching
+ 'watch_update_level_notification' => 'تم تحديث الإعدادات المشاهدة بنجاح',
+
+ // Auth
+ 'auth_login' => 'تم تسجيل الدخول',
+ 'auth_register' => 'سجل كمستخدم جديد',
+ 'auth_password_reset_request' => 'طلب رابط جديد لإعادة تعيين كلمة السر',
+ 'auth_password_reset_update' => 'إعادة تعيين كلمة مرور المستخدم',
+ 'mfa_setup_method' => 'طريقة المصادقة متعددة العوامل المُهيأة',
+ 'mfa_setup_method_notification' => 'تم إعداد المصادقة متعددة العوامل بنجاح',
+ 'mfa_remove_method' => 'إزالة طريقة المصادقة متعددة العوامل',
+ 'mfa_remove_method_notification' => 'تمت إزالة المصادقة متعددة العوامل بنجاح',
+
+ // Settings
+ 'settings_update' => 'تحديث الإعدادات',
+ 'settings_update_notification' => 'تم تحديث الإعدادات',
+ 'maintenance_action_run' => 'إجراء الصيانة',
+
+ // Webhooks
+ 'webhook_create' => 'تم إنشاء خطاف ويب',
+ 'webhook_create_notification' => 'تم إنشاء خطاف ويب بنجاح',
+ 'webhook_update' => 'تم تحديث خطاف الويب',
+ 'webhook_update_notification' => 'تم تحديث خطاف الويب بنجاح',
+ 'webhook_delete' => 'حذف خطاف ويب',
+ 'webhook_delete_notification' => 'تم حذف خطاف الويب بنجاح',
+
+ // Imports
+ 'import_create' => 'تم إنشاء الاستيراد',
+ 'import_create_notification' => 'تم رفع الاستيراد بنجاح',
+ 'import_run' => 'تم تحديث الاستيراد',
+ 'import_run_notification' => 'تم استيراد المحتوى بنجاح',
+ 'import_delete' => 'تم حذف الاستيراد',
+ 'import_delete_notification' => 'تم الاستيراد بنجاح',
+
+ // Users
+ 'user_create' => 'إنشاء مستخدم',
+ 'user_create_notification' => 'تم إنشاء الحساب',
+ 'user_update' => 'المستخدم المحدث',
+ 'user_update_notification' => 'تم تحديث المستخدم بنجاح',
+ 'user_delete' => 'المستخدم المحذوف',
+ 'user_delete_notification' => 'تم إزالة المستخدم بنجاح',
+
+ // API Tokens
+ 'api_token_create' => 'تم إنشاء رمز واجهة برمجة التطبيقات -API-',
+ 'api_token_create_notification' => 'تم إنشاء واجهة برمجة التطبيقات -API- بنجاح',
+ 'api_token_update' => 'رمز واجهة برمجة التطبيقات المحدث',
+ 'api_token_update_notification' => 'تم تحديث رمز واجهة برمجة التطبيقات -API- بنجاح',
+ 'api_token_delete' => 'رمز واجهة برمجة التطبيقات المحذوف',
+ 'api_token_delete_notification' => 'تم حذف رمز واجهة برمجة التطبيقات -API- بنجاح',
+
+ // Roles
+ 'role_create' => 'إنشاء صَلاحِيَة',
+ 'role_create_notification' => 'تم إنشاء الدور بنجاح',
+ 'role_update' => 'حدّث الدور',
+ 'role_update_notification' => 'تم تحديث الدور بنجاح',
+ 'role_delete' => 'حذف الدور',
+ 'role_delete_notification' => 'تم حذف الدور بنجاح',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'سلة إعادة التدوير المفرغة',
+ 'recycle_bin_restore' => 'استعادة من سلة المحذوفات',
+ 'recycle_bin_destroy' => 'إزالة من سلة المحذوفات',
+
+ // Comments
+ 'commented_on' => 'تم التعليق',
+ 'comment_create' => 'تعليق مضاف',
+ 'comment_update' => 'تعليق محدث',
+ 'comment_delete' => 'تعليق محذوف',
+
+ // Sort Rules
+ 'sort_rule_create' => 'تم إنشاء قاعدة الفرز',
+ 'sort_rule_create_notification' => 'تم إنشاء قاعدة الفرز بنجاح',
+ 'sort_rule_update' => 'تم تحديث قاعدة الفرز',
+ 'sort_rule_update_notification' => 'تم تحديث قاعدة الفرز بنجاح',
+ 'sort_rule_delete' => 'تم حذف قاعدة الفرز',
+ 'sort_rule_delete_notification' => 'تم حذف قاعدة الفرز بنجاح',
+
+ // Other
+ 'permissions_update' => 'تحديث الصلاحيات',
+];
diff --git a/lang/ar/auth.php b/lang/ar/auth.php
new file mode 100644
index 00000000000..fb6f3d1cf72
--- /dev/null
+++ b/lang/ar/auth.php
@@ -0,0 +1,117 @@
+ 'البيانات المعطاة لا توافق سجلاتنا.',
+ 'throttle' => 'تجاوزت الحد الأقصى من المحاولات. الرجاء المحاولة مرة أخرى بعد :seconds ثانية/ثواني.',
+
+ // Login & Register
+ 'sign_up' => 'إنشاء حساب',
+ 'log_in' => 'تسجيل الدخول',
+ 'log_in_with' => 'تسجيل الدخول باستخدام :socialDriver',
+ 'sign_up_with' => 'إنشاء حساب باستخدام :socialDriver',
+ 'logout' => 'الخروج',
+
+ 'name' => 'الاسم',
+ 'username' => 'اسم المستخدم',
+ 'email' => 'البريد الإلكتروني',
+ 'password' => 'كلمة السر',
+ 'password_confirm' => 'تأكيد كلمة السر',
+ 'password_hint' => 'يجب أن تحتوي كلمة السر على 8 خانات على الأقل',
+ 'forgot_password' => 'نسيت كلمة السر؟',
+ 'remember_me' => 'تذكرني',
+ 'ldap_email_hint' => 'الرجاء إدخال عنوان بريد إلكتروني لاستخدامه مع الحساب.',
+ 'create_account' => 'إنشاء حساب',
+ 'already_have_account' => 'لديك حساب مسبقاً؟',
+ 'dont_have_account' => 'ليس لديك حساب؟',
+ 'social_login' => 'تسجيل الدخول باستخدام حسابات التواصل الاجتماعي',
+ 'social_registration' => 'إنشاء حساب باستخدام حسابات التواصل الاجتماعي',
+ 'social_registration_text' => 'إنشاء حساب والدخول باستخدام خدمة أخرى.',
+
+ 'register_thanks' => 'شكراً لتسجيل حسابك!',
+ 'register_confirm' => 'الرجاء مراجعة البريد الإلكتروني والضغط على زر التأكيد لاستخدام :appName.',
+ 'registrations_disabled' => 'التسجيل مغلق حالياً',
+ 'registration_email_domain_invalid' => 'المجال الخاص بالبريد الإلكتروني لا يملك حق الوصول لهذا التطبيق',
+ 'register_success' => 'شكراً لإنشاء حسابكم! تم تسجيلكم ودخولكم للحساب الخاص بكم.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'محاولة تسجيل الدخول',
+ 'auto_init_starting_desc' => 'نحن نتصل بنظام المصادقة الخاص بك لبدء عملية تسجيل الدخول. إذا لم يحدث أي تقدم بعد 5 ثوان يمكنك محاولة النقر على الرابط أدناه.',
+ 'auto_init_start_link' => 'المتابعة مع المصادقة',
+
+ // Password Reset
+ 'reset_password' => 'استعادة كلمة السر',
+ 'reset_password_send_instructions' => 'أدخل بريدك الإلكتروني بالأسفل وسيتم إرسال رسالة برابط لاستعادة كلمة السر.',
+ 'reset_password_send_button' => 'أرسل رابط الاستعادة',
+ 'reset_password_sent' => 'سيتم إرسال رابط إعادة تعيين كلمة السر إلى عنوان البريد الإلكتروني هذا إذا كان موجودًا في النظام.',
+ 'reset_password_success' => 'تمت استعادة كلمة السر بنجاح.',
+ 'email_reset_subject' => 'استعد كلمة السر الخاصة بتطبيق :appName',
+ 'email_reset_text' => 'تم إرسال هذه الرسالة بسبب تلقينا لطلب استعادة كلمة السر الخاصة بحسابكم.',
+ 'email_reset_not_requested' => 'إذا لم يتم طلب استعادة كلمة السر من قبلكم، فلا حاجة لاتخاذ أية خطوات.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'تأكيد بريدكم الإلكتروني لتطبيق :appName',
+ 'email_confirm_greeting' => 'شكرا لانضمامكم إلى :appName!',
+ 'email_confirm_text' => 'الرجاء تأكيد بريدكم الإلكتروني بالضغط على الزر أدناه:',
+ 'email_confirm_action' => 'تأكيد البريد الإلكتروني',
+ 'email_confirm_send_error' => 'تأكيد البريد الإلكتروني مطلوب ولكن النظام لم يستطع إرسال الرسالة. تواصل مع مشرف النظام للتأكد من إعدادات البريد.',
+ 'email_confirm_success' => 'تم تأكيد بريدك الإلكتروني! يمكنك الآن تسجيل الدخول باستخدام عنوان البريد الإلكتروني هذا.',
+ 'email_confirm_resent' => 'تمت إعادة إرسال رسالة التأكيد، الرجاء مراجعة صندوق الوارد.',
+ 'email_confirm_thanks' => 'شكرا للتأكيد!',
+ 'email_confirm_thanks_desc' => 'الرجاء الانتظار لحظة بينما يتم التعامل مع التأكيد الخاص بك. إذا لم يتم إعادة توجيهك بعد 3 ثوان اضغط على الرابط "المتابعة" أدناه للمتابعة.',
+
+ 'email_not_confirmed' => 'لم يتم تأكيد البريد الإلكتروني',
+ 'email_not_confirmed_text' => 'لم يتم بعد تأكيد عنوان البريد الإلكتروني.',
+ 'email_not_confirmed_click_link' => 'الرجاء الضغط على الرابط المرسل إلى بريدكم الإلكتروني بعد تسجيلكم.',
+ 'email_not_confirmed_resend' => 'إذا لم يتم إيجاد الرسالة، بإمكانكم إعادة إرسال رسالة التأكيد عن طريق تعبئة النموذج أدناه.',
+ 'email_not_confirmed_resend_button' => 'إعادة إرسال رسالة التأكيد',
+
+ // User Invite
+ 'user_invite_email_subject' => 'تمت دعوتك للانضمام إلى صفحة الحالة الخاصة بـ :app_name!',
+ 'user_invite_email_greeting' => 'تم إنشاء حساب مستخدم لك على :appName.',
+ 'user_invite_email_text' => 'انقر على الزر أدناه لتعيين كلمة سر الحساب والحصول على الوصول:',
+ 'user_invite_email_action' => 'كلمة سر المستخدم',
+ 'user_invite_page_welcome' => 'مرحبا بكم في :appName!',
+ 'user_invite_page_text' => 'لإكمال حسابك والحصول على حق الوصول تحتاج إلى تعيين كلمة السر سيتم استخدامها لتسجيل الدخول إلى :appName في الزيارات المستقبلية.',
+ 'user_invite_page_confirm_button' => 'تأكيد كلمة السر',
+ 'user_invite_success_login' => 'تم تأكيد كلمة السر. يمكنك الآن تسجيل الدخول باستخدام كلمة السر المحددة للوصول إلى :appName !',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'إعداد المصادقة متعددة العوامل',
+ 'mfa_setup_desc' => 'إعداد المصادقة متعددة العوامل كطبقة إضافية من الأمان لحساب المستخدم الخاص بك.',
+ 'mfa_setup_configured' => 'تم إعداده مسبقاً',
+ 'mfa_setup_reconfigure' => 'إعادة التكوين',
+ 'mfa_setup_remove_confirmation' => 'متأكد من أنك تريد إزالة طريقة المصادقة متعددة العوامل هذه؟',
+ 'mfa_setup_action' => 'إعداد',
+ 'mfa_backup_codes_usage_limit_warning' => 'لديك أقل من 5 رموز احتياطية متبقية، الرجاء إنشاء وتخزين مجموعة جديدة قبل نفاد الرموز لتجنب إغلاق حسابك.',
+ 'mfa_option_totp_title' => 'تطبيق الجوال',
+ 'mfa_option_totp_desc' => 'لاستخدام المصادقة المتعددة العوامل، ستحتاج إلى تطبيق جوال يدعم كلمة السر المؤقته -TOTP- مثل جوجل أوثنتيكاتور -Google Authenticator- أو أوثي -Authy- أو مايكروسوفت أوثنتيكاتور -Microsoft Authenticator-.',
+ 'mfa_option_backup_codes_title' => 'رموز النسخ الاحتياطي',
+ 'mfa_option_backup_codes_desc' => 'إنشاء مجموعة من رموز النسخ الاحتياطية للاستخدام مرة واحدة و التي سَتُدِخلها عند تسجيل الدخول للتحقق من هويتك. احرص أن تخزينها في مكان آمن.',
+ 'mfa_gen_confirm_and_enable' => 'تأكيد وتمكين',
+ 'mfa_gen_backup_codes_title' => 'إعداد رموز النسخ الاحتياطي',
+ 'mfa_gen_backup_codes_desc' => 'خَزِن قائمة الرموز أدناه في مكان آمن. عند الوصول إلى النظام، ستتمكن من استخدام أحد الرموز كآلية مصادقة ثانية.',
+ 'mfa_gen_backup_codes_download' => 'تنزيل الرموز',
+ 'mfa_gen_backup_codes_usage_warning' => 'يمكن استخدام كل رمز مرة واحدة فقط',
+ 'mfa_gen_totp_title' => 'إعداد تطبيق الجوال',
+ 'mfa_gen_totp_desc' => 'لاستخدام المصادقة المتعددة ، ستحتاج إلى تطبيق جوال كلمة السر المؤقته -TOTP- مثل جوجل أوثنتيكاتور -Google Authenticator- أو أوثي -Authy- أو مايكروسوفت أوثنتيكاتور -Microsoft Authenticator-.',
+ 'mfa_gen_totp_scan' => 'امسح رمز الاستجابة السريعة -QR- أدناه باستخدام تطبيق المصادقة المفضل لديك للبدء.',
+ 'mfa_gen_totp_verify_setup' => 'التحقق من الإعداد',
+ 'mfa_gen_totp_verify_setup_desc' => 'تحقق أن كل شيء يعمل عن طريق إدخال رمز تم إنشاؤه داخل تطبيق المصادقة الخاص بك في مربع الإدخال أدناه:',
+ 'mfa_gen_totp_provide_code_here' => 'أدخل الرمز الذي تم إنشاؤه للتطبيق الخاص بك هنا',
+ 'mfa_verify_access' => 'التحقق من الوصول',
+ 'mfa_verify_access_desc' => 'يتطلب حساب المستخدم الخاص بك تأكيد هويتك عن طريق مستوى إضافي من التحقق قبل منحك حق الوصول. تحقق استخدام إحدى الطرق التي إعدادها للمتابعة.',
+ 'mfa_verify_no_methods' => 'لا توجد طرق معدة',
+ 'mfa_verify_no_methods_desc' => 'لم يتم العثور على طرق مصادقة متعددة العوامل لحسابك. ستحتاج إلى إعداد طريقة واحدة على الأقل قبل أن تتمكن من الوصول.',
+ 'mfa_verify_use_totp' => 'التحقق باستخدام تطبيق الجوال',
+ 'mfa_verify_use_backup_codes' => 'التحقق باستخدام رمز النسخ الاحتياطي',
+ 'mfa_verify_backup_code' => 'الرموز الاحتياطية',
+ 'mfa_verify_backup_code_desc' => 'أدخل أحد الرموز الاحتياطية المتبقية أدناه:',
+ 'mfa_verify_backup_code_enter_here' => 'أدخل الرمز الاحتياطي هنا',
+ 'mfa_verify_totp_desc' => 'أدخل الرمز الذي تم إنشاؤه باستخدام تطبيق الجوال الخاص بك، أدناه:',
+ 'mfa_setup_login_notification' => 'تم إعداد طريقة الدخول متعددة العوامل، يرجى الآن تسجيل الدخول مرة أخرى باستخدام الطريقة التي تم إعدادها.',
+];
diff --git a/lang/ar/common.php b/lang/ar/common.php
new file mode 100644
index 00000000000..44d057d7eb1
--- /dev/null
+++ b/lang/ar/common.php
@@ -0,0 +1,115 @@
+ 'إلغاء',
+ 'close' => 'إغلاق',
+ 'confirm' => 'تأكيد',
+ 'back' => 'رجوع',
+ 'save' => 'حفظ',
+ 'continue' => 'استمرار',
+ 'select' => 'تحديد',
+ 'toggle_all' => 'تبديل الكل',
+ 'more' => 'المزيد',
+
+ // Form Labels
+ 'name' => 'الاسم',
+ 'description' => 'الوصف',
+ 'role' => 'الدور',
+ 'cover_image' => 'صورة الغلاف',
+ 'cover_image_description' => 'يجب أن يكون حجم هذه الصورة تقريبًا 440 في 250 بكسل، مع أنّه سيتم تحجيمها وقصها بشكل مرن لتناسب واجهة المستخدم في سيناريوهات مختلفة حسب الحاجة، لذا فإن الأبعاد الفعلية للعرض ستختلف.',
+
+ // Actions
+ 'actions' => 'إجراءات',
+ 'view' => 'عرض',
+ 'view_all' => 'عرض الكل',
+ 'new' => 'جديد',
+ 'create' => 'إنشاء',
+ 'update' => 'تحديث',
+ 'edit' => 'تعديل',
+ 'archive' => 'أرشف',
+ 'unarchive' => 'إلغاء الأرشفة',
+ 'sort' => 'سرد',
+ 'move' => 'نقل',
+ 'copy' => 'نسخ',
+ 'reply' => 'رد',
+ 'delete' => 'حذف',
+ 'delete_confirm' => 'تأكيد الحذف',
+ 'search' => 'بحث',
+ 'search_clear' => 'مسح البحث',
+ 'reset' => 'إعادة تعيين',
+ 'remove' => 'إزالة',
+ 'add' => 'إضافة',
+ 'configure' => 'ضبط',
+ 'manage' => 'إدارة',
+ 'fullscreen' => 'شاشة كاملة',
+ 'favourite' => 'أضف إلى المفضلة',
+ 'unfavourite' => 'إزالة من المفضلة',
+ 'next' => 'التالي',
+ 'previous' => 'السابق',
+ 'filter_active' => 'التصفية المفعلة:',
+ 'filter_clear' => 'مسح التصفية',
+ 'download' => 'تنزيل',
+ 'open_in_tab' => 'فتح في علامة تبويب',
+ 'open' => 'فتح',
+
+ // Sort Options
+ 'sort_options' => 'خيارات الفرز',
+ 'sort_direction_toggle' => 'الفرز وفق الاتجاه',
+ 'sort_ascending' => 'فرز تصاعدي',
+ 'sort_descending' => 'فرز تنازلي',
+ 'sort_name' => 'الاسم',
+ 'sort_default' => 'افتراضي',
+ 'sort_created_at' => 'تاريخ الإنشاء',
+ 'sort_updated_at' => 'تاريخ التحديث',
+
+ // Misc
+ 'deleted_user' => 'المستخدم المحذوف',
+ 'no_activity' => 'لا يوجد نشاط لعرضه',
+ 'no_items' => 'لا توجد عناصر متوفرة',
+ 'back_to_top' => 'العودة إلى الأعلى',
+ 'skip_to_main_content' => 'تخطى إلى المحتوى الرئيسي',
+ 'toggle_details' => 'عرض / إخفاء التفاصيل',
+ 'toggle_thumbnails' => 'عرض / إخفاء الصور المصغرة',
+ 'details' => 'التفاصيل',
+ 'grid_view' => 'عرض شبكي',
+ 'list_view' => 'عرض منسدل',
+ 'default' => 'افتراضي',
+ 'breadcrumb' => 'شريط التنقل',
+ 'status' => 'الحالة',
+ 'status_active' => 'نشط',
+ 'status_inactive' => 'غير نشط',
+ 'never' => 'مطلقاً',
+ 'none' => 'لا شَيْء',
+
+ // Header
+ 'homepage' => 'الصفحة الرئيسية',
+ 'header_menu_expand' => 'عرض القائمة',
+ 'profile_menu' => 'قائمة ملف التعريف',
+ 'view_profile' => 'عرض الملف الشخصي',
+ 'edit_profile' => 'تعديل الملف الشخصي',
+ 'dark_mode' => 'الوضع المظلم',
+ 'light_mode' => 'الوضع المضيء',
+ 'global_search' => 'البحث العام',
+
+ // Layout tabs
+ 'tab_info' => 'معلومات',
+ 'tab_info_label' => 'تبويب: إظهار المعلومات الثانوية',
+ 'tab_content' => 'المحتوى',
+ 'tab_content_label' => 'تبويب: إظهار المحتوى الأساسي',
+
+ // Email Content
+ 'email_action_help' => 'إذا واجهتكم مشكلة عند ضغط زر ":actionText" فبإمكانكم نسخ الرابط أدناه ولصقه بالمتصفح:',
+ 'email_rights' => 'جميع الحقوق محفوظة',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'سياسة الخصوصية',
+ 'terms_of_service' => 'اتفاقية شروط الخدمة',
+
+ // OpenSearch
+ 'opensearch_description' => 'البحث عن :appName',
+];
diff --git a/lang/ar/components.php b/lang/ar/components.php
new file mode 100644
index 00000000000..12bc0e58ae9
--- /dev/null
+++ b/lang/ar/components.php
@@ -0,0 +1,46 @@
+ 'تحديد صورة',
+ 'image_list' => 'قائمة الصور',
+ 'image_details' => 'تفاصيل الصورة',
+ 'image_upload' => 'تحميل صورة',
+ 'image_intro' => 'هنا يمكنك تحديد وإدارة الصور التي تم تحميلها مسبقًا إلى النظام.',
+ 'image_intro_upload' => 'تحميل صورة جديدة عن طريق سحب الصورة إلى هذه النافذة، أو باستخدام زر "تحميل صورة" أعلاه.',
+ 'image_all' => 'الكل',
+ 'image_all_title' => 'عرض جميع الصور',
+ 'image_book_title' => 'عرض الصور المرفوعة لهذا الكتاب',
+ 'image_page_title' => 'عرض الصور المرفوعة لهذه الصفحة',
+ 'image_search_hint' => 'البحث باستخدام اسم الصورة',
+ 'image_uploaded' => 'وقت الرفع :uploadedDate',
+ 'image_uploaded_by' => 'تم تحميلها من قبل :userName',
+ 'image_uploaded_to' => 'تم رفعها إلى :pageLink',
+ 'image_updated' => 'تم تحديثها :updatedate',
+ 'image_load_more' => 'المزيد',
+ 'image_image_name' => 'اسم الصورة',
+ 'image_delete_used' => 'هذه الصورة مستخدمة بالصفحات أدناه.',
+ 'image_delete_confirm_text' => 'هل أنت متأكد من أنك تريد حذف هذه الصورة؟',
+ 'image_select_image' => 'تحديد الصورة',
+ 'image_dropzone' => 'قم بإسقاط الصورة أو اضغط هنا للرفع',
+ 'image_dropzone_drop' => 'إسقاط صورة أو اضغط هنا للرفع',
+ 'images_deleted' => 'تم حذف الصور',
+ 'image_preview' => 'معاينة الصور',
+ 'image_upload_success' => 'تم رفع الصورة بنجاح',
+ 'image_update_success' => 'تم تحديث تفاصيل الصورة بنجاح',
+ 'image_delete_success' => 'تم حذف الصورة بنجاح',
+ 'image_replace' => 'استبدال صورة',
+ 'image_replace_success' => 'تم تحديث الصورة بنجاح',
+ 'image_rebuild_thumbs' => 'تجديد تغيرات الحجم',
+ 'image_rebuild_thumbs_success' => 'تم إعادة بناء تغيرات حجم الصورة بنجاح!',
+
+ // Code Editor
+ 'code_editor' => 'تعديل الشفرة',
+ 'code_language' => 'لغة الشفرة',
+ 'code_content' => 'محتويات الشفرة',
+ 'code_session_history' => 'سجل الدورة',
+ 'code_save' => 'حفظ الشفرة',
+];
diff --git a/lang/ar/editor.php b/lang/ar/editor.php
new file mode 100644
index 00000000000..b3a8fd3c7be
--- /dev/null
+++ b/lang/ar/editor.php
@@ -0,0 +1,182 @@
+ 'عام',
+ 'advanced' => 'متقدم',
+ 'none' => 'بدون',
+ 'cancel' => 'إلغاء',
+ 'save' => 'حفظ',
+ 'close' => 'إغلاق',
+ 'apply' => 'تطبيق',
+ 'undo' => 'تراجع',
+ 'redo' => 'إعادة التنفيذ',
+ 'left' => 'يسار',
+ 'center' => 'منتصف',
+ 'right' => 'يمين',
+ 'top' => 'الأعلى',
+ 'middle' => 'وسط',
+ 'bottom' => 'أسفل',
+ 'width' => 'العرض',
+ 'height' => 'الارتفاع',
+ 'More' => 'المزيد',
+ 'select' => 'إختار...',
+
+ // Toolbar
+ 'formats' => 'التنسيقات',
+ 'header_large' => 'رأس صفحة كبير',
+ 'header_medium' => 'رأس صفحة متوسط',
+ 'header_small' => 'رأس صفحة صغير',
+ 'header_tiny' => 'رأس صفحة صغير جدا',
+ 'paragraph' => 'فقرة',
+ 'blockquote' => 'صندوق اقتباس',
+ 'inline_code' => 'كود مدمج',
+ 'callouts' => 'تعليق تفسيري',
+ 'callout_information' => 'معلومات',
+ 'callout_success' => 'نجاح',
+ 'callout_warning' => 'تحذير',
+ 'callout_danger' => 'خطر',
+ 'bold' => 'غامق',
+ 'italic' => 'مائل',
+ 'underline' => 'تحته خط',
+ 'strikethrough' => 'مشطوب',
+ 'superscript' => 'نص مرتفع',
+ 'subscript' => 'نص منخفض',
+ 'text_color' => 'لون النص',
+ 'highlight_color' => 'لون التمييز',
+ 'custom_color' => 'لون مخصص',
+ 'remove_color' => 'إزالة اللون',
+ 'background_color' => 'لون الخلفية',
+ 'align_left' => 'محاذاة لليسار',
+ 'align_center' => 'محاذاة بالمنتصف',
+ 'align_right' => 'مُحاذاة لليمين',
+ 'align_justify' => 'المحاذاة',
+ 'list_bullet' => 'قائمة نقاط',
+ 'list_numbered' => 'قائمة مرقمة',
+ 'list_task' => 'قائمة المهام',
+ 'indent_increase' => 'زيادة البادئة',
+ 'indent_decrease' => 'إنقاص البادئة',
+ 'table' => 'جدول',
+ 'insert_image' => 'ادراج صورة',
+ 'insert_image_title' => 'إضافة/تحرير الصورة',
+ 'insert_link' => 'إضافة/تعديل الرابط',
+ 'insert_link_title' => 'إضافة/تحرير الرابط',
+ 'insert_horizontal_line' => 'إضافة خط أفقي',
+ 'insert_code_block' => 'إضافة مربع رموز برمجية',
+ 'edit_code_block' => 'تعديل مربع الرموز البرمجية',
+ 'insert_drawing' => 'إضافة/تعديل الرسم',
+ 'drawing_manager' => 'إدارة الرسم',
+ 'insert_media' => 'إضافة/تحرير الوسائط',
+ 'insert_media_title' => 'إضافة/تحرير الوسائط',
+ 'clear_formatting' => 'مسح التنسيق',
+ 'source_code' => 'الرمز البرمجي',
+ 'source_code_title' => 'الرمز البرمجي',
+ 'fullscreen' => 'شاشة كاملة',
+ 'image_options' => 'خيارات الصورة',
+
+ // Tables
+ 'table_properties' => 'خصائص الجدول',
+ 'table_properties_title' => 'خصائص الجدول',
+ 'delete_table' => 'حذف الجدول',
+ 'table_clear_formatting' => 'مسح تنسيق الجدول',
+ 'resize_to_contents' => 'تغيير الحجم إلى المحتوى',
+ 'row_header' => 'رأس الصف',
+ 'insert_row_before' => 'إضافة صف قبل',
+ 'insert_row_after' => 'إضافة صف بعد',
+ 'delete_row' => 'حذف الصف',
+ 'insert_column_before' => 'إدراج عمود قبل',
+ 'insert_column_after' => 'إدراج عمود بعد',
+ 'delete_column' => 'حذف عمود',
+ 'table_cell' => 'خلية',
+ 'table_row' => 'صف',
+ 'table_column' => 'عمود',
+ 'cell_properties' => 'خصائص الخلية',
+ 'cell_properties_title' => 'خصائص الخلية',
+ 'cell_type' => 'نوع الخلية',
+ 'cell_type_cell' => 'الخلية',
+ 'cell_scope' => 'النِطَاق',
+ 'cell_type_header' => 'عنوان الخلية',
+ 'merge_cells' => 'دمج الخلايا',
+ 'split_cell' => 'خلية منقسمة',
+ 'table_row_group' => 'مجموعة الصفوف',
+ 'table_column_group' => 'مجموعة الأعمدة',
+ 'horizontal_align' => 'محاذاة أفقية',
+ 'vertical_align' => 'محاذاة عمودية',
+ 'border_width' => 'عرض الحدود',
+ 'border_style' => 'نمط الحدود',
+ 'border_color' => 'لون الحدود',
+ 'row_properties' => 'خصائص الصف',
+ 'row_properties_title' => 'خصائص الصف',
+ 'cut_row' => 'فص الصف',
+ 'copy_row' => 'نسخ الصف',
+ 'paste_row_before' => 'لصق الصف قبل',
+ 'paste_row_after' => 'لصق الصف بعد',
+ 'row_type' => 'نوع الصف',
+ 'row_type_header' => 'العنوان',
+ 'row_type_body' => 'المحتوى ',
+ 'row_type_footer' => 'تذييل',
+ 'alignment' => 'المحاذاة',
+ 'cut_column' => 'قص العمود',
+ 'copy_column' => 'نسخ العمود',
+ 'paste_column_before' => 'لصق عمود قبل',
+ 'paste_column_after' => 'لصق عمود بعد',
+ 'cell_padding' => 'هوامش الخلايا',
+ 'cell_spacing' => 'تباعد الخلايا',
+ 'caption' => 'الوصف',
+ 'show_caption' => 'إظهار الوصف',
+ 'constrain' => 'تقييد النسب',
+ 'cell_border_solid' => 'لون كامل',
+ 'cell_border_dotted' => 'مُنَقط',
+ 'cell_border_dashed' => 'متقطع',
+ 'cell_border_double' => 'مزدوج',
+ 'cell_border_groove' => 'أخدود',
+ 'cell_border_ridge' => 'الحافَة',
+ 'cell_border_inset' => 'الداخلية',
+ 'cell_border_outset' => 'الخارجية',
+ 'cell_border_none' => 'لا شَيْء',
+ 'cell_border_hidden' => 'مخفي',
+
+ // Images, links, details/summary & embed
+ 'source' => 'المصدر',
+ 'alt_desc' => 'وصف بديل',
+ 'embed' => 'تضمين',
+ 'paste_embed' => 'قم بلصق الرموز المصدرية المضمنة الخاص بك أدناه:',
+ 'url' => 'الرابط',
+ 'text_to_display' => 'النص المراد عرضه',
+ 'title' => 'العنوان',
+ 'browse_links' => 'تصفح الروابط',
+ 'open_link' => 'افتح الرابط',
+ 'open_link_in' => 'افتح الرابط في...',
+ 'open_link_current' => 'النافذة الحالية',
+ 'open_link_new' => 'نافذة جديدة',
+ 'remove_link' => 'إزالة الرابط',
+ 'insert_collapsible' => 'أدخل كتلة قابلة للطي',
+ 'collapsible_unwrap' => 'بسط',
+ 'edit_label' => 'عدل الوصف',
+ 'toggle_open_closed' => 'التبديل بين الفتح والإغلاق',
+ 'collapsible_edit' => 'تحرير الكتلة القابلة للطي',
+ 'toggle_label' => 'تبديل التسمية',
+
+ // About view
+ 'about' => 'عن المحرر',
+ 'about_title' => 'حول محرر ما تراه هو ما تحصل عليه -WYSIWYG-',
+ 'editor_license' => 'رخصة المحرر وحقوق التأليف والنشر',
+ 'editor_lexical_license' => 'تم إنشاء هذا المحرر باعتباره فرعًا لـ :lexicalLink الذي يتم توزيعه بموجب ترخيص معهد ماساتشوستس للتقانة -MIT-.',
+ 'editor_lexical_license_link' => 'يمكنك العثور على تفاصيل الترخيص الكاملة هنا.',
+ 'editor_tiny_license' => 'تم إنشاء هذا المحرر باستخدام :tinyLink والذي يتم توفيره بموجب ترخيص معهد ماساتشوستس للتقانة -MIT-.',
+ 'editor_tiny_license_link' => 'يمكن الاطلاع هنا على تفاصيل حقوق التأليف والنشر والترخيص الخاصة بتاینیامسیای -TinyMCE-.',
+ 'save_continue' => 'حفظ الصفحة ومتابعة',
+ 'callouts_cycle' => '(استمر في الضغط للتبديل بين الأنواع)',
+ 'link_selector' => 'رابط للمحتوى',
+ 'shortcuts' => 'الاختصارات',
+ 'shortcut' => 'الاختصار',
+ 'shortcuts_intro' => 'الاختصارات التالية متاحة في المحرر:',
+ 'windows_linux' => '(ويندوز/لينكس)',
+ 'mac' => '(ماك)',
+ 'description' => 'الوصف',
+];
diff --git a/lang/ar/entities.php b/lang/ar/entities.php
new file mode 100644
index 00000000000..8b2882c6098
--- /dev/null
+++ b/lang/ar/entities.php
@@ -0,0 +1,476 @@
+ 'أنشئت مؤخراً',
+ 'recently_created_pages' => 'صفحات أنشئت مؤخراً',
+ 'recently_updated_pages' => 'صفحات حُدثت مؤخراً',
+ 'recently_created_chapters' => 'فصول أنشئت مؤخراً',
+ 'recently_created_books' => 'كتب أنشئت مؤخراً',
+ 'recently_created_shelves' => 'أرفف أنشئت مؤخراً',
+ 'recently_update' => 'حُدثت مؤخراً',
+ 'recently_viewed' => 'عُرضت مؤخراً',
+ 'recent_activity' => 'نشاطات حديثة',
+ 'create_now' => 'أنشئ الآن',
+ 'revisions' => 'مراجعات',
+ 'meta_revision' => 'مراجعة #:revisionCount',
+ 'meta_created' => 'أنشئ :timeLength',
+ 'meta_created_name' => 'أنشئ :timeLength بواسطة :user',
+ 'meta_updated' => 'مُحدث :timeLength',
+ 'meta_updated_name' => 'مُحدث :timeLength بواسطة :user',
+ 'meta_owned_name' => 'مملوكة لـ:user',
+ 'meta_reference_count' => 'مشار إليه :count مرة|مشار إليه :count مرة',
+ 'entity_select' => 'اختيار الكيان',
+ 'entity_select_lack_permission' => 'ليس لديك الصلاحيات المطلوبة لتحديد هذا العنصر',
+ 'images' => 'صور',
+ 'my_recent_drafts' => 'مسوداتي الحديثة',
+ 'my_recently_viewed' => 'ما عرضته مؤخراً',
+ 'my_most_viewed_favourites' => 'مفضلاتي الأكثر مشاهدة',
+ 'my_favourites' => 'مفضلاتي',
+ 'no_pages_viewed' => 'لم تستعرض أي صفحات',
+ 'no_pages_recently_created' => 'لم تنشأ أي صفحات مؤخراً',
+ 'no_pages_recently_updated' => 'لم تُحدّث أي صفحات مؤخراً',
+ 'export' => 'تصدير',
+ 'export_html' => 'صفحة ويب',
+ 'export_pdf' => 'ملف PDF',
+ 'export_text' => 'ملف نص عادي',
+ 'export_md' => 'ملف ماركداون -Markdown-',
+ 'export_zip' => 'ملف مضغوط -ZIP-',
+ 'default_template' => 'قالب الصفحة الافتراضية',
+ 'default_template_explain' => 'قم بتعيين قالب صفحة سيتم استخدامه كمحتوى افتراضي لجميع الصفحات التي تم إنشاؤها ضمن هذا العنصر. ضع في اعتبارك أن هذا لن يتم استخدامه إلا إذا كان لدى منشئ الصفحة حق الوصول إلى صفحة القالب المختارة.',
+ 'default_template_select' => 'حدد صفحة القالب',
+ 'import' => 'استيراد',
+ 'import_validate' => 'التحقق من صحة الاستيراد',
+ 'import_desc' => 'استيراد الكتب والفصول والصفحات باستخدام تصدير مِلَفّ مضغوط ZIP محمول من نفس النظام أو نظام مختلف. حدد مِلَفّ ZIP للمتابعة. بعد تحميل المِلَفّ والتحقق من صحته، ستتمكن من إعداد وتأكيد الاستيراد في العرض التالي.',
+ 'import_zip_select' => 'حدد مِلَفّ مضغوط بصيغة ZIP للتحميل',
+ 'import_zip_validation_errors' => 'تم اكتشاف أخطاء في أثناء التحقق من صحة المِلَفّ المضغوط ZIP المقدم:',
+ 'import_pending' => 'الاستيرادات المعلقة',
+ 'import_pending_none' => 'لم يتم البَدْء في أي عملية استيراد.',
+ 'import_continue' => 'متابعة الاستيراد',
+ 'import_continue_desc' => 'راجع المحتوى الذي يجب استيراده من المِلَفّ المضغوط ZIP الذي تم تحميله. عندما يكون جاهزًا، تشتغل عملية الاستيراد لإضافة محتوياته إلى هذا النظام. سيتم إزالة مِلَفّ الاستيراد الذي تم تحميله تلقائيًا عند الاستيراد الناجح.',
+ 'import_details' => 'تفاصيل الاستيراد',
+ 'import_run' => 'تشغيل الاستيراد',
+ 'import_size' => 'حجم الاستيراد :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' => 'تصفح أشقاء هذه الصفحة',
+ '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_save' => 'حفظ الأذونات',
+ 'permissions_owner' => 'المالك',
+ 'permissions_role_everyone_else' => 'الآخرين',
+ 'permissions_role_everyone_else_desc' => 'تعيين الصلاحيات لجميع الأدوار التي لم يتم تجاوزها على وجه التحديد.',
+ 'permissions_role_override' => 'تجاوز الصلاحيات للدور',
+ 'permissions_inherit_defaults' => 'وراثة الإعدادات الافتراضية',
+
+ // Search
+ 'search_results' => 'نتائج البحث',
+ 'search_total_results_found' => 'عدد النتائج :count|مجموع النتائج :count',
+ 'search_clear' => 'مسح البحث',
+ 'search_no_pages' => 'لم يطابق بحثكم أي صفحة',
+ 'search_for_term' => 'ابحث عن :term',
+ 'search_more' => 'المزيد من النتائج',
+ 'search_advanced' => 'بحث مفصل',
+ 'search_terms' => 'البحث باستخدام المصطلحات',
+ 'search_content_type' => 'نوع المحتوى',
+ 'search_exact_matches' => 'نتائج مطابقة تماماً',
+ 'search_tags' => 'بحث الوسوم',
+ 'search_options' => 'الخيارات',
+ 'search_viewed_by_me' => 'استعرضت من قبلي',
+ 'search_not_viewed_by_me' => 'لم تستعرض من قبلي',
+ 'search_permissions_set' => 'حزمة الأذونات',
+ 'search_created_by_me' => 'أنشئت بواسطتي',
+ 'search_updated_by_me' => 'حُدثت بواسطتي',
+ 'search_owned_by_me' => 'مملوكة لي',
+ 'search_date_options' => 'خيارات التاريخ',
+ 'search_updated_before' => 'حدثت قبل',
+ 'search_updated_after' => 'حدثت بعد',
+ 'search_created_before' => 'أنشئت قبل',
+ 'search_created_after' => 'أنشئت بعد',
+ 'search_set_date' => 'تحديد التاريخ',
+ 'search_update' => 'تحديث البحث',
+
+ // Shelves
+ 'shelf' => 'رف',
+ 'shelves' => 'الأرفف',
+ 'x_shelves' => ':count رف|:count أرفف',
+ 'shelves_empty' => 'لم ينشأ أي رف',
+ 'shelves_create' => 'إنشاء رف جديد',
+ 'shelves_popular' => 'أرفف رائجة',
+ 'shelves_new' => 'أرفف جديدة',
+ 'shelves_new_action' => 'رف جديد',
+ 'shelves_popular_empty' => 'ستظهر هنا الأرفف الأكثر رواجًا.',
+ 'shelves_new_empty' => 'ستظهر هنا الأرفف التي أنشئت مؤخرًا.',
+ 'shelves_save' => 'حفظ الرف',
+ 'shelves_books' => 'كتب على هذا الرف',
+ 'shelves_add_books' => 'إضافة كتب لهذا الرف',
+ 'shelves_drag_books' => 'اسحب الكتب الموجودة بالأسفل لإضافتها إلى هذا الرف',
+ 'shelves_empty_contents' => 'لا توجد كتب مخصصة لهذا الرف',
+ 'shelves_edit_and_assign' => 'تحرير الرف لإدراج كتب',
+ 'shelves_edit_named' => 'تعديل الرف :name',
+ 'shelves_edit' => 'تعديل الرف',
+ 'shelves_delete' => 'حذف الرف',
+ 'shelves_delete_named' => 'حذف الرف :name',
+ 'shelves_delete_explain' => "سيؤدي هذا إلى حذف الرف الذي يحمل الاسم ':name'. لن يتم حذف الكتب المضمنة بداخله.",
+ 'shelves_delete_confirmation' => 'هل أنت متأكد أنك تريد حذف هذا الرف؟',
+ 'shelves_permissions' => 'صلاحيات الرف',
+ 'shelves_permissions_updated' => 'تم تحديث صلاحيات الرف',
+ 'shelves_permissions_active' => 'صلاحيات الرف نشطة',
+ 'shelves_permissions_cascade_warning' => 'لا يتم نقل الصلاحيات الموجودة على الأرفف تلقائيًا إلى الكتب الموجودة في كل رف. وذلك لأن الكتاب يمكن أن يوجد على أرفف متعددة. ومع ذلك، يمكن نسخ الصلاحيات إلى الكتب الفرعية باستخدام الخِيار الموجود أدناه.',
+ 'shelves_permissions_create' => 'تُستخدم صلاحيات إنشاء الرفوف فقط لنسخ الصلاحيات إلى الكتب الفرعية باستخدام الإجراء أدناه. ولا تتحكم في القدرة على إنشاء الكتب.',
+ 'shelves_copy_permissions_to_books' => 'نسخ أذونات الوصول إلى الكتب',
+ 'shelves_copy_permissions' => 'نسخ الأذونات',
+ 'shelves_copy_permissions_explain' => 'سيؤدي هذا إلى تطبيق إعدادات الصلاحيات الحالية لهذا الرف على جميع الكتب الموجودة بداخله. قبل التنشيط، تأكد من حفظ أي تغييرات على صلاحيات هذا الرف.',
+ 'shelves_copy_permission_success' => 'تم نسخ صلاحيات الرف إلى :count كتاب/كتب',
+
+ // Books
+ 'book' => 'كتاب',
+ 'books' => 'الكتب',
+ 'x_books' => ':count كتاب|:count كتب',
+ 'books_empty' => 'لم يتم إنشاء أي كتب',
+ 'books_popular' => 'كتب رائجة',
+ 'books_recent' => 'كتب حديثة',
+ 'books_new' => 'كتب جديدة',
+ 'books_new_action' => 'كتاب جديد',
+ 'books_popular_empty' => 'الكتب الأكثر رواجاً ستظهر هنا.',
+ 'books_new_empty' => 'الكتب المنشأة مؤخراً ستظهر هنا.',
+ 'books_create' => 'إنشاء كتاب جديد',
+ 'books_delete' => 'حذف الكتاب',
+ 'books_delete_named' => 'حذف كتاب :bookName',
+ 'books_delete_explain' => 'سيتم حذف كتاب \':bookName\'، وأيضا حذف جميع الفصول والصفحات.',
+ 'books_delete_confirmation' => 'تأكيد حذف الكتاب؟',
+ 'books_edit' => 'تعديل الكتاب',
+ 'books_edit_named' => 'تعديل كتاب :bookName',
+ 'books_form_book_name' => 'اسم الكتاب',
+ 'books_save' => 'حفظ الكتاب',
+ 'books_permissions' => 'أذونات الكتاب',
+ 'books_permissions_updated' => 'تم تحديث أذونات الكتاب',
+ 'books_empty_contents' => 'لم يتم إنشاء أي صفحات أو فصول لهذا الكتاب.',
+ 'books_empty_create_page' => 'إنشاء صفحة جديدة',
+ 'books_empty_sort_current_book' => 'فرز الكتاب الحالي',
+ 'books_empty_add_chapter' => 'إضافة فصل',
+ 'books_permissions_active' => 'أذونات الكتاب مفعلة',
+ 'books_search_this' => 'البحث في هذا الكتاب',
+ 'books_navigation' => 'تصفح الكتاب',
+ '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_chapters_first' => 'الفصول الأولى',
+ 'books_sort_chapters_last' => 'الفصول الأخيرة',
+ 'books_sort_show_other' => 'عرض كتب أخرى',
+ 'books_sort_save' => 'حفظ الترتيب الجديد',
+ 'books_sort_show_other_desc' => 'أضف كتبًا أخرى هنا لتضمينها في عملية الفرز، والسماح بإعادة تنظيم الكتب بسهولة.',
+ 'books_sort_move_up' => 'حرك للأعلى',
+ 'books_sort_move_down' => 'حرك للأسفل',
+ 'books_sort_move_prev_book' => 'نقل للكتاب السابق',
+ 'books_sort_move_next_book' => 'نقل للكتاب التالي',
+ 'books_sort_move_prev_chapter' => 'نقل إلى الفصل السابق',
+ 'books_sort_move_next_chapter' => 'نقل إلى الفصل التالي',
+ 'books_sort_move_book_start' => 'نقل إلى بداية الكتاب',
+ 'books_sort_move_book_end' => 'نقل إلى نهاية الكتاب',
+ 'books_sort_move_before_chapter' => 'نقل إلى الفصل السابق',
+ 'books_sort_move_after_chapter' => 'نقل إلى الفصل التالي',
+ 'books_copy' => 'نسخة الكتاب',
+ 'books_copy_success' => 'تم نسخ الكتاب بنجاح',
+
+ // Chapters
+ 'chapter' => 'فصل',
+ 'chapters' => 'فصول',
+ 'x_chapters' => ':count فصل|:count فصول',
+ 'chapters_popular' => 'فصول رائجة',
+ 'chapters_new' => 'فصل جديد',
+ 'chapters_create' => 'إنشاء فصل جديد',
+ 'chapters_delete' => 'حذف الفصل',
+ 'chapters_delete_named' => 'حذف فصل :chapterName',
+ 'chapters_delete_explain' => 'سيؤدي هذا إلى حذف الفصل الذي يحمل الاسم \':chapterName\'. كما سيتم حذف جميع الصفحات الموجودة داخل هذا الفصل.',
+ 'chapters_delete_confirm' => 'تأكيد حذف الفصل؟',
+ 'chapters_edit' => 'تعديل الفصل',
+ 'chapters_edit_named' => 'تعديل فصل :chapterName',
+ 'chapters_save' => 'حفظ الفصل',
+ 'chapters_move' => 'نقل الفصل',
+ 'chapters_move_named' => 'نقل فصل :chapterName',
+ 'chapters_copy' => 'نسخ الفصل',
+ 'chapters_copy_success' => 'تم نسخ الفصل بنجاح',
+ 'chapters_permissions' => 'أذونات الفصل',
+ 'chapters_empty' => 'لا توجد أي صفحات في هذا الفصل حالياً',
+ 'chapters_permissions_active' => 'أذونات الفصل مفعلة',
+ 'chapters_permissions_success' => 'تم تحديث أذونات الفصل',
+ 'chapters_search_this' => 'البحث في هذا الفصل',
+ 'chapter_sort_book' => 'فرز الكتاب',
+
+ // Pages
+ 'page' => 'صفحة',
+ 'pages' => 'صفحات',
+ 'x_pages' => ':count صفحة|:count صفحات',
+ 'pages_popular' => 'صفحات رائجة',
+ 'pages_new' => 'صفحة جديدة',
+ 'pages_attachments' => 'مرفقات',
+ 'pages_navigation' => 'تصفح الصفحة',
+ 'pages_delete' => 'حذف الصفحة',
+ 'pages_delete_named' => 'حذف صفحة :pageName',
+ 'pages_delete_draft_named' => 'حذف مسودة :pageName',
+ 'pages_delete_draft' => 'حذف المسودة',
+ 'pages_delete_success' => 'تم حذف الصفحة',
+ 'pages_delete_draft_success' => 'تم حذف المسودة',
+ 'pages_delete_warning_template' => 'هذه الصفحة قيد الاستخدام كقالب افتراضي لصفحات الكتب أو الفصول. لن يكون لهذه الكتب أو الفصول قالب افتراضي بعد حذفها.',
+ 'pages_delete_confirm' => 'تأكيد حذف الصفحة؟',
+ 'pages_delete_draft_confirm' => 'تأكيد حذف المسودة؟',
+ 'pages_editing_named' => ':pageName قيد التعديل',
+ 'pages_edit_draft_options' => 'خيارات المسودة',
+ 'pages_edit_save_draft' => 'حفظ المسودة',
+ 'pages_edit_draft' => 'تعديل مسودة الصفحة',
+ 'pages_editing_draft' => 'المسودة قيد التعديل',
+ 'pages_editing_page' => 'الصفحة قيد التعديل',
+ 'pages_edit_draft_save_at' => 'تم خفظ المسودة في ',
+ 'pages_edit_delete_draft' => 'حذف المسودة',
+ 'pages_edit_delete_draft_confirm' => 'متيقِّن من رغبتك في حذف تغييرات صفحة المُسَوَّدَة؟ ستُفقد جميع تغييراتك، منذ آخر حفظ كامل، وسيتم تحديث المحرر بأحدث حالة حفظ للصفحة (غير مسودة).',
+ 'pages_edit_discard_draft' => 'التخلص من المسودة',
+ 'pages_edit_switch_to_markdown' => 'التبديل إلى محرر ماركداون -Markdown-',
+ 'pages_edit_switch_to_markdown_clean' => '(محتوى نظيف)',
+ 'pages_edit_switch_to_markdown_stable' => '(محتوى مستقر)',
+ 'pages_edit_switch_to_wysiwyg' => 'التبديل إلى محرر ما تراه هو ما تحصل عليه -WYSIWYG-',
+ 'pages_edit_switch_to_new_wysiwyg' => 'التبديل إلى محرر ما تراه هو ما تحصل عليه الجديد -new WYSIWYG-',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(في الاختبار التجريبي)',
+ 'pages_edit_set_changelog' => 'تثبيت سجل التعديل',
+ 'pages_edit_enter_changelog_desc' => 'ضع وصف مختصر للتعديلات التي تمت',
+ 'pages_edit_enter_changelog' => 'أدخل سجل التعديل',
+ 'pages_editor_switch_title' => 'تبديل المحرر',
+ 'pages_editor_switch_are_you_sure' => 'متيقِّن أنك تريد تغيير المحرر لهذه الصفحة؟',
+ 'pages_editor_switch_consider_following' => 'عند تغيير المحررين، ضع في اعتبارك ما يلي:',
+ 'pages_editor_switch_consideration_a' => 'بمجرد الحفظ، سيتم استخدام خِيار المحرر الجديد بواسطة أي محررين مستقبليين، بما في ذلك أولئك الذين قد لا يتمكنون من تغيير نوع المحرر بأنفسهم.',
+ 'pages_editor_switch_consideration_b' => 'من الممكن أن يؤدي هذا إلى فقدان التفاصيل والنحو في ظروف معينة.',
+ 'pages_editor_switch_consideration_c' => 'لن تستمر تغييرات العلامة أو سجل التغييرات، التي تم إجراؤها منذ الحفظ الأخير، عبر هذا التغيير.',
+ 'pages_save' => 'حفظ الصفحة',
+ 'pages_title' => 'عنوان الصفحة',
+ 'pages_name' => 'اسم الصفحة',
+ 'pages_md_editor' => 'المحرر',
+ 'pages_md_preview' => 'معاينة',
+ 'pages_md_insert_image' => 'إدخال صورة',
+ 'pages_md_insert_link' => 'إدراج ارتباط الكيان',
+ 'pages_md_insert_drawing' => 'إدخال رسمة',
+ 'pages_md_show_preview' => 'عرض المعاينة',
+ 'pages_md_sync_scroll' => 'مزامنة معاينة التمرير',
+ 'pages_md_plain_editor' => 'محرر النصوص العادي',
+ 'pages_drawing_unsaved' => 'تم العثور على رسم غير محفوظ',
+ 'pages_drawing_unsaved_confirm' => 'تم العثور على بيانات رسم غير محفوظة من محاولة حفظ رسم سابقة فاشلة. هل ترغب في استعادة هذا الرسم غير المحفوظ ومواصلة تحريره؟',
+ 'pages_not_in_chapter' => 'صفحة ليست في فصل',
+ 'pages_move' => 'نقل الصفحة',
+ 'pages_copy' => 'نسخ الصفحة',
+ 'pages_copy_desination' => 'نسخ مكان الوصول',
+ 'pages_copy_success' => 'تم نسخ الصفحة بنجاح',
+ 'pages_permissions' => 'أذونات الصفحة',
+ 'pages_permissions_success' => 'تم تحديث أذونات الصفحة',
+ 'pages_revision' => 'مراجعة',
+ 'pages_revisions' => 'مراجعات الصفحة',
+ 'pages_revisions_desc' => 'تجد أدناه جميع الإصدارات السابقة لهذه الصفحة. يمكنك الاطلاع عليها ومقارنتها واستعادة الإصدارات القديمة إذا سمحت الصلاحيات بذلك. قد لا يظهر تاريخ الصفحة بالكامل هنا، إذ قد تُحذف الإصدارات القديمة تلقائيًا، وذلك حسب إعدادات النظام.',
+ 'pages_revisions_named' => 'مراجعات صفحة :pageName',
+ 'pages_revision_named' => 'مراجعة صفحة :pageName',
+ 'pages_revision_restored_from' => 'تم الاستعادة من #:id; :summary',
+ 'pages_revisions_created_by' => 'أنشئ بواسطة',
+ 'pages_revisions_date' => 'تاريخ المراجعة',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'رَقْم المراجعة',
+ 'pages_revisions_numbered' => 'مراجعة #:id',
+ 'pages_revisions_numbered_changes' => 'مراجعة #: رقم تعريفي التغييرات',
+ 'pages_revisions_editor' => 'نوع المحرر',
+ 'pages_revisions_changelog' => 'سجل التعديل',
+ 'pages_revisions_changes' => 'التعديلات',
+ 'pages_revisions_current' => 'النسخة الحالية',
+ 'pages_revisions_preview' => 'معاينة',
+ 'pages_revisions_restore' => 'استرجاع',
+ 'pages_revisions_none' => 'لا توجد مراجعات لهذه الصفحة',
+ 'pages_copy_link' => 'نسخ الرابط',
+ 'pages_edit_content_link' => 'انتقل إلى القسم في المحرر',
+ 'pages_pointer_enter_mode' => 'أدخل وضع اختيار القسم',
+ 'pages_pointer_label' => 'خيارات قسم الصفحة',
+ 'pages_pointer_permalink' => 'رابط دائم لقسم الصفحة',
+ 'pages_pointer_include_tag' => 'قسم الصفحة يتضمن العلامة',
+ 'pages_pointer_toggle_link' => 'وضع الرابط الدائم، اضغط لإظهار علامة التضمين',
+ 'pages_pointer_toggle_include' => 'تضمين وضع العلامة، اضغط لإظهار الرابط الدائم',
+ 'pages_permissions_active' => 'أذونات الصفحة مفعلة',
+ 'pages_initial_revision' => 'نشر مبدئي',
+ 'pages_references_update_revision' => 'التحديث التلقائي للنظام للروابط الداخلية',
+ 'pages_initial_name' => 'صفحة جديدة',
+ 'pages_editing_draft_notification' => 'جارٍ تعديل مسودة لم يتم حفظها من :timeDiff.',
+ 'pages_draft_edited_notification' => 'تم تحديث هذه الصفحة منذ ذلك الوقت. من الأفضل التخلص من هذه المسودة.',
+ 'pages_draft_page_changed_since_creation' => 'تم تحديث هذه الصفحة منذ إنشاء هذه المُسَوَّدَة. يُنصح بتجاهل هذه المُسَوَّدَة أو الحرص على عدم استبدال أي تغييرات في الصفحة.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count من المستخدمين بدأوا بتعديل هذه الصفحة',
+ 'start_b' => ':userName بدأ بتعديل هذه الصفحة',
+ 'time_a' => 'منذ أن تم تحديث هذه الصفحة',
+ 'time_b' => 'في آخر :minCount دقيقة/دقائق',
+ 'message' => 'وقت البدء: احرص على عدم الكتابة فوق تحديثات بعضنا البعض!',
+ ],
+ 'pages_draft_discarded' => 'تم رفض المُسَوَّدَة! تم تحديث المحرر بمحتوى الصفحة الحالي.',
+ 'pages_draft_deleted' => 'تم حذف المُسَوَّدَة! تم تحديث المحرر بمحتوى الصفحة الحالي.',
+ 'pages_specific' => 'صفحة محددة',
+ 'pages_is_template' => 'قالب الصفحة',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'تبديل الشريط الجانبي',
+ 'page_tags' => 'وسوم الصفحة',
+ 'chapter_tags' => 'وسوم الفصل',
+ 'book_tags' => 'وسوم الكتاب',
+ 'shelf_tags' => 'علامات الرف',
+ 'tag' => 'وسم',
+ 'tags' => 'وسوم',
+ 'tags_index_desc' => 'يمكن تطبيق الوسوم على المحتوى داخل النظام لتطبيق تصنيف مرن. يمكن أن تحتوي الوسوم على مفتاح وقيمة، مع العلم أن القيمة اختيارية. بعد تطبيقها، يمكن الاستعلام عن المحتوى باستخدام اسم الوسم وقيمته.',
+ 'tag_name' => 'اسم العلامة',
+ 'tag_value' => 'قيمة الوسم (اختياري)',
+ 'tags_explain' => "إضافة الوسوم تساعد بترتيب وتقسيم المحتوى. \n من الممكن وضع قيمة لكل وسم لترتيب أفضل وأدق.",
+ 'tags_add' => 'إضافة وسم آخر',
+ 'tags_remove' => 'إزالة هذه العلامة',
+ 'tags_usages' => 'إجمالي استخدامات العلامة',
+ 'tags_assigned_pages' => 'مُخصصة للصفحات',
+ 'tags_assigned_chapters' => 'مُخصصة للفصول',
+ 'tags_assigned_books' => 'مُخصص للكتب',
+ 'tags_assigned_shelves' => 'مُخصصة للأرفف',
+ 'tags_x_unique_values' => 'قيم الفريدة :count',
+ 'tags_all_values' => 'جميع القيم',
+ 'tags_view_tags' => 'عرض العلامات',
+ 'tags_view_existing_tags' => 'عرض العلامات الموجودة',
+ 'tags_list_empty_hint' => 'يمكن تعيين العلامات بواسطة الشريط الجانبي لمحرر الصفحة أو خلال تحرير تفاصيل الكتاب أو الفصل أو الرف.',
+ 'attachments' => 'المرفقات',
+ 'attachments_explain' => 'ارفع بعض الملفات أو أرفق بعض الروابط لعرضها بصفحتك. ستكون الملفات والروابط معروضة في الشريط الجانبي للصفحة.',
+ 'attachments_explain_instant_save' => 'سيتم حفظ التغييرات هنا آنيا.',
+ 'attachments_upload' => 'رفع ملف',
+ 'attachments_link' => 'إرفاق رابط',
+ 'attachments_upload_drop' => 'وبدلاً من ذلك، يمكنك سحب المِلَفّ وإفلاته هنا لتحميله كمرفق.',
+ 'attachments_set_link' => 'تحديد الرابط',
+ 'attachments_delete' => 'هل أنت متأكد من أنك تريد حذف هذا المرفق؟',
+ 'attachments_dropzone' => 'قم بإسقاط الملفات هنا للتحميل',
+ 'attachments_no_files' => 'لم تُرفع أي ملفات',
+ 'attachments_explain_link' => 'بالإمكان إرفاق رابط في حال عدم تفضيل رفع ملف. قد يكون الرابط لصفحة أخرى أو لملف في أحد خدمات التخزين السحابي.',
+ 'attachments_link_name' => 'اسم الرابط',
+ 'attachment_link' => 'رابط المرفق',
+ 'attachments_link_url' => 'رابط الملف',
+ 'attachments_link_url_hint' => 'رابط الموقع أو الملف',
+ 'attach' => 'إرفاق',
+ 'attachments_insert_link' => 'إضافة رابط مرفق إلى الصفحة',
+ 'attachments_edit_file' => 'تعديل الملف',
+ 'attachments_edit_file_name' => 'اسم الملف',
+ 'attachments_edit_drop_upload' => 'أسقط الملفات أو اضغط هنا للرفع والاستبدال',
+ 'attachments_order_updated' => 'تم تحديث ترتيب المرفقات',
+ 'attachments_updated_success' => 'تم تحديث تفاصيل المرفق',
+ 'attachments_deleted' => 'تم حذف المرفق',
+ 'attachments_file_uploaded' => 'تم رفع الملف بنجاح',
+ 'attachments_file_updated' => 'تم تحديث الملف بنجاح',
+ 'attachments_link_attached' => 'تم إرفاق الرابط بالصفحة بنجاح',
+ 'templates' => 'القوالب',
+ 'templates_set_as_template' => 'هذه الصفحة عبارة عن قالب',
+ 'templates_explain_set_as_template' => 'يمكنك تعيين هذه الصفحة كقالب بحيث تستخدم محتوياتها عند إنشاء صفحات أخرى. سيتمكن المستخدمون الآخرون من استخدام هذا القالب إذا كان لديهم أذونات عرض لهذه الصفحة.',
+ 'templates_replace_content' => 'استبدال محتوى الصفحة',
+ 'templates_append_content' => 'تذييل محتوى الصفحة',
+ 'templates_prepend_content' => 'بادئة محتوى الصفحة',
+
+ // Profile View
+ 'profile_user_for_x' => 'المستخدم لـ :time',
+ 'profile_created_content' => 'المحتوى المنشأ',
+ 'profile_not_created_pages' => 'لم يتم إنشاء أي صفحات بواسطة :userName',
+ 'profile_not_created_chapters' => 'لم يتم إنشاء أي فصول بواسطة :userName',
+ 'profile_not_created_books' => 'لم يتم إنشاء أي كتب بواسطة :userName',
+ 'profile_not_created_shelves' => 'لم يقم "اسم المستخدم"بإنشاء أي أرفف',
+
+ // Comments
+ 'comment' => 'تعليق',
+ 'comments' => 'تعليقات',
+ 'comment_add' => 'إضافة تعليق',
+ 'comment_none' => 'لا توجد تعليقات لعرضها',
+ 'comment_placeholder' => 'ضع تعليقاً هنا',
+ 'comment_thread_count' => ':count تعليقات| :count تعليقات',
+ 'comment_archived_count' => ':count مؤرشف',
+ 'comment_archived_threads' => 'المواضيع المؤرشفة',
+ 'comment_save' => 'حفظ التعليق',
+ 'comment_new' => 'تعليق جديد',
+ 'comment_created' => 'تم التعليق :createDiff',
+ 'comment_updated' => 'تم التحديث :updateDiff بواسطة :username',
+ 'comment_updated_indicator' => 'تم التحديث',
+ 'comment_deleted_success' => 'تم حذف التعليق',
+ 'comment_created_success' => 'تمت إضافة التعليق',
+ 'comment_updated_success' => 'تم تحديث التعليق',
+ 'comment_archive_success' => 'تم أرشفة التعليق',
+ 'comment_unarchive_success' => 'تعليق غير مؤرشف',
+ 'comment_view' => 'عرض التعليق',
+ 'comment_jump_to_thread' => 'انتقل إلى الموضوع',
+ 'comment_delete_confirm' => 'تأكيد حذف التعليق؟',
+ 'comment_in_reply_to' => 'رداً على :commentId',
+ 'comment_reference' => 'المرجع',
+ 'comment_reference_outdated' => '(قديمة)',
+ 'comment_editor_explain' => 'هذه هي التعليقات المُضافة على هذه الصفحة. يُمكنك إضافة التعليقات وإدارتها عند عرض الصفحة المحفوظة.',
+
+ // Revision
+ 'revision_delete_confirm' => 'هل أنت متأكد من أنك تريد حذف هذه المراجعة؟',
+ 'revision_restore_confirm' => 'هل أنت متأكد من أنك تريد استعادة هذه المراجعة؟ سيتم استبدال محتوى الصفحة الحالية.',
+ 'revision_cannot_delete_latest' => 'لايمكن حذف آخر مراجعة.',
+
+ // Copy view
+ 'copy_consider' => 'يرجى مراعاة ما يلي عند نسخ المحتوى.',
+ 'copy_consider_permissions' => 'لن يتم نسخ إعدادات الصلاحيات المخصصة.',
+ 'copy_consider_owner' => 'سوف تصبح مالكًا لجميع المحتوى المنسوخ.',
+ 'copy_consider_images' => 'لن يتم تكرار ملفات صور الصفحة وستحتفظ الصور الأصلية بعلاقتها بالصفحة التي تم تحميلها إليها في الأصل.',
+ 'copy_consider_attachments' => 'لن يتم نسخ مرفقات الصفحة.',
+ 'copy_consider_access' => 'قد يؤدي تغيير الموقع أو المالك أو الصلاحيات إلى إمكانية وصول الأشخاص الذين لم يتمكنوا من الوصول إلى هذا المحتوى سابقًا.',
+
+ // Conversions
+ 'convert_to_shelf' => 'تحويل إلى رف',
+ 'convert_to_shelf_contents_desc' => 'يمكنك تحويل هذا الكتاب إلى رف جديد بنفس المحتويات. سيتم تحويل الفصول الموجودة فيه إلى كتب جديدة. إذا احتوى هذا الكتاب على أي صفحات غير موجودة في أي فصل، فسيتم إعادة تسمية الكتاب وإضافة هذه الصفحات إليه، وسيصبح جزءًا من الرف الجديد.',
+ 'convert_to_shelf_permissions_desc' => 'سيتم نسخ أي صلاحيات مُحددة لهذا الكتاب إلى الرف الجديد وإلى جميع الكتب الفرعية الجديدة التي لم تُطبّق عليها صلاحيات خاصة بها. يُرجى العلم بأن الصلاحيات على الرفوف لا تنتقل تلقائيًا إلى المحتوى داخلها، كما هو الحال مع الكتب.',
+ 'convert_book' => 'تحويل الكتاب',
+ 'convert_book_confirm' => 'هل أنت متيقِّن أنك تريد تحويل هذا الكتاب؟',
+ 'convert_undo_warning' => 'لا يمكن التراجع عن هذا الأمر بسهولة.',
+ 'convert_to_book' => 'تحويله إلى كتاب',
+ 'convert_to_book_desc' => 'يمكنك تحويل هذا الفصل إلى كتاب جديد بنفس المحتوى. سيتم نسخ أي صلاحيات مُعيّنة لهذا الفصل إلى الكتاب الجديد، ولكن لن يتم نسخ أي صلاحيات موروثة من الكتاب الأصلي، مما قد يؤدي إلى تغيير في التحكم في الوصول.',
+ 'convert_chapter' => 'تحويل الفصل',
+ 'convert_chapter_confirm' => 'هل أنت متيقِّن أنك تريد تحويل هذا الفصل؟',
+
+ // References
+ 'references' => 'مراجع',
+ 'references_none' => 'لا توجد مراجع متعقبة لهذا العنصر.',
+ 'references_to_desc' => 'تجد أدناه كل المحتوى المعروف في النظام المرتبط بهذا العنصر.',
+
+ // Watch Options
+ 'watch' => 'شاهد',
+ 'watch_title_default' => 'التفضيلات الافتراضية',
+ 'watch_desc_default' => 'استعادة المشاهدة إلى تفضيلات الإشعارات الافتراضية فقط.',
+ 'watch_title_ignore' => 'تجاهل',
+ 'watch_desc_ignore' => 'تجاهل كافة الإشعارات، بما في ذلك تلك الواردة من تفضيلات مستوى المستخدم.',
+ 'watch_title_new' => 'صفحات جديدة',
+ 'watch_desc_new' => 'إعلام عند إنشاء أي صفحة جديدة ضمن هذا العنصر.',
+ 'watch_title_updates' => 'جميع تحديثات الصفحة',
+ 'watch_desc_updates' => 'إشعار بجميع الصفحات الجديدة والتغييرات في الصفحات.',
+ 'watch_desc_updates_page' => 'إشعار عند حدوث أي تغييرات في الصفحة.',
+ 'watch_title_comments' => 'جميع تحديثات الصفحة والتعليقات',
+ 'watch_desc_comments' => 'إشعار بجميع الصفحات الجديدة، وتغييرات الصفحات والتعليقات الجديدة.',
+ 'watch_desc_comments_page' => 'إشعار عند حدوث تغييرات في الصفحة أو تعليقات جديدة.',
+ 'watch_change_default' => 'تغيير تفضيلات الإشعارات الافتراضية',
+ 'watch_detail_ignore' => 'تجاهل الإشعارات',
+ 'watch_detail_new' => 'ترقب الصفحات الجديدة',
+ 'watch_detail_updates' => 'مشاهدة الصفحات الجديدة والتحديثات',
+ 'watch_detail_comments' => 'مشاهدة الصفحات الجديدة والتحديثات والتعليقات',
+ 'watch_detail_parent_book' => 'المشاهدة عبر الكتاب الرئيس',
+ 'watch_detail_parent_book_ignore' => 'التجاهل عبر الكتاب الرئيس',
+ 'watch_detail_parent_chapter' => 'المشاهدة عبر الفصل الرئيس',
+ 'watch_detail_parent_chapter_ignore' => 'التجاهل عبر الفصل الرئيس',
+];
diff --git a/lang/ar/errors.php b/lang/ar/errors.php
new file mode 100644
index 00000000000..25ba3544d57
--- /dev/null
+++ b/lang/ar/errors.php
@@ -0,0 +1,135 @@
+ 'لم يؤذن لك بالدخول للصفحة المطلوبة.',
+ 'permissionJson' => 'لم يؤذن لك بعمل الإجراء المطلوب.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'يوجد مستخدم ببيانات مختلفة مسجل بالنظام للبريد الإلكتروني :email.',
+ 'auth_pre_register_theme_prevention' => 'لم يتمكن حساب المستخدم من التسجيل للحصول على التفاصيل المقدمة',
+ 'email_already_confirmed' => 'تم تأكيد البريد الإلكتروني من قبل, الرجاء محاولة تسجيل الدخول.',
+ 'email_confirmation_invalid' => 'رابط التأكيد غير صحيح أو قد تم استخدامه من قبل, الرجاء محاولة التسجيل من جديد.',
+ 'email_confirmation_expired' => 'صلاحية رابط التأكيد انتهت, تم إرسال رسالة تأكيد جديدة لعنوان البريد الإلكتروني.',
+ 'email_confirmation_awaiting' => 'عنوان البريد الإلكتروني للحساب قيد الاستخدام يحتاج إلى تأكيد',
+ 'ldap_fail_anonymous' => 'فشل الوصول إلى LDAP باستخدام الربط المجهول',
+ 'ldap_fail_authed' => 'فشل الوصول إلى LDAP باستخدام dn و كلمة السر المعطاة',
+ 'ldap_extension_not_installed' => 'لم يتم تثبيت إضافة LDAP PHP',
+ 'ldap_cannot_connect' => 'لا يمكن الاتصال بخادم ldap, فشل الاتصال المبدئي',
+ 'saml_already_logged_in' => 'تم تسجيل الدخول بالفعل',
+ 'saml_no_email_address' => 'تعذر العثور على عنوان بريد إلكتروني، لهذا المستخدم، في البيانات المقدمة من نظام المصادقة الخارجي',
+ 'saml_invalid_response_id' => 'لم يتم التعرف على الطلب من نظام التوثيق الخارجي من خلال عملية تبدأ بهذا التطبيق. العودة بعد تسجيل الدخول يمكن أن يسبب هذه المشكلة.',
+ 'saml_fail_authed' => 'تسجيل الدخول باستخدام :system فشل، النظام لم يوفر التفويض الناجح',
+ 'oidc_already_logged_in' => 'تم تسجيل الدخول مسبقاً',
+ 'oidc_no_email_address' => 'تعذر العثور على عنوان بريد إلكتروني، لهذا المستخدم، في البيانات المقدمة من نظام المصادقة الخارجي',
+ 'oidc_fail_authed' => 'تسجيل الدخول باستخدام :system فشل، النظام لم يوفر التفويض الناجح',
+ 'social_no_action_defined' => 'لم يتم تعريف أي إجراء',
+ 'social_login_bad_response' => "حصل خطأ خلال تسجيل الدخول باستخدام :socialAccount \n:error",
+ 'social_account_in_use' => 'حساب :socialAccount قيد الاستخدام حالياً, الرجاء محاولة الدخول باستخدام خيار :socialAccount.',
+ 'social_account_email_in_use' => 'البريد الإلكتروني :email مستخدم. إذا كان لديكم حساب فبإمكانكم ربط حساب :socialAccount من إعدادات ملفكم.',
+ 'social_account_existing' => 'تم ربط حساب :socialAccount بملفكم من قبل.',
+ 'social_account_already_used_existing' => 'حساب :socialAccount مستخدَم من قبل مستخدم آخر.',
+ 'social_account_not_used' => 'حساب :socialAccount غير مرتبط بأي مستخدم. الرجاء ربطه من خلال إعدادات ملفكم. ',
+ 'social_account_register_instructions' => 'إذا لم يكن لديكم حساب فيمكنكم التجسيل باستخدام خيار :socialAccount.',
+ 'social_driver_not_found' => 'لم يتم العثور على السوشيال درايفر "Social driver"',
+ 'social_driver_not_configured' => 'لم يتم تهيئة إعدادات حسابك الاجتماعي بشكل صحيح.',
+ 'invite_token_expired' => 'انتهت صلاحية رابط هذه الدعوة. يمكنك بدلاً من ذلك محاولة إعادة تعيين كلمة مرور حسابك.',
+ 'login_user_not_found' => 'لم يتم العثور على مستخدم لهذا الإجراء.',
+
+ // System
+ 'path_not_writable' => 'لا يمكن الرفع إلى مسار :filePath. الرجاء التأكد من قابلية الكتابة إلى الخادم.',
+ 'cannot_get_image_from_url' => 'لا يمكن الحصول على الصورة من :url',
+ 'cannot_create_thumbs' => 'لا يمكن للخادم إنشاء صور مصغرة. الرجاء التأكد من تثبيت إضافة GD PHP.',
+ 'server_upload_limit' => 'الخادم لا يسمح برفع ملفات بهذا الحجم. الرجاء محاولة الرفع بحجم أصغر.',
+ 'server_post_limit' => 'لا يمكن للخادم تلقي كمية البيانات المتاحة. حاول مرة أخرى باستخدام بيانات أقل أو ملف أصغر.',
+ 'uploaded' => 'الخادم لا يسمح برفع ملفات بهذا الحجم. الرجاء محاولة الرفع بحجم أصغر.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'حدث خطأ خلال رفع الصورة',
+ 'image_upload_type_error' => 'صيغة الصورة المرفوعة غير صالحة',
+ 'image_upload_replace_type' => 'يجب أن يكون استبدال ملف الصورة من نفس النوع',
+ 'image_upload_memory_limit' => 'فشل في التعامل مع تحميل الصورة و/أو إنشاء الصور المصغرة بسبب حدود موارد النظام.',
+ 'image_thumbnail_memory_limit' => 'فشل في إنشاء تغيرات حجم الصورة بسبب حدود موارد النظام.',
+ 'image_gallery_thumbnail_memory_limit' => 'فشل في إنشاء الصور المصغرة للمعرض بسبب حدود موارد النظام.',
+ 'drawing_data_not_found' => 'تعذر تحميل بيانات الرسم. قد لا يكون ملف الرسم موجودا أو قد لا يكون لديك إذن للوصول إليه.',
+
+ // Attachments
+ 'attachment_not_found' => 'لم يتم العثور على المرفق',
+ 'attachment_upload_error' => 'حدث خطأ أثناء تحميل الملف المرفق',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'فشل حفظ المسودة. الرجاء التأكد من وجود اتصال بالإنترنت قبل حفظ الصفحة',
+ 'page_draft_delete_fail' => 'فشل في حذف مسودة الصفحة وجلب محتوى الصفحة الحالية المحفوظة',
+ 'page_custom_home_deletion' => 'لا يمكن حذف الصفحة إذا كانت محددة كصفحة رئيسية',
+
+ // Entities
+ 'entity_not_found' => 'الكيان غير موجود',
+ 'bookshelf_not_found' => 'رف الكتب غير موجود',
+ 'book_not_found' => 'لم يتم العثور على الكتاب',
+ 'page_not_found' => 'لم يتم العثور على الصفحة',
+ 'chapter_not_found' => 'لم يتم العثور على الفصل',
+ 'selected_book_not_found' => 'لم يتم العثور على الكتاب المحدد',
+ 'selected_book_chapter_not_found' => 'لم يتم العثور على الكتاب أو الفصل المحدد',
+ 'guests_cannot_save_drafts' => 'لا يمكن حفظ المسودات من قبل الضيوف',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'لا يمكن حذف المشرف الوحيد',
+ 'users_cannot_delete_guest' => 'لا يمكن حذف المستخدم الضيف',
+ 'users_could_not_send_invite' => 'لم يتم إنشاء المستخدم بسبب فشل إرسال بريد الدعوة',
+
+ // Roles
+ 'role_cannot_be_edited' => 'لا يمكن تعديل هذا الدور',
+ 'role_system_cannot_be_deleted' => 'هذا الدور خاص بالنظام ولا يمكن حذفه',
+ 'role_registration_default_cannot_delete' => 'لا يمكن حذف الدور إذا كان مسجل كالدور الأساسي بعد تسجيل الحساب',
+ 'role_cannot_remove_only_admin' => 'هذا المستخدم هو المستخدم الوحيد المعين لدور المسؤول. قم بتعيين دور المسؤول لمستخدم آخر قبل محاولة إزالته هنا.',
+
+ // Comments
+ 'comment_list' => 'حصل خطأ خلال جلب التعليقات.',
+ 'cannot_add_comment_to_draft' => 'لا يمكن إضافة تعليقات على مسودة.',
+ 'comment_add' => 'حصل خطاً خلال إضافة / تحديث التعليق.',
+ 'comment_delete' => 'حصل خطأ خلال حذف التعليق.',
+ 'empty_comment' => 'لايمكن إضافة تعليق فارغ.',
+
+ // Error pages
+ '404_page_not_found' => 'لم يتم العثور على الصفحة',
+ 'sorry_page_not_found' => 'عفواً, لا يمكن العثور على الصفحة التي تبحث عنها.',
+ 'sorry_page_not_found_permission_warning' => 'إذا كنت تتوقع أن تكون هذه الصفحة موجودة، قد لا يكون لديك تصريح بمشاهدتها.',
+ 'image_not_found' => 'لم يتم العثور على الصورة',
+ 'image_not_found_subtitle' => 'عذراً، لم يتم العثور على ملف الصورة الذي كنت تبحث عنه.',
+ 'image_not_found_details' => 'إذا كنت تتوقع وجود هذه الصورة ربما تم حذفها.',
+ 'return_home' => 'العودة للصفحة الرئيسية',
+ 'error_occurred' => 'حدث خطأ',
+ 'app_down' => ':appName لا يعمل حالياً',
+ 'back_soon' => 'سيعود للعمل قريباً.',
+
+ // Import
+ 'import_zip_cant_read' => 'لم أتمكن من قراءة المِلَفّ المضغوط -ZIP-.',
+ 'import_zip_cant_decode_data' => 'لم نتمكن من العثور على محتوى المِلَفّ المضغوط data.json وفك تشفيره.',
+ 'import_zip_no_data' => 'لا تتضمن بيانات المِلَفّ المضغوط أي محتوى متوقع للكتاب أو الفصل أو الصفحة.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'فشل التحقق من صحة استيراد المِلَفّ المضغوط بسبب الأخطاء التالية:',
+ 'import_zip_failed_notification' => 'فشل استيراد المِلَفّ المضغوط.',
+ 'import_perms_books' => 'أنت تفتقر إلى الصلاحيات المطلوبة لإنشاء الكتب.',
+ 'import_perms_chapters' => 'أنت تفتقر إلى الصلاحيات المطلوبة لإنشاء الفصول.',
+ 'import_perms_pages' => 'أنت تفتقر إلى الصلاحيات المطلوبة لإنشاء الصفحات.',
+ 'import_perms_images' => 'أنت تفتقر إلى الصلاحيات المطلوبة لإنشاء الصور.',
+ 'import_perms_attachments' => 'أنت تفتقر إلى الصَّلاحِيَة المطلوب لإنشاء المرفقات.',
+
+ // API errors
+ 'api_no_authorization_found' => 'لم يتم العثور على رمز ترخيص مميز في الطلب',
+ 'api_bad_authorization_format' => 'تم العثور على رمز ترخيص مميز في الطلب ولكن يبدو أن التنسيق غير صحيح',
+ 'api_user_token_not_found' => 'لم يتم العثور على رمز API مطابق لرمز الترخيص المُقدم',
+ 'api_incorrect_token_secret' => 'الشفرة المُقدمة لرمز API المستخدم المحدد غير صحيحة',
+ 'api_user_no_api_permission' => 'مالك رمز API المستخدم ليس لديه الصلاحية لإجراء مكالمات API',
+ 'api_user_token_expired' => 'انتهت صلاحية رمز الترخيص المستخدم',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'حدث خطأ عند إرسال بريد إلكتروني تجريبي:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'الرابط لا يتطابق مع الاعدادات المسموح بها لاستضافة SSR',
+];
diff --git a/lang/ar/notifications.php b/lang/ar/notifications.php
new file mode 100644
index 00000000000..69d5dfdcf52
--- /dev/null
+++ b/lang/ar/notifications.php
@@ -0,0 +1,29 @@
+ 'تعليق جديد على الصفحة: :pageName',
+ 'new_comment_intro' => 'قام أحد المستخدمين بالتعليق على صفحة في :appName:',
+ 'new_page_subject' => 'صفحة جديدة: :pageName',
+ 'new_page_intro' => 'تم إنشاء صفحة جديدة في :appName:',
+ 'updated_page_subject' => 'تم تحديث الصفحة: :pageName',
+ 'updated_page_intro' => 'تم تحديث الصفحة في :appName:',
+ 'updated_page_debounce' => 'لمنع تلقي عدد كبير من الإشعارات، لن يتم إرسال إشعارات إليك لفترة من الوقت لإجراء المزيد من التعديلات على هذه الصفحة بواسطة نفس المحرر.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'اسم الصفحة:',
+ 'detail_page_path' => 'مسار الصفحة:',
+ 'detail_commenter' => 'المُعَلِق:',
+ 'detail_comment' => 'التعليق:',
+ 'detail_created_by' => 'أنشئ من طرف:',
+ 'detail_updated_by' => 'تم التحديث بواسطة:',
+
+ 'action_view_comment' => 'عرض التعليق',
+ 'action_view_page' => 'عرض الصفحة',
+
+ 'footer_reason' => 'لقد تم إرسال هذا الإشعار إليك لأن :link يغطي هذا النوع من النشاط لهذا العنصر.',
+ 'footer_reason_link' => 'إعدادات الإشعارات الخاصة بك',
+];
diff --git a/resources/lang/ar/pagination.php b/lang/ar/pagination.php
similarity index 100%
rename from resources/lang/ar/pagination.php
rename to lang/ar/pagination.php
diff --git a/lang/ar/passwords.php b/lang/ar/passwords.php
new file mode 100644
index 00000000000..1e8a10ccc89
--- /dev/null
+++ b/lang/ar/passwords.php
@@ -0,0 +1,15 @@
+ 'يجب أن تتكون كلمة السر من ستة أحرف على الأقل وأن تطابق التأكيد.',
+ 'user' => "لم يتم العثور على مستخدم بعنوان البريد الإلكتروني المعطى.",
+ 'token' => 'رمز إعادة تعيين كلمة السر غير صالح لعنوان هذا البريد الإلكتروني.',
+ 'sent' => 'تم إرسال رابط تجديد كلمة السر إلى بريدكم الإلكتروني!',
+ 'reset' => 'تم تجديد كلمة السر الخاصة بكم!',
+
+];
diff --git a/lang/ar/preferences.php b/lang/ar/preferences.php
new file mode 100644
index 00000000000..92733c9981b
--- /dev/null
+++ b/lang/ar/preferences.php
@@ -0,0 +1,52 @@
+ 'حسابي',
+
+ 'shortcuts' => 'الاختصارات',
+ 'shortcuts_interface' => 'خيارات اختصار واجهة المستخدم',
+ 'shortcuts_toggle_desc' => 'هنا يمكنك تمكين أو تعطيل اختصارات واجهة نظام لوحة المفاتيح، المستخدمة للتنقل والإجراءات.',
+ 'shortcuts_customize_desc' => 'يمكنك تخصيص كل اختصار من الاختصارات أدناه. ما عليك سوى الضغط على تركيبة المفاتيح المطلوبة بعد تحديد مدخل الاختصار.',
+ 'shortcuts_toggle_label' => 'تم تمكين اختصارات لوحة المفاتيح',
+ 'shortcuts_section_navigation' => 'التنقل',
+ 'shortcuts_section_actions' => 'الإجراءات المشتركة',
+ 'shortcuts_save' => 'حفظ الاختصارات',
+ 'shortcuts_overlay_desc' => 'ملاحظة: عندما يتم تمكين الاختصارات، تتوفر تراكب المساعد عن طريق الضغط على "؟" الذي سيسلط الضوء على الاختصارات المتاحة للإجراءات المرئية حاليا على الشاشة.',
+ 'shortcuts_update_success' => 'تم تحديث خيارات الاختصار!',
+ 'shortcuts_overview_desc' => 'إدارة اختصارات لوحة المفاتيح التي يمكنك استخدامها للتنقل في واجهة مستخدم النظام.',
+
+ 'notifications' => 'إعدادات الإشعارات',
+ 'notifications_desc' => 'التحكم في إشعارات البريد الإلكتروني الذي تتلقاها عند إجراء نشاط معين داخل النظام.',
+ 'notifications_opt_own_page_changes' => 'إشعاري عند حدوث تغييرات في الصفحات التي أملكها',
+ 'notifications_opt_own_page_comments' => 'إشعاري بشأن التعليقات على الصفحات التي أملكها',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'إشعاري عند الردود على تعليقاتي',
+ 'notifications_save' => 'حفظ اﻹعدادات',
+ 'notifications_update_success' => 'تم تحديث إعدادات الإشعارات!',
+ 'notifications_watched' => 'العناصر التي تمت مشاهدتها وتجاهلها',
+ 'notifications_watched_desc' => 'فيما يلي العناصر التي طُبِّقت عليها إعدادات ساعة مخصصة. لتحديث إعداداتك، استعرض العنصر ثم ابحث عن خيارات الساعة في الشريط الجانبي.',
+
+ 'auth' => 'الوصول و الأمان',
+ 'auth_change_password' => 'تغيير كلمة السر',
+ 'auth_change_password_desc' => 'غيّر كلمة السر التي تستخدمها لتسجيل الدخول إلى التطبيق. يجب ألا تقل عن 8 أحرف.',
+ 'auth_change_password_success' => 'تم تحديث كلمة السر!',
+
+ 'profile' => 'تفاصيل المِلَفّ الشخصي',
+ 'profile_desc' => 'إدارة تفاصيل حسابك الذي يمثلك أمام المستخدمين الآخرين، بالإضافة إلى التفاصيل المستخدمة للتواصل وتخصيص النظام.',
+ 'profile_view_public' => 'عرض المِلَفّ الشخصي العام',
+ 'profile_name_desc' => 'إعداد اسم العرض الخاص بك الذي سيكون مرئيًا للمستخدمين الآخرين في النظام من خلال النشاط الذي تقوم به والمحتوى الذي تملكه.',
+ 'profile_email_desc' => 'سيتم استخدام هذا البريد الإلكتروني للإشعارات، وبناءً على مصادقة النظام النشط، سيتم استخدام الوصول إلى النظام.',
+ 'profile_email_no_permission' => 'للأسف، ليس لديك إذن لتغيير عنوان بريدك الإلكتروني. إذا كنت ترغب في تغييره، فعليك طلب ذلك من أحد المسؤولين.',
+ 'profile_avatar_desc' => 'اختر صورةً تُمثّلك أمام الآخرين في النظام. يُفضّل أن تكون الصورة مربعةً، وعرضها وارتفاعها حوالي ٢٥٦ بكسل.',
+ 'profile_admin_options' => 'خيارات المسؤول',
+ 'profile_admin_options_desc' => 'يمكنك العثور على خيارات إضافية على مستوى المسؤول، مثل تلك الخاصة بإدارة تعيينات الأدوار، لحساب المستخدم الخاص بك في منطقة "الإعدادات > المستخدمون" في التطبيق.',
+
+ 'delete_account' => 'حذف الحساب',
+ 'delete_my_account' => 'حذف حسابي',
+ 'delete_my_account_desc' => 'سيؤدي هذا إلى حذف حساب المستخدم الخاص بك بالكامل من النظام. لن تتمكن من استعادة هذا الحساب أو التراجع عن هذا الإجراء. سيبقى المحتوى الذي أنشأته، مثل الصفحات التي أنشأتها والصور التي رفعتها، كما هي.',
+ 'delete_my_account_warning' => 'هل أنت متأكد أنك تريد حذف حسابك؟',
+];
diff --git a/lang/ar/settings.php b/lang/ar/settings.php
new file mode 100644
index 00000000000..3191bbe3a0a
--- /dev/null
+++ b/lang/ar/settings.php
@@ -0,0 +1,374 @@
+ 'الإعدادات',
+ 'settings_save' => 'حفظ الإعدادات',
+ 'system_version' => 'إصدار النظام',
+ 'categories' => 'التصنيفات',
+
+ // App Settings
+ 'app_customization' => 'تخصيص',
+ 'app_features_security' => 'الميزات و الأمان',
+ 'app_name' => 'اسم التطبيق',
+ 'app_name_desc' => 'سيتم عرض هذا الاسم في الترويسة وفي أي رسالة بريد إلكتروني.',
+ 'app_name_header' => 'عرض اسم التطبيق في الترويسة؟',
+ 'app_public_access' => 'الوصول العام',
+ 'app_public_access_desc' => 'تمكين هذا الخيار سيسمح للزوار، الذين لم يتم تسجيل دخولهم، بالوصول إلى المحتوى في مثيل مكدس الكتب الخاص بك.',
+ 'app_public_access_desc_guest' => 'يمكن التحكم في وصول الزوار العموميين من خلال المستخدم "الضيف".',
+ 'app_public_access_toggle' => 'السماح بالوصول العام',
+ 'app_public_viewing' => 'السماح بالعرض على العامة؟',
+ 'app_secure_images' => 'تفعيل حماية أكبر لرفع الصور؟',
+ 'app_secure_images_toggle' => 'لمزيد من الحماية',
+ 'app_secure_images_desc' => 'لتحسين أداء النظام, ستكون جميع الصور متاحة للعامة. هذا الخيار يضيف سلسلة من الحروف والأرقام العشوائية صعبة التخمين إلى رابط الصورة. الرجاء التأكد من تعطيل فهرسة المسارات لمنع الوصول السهل.',
+ 'app_default_editor' => 'محرر الصفحة الافتراضي',
+ 'app_default_editor_desc' => 'حدد أي محرر سيتم استخدامه بشكل افتراضي عند تحرير صفحات جديدة. يمكن تجاوز هذا على مستوى الصفحة حيث تسمح الأذونات.',
+ 'app_custom_html' => 'Custom HTML head content',
+ 'app_custom_html_desc' => 'سيتم إدراج أي محتوى مضاف هنا في الجزء السفلي من قسم من كل صفحة. هذا أمر مفيد لتجاوز الأنماط أو إضافة رمز التحليل.',
+ 'app_custom_html_disabled_notice' => 'تم تعطيل محتوى HTML الرئيسي المخصص في صفحة الإعدادات هذه لضمان عكس أي تغييرات متتالية.',
+ 'app_logo' => 'شعار التطبيق',
+ 'app_logo_desc' => 'يستخدم هذا في شريط رأس التطبيق، ضمن مجالات أخرى. يجب أن تكون هذه الصورة 86 بكسل في الطول. سيتم تقليص الصور الكبيرة.',
+ 'app_icon' => 'أيقونة التطبيق',
+ 'app_icon_desc' => 'يستخدم هذا الرمز لعلامات تبويب المتصفح والرموز المختصرة. يجب أن تكون هذه صورة PNG مربعة 256px.',
+ 'app_homepage' => 'الصفحة الرئيسية للتطبيق',
+ 'app_homepage_desc' => 'الرجاء اختيار صفحة لتصبح الصفحة الرئيسية بدل من الافتراضية. سيتم تجاهل جميع الأذونات الخاصة بالصفحة المختارة.',
+ 'app_homepage_select' => 'اختر صفحة',
+ 'app_footer_links' => 'روابط تذييل الصفحة',
+ 'app_footer_links_desc' => 'إضافة روابط لعرضها داخل تذييل الموقع. سيتم عرضها في أسفل معظم الصفحات، بما في ذلك تلك التي لا تتطلب تسجيل الدخول. يمكنك استخدام تسمية "trans::لاستخدام الترجمات المحددة في النظام. على سبيل المثال: باستخدام "trans::common.privacy_policy" سيوفر النص المترجم "Privacy Policy" و "trans::common.terms_of_service" سيوفر النص المترجم "شروط الخدمة".',
+ 'app_footer_links_label' => 'تسمية الرابط',
+ 'app_footer_links_url' => 'عنوان الرابط',
+ 'app_footer_links_add' => 'إضافة رابط تذييل الصفحة',
+ 'app_disable_comments' => 'تعطيل التعليقات',
+ 'app_disable_comments_toggle' => 'تعطيل التعليقات',
+ 'app_disable_comments_desc' => 'تعطيل التعليقات على جميع الصفحات داخل التطبيق. التعليقات الموجودة من الأصل لن تكون ظاهرة.',
+
+ // Color settings
+ 'color_scheme' => 'مخطط ألوان التطبيق',
+ 'color_scheme_desc' => 'حدّد الألوان المستخدمة في واجهة مستخدم التطبيق. يمكن ضبط الألوان بشكل منفصل للوضعين الداكن والفاتح لتناسب المظهر بشكل أفضل ولضمان وضوح النص.',
+ 'ui_colors_desc' => 'عيّن اللون الأساسي للتطبيق ولون الرابط الافتراضي. يُستخدم اللون الأساسي بشكل رئيس في شعار الصفحة الرئيسة والأزرار وزخارف الواجهة. أما اللون الافتراضي للرابط، فيُستخدم للروابط والإجراءات النصية، سواءً داخل المحتوى المكتوب أو في واجهة التطبيق.',
+ 'app_color' => 'اللون الأساسي',
+ 'link_color' => 'لون الرابط الافتراضي',
+ 'content_colors_desc' => 'حدّد ألوان جميع عناصر هيكل تنظيم الصفحة. يُنصح باختيار ألوان بنفس سطوع الألوان الافتراضية لسهولة القراءة.',
+ 'bookshelf_color' => 'لون الرف',
+ 'book_color' => 'لون الكتاب',
+ 'chapter_color' => 'لون الفصل',
+ 'page_color' => 'لون الصفحة',
+ 'page_draft_color' => 'لون مسودة الصفحة',
+
+ // Registration Settings
+ 'reg_settings' => 'إعدادات التسجيل',
+ 'reg_enable' => 'تمكين التسجيل',
+ 'reg_enable_toggle' => 'تمكين التسجيل',
+ 'reg_enable_desc' => 'عند تمكين التسجيل سيكون المستخدم قادرا على تسجيل نفسه كمستخدم تطبيق. عند التسجيل يعطى لهم دور مستخدم افتراضي وحيد.',
+ 'reg_default_role' => 'دور المستخدم الأساسي بعد التسجيل',
+ 'reg_enable_external_warning' => 'يتم تجاهل الخيار أعلاه بينما يتم تفعيل مصادقة LDAP الخارجية أو SAML. حسابات المستخدم للأعضاء غير الحاليين سيتم إنشاؤها تلقائياً إذا كانت المصادقة، مقابل النظام الخارجي المستخدم، ناجحة.',
+ 'reg_email_confirmation' => 'تأكيد البريد الإلكتروني',
+ 'reg_email_confirmation_toggle' => 'يتطلب تأكيد البريد الإلكتروني',
+ 'reg_confirm_email_desc' => 'إذا تم استخدام قيود للمجال سيصبح التأكيد عن طريق البريد الإلكتروني إلزامي وسيتم تجاهل القيمة أسفله.',
+ 'reg_confirm_restrict_domain' => 'تقييد التسجيل على مجال محدد',
+ 'reg_confirm_restrict_domain_desc' => 'أدخل قائمة مفصولة بفواصل لنطاقات البريد الإلكتروني التي ترغب في تقييد التسجيل إليها. سيتم إرسال بريد إلكتروني للمستخدمين لتأكيد عنوانهم قبل السماح لهم بالتفاعل مع التطبيق. لاحظ أن المستخدمين سيكونون قادرين على تغيير عناوين البريد الإلكتروني الخاصة بهم بعد التسجيل بنجاح.',
+ 'reg_confirm_restrict_domain_placeholder' => 'لم يتم اختيار أي قيود',
+
+ // Sorting Settings
+ 'sorting' => 'القوائم و الفرز',
+ 'sorting_book_default' => 'ترتيب الكتاب الافتراضي',
+ 'sorting_book_default_desc' => 'حدد قاعدة الترتيب الافتراضية لتطبيقها على الكتب الجديدة. لن يؤثر هذا على الكتب الحالية، ويمكن تجاوزه لكل كتاب على حدة.',
+ 'sorting_rules' => 'قواعد الترتيب',
+ 'sorting_rules_desc' => 'هذه هي عمليات الترتيب المحددة مسبقًا الذي يمكن تطبيقها على المحتوى الموجود في النظام.',
+ 'sort_rule_assigned_to_x_books' => 'مُعيَّن إلى :count كتاب|مُعيَّن إلى :count كتاب',
+ 'sort_rule_create' => 'إنشاء قاعدة الترتيب',
+ 'sort_rule_edit' => 'تعديل قاعدة الترتيب',
+ 'sort_rule_delete' => 'حذف قاعدة الترتيب',
+ 'sort_rule_delete_desc' => 'أزل قاعدة الترتيب هذه من النظام. الكتب التي تستخدم هذا الفرز ستعود إلى الفرز اليدوي.',
+ 'sort_rule_delete_warn_books' => 'تُستخدم قاعدة الترتيب هذه حاليًا على :count كتاب/كتب. متيقن من رغبتك في حذف هذا؟',
+ 'sort_rule_delete_warn_default' => 'تُستخدم قاعدة الترتيب هذه حاليًا كإعداد افتراضي للكتب. متيقن من رغبتك في حذفها؟',
+ 'sort_rule_details' => 'تفاصيل قاعدة الترتيب',
+ 'sort_rule_details_desc' => 'تعيين اسم لقاعدة الترتيب هذه، التي ستظهر في القوائم عندما يقوم المستخدمون باختيار نوع ما.',
+ 'sort_rule_operations' => 'عمليات الترتيب',
+ 'sort_rule_operations_desc' => 'جهّز إجراءات الترتيب المطلوب تنفيذها بنقلها من قائمة العمليات المتاحة. عند الاستخدام، سيتم تطبيق العمليات بالترتيب من الأعلى إلى الأسفل. أي تغييرات تُجرى هنا ستُطبّق على جميع الكتب المُخصّصة عند الحفظ.',
+ 'sort_rule_available_operations' => 'العمليات المتاحة',
+ 'sort_rule_available_operations_empty' => 'لا توجد عمليات متبقية',
+ 'sort_rule_configured_operations' => 'العمليات المُهيأة',
+ 'sort_rule_configured_operations_empty' => 'اسحب/أضف العمليات من قائمة "العمليات المتاحة"',
+ 'sort_rule_op_asc' => '(تصاعدي)',
+ 'sort_rule_op_desc' => '(تنازلي)',
+ 'sort_rule_op_name' => 'الاسم - أبجديًا',
+ 'sort_rule_op_name_numeric' => 'الاسم - رقمي',
+ 'sort_rule_op_created_date' => 'تاريخ الإنشاء',
+ 'sort_rule_op_updated_date' => 'تاريخ التحديث',
+ 'sort_rule_op_chapters_first' => 'الفصول الأولى',
+ 'sort_rule_op_chapters_last' => 'الفصول الأخيرة',
+ 'sorting_page_limits' => 'حدود العرض لكل صفحة',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'الصيانة',
+ 'maint_image_cleanup' => 'تنظيف الصور',
+ 'maint_image_cleanup_desc' => 'مسح الصفحة ومراجعة المحتوى للتحقق من أي الصور والرسوم المستخدمة حاليًا وأي الصور زائدة عن الحاجة. تأكد من إنشاء قاعدة بيانات كاملة و نسخة احتياطية للصور قبل تشغيل هذا.',
+ 'maint_delete_images_only_in_revisions' => 'قم أيضًا بحذف الصور الموجودة فقط في مراجعات الصفحة القديمة',
+ 'maint_image_cleanup_run' => 'بدء التنظيف',
+ 'maint_image_cleanup_warning' => 'يوجد عدد :count من الصور المحتمل عدم استخدامها. تأكيد حذف الصور؟',
+ 'maint_image_cleanup_success' => 'تم إيجاد وحذف عدد :count من الصور المحتمل عدم استخدامها!',
+ 'maint_image_cleanup_nothing_found' => 'لم يتم حذف أي شيء لعدم وجود أي صور غير مسمتخدمة',
+ 'maint_send_test_email' => 'إرسال بريد إلكتروني تجريبي',
+ 'maint_send_test_email_desc' => 'يرسل هذا بريدًا إلكترونيًا تجريبيًا إلى عنوان بريدك الإلكتروني المحدد في ملفك الشخصي.',
+ 'maint_send_test_email_run' => 'إرسال بريد إليكتروني تجريبي',
+ 'maint_send_test_email_success' => 'تم إرسال البريد الإلكتروني إلى:العنوان',
+ '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_regen_references' => 'إعادة إنشاء المراجع',
+ 'maint_regen_references_desc' => 'سيعيد هذا الإجراء بناء فِهْرِس المراجع بين العناصر داخل قاعدة البيانات. عادةً ما يتم ذلك تلقائيًا، ولكنه قد يكون مفيدًا لفهرسة المحتوى القديم أو المحتوى المُضاف بطرق غير رسمية.',
+ 'maint_regen_references_success' => 'لقد تم تجديد فِهْرِس المرجع!',
+ 'maint_timeout_command_note' => 'ملاحظة: قد يستغرق تنفيذ هذا الإجراء بعض الوقت، مما قد يؤدي إلى مشاكل في مهلة التنفيذ في بعض بيئات الويب. كبديل، يمكن تنفيذ هذا الإجراء باستخدام سطر الأوامر.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'سلة المحذوفات',
+ 'recycle_bin_desc' => 'هنا يمكنك استعادة العناصر التي تم حذفها أو اختيار إزالتها نهائيا من النظام. هذه القائمة غير مصفاة خلافاً لقوائم الأنشطة المماثلة في النظام حيث يتم تطبيق عوامل تصفية الأذونات.',
+ 'recycle_bin_deleted_item' => 'عنصر محذوف',
+ 'recycle_bin_deleted_parent' => 'اﻷب',
+ '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_restore_parent' => 'استعادة اﻷب',
+ 'recycle_bin_destroy_notification' => 'المحذوف: قُم بعد إجمالي العناصر من سلة المحذوفات.',
+ 'recycle_bin_restore_notification' => 'المرتجع: قُم بعد إجمالي العناصر من سلة المحذوفات.',
+
+ // Audit Log
+ 'audit' => 'سجل المراجعة',
+ 'audit_desc' => 'يعرض هذا السجل قائمة بالأنشطة المتعقبة في النظام. هذه القائمة غير مصفاة خلافاً لقوائم الأنشطة المماثلة في النظام حيث يتم تطبيق عوامل تصفية الأذونات.',
+ 'audit_event_filter' => 'تصفية الحدث',
+ 'audit_event_filter_no_filter' => 'لا يوجد فلتر',
+ 'audit_deleted_item' => 'عنصر محذوف',
+ 'audit_deleted_item_name' => 'الاسم: كتابة الاسم',
+ 'audit_table_user' => 'المستخدم',
+ 'audit_table_event' => 'الحدث',
+ 'audit_table_related' => 'العنصر أو التفاصيل ذات الصلة',
+ 'audit_table_ip' => 'عنوان عُرف اﻹنترنت -IP-',
+ 'audit_table_date' => 'تاريخ النشاط',
+ 'audit_date_from' => 'نطاق التاريخ من',
+ 'audit_date_to' => 'نطاق التاريخ إلى',
+
+ // Role Settings
+ 'roles' => 'الأدوار',
+ 'role_user_roles' => 'أدوار المستخدمين',
+ 'roles_index_desc' => 'تُستخدم الأدوار لتجميع المستخدمين ومنح أذونات النظام لأعضائها. عندما يكون المستخدم عضوًا في أدوار متعددة، تتراكم الصلاحيات الممنوحة، ويرث المستخدم جميع القدرات.',
+ 'roles_x_users_assigned' => ':count مستخدم معين|:count مستخدمين معينين',
+ 'roles_x_permissions_provided' => ':count إذن |:count إذونات',
+ 'roles_assigned_users' => 'المستخدمون المعينون',
+ 'roles_permissions_provided' => 'الصلاحيات المقدمة',
+ 'role_create' => 'إنشاء دور جديد',
+ 'role_delete' => 'حذف الدور',
+ 'role_delete_confirm' => 'سيتم حذف الدور المسمى \':roleName\'.',
+ 'role_delete_users_assigned' => 'هذا الدور له: عدد المستخدمين المعينين له. إذا كنت ترغب في ترحيل المستخدمين من هذا الدور ، فحدد دورًا جديدًا أدناه.',
+ 'role_delete_no_migration' => "لا تقم بترجيل المستخدمين",
+ 'role_delete_sure' => 'تأكيد حذف الدور؟',
+ 'role_edit' => 'تعديل الدور',
+ 'role_details' => 'تفاصيل الدور',
+ 'role_name' => 'اسم الدور',
+ 'role_desc' => 'وصف مختصر للدور',
+ 'role_mfa_enforced' => 'يتطلب مصادقة متعددة العوامل',
+ 'role_external_auth_id' => 'ربط الحساب بمواقع التواصل',
+ 'role_system' => 'أذونات النظام',
+ 'role_manage_users' => 'إدارة المستخدمين',
+ 'role_manage_roles' => 'إدارة الأدوار وأذوناتها',
+ 'role_manage_entity_permissions' => 'إدارة جميع أذونات الكتب والفصول والصفحات',
+ 'role_manage_own_entity_permissions' => 'إدارة الأذونات الخاصة بكتابك أو فصلك أو صفحاتك',
+ 'role_manage_page_templates' => 'إدارة قوالب الصفحة',
+ 'role_access_api' => 'الوصول إلى واجهة برمجة تطبيقات النظام API',
+ 'role_manage_settings' => 'إدارة إعدادات التطبيق',
+ 'role_export_content' => 'تصدير المحتوى',
+ 'role_import_content' => 'استيراد المحتوى',
+ 'role_editor_change' => 'تغيير محرر الصفحة',
+ 'role_notifications' => 'تلقي الإشعارات وإدارتها',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'أذونات الأصول',
+ 'roles_system_warning' => 'اعلم أن الوصول إلى أي من الأذونات الثلاثة المذكورة أعلاه يمكن أن يسمح للمستخدم بتغيير امتيازاته الخاصة أو امتيازات الآخرين في النظام. قم بتعيين الأدوار مع هذه الأذونات فقط للمستخدمين الموثوق بهم.',
+ 'role_asset_desc' => 'تتحكم هذه الأذونات في الوصول الافتراضي إلى الأصول داخل النظام. ستتجاوز الأذونات الخاصة بالكتب والفصول والصفحات هذه الأذونات.',
+ 'role_asset_admins' => 'يُمنح المسؤولين حق الوصول تلقائيًا إلى جميع المحتويات ولكن هذه الخيارات قد تعرض خيارات واجهة المستخدم أو تخفيها.',
+ 'role_asset_image_view_note' => 'يتعلق هذا بالرؤية داخل مدير الصور. يعتمد الوصول الفعلي لملفات الصور المُحمّلة على خِيار تخزين الصور في النظام.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'الكل',
+ 'role_own' => 'ما يخص',
+ 'role_controlled_by_asset' => 'يتحكم فيها الأصول التي يتم رفعها إلى',
+ 'role_save' => 'حفظ الدور',
+ 'role_users' => 'مستخدمون داخل هذا الدور',
+ 'role_users_none' => 'لم يتم تعيين أي مستخدمين لهذا الدور',
+
+ // Users
+ 'users' => 'المستخدمون',
+ 'users_index_desc' => 'إنشاء وإدارة حسابات المستخدمين الفردية داخل النظام. يتم استخدام حسابات المستخدم لتسجيل الدخول وإسناد المحتوى والنشاط. صلاحيات الوصول هي أساسا قائمة على الأدوار ولكن ملكية محتوى المستخدم، من بين عوامل أخرى، قد تؤثر أيضا على صلاحيات والوصول إليها.',
+ 'user_profile' => 'ملف المستخدم',
+ 'users_add_new' => 'إضافة مستخدم جديد',
+ 'users_search' => 'بحث عن مستخدم',
+ 'users_latest_activity' => 'أحدث نشاط',
+ 'users_details' => 'بيانات المستخدم',
+ 'users_details_desc' => 'قم بتعيين اسم عرض وعنوان بريد إلكتروني لهذا المستخدم. سيتم استخدام عنوان البريد الإلكتروني لتسجيل الدخول إلى التطبيق.',
+ 'users_details_desc_no_email' => 'قم بتعيين اسم عرض لهذا المستخدم حتى يتمكن الآخرون من التعرف عليه.',
+ 'users_role' => 'أدوار المستخدمين',
+ 'users_role_desc' => 'حدد الأدوار التي سيتم تعيين هذا المستخدم لها. إذا تم تعيين مستخدم لأدوار متعددة ، فسيتم تكديس الأذونات من هذه الأدوار وسيتلقى كل قدرات الأدوار المعينة.',
+ 'users_password' => 'كلمة مرور المستخدم',
+ 'users_password_desc' => 'عيّن كلمة سر لتسجيل الدخول إلى التطبيق. يجب ألا تقل عن 8 أحرف.',
+ 'users_send_invite_text' => 'يمكنك اختيار إرسال دعوة بالبريد الإلكتروني إلى هذا المستخدم مما يسمح له بتعيين كلمة السر الخاصة به أو يمكنك تعيين كلمة المرور الخاصة به بنفسك.',
+ 'users_send_invite_option' => 'أرسل بريدًا إلكترونيًا لدعوة المستخدم',
+ 'users_external_auth_id' => 'ربط الحساب بمواقع التواصل',
+ 'users_external_auth_id_desc' => 'عند استخدام نظام مصادقة خارجي (مثل SAML2 أو OIDC أو LDAP)، يكون هذا هو المعرف الذي يربط مستخدم بوكستاك -BookStack- بحساب نظام المصادقة. يمكنك تجاهل هذا الحقل عند استخدام المصادقة الافتراضية عبر البريد الإلكتروني.',
+ 'users_password_warning' => 'قم بملء الحقل أدناه فقط إذا كنت ترغب في تغيير كلمة السر لهذا المستخدم.',
+ 'users_system_public' => 'هذا المستخدم يمثل أي ضيف يقوم بزيارة شيء يخصك. لا يمكن استخدامه لتسجيل الدخول ولكن يتم تعيينه تلقائياً.',
+ 'users_delete' => 'حذف المستخدم',
+ 'users_delete_named' => 'حذف المستخدم :userName',
+ 'users_delete_warning' => 'سيتم حذف المستخدم \':userName\' بشكل تام من النظام.',
+ 'users_delete_confirm' => 'تأكيد حذف المستخدم؟',
+ 'users_migrate_ownership' => 'نقل الملكية',
+ 'users_migrate_ownership_desc' => 'حدد مستخدم هنا إذا كنت تريد أن يصبح مستخدم آخر مالك جميع العناصر التي يمتلكها هذا المستخدم حاليا.',
+ 'users_none_selected' => 'لم يتم تحديد مستخدم',
+ 'users_edit' => 'تعديل المستخدم',
+ 'users_edit_profile' => 'تعديل الملف',
+ 'users_avatar' => 'صورة المستخدم',
+ 'users_avatar_desc' => 'يجب أن تكون الصورة مربعة ومقاربة لحجم 256 بكسل',
+ 'users_preferred_language' => 'اللغة المفضلة',
+ 'users_preferred_language_desc' => 'سيؤدي هذا الخيار إلى تغيير اللغة المستخدمة لواجهة المستخدم الخاصة بالتطبيق. لن يؤثر هذا على أي محتوى قد أنشائه المستخدم.',
+ 'users_social_accounts' => 'الحسابات الاجتماعية',
+ 'users_social_accounts_desc' => 'عرض حالة الحسابات الاجتماعية المرتبطة لهذا المستخدم. ويمكن استخدام الحسابات الاجتماعية بالإضافة إلى نظام التوثيق الرئيس للوصول إلى النظام.',
+ 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not previously authorized access. Revoke access from your profile settings on the connected social account.',
+ 'users_social_connect' => 'ربط الحساب',
+ 'users_social_disconnect' => 'فصل الحساب',
+ 'users_social_status_connected' => 'متصل',
+ 'users_social_status_disconnected' => 'غير متصل',
+ 'users_social_connected' => 'تم ربط حساب :socialAccount بملفك بنجاح.',
+ 'users_social_disconnected' => 'تم فصل حساب :socialAccount من ملفك بنجاح.',
+ 'users_api_tokens' => 'رموز الـ API',
+ 'users_api_tokens_desc' => 'أنشئ وأدر رموز الوصول المستخدمة للمصادقة باستخدام واجهة برمجة تطبيقات بوكستاك رِست -BookStack REST API-. تتم إدارة صلاحيات واجهة برمجة التطبيقات بواسطة المستخدم الذي ينتمي إليه الرمز.',
+ 'users_api_tokens_none' => 'لم يتم إنشاء رموز API لهذا المستخدم',
+ 'users_api_tokens_create' => 'قم بإنشاء رمز مميز',
+ 'users_api_tokens_expires' => 'انتهاء مدة الصلاحية',
+ 'users_api_tokens_docs' => 'وثائق API',
+ 'users_mfa' => 'المصادقة متعددة العوامل',
+ 'users_mfa_desc' => 'إعداد المصادقة متعددة العوامل كطبقة إضافية من الأمان لحساب المستخدم الخاص بك.',
+ 'users_mfa_x_methods' => ':count طريقة مُهيأة | :count طرق مُهيأة',
+ 'users_mfa_configure' => 'إعداد الطرق',
+
+ // API Tokens
+ 'user_api_token_create' => 'قم بإنشاء رمز API',
+ 'user_api_token_name' => 'الاسم',
+ 'user_api_token_name_desc' => 'اعطي الرمز الخاص بك اسمًا يمكن قراءته للتذكير مستقبلًا بالغرض المقصود منه.',
+ 'user_api_token_expiry' => 'تاريخ انتهاء الصلاحية',
+ 'user_api_token_expiry_desc' => 'حدد التاريخ الذي تنتهي فيه صلاحية هذا الرمز. بعد هذا التاريخ ، لن تعمل الطلبات المقدمة باستخدام هذا الرمز. سيؤدي ترك هذا الحقل فارغًا إلى تعيين انتهاء صلاحية لمدة 100 عام في المستقبل.',
+ 'user_api_token_create_secret_message' => 'عقب إنشاء هذا الرمز مباشرة، سيتم إنشاء "مُعرّف الرمز" و "رمز سري" وعرضهما. وسيتم عرض الرمز السري لمرة واحدة فقط ، لذا تأكد من نسخ قيمة هذا الرمز إلى مكان آمن ومضمون قبل المتابعة.',
+ 'user_api_token' => 'رمز الـ API',
+ 'user_api_token_id' => 'مُعرّف الرمز',
+ 'user_api_token_id_desc' => 'هذا مُعرّف تم إنشاؤه بواسطة النظام غير قابل للتحرير لهذا الرمز والذي يجب توفيره في طلبات API.',
+ 'user_api_token_secret' => 'الرمز السري',
+ 'user_api_token_secret_desc' => 'هذا الرمز السري تم إنشاؤه بواسطة النظام والذي يجب توفيره ضمن طلبات API. سيتم عرضه لمرة واحدة فقط ، لذا انسخ قيمة هذا الرمز إلى مكان آمن ومضمون.',
+ 'user_api_token_created' => 'تم إنشاء رمز :الوقت الزمني',
+ 'user_api_token_updated' => 'تم تحديث الرمز :الوقت الزمني',
+ 'user_api_token_delete' => 'حذف الرمز',
+ 'user_api_token_delete_warning' => 'سيؤدي هذا إلى حذف رمز API المُشار إليه بالكامل باسم \'اسم الرمز\' من النظام.',
+ 'user_api_token_delete_confirm' => 'هل أنت متأكد من أنك تريد حذف رمز API؟',
+
+ // Webhooks
+ 'webhooks' => 'خطافات الويب -Webhooks-',
+ 'webhooks_index_desc' => 'خطافات الويب هي طريقة لإرسال البيانات إلى الروابط الخارجية عندما تحدث بعض الإجراءات والأحداث داخل النظام الذي يسمح بالتكامل القائم على الأحداث مع المنصات الخارجية مثل نظم المراسلة أو الإشعار.',
+ 'webhooks_x_trigger_events' => ':count حدث تشغيل |:count أحداث تشغيل',
+ 'webhooks_create' => 'إنشاء خطاف ويب جديد',
+ 'webhooks_none_created' => 'لم يتم إنشاء أي خطافات ويب حتى الآن.',
+ 'webhooks_edit' => 'تحرير خطاف ويب',
+ 'webhooks_save' => 'حفظ خطاف ويب',
+ 'webhooks_details' => 'تفاصيل خطاف الويب',
+ 'webhooks_details_desc' => 'قم بتوفير اسم سهل الاستخدام ونقطة نهاية POST كموقع لإرسال بيانات خطافات الويب إليه.',
+ 'webhooks_events' => 'أحداث خطفات الويب',
+ 'webhooks_events_desc' => 'حدد جميع الأحداث التي يجب أن تشغل هذا الرابط ليتم استدعاؤها.',
+ 'webhooks_events_warning' => 'ضع في اعتبارك أن هذه الأحداث سيتم تشغيلها لجميع الأحداث المحددة، حتى إذا تم تطبيق صلاحيات مخصصة. تحقق أن استخدام خطاف الويب هذا لن يكشف عن محتوى سري.',
+ 'webhooks_events_all' => 'جميع أحداث النظام',
+ 'webhooks_name' => 'اسم خطاف الويب',
+ 'webhooks_timeout' => 'مهلة طلب خطاف الويب (بالثواني)',
+ 'webhooks_endpoint' => 'نقطة نهاية خطاف الويب',
+ 'webhooks_active' => 'خطاف الويب فعال',
+ 'webhook_events_table_header' => 'الأحداث',
+ 'webhooks_delete' => 'حذف خطاف الويب',
+ 'webhooks_delete_warning' => 'سيؤدي هذا إلى حذف خطاف الويب بالكامل، الذي يحمل اسم \':webhookName\'، من النظام.',
+ 'webhooks_delete_confirm' => 'هل أنت متيقِّن أنك تريد حذف هذا الخطاف؟',
+ 'webhooks_format_example' => 'مثال على تنسيق خطاف الويب',
+ 'webhooks_format_example_desc' => 'يتم إرسال بيانات خطاف الويب كطلب بوست -POST- إلى نقطة النهاية المكونة كجيسون -JSON- باتباع التنسيق أدناه. خصائص "ذات صلة" و "روابط" اختيارية و ستعتمد على نوع الحدث الذي تم تشغيله.',
+ 'webhooks_status' => 'حالة خطاف الويب',
+ 'webhooks_last_called' => 'آخر اتصال:',
+ 'webhooks_last_errored' => 'أخر خطأ:',
+ 'webhooks_last_error_message' => 'رسالة الخطأ الأخيرة:',
+
+ // Licensing
+ 'licenses' => 'الرخص',
+ 'licenses_desc' => 'هذه الصفحة تفصل معلومات الرخص لبوكستاك -BookStack- بالإضافة إلى المشاريع والمكتبات المستخدمة في بوكستاك. ولا يمكن استخدام العديد من المشاريع المدرجة إلا في سياق إنمائي.',
+ 'licenses_bookstack' => 'رخص بوكستاك',
+ 'licenses_php' => 'رخص مكتبات بي إتش بي -PHP-',
+ 'licenses_js' => 'رخص مكتبة جافا سكريبت -JavaScript-',
+ 'licenses_other' => 'رخص أخرى',
+ 'license_details' => 'تفاصيل الرخصة',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/ar/validation.php b/lang/ar/validation.php
new file mode 100644
index 00000000000..813f622a307
--- /dev/null
+++ b/lang/ar/validation.php
@@ -0,0 +1,123 @@
+ 'يجب الموافقة على :attribute.',
+ 'active_url' => ':attribute ليس رابط صالح.',
+ 'after' => 'يجب أن يكون التاريخ :attribute بعد :date.',
+ 'alpha' => 'يجب أن يقتصر :attribute على الحروف فقط.',
+ 'alpha_dash' => 'يجب أن يقتصر :attribute على حروف أو أرقام أو شرطات فقط.',
+ 'alpha_num' => 'يجب أن يقتصر :attribute على الحروف والأرقام فقط.',
+ 'array' => 'يجب أن تكون السمة مصفوفة.',
+ 'backup_codes' => 'الرمز المقدم غير صالح أو تم استخدامه بالفعل.',
+ 'before' => 'يجب أن يكون التاريخ :attribute قبل :date.',
+ 'between' => [
+ 'numeric' => 'يجب أن يكون :attribute بين :min و :max.',
+ 'file' => 'يجب أن يكون :attribute بين :min و :max كيلو بايت.',
+ 'string' => 'يجب أن يكون :attribute بين :min و :max حرف / حروف.',
+ 'array' => 'يجب أن يكون :attribute بين :min و :max عنصر / عناصر.',
+ ],
+ 'boolean' => 'يجب أن يحتمل حقل السمة الصحة أو الخطأ.',
+ 'confirmed' => ':attribute غير مطابق.',
+ 'date' => ':attribute ليس تاريخ صالح.',
+ 'date_format' => ':attribute لا يطابق الصيغة :format.',
+ 'different' => 'يجب أن يكون :attribute مختلف عن :other.',
+ 'digits' => 'يجب أن يكون :attribute بعدد :digits خانات.',
+ 'digits_between' => 'يجب أن يكون :attribute بعدد خانات بين :min و :max.',
+ 'email' => 'يجب أن يكون :attribute عنوان بريد إلكتروني صالح.',
+ 'ends_with' => 'يجب أن تنتهي السمة بأحد القيم التالية',
+ 'file' => 'يجب توفير :attribute كملف صالح.',
+ 'filled' => 'حقل :attribute مطلوب.',
+ 'gt' => [
+ 'numeric' => 'يجب أن تكون السمة أكبر من: القيمة.',
+ 'file' => 'يجب أن تكون السمة أكبر من: القيمة كيلوبايت.',
+ 'string' => 'يجب أن تكون السمة أكبر من: أحرف القيمة.',
+ 'array' => 'يجب أن تحتوي السمة على أكثر من: عناصر القيمة.',
+ ],
+ 'gte' => [
+ 'numeric' => 'يجب أن تكون السمة أكبر من أو تساوي: القيمة.',
+ 'file' => 'يجب أن تكون السمة أكبر من أو تساوي: القيمة كيلوبايت.',
+ 'string' => 'يجب أن تكون السمة أكبر من أو تساوي: أحرف القيمة.',
+ 'array' => 'يجب أن تحتوي السمة على: عناصر القيمة أو أكثر.',
+ ],
+ 'exists' => ':attribute المحدد غير صالح.',
+ 'image' => 'يجب أن يكون :attribute صورة.',
+ 'image_extension' => 'يجب أن تحتوي السمة على امتداد صورة صالح ومدعوم.',
+ 'in' => ':attribute المحدد غير صالح.',
+ 'integer' => 'يجب أن يكون :attribute عدد صحيح.',
+ 'ip' => 'يجب أن يكون :attribute عنوان IP صالح.',
+ 'ipv4' => 'يجب أن تكون السمة: عنوان IPv4 صالحًا.',
+ 'ipv6' => 'يجب أن تكون السمة: عنوان IPv6 صالحًا.',
+ 'json' => 'يجب أن تكون السمة: سلسلة من نوع جسون JSON صالح.',
+ 'lt' => [
+ 'numeric' => 'يجب أن تكون السمة أقل من: القيمة.',
+ 'file' => 'يجب أن تكون السمة أقل من: القيمة كيلوبايت.',
+ 'string' => 'يجب أن تكون السمة أقل من: أحرف القيمة.',
+ 'array' => 'يجب أن تحتوي السمة على أقل من: عناصر القيمة.',
+ ],
+ 'lte' => [
+ 'numeric' => 'يجب أن تكون السمة أقل من أو تساوي: القيمة.',
+ 'file' => 'يجب أن تكون السمة أقل من أو تساوي: القيمة كيلوبايت.',
+ 'string' => 'يجب أن تكون السمة أقل من أو تساوي: أحرف القيمة.',
+ 'array' => 'يجب ألا تحتوي السمة على أكثر من: عناصر القيمة.',
+ ],
+ 'max' => [
+ 'numeric' => 'يجب ألا يكون :attribute أكبر من :max.',
+ 'file' => 'يجب ألا يكون :attribute أكبر من :max كيلو بايت.',
+ 'string' => 'يجب ألا يكون :attribute أكثر من :max حرف / حروف.',
+ 'array' => 'يجب ألا يحتوي :attribute على أكثر من :max عنصر / عناصر.',
+ ],
+ 'mimes' => 'يجب أن يكون :attribute ملف من نوع: :values.',
+ 'min' => [
+ 'numeric' => 'يجب أن يكون :attribute على الأقل :min.',
+ 'file' => 'يجب أن يكون :attribute على الأقل :min كيلو بايت.',
+ 'string' => 'يجب أن يكون :attribute على الأقل :min حرف / حروف.',
+ 'array' => 'يجب أن يحتوي :attribute على :min عنصر / عناصر كحد أدنى.',
+ ],
+ 'not_in' => ':attribute المحدد غير صالح.',
+ 'not_regex' => 'صيغة السمة: غير صالحة.',
+ 'numeric' => 'يجب أن يكون :attribute رقم.',
+ 'regex' => 'صيغة :attribute غير صالحة.',
+ 'required' => 'حقل :attribute مطلوب.',
+ 'required_if' => 'حقل :attribute مطلوب عندما يكون :other :value.',
+ 'required_with' => 'حقل :attribute مطلوب عندما تكون :values موجودة.',
+ 'required_with_all' => 'حقل :attribute مطلوب عندما تكون :values موجودة.',
+ 'required_without' => 'حقل :attribute مطلوب عندما تكون :values غير موجودة.',
+ 'required_without_all' => 'حقل :attribute مطلوب عندما لا يكون أي من :values موجودة.',
+ 'same' => 'يجب تطابق :attribute مع :other.',
+ 'safe_url' => 'قد لايكون الرابط المتوفر آمنا.',
+ 'size' => [
+ 'numeric' => 'يجب أن يكون :attribute بحجم :size.',
+ 'file' => 'يجب أن يكون :attribute بحجم :size كيلو بايت.',
+ 'string' => 'يجب أن يكون :attribute بعدد :size حرف / حروف.',
+ 'array' => 'يجب أن يحتوي :attribute على :size عنصر / عناصر.',
+ ],
+ 'string' => 'يجب أن تكون السمة: سلسلة.',
+ 'timezone' => 'يجب أن تكون :attribute منطقة صالحة.',
+ 'totp' => 'الرمز المقدم غير صالح أو انتهت صلاحيته.',
+ 'unique' => 'تم حجز :attribute من قبل.',
+ 'url' => 'صيغة :attribute غير صالحة.',
+ 'uploaded' => 'تعذر تحميل الملف. قد لا يقبل الخادم ملفات بهذا الحجم.',
+
+ 'zip_file' => ':attribute بحاجة إلى الرجوع إلى مِلَفّ داخل المِلَفّ المضغوط.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => ':attribute بحاجة إلى الإشارة إلى مِلَفّ من نوع :validTypes، وجدت :foundType.',
+ 'zip_model_expected' => 'عنصر البيانات المتوقع ولكن ":type" تم العثور عليه.',
+ 'zip_unique' => 'يجب أن يكون :attribute فريداً لنوع الكائن داخل المِلَفّ المضغوط.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'يجب تأكيد كلمة السر',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/bg/activities.php b/lang/bg/activities.php
new file mode 100644
index 00000000000..f5ed71a4cc6
--- /dev/null
+++ b/lang/bg/activities.php
@@ -0,0 +1,140 @@
+ 'създадена страница',
+ 'page_create_notification' => 'Страницата е създадена успешно',
+ 'page_update' => 'обновена страница',
+ 'page_update_notification' => 'Страницата е обновена успешно',
+ 'page_delete' => 'изтрита страница',
+ 'page_delete_notification' => 'Страницата е изтрита успешно',
+ 'page_restore' => 'възстановена страница',
+ 'page_restore_notification' => 'Страницата е възстановена успешно',
+ 'page_move' => 'преместена страница',
+ 'page_move_notification' => 'Страницата беше успешно преместена',
+
+ // Chapters
+ 'chapter_create' => 'създадена глава',
+ 'chapter_create_notification' => 'Успешно създадена глава',
+ 'chapter_update' => 'обновена глава',
+ 'chapter_update_notification' => 'Успешно обновена глава',
+ 'chapter_delete' => 'изтрита глава',
+ 'chapter_delete_notification' => 'Успешно изтрита глава',
+ 'chapter_move' => 'преместена глава',
+ 'chapter_move_notification' => 'Главата е успешно преместена',
+
+ // Books
+ 'book_create' => 'създадена книга',
+ 'book_create_notification' => 'Книгата е създадена успешно',
+ 'book_create_from_chapter' => 'превърната глава в книга',
+ 'book_create_from_chapter_notification' => 'Главата е успешно преобразувана в книга',
+ 'book_update' => 'обновена книга',
+ 'book_update_notification' => 'Книгата е обновена успешно',
+ 'book_delete' => 'изтрита книга',
+ 'book_delete_notification' => 'Книгата е изтрита успешно',
+ 'book_sort' => 'сортирана книга',
+ 'book_sort_notification' => 'Книгата е преподредена успешно',
+
+ // Bookshelves
+ 'bookshelf_create' => 'created shelf',
+ 'bookshelf_create_notification' => 'Shelf successfully created',
+ 'bookshelf_create_from_book' => 'converted book to shelf',
+ 'bookshelf_create_from_book_notification' => 'Book successfully converted to a shelf',
+ 'bookshelf_update' => 'updated shelf',
+ 'bookshelf_update_notification' => 'Shelf successfully updated',
+ 'bookshelf_delete' => 'deleted shelf',
+ 'bookshelf_delete_notification' => 'Shelf successfully deleted',
+
+ // Revisions
+ 'revision_restore' => 'restored revision',
+ 'revision_delete' => 'deleted revision',
+ 'revision_delete_notification' => 'Revision successfully deleted',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" е добавен към любими успешно',
+ 'favourite_remove_notification' => '":name" е премахнат от любими успешно',
+
+ // Watching
+ 'watch_update_level_notification' => 'Watch preferences successfully updated',
+
+ // Auth
+ 'auth_login' => 'logged in',
+ 'auth_register' => 'registered as new user',
+ 'auth_password_reset_request' => 'requested user password reset',
+ 'auth_password_reset_update' => 'reset user password',
+ 'mfa_setup_method' => 'configured MFA method',
+ 'mfa_setup_method_notification' => 'Многофакторният метод е конфигуриран успешно',
+ 'mfa_remove_method' => 'removed MFA method',
+ 'mfa_remove_method_notification' => 'Многофакторният метод е премахнат успешно',
+
+ // Settings
+ 'settings_update' => 'updated settings',
+ 'settings_update_notification' => 'Settings successfully updated',
+ 'maintenance_action_run' => 'ran maintenance action',
+
+ // Webhooks
+ 'webhook_create' => 'създадена уебкука',
+ 'webhook_create_notification' => 'Уебкуката е създадена успешно',
+ 'webhook_update' => 'обновена уебкука',
+ 'webhook_update_notification' => 'Уебкуката е обновена успешно',
+ 'webhook_delete' => 'изтрита уебкука',
+ 'webhook_delete_notification' => 'Уебкуката е изтрита успешно',
+
+ // Imports
+ 'import_create' => 'created import',
+ 'import_create_notification' => 'Import successfully uploaded',
+ 'import_run' => 'updated import',
+ 'import_run_notification' => 'Content successfully imported',
+ 'import_delete' => 'deleted import',
+ 'import_delete_notification' => 'Import successfully deleted',
+
+ // Users
+ 'user_create' => 'created user',
+ 'user_create_notification' => 'User successfully created',
+ 'user_update' => 'updated user',
+ 'user_update_notification' => 'Потребителят е обновен успешно',
+ 'user_delete' => 'deleted user',
+ 'user_delete_notification' => 'Потребителят е премахнат успешно',
+
+ // API Tokens
+ 'api_token_create' => 'created API token',
+ 'api_token_create_notification' => 'API token successfully created',
+ 'api_token_update' => 'updated API token',
+ 'api_token_update_notification' => 'API token successfully updated',
+ 'api_token_delete' => 'deleted API token',
+ 'api_token_delete_notification' => 'API token successfully deleted',
+
+ // Roles
+ 'role_create' => 'created role',
+ 'role_create_notification' => 'Успешна създадена роля',
+ 'role_update' => 'updated role',
+ 'role_update_notification' => 'Успешно обновена роля',
+ 'role_delete' => 'deleted role',
+ 'role_delete_notification' => 'Успешно изтрита роля',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'emptied recycle bin',
+ 'recycle_bin_restore' => 'restored from recycle bin',
+ 'recycle_bin_destroy' => 'removed from recycle bin',
+
+ // Comments
+ 'commented_on' => 'коментирано на',
+ 'comment_create' => 'added comment',
+ 'comment_update' => 'updated comment',
+ 'comment_delete' => 'deleted comment',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'обновени права',
+];
diff --git a/lang/bg/auth.php b/lang/bg/auth.php
new file mode 100644
index 00000000000..4a7e56f22e0
--- /dev/null
+++ b/lang/bg/auth.php
@@ -0,0 +1,117 @@
+ 'Въведените данни не съвпадат с информацията в системата.',
+ 'throttle' => 'Твърде много опити за влизане. Опитайте пак след :seconds секунди.',
+
+ // Login & Register
+ 'sign_up' => 'Регистриране',
+ 'log_in' => 'Влизане',
+ 'log_in_with' => 'Влизане с :socialDriver',
+ 'sign_up_with' => 'Регистриране с :socialDriver',
+ 'logout' => 'Изход',
+
+ 'name' => 'Име',
+ 'username' => 'Потребителско име',
+ 'email' => 'Имейл',
+ 'password' => 'Парола',
+ 'password_confirm' => 'Потвърди паролата',
+ 'password_hint' => 'Трябва да бъде поне 8 символа',
+ 'forgot_password' => 'Забравена парола?',
+ 'remember_me' => 'Запомни ме',
+ 'ldap_email_hint' => 'Моля въведете емейл, който да използвате за дадения профил.',
+ 'create_account' => 'Създаване на акаунт',
+ 'already_have_account' => 'Вече имате профил?',
+ 'dont_have_account' => 'Нямате ли акаунт?',
+ 'social_login' => 'Влизане по друг начин',
+ 'social_registration' => 'Регистрация по друг начин',
+ 'social_registration_text' => 'Регистриране и влизане посредством друга услуга.',
+
+ 'register_thanks' => 'Благодарности за регистрирането!',
+ 'register_confirm' => 'Моля, провери своя имейл адрес и натисни бутона за потвърждение, за да достъпиш :appName.',
+ 'registrations_disabled' => 'Регистрациите към момента са забранени',
+ 'registration_email_domain_invalid' => 'Този емейл домейн към момента няма достъп до приложението',
+ 'register_success' => 'Благодарим Ви за регистрацията! В момента сте регистриран и сте вписани в приложението.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Опит за вход в системата',
+ 'auto_init_starting_desc' => 'Свързахме системата ви за удостоверяване към началото на процеса при влизане. Ако няма напредък след 5 секунди, то може да опитате да щракнете върху долната връзка.',
+ 'auto_init_start_link' => 'Продължаване с удостоверяването',
+
+ // Password Reset
+ 'reset_password' => 'Нулиране на паролата',
+ 'reset_password_send_instructions' => 'Въведете емейла си и ще ви бъде изпратен емейл с линк за нулиране на паролата.',
+ 'reset_password_send_button' => 'Изпращане на линк за възстановяване',
+ 'reset_password_sent' => 'Линк за нулиране на паролата ще Ви бъде изпратен на :email, ако емейлът Ви бъде открит в системата.',
+ 'reset_password_success' => 'Паролата Ви е променена успешно.',
+ 'email_reset_subject' => 'Възстанови паролата си за :appName',
+ 'email_reset_text' => 'Вие получихте този имейл, защото поискахте Вашата парола да бъде възстановена.',
+ 'email_reset_not_requested' => 'Ако Вие не сте поискали зануляването на паролата, няма нужда от други действия.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Потвърди емейла си за :appName',
+ 'email_confirm_greeting' => 'Благодарим Ви, че се присъединихте към :appName!',
+ 'email_confirm_text' => 'Потвърдете адреса на имейла си, щраквайки върху връзката по-долу:',
+ 'email_confirm_action' => 'Потвърдете имейл',
+ 'email_confirm_send_error' => 'Нужно ви е потвърждение чрез емейл, но системата не успя да го изпрати. Моля свържете се с администратора, за да проверите дали вашият емейл адрес е конфигуриран правилно.',
+ 'email_confirm_success' => 'Имейлът ти е потвърден! Вече би трябвало да можеш да се впишеш с този имейл адрес.',
+ 'email_confirm_resent' => 'Е-писмо за потвърждение е изпратено пак, проверете кутията си.',
+ 'email_confirm_thanks' => 'Благодарности за потвърждаването!',
+ 'email_confirm_thanks_desc' => 'Почакайте малко, обработвайки потвърждението ви. Ако не сте пренасочени след 3 секунди, то натиснете долу връзката "Продължаване", за да продължите.',
+
+ 'email_not_confirmed' => 'Имейл адресът не е потвърден',
+ 'email_not_confirmed_text' => 'Вашият имейл адрес все още не е потвърден.',
+ 'email_not_confirmed_click_link' => 'Моля да последвате линка, който ви беше изпратен непосредствено след регистрацията.',
+ 'email_not_confirmed_resend' => 'Ако не откривате писмото, може да го изпратите отново като попълните формуляра по-долу.',
+ 'email_not_confirmed_resend_button' => 'Изпрати отново емейла за потвърждение',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Вие бяхте поканен да се присъедините към :appName!',
+ 'user_invite_email_greeting' => 'Беше създаден акаунт за Вас във :appName.',
+ 'user_invite_email_text' => 'Натисните бутона по-долу за да определите парола и да получите достъп:',
+ 'user_invite_email_action' => 'Задаване на парола на акаунта',
+ 'user_invite_page_welcome' => 'Добре дошли в :appName!',
+ 'user_invite_page_text' => 'За да довършвам окончателно акаунта ви и да получите достъп трябва да зададете парола, която ще се използва за влизане в :appName при бъдещи посещения.',
+ 'user_invite_page_confirm_button' => 'Потвърди паролата',
+ 'user_invite_success_login' => 'Паролата е настроена, вече можеш да се впишеш с новата парола, за да достъпиш :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Настрой многофакторно удостоверяване',
+ 'mfa_setup_desc' => 'Настрой многофакторно удостверяване като втори слой сигурност на твоя профил.',
+ 'mfa_setup_configured' => 'Вече е конфигурирано',
+ 'mfa_setup_reconfigure' => 'Преконфигурирай',
+ 'mfa_setup_remove_confirmation' => 'Сигурен ли си, че желаеш да премахнеш този метод за многофакторно удостоверяване?',
+ 'mfa_setup_action' => 'Настройка',
+ 'mfa_backup_codes_usage_limit_warning' => 'Имаш по-малко от 5 останали резервни кода. Генерирай и съхрани нов набор, преди тези да са свършили, за да избегнеш да останеш без достъп до профила си.',
+ 'mfa_option_totp_title' => 'Мобилно приложение',
+ 'mfa_option_totp_desc' => 'За да използваш многофакторно удостоверяване, ще ти трябва мобилно приложение, което поддържа временни еднократни пароли (TOTP), като например Google Authenticator, Authy или Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Резервни кодове',
+ 'mfa_option_backup_codes_desc' => 'Генерира набор от еднократни резервни кодове, които ще въвеждате при влизане, за да потвърдите самоличността си. Уверете се, че ги съхранявате на безопасно и сигурно място.',
+ 'mfa_gen_confirm_and_enable' => 'Потвърди и включи',
+ 'mfa_gen_backup_codes_title' => 'Настройка на резервни кодове',
+ 'mfa_gen_backup_codes_desc' => 'Запази този лист с кодове на сигурно място. Когато достъпваш системата, ще можеш да използваш един от тези кодове като вторичен механизъм за удостоверяване.',
+ 'mfa_gen_backup_codes_download' => 'Изтегли кодовете',
+ 'mfa_gen_backup_codes_usage_warning' => 'Всеки код може да бъде използван само веднъж',
+ 'mfa_gen_totp_title' => 'Настройка на мобилно приложение',
+ 'mfa_gen_totp_desc' => 'За да използваш многофакторно удостоверяване, ще ти трябва мобилно приложение, което поддържа временни еднократни пароли (TOTP), като например Google Authenticator, Authy или Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'За да започнеш, сканирай QR кода отдолу с предпочитано от теб приложение.',
+ 'mfa_gen_totp_verify_setup' => 'Потвърди настройката',
+ 'mfa_gen_totp_verify_setup_desc' => 'Потвърди, че всичко работи, като в кутията отдолу въведеш код, генериран от твоето приложение за удостоверяване:',
+ 'mfa_gen_totp_provide_code_here' => 'Въведи тук кода, генериран от мобилното ти приложение',
+ 'mfa_verify_access' => 'Потвърди достъпа',
+ 'mfa_verify_access_desc' => 'Твоят потребителски профил изисква да потвърдиш идентичността си чрез допълнително ниво проверка преди да получиш достъп. Потвърди чрез един от конфигурираните методи, за да продължиш.',
+ 'mfa_verify_no_methods' => 'Няма конфигурирани методи',
+ 'mfa_verify_no_methods_desc' => 'Няма намерени методи за многофакторно удостоверяване за твоя профил. Ще трябва да настроиш поне един метод, преди да получиш достъп.',
+ 'mfa_verify_use_totp' => 'Потвърди чрез мобилно приложение',
+ 'mfa_verify_use_backup_codes' => 'Потвърди чрез резервен код',
+ 'mfa_verify_backup_code' => 'Резервен код',
+ 'mfa_verify_backup_code_desc' => 'Въведи един от останалите ти резервни кодове отдолу:',
+ 'mfa_verify_backup_code_enter_here' => 'Въведи резервен код тук',
+ 'mfa_verify_totp_desc' => 'Въведи кода, генериран от мобилното ти приложение, отдолу:',
+ 'mfa_setup_login_notification' => 'Многофакторният метод е конфигуриран, моля да се впишете отново чрез конфигурирания метод.',
+];
diff --git a/lang/bg/common.php b/lang/bg/common.php
new file mode 100644
index 00000000000..d464acb13de
--- /dev/null
+++ b/lang/bg/common.php
@@ -0,0 +1,115 @@
+ 'Отказ',
+ 'close' => 'Затвори',
+ 'confirm' => 'Потвърждаване',
+ 'back' => 'Назад',
+ 'save' => 'Запис',
+ 'continue' => 'Продължаване',
+ 'select' => 'Изберете',
+ 'toggle_all' => 'Избери всички',
+ 'more' => 'Повече',
+
+ // Form Labels
+ 'name' => 'Име',
+ 'description' => 'Описание',
+ 'role' => 'Роля',
+ 'cover_image' => 'Образ на корицата',
+ 'cover_image_description' => 'Изображението трябва да е около 440x250 px. Тъй като ще се мащабира и изрязва автоматично спрямо нуждите на интерфейса, крайните размери при показване може да се различават.',
+
+ // Actions
+ 'actions' => 'Действия',
+ 'view' => 'Преглед',
+ 'view_all' => 'Преглед на всички',
+ 'new' => 'Ново',
+ 'create' => 'Създаване',
+ 'update' => 'Обновяване',
+ 'edit' => 'Редактиране',
+ 'archive' => 'Архивирай',
+ 'unarchive' => 'Разархивирай',
+ 'sort' => 'Сортиране',
+ 'move' => 'Преместване',
+ 'copy' => 'Копиране',
+ 'reply' => 'Отговор',
+ 'delete' => 'Изтриване',
+ 'delete_confirm' => 'Потвърждаване на изтриването',
+ 'search' => 'Търсене',
+ 'search_clear' => 'Изчистване на търсенето',
+ 'reset' => 'Нулиране',
+ 'remove' => 'Премахване',
+ 'add' => 'Добавяне',
+ 'configure' => 'Конфигуриране',
+ 'manage' => 'Управлявай',
+ 'fullscreen' => 'Цял екран',
+ 'favourite' => 'Любимо',
+ 'unfavourite' => 'Не е любимо',
+ 'next' => 'Напред',
+ 'previous' => 'Предишен',
+ 'filter_active' => 'Активен филтър:',
+ 'filter_clear' => 'Изчистване на филтрите',
+ 'download' => 'Изтегляне',
+ 'open_in_tab' => 'Отваряне в раздел',
+ 'open' => 'Отвори',
+
+ // Sort Options
+ 'sort_options' => 'Опции за сортиране',
+ 'sort_direction_toggle' => 'Активирай сортиране',
+ 'sort_ascending' => 'Сортирай възходящо',
+ 'sort_descending' => 'Низходящо сортиране',
+ 'sort_name' => 'Име',
+ 'sort_default' => 'По подразбиране',
+ 'sort_created_at' => 'Дата на създаване',
+ 'sort_updated_at' => 'Дата на обновяване',
+
+ // Misc
+ 'deleted_user' => 'Изтриване на потребител',
+ 'no_activity' => 'Няма активност за показване',
+ 'no_items' => 'Няма налични артикули',
+ 'back_to_top' => 'Върнете се в началото',
+ 'skip_to_main_content' => 'Прескочи към основното съдържание',
+ 'toggle_details' => 'Активирай детайли',
+ 'toggle_thumbnails' => 'Активирай миниатюри',
+ 'details' => 'Подробности',
+ 'grid_view' => 'Табличен изглед',
+ 'list_view' => 'Изглед списък',
+ 'default' => 'Основен',
+ 'breadcrumb' => 'Трасиране',
+ 'status' => 'Състояние',
+ 'status_active' => 'Активен',
+ 'status_inactive' => 'Неактивен',
+ 'never' => 'Никога',
+ 'none' => 'Нищо',
+
+ // Header
+ 'homepage' => 'Начална страница',
+ 'header_menu_expand' => 'Разшири заглавното меню',
+ 'profile_menu' => 'Меню на профила',
+ 'view_profile' => 'Преглед на профила',
+ 'edit_profile' => 'Редактиране на профила',
+ 'dark_mode' => 'Тъмен режим',
+ 'light_mode' => 'Светъл режим',
+ 'global_search' => 'Глобално търсене',
+
+ // Layout tabs
+ 'tab_info' => 'Инфо.',
+ 'tab_info_label' => 'Раздел: показва вторична информация',
+ 'tab_content' => 'Съдържание',
+ 'tab_content_label' => 'Раздел: Показва първично съдържание',
+
+ // Email Content
+ 'email_action_help' => 'Ако имате проблеми с бутона ":actionText" по-горе, копирайте и поставете URL адреса по-долу в уеб браузъра си:',
+ 'email_rights' => 'Всички права запазени',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Политика за поверителност',
+ 'terms_of_service' => 'Условия на услугата',
+
+ // OpenSearch
+ 'opensearch_description' => 'Търси :appName',
+];
diff --git a/lang/bg/components.php b/lang/bg/components.php
new file mode 100644
index 00000000000..f88c69fc8be
--- /dev/null
+++ b/lang/bg/components.php
@@ -0,0 +1,46 @@
+ 'Избор на изображение',
+ 'image_list' => 'Image List',
+ 'image_details' => 'Image Details',
+ 'image_upload' => 'Upload Image',
+ 'image_intro' => 'Here you can select and manage images that have been previously uploaded to the system.',
+ 'image_intro_upload' => 'Upload a new image by dragging an image file into this window, or by using the "Upload Image" button above.',
+ 'image_all' => 'Всички',
+ 'image_all_title' => 'Преглед на всички изображения',
+ 'image_book_title' => 'Виж изображенията прикачени към тази книга',
+ 'image_page_title' => 'Виж изображенията прикачени към страницата',
+ 'image_search_hint' => 'Търси по име на картина',
+ 'image_uploaded' => 'Качено :uploadedDate',
+ 'image_uploaded_by' => 'Uploaded by :userName',
+ 'image_uploaded_to' => 'Uploaded to :pageLink',
+ 'image_updated' => 'Updated :updateDate',
+ 'image_load_more' => 'Зареди повече',
+ 'image_image_name' => 'Име на изображението',
+ 'image_delete_used' => 'Това изображение е използвано в страницата по-долу.',
+ 'image_delete_confirm_text' => 'Сигурни ли сте, че искате да изтриете това изображение?',
+ 'image_select_image' => 'Изберете изображение',
+ 'image_dropzone' => 'Поставете тук изображение или кликнете тук за да качите',
+ 'image_dropzone_drop' => 'Drop images here to upload',
+ 'images_deleted' => 'Изображението е изтрито',
+ 'image_preview' => 'Преглед на изображенията',
+ 'image_upload_success' => 'Изображението бе качено успешно',
+ 'image_update_success' => 'Данните за изобтажението са обновенни успешно',
+ 'image_delete_success' => 'Изображението е успешно изтрито',
+ 'image_replace' => 'Replace Image',
+ 'image_replace_success' => 'Image file successfully updated',
+ 'image_rebuild_thumbs' => 'Regenerate Size Variations',
+ 'image_rebuild_thumbs_success' => 'Image size variations successfully rebuilt!',
+
+ // Code Editor
+ 'code_editor' => 'Редактиране на кода',
+ 'code_language' => 'Език на кода',
+ 'code_content' => 'Съдържание на кода',
+ 'code_session_history' => 'История на сесиите',
+ 'code_save' => 'Запази кода',
+];
diff --git a/lang/bg/editor.php b/lang/bg/editor.php
new file mode 100644
index 00000000000..16c951a71a4
--- /dev/null
+++ b/lang/bg/editor.php
@@ -0,0 +1,182 @@
+ 'Общи',
+ 'advanced' => 'Разширени',
+ 'none' => 'Нищо',
+ 'cancel' => 'Отказ',
+ 'save' => 'Запис',
+ 'close' => 'Затваряне',
+ 'apply' => 'Приложи',
+ 'undo' => 'Отмяна',
+ 'redo' => 'Повтаряне',
+ 'left' => 'Вляво',
+ 'center' => 'По средата',
+ 'right' => 'Вдясно',
+ 'top' => 'Отгоре',
+ 'middle' => 'Среда',
+ 'bottom' => 'Отдолу',
+ 'width' => 'Ширина',
+ 'height' => 'Височина',
+ 'More' => 'Още',
+ 'select' => 'Изберете...',
+
+ // Toolbar
+ 'formats' => 'Формати',
+ 'header_large' => 'Голяма заглавка',
+ 'header_medium' => 'Средна заглавка',
+ 'header_small' => 'Малка заглавка',
+ 'header_tiny' => 'Миниатюрна заглавка',
+ 'paragraph' => 'Параграф',
+ 'blockquote' => 'Цитат',
+ 'inline_code' => 'Вложен код',
+ 'callouts' => 'Призиви',
+ 'callout_information' => 'Информация',
+ 'callout_success' => 'Успех',
+ 'callout_warning' => 'Предупреждение',
+ 'callout_danger' => 'Опасност',
+ 'bold' => 'Удебелено',
+ 'italic' => 'Наклонен',
+ 'underline' => 'Подчертан',
+ 'strikethrough' => 'Зачертан',
+ 'superscript' => 'Горен индекс',
+ 'subscript' => 'Долен индекс',
+ 'text_color' => 'Цвят на текста',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Цвят по избор',
+ 'remove_color' => 'Премахване на цвят',
+ 'background_color' => 'Фонов цвят',
+ 'align_left' => 'Подравняване отляво',
+ 'align_center' => 'Подравняване в средата',
+ 'align_right' => 'Подравняване отдясно',
+ 'align_justify' => 'Justify',
+ 'list_bullet' => 'Списък',
+ 'list_numbered' => 'Номериран списък',
+ 'list_task' => 'Task list',
+ 'indent_increase' => 'Увеличаване на отстъпа',
+ 'indent_decrease' => 'Намаляване на отстъпа',
+ 'table' => 'Таблица',
+ 'insert_image' => 'Вмъкване на образ',
+ 'insert_image_title' => 'Вмъкване/редактиране на образ',
+ 'insert_link' => 'Вмъкване/редактиране на връзка',
+ 'insert_link_title' => 'Вмъкни/редактирай връзка',
+ 'insert_horizontal_line' => 'Вмъкване на хоризонтална линия',
+ 'insert_code_block' => 'Вмъкване на блок код',
+ 'edit_code_block' => 'Edit code block',
+ 'insert_drawing' => 'Вмъкване/редактиране на рисунка',
+ 'drawing_manager' => 'Управление на рисунките',
+ 'insert_media' => 'Вмъкване/редактиране на мултимедията',
+ 'insert_media_title' => 'Вмъкване/редактиране на мултимедията',
+ 'clear_formatting' => 'Изчистване на форматирането',
+ 'source_code' => 'Изходен код',
+ 'source_code_title' => 'Изходен код',
+ 'fullscreen' => 'Цял екран',
+ 'image_options' => 'Възможности на образа',
+
+ // Tables
+ 'table_properties' => 'Свойства на таблицата',
+ 'table_properties_title' => 'Свойства на таблица',
+ 'delete_table' => 'Изтриване на таблица',
+ 'table_clear_formatting' => 'Clear table formatting',
+ 'resize_to_contents' => 'Resize to contents',
+ 'row_header' => 'Row header',
+ 'insert_row_before' => 'Вмъкни реда преди',
+ 'insert_row_after' => 'Вмъкни реда след',
+ 'delete_row' => 'Изтриване на ред',
+ 'insert_column_before' => 'Вмъкни колоната преди',
+ 'insert_column_after' => 'Вмъкни колоната след',
+ 'delete_column' => 'Изтрий колоната',
+ 'table_cell' => 'Клетка',
+ 'table_row' => 'Ред',
+ 'table_column' => 'Колона',
+ 'cell_properties' => 'Свойства на клетката',
+ 'cell_properties_title' => 'Свойства на клетката',
+ 'cell_type' => 'Тип на клетката',
+ 'cell_type_cell' => 'Клетка',
+ 'cell_scope' => 'Scope',
+ 'cell_type_header' => 'Заглавна клетка',
+ 'merge_cells' => 'Merge cells',
+ 'split_cell' => 'Split cell',
+ 'table_row_group' => 'Група от редове',
+ 'table_column_group' => 'Група от колони',
+ 'horizontal_align' => 'Хоризонтално разположение',
+ 'vertical_align' => 'Вертикално разположение',
+ 'border_width' => 'Дължината на рамката',
+ 'border_style' => 'Стил на рамката',
+ 'border_color' => 'Цвят на рамката',
+ 'row_properties' => 'Свойства на реда',
+ 'row_properties_title' => 'Свойства на реда',
+ 'cut_row' => 'Изрежи реда',
+ 'copy_row' => 'Копирай реда',
+ 'paste_row_before' => 'Постави реда преди',
+ 'paste_row_after' => 'Постави реда след',
+ 'row_type' => 'Тип на реда',
+ 'row_type_header' => 'Заглавка',
+ 'row_type_body' => 'Тяло',
+ 'row_type_footer' => 'Долна част',
+ 'alignment' => 'Подравняване',
+ 'cut_column' => 'Изрежи колоната',
+ 'copy_column' => 'Копирай колоната',
+ 'paste_column_before' => 'Постави колоната преди',
+ 'paste_column_after' => 'Постави колоната след',
+ 'cell_padding' => 'Отстояние на клетката',
+ 'cell_spacing' => 'Отстояние на клетката',
+ 'caption' => 'Надпис',
+ 'show_caption' => 'Покажи надпис',
+ 'constrain' => 'Ограничи пропорциите',
+ 'cell_border_solid' => 'Solid',
+ 'cell_border_dotted' => 'Dotted',
+ 'cell_border_dashed' => 'Dashed',
+ 'cell_border_double' => 'Double',
+ 'cell_border_groove' => 'Groove',
+ 'cell_border_ridge' => 'Ridge',
+ 'cell_border_inset' => 'Inset',
+ 'cell_border_outset' => 'Outset',
+ 'cell_border_none' => 'None',
+ 'cell_border_hidden' => 'Hidden',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Източник',
+ 'alt_desc' => 'Алтернативно описание',
+ 'embed' => 'Вгради',
+ 'paste_embed' => 'Постави кода за вмъкване отдолу:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Текст за показване',
+ 'title' => 'Заглавие',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Open link',
+ 'open_link_in' => 'Open link in...',
+ 'open_link_current' => 'Текущ прозорец',
+ 'open_link_new' => 'Нов прозорец',
+ 'remove_link' => 'Премахване на връзка',
+ 'insert_collapsible' => 'Вмъкни сгъваем блок',
+ 'collapsible_unwrap' => 'Разгъни',
+ 'edit_label' => 'Редактирай етикета',
+ 'toggle_open_closed' => 'Превключи отворено/затворено',
+ 'collapsible_edit' => 'Редактирай сгъваем блок',
+ 'toggle_label' => 'Превключи надписа',
+
+ // About view
+ 'about' => 'За редактора',
+ 'about_title' => 'Относно визуалния редактор',
+ 'editor_license' => 'Лиценз, авторски и сходни права на редактора',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'Този редактор е изграден посредством :tinyLink, което е предоставен под лиценз MIT.',
+ 'editor_tiny_license_link' => 'Авторското и сходните му права, както и лицензът на TinyMCE, могат да бъдат намерени тук.',
+ 'save_continue' => 'Запази страницата и продължи',
+ 'callouts_cycle' => '(Продължавай да натискаш, за да превключваш типовете)',
+ 'link_selector' => 'Свържи със съдържанието',
+ 'shortcuts' => 'Преки пътища',
+ 'shortcut' => 'Пряк път',
+ 'shortcuts_intro' => 'Следните клавишни комбинации са налични за редактора:',
+ 'windows_linux' => '(Уиндоус/Линукс)',
+ 'mac' => '(Мак.)',
+ 'description' => 'Описание',
+];
diff --git a/lang/bg/entities.php b/lang/bg/entities.php
new file mode 100644
index 00000000000..42cdad801a9
--- /dev/null
+++ b/lang/bg/entities.php
@@ -0,0 +1,476 @@
+ 'Наскоро създадени',
+ 'recently_created_pages' => 'Наскоро създадени страници',
+ 'recently_updated_pages' => 'Наскоро актуализирани страници',
+ 'recently_created_chapters' => 'Наскоро създадени глави',
+ 'recently_created_books' => 'Наскоро създадени книги',
+ 'recently_created_shelves' => 'Наскоро създадени рафтове',
+ 'recently_update' => 'Наскоро актуализирани',
+ 'recently_viewed' => 'Скорошно разгледани',
+ 'recent_activity' => 'Последна активност',
+ 'create_now' => 'Създай една сега',
+ 'revisions' => 'Ревизии',
+ 'meta_revision' => 'Ревизия #:revisionCount',
+ 'meta_created' => 'Създадено преди :timeLength',
+ 'meta_created_name' => 'Създадено преди :timeLength от :user',
+ 'meta_updated' => 'Актуализирано :timeLength',
+ 'meta_updated_name' => 'Актуализирано преди :timeLength от :user',
+ 'meta_owned_name' => 'Притежавано от :user',
+ 'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
+ 'entity_select' => 'Избор на обект',
+ 'entity_select_lack_permission' => 'You don\'t have the required permissions to select this item',
+ 'images' => 'Изображения',
+ 'my_recent_drafts' => 'Моите скорошни драфтове',
+ 'my_recently_viewed' => 'Моите скорошни преглеждания',
+ 'my_most_viewed_favourites' => 'Моите най-преглеждани любими',
+ 'my_favourites' => 'Моите фаворити',
+ 'no_pages_viewed' => 'Не сте прегледали никакви страници',
+ 'no_pages_recently_created' => 'Не са били създавани страници скоро',
+ 'no_pages_recently_updated' => 'Не са били актуализирани страници скоро',
+ 'export' => 'Експортиране',
+ 'export_html' => 'Прикачени уеб файлове',
+ 'export_pdf' => 'PDF файл',
+ 'export_text' => 'Обикновен текстов файл',
+ 'export_md' => 'Markdown файл',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Права',
+ 'permissions_desc' => 'Set permissions here to override the default permissions provided by user roles.',
+ 'permissions_book_cascade' => 'Permissions set on books will automatically cascade to child chapters and pages, unless they have their own permissions defined.',
+ 'permissions_chapter_cascade' => 'Permissions set on chapters will automatically cascade to child pages, unless they have their own permissions defined.',
+ 'permissions_save' => 'Запази права',
+ 'permissions_owner' => 'Собственик',
+ 'permissions_role_everyone_else' => 'Everyone Else',
+ 'permissions_role_everyone_else_desc' => 'Set permissions for all roles not specifically overridden.',
+ 'permissions_role_override' => 'Override permissions for role',
+ 'permissions_inherit_defaults' => 'Inherit defaults',
+
+ // Search
+ 'search_results' => 'Резултати от търсенето',
+ 'search_total_results_found' => ':count резултати намерени|:count общо намерени резултати',
+ 'search_clear' => 'Изчисти търсенето',
+ 'search_no_pages' => 'Няма страници отговарящи на търсенето',
+ 'search_for_term' => 'Търси :term',
+ 'search_more' => 'Още резултати',
+ 'search_advanced' => 'Подробно търсене',
+ 'search_terms' => 'Термини за търсене',
+ 'search_content_type' => 'Тип на съдържание',
+ 'search_exact_matches' => 'Точни съвпадения',
+ 'search_tags' => 'Търсене на тагове',
+ 'search_options' => 'Настройки',
+ 'search_viewed_by_me' => 'Прегледано от мен',
+ 'search_not_viewed_by_me' => 'Непрегледано от мен',
+ 'search_permissions_set' => 'Задаване на права',
+ 'search_created_by_me' => 'Създадено от мен',
+ 'search_updated_by_me' => 'Обновено от мен',
+ 'search_owned_by_me' => 'Притежаван от мен',
+ 'search_date_options' => 'Настройки на дати',
+ 'search_updated_before' => 'Обновено преди',
+ 'search_updated_after' => 'Обновено след',
+ 'search_created_before' => 'Създадено преди',
+ 'search_created_after' => 'Създадено след',
+ 'search_set_date' => 'Задаване на дата',
+ 'search_update' => 'Обнови търсенето',
+
+ // Shelves
+ 'shelf' => 'Рафт',
+ 'shelves' => 'Рафтове',
+ 'x_shelves' => ':count Рафт|:count Рафтове',
+ 'shelves_empty' => 'Няма създадени рафтове',
+ 'shelves_create' => 'Създай нов рафт',
+ 'shelves_popular' => 'Популярни рафтове',
+ 'shelves_new' => 'Нови рафтове',
+ 'shelves_new_action' => 'Нов рафт',
+ 'shelves_popular_empty' => 'Най-популярните рафтове ще излязат тук.',
+ 'shelves_new_empty' => 'Най-новите рафтове ще излязат тук.',
+ 'shelves_save' => 'Запази рафт',
+ 'shelves_books' => 'Книги на този рафт',
+ 'shelves_add_books' => 'Добави книги към този рафт',
+ 'shelves_drag_books' => 'Drag books below to add them to this shelf',
+ 'shelves_empty_contents' => 'Този рафт няма добавени книги',
+ 'shelves_edit_and_assign' => 'Редактирай рафта за да добавиш книги',
+ 'shelves_edit_named' => 'Edit Shelf :name',
+ 'shelves_edit' => 'Edit Shelf',
+ 'shelves_delete' => 'Delete Shelf',
+ 'shelves_delete_named' => 'Delete Shelf :name',
+ 'shelves_delete_explain' => "This will delete the shelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Are you sure you want to delete this shelf?',
+ 'shelves_permissions' => 'Shelf Permissions',
+ 'shelves_permissions_updated' => 'Shelf Permissions Updated',
+ 'shelves_permissions_active' => 'Shelf Permissions Active',
+ 'shelves_permissions_cascade_warning' => 'Permissions on shelves do not automatically cascade to contained books. This is because a book can exist on multiple shelves. Permissions can however be copied down to child books using the option found below.',
+ 'shelves_permissions_create' => 'Shelf create permissions are only used for copying permissions to child books using the action below. They do not control the ability to create books.',
+ 'shelves_copy_permissions_to_books' => 'Копирай настойките за достъп към книгите',
+ 'shelves_copy_permissions' => 'Копирай настройките за достъп',
+ 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this shelf to all books contained within. Before activating, ensure any changes to the permissions of this shelf have been saved.',
+ 'shelves_copy_permission_success' => 'Shelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'Книга',
+ 'books' => 'Книги',
+ 'x_books' => ':count Книга|:count Книги',
+ 'books_empty' => 'Няма създадени книги',
+ 'books_popular' => 'Популярни книги',
+ 'books_recent' => 'Скоро разглеждани книги',
+ 'books_new' => 'Нови книги',
+ 'books_new_action' => 'Нова книга',
+ 'books_popular_empty' => 'Най-популярните книги ще излязат тук.',
+ 'books_new_empty' => 'Най-новите книги ще излязат тук.',
+ 'books_create' => 'Създай нова книга',
+ 'books_delete' => 'Изтрита книга',
+ 'books_delete_named' => 'Изтрий книга :bookName',
+ 'books_delete_explain' => 'Това действие ще изтрие книга с името \':bookName\'. Всички страници и глави ще бъдат изтрити.',
+ 'books_delete_confirmation' => 'Сигурен ли сте, че искате да изтриете книгата?',
+ 'books_edit' => 'Редактиране на книга',
+ 'books_edit_named' => 'Редактирай книга :bookName',
+ 'books_form_book_name' => 'Име на книга',
+ 'books_save' => 'Запази книга',
+ 'books_permissions' => 'Настройки за достъп до книгата',
+ 'books_permissions_updated' => 'Настройките за достъп до книгата бяха обновени',
+ 'books_empty_contents' => 'Няма създадени страници или глави към тази книга.',
+ 'books_empty_create_page' => 'Създаване на нова страница',
+ 'books_empty_sort_current_book' => 'Сортирай настоящата книга',
+ 'books_empty_add_chapter' => 'Добавяне на раздел',
+ 'books_permissions_active' => 'Настройките за достъп до книгата са активни',
+ 'books_search_this' => 'Търси в книгата',
+ 'books_navigation' => 'Навигация на книгата',
+ 'books_sort' => 'Сортирай съдържанието на книгата',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Сортирай книга :bookName',
+ 'books_sort_name' => 'Сортиране по име',
+ 'books_sort_created' => 'Сортирай по дата на създаване',
+ 'books_sort_updated' => 'Сортирай по дата на обновяване',
+ 'books_sort_chapters_first' => 'Първа глава',
+ 'books_sort_chapters_last' => 'Последна глава',
+ 'books_sort_show_other' => 'Покажи други книги',
+ 'books_sort_save' => 'Запази новата подредба',
+ 'books_sort_show_other_desc' => 'Add other books here to include them in the sort operation, and allow easy cross-book reorganisation.',
+ 'books_sort_move_up' => 'Move Up',
+ 'books_sort_move_down' => 'Move Down',
+ 'books_sort_move_prev_book' => 'Move to Previous Book',
+ 'books_sort_move_next_book' => 'Move to Next Book',
+ 'books_sort_move_prev_chapter' => 'Move Into Previous Chapter',
+ 'books_sort_move_next_chapter' => 'Move Into Next Chapter',
+ 'books_sort_move_book_start' => 'Move to Start of Book',
+ 'books_sort_move_book_end' => 'Move to End of Book',
+ 'books_sort_move_before_chapter' => 'Move to Before Chapter',
+ 'books_sort_move_after_chapter' => 'Move to After Chapter',
+ 'books_copy' => 'Копирай книгата',
+ 'books_copy_success' => 'Книгата е копирана успешно',
+
+ // Chapters
+ 'chapter' => 'Глава',
+ 'chapters' => 'Глави',
+ 'x_chapters' => ':count Глава|:count Глави',
+ 'chapters_popular' => 'Популярни глави',
+ 'chapters_new' => 'Нова глава',
+ 'chapters_create' => 'Създай нова глава',
+ 'chapters_delete' => 'Изтрий глава',
+ 'chapters_delete_named' => 'Изтрий глава :chapterName',
+ 'chapters_delete_explain' => 'Това ще изтрие главата \':chapterName\'. Всички страници в главата също ще бъдат изтрити.',
+ 'chapters_delete_confirm' => 'Сигурни ли сте, че искате да изтриете тази глава?',
+ 'chapters_edit' => 'Редактирай глава',
+ 'chapters_edit_named' => 'Актуализирай глава :chapterName',
+ 'chapters_save' => 'Запази глава',
+ 'chapters_move' => 'Премести глава',
+ 'chapters_move_named' => 'Премести глава :chapterName',
+ 'chapters_copy' => 'Копирай главата',
+ 'chapters_copy_success' => 'Главата е копирана успешно',
+ 'chapters_permissions' => 'Настойки за достъп на главата',
+ 'chapters_empty' => 'Няма създадени страници в тази глава.',
+ 'chapters_permissions_active' => 'Настройките за достъп до глава са активни',
+ 'chapters_permissions_success' => 'Настройките за достъп до главата бяха обновени',
+ 'chapters_search_this' => 'Търси в тази глава',
+ 'chapter_sort_book' => 'Sort Book',
+
+ // Pages
+ 'page' => 'Страница',
+ 'pages' => 'Страници',
+ 'x_pages' => ':count Страница|:count Страници',
+ 'pages_popular' => 'Популярни страници',
+ 'pages_new' => 'Нова страница',
+ 'pages_attachments' => 'Прикачени файлове',
+ 'pages_navigation' => 'Навигация на страница',
+ 'pages_delete' => 'Изтрий страница',
+ 'pages_delete_named' => 'Изтрий страница :pageName',
+ 'pages_delete_draft_named' => 'Изтрий чернова :pageName',
+ 'pages_delete_draft' => 'Изтрий чернова',
+ 'pages_delete_success' => 'Страницата е изтрита',
+ 'pages_delete_draft_success' => 'Черновата на страницата бе изтрита',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Сигурни ли сте, че искате да изтриете тази страница?',
+ 'pages_delete_draft_confirm' => 'Сигурни ли сте, че искате да изтриете тази чернова?',
+ 'pages_editing_named' => 'Редактиране на страница :pageName',
+ 'pages_edit_draft_options' => 'Настройки на черновата',
+ 'pages_edit_save_draft' => 'Запазване на чернова',
+ 'pages_edit_draft' => 'Редактирай на черновата',
+ 'pages_editing_draft' => 'Редактиране на чернова',
+ 'pages_editing_page' => 'Редактиране на страница',
+ 'pages_edit_draft_save_at' => 'Черновата е запазена в ',
+ 'pages_edit_delete_draft' => 'Изтрий чернова',
+ 'pages_edit_delete_draft_confirm' => 'Are you sure you want to delete your draft page changes? All of your changes, since the last full save, will be lost and the editor will be updated with the latest page non-draft save state.',
+ 'pages_edit_discard_draft' => 'Отхвърляне на черновата',
+ 'pages_edit_switch_to_markdown' => 'Switch to Markdown Editor',
+ 'pages_edit_switch_to_markdown_clean' => '(Clean Content)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stable Content)',
+ 'pages_edit_switch_to_wysiwyg' => 'Switch to WYSIWYG Editor',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Задайте регистър на промените',
+ 'pages_edit_enter_changelog_desc' => 'Въведете кратко резюме на промените, които сте създали',
+ 'pages_edit_enter_changelog' => 'Въведи регистър на промените',
+ 'pages_editor_switch_title' => 'Switch Editor',
+ 'pages_editor_switch_are_you_sure' => 'Are you sure you want to change the editor for this page?',
+ 'pages_editor_switch_consider_following' => 'Consider the following when changing editors:',
+ 'pages_editor_switch_consideration_a' => 'Once saved, the new editor option will be used by any future editors, including those that may not be able to change editor type themselves.',
+ 'pages_editor_switch_consideration_b' => 'This can potentially lead to a loss of detail and syntax in certain circumstances.',
+ 'pages_editor_switch_consideration_c' => 'Tag or changelog changes, made since last save, won\'t persist across this change.',
+ 'pages_save' => 'Запазване на страницата',
+ 'pages_title' => 'Заглавие на страницата',
+ 'pages_name' => 'Име на страницата',
+ 'pages_md_editor' => 'Редактор',
+ 'pages_md_preview' => 'Предварителен преглед',
+ 'pages_md_insert_image' => 'Добавяна на изображение',
+ 'pages_md_insert_link' => 'Добави линк към обекта',
+ 'pages_md_insert_drawing' => 'Вмъкни рисунка',
+ 'pages_md_show_preview' => 'Show preview',
+ 'pages_md_sync_scroll' => 'Sync preview scroll',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Unsaved Drawing Found',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'Страницата не принадлежи в никоя глава',
+ 'pages_move' => 'Премести страницата',
+ 'pages_copy' => 'Копиране на страницата',
+ 'pages_copy_desination' => 'Копиране на дестинацията',
+ 'pages_copy_success' => 'Страницата беше успешно копирана',
+ 'pages_permissions' => 'Настройки за достъп на страницата',
+ 'pages_permissions_success' => 'Настройките за достъп до страницата бяха обновени',
+ 'pages_revision' => 'Ревизия',
+ 'pages_revisions' => 'Ревизии на страницата',
+ 'pages_revisions_desc' => 'Listed below are all the past revisions of this page. You can look back upon, compare, and restore old page versions if permissions allow. The full history of the page may not be fully reflected here since, depending on system configuration, old revisions could be auto-deleted.',
+ 'pages_revisions_named' => 'Ревизии на страницата :pageName',
+ 'pages_revision_named' => 'Ревизия на страницата :pageName',
+ 'pages_revision_restored_from' => 'Възстановено от #:id; :summary',
+ 'pages_revisions_created_by' => 'Създадено от',
+ 'pages_revisions_date' => 'Дата на ревизията',
+ 'pages_revisions_number' => '№',
+ 'pages_revisions_sort_number' => 'Revision Number',
+ 'pages_revisions_numbered' => 'Ревизия №:id',
+ 'pages_revisions_numbered_changes' => 'Ревизия №:id Промени',
+ 'pages_revisions_editor' => 'Editor Type',
+ 'pages_revisions_changelog' => 'История на промените',
+ 'pages_revisions_changes' => 'Промени',
+ 'pages_revisions_current' => 'Текуща версия',
+ 'pages_revisions_preview' => 'Предварителен преглед',
+ 'pages_revisions_restore' => 'Възстановяване',
+ 'pages_revisions_none' => 'Тази страница няма ревизии',
+ 'pages_copy_link' => 'Копирай връзката',
+ 'pages_edit_content_link' => 'Jump to section in editor',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Page Section Options',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Настройките за достъп до страницата са активни',
+ 'pages_initial_revision' => 'Първо публикуване',
+ 'pages_references_update_revision' => 'System auto-update of internal links',
+ 'pages_initial_name' => 'Нова страница',
+ 'pages_editing_draft_notification' => 'В момента редактирате чернова, която беше последно обновена :timeDiff.',
+ 'pages_draft_edited_notification' => 'Тази страница беше актуализирана от тогава. Препоръчително е да изтриете настоящата чернова.',
+ 'pages_draft_page_changed_since_creation' => 'Страницата е била обновена от създаването на черновата. Препоръчително е да изтриеш черновата или да се погрижиш да не презапишеш промени по страницата.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count потребителя започнаха да редактират настоящата страница',
+ 'start_b' => ':userName в момента редактира тази страница',
+ 'time_a' => 'от както страницата беше актуализирана',
+ 'time_b' => 'в последните :minCount минути',
+ 'message' => ':start :time. Внимавайте да не попречите на актуализацията на другия!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'Определена страница',
+ 'pages_is_template' => 'Шаблон на страницата',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'Тагове на страницата',
+ 'chapter_tags' => 'Тагове на главата',
+ 'book_tags' => 'Тагове на книгата',
+ 'shelf_tags' => 'Тагове на рафта',
+ 'tag' => 'Таг',
+ 'tags' => 'Тагове',
+ 'tags_index_desc' => 'Tags can be applied to content within the system to apply a flexible form of categorization. Tags can have both a key and value, with the value being optional. Once applied, content can then be queried using the tag name and value.',
+ 'tag_name' => 'Име на таг',
+ 'tag_value' => 'Съдържание на тага (Опционално)',
+ 'tags_explain' => "Добавете няколко тага за да категоризирате по добре вашето съдържание. \n Може да добавите съдържание на таговете за по-подробна организация.",
+ 'tags_add' => 'Добави друг таг',
+ 'tags_remove' => 'Премахни този таг',
+ 'tags_usages' => 'Общо ползвания на таг',
+ 'tags_assigned_pages' => 'Присвоен на страници',
+ 'tags_assigned_chapters' => 'Присвоен на глави',
+ 'tags_assigned_books' => 'Присвоен на книги',
+ 'tags_assigned_shelves' => 'Присвоен на рафтове',
+ 'tags_x_unique_values' => ':count уникални стойности',
+ 'tags_all_values' => 'Всички стойности',
+ 'tags_view_tags' => 'Виж тагове',
+ 'tags_view_existing_tags' => 'Виж съществуващи тагове',
+ 'tags_list_empty_hint' => 'Таговете могат да бъдат прилагани чрез страничната лента в редактора на страници или по време на редактирането на детайлите за книги, глави или рафтове.',
+ 'attachments' => 'Прикачени файлове',
+ 'attachments_explain' => 'Прикачете файлове или линкове, които да са видими на вашата страница. Същите ще бъдат видими във вашето странично поле.',
+ 'attachments_explain_instant_save' => 'Промените тук се запазват веднага.',
+ 'attachments_upload' => 'Прикачен файл',
+ 'attachments_link' => 'Прикачване на линк',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'Поставяне на линк',
+ 'attachments_delete' => 'Сигурни ли сте, че искате да изтриете прикачения файл?',
+ 'attachments_dropzone' => 'Drop files here to upload',
+ 'attachments_no_files' => 'Няма прикачени фалове',
+ 'attachments_explain_link' => 'Може да прикачите линк, ако не искате да качвате файл. Този линк може да бъде към друга страница или към файл в облакова пространство.',
+ 'attachments_link_name' => 'Има на линка',
+ 'attachment_link' => 'Линк към прикачения файл',
+ 'attachments_link_url' => 'Линк към файла',
+ 'attachments_link_url_hint' => 'Url на сайт или файл',
+ 'attach' => 'Прикачване',
+ 'attachments_insert_link' => 'Добави линк на прикачен файл към страница',
+ 'attachments_edit_file' => 'Редактирай файл',
+ 'attachments_edit_file_name' => 'Име на файл',
+ 'attachments_edit_drop_upload' => 'Поставете файл или цъкнете тук за да прикачите и обновите',
+ 'attachments_order_updated' => 'Прикачения файл беше обновен',
+ 'attachments_updated_success' => 'Данните на прикачения файл бяха обновени',
+ 'attachments_deleted' => 'Прикачения файл беше изтрит',
+ 'attachments_file_uploaded' => 'Файлът беше качен успешно',
+ 'attachments_file_updated' => 'Файлът беше обновен успешно',
+ 'attachments_link_attached' => 'Линкът беше успешно прикачен към страницата',
+ 'templates' => 'Шаблони',
+ 'templates_set_as_template' => 'Страницата е шаблон',
+ 'templates_explain_set_as_template' => 'Можете да зададете тази страница като шаблон, така че нейното съдържание да бъде използвано при създаването на други страници. Други потребители ще могат да използват този шаблон, ако имат разрешения за преглед на тази страница.',
+ 'templates_replace_content' => 'Замени съдържанието на страницата',
+ 'templates_append_content' => 'Добави в края на съдържанието на страницата',
+ 'templates_prepend_content' => 'Добави в началото на съдържанието на страницата',
+
+ // Profile View
+ 'profile_user_for_x' => 'Потребител от :time',
+ 'profile_created_content' => 'Създадено съдържание',
+ 'profile_not_created_pages' => ':userName не е създал страници',
+ 'profile_not_created_chapters' => ':userName не е създавал глави',
+ 'profile_not_created_books' => ':userName не е създавал книги',
+ 'profile_not_created_shelves' => ':userName не е създавал рафтове',
+
+ // Comments
+ 'comment' => 'Коментирай',
+ 'comments' => 'Коментари',
+ 'comment_add' => 'Добавяне на коментар',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Напишете коментар',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Запази коментар',
+ 'comment_new' => 'Нов коментар',
+ 'comment_created' => 'коментирано :createDiff',
+ 'comment_updated' => 'Актуализирано :updateDiff от :username',
+ 'comment_updated_indicator' => 'Updated',
+ 'comment_deleted_success' => 'Коментарът е изтрит',
+ 'comment_created_success' => 'Коментарът е добавен',
+ 'comment_updated_success' => 'Коментарът е обновен',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Наистина ли искате да изтриете този коментар?',
+ 'comment_in_reply_to' => 'В отговор на :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Here are the comments that have been left on this page. Comments can be added & managed when viewing the saved page.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Наистина ли искате да изтриете тази версия?',
+ 'revision_restore_confirm' => 'Сигурни ли сте, че искате да изтриете тази версия? Настоящата страница ще бъде заместена.',
+ 'revision_cannot_delete_latest' => 'Не може да изтриете последната версия.',
+
+ // Copy view
+ 'copy_consider' => 'Моля, имай предвид долното при копиране на съдържание.',
+ 'copy_consider_permissions' => 'Специфичните настройки на привилегиите няма да бъдат копирани.',
+ 'copy_consider_owner' => 'Ти ще станеш собственикът на цялото копирано съдържание.',
+ 'copy_consider_images' => 'Файловете на изображенията в страницата няма да бъдат дубликирани и оригиналните изображения ще запазят връзката си със страницата, на която са били качени първоначално.',
+ 'copy_consider_attachments' => 'Прикачените към страницата обекти няма да бъдат копирани.',
+ 'copy_consider_access' => 'Смяна на местоположението, собственика или привилегиите може да направи това съдържание достъпно за тези, които не са го виждали преди.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Convert to Shelf',
+ 'convert_to_shelf_contents_desc' => 'You can convert this book to a new shelf with the same contents. Chapters contained within this book will be converted to new books. If this book contains any pages, that are not in a chapter, this book will be renamed and contain such pages, and this book will become part of the new shelf.',
+ 'convert_to_shelf_permissions_desc' => 'Any permissions set on this book will be copied to the new shelf and to all new child books that don\'t have their own permissions enforced. Note that permissions on shelves do not auto-cascade to content within, as they do for books.',
+ 'convert_book' => 'Convert Book',
+ 'convert_book_confirm' => 'Are you sure you want to convert this book?',
+ 'convert_undo_warning' => 'This cannot be as easily undone.',
+ 'convert_to_book' => 'Convert to Book',
+ 'convert_to_book_desc' => 'You can convert this chapter to a new book with the same contents. Any permissions set on this chapter will be copied to the new book but any inherited permissions, from the parent book, will not be copied which could lead to a change of access control.',
+ 'convert_chapter' => 'Convert Chapter',
+ 'convert_chapter_confirm' => 'Are you sure you want to convert this chapter?',
+
+ // References
+ 'references' => 'References',
+ 'references_none' => 'There are no tracked references to this item.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Watch',
+ 'watch_title_default' => 'Default Preferences',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignore',
+ 'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
+ 'watch_title_new' => 'New Pages',
+ 'watch_desc_new' => 'Notify when any new page is created within this item.',
+ 'watch_title_updates' => 'All Page Updates',
+ 'watch_desc_updates' => 'Notify upon all new pages and page changes.',
+ 'watch_desc_updates_page' => 'Notify upon all page changes.',
+ 'watch_title_comments' => 'All Page Updates & Comments',
+ 'watch_desc_comments' => 'Notify upon all new pages, page changes and new comments.',
+ 'watch_desc_comments_page' => 'Notify upon page changes and new comments.',
+ 'watch_change_default' => 'Change default notification preferences',
+ 'watch_detail_ignore' => 'Ignoring notifications',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/bg/errors.php b/lang/bg/errors.php
new file mode 100644
index 00000000000..6e488718047
--- /dev/null
+++ b/lang/bg/errors.php
@@ -0,0 +1,135 @@
+ 'Нямате права за достъп до избраната страница.',
+ 'permissionJson' => 'Нямате права да извършите тази операция.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Потребител с емайл :email вече съществува но с други данни.',
+ 'auth_pre_register_theme_prevention' => 'Потребителски профил не може да бъде създаден с посочената информация',
+ 'email_already_confirmed' => 'Емейлът вече беше потвърден. Моля опитрайте да влезете.',
+ 'email_confirmation_invalid' => 'Този код за достъп не е валиден или вече е бил използван, Моля опитай да се регистрираш отново.',
+ 'email_confirmation_expired' => 'Кодът за потвърждение изтече, нов емейл за потвърждение беше изпратен.',
+ 'email_confirmation_awaiting' => 'Емайл адреса, който използвате трябва да се потвърди',
+ 'ldap_fail_anonymous' => 'LDAP достъпът е неуспешен с анонимни настройки',
+ 'ldap_fail_authed' => 'Опита за достъп чрез LDAP с използваната парола не беше успешен',
+ 'ldap_extension_not_installed' => 'LDAP PHP не беше инсталирана',
+ 'ldap_cannot_connect' => 'Не може да се свържете с Ldap сървъра, първоначалната връзка се разпадна',
+ 'saml_already_logged_in' => 'Вече сте влезли',
+ 'saml_no_email_address' => 'Не успяхме да намерим емейл адрес, за този потребител, от информацията предоставена от външната система',
+ 'saml_invalid_response_id' => 'Заявката от външната система не е разпознат от процеса започнат от това приложение. Връщането назад след влизане може да породи този проблем.',
+ 'saml_fail_authed' => 'Влизането чрез :system не беше успешно, системата не успя да удостовери потребителя',
+ 'oidc_already_logged_in' => 'Вече си вписан',
+ 'oidc_no_email_address' => 'Не можах да намеря имейл адрес за този потребител в данните, предоставени от външната удостоверителна система',
+ 'oidc_fail_authed' => 'Вписването чрез :system не беше успешно, тъй като системата не предостави успешна оторизация',
+ 'social_no_action_defined' => 'Действието не беше дефинирано',
+ 'social_login_bad_response' => "Възникна грешка по време на :socialAccount login: \n:error",
+ 'social_account_in_use' => 'Този :socialAccount вече е използван. Опитайте се да влезете чрез опцията за :socialAccount.',
+ 'social_account_email_in_use' => 'Този емейл адрес вече е бил използван. Ако вече имате профил, може да го свържете чрез :socialAccount от вашия профил.',
+ 'social_account_existing' => 'Този :socialAccount вече в свързан с вашия профил.',
+ 'social_account_already_used_existing' => 'Този :socialAccount вече се използва от друг потребител.',
+ 'social_account_not_used' => 'Социалният профил :socialAccount не е свързан с потребител. Моля, свържи го в настройките на профила си. ',
+ 'social_account_register_instructions' => 'Ако все още нямаш профил, може да се регистрираш чрез опцията :socialAccount.',
+ 'social_driver_not_found' => 'Кодът за връзка със социалната мрежа не съществува',
+ 'social_driver_not_configured' => 'Социалните настройки на твоя :socialAccount не са конфигурирани правилно.',
+ 'invite_token_expired' => 'Твоята покана е изтекла. Вместо това може да пробваш да възстановиш паролата на профила си.',
+ 'login_user_not_found' => 'Потребител за това действие не може да бъде намерено.',
+
+ // System
+ 'path_not_writable' => 'Не може да се качи файл в :filePath. Увери се на сървъра, че в пътя може да се записва.',
+ 'cannot_get_image_from_url' => 'Не мога да взема съобщението от :url',
+ 'cannot_create_thumbs' => 'Сървърът не може да създаде малки изображения. Моля, увери се, че разширението GD PHP е инсталирано.',
+ 'server_upload_limit' => 'Сървърът не позволява качвания с такъв размер. Моля, пробвайте файл с по-малък размер.',
+ 'server_post_limit' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.',
+ 'uploaded' => 'Сървърът не позволява качвания с такъв размер. Моля, пробвайте файл с по-малък размер.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Възникна грешка при качването на изображението',
+ 'image_upload_type_error' => 'Типът на качваното изображение е невалиден',
+ 'image_upload_replace_type' => 'Image file replacements must be of the same type',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Drawing data could not be loaded. The drawing file might no longer exist or you may not have permission to access it.',
+
+ // Attachments
+ 'attachment_not_found' => 'Прикачения файл не е намерен',
+ 'attachment_upload_error' => 'An error occurred uploading the attachment file',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Неуспешно запазване на черновата. Увери се, че имаш свързаност с интернет преди да запазиш страницата',
+ 'page_draft_delete_fail' => 'Failed to delete page draft and fetch current page saved content',
+ 'page_custom_home_deletion' => 'Не мога да изтрия страницата, докато е настроена като начална',
+
+ // Entities
+ 'entity_not_found' => 'Обектът не е намерен',
+ 'bookshelf_not_found' => 'Няма намерен рафт',
+ 'book_not_found' => 'Книгата не е намерена',
+ 'page_not_found' => 'Страницата не е намерена',
+ 'chapter_not_found' => 'Главата не е намерена',
+ 'selected_book_not_found' => 'Избраната книга не е намерена',
+ 'selected_book_chapter_not_found' => 'Избраната книга или глава не е намерена',
+ 'guests_cannot_save_drafts' => 'Гостите не могат да запазват чернови',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Не можеш да изтриеш единствения администратор',
+ 'users_cannot_delete_guest' => 'Не можеш да изтриеш потребителя на госта',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Ролята не може да бъде редактирана',
+ 'role_system_cannot_be_deleted' => 'Тази роля е системна и не може да бъде изтрита',
+ 'role_registration_default_cannot_delete' => 'Тази роля не може да бъде изтрита, докато е настроена по подразбиране за нови регистрации',
+ 'role_cannot_remove_only_admin' => 'Този потребител е единственият с присвоена администраторска роля. Приложи администраторската роля на друг потребител, преди да я премахнеш от тук.',
+
+ // Comments
+ 'comment_list' => 'Настъпи грешка при зареждането на коментарите.',
+ 'cannot_add_comment_to_draft' => 'Не може да добавяте коментари към чернова.',
+ 'comment_add' => 'Възникна грешка при актуализиране/добавяне на коментар.',
+ 'comment_delete' => 'Възникна грешка при изтриването на коментара.',
+ 'empty_comment' => 'Не може да добавите празен коментар.',
+
+ // Error pages
+ '404_page_not_found' => 'Страницата не е намерена',
+ 'sorry_page_not_found' => 'Страницата, която търсите не може да бъде намерена.',
+ 'sorry_page_not_found_permission_warning' => 'Ако смятате, че тази страница съществува, най-вероятно нямате право да я преглеждате.',
+ 'image_not_found' => 'Изображението не е намерено',
+ 'image_not_found_subtitle' => 'Съжалявам, файлът на изображението, което търсиш, не може да бъде намерен.',
+ 'image_not_found_details' => 'Ако си очаквал/а това изображение да същестува, може да е било изтрито.',
+ 'return_home' => 'Назад към Начало',
+ 'error_occurred' => 'Възникна грешка',
+ 'app_down' => ':appName не е достъпно в момента',
+ 'back_soon' => 'Ще се върне обратно онлайн скоро.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Но беше намерен код за достъп в заявката',
+ 'api_bad_authorization_format' => 'В заявката имаше код за достъп, но формата изглежда е неправилен',
+ 'api_user_token_not_found' => 'Няма открит API код, който да отговоря на предоставения такъв',
+ 'api_incorrect_token_secret' => 'Секретния код, който беше предоставен за достъп до API-а е неправилен',
+ 'api_user_no_api_permission' => 'Собственика на АPI кода няма право да прави API заявки',
+ 'api_user_token_expired' => 'Кода за достъп, който беше използван, вече не е валиден',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Беше върната грешка, когато се изпрати тестовият емейл:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'The URL does not match the configured allowed SSR hosts',
+];
diff --git a/lang/bg/notifications.php b/lang/bg/notifications.php
new file mode 100644
index 00000000000..563ac24e84d
--- /dev/null
+++ b/lang/bg/notifications.php
@@ -0,0 +1,29 @@
+ 'New comment on page: :pageName',
+ 'new_comment_intro' => 'A user has commented on a page in :appName:',
+ 'new_page_subject' => 'New page: :pageName',
+ 'new_page_intro' => 'A new page has been created in :appName:',
+ 'updated_page_subject' => 'Updated page: :pageName',
+ 'updated_page_intro' => 'A page has been updated in :appName:',
+ 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Page Name:',
+ 'detail_page_path' => 'Page Path:',
+ 'detail_commenter' => 'Commenter:',
+ 'detail_comment' => 'Comment:',
+ 'detail_created_by' => 'Created By:',
+ 'detail_updated_by' => 'Updated By:',
+
+ 'action_view_comment' => 'View Comment',
+ 'action_view_page' => 'View Page',
+
+ 'footer_reason' => 'This notification was sent to you because :link cover this type of activity for this item.',
+ 'footer_reason_link' => 'your notification preferences',
+];
diff --git a/resources/lang/bg/pagination.php b/lang/bg/pagination.php
similarity index 100%
rename from resources/lang/bg/pagination.php
rename to lang/bg/pagination.php
diff --git a/lang/bg/passwords.php b/lang/bg/passwords.php
new file mode 100644
index 00000000000..31c3fa6ef53
--- /dev/null
+++ b/lang/bg/passwords.php
@@ -0,0 +1,15 @@
+ 'Паролите трябва да имат поне 8 символа и да съвпадат с потвърждението.',
+ 'user' => "Не може да се намери потребител с този имейл адрес.",
+ 'token' => 'Кодът за възстановяване на паролата е невалиден за този емейл адрес.',
+ 'sent' => 'На имейла ти е изпратена връзка за възстановяване на паролата ти!',
+ 'reset' => 'Парола ти е възстановена!',
+
+];
diff --git a/lang/bg/preferences.php b/lang/bg/preferences.php
new file mode 100644
index 00000000000..8f5aaa07e90
--- /dev/null
+++ b/lang/bg/preferences.php
@@ -0,0 +1,52 @@
+ 'My Account',
+
+ 'shortcuts' => 'Преки пътища',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Here you can enable or disable keyboard system interface shortcuts, used for navigation and actions.',
+ 'shortcuts_customize_desc' => 'You can customize each of the shortcuts below. Just press your desired key combination after selecting the input for a shortcut.',
+ 'shortcuts_toggle_label' => 'Keyboard shortcuts enabled',
+ 'shortcuts_section_navigation' => 'Навигация',
+ 'shortcuts_section_actions' => 'Common Actions',
+ 'shortcuts_save' => 'Запазване на преките пътища',
+ 'shortcuts_overlay_desc' => 'Note: When shortcuts are enabled a helper overlay is available via pressing "?" which will highlight the available shortcuts for actions currently visible on the screen.',
+ 'shortcuts_update_success' => 'Обновени предпочитания за преки пътища!',
+ 'shortcuts_overview_desc' => 'Manage keyboard shortcuts you can use to navigate the system user interface.',
+
+ 'notifications' => 'Notification Preferences',
+ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.',
+ 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own',
+ 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notify upon replies to my comments',
+ 'notifications_save' => 'Save Preferences',
+ 'notifications_update_success' => 'Notification preferences have been updated!',
+ 'notifications_watched' => 'Watched & Ignored Items',
+ 'notifications_watched_desc' => 'Below are the items that have custom watch preferences applied. To update your preferences for these, view the item then find the watch options in the sidebar.',
+
+ 'auth' => 'Access & Security',
+ 'auth_change_password' => 'Change Password',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Password has been updated!',
+
+ 'profile' => 'Profile Details',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'View Public Profile',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Delete Account',
+ 'delete_my_account' => 'Delete My Account',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/bg/settings.php b/lang/bg/settings.php
new file mode 100644
index 00000000000..a1297e44613
--- /dev/null
+++ b/lang/bg/settings.php
@@ -0,0 +1,374 @@
+ 'Настройки',
+ 'settings_save' => 'Запази настройките',
+ 'system_version' => 'System Version',
+ 'categories' => 'Categories',
+
+ // App Settings
+ 'app_customization' => 'Персонализиране',
+ 'app_features_security' => 'Екстри и Сигурност',
+ 'app_name' => 'Име на приложението',
+ 'app_name_desc' => 'Това име е включено във всяка шапка и във всеки имейл изпратен от системата.',
+ 'app_name_header' => 'Покажи името в шапката',
+ 'app_public_access' => 'Публичен достъп',
+ 'app_public_access_desc' => 'Активирането на тази настройка, ще позволи на гости, които не са влезли в системта, да имат достъп до съдържанието на вашето приложение.',
+ 'app_public_access_desc_guest' => 'Достъпа на гостите може да бъде контролиран от "Guest" потребителя.',
+ 'app_public_access_toggle' => 'Позволяване на публичен достъп',
+ 'app_public_viewing' => 'Позволване на публичен достъп?',
+ 'app_secure_images' => 'По-висока сигурност при качване на изображения',
+ 'app_secure_images_toggle' => 'Активиране на по-висока сигурност при качване на изображения',
+ 'app_secure_images_desc' => 'С цел производителност, всички изображения са публични. Тази настройка добавя случаен, труден за отгатване низ от символи пред линка на изображението. Подсигурете, че индексите на директорията не са включени за да предотвратите лесен достъп.',
+ 'app_default_editor' => 'Default Page Editor',
+ 'app_default_editor_desc' => 'Select which editor will be used by default when editing new pages. This can be overridden at a page level where permissions allow.',
+ 'app_custom_html' => 'Персонализирано съдържание на HTML шапката',
+ 'app_custom_html_desc' => 'Всяко съдържание, добавено тук, ще бъде поставено в долната част на секцията на всяка страница. Това е удобно за преобладаващи стилове или добавяне на код за анализ.',
+ 'app_custom_html_disabled_notice' => 'Съдържанието на персонализираната HTML шапка е деактивирано на страницата с настройки, за да се гарантира, че евентуални лоши промени могат да бъдат върнати.',
+ 'app_logo' => 'Лого на приложението',
+ 'app_logo_desc' => 'This is used in the application header bar, among other areas. This image should be 86px in height. Large images will be scaled down.',
+ 'app_icon' => 'Application Icon',
+ 'app_icon_desc' => 'This icon is used for browser tabs and shortcut icons. This should be a 256px square PNG image.',
+ 'app_homepage' => 'Начлна страница на приложението',
+ 'app_homepage_desc' => 'Изберете начална страница, която ще замени изгледа по подразбиране. Дефинираните права на страницата, която е избрана ще бъдат игнорирани.',
+ 'app_homepage_select' => 'Избери страница',
+ 'app_footer_links' => 'Футър линкове',
+ 'app_footer_links_desc' => 'Добави линк в съдържанието на футъра. Добавените линкове ще се показват долу в повечето страници, включително и в страниците, в които логването не е задължително. Можете да използвате заместител "trans::", за да използвате дума дефинирана от системата. Пример: Използването на "trans::common.privacy_policy" ще покаже "Лични данни" или на "trans::common.terms_of_service" ще покаже "Общи условия".',
+ 'app_footer_links_label' => 'Надпис на връзката',
+ 'app_footer_links_url' => 'Линк URL',
+ 'app_footer_links_add' => 'Добави футър линк',
+ 'app_disable_comments' => 'Изключи коментарите',
+ 'app_disable_comments_toggle' => 'Изключи коментарите',
+ 'app_disable_comments_desc' => 'Изключва коментарите във всички на страници на приложението. Съществуващите коментари няма да се показват.',
+
+ // Color settings
+ 'color_scheme' => 'Application Color Scheme',
+ 'color_scheme_desc' => 'Set the colors to use in the application user interface. Colors can be configured separately for dark and light modes to best fit the theme and ensure legibility.',
+ 'ui_colors_desc' => 'Set the application primary color and default link color. The primary color is mainly used for the header banner, buttons and interface decorations. The default link color is used for text-based links and actions, both within written content and in the application interface.',
+ 'app_color' => 'Primary Color',
+ 'link_color' => 'Default Link Color',
+ 'content_colors_desc' => 'Set colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'bookshelf_color' => 'Цвят на рафта',
+ 'book_color' => 'Цвят на книгата',
+ 'chapter_color' => 'Цвят на главата',
+ 'page_color' => 'Цвят на страницата',
+ 'page_draft_color' => 'Цвят на черновата за страница',
+
+ // Registration Settings
+ 'reg_settings' => 'Регистрация',
+ 'reg_enable' => 'Включи регистрацията',
+ 'reg_enable_toggle' => 'Включи регистрацията',
+ 'reg_enable_desc' => 'Когато регистрацията е включена, потребителите ще могат да се регистрират като потребители на приложението. След регистрация на тях им се дава роля по подразбиране.',
+ 'reg_default_role' => 'Роля по подразбиране след регистрация',
+ 'reg_enable_external_warning' => 'Опцията отгоре се игнорира при активно външно LDAP или SAML удостоверяване. Ако удостоверяването от външната система е успешно, автоматично ще се създават потребителски профили за несъществуващи членове.',
+ 'reg_email_confirmation' => 'Имейл потвърждение',
+ 'reg_email_confirmation_toggle' => 'Изисквай имейл потвърждение',
+ 'reg_confirm_email_desc' => 'Ако се използват ограничения за домейна, ще се изисква имейл потвърждение и тази настройка ще бъде игнорирана.',
+ 'reg_confirm_restrict_domain' => 'Ограничения за домейна',
+ 'reg_confirm_restrict_domain_desc' => 'Въведи разделен със запетаи списък от имейл домейни, до които да бъде ограничена регистрацията. На потребителите ще им бъде изпратен имейл, за да потвърдят адреса, преди да могат да използват приложението. Имай предвид, че потребителите ще могат да сменят имейл адресите си след успешна регистрация.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Няма наложени ограничения',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Поддръжка',
+ 'maint_image_cleanup' => 'Разчисти изображения',
+ 'maint_image_cleanup_desc' => 'Сканира съдържанието на страници и ревизиите, за да провери кои изображения и рисунки се използват и кои се повтарят. Увери се, че имаш пълни резервни копия на базата данни и на изображенията, преди да пуснеш това.',
+ 'maint_delete_images_only_in_revisions' => 'Също изтрий изображенията, които съществуват само в стари ревизии на страниците',
+ 'maint_image_cleanup_run' => 'Пусни разчистване',
+ 'maint_image_cleanup_warning' => 'Намерени са :count потенциално неизползвани изображения. Сигурен/на ли си, че искаш да изтриеш тези изображения?',
+ 'maint_image_cleanup_success' => 'Намерени и изтрити са :count потенциално неизползвани изображения!',
+ 'maint_image_cleanup_nothing_found' => 'Не са намерени неизползвани изображения и нищо не е изтрито!',
+ 'maint_send_test_email' => 'Изпрати тестови имейл',
+ 'maint_send_test_email_desc' => 'Това изпраща тестови имейл на имейл адреса, посочен в профила ти.',
+ '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' => 'Отвори Кошчето',
+ 'maint_regen_references' => 'Regenerate References',
+ 'maint_regen_references_desc' => 'This action will rebuild the cross-item reference index within the database. This is usually handled automatically but this action can be useful to index old content or content added via unofficial methods.',
+ 'maint_regen_references_success' => 'Reference index has been regenerated!',
+ 'maint_timeout_command_note' => 'Note: This action can take time to run, which can lead to timeout issues in some web environments. As an alternative, this action be performed using a terminal command.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Кошче',
+ 'recycle_bin_desc' => 'Тук може да възстановиш изтрити обекти или да ги премахнеш завинаги от системата. Този списък не е филтриран, за разлика от подобни списъци с активност в системата, където са приложени списъци за привилегии.',
+ 'recycle_bin_deleted_item' => 'Изтрит предмет',
+ 'recycle_bin_deleted_parent' => 'Родител',
+ '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' => 'This action will permanently delete this item from the system, along with any child elements listed below, and you will not be able to restore this content. Are you sure you want to permanently delete this item?',
+ 'recycle_bin_destroy_list' => 'Обекти за унищожение',
+ 'recycle_bin_restore_list' => 'Обекти за възстановяване',
+ 'recycle_bin_restore_confirm' => 'Това действие ще възстанови изтрития обект, както и всички негови поделементи, в оригиналното им местоположение. Ако оригиналното им местоположение също е изтрито и сега се намира в кошчето, то също ще трябва да бъде възстановено.',
+ 'recycle_bin_restore_deleted_parent' => 'Родителският елемент на този обект също е бил изтрит. Тези ще останат изтрити, докато родителят също бъде възстановен.',
+ 'recycle_bin_restore_parent' => 'Възстанови родителския елемент',
+ 'recycle_bin_destroy_notification' => 'Изтрити общо :count обекта от кошчето.',
+ 'recycle_bin_restore_notification' => 'Възстановени общо :count обекта от кошчето.',
+
+ // Audit Log
+ 'audit' => 'Ревизорен журнал',
+ 'audit_desc' => 'Ревизорният журнал показва списък с всички дейности, следенив системата. Това е нефилтриран списък, за разлика от подобни списъци с дейности в системата, където са приложени филтри за привилегии.',
+ '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_ip' => 'IP адрес',
+ 'audit_table_date' => 'Дата на активност',
+ 'audit_date_from' => 'Време от',
+ 'audit_date_to' => 'Време до',
+
+ // Role Settings
+ 'roles' => 'Роли',
+ 'role_user_roles' => 'Потребителски роли',
+ 'roles_index_desc' => 'Roles are used to group users & provide system permission to their members. When a user is a member of multiple roles the privileges granted will stack and the user will inherit all abilities.',
+ 'roles_x_users_assigned' => ':count user assigned|:count users assigned',
+ 'roles_x_permissions_provided' => ':count permission|:count permissions',
+ 'roles_assigned_users' => 'Assigned Users',
+ 'roles_permissions_provided' => 'Provided Permissions',
+ 'role_create' => 'Създай нова роля',
+ 'role_delete' => 'Изтрий роля',
+ 'role_delete_confirm' => 'Това ще изтрие ролята \':roleName\'.',
+ 'role_delete_users_assigned' => 'В тази роля се намират :userCount потребители. Ако искате да преместите тези потребители в друга роля, моля изберете нова роля отдолу.',
+ 'role_delete_no_migration' => "Не премествай потребителите в нова роля",
+ 'role_delete_sure' => 'Сигурни ли сте, че искате да изтриете тази роля?',
+ 'role_edit' => 'Редактиране на роля',
+ 'role_details' => 'Детайли на роля',
+ 'role_name' => 'Име на ролята',
+ 'role_desc' => 'Кратко описание на ролята',
+ 'role_mfa_enforced' => 'Изисква многофакторно удостоверяване',
+ 'role_external_auth_id' => 'Външни ауторизиращи ID-a',
+ 'role_system' => 'Настойки за достъп на системата',
+ 'role_manage_users' => 'Управление на потребители',
+ 'role_manage_roles' => 'Управление роли и права',
+ 'role_manage_entity_permissions' => 'Управление на правата за достъп всички книги, глави и страници',
+ 'role_manage_own_entity_permissions' => 'Управление на правата за достъп на собствени книги, глави и страници',
+ 'role_manage_page_templates' => 'Управление на шаблони на страници',
+ 'role_access_api' => 'Достъп до API на системата',
+ 'role_manage_settings' => 'Управление на настройките на приложението',
+ 'role_export_content' => 'Експортирай съдържанието',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Change page editor',
+ 'role_notifications' => 'Receive & manage notifications',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Настройки за достъп до активи',
+ 'roles_system_warning' => 'Важно: Добавянето на потребител в някое от горните три роли може да му позволи да промени собствените си права или правата на другите в системата. Възлагайте тези роли само на доверени потребители.',
+ 'role_asset_desc' => 'Тези настройки за достъп контролират достъпа по подразбиране до активите в системата. Настройките за достъп до книги, глави и страници ще отменят тези настройки.',
+ 'role_asset_admins' => 'Администраторите автоматично получават достъп до цялото съдържание, но тези опции могат да показват или скриват опциите за потребителския интерфейс.',
+ 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Всички',
+ 'role_own' => 'Собствени',
+ 'role_controlled_by_asset' => 'Контролирани от актива, към който са качени',
+ 'role_save' => 'Запази ролята',
+ 'role_users' => 'Потребители в тази роля',
+ 'role_users_none' => 'В момента няма потребители, назначени за тази роля',
+
+ // Users
+ 'users' => 'Потребители',
+ 'users_index_desc' => 'Create & manage individual user accounts within the system. User accounts are used for login and attribution of content & activity. Access permissions are primarily role-based but user content ownership, among other factors, may also affect permissions & access.',
+ 'user_profile' => 'Потребителски профил',
+ 'users_add_new' => 'Добави нов потребител',
+ 'users_search' => 'Търси Потребители',
+ 'users_latest_activity' => 'Последна активност',
+ 'users_details' => 'Потребителски детайли',
+ 'users_details_desc' => 'Настрой име и имейл адрес за този потребител. Имейл адресът ще се използва за вписване в приложението.',
+ 'users_details_desc_no_email' => 'Настрой име за този потребител, за да могат другите да го разпознават.',
+ 'users_role' => 'Потребителски роли',
+ 'users_role_desc' => 'Настрой ролите, които ще бъдат присвоени на този потребител. Ако му бъдат присвоени няколко роли, привилегиите от тях ще се насложат и потребителят ще получи всички привилегии на зададените роли.',
+ 'users_password' => 'Потребителска парола',
+ 'users_password_desc' => 'Настрой парола за вписване в приложението. Тя трябва да бъде дълга поне 8 знака.',
+ 'users_send_invite_text' => 'Можеш да изпратиш на потребителя покана по имейл, след което той ще може да настрои своя собствена парола. В противен случай, ти също можеш да настроиш паролата му.',
+ 'users_send_invite_option' => 'Изпрати на потребителя имейл покана',
+ 'users_external_auth_id' => 'Външен номер за удостоверяване',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ 'users_system_public' => 'Този потребител представлява всеки гост, който посещава това приложение. Потребителят не може да се използва за вписване, а вместо това се присвоява автоматично.',
+ 'users_delete' => 'Изтрий потребител',
+ 'users_delete_named' => 'Изтрий потребителя :userName',
+ 'users_delete_warning' => 'Това изцяло ще изтрие този потребител с името \':userName\' от системата.',
+ 'users_delete_confirm' => 'Сигурни ли сте, че искате да изтриете този потребител?',
+ 'users_migrate_ownership' => 'Мигрирайте собствеността на сайта',
+ 'users_migrate_ownership_desc' => 'Тук избери потребител, ако желаеш друг да стане собственик на всички обекти, които към момента са притежавани от този потребител.',
+ 'users_none_selected' => 'Няма избрани потребители',
+ 'users_edit' => 'Редактирай потребител',
+ 'users_edit_profile' => 'Редактирай профил',
+ 'users_avatar' => 'Потребителски аватар',
+ 'users_avatar_desc' => 'Избери изображение, което да представлява този потребител. То трябва да бъде квадрат с размер приблизително 256 пиксела.',
+ 'users_preferred_language' => 'Предпочитан език',
+ 'users_preferred_language_desc' => 'Тази настройка ще промени езика за потребителския интерфейс на приложението. Това няма да се отрази на създаденото от потребителите съдържание.',
+ 'users_social_accounts' => 'Социални профили',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Тук можеш да свържеш другите си профили за по-бързо и лесно вписване. Отвързването на профил тук няма да анулира предишно удостоверен достъп. Вместо това, спри достъпа от настройките на профила си в свързаната социална мрежа.',
+ 'users_social_connect' => 'Свържи профил',
+ 'users_social_disconnect' => 'Отвържи профил',
+ 'users_social_status_connected' => 'Connected',
+ 'users_social_status_disconnected' => 'Disconnected',
+ 'users_social_connected' => 'Профилът :socialAccount беше успешно свързан с профила ти.',
+ 'users_social_disconnected' => 'Профилът :socialAccount беше успешно отвързан от профила ти.',
+ 'users_api_tokens' => 'API маркери',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'Няма създадени API маркери за този потребител',
+ 'users_api_tokens_create' => 'Създай маркер',
+ 'users_api_tokens_expires' => 'Изтича на',
+ 'users_api_tokens_docs' => 'Документация на API',
+ 'users_mfa' => 'Многофакторно удостоверяване',
+ 'users_mfa_desc' => 'Настрой многофакторно удостверяване като втори слой сигурност на твоя профил.',
+ 'users_mfa_x_methods' => ':count метод е настроен|:count методи са настроени',
+ 'users_mfa_configure' => 'Конфигурирай методи',
+
+ // API Tokens
+ 'user_api_token_create' => 'Създай API маркер',
+ 'user_api_token_name' => 'Име',
+ 'user_api_token_name_desc' => 'Дай на маркера си четимо име като бъдещо напомняне за предназначението му.',
+ 'user_api_token_expiry' => 'Дата на изтичане',
+ 'user_api_token_expiry_desc' => 'Настрой дата на изтичане на този маркер. След тази дата, заявки направени с този маркер вече няма да работят. Ако оставиш това поле празно, маркерът ще изтече след 100 години.',
+ 'user_api_token_create_secret_message' => 'Веднага след създаването на този маркер ще се генерират и покажат "Номер на маркер" и "Тайна на маркер". Тайната ще бъде показана само веднъж, така че се увери, че си я копирал на сигурно място, преди да продължиш.',
+ 'user_api_token' => 'API маркер',
+ 'user_api_token_id' => 'Номер на маркер',
+ 'user_api_token_id_desc' => 'Това е нередактируем, системно генериран идентификатор за този маркер, който ще бъде необходимо да бъде предоставян в API заявките.',
+ 'user_api_token_secret' => 'Тайна на маркер',
+ 'user_api_token_secret_desc' => 'Това е системно генерирана тайна за този маркер, която ще бъде необходимо да бъде предоставяна в API заявки. Тайната ще бъде показана само веднъж, така че се увери, че си я копирал на сигурно място.',
+ 'user_api_token_created' => 'Маркерът е създаден :timeAgo',
+ 'user_api_token_updated' => 'Маркерът е редактиран :timeAgo',
+ 'user_api_token_delete' => 'Изтрий маркер',
+ 'user_api_token_delete_warning' => 'Това ще изтрие напълно API маркерът с име \':tokenName\' от системата.',
+ 'user_api_token_delete_confirm' => 'Сигурен/на ли си, че искаш да изтриеш този API маркер?',
+
+ // Webhooks
+ 'webhooks' => 'Уебкука',
+ 'webhooks_index_desc' => 'Webhooks are a way to send data to external URLs when certain actions and events occur within the system which allows event-based integration with external platforms such as messaging or notification systems.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'Създай нова уебкука',
+ 'webhooks_none_created' => 'Няма създадени уебкуки.',
+ 'webhooks_edit' => 'Редактирай уебкука',
+ 'webhooks_save' => 'Запази уебкука',
+ 'webhooks_details' => 'Подробности за уебкука',
+ 'webhooks_details_desc' => 'Въведи име и POST крайна точка като местоположение, на което уебкуката да изпраща данни.',
+ 'webhooks_events' => 'Събития на уебкуката',
+ 'webhooks_events_desc' => 'Избери всички събития, които ще задействат съответната уебкука.',
+ 'webhooks_events_warning' => 'Имай предвид, че тези събития ще се задействат за всички избрани събития, дори при приложени специфични привилегии. Увери се, че употребата на тази уебкука няма да разкрие чувствително съдържание.',
+ 'webhooks_events_all' => 'Всички системни събития',
+ 'webhooks_name' => 'Име на уебкука',
+ 'webhooks_timeout' => 'Време за изтичане на заявката не уебкуката (в секунди)',
+ 'webhooks_endpoint' => 'Крайна точка на уебкуката',
+ 'webhooks_active' => 'Уебкуката е активна',
+ 'webhook_events_table_header' => 'Събития',
+ 'webhooks_delete' => 'Изтрий уебкуката',
+ 'webhooks_delete_warning' => 'Това ще изтрие изцяло уебкуката с име \':webhookName\' от системата.',
+ 'webhooks_delete_confirm' => 'Сигурен/на ли си, че искаш да изтриеш тази уебкука?',
+ 'webhooks_format_example' => 'Примерен формат на уебкука',
+ 'webhooks_format_example_desc' => 'Данните на уебкуката се изпращат като POST заявки към конфигурираната крайна точка като JSON, следвайки формата отдолу. Свойствата "related_item" и "url" са по желание и зависят от типа на задействаното събитие.',
+ 'webhooks_status' => 'Статус на уебкука',
+ 'webhooks_last_called' => 'Последно извикан на:',
+ 'webhooks_last_errored' => 'Последна грешка на:',
+ 'webhooks_last_error_message' => 'Последно съобщение за грешка:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/bg/validation.php b/lang/bg/validation.php
new file mode 100644
index 00000000000..e2f9bdaa9c1
--- /dev/null
+++ b/lang/bg/validation.php
@@ -0,0 +1,123 @@
+ ':attribute трябва да бъде одобрен.',
+ 'active_url' => ':attribute не е валиден URL адрес.',
+ 'after' => ':attribute трябва да е дата след :date.',
+ 'alpha' => ':attribute може да съдържа само букви.',
+ 'alpha_dash' => ':attribute може да съдържа само букви, числа, тире и долна черта.',
+ 'alpha_num' => ':attribute може да съдържа само букви и числа.',
+ 'array' => ':attribute трябва да е масив (array).',
+ 'backup_codes' => 'Предоставеният код не е валиден или вече е бил използван.',
+ 'before' => ':attribute трябва да е дата след :date.',
+ 'between' => [
+ 'numeric' => ':attribute трябва да е между :min и :max.',
+ 'file' => ':attribute трябва да е между :min и :max килобайта.',
+ 'string' => 'Дължината на :attribute трябва да бъде между :min и :max символа.',
+ 'array' => 'Атрибутът :attribute трябва да има между :min и :max елемента.',
+ ],
+ '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',
+ 'file' => 'Атрибутът :attribute трябва да бъде предоставен като валиден файл.',
+ 'filled' => 'Полето :attribute е задължителен.',
+ 'gt' => [
+ 'numeric' => ':attribute трябва да бъде по-голям от :value.',
+ 'file' => 'Големината на :attribute трябва да бъде по-голямо от :value килобайта.',
+ 'string' => 'Дължината на :attribute трябва да бъде по-голямо от :value символа.',
+ 'array' => 'Атрибутът :attribute трябва да има повече от :value елемента.',
+ ],
+ 'gte' => [
+ 'numeric' => 'Атрибутът :attribute трябва бъде равен на или по-голям от :value.',
+ 'file' => 'Големината на :attribute трябва да бъде по-голямо или равно на :value килобайта.',
+ 'string' => 'Дължината на :attribute трябва да бъде по-голямо или равно на :value символа.',
+ 'array' => 'Атрибутът :attribute трябва да има поне :value елемента или повече.',
+ ],
+ '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' => ':attribute трябва да бъде по-малко от :value.',
+ 'file' => 'Големината на :attribute трябва да бъде по-малко от :value килобайта.',
+ 'string' => 'Дължината на :attribute трябва да бъде по-малко от :value символа.',
+ 'array' => 'Атрибутът :attribute трябва да има по-малко от :value елемента.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute трябва да бъде по-малко или равно на :value.',
+ 'file' => 'Големината на :attribute трябва да бъде по-малко или равно на :value килобайта.',
+ 'string' => 'Дължината на :attribute трябва да бъде по-малко или равно на :value символа.',
+ 'array' => 'Атрибутът :attribute не трябва да има повече от :value елемента.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute не трябва да бъде по-голям от :max.',
+ 'file' => 'Големината на :attribute не може да бъде по-голямо от :value килобайта.',
+ 'string' => 'Дължината на :attribute не може да бъде по-голямо от :value символа.',
+ 'array' => 'Атрибутът :attribute не може да има повече от :max елемента.',
+ ],
+ 'mimes' => 'Атрибутът :attribute трябва да бъде файл от тип: :values.',
+ 'min' => [
+ 'numeric' => 'Атрибутът :attribute трябва да бъде поне :min.',
+ 'file' => 'Атрибутът :attribute трябва да бъде поне :min килобайта.',
+ 'string' => 'Атрибутът :attribute трябва да бъде съдържа поне :min символа.',
+ 'array' => 'Атрибутът :attribute трябва да има поне :min елемента.',
+ ],
+ 'not_in' => 'Избраният :attribute не е валиден.',
+ 'not_regex' => 'Форматът на :attribute не е валиден.',
+ 'numeric' => 'Атрибутът :attribute трябва да бъде число.',
+ 'regex' => 'Форматът на :attribute не е валиден.',
+ 'required' => 'Полето :attribute е задължително.',
+ 'required_if' => 'Полето :attribute е задължително, когато :other е :value.',
+ 'required_with' => 'Полето :attribute е задължително, когато :values е налично.',
+ 'required_with_all' => 'Полето :attribute е задължително, когато :values са налични.',
+ 'required_without' => 'Полето :attribute е задължително, когато :values не е налично.',
+ 'required_without_all' => 'Полето :attribute е задължително, когато никоя стойност от :values не е налична.',
+ 'same' => 'Атрибутът :attribute и :other трябва да си съвпадат.',
+ 'safe_url' => 'Предоставеният линк може да не е сигурен.',
+ 'size' => [
+ 'numeric' => 'Атрибутът :attribute трябва да бъде :size.',
+ 'file' => 'Атрибутът :attribute трябва да бъде :size килобайта.',
+ 'string' => 'Атрибутът :attribute трябва да бъде с дължина :size знака.',
+ 'array' => 'Атрибутът :attribute трябва да съдържа :size елемента.',
+ ],
+ 'string' => 'Атрибутът :attribute трябва да бъде текст.',
+ 'timezone' => 'Атрибутът :attribute трябва да бъде валидна зона.',
+ 'totp' => 'Предоставеният код не е валиден или е изтекъл.',
+ 'unique' => 'Атрибутът :attribute вече е зает.',
+ 'url' => 'Форматът на :attribute не е валиден.',
+ 'uploaded' => 'Файлът не можа да бъде качен. Сървърът може да не приема файлове с такъв размер.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Изисква се потвърждение на паролата',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/bn/activities.php b/lang/bn/activities.php
new file mode 100644
index 00000000000..c9268f8abe4
--- /dev/null
+++ b/lang/bn/activities.php
@@ -0,0 +1,140 @@
+ 'নতুন পৃষ্ঠা সৃষ্টি করেছেন',
+ 'page_create_notification' => 'পৃষ্ঠাটি সার্থকভাবে তৈরী করা হয়েছে',
+ 'page_update' => 'পৃষ্ঠা হালনাগাদ করেছেন',
+ 'page_update_notification' => 'পৃষ্ঠাটি সার্থকভাবে হালনাগাদ করা হয়েছে',
+ 'page_delete' => 'পৃষ্ঠা মুছে ফেলেছেন',
+ 'page_delete_notification' => 'পৃষ্ঠাটি সার্থকভাবে মুছে ফেলা হয়েছে',
+ 'page_restore' => 'মুছে ফেলা পৃষ্ঠা পুনরুদ্ধার করেছেন',
+ 'page_restore_notification' => 'পৃষ্ঠাটি সার্থকভাবে পুনরুদ্ধার করা হয়েছে',
+ 'page_move' => 'পৃষ্ঠা স্থানান্তর করেছেন',
+ 'page_move_notification' => 'পৃষ্ঠাটি সার্থকভাবে স্থানান্তর করা হয়েছে',
+
+ // Chapters
+ 'chapter_create' => 'নতুন অধ্যায় সৃষ্টি করেছেন',
+ 'chapter_create_notification' => 'অধ্যায়টি সার্থকভাবে তৈরী করা হয়েছে',
+ 'chapter_update' => 'অধ্যায় হালনাগাদ করেছেন',
+ 'chapter_update_notification' => 'অধ্যায়টি সার্থকভাবে হালনাগাদ করা হয়েছে',
+ 'chapter_delete' => 'অধ্যায় মুছে ফেলেছেন',
+ 'chapter_delete_notification' => 'অধ্যায়টি সার্থকভাবে মুছে ফেলা হয়েছে',
+ 'chapter_move' => 'অধ্যায় স্থানান্তর করেছেন',
+ 'chapter_move_notification' => 'অধ্যায়টি সার্থকভাবে স্থানান্তর করা হয়েছে',
+
+ // Books
+ 'book_create' => 'নতুন বই সৃষ্টি করেছেন',
+ 'book_create_notification' => 'বইটি সার্থকভাবে তৈরী করা হয়েছে',
+ 'book_create_from_chapter' => 'অধ্যায়কে বইতে রূপান্তরিত করেছেন',
+ 'book_create_from_chapter_notification' => 'অধ্যায়কে বইতে রূপান্তর করার প্রক্রিয়া সফলভাবে সম্পন্ন হয়েছে',
+ 'book_update' => 'বই হালনাগাদ করেছেন',
+ 'book_update_notification' => 'বইটি সার্থকভাবে হালনাগাদ করা হয়েছে',
+ 'book_delete' => 'বই মুছে ফেলেছেন',
+ 'book_delete_notification' => 'বইটি সার্থকভাবে মুছে ফেলা হয়েছে',
+ 'book_sort' => 'বইটি ক্রমানুযায়ী সাজিয়েছেন',
+ 'book_sort_notification' => 'বইটি সার্থকভাবে ক্রমানুযায়ী সাজানো হয়েছে',
+
+ // Bookshelves
+ 'bookshelf_create' => 'নতুন বুকশেলফ তৈরী করেছেন',
+ 'bookshelf_create_notification' => 'বুকশেলফটি সার্থকভাবে তৈরী করা হয়েছে',
+ 'bookshelf_create_from_book' => 'বইটিকে বুকশেলফে রূপান্তরিত করার প্রক্রিয়া সফলভাবে সম্পন্ন হয়েছে',
+ 'bookshelf_create_from_book_notification' => 'বইকে বুকশেলফে রূপান্তর করার প্রক্রিয়া সফলভাবে সম্পন্ন হয়েছে',
+ 'bookshelf_update' => 'বুকশেলফটি হালনাগাদ করেছেন',
+ 'bookshelf_update_notification' => 'বুকশেলফটি সার্থকভাবে হালনাগাদ করা হয়েছে',
+ 'bookshelf_delete' => 'বুকশেলফটি মুছে ফেলেছেন',
+ 'bookshelf_delete_notification' => 'বুকশেলফটি সার্থকভাবে মুছে ফেলা হয়েছে',
+
+ // Revisions
+ 'revision_restore' => 'সংশোধনী পুনঃস্থাপন করেছেন',
+ 'revision_delete' => 'সংশোধনী মুছে ফেলেছেন',
+ 'revision_delete_notification' => 'সংশোধনী সার্থকভাবে মুছে ফেলা হয়েছে',
+
+ // Favourites
+ 'favourite_add_notification' => 'আপনার প্রিয় তালিকায় ":name" যোগ করা হয়েছে',
+ 'favourite_remove_notification' => 'আপনার প্রিয় তালিকা হতে ":name"-কে মুছে ফেলা হয়েছে',
+
+ // Watching
+ 'watch_update_level_notification' => 'পর্যবেক্ষণনীতি সার্থকভাবে হালনাগাদ করা হয়েছে',
+
+ // Auth
+ 'auth_login' => 'লগড ইন অবস্থায় আছেন',
+ 'auth_register' => 'নতুন ব্যবহারকারী হিসাবে নিবন্ধিত',
+ 'auth_password_reset_request' => 'ব্যবহারকারীর পাসওয়ার্ড রিসেটের আবেদন করেছেন',
+ 'auth_password_reset_update' => 'ব্যবহারকারী পাসওয়ার্ড রিসেট করুন',
+ 'mfa_setup_method' => 'মাল্টি ফ্যাক্টর অথেনটিকেশন সক্রিয় করেছেন',
+ 'mfa_setup_method_notification' => 'মাল্টি ফ্যাক্টর অথেনটিকেশন সার্থকভাবে সক্রিয় করা হয়েছে',
+ 'mfa_remove_method' => 'মাল্টি ফ্যাক্টর অথেনটিকেশন নিষ্ক্রিয় করেছেন',
+ 'mfa_remove_method_notification' => 'মাল্টি ফ্যাক্টর অথেনটিকেশন সার্থকভাবে নিষ্ক্রিয় করা হয়েছে',
+
+ // Settings
+ 'settings_update' => 'সেটিংস হালনাগাদ করেছেন',
+ 'settings_update_notification' => 'সেটিংস সার্থকভাবে হালনাগাদ করা হয়েছে',
+ 'maintenance_action_run' => 'রক্ষণাবেক্ষণ কার্যক্রম চালু করেছেন',
+
+ // Webhooks
+ 'webhook_create' => 'নতুন ওয়েবহুক তৈরী করেছেন',
+ 'webhook_create_notification' => 'নতুন ওয়েবহুক সার্থকভাবে তৈরী করা হয়েছে',
+ 'webhook_update' => 'ওয়েবহুকটি হালনাগাদ করেছেন',
+ 'webhook_update_notification' => 'ওয়েবহুকটি সার্থকভাবে হালনাগাদ করা হয়েছে',
+ 'webhook_delete' => 'ওয়েবহুকটি মুছে ফেলেছেন',
+ 'webhook_delete_notification' => 'ওয়েবহুকটি সার্থকভাবে মুছে ফেলা হয়েছে',
+
+ // Imports
+ 'import_create' => 'ইমপোর্টটি তৈরী করেছেন',
+ 'import_create_notification' => 'ইমপোর্টটি সার্থকভাবে আপলোড করা হয়েছে',
+ 'import_run' => 'ইমপোর্টটি হালনাগাদ করেছেন',
+ 'import_run_notification' => 'কনটেন্ট সার্থকভাবে ইমপোর্ট করা হয়েছে',
+ 'import_delete' => 'ইমপোর্টটি মুছে ফেলেছেন',
+ 'import_delete_notification' => 'ইমপোর্টটি সার্থকভাবে মুছে ফেলা হয়েছে',
+
+ // Users
+ 'user_create' => 'নতুন ব্যবহারকারী তৈরী করেছেন',
+ 'user_create_notification' => 'নতুন ব্যবহারকারী সার্থকভাবে তৈরী করা হয়েছে',
+ 'user_update' => 'ব্যবহারকারীটি হালনাগাদ করেছেন',
+ 'user_update_notification' => 'ব্যবহারকারীটি সার্থকভাবে হালনাগাদ করা হয়েছে',
+ 'user_delete' => 'ব্যবহারকারীটি মুছে ফেলেছেন',
+ 'user_delete_notification' => 'ব্যবহারকারীটি সার্থকভাবে মুছে ফেলা হয়েছে',
+
+ // API Tokens
+ 'api_token_create' => 'এপিআই টোকেনটি তৈরী করেছেন',
+ 'api_token_create_notification' => 'এপিআই টোকেনটি সার্থকভাবে তৈরী করা হয়েছে',
+ 'api_token_update' => 'এপিআই টোকেনটি হালনাগাদ করেছেন',
+ 'api_token_update_notification' => 'এপিআই টোকেনটি হালনাগাদ করা হয়েছে',
+ 'api_token_delete' => 'এপিআই টোকেনটি মুছে ফেলেছেন',
+ 'api_token_delete_notification' => 'এপিআই টোকেনটি সার্থকভাবে মুছে ফেলা হয়েছে',
+
+ // Roles
+ 'role_create' => 'রোলটি তৈরী করেছেন',
+ 'role_create_notification' => 'রোলটি সার্থকভাবে তৈরী করা হয়েছে',
+ 'role_update' => 'রোলটি হালনাগাদ করেছেন',
+ 'role_update_notification' => 'রোলটি সার্থকভাবে হালনাগাদ করা হয়েছে',
+ 'role_delete' => 'রোলটি মুছে ফেলেছেন',
+ 'role_delete_notification' => 'রোলটি সার্থকভাবে মুছে ফেলা হয়েছে',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'রিসাইকেল বিন খালি করে ফেলেছেন',
+ 'recycle_bin_restore' => 'রিসাইকেল বিন হতে প্রত্যাবর্তন করা হয়েছে',
+ 'recycle_bin_destroy' => 'রিসাইকেল বিন হতে অপসারণ করা হয়েছে',
+
+ // Comments
+ 'commented_on' => 'মন্তব্য প্রদান করেছেন',
+ 'comment_create' => 'মন্তব্য যোগ করেছেন',
+ 'comment_update' => 'মন্তব্য হালনাগাদ করেছেন',
+ 'comment_delete' => 'মন্তব্য মুছে ফেলেছেন',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'রোলটি সার্থকভাবে হালনাগাদ করা হয়েছে',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'অনুমতিক্রম হালনাগাদ করেছেন',
+];
diff --git a/lang/bn/auth.php b/lang/bn/auth.php
new file mode 100644
index 00000000000..30879fcb6d3
--- /dev/null
+++ b/lang/bn/auth.php
@@ -0,0 +1,117 @@
+ 'প্রদত্ত তথ্যনিরূপিত কোন রেকর্ড পাওয়া যায়নি।',
+ 'throttle' => 'লগইন প্রচেষ্টার সীমা অতিক্রান্ত। দয়া করে :seconds সেকেন্ড পর আবার চেষ্টা করুন।',
+
+ // Login & Register
+ 'sign_up' => 'নিবন্ধিত হোন',
+ 'log_in' => 'লগ ইন করুন',
+ 'log_in_with' => ':socialDriver দ্বারা লগইন করুন',
+ 'sign_up_with' => ':socialDriver দ্বারা নিবন্ধিত হোন',
+ 'logout' => 'লগআউট',
+
+ 'name' => 'নাম',
+ 'username' => 'ব্যবহারকারী',
+ 'email' => 'ই-মেইল',
+ 'password' => 'পাসওয়ার্ড',
+ 'password_confirm' => 'পাসওয়ার্ডের পুনরাবৃত্তি',
+ 'password_hint' => 'ন্যূনতম ৮ অক্ষরের হতে হবে',
+ 'forgot_password' => 'পাসওয়ার্ড ভুলে গেছেন?',
+ 'remember_me' => 'লগইন স্থায়িত্ব ধরে রাখুন',
+ 'ldap_email_hint' => 'অনুগ্রহ করে এই অ্যাকাউন্টের জন্য ব্যবহার করার জন্য একটি ইমেইল ঠিকানা লিখুন।',
+ 'create_account' => 'অ্যাকাউন্ট তৈরি করুন',
+ 'already_have_account' => 'Already have an account?',
+ 'dont_have_account' => 'Don\'t have an account?',
+ 'social_login' => 'Social Login',
+ 'social_registration' => 'Social Registration',
+ 'social_registration_text' => 'Register and sign in using another service.',
+
+ 'register_thanks' => 'Thanks for registering!',
+ 'register_confirm' => 'Please check your email and click the confirmation button to access :appName.',
+ 'registrations_disabled' => 'Registrations are currently disabled',
+ 'registration_email_domain_invalid' => 'That email domain does not have access to this application',
+ 'register_success' => 'Thanks for signing up! You are now registered and signed in.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'লগইন করার চেষ্টা করা হচ্ছে',
+ 'auto_init_starting_desc' => 'We\'re contacting your authentication system to start the login process. If there\'s no progress after 5 seconds you can try clicking the link below.',
+ 'auto_init_start_link' => 'Proceed with authentication',
+
+ // Password Reset
+ 'reset_password' => 'পাসওয়ার্ড রিসেট করুন',
+ 'reset_password_send_instructions' => 'Enter your email below and you will be sent an email with a password reset link.',
+ 'reset_password_send_button' => 'Send Reset Link',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
+ 'reset_password_success' => 'আপনার পাসওয়ার্ড সফলভাবে রিসেট করা হয়েছে.',
+ 'email_reset_subject' => 'Reset your :appName password',
+ 'email_reset_text' => 'You are receiving this email because we received a password reset request for your account.',
+ 'email_reset_not_requested' => 'If you did not request a password reset, no further action is required.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Confirm your email on :appName',
+ 'email_confirm_greeting' => 'Thanks for joining :appName!',
+ 'email_confirm_text' => 'Please confirm your email address by clicking the button below:',
+ 'email_confirm_action' => 'Confirm Email',
+ 'email_confirm_send_error' => 'Email confirmation required but the system could not send the email. Contact the admin to ensure email is set up correctly.',
+ 'email_confirm_success' => 'Your email has been confirmed! You should now be able to login using this email address.',
+ 'email_confirm_resent' => 'Confirmation email resent, Please check your inbox.',
+ 'email_confirm_thanks' => 'Thanks for confirming!',
+ 'email_confirm_thanks_desc' => 'Please wait a moment while your confirmation is handled. If you are not redirected after 3 seconds press the "Continue" link below to proceed.',
+
+ 'email_not_confirmed' => 'Email Address Not Confirmed',
+ 'email_not_confirmed_text' => 'Your email address has not yet been confirmed.',
+ 'email_not_confirmed_click_link' => 'Please click the link in the email that was sent shortly after you registered.',
+ 'email_not_confirmed_resend' => 'If you cannot find the email you can re-send the confirmation email by submitting the form below.',
+ 'email_not_confirmed_resend_button' => 'Resend Confirmation Email',
+
+ // User Invite
+ 'user_invite_email_subject' => 'You have been invited to join :appName!',
+ 'user_invite_email_greeting' => 'An account has been created for you on :appName.',
+ 'user_invite_email_text' => 'Click the button below to set an account password and gain access:',
+ 'user_invite_email_action' => 'Set Account Password',
+ 'user_invite_page_welcome' => 'Welcome to :appName!',
+ 'user_invite_page_text' => 'To finalise your account and gain access you need to set a password which will be used to log-in to :appName on future visits.',
+ 'user_invite_page_confirm_button' => 'Confirm Password',
+ 'user_invite_success_login' => 'Password set, you should now be able to login using your set password to access :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Setup Multi-Factor Authentication',
+ 'mfa_setup_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'mfa_setup_configured' => 'Already configured',
+ 'mfa_setup_reconfigure' => 'Reconfigure',
+ 'mfa_setup_remove_confirmation' => 'Are you sure you want to remove this multi-factor authentication method?',
+ 'mfa_setup_action' => 'Setup',
+ 'mfa_backup_codes_usage_limit_warning' => 'You have less than 5 backup codes remaining, Please generate and store a new set before you run out of codes to prevent being locked out of your account.',
+ 'mfa_option_totp_title' => 'Mobile App',
+ 'mfa_option_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Backup Codes',
+ 'mfa_option_backup_codes_desc' => 'Generates a set of one-time-use backup codes which you\'ll enter on login to verify your identity. Make sure to store these in a safe & secure place.',
+ 'mfa_gen_confirm_and_enable' => 'Confirm and Enable',
+ 'mfa_gen_backup_codes_title' => 'Backup Codes Setup',
+ 'mfa_gen_backup_codes_desc' => 'Store the below list of codes in a safe place. When accessing the system you\'ll be able to use one of the codes as a second authentication mechanism.',
+ 'mfa_gen_backup_codes_download' => 'Download Codes',
+ 'mfa_gen_backup_codes_usage_warning' => 'Each code can only be used once',
+ 'mfa_gen_totp_title' => 'Mobile App Setup',
+ 'mfa_gen_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Scan the QR code below using your preferred authentication app to get started.',
+ 'mfa_gen_totp_verify_setup' => 'Verify Setup',
+ 'mfa_gen_totp_verify_setup_desc' => 'Verify that all is working by entering a code, generated within your authentication app, in the input box below:',
+ 'mfa_gen_totp_provide_code_here' => 'Provide your app generated code here',
+ 'mfa_verify_access' => 'Verify Access',
+ 'mfa_verify_access_desc' => 'Your user account requires you to confirm your identity via an additional level of verification before you\'re granted access. Verify using one of your configured methods to continue.',
+ 'mfa_verify_no_methods' => 'No Methods Configured',
+ 'mfa_verify_no_methods_desc' => 'No multi-factor authentication methods could be found for your account. You\'ll need to set up at least one method before you gain access.',
+ 'mfa_verify_use_totp' => 'Verify using a mobile app',
+ 'mfa_verify_use_backup_codes' => 'Verify using a backup code',
+ 'mfa_verify_backup_code' => 'Backup Code',
+ 'mfa_verify_backup_code_desc' => 'Enter one of your remaining backup codes below:',
+ 'mfa_verify_backup_code_enter_here' => 'Enter backup code here',
+ 'mfa_verify_totp_desc' => 'Enter the code, generated using your mobile app, below:',
+ 'mfa_setup_login_notification' => 'Multi-factor method configured, Please now login again using the configured method.',
+];
diff --git a/lang/bn/common.php b/lang/bn/common.php
new file mode 100644
index 00000000000..baf20426f01
--- /dev/null
+++ b/lang/bn/common.php
@@ -0,0 +1,115 @@
+ 'প্রত্যাহার করুন',
+ 'close' => 'বন্ধ করুন',
+ 'confirm' => 'নিশ্চিত করুন',
+ 'back' => 'প্রত্যাবর্তন করুন',
+ 'save' => 'সংরক্ষণ করুন',
+ 'continue' => 'অগ্রসর হউন',
+ 'select' => 'নির্বাচন করুন',
+ 'toggle_all' => 'সবগুলোকে টগল করুন',
+ 'more' => 'বিস্তারিত',
+
+ // Form Labels
+ 'name' => 'নাম',
+ 'description' => 'বিবরণ',
+ 'role' => 'রোল',
+ 'cover_image' => 'প্রচ্ছদ ছবি',
+ 'cover_image_description' => 'এই চিত্রটি আনুমানিক 440x250px হওয়া বাঞ্চনীয়। ক্ষেত্রবিশেষে ও ব্যবহারকারীর ইন্টারফেসের সাথে মানানসই করে উপস্থাপন করার জন্যে প্রয়োজনে এর আকার পরিবর্তন করে প্রদর্শন করা হবে, যা প্রকৃত মাত্রা হতে ভিন্ন হবে৷',
+
+ // Actions
+ 'actions' => 'কার্যক্রম',
+ 'view' => 'দেখুন',
+ 'view_all' => 'সব দেখুন',
+ 'new' => 'নতুন',
+ 'create' => 'তৈরী করুন',
+ 'update' => 'হালনাগাদ করুন',
+ 'edit' => 'সম্পাদন করুন',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'ক্রমান্বয় করুন',
+ 'move' => 'স্থানান্তর করুন',
+ 'copy' => 'অনুলিপি করুন',
+ 'reply' => 'প্রত্যুত্তর করুন',
+ 'delete' => 'মুছে ফেলুন',
+ 'delete_confirm' => 'মুছে ফেলা নিশ্চিত করুন',
+ 'search' => 'অনুসন্ধান করুন',
+ 'search_clear' => 'অনুসন্ধান পুনঃসূচনা করুন',
+ 'reset' => 'পুনঃসূচনা করুন',
+ 'remove' => 'অপসারণ করুন',
+ 'add' => 'যোগ করুন',
+ 'configure' => 'সংস্থাপন করুন',
+ 'manage' => 'ব্যবস্থাপনা করুন',
+ 'fullscreen' => 'ফুলস্ক্রিন',
+ 'favourite' => 'প্রিয় তালিকায় যুক্ত করুন',
+ 'unfavourite' => 'প্রিয় তালিকা হতে অপসারণ করুন',
+ 'next' => 'পরবর্তী',
+ 'previous' => 'পূর্ববর্তী',
+ 'filter_active' => 'Active Filter:',
+ 'filter_clear' => 'Clear Filter',
+ 'download' => 'Download',
+ 'open_in_tab' => 'Open in Tab',
+ 'open' => 'Open',
+
+ // Sort Options
+ 'sort_options' => 'Sort Options',
+ 'sort_direction_toggle' => 'Sort Direction Toggle',
+ 'sort_ascending' => 'Sort Ascending',
+ 'sort_descending' => 'Sort Descending',
+ 'sort_name' => 'Name',
+ 'sort_default' => 'Default',
+ 'sort_created_at' => 'Created Date',
+ 'sort_updated_at' => 'Updated Date',
+
+ // Misc
+ 'deleted_user' => 'Deleted User',
+ 'no_activity' => 'No activity to show',
+ 'no_items' => 'No items available',
+ 'back_to_top' => 'Back to top',
+ 'skip_to_main_content' => 'Skip to main content',
+ 'toggle_details' => 'Toggle Details',
+ 'toggle_thumbnails' => 'Toggle Thumbnails',
+ 'details' => 'Details',
+ 'grid_view' => 'Grid View',
+ 'list_view' => 'List View',
+ 'default' => 'Default',
+ 'breadcrumb' => 'Breadcrumb',
+ 'status' => 'অবস্থা',
+ 'status_active' => 'Active',
+ 'status_inactive' => 'নিষ্ক্রিয়',
+ 'never' => 'অভূতপূর্ব',
+ 'none' => 'None',
+
+ // Header
+ 'homepage' => 'নীড়পাতা',
+ 'header_menu_expand' => 'হেডার মেন্যু প্রসারিত করুন',
+ 'profile_menu' => 'প্রোফাইল মেন্যু',
+ 'view_profile' => 'প্রোফাইল দেখুন',
+ 'edit_profile' => 'প্রোফাইল সম্পাদনা করুন',
+ 'dark_mode' => 'নৈশরূপ',
+ 'light_mode' => 'দিবারূপ',
+ 'global_search' => 'সকল স্থানে অনুসন্ধান',
+
+ // Layout tabs
+ 'tab_info' => 'তথ্য',
+ 'tab_info_label' => 'ট্যাব: গৌণ তথ্য',
+ 'tab_content' => 'কনটেন্ট',
+ 'tab_content_label' => 'ট্যাব: মূখ্য তথ্য',
+
+ // Email Content
+ 'email_action_help' => 'আপনার যদি ":actionText"-এ ক্লিক করতে সমস্যা হয়, তবে নিচের লিংকটি কপি করে আপনার ওয়েব ব্রাউজারে পেস্ট করুন:',
+ 'email_rights' => 'সর্বস্বত্ব সংরক্ষিত',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'গোপনীয়তা নীতি',
+ 'terms_of_service' => 'পরিষেবার শর্তাবলী',
+
+ // OpenSearch
+ 'opensearch_description' => 'অনুসন্ধান :appName',
+];
diff --git a/lang/bn/components.php b/lang/bn/components.php
new file mode 100644
index 00000000000..c33b1d0b791
--- /dev/null
+++ b/lang/bn/components.php
@@ -0,0 +1,46 @@
+ 'Image Select',
+ 'image_list' => 'Image List',
+ 'image_details' => 'Image Details',
+ 'image_upload' => 'Upload Image',
+ 'image_intro' => 'Here you can select and manage images that have been previously uploaded to the system.',
+ 'image_intro_upload' => 'Upload a new image by dragging an image file into this window, or by using the "Upload Image" button above.',
+ 'image_all' => 'All',
+ 'image_all_title' => 'View all images',
+ 'image_book_title' => 'View images uploaded to this book',
+ 'image_page_title' => 'View images uploaded to this page',
+ 'image_search_hint' => 'Search by image name',
+ 'image_uploaded' => 'Uploaded :uploadedDate',
+ 'image_uploaded_by' => 'Uploaded by :userName',
+ 'image_uploaded_to' => 'Uploaded to :pageLink',
+ 'image_updated' => 'Updated :updateDate',
+ 'image_load_more' => 'Load More',
+ 'image_image_name' => 'Image Name',
+ 'image_delete_used' => 'This image is used in the pages below.',
+ 'image_delete_confirm_text' => 'Are you sure you want to delete this image?',
+ 'image_select_image' => 'Select Image',
+ 'image_dropzone' => 'Drop images or click here to upload',
+ 'image_dropzone_drop' => 'Drop images here to upload',
+ 'images_deleted' => 'Images Deleted',
+ 'image_preview' => 'Image Preview',
+ 'image_upload_success' => 'Image uploaded successfully',
+ 'image_update_success' => 'Image details successfully updated',
+ 'image_delete_success' => 'Image successfully deleted',
+ 'image_replace' => 'Replace Image',
+ 'image_replace_success' => 'Image file successfully updated',
+ 'image_rebuild_thumbs' => 'Regenerate Size Variations',
+ 'image_rebuild_thumbs_success' => 'Image size variations successfully rebuilt!',
+
+ // Code Editor
+ 'code_editor' => 'Edit Code',
+ 'code_language' => 'Code Language',
+ 'code_content' => 'Code Content',
+ 'code_session_history' => 'Session History',
+ 'code_save' => 'Save Code',
+];
diff --git a/lang/bn/editor.php b/lang/bn/editor.php
new file mode 100644
index 00000000000..d8476eeaed2
--- /dev/null
+++ b/lang/bn/editor.php
@@ -0,0 +1,182 @@
+ 'সাধারণ',
+ 'advanced' => 'উন্নত',
+ 'none' => 'অপ্রযোজ্য',
+ 'cancel' => 'প্রত্যাহার করুন',
+ 'save' => 'সংরক্ষণ করুন',
+ 'close' => 'বন্ধ করুন',
+ 'apply' => 'Apply',
+ 'undo' => 'প্রত্যাহার করুন',
+ 'redo' => 'পুনর্বহাল রাখুন',
+ 'left' => 'বাম',
+ 'center' => 'মধ্য',
+ 'right' => 'ডান',
+ 'top' => 'উপর',
+ 'middle' => 'মধ্য',
+ 'bottom' => 'নিচে',
+ 'width' => 'প্রস্থ',
+ 'height' => 'উচ্চতা',
+ 'More' => 'বিস্তারিত',
+ 'select' => 'নির্বাচন করুন...',
+
+ // Toolbar
+ 'formats' => 'প্রকরণ',
+ 'header_large' => 'বড় হেডার',
+ 'header_medium' => 'মাঝারি হেডার',
+ 'header_small' => 'ছোট হেডার',
+ 'header_tiny' => 'ক্ষুদ্র হেডার',
+ 'paragraph' => 'প্যারাগ্রাফ',
+ 'blockquote' => 'ব্লককোট',
+ 'inline_code' => 'ইনলাইন কোড',
+ 'callouts' => 'কলআউট',
+ 'callout_information' => 'তথ্যমূলক',
+ 'callout_success' => 'সফলজনক',
+ 'callout_warning' => 'সতর্কতামূলক',
+ 'callout_danger' => 'বিপদজনক',
+ 'bold' => 'বোল্ড',
+ 'italic' => 'ইটালিক',
+ 'underline' => 'আন্ডারলাইন',
+ 'strikethrough' => 'স্ট্রাইকথ্রু',
+ 'superscript' => 'Superscript',
+ 'subscript' => 'Subscript',
+ 'text_color' => 'Text color',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Custom color',
+ 'remove_color' => 'Remove color',
+ 'background_color' => 'Background color',
+ 'align_left' => 'Align left',
+ 'align_center' => 'Align center',
+ 'align_right' => 'Align right',
+ 'align_justify' => 'Justify',
+ 'list_bullet' => 'Bullet list',
+ 'list_numbered' => 'Numbered list',
+ 'list_task' => 'Task list',
+ 'indent_increase' => 'Increase indent',
+ 'indent_decrease' => 'Decrease indent',
+ 'table' => 'Table',
+ 'insert_image' => 'Insert image',
+ 'insert_image_title' => 'Insert/Edit Image',
+ 'insert_link' => 'Insert/edit link',
+ 'insert_link_title' => 'Insert/Edit Link',
+ 'insert_horizontal_line' => 'Insert horizontal line',
+ 'insert_code_block' => 'Insert code block',
+ 'edit_code_block' => 'Edit code block',
+ 'insert_drawing' => 'Insert/edit drawing',
+ 'drawing_manager' => 'Drawing manager',
+ 'insert_media' => 'Insert/edit media',
+ 'insert_media_title' => 'Insert/Edit Media',
+ 'clear_formatting' => 'Clear formatting',
+ 'source_code' => 'Source code',
+ 'source_code_title' => 'Source Code',
+ 'fullscreen' => 'Fullscreen',
+ 'image_options' => 'Image options',
+
+ // Tables
+ 'table_properties' => 'Table properties',
+ 'table_properties_title' => 'Table Properties',
+ 'delete_table' => 'Delete table',
+ 'table_clear_formatting' => 'Clear table formatting',
+ 'resize_to_contents' => 'Resize to contents',
+ 'row_header' => 'Row header',
+ 'insert_row_before' => 'Insert row before',
+ 'insert_row_after' => 'Insert row after',
+ 'delete_row' => 'Delete row',
+ 'insert_column_before' => 'Insert column before',
+ 'insert_column_after' => 'Insert column after',
+ 'delete_column' => 'Delete column',
+ 'table_cell' => 'Cell',
+ 'table_row' => 'Row',
+ 'table_column' => 'Column',
+ 'cell_properties' => 'Cell properties',
+ 'cell_properties_title' => 'Cell Properties',
+ 'cell_type' => 'Cell type',
+ 'cell_type_cell' => 'Cell',
+ 'cell_scope' => 'Scope',
+ 'cell_type_header' => 'Header cell',
+ 'merge_cells' => 'Merge cells',
+ 'split_cell' => 'Split cell',
+ 'table_row_group' => 'Row Group',
+ 'table_column_group' => 'Column Group',
+ 'horizontal_align' => 'Horizontal align',
+ 'vertical_align' => 'Vertical align',
+ 'border_width' => 'Border width',
+ 'border_style' => 'Border style',
+ 'border_color' => 'Border color',
+ 'row_properties' => 'Row properties',
+ 'row_properties_title' => 'Row Properties',
+ 'cut_row' => 'Cut row',
+ 'copy_row' => 'Copy row',
+ 'paste_row_before' => 'Paste row before',
+ 'paste_row_after' => 'Paste row after',
+ 'row_type' => 'Row type',
+ 'row_type_header' => 'Header',
+ 'row_type_body' => 'Body',
+ 'row_type_footer' => 'Footer',
+ 'alignment' => 'Alignment',
+ 'cut_column' => 'Cut column',
+ 'copy_column' => 'Copy column',
+ 'paste_column_before' => 'Paste column before',
+ 'paste_column_after' => 'Paste column after',
+ 'cell_padding' => 'Cell padding',
+ 'cell_spacing' => 'Cell spacing',
+ 'caption' => 'Caption',
+ 'show_caption' => 'Show caption',
+ 'constrain' => 'Constrain proportions',
+ 'cell_border_solid' => 'Solid',
+ 'cell_border_dotted' => 'Dotted',
+ 'cell_border_dashed' => 'Dashed',
+ 'cell_border_double' => 'Double',
+ 'cell_border_groove' => 'Groove',
+ 'cell_border_ridge' => 'Ridge',
+ 'cell_border_inset' => 'Inset',
+ 'cell_border_outset' => 'Outset',
+ 'cell_border_none' => 'None',
+ 'cell_border_hidden' => 'Hidden',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Source',
+ 'alt_desc' => 'Alternative description',
+ 'embed' => 'Embed',
+ 'paste_embed' => 'Paste your embed code below:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Text to display',
+ 'title' => 'Title',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Open link',
+ 'open_link_in' => 'Open link in...',
+ 'open_link_current' => 'Current window',
+ 'open_link_new' => 'New window',
+ 'remove_link' => 'Remove link',
+ 'insert_collapsible' => 'Insert collapsible block',
+ 'collapsible_unwrap' => 'Unwrap',
+ 'edit_label' => 'Edit label',
+ 'toggle_open_closed' => 'Toggle open/closed',
+ 'collapsible_edit' => 'Edit collapsible block',
+ 'toggle_label' => 'Toggle label',
+
+ // About view
+ 'about' => 'About the editor',
+ 'about_title' => 'About the WYSIWYG Editor',
+ 'editor_license' => 'Editor License & Copyright',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'This editor is built using :tinyLink which is provided under the MIT license.',
+ 'editor_tiny_license_link' => 'The copyright and license details of TinyMCE can be found here.',
+ 'save_continue' => 'Save Page & Continue',
+ 'callouts_cycle' => '(Keep pressing to toggle through types)',
+ 'link_selector' => 'Link to content',
+ 'shortcuts' => 'Shortcuts',
+ 'shortcut' => 'Shortcut',
+ 'shortcuts_intro' => 'The following shortcuts are available in the editor:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Description',
+];
diff --git a/lang/bn/entities.php b/lang/bn/entities.php
new file mode 100644
index 00000000000..74c50be3b2f
--- /dev/null
+++ b/lang/bn/entities.php
@@ -0,0 +1,476 @@
+ 'Recently Created',
+ 'recently_created_pages' => 'Recently Created Pages',
+ 'recently_updated_pages' => 'Recently Updated Pages',
+ 'recently_created_chapters' => 'Recently Created Chapters',
+ 'recently_created_books' => 'Recently Created Books',
+ 'recently_created_shelves' => 'Recently Created Shelves',
+ 'recently_update' => 'Recently Updated',
+ 'recently_viewed' => 'Recently Viewed',
+ 'recent_activity' => 'Recent Activity',
+ 'create_now' => 'Create one now',
+ 'revisions' => 'Revisions',
+ 'meta_revision' => 'Revision #:revisionCount',
+ 'meta_created' => 'Created :timeLength',
+ 'meta_created_name' => 'Created :timeLength by :user',
+ 'meta_updated' => 'Updated :timeLength',
+ 'meta_updated_name' => 'Updated :timeLength by :user',
+ 'meta_owned_name' => 'Owned by :user',
+ 'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
+ 'entity_select' => 'Entity Select',
+ 'entity_select_lack_permission' => 'You don\'t have the required permissions to select this item',
+ 'images' => 'Images',
+ 'my_recent_drafts' => 'My Recent Drafts',
+ 'my_recently_viewed' => 'My Recently Viewed',
+ 'my_most_viewed_favourites' => 'My Most Viewed Favourites',
+ 'my_favourites' => 'My Favourites',
+ 'no_pages_viewed' => 'You have not viewed any pages',
+ 'no_pages_recently_created' => 'No pages have been recently created',
+ 'no_pages_recently_updated' => 'No pages have been recently updated',
+ 'export' => 'Export',
+ 'export_html' => 'Contained Web File',
+ 'export_pdf' => 'PDF File',
+ 'export_text' => 'Plain Text File',
+ 'export_md' => 'Markdown File',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Permissions',
+ 'permissions_desc' => 'Set permissions here to override the default permissions provided by user roles.',
+ 'permissions_book_cascade' => 'Permissions set on books will automatically cascade to child chapters and pages, unless they have their own permissions defined.',
+ 'permissions_chapter_cascade' => 'Permissions set on chapters will automatically cascade to child pages, unless they have their own permissions defined.',
+ 'permissions_save' => 'Save Permissions',
+ 'permissions_owner' => 'Owner',
+ 'permissions_role_everyone_else' => 'Everyone Else',
+ 'permissions_role_everyone_else_desc' => 'Set permissions for all roles not specifically overridden.',
+ 'permissions_role_override' => 'Override permissions for role',
+ 'permissions_inherit_defaults' => 'Inherit defaults',
+
+ // Search
+ 'search_results' => 'Search Results',
+ 'search_total_results_found' => ':count result found|:count total results found',
+ 'search_clear' => 'Clear Search',
+ 'search_no_pages' => 'No pages matched this search',
+ 'search_for_term' => 'Search for :term',
+ 'search_more' => 'More Results',
+ 'search_advanced' => 'Advanced Search',
+ 'search_terms' => 'Search Terms',
+ 'search_content_type' => 'Content Type',
+ 'search_exact_matches' => 'Exact Matches',
+ 'search_tags' => 'Tag Searches',
+ 'search_options' => 'Options',
+ 'search_viewed_by_me' => 'Viewed by me',
+ 'search_not_viewed_by_me' => 'Not viewed by me',
+ 'search_permissions_set' => 'Permissions set',
+ 'search_created_by_me' => 'Created by me',
+ 'search_updated_by_me' => 'Updated by me',
+ 'search_owned_by_me' => 'Owned by me',
+ 'search_date_options' => 'Date Options',
+ 'search_updated_before' => 'Updated before',
+ 'search_updated_after' => 'Updated after',
+ 'search_created_before' => 'Created before',
+ 'search_created_after' => 'Created after',
+ 'search_set_date' => 'Set Date',
+ 'search_update' => 'Update Search',
+
+ // Shelves
+ 'shelf' => 'Shelf',
+ 'shelves' => 'Shelves',
+ 'x_shelves' => ':count Shelf|:count Shelves',
+ 'shelves_empty' => 'No shelves have been created',
+ 'shelves_create' => 'Create New Shelf',
+ 'shelves_popular' => 'Popular Shelves',
+ 'shelves_new' => 'New Shelves',
+ 'shelves_new_action' => 'New Shelf',
+ 'shelves_popular_empty' => 'The most popular shelves will appear here.',
+ 'shelves_new_empty' => 'The most recently created shelves will appear here.',
+ 'shelves_save' => 'Save Shelf',
+ 'shelves_books' => 'Books on this shelf',
+ 'shelves_add_books' => 'Add books to this shelf',
+ 'shelves_drag_books' => 'Drag books below to add them to this shelf',
+ 'shelves_empty_contents' => 'This shelf has no books assigned to it',
+ 'shelves_edit_and_assign' => 'Edit shelf to assign books',
+ 'shelves_edit_named' => 'Edit Shelf :name',
+ 'shelves_edit' => 'Edit Shelf',
+ 'shelves_delete' => 'Delete Shelf',
+ 'shelves_delete_named' => 'Delete Shelf :name',
+ 'shelves_delete_explain' => "This will delete the shelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Are you sure you want to delete this shelf?',
+ 'shelves_permissions' => 'Shelf Permissions',
+ 'shelves_permissions_updated' => 'Shelf Permissions Updated',
+ 'shelves_permissions_active' => 'Shelf Permissions Active',
+ 'shelves_permissions_cascade_warning' => 'Permissions on shelves do not automatically cascade to contained books. This is because a book can exist on multiple shelves. Permissions can however be copied down to child books using the option found below.',
+ 'shelves_permissions_create' => 'Shelf create permissions are only used for copying permissions to child books using the action below. They do not control the ability to create books.',
+ 'shelves_copy_permissions_to_books' => 'Copy Permissions to Books',
+ 'shelves_copy_permissions' => 'Copy Permissions',
+ 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this shelf to all books contained within. Before activating, ensure any changes to the permissions of this shelf have been saved.',
+ 'shelves_copy_permission_success' => 'Shelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'Book',
+ 'books' => 'Books',
+ 'x_books' => ':count Book|:count Books',
+ 'books_empty' => 'No books have been created',
+ 'books_popular' => 'Popular Books',
+ 'books_recent' => 'Recent Books',
+ 'books_new' => 'New Books',
+ 'books_new_action' => 'New Book',
+ 'books_popular_empty' => 'The most popular books will appear here.',
+ 'books_new_empty' => 'The most recently created books will appear here.',
+ 'books_create' => 'Create New Book',
+ 'books_delete' => 'Delete Book',
+ 'books_delete_named' => 'Delete Book :bookName',
+ 'books_delete_explain' => 'This will delete the book with the name \':bookName\'. All pages and chapters will be removed.',
+ 'books_delete_confirmation' => 'Are you sure you want to delete this book?',
+ 'books_edit' => 'Edit Book',
+ 'books_edit_named' => 'Edit Book :bookName',
+ 'books_form_book_name' => 'Book Name',
+ 'books_save' => 'Save Book',
+ 'books_permissions' => 'Book Permissions',
+ 'books_permissions_updated' => 'Book Permissions Updated',
+ 'books_empty_contents' => 'No pages or chapters have been created for this book.',
+ 'books_empty_create_page' => 'Create a new page',
+ 'books_empty_sort_current_book' => 'Sort the current book',
+ 'books_empty_add_chapter' => 'Add a chapter',
+ 'books_permissions_active' => 'Book Permissions Active',
+ 'books_search_this' => 'Search this book',
+ 'books_navigation' => 'Book Navigation',
+ 'books_sort' => 'Sort Book Contents',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Sort Book :bookName',
+ 'books_sort_name' => 'Sort by Name',
+ 'books_sort_created' => 'Sort by Created Date',
+ 'books_sort_updated' => 'Sort by Updated Date',
+ 'books_sort_chapters_first' => 'Chapters First',
+ 'books_sort_chapters_last' => 'Chapters Last',
+ 'books_sort_show_other' => 'Show Other Books',
+ 'books_sort_save' => 'Save New Order',
+ 'books_sort_show_other_desc' => 'Add other books here to include them in the sort operation, and allow easy cross-book reorganisation.',
+ 'books_sort_move_up' => 'Move Up',
+ 'books_sort_move_down' => 'Move Down',
+ 'books_sort_move_prev_book' => 'Move to Previous Book',
+ 'books_sort_move_next_book' => 'Move to Next Book',
+ 'books_sort_move_prev_chapter' => 'Move Into Previous Chapter',
+ 'books_sort_move_next_chapter' => 'Move Into Next Chapter',
+ 'books_sort_move_book_start' => 'Move to Start of Book',
+ 'books_sort_move_book_end' => 'Move to End of Book',
+ 'books_sort_move_before_chapter' => 'Move to Before Chapter',
+ 'books_sort_move_after_chapter' => 'Move to After Chapter',
+ 'books_copy' => 'Copy Book',
+ 'books_copy_success' => 'Book successfully copied',
+
+ // Chapters
+ 'chapter' => 'Chapter',
+ 'chapters' => 'Chapters',
+ 'x_chapters' => ':count Chapter|:count Chapters',
+ 'chapters_popular' => 'Popular Chapters',
+ 'chapters_new' => 'New Chapter',
+ 'chapters_create' => 'Create New Chapter',
+ 'chapters_delete' => 'Delete Chapter',
+ 'chapters_delete_named' => 'Delete Chapter :chapterName',
+ 'chapters_delete_explain' => 'This will delete the chapter with the name \':chapterName\'. All pages that exist within this chapter will also be deleted.',
+ 'chapters_delete_confirm' => 'Are you sure you want to delete this chapter?',
+ 'chapters_edit' => 'Edit Chapter',
+ 'chapters_edit_named' => 'Edit Chapter :chapterName',
+ 'chapters_save' => 'Save Chapter',
+ 'chapters_move' => 'Move Chapter',
+ 'chapters_move_named' => 'Move Chapter :chapterName',
+ 'chapters_copy' => 'Copy Chapter',
+ 'chapters_copy_success' => 'Chapter successfully copied',
+ 'chapters_permissions' => 'Chapter Permissions',
+ 'chapters_empty' => 'No pages are currently in this chapter.',
+ 'chapters_permissions_active' => 'Chapter Permissions Active',
+ 'chapters_permissions_success' => 'Chapter Permissions Updated',
+ 'chapters_search_this' => 'Search this chapter',
+ 'chapter_sort_book' => 'Sort Book',
+
+ // Pages
+ 'page' => 'Page',
+ 'pages' => 'Pages',
+ 'x_pages' => ':count Page|:count Pages',
+ 'pages_popular' => 'Popular Pages',
+ 'pages_new' => 'New Page',
+ 'pages_attachments' => 'Attachments',
+ 'pages_navigation' => 'Page Navigation',
+ 'pages_delete' => 'Delete Page',
+ 'pages_delete_named' => 'Delete Page :pageName',
+ 'pages_delete_draft_named' => 'Delete Draft Page :pageName',
+ 'pages_delete_draft' => 'Delete Draft Page',
+ 'pages_delete_success' => 'Page deleted',
+ 'pages_delete_draft_success' => 'Draft page deleted',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Are you sure you want to delete this page?',
+ 'pages_delete_draft_confirm' => 'Are you sure you want to delete this draft page?',
+ 'pages_editing_named' => 'Editing Page :pageName',
+ 'pages_edit_draft_options' => 'Draft Options',
+ 'pages_edit_save_draft' => 'Save Draft',
+ 'pages_edit_draft' => 'Edit Page Draft',
+ 'pages_editing_draft' => 'Editing Draft',
+ 'pages_editing_page' => 'Editing Page',
+ 'pages_edit_draft_save_at' => 'Draft saved at ',
+ 'pages_edit_delete_draft' => 'Delete Draft',
+ 'pages_edit_delete_draft_confirm' => 'Are you sure you want to delete your draft page changes? All of your changes, since the last full save, will be lost and the editor will be updated with the latest page non-draft save state.',
+ 'pages_edit_discard_draft' => 'Discard Draft',
+ 'pages_edit_switch_to_markdown' => 'Switch to Markdown Editor',
+ 'pages_edit_switch_to_markdown_clean' => '(Clean Content)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stable Content)',
+ 'pages_edit_switch_to_wysiwyg' => 'Switch to WYSIWYG Editor',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Set Changelog',
+ 'pages_edit_enter_changelog_desc' => 'Enter a brief description of the changes you\'ve made',
+ 'pages_edit_enter_changelog' => 'Enter Changelog',
+ 'pages_editor_switch_title' => 'Switch Editor',
+ 'pages_editor_switch_are_you_sure' => 'Are you sure you want to change the editor for this page?',
+ 'pages_editor_switch_consider_following' => 'Consider the following when changing editors:',
+ 'pages_editor_switch_consideration_a' => 'Once saved, the new editor option will be used by any future editors, including those that may not be able to change editor type themselves.',
+ 'pages_editor_switch_consideration_b' => 'This can potentially lead to a loss of detail and syntax in certain circumstances.',
+ 'pages_editor_switch_consideration_c' => 'Tag or changelog changes, made since last save, won\'t persist across this change.',
+ 'pages_save' => 'Save Page',
+ 'pages_title' => 'Page Title',
+ 'pages_name' => 'Page Name',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Preview',
+ 'pages_md_insert_image' => 'Insert Image',
+ 'pages_md_insert_link' => 'Insert Entity Link',
+ 'pages_md_insert_drawing' => 'Insert Drawing',
+ 'pages_md_show_preview' => 'Show preview',
+ 'pages_md_sync_scroll' => 'Sync preview scroll',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Unsaved Drawing Found',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'Page is not in a chapter',
+ 'pages_move' => 'Move Page',
+ 'pages_copy' => 'Copy Page',
+ 'pages_copy_desination' => 'Copy Destination',
+ 'pages_copy_success' => 'Page successfully copied',
+ 'pages_permissions' => 'Page Permissions',
+ 'pages_permissions_success' => 'Page permissions updated',
+ 'pages_revision' => 'Revision',
+ 'pages_revisions' => 'Page Revisions',
+ 'pages_revisions_desc' => 'Listed below are all the past revisions of this page. You can look back upon, compare, and restore old page versions if permissions allow. The full history of the page may not be fully reflected here since, depending on system configuration, old revisions could be auto-deleted.',
+ 'pages_revisions_named' => 'Page Revisions for :pageName',
+ 'pages_revision_named' => 'Page Revision for :pageName',
+ 'pages_revision_restored_from' => 'Restored from #:id; :summary',
+ 'pages_revisions_created_by' => 'Created By',
+ 'pages_revisions_date' => 'Revision Date',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revision Number',
+ 'pages_revisions_numbered' => 'Revision #:id',
+ 'pages_revisions_numbered_changes' => 'Revision #:id Changes',
+ 'pages_revisions_editor' => 'Editor Type',
+ 'pages_revisions_changelog' => 'Changelog',
+ 'pages_revisions_changes' => 'Changes',
+ 'pages_revisions_current' => 'Current Version',
+ 'pages_revisions_preview' => 'Preview',
+ 'pages_revisions_restore' => 'Restore',
+ 'pages_revisions_none' => 'This page has no revisions',
+ 'pages_copy_link' => 'Copy Link',
+ 'pages_edit_content_link' => 'Jump to section in editor',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Page Section Options',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Page Permissions Active',
+ 'pages_initial_revision' => 'Initial publish',
+ 'pages_references_update_revision' => 'System auto-update of internal links',
+ 'pages_initial_name' => 'New Page',
+ 'pages_editing_draft_notification' => 'You are currently editing a draft that was last saved :timeDiff.',
+ 'pages_draft_edited_notification' => 'This page has been updated by since that time. It is recommended that you discard this draft.',
+ 'pages_draft_page_changed_since_creation' => 'This page has been updated since this draft was created. It is recommended that you discard this draft or take care not to overwrite any page changes.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count users have started editing this page',
+ 'start_b' => ':userName has started editing this page',
+ 'time_a' => 'since the page was last updated',
+ 'time_b' => 'in the last :minCount minutes',
+ 'message' => ':start :time. Take care not to overwrite each other\'s updates!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'Specific Page',
+ 'pages_is_template' => 'Page Template',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'Page Tags',
+ 'chapter_tags' => 'Chapter Tags',
+ 'book_tags' => 'Book Tags',
+ 'shelf_tags' => 'Shelf Tags',
+ 'tag' => 'Tag',
+ 'tags' => 'Tags',
+ 'tags_index_desc' => 'Tags can be applied to content within the system to apply a flexible form of categorization. Tags can have both a key and value, with the value being optional. Once applied, content can then be queried using the tag name and value.',
+ 'tag_name' => 'Tag Name',
+ 'tag_value' => 'Tag Value (Optional)',
+ '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' => 'Add another tag',
+ 'tags_remove' => 'Remove this tag',
+ 'tags_usages' => 'Total tag usages',
+ 'tags_assigned_pages' => 'Assigned to Pages',
+ 'tags_assigned_chapters' => 'Assigned to Chapters',
+ 'tags_assigned_books' => 'Assigned to Books',
+ 'tags_assigned_shelves' => 'Assigned to Shelves',
+ 'tags_x_unique_values' => ':count unique values',
+ 'tags_all_values' => 'All values',
+ 'tags_view_tags' => 'View Tags',
+ 'tags_view_existing_tags' => 'View existing tags',
+ 'tags_list_empty_hint' => 'Tags can be assigned via the page editor sidebar or while editing the details of a book, chapter or shelf.',
+ 'attachments' => 'Attachments',
+ 'attachments_explain' => 'Upload some files or attach some links to display on your page. These are visible in the page sidebar.',
+ 'attachments_explain_instant_save' => 'Changes here are saved instantly.',
+ 'attachments_upload' => 'Upload File',
+ 'attachments_link' => 'Attach Link',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'Set Link',
+ 'attachments_delete' => 'Are you sure you want to delete this attachment?',
+ 'attachments_dropzone' => 'Drop files here to upload',
+ 'attachments_no_files' => 'No files have been uploaded',
+ 'attachments_explain_link' => 'You can attach a link if you\'d prefer not to upload a file. This can be a link to another page or a link to a file in the cloud.',
+ 'attachments_link_name' => 'Link Name',
+ 'attachment_link' => 'Attachment link',
+ 'attachments_link_url' => 'Link to file',
+ 'attachments_link_url_hint' => 'Url of site or file',
+ 'attach' => 'Attach',
+ 'attachments_insert_link' => 'Add Attachment Link to Page',
+ 'attachments_edit_file' => 'Edit File',
+ 'attachments_edit_file_name' => 'File Name',
+ 'attachments_edit_drop_upload' => 'Drop files or click here to upload and overwrite',
+ 'attachments_order_updated' => 'Attachment order updated',
+ 'attachments_updated_success' => 'Attachment details updated',
+ 'attachments_deleted' => 'Attachment deleted',
+ 'attachments_file_uploaded' => 'File successfully uploaded',
+ 'attachments_file_updated' => 'File successfully updated',
+ 'attachments_link_attached' => 'Link successfully attached to page',
+ 'templates' => 'Templates',
+ 'templates_set_as_template' => 'Page is a template',
+ 'templates_explain_set_as_template' => 'You can set this page as a template so its contents be utilized when creating other pages. Other users will be able to use this template if they have view permissions for this page.',
+ 'templates_replace_content' => 'Replace page content',
+ 'templates_append_content' => 'Append to page content',
+ 'templates_prepend_content' => 'Prepend to page content',
+
+ // Profile View
+ 'profile_user_for_x' => 'User for :time',
+ 'profile_created_content' => 'Created Content',
+ 'profile_not_created_pages' => ':userName has not created any pages',
+ 'profile_not_created_chapters' => ':userName has not created any chapters',
+ 'profile_not_created_books' => ':userName has not created any books',
+ 'profile_not_created_shelves' => ':userName has not created any shelves',
+
+ // Comments
+ 'comment' => 'Comment',
+ 'comments' => 'Comments',
+ 'comment_add' => 'Add Comment',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Leave a comment here',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Save Comment',
+ 'comment_new' => 'New Comment',
+ 'comment_created' => 'commented :createDiff',
+ 'comment_updated' => 'Updated :updateDiff by :username',
+ 'comment_updated_indicator' => 'Updated',
+ 'comment_deleted_success' => 'Comment deleted',
+ 'comment_created_success' => 'Comment added',
+ 'comment_updated_success' => 'Comment updated',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Are you sure you want to delete this comment?',
+ 'comment_in_reply_to' => 'In reply to :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Here are the comments that have been left on this page. Comments can be added & managed when viewing the saved page.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Are you sure you want to delete this revision?',
+ 'revision_restore_confirm' => 'Are you sure you want to restore this revision? The current page contents will be replaced.',
+ 'revision_cannot_delete_latest' => 'Cannot delete the latest revision.',
+
+ // Copy view
+ 'copy_consider' => 'Please consider the below when copying content.',
+ 'copy_consider_permissions' => 'Custom permission settings will not be copied.',
+ 'copy_consider_owner' => 'You will become the owner of all copied content.',
+ 'copy_consider_images' => 'Page image files will not be duplicated & the original images will retain their relation to the page they were originally uploaded to.',
+ 'copy_consider_attachments' => 'Page attachments will not be copied.',
+ 'copy_consider_access' => 'A change of location, owner or permissions may result in this content being accessible to those previously without access.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Convert to Shelf',
+ 'convert_to_shelf_contents_desc' => 'You can convert this book to a new shelf with the same contents. Chapters contained within this book will be converted to new books. If this book contains any pages, that are not in a chapter, this book will be renamed and contain such pages, and this book will become part of the new shelf.',
+ 'convert_to_shelf_permissions_desc' => 'Any permissions set on this book will be copied to the new shelf and to all new child books that don\'t have their own permissions enforced. Note that permissions on shelves do not auto-cascade to content within, as they do for books.',
+ 'convert_book' => 'Convert Book',
+ 'convert_book_confirm' => 'Are you sure you want to convert this book?',
+ 'convert_undo_warning' => 'This cannot be as easily undone.',
+ 'convert_to_book' => 'Convert to Book',
+ 'convert_to_book_desc' => 'You can convert this chapter to a new book with the same contents. Any permissions set on this chapter will be copied to the new book but any inherited permissions, from the parent book, will not be copied which could lead to a change of access control.',
+ 'convert_chapter' => 'Convert Chapter',
+ 'convert_chapter_confirm' => 'Are you sure you want to convert this chapter?',
+
+ // References
+ 'references' => 'References',
+ 'references_none' => 'There are no tracked references to this item.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Watch',
+ 'watch_title_default' => 'Default Preferences',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignore',
+ 'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
+ 'watch_title_new' => 'New Pages',
+ 'watch_desc_new' => 'Notify when any new page is created within this item.',
+ 'watch_title_updates' => 'All Page Updates',
+ 'watch_desc_updates' => 'Notify upon all new pages and page changes.',
+ 'watch_desc_updates_page' => 'Notify upon all page changes.',
+ 'watch_title_comments' => 'All Page Updates & Comments',
+ 'watch_desc_comments' => 'Notify upon all new pages, page changes and new comments.',
+ 'watch_desc_comments_page' => 'Notify upon page changes and new comments.',
+ 'watch_change_default' => 'Change default notification preferences',
+ 'watch_detail_ignore' => 'Ignoring notifications',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/bn/errors.php b/lang/bn/errors.php
new file mode 100644
index 00000000000..92414edfdef
--- /dev/null
+++ b/lang/bn/errors.php
@@ -0,0 +1,135 @@
+ 'অনুরোধকৃত পৃষ্ঠাটিতে আপনার ব্যবহারাধিকারের অনুমতি নেই।',
+ 'permissionJson' => 'You do not have permission to perform the requested action.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'A user with the email :email already exists but with different credentials.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'Email has already been confirmed, Try logging in.',
+ 'email_confirmation_invalid' => 'This confirmation token is not valid or has already been used, Please try registering again.',
+ 'email_confirmation_expired' => 'The confirmation token has expired, A new confirmation email has been sent.',
+ 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed',
+ 'ldap_fail_anonymous' => 'LDAP access failed using anonymous bind',
+ 'ldap_fail_authed' => 'LDAP access failed using given dn & password details',
+ 'ldap_extension_not_installed' => 'LDAP PHP extension not installed',
+ 'ldap_cannot_connect' => 'Cannot connect to ldap server, Initial connection failed',
+ 'saml_already_logged_in' => 'Already logged in',
+ 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.',
+ 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'oidc_already_logged_in' => 'Already logged in',
+ 'oidc_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'oidc_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'social_no_action_defined' => 'No action defined',
+ 'social_login_bad_response' => "Error received during :socialAccount login: \n:error",
+ 'social_account_in_use' => 'This :socialAccount account is already in use, Try logging in via the :socialAccount option.',
+ 'social_account_email_in_use' => 'The email :email is already in use. If you already have an account you can connect your :socialAccount account from your profile settings.',
+ 'social_account_existing' => 'This :socialAccount is already attached to your profile.',
+ 'social_account_already_used_existing' => 'This :socialAccount account is already used by another user.',
+ 'social_account_not_used' => 'This :socialAccount account is not linked to any users. Please attach it in your profile settings. ',
+ 'social_account_register_instructions' => 'If you do not yet have an account, You can register an account using the :socialAccount option.',
+ 'social_driver_not_found' => 'Social driver not found',
+ 'social_driver_not_configured' => 'Your :socialAccount social settings are not configured correctly.',
+ 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // System
+ 'path_not_writable' => 'File path :filePath could not be uploaded to. Ensure it is writable to the server.',
+ 'cannot_get_image_from_url' => 'Cannot get image from :url',
+ 'cannot_create_thumbs' => 'The server cannot create thumbnails. Please check you have the GD PHP extension installed.',
+ 'server_upload_limit' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+ 'server_post_limit' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.',
+ 'uploaded' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'An error occurred uploading the image',
+ 'image_upload_type_error' => 'The image type being uploaded is invalid',
+ 'image_upload_replace_type' => 'Image file replacements must be of the same type',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Drawing data could not be loaded. The drawing file might no longer exist or you may not have permission to access it.',
+
+ // Attachments
+ 'attachment_not_found' => 'Attachment not found',
+ 'attachment_upload_error' => 'An error occurred uploading the attachment file',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Failed to save draft. Ensure you have internet connection before saving this page',
+ 'page_draft_delete_fail' => 'Failed to delete page draft and fetch current page saved content',
+ 'page_custom_home_deletion' => 'Cannot delete a page while it is set as a homepage',
+
+ // Entities
+ 'entity_not_found' => 'Entity not found',
+ 'bookshelf_not_found' => 'Shelf not found',
+ 'book_not_found' => 'Book not found',
+ 'page_not_found' => 'Page not found',
+ 'chapter_not_found' => 'Chapter not found',
+ 'selected_book_not_found' => 'The selected book was not found',
+ 'selected_book_chapter_not_found' => 'The selected Book or Chapter was not found',
+ 'guests_cannot_save_drafts' => 'Guests cannot save drafts',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'You cannot delete the only admin',
+ 'users_cannot_delete_guest' => 'You cannot delete the guest user',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'This role cannot be edited',
+ 'role_system_cannot_be_deleted' => 'This role is a system role and cannot be deleted',
+ 'role_registration_default_cannot_delete' => 'This role cannot be deleted while set as the default registration role',
+ 'role_cannot_remove_only_admin' => 'This user is the only user assigned to the administrator role. Assign the administrator role to another user before attempting to remove it here.',
+
+ // Comments
+ 'comment_list' => 'An error occurred while fetching the comments.',
+ 'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.',
+ 'comment_add' => 'An error occurred while adding / updating the comment.',
+ 'comment_delete' => 'An error occurred while deleting the comment.',
+ 'empty_comment' => 'Cannot add an empty comment.',
+
+ // Error pages
+ '404_page_not_found' => 'Page Not Found',
+ 'sorry_page_not_found' => 'Sorry, The page you were looking for could not be found.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
+ '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' => 'Return to home',
+ 'error_occurred' => 'An Error Occurred',
+ 'app_down' => ':appName is down right now',
+ 'back_soon' => 'It will be back up soon.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'No authorization token found on the request',
+ 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect',
+ 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token',
+ 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
+ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
+ 'api_user_token_expired' => 'The authorization token used has expired',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'The URL does not match the configured allowed SSR hosts',
+];
diff --git a/lang/bn/notifications.php b/lang/bn/notifications.php
new file mode 100644
index 00000000000..563ac24e84d
--- /dev/null
+++ b/lang/bn/notifications.php
@@ -0,0 +1,29 @@
+ 'New comment on page: :pageName',
+ 'new_comment_intro' => 'A user has commented on a page in :appName:',
+ 'new_page_subject' => 'New page: :pageName',
+ 'new_page_intro' => 'A new page has been created in :appName:',
+ 'updated_page_subject' => 'Updated page: :pageName',
+ 'updated_page_intro' => 'A page has been updated in :appName:',
+ 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Page Name:',
+ 'detail_page_path' => 'Page Path:',
+ 'detail_commenter' => 'Commenter:',
+ 'detail_comment' => 'Comment:',
+ 'detail_created_by' => 'Created By:',
+ 'detail_updated_by' => 'Updated By:',
+
+ 'action_view_comment' => 'View Comment',
+ 'action_view_page' => 'View Page',
+
+ 'footer_reason' => 'This notification was sent to you because :link cover this type of activity for this item.',
+ 'footer_reason_link' => 'your notification preferences',
+];
diff --git a/lang/bn/pagination.php b/lang/bn/pagination.php
new file mode 100644
index 00000000000..2cf360a0fb6
--- /dev/null
+++ b/lang/bn/pagination.php
@@ -0,0 +1,12 @@
+ '« পূর্ববর্তী',
+ 'next' => 'পরবর্তী »',
+
+];
diff --git a/lang/bn/passwords.php b/lang/bn/passwords.php
new file mode 100644
index 00000000000..da318b1acc0
--- /dev/null
+++ b/lang/bn/passwords.php
@@ -0,0 +1,15 @@
+ 'পাসওয়ার্ড কমপক্ষে আট অক্ষরের হতে হবে এবং পাসওয়ার্ড নিশ্চিতকরণের ঘরে প্রদত্ত পাসওয়ার্ডের সাথে মিলতে হবে।',
+ 'user' => "প্রদত্ত ইমেইল ঠিকানার স্বাপেক্ষে কোন ব্যবহারকারী খুঁজে পাওয়া যায়নি।",
+ 'token' => 'প্রদত্ত পাসওয়ার্ড রিসেট টোকেন অত্র ইমেল ঠিকানার জন্য বৈধ নয়৷',
+ 'sent' => 'আপনার পাসওয়ার্ড রিসেট লিঙ্কটি ই-মেইলের মাধ্যমে প্রেরণ করা হয়েছে!',
+ 'reset' => 'আপনার পাসওয়ার্ডটি রিসেট করা হয়েছে!',
+
+];
diff --git a/lang/bn/preferences.php b/lang/bn/preferences.php
new file mode 100644
index 00000000000..c59ec62daeb
--- /dev/null
+++ b/lang/bn/preferences.php
@@ -0,0 +1,52 @@
+ 'আমার অ্যাকাউন্ট',
+
+ 'shortcuts' => 'Shortcuts',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Here you can enable or disable keyboard system interface shortcuts, used for navigation and actions.',
+ 'shortcuts_customize_desc' => 'You can customize each of the shortcuts below. Just press your desired key combination after selecting the input for a shortcut.',
+ 'shortcuts_toggle_label' => 'Keyboard shortcuts enabled',
+ 'shortcuts_section_navigation' => 'Navigation',
+ 'shortcuts_section_actions' => 'Common Actions',
+ 'shortcuts_save' => 'Save Shortcuts',
+ 'shortcuts_overlay_desc' => 'Note: When shortcuts are enabled a helper overlay is available via pressing "?" which will highlight the available shortcuts for actions currently visible on the screen.',
+ 'shortcuts_update_success' => 'Shortcut preferences have been updated!',
+ 'shortcuts_overview_desc' => 'Manage keyboard shortcuts you can use to navigate the system user interface.',
+
+ 'notifications' => 'Notification Preferences',
+ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.',
+ 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own',
+ 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notify upon replies to my comments',
+ 'notifications_save' => 'Save Preferences',
+ 'notifications_update_success' => 'Notification preferences have been updated!',
+ 'notifications_watched' => 'Watched & Ignored Items',
+ 'notifications_watched_desc' => 'Below are the items that have custom watch preferences applied. To update your preferences for these, view the item then find the watch options in the sidebar.',
+
+ 'auth' => 'Access & Security',
+ 'auth_change_password' => 'Change Password',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Password has been updated!',
+
+ 'profile' => 'Profile Details',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'View Public Profile',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Delete Account',
+ 'delete_my_account' => 'Delete My Account',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/bn/settings.php b/lang/bn/settings.php
new file mode 100644
index 00000000000..94ad059d4ce
--- /dev/null
+++ b/lang/bn/settings.php
@@ -0,0 +1,374 @@
+ 'সেটিংস',
+ 'settings_save' => 'সেটিংস সংরক্ষণ করুন',
+ 'system_version' => 'সিস্টেম ভার্সন',
+ 'categories' => 'শ্রেণীবিভাগ সমূহ',
+
+ // App Settings
+ 'app_customization' => 'নিজস্বীকরণ',
+ 'app_features_security' => 'ফিচারসমূহ ও নিরাপত্তা',
+ 'app_name' => 'এপ্লিকেশনের নাম',
+ 'app_name_desc' => 'এই নামটি হেডারে এবং যেকোন সিস্টেম-প্রেরিত ইমেলে দেখানো হয়।',
+ 'app_name_header' => 'হেডারে নাম দেখান',
+ 'app_public_access' => 'পাবলিক এক্সেস',
+ 'app_public_access_desc' => 'উক্ত অপশনটি সক্রিয় করলে আপনার বুকস্ট্যাক ওয়েবসাইটের সকল তথ্য, যে কেউ লগ ইন করা ছাড়াই, দেখতে বা পড়তে অথবা এক্সেস করতে পারবেন।',
+ 'app_public_access_desc_guest' => '"Guest" ব্যবহারকারীর মাধ্যমে ওয়েবসাইট ভিসিটরদের পঠনধিকার নিয়ন্ত্রণ করা যেতে পারে।',
+ 'app_public_access_toggle' => 'পাবলিক অ্যাক্সেসের অনুমতি দিন',
+ 'app_public_viewing' => 'সকলের জন্যে উন্মুক্ত করতে চান?',
+ 'app_secure_images' => 'Higher Security Image Uploads',
+ 'app_secure_images_toggle' => 'Enable higher security image uploads',
+ 'app_secure_images_desc' => 'For performance reasons, all images are public. This option adds a random, hard-to-guess string in front of image urls. Ensure directory indexes are not enabled to prevent easy access.',
+ 'app_default_editor' => 'Default Page Editor',
+ 'app_default_editor_desc' => 'Select which editor will be used by default when editing new pages. This can be overridden at a page level where permissions allow.',
+ 'app_custom_html' => 'Custom HTML Head Content',
+ 'app_custom_html_desc' => 'Any content added here will be inserted into the bottom of the section of every page. This is handy for overriding styles or adding analytics code.',
+ 'app_custom_html_disabled_notice' => 'Custom HTML head content is disabled on this settings page to ensure any breaking changes can be reverted.',
+ 'app_logo' => 'অ্যাপ্লিকেশনের লোগো',
+ 'app_logo_desc' => 'এটি অ্যাপ্লিকেশনের হেডার বার-এ দেখানো হবে। উক্ত ছবিটির উচ্চতা সর্বোচ্চ ৮৬ পিক্সেলের হতে হবে। অধিকতর উচ্চতার ছবিকে স্কেল ডাউন করা হবে। ',
+ 'app_icon' => 'অ্যাপ্লিকেশনের আইকন',
+ 'app_icon_desc' => 'This icon is used for browser tabs and shortcut icons. This should be a 256px square PNG image.',
+ 'app_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' => 'একটি পৃষ্ঠা নির্বাচন করুন',
+ 'app_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::" 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' => 'Disable Comments',
+ 'app_disable_comments_toggle' => 'Disable comments',
+ 'app_disable_comments_desc' => 'Disables comments across all pages in the application. Existing comments are not shown.',
+
+ // Color settings
+ 'color_scheme' => 'Application Color Scheme',
+ 'color_scheme_desc' => 'Set the colors to use in the application user interface. Colors can be configured separately for dark and light modes to best fit the theme and ensure legibility.',
+ 'ui_colors_desc' => 'Set the application primary color and default link color. The primary color is mainly used for the header banner, buttons and interface decorations. The default link color is used for text-based links and actions, both within written content and in the application interface.',
+ 'app_color' => 'Primary Color',
+ 'link_color' => 'Default Link Color',
+ 'content_colors_desc' => 'Set colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'bookshelf_color' => 'Shelf Color',
+ 'book_color' => 'Book Color',
+ 'chapter_color' => 'Chapter Color',
+ 'page_color' => 'Page Color',
+ 'page_draft_color' => 'Page Draft Color',
+
+ // Registration Settings
+ 'reg_settings' => 'Registration',
+ 'reg_enable' => 'Enable Registration',
+ 'reg_enable_toggle' => 'Enable registration',
+ 'reg_enable_desc' => 'When registration is enabled user will be able to sign themselves up as an application user. Upon registration they are given a single, default user role.',
+ 'reg_default_role' => 'Default user role after registration',
+ 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_email_confirmation' => 'Email Confirmation',
+ 'reg_email_confirmation_toggle' => 'Require email confirmation',
+ 'reg_confirm_email_desc' => 'If domain restriction is used then email confirmation will be required and this option will be ignored.',
+ 'reg_confirm_restrict_domain' => 'Domain Restriction',
+ 'reg_confirm_restrict_domain_desc' => 'Enter a comma separated list of email domains you would like to restrict registration to. Users will be sent an email to confirm their address before being allowed to interact with the application. Note that users will be able to change their email addresses after successful registration.',
+ 'reg_confirm_restrict_domain_placeholder' => 'No restriction set',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Maintenance',
+ 'maint_image_cleanup' => 'Cleanup Images',
+ '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' => 'Also delete images that only exist in old page revisions',
+ 'maint_image_cleanup_run' => 'Run Cleanup',
+ 'maint_image_cleanup_warning' => ':count potentially unused images were found. Are you sure you want to delete these images?',
+ 'maint_image_cleanup_success' => ':count potentially unused images found and deleted!',
+ '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_regen_references' => 'Regenerate References',
+ 'maint_regen_references_desc' => 'This action will rebuild the cross-item reference index within the database. This is usually handled automatically but this action can be useful to index old content or content added via unofficial methods.',
+ 'maint_regen_references_success' => 'Reference index has been regenerated!',
+ 'maint_timeout_command_note' => 'Note: This action can take time to run, which can lead to timeout issues in some web environments. As an alternative, this action be performed using a terminal command.',
+
+ // 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_parent' => 'Parent',
+ '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 from the system, along with any child elements listed below, 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_restore_parent' => 'Restore Parent',
+ '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 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_table_related' => 'Related Item or Detail',
+ 'audit_table_ip' => 'IP Address',
+ 'audit_table_date' => 'Activity Date',
+ 'audit_date_from' => 'Date Range From',
+ 'audit_date_to' => 'Date Range To',
+
+ // Role Settings
+ 'roles' => 'Roles',
+ 'role_user_roles' => 'User Roles',
+ 'roles_index_desc' => 'Roles are used to group users & provide system permission to their members. When a user is a member of multiple roles the privileges granted will stack and the user will inherit all abilities.',
+ 'roles_x_users_assigned' => ':count user assigned|:count users assigned',
+ 'roles_x_permissions_provided' => ':count permission|:count permissions',
+ 'roles_assigned_users' => 'Assigned Users',
+ 'roles_permissions_provided' => 'Provided Permissions',
+ 'role_create' => 'Create New Role',
+ '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_edit' => 'Edit Role',
+ 'role_details' => 'Role Details',
+ 'role_name' => 'Role Name',
+ 'role_desc' => 'Short Description of Role',
+ 'role_mfa_enforced' => 'Requires Multi-Factor Authentication',
+ 'role_external_auth_id' => 'External Authentication IDs',
+ 'role_system' => 'System Permissions',
+ 'role_manage_users' => 'Manage users',
+ 'role_manage_roles' => 'Manage roles & role permissions',
+ 'role_manage_entity_permissions' => 'Manage all book, chapter & page permissions',
+ 'role_manage_own_entity_permissions' => 'Manage permissions on own book, chapter & pages',
+ 'role_manage_page_templates' => 'Manage page templates',
+ 'role_access_api' => 'Access system API',
+ 'role_manage_settings' => 'Manage app settings',
+ 'role_export_content' => 'Export content',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Change page editor',
+ 'role_notifications' => 'Receive & manage notifications',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Asset Permissions',
+ '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' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.',
+ 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.',
+ 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'All',
+ 'role_own' => 'Own',
+ 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to',
+ 'role_save' => 'Save Role',
+ 'role_users' => 'Users in this role',
+ 'role_users_none' => 'No users are currently assigned to this role',
+
+ // Users
+ 'users' => 'Users',
+ 'users_index_desc' => 'Create & manage individual user accounts within the system. User accounts are used for login and attribution of content & activity. Access permissions are primarily role-based but user content ownership, among other factors, may also affect permissions & access.',
+ 'user_profile' => 'User Profile',
+ 'users_add_new' => 'Add New User',
+ 'users_search' => 'Search Users',
+ 'users_latest_activity' => 'Latest Activity',
+ 'users_details' => 'User 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',
+ 'users_role_desc' => 'Select which roles this user will be assigned to. If a user is assigned to multiple roles the permissions from those roles will stack and they will receive all abilities of the assigned roles.',
+ 'users_password' => 'User Password',
+ 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 8 characters long.',
+ 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.',
+ 'users_send_invite_option' => 'Send user invite email',
+ 'users_external_auth_id' => 'External Authentication ID',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ '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_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_edit' => 'Edit User',
+ 'users_edit_profile' => 'Edit Profile',
+ 'users_avatar' => 'User Avatar',
+ 'users_avatar_desc' => 'Select an image to represent this user. This should be approx 256px square.',
+ 'users_preferred_language' => 'Preferred Language',
+ 'users_preferred_language_desc' => 'This option will change the language used for the user-interface of the application. This will not affect any user-created content.',
+ 'users_social_accounts' => 'Social Accounts',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not revoke previously authorized access. Revoke access from your profile settings on the connected social account.',
+ 'users_social_connect' => 'Connect Account',
+ 'users_social_disconnect' => 'Disconnect Account',
+ 'users_social_status_connected' => 'Connected',
+ 'users_social_status_disconnected' => 'Disconnected',
+ 'users_social_connected' => ':socialAccount account was successfully attached to your profile.',
+ 'users_social_disconnected' => ':socialAccount account was successfully disconnected from your profile.',
+ 'users_api_tokens' => 'API Tokens',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'No API tokens have been created for this user',
+ 'users_api_tokens_create' => 'Create Token',
+ 'users_api_tokens_expires' => 'Expires',
+ 'users_api_tokens_docs' => 'API Documentation',
+ 'users_mfa' => 'Multi-Factor Authentication',
+ 'users_mfa_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'users_mfa_x_methods' => ':count method configured|:count methods configured',
+ 'users_mfa_configure' => 'Configure Methods',
+
+ // API Tokens
+ 'user_api_token_create' => 'Create API Token',
+ 'user_api_token_name' => 'Name',
+ 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
+ 'user_api_token_expiry' => 'Expiry Date',
+ 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
+ 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
+ 'user_api_token' => 'API Token',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
+ 'user_api_token_secret' => 'Token Secret',
+ 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
+ 'user_api_token_created' => 'Token created :timeAgo',
+ 'user_api_token_updated' => 'Token updated :timeAgo',
+ 'user_api_token_delete' => 'Delete Token',
+ 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
+ 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks are a way to send data to external URLs when certain actions and events occur within the system which allows event-based integration with external platforms such as messaging or notification systems.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'Create New Webhook',
+ 'webhooks_none_created' => 'No webhooks have yet been created.',
+ 'webhooks_edit' => 'Edit Webhook',
+ 'webhooks_save' => 'Save Webhook',
+ 'webhooks_details' => 'Webhook Details',
+ 'webhooks_details_desc' => 'Provide a user friendly name and a POST endpoint as a location for the webhook data to be sent to.',
+ 'webhooks_events' => 'Webhook Events',
+ 'webhooks_events_desc' => 'Select all the events that should trigger this webhook to be called.',
+ 'webhooks_events_warning' => 'Keep in mind that these events will be triggered for all selected events, even if custom permissions are applied. Ensure that use of this webhook won\'t expose confidential content.',
+ 'webhooks_events_all' => 'All system events',
+ 'webhooks_name' => 'Webhook Name',
+ 'webhooks_timeout' => 'Webhook Request Timeout (Seconds)',
+ 'webhooks_endpoint' => 'Webhook Endpoint',
+ 'webhooks_active' => 'Webhook Active',
+ 'webhook_events_table_header' => 'Events',
+ 'webhooks_delete' => 'Delete Webhook',
+ 'webhooks_delete_warning' => 'This will fully delete this webhook, with the name \':webhookName\', from the system.',
+ 'webhooks_delete_confirm' => 'Are you sure you want to delete this webhook?',
+ 'webhooks_format_example' => 'Webhook Format Example',
+ 'webhooks_format_example_desc' => 'Webhook data is sent as a POST request to the configured endpoint as JSON following the format below. The "related_item" and "url" properties are optional and will depend on the type of event triggered.',
+ 'webhooks_status' => 'Webhook Status',
+ 'webhooks_last_called' => 'Last Called:',
+ 'webhooks_last_errored' => 'Last Errored:',
+ 'webhooks_last_error_message' => 'Last Error Message:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/bn/validation.php b/lang/bn/validation.php
new file mode 100644
index 00000000000..ff028525df3
--- /dev/null
+++ b/lang/bn/validation.php
@@ -0,0 +1,123 @@
+ '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.',
+ 'backup_codes' => 'The provided code is not valid or has already been used.',
+ 'before' => 'The :attribute must be a date before :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.',
+ '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',
+ 'file' => 'The :attribute must be provided as a valid file.',
+ 'filled' => 'The :attribute field is required.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ 'array' => 'The :attribute may not have more than :max items.',
+ ],
+ 'mimes' => 'The :attribute must be a file of type: :values.',
+ 'min' => [
+ 'numeric' => 'The :attribute must be at least :min.',
+ 'file' => 'The :attribute must be at least :min kilobytes.',
+ 'string' => 'The :attribute must be at least :min characters.',
+ 'array' => 'The :attribute must have at least :min items.',
+ ],
+ 'not_in' => 'The selected :attribute is invalid.',
+ 'not_regex' => 'The :attribute format is invalid.',
+ 'numeric' => 'The :attribute must be a number.',
+ 'regex' => 'The :attribute format is invalid.',
+ 'required' => 'The :attribute field is required.',
+ 'required_if' => 'The :attribute field is required when :other is :value.',
+ 'required_with' => 'The :attribute field is required when :values is present.',
+ 'required_with_all' => 'The :attribute field is required when :values is present.',
+ 'required_without' => 'The :attribute field is required when :values is not present.',
+ 'required_without_all' => 'The :attribute field is required when none of :values are present.',
+ 'same' => 'The :attribute and :other must match.',
+ 'safe_url' => 'The provided link may not be safe.',
+ 'size' => [
+ 'numeric' => 'The :attribute must be :size.',
+ 'file' => 'The :attribute must be :size kilobytes.',
+ 'string' => 'The :attribute must be :size characters.',
+ 'array' => 'The :attribute must contain :size items.',
+ ],
+ 'string' => 'The :attribute must be a string.',
+ 'timezone' => 'The :attribute must be a valid zone.',
+ 'totp' => 'The provided code is not valid or has expired.',
+ 'unique' => 'The :attribute has already been taken.',
+ 'url' => 'The :attribute format is invalid.',
+ 'uploaded' => 'The file could not be uploaded. The server may not accept files of this size.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Password confirmation required',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/bs/activities.php b/lang/bs/activities.php
new file mode 100644
index 00000000000..e7308770a29
--- /dev/null
+++ b/lang/bs/activities.php
@@ -0,0 +1,140 @@
+ 'je kreirao/la stranicu',
+ 'page_create_notification' => 'Page successfully created',
+ 'page_update' => 'je ažurirao/la stranicu',
+ 'page_update_notification' => 'Page successfully updated',
+ 'page_delete' => 'je izbrisao/la stranicu',
+ 'page_delete_notification' => 'Page successfully deleted',
+ 'page_restore' => 'je vratio/la stranicu',
+ 'page_restore_notification' => 'Page successfully restored',
+ 'page_move' => 'je premjestio/la stranicu',
+ 'page_move_notification' => 'Page successfully moved',
+
+ // Chapters
+ 'chapter_create' => 'je kreirao/la poglavlje',
+ 'chapter_create_notification' => 'Chapter successfully created',
+ 'chapter_update' => 'je ažurirao/la poglavlje',
+ 'chapter_update_notification' => 'Chapter successfully updated',
+ 'chapter_delete' => 'je izbrisao/la poglavlje',
+ 'chapter_delete_notification' => 'Chapter successfully deleted',
+ 'chapter_move' => 'je premjestio/la poglavlje',
+ 'chapter_move_notification' => 'Chapter successfully moved',
+
+ // Books
+ 'book_create' => 'je kreirao/la knjigu',
+ 'book_create_notification' => 'Book successfully created',
+ 'book_create_from_chapter' => 'converted chapter to book',
+ 'book_create_from_chapter_notification' => 'Chapter successfully converted to a book',
+ 'book_update' => 'je ažurirao/la knjigu',
+ 'book_update_notification' => 'Book successfully updated',
+ 'book_delete' => 'je izbrisao/la knjigu',
+ 'book_delete_notification' => 'Book successfully deleted',
+ 'book_sort' => 'je sortirao/la knjigu',
+ 'book_sort_notification' => 'Book successfully re-sorted',
+
+ // Bookshelves
+ 'bookshelf_create' => 'created shelf',
+ 'bookshelf_create_notification' => 'Shelf successfully created',
+ 'bookshelf_create_from_book' => 'converted book to shelf',
+ 'bookshelf_create_from_book_notification' => 'Book successfully converted to a shelf',
+ 'bookshelf_update' => 'updated shelf',
+ 'bookshelf_update_notification' => 'Shelf successfully updated',
+ 'bookshelf_delete' => 'deleted shelf',
+ 'bookshelf_delete_notification' => 'Shelf successfully deleted',
+
+ // Revisions
+ 'revision_restore' => 'restored revision',
+ 'revision_delete' => 'deleted revision',
+ 'revision_delete_notification' => 'Revision successfully deleted',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" je dodan u tvoje favorite',
+ 'favourite_remove_notification' => '":name" je uklonjen iz tvojih favorita',
+
+ // Watching
+ 'watch_update_level_notification' => 'Watch preferences successfully updated',
+
+ // Auth
+ 'auth_login' => 'logged in',
+ 'auth_register' => 'registered as new user',
+ 'auth_password_reset_request' => 'requested user password reset',
+ 'auth_password_reset_update' => 'reset user password',
+ 'mfa_setup_method' => 'configured MFA method',
+ 'mfa_setup_method_notification' => 'Multi-factor method successfully configured',
+ 'mfa_remove_method' => 'removed MFA method',
+ 'mfa_remove_method_notification' => 'Multi-factor method successfully removed',
+
+ // Settings
+ 'settings_update' => 'updated settings',
+ 'settings_update_notification' => 'Settings successfully updated',
+ 'maintenance_action_run' => 'ran maintenance action',
+
+ // Webhooks
+ 'webhook_create' => 'created webhook',
+ 'webhook_create_notification' => 'Webhook successfully created',
+ 'webhook_update' => 'updated webhook',
+ 'webhook_update_notification' => 'Webhook successfully updated',
+ 'webhook_delete' => 'deleted webhook',
+ 'webhook_delete_notification' => 'Webhook successfully deleted',
+
+ // Imports
+ 'import_create' => 'created import',
+ 'import_create_notification' => 'Import successfully uploaded',
+ 'import_run' => 'updated import',
+ 'import_run_notification' => 'Content successfully imported',
+ 'import_delete' => 'deleted import',
+ 'import_delete_notification' => 'Import successfully deleted',
+
+ // Users
+ 'user_create' => 'created user',
+ 'user_create_notification' => 'User successfully created',
+ 'user_update' => 'updated user',
+ 'user_update_notification' => 'User successfully updated',
+ 'user_delete' => 'deleted user',
+ 'user_delete_notification' => 'User successfully removed',
+
+ // API Tokens
+ 'api_token_create' => 'created API token',
+ 'api_token_create_notification' => 'API token successfully created',
+ 'api_token_update' => 'updated API token',
+ 'api_token_update_notification' => 'API token successfully updated',
+ 'api_token_delete' => 'deleted API token',
+ 'api_token_delete_notification' => 'API token successfully deleted',
+
+ // Roles
+ 'role_create' => 'created role',
+ 'role_create_notification' => 'Role successfully created',
+ 'role_update' => 'updated role',
+ 'role_update_notification' => 'Role successfully updated',
+ 'role_delete' => 'deleted role',
+ 'role_delete_notification' => 'Role successfully deleted',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'emptied recycle bin',
+ 'recycle_bin_restore' => 'restored from recycle bin',
+ 'recycle_bin_destroy' => 'removed from recycle bin',
+
+ // Comments
+ 'commented_on' => 'je komentarisao/la na',
+ 'comment_create' => 'added comment',
+ 'comment_update' => 'updated comment',
+ 'comment_delete' => 'deleted comment',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'je ažurirao/la dozvole',
+];
diff --git a/lang/bs/auth.php b/lang/bs/auth.php
new file mode 100644
index 00000000000..a8d0da78eb9
--- /dev/null
+++ b/lang/bs/auth.php
@@ -0,0 +1,117 @@
+ 'Ovi pristupni podaci se ne slažu sa našom evidencijom.',
+ 'throttle' => 'Preveliki broj pokušaja prijave. Molimo vas da pokušate ponovo za :seconds sekundi.',
+
+ // Login & Register
+ 'sign_up' => 'Registruj se',
+ 'log_in' => 'Prijavi se',
+ 'log_in_with' => 'Prijavi se sa :socialDriver',
+ 'sign_up_with' => 'Registruj se sa :socialDriver',
+ 'logout' => 'Odjavi se',
+
+ 'name' => 'Ime',
+ 'username' => 'Korisničko ime',
+ 'email' => 'E-mail',
+ 'password' => 'Lozinka',
+ 'password_confirm' => 'Potvrdi lozinku',
+ 'password_hint' => 'Must be at least 8 characters',
+ 'forgot_password' => 'Zaboravljena lozinka?',
+ 'remember_me' => 'Zapamti me',
+ 'ldap_email_hint' => 'Unesite e-mail koji će se koristiti za ovaj račun.',
+ 'create_account' => 'Napravi račun',
+ 'already_have_account' => 'Već imate račun?',
+ 'dont_have_account' => 'Nemate korisnički račun?',
+ 'social_login' => 'Prijava preko društvene mreže',
+ 'social_registration' => 'Registracija pomoću društvene mreže',
+ 'social_registration_text' => 'Registruj i prijavi se koristeći drugi servis.',
+
+ 'register_thanks' => 'Hvala na registraciji!',
+ 'register_confirm' => 'Provjerite vašu e-mail adresu i pritisnite dugme za potvrdu da bi dobili pristup :appName.',
+ 'registrations_disabled' => 'Registracije su trenutno onemogućene',
+ 'registration_email_domain_invalid' => 'Ta e-mail domena nema pristup ovoj aplikaciji',
+ 'register_success' => 'Hvala na registraciji! Sada ste registrovani i prijavljeni.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Attempting Login',
+ 'auto_init_starting_desc' => 'We\'re contacting your authentication system to start the login process. If there\'s no progress after 5 seconds you can try clicking the link below.',
+ 'auto_init_start_link' => 'Proceed with authentication',
+
+ // Password Reset
+ 'reset_password' => 'Resetuj Lozinku',
+ 'reset_password_send_instructions' => 'Unesite vašu e-mail adresu ispod i na nju ćemo vam poslati e-mail sa linkom za promjenu lozinke.',
+ 'reset_password_send_button' => 'Pošalji link za promjenu',
+ 'reset_password_sent' => 'Link za promjenu lozinke će biti poslan na :email ako ta adresa postoji u sistemu.',
+ 'reset_password_success' => 'Vaša lozinka je uspješno promijenjena.',
+ 'email_reset_subject' => 'Resetujte vašu lozinku od :appName',
+ 'email_reset_text' => 'Primate ovaj e-mail jer smo dobili zahtjev za promjenu lozinke za vaš račun.',
+ 'email_reset_not_requested' => 'Ako niste zahtijevali promjenu lozinke ne trebate ništa više uraditi.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Potvrdite vaš e-mail na :appName',
+ 'email_confirm_greeting' => 'Hvala na pristupanju :appName!',
+ 'email_confirm_text' => 'Potvrdite vašu e-mail adresu pritiskom na dugme ispod:',
+ 'email_confirm_action' => 'Potvrdi e-mail',
+ 'email_confirm_send_error' => 'Potvrda e-maila je obavezna ali sistem nije mogao poslati e-mail. Kontaktirajte administratora da biste bili sigurni da je e-mail postavljen ispravno.',
+ 'email_confirm_success' => 'Your email has been confirmed! You should now be able to login using this email address.',
+ 'email_confirm_resent' => 'E-mail za potvrdu je ponovno poslan. Provjerite vaš e-mail.',
+ 'email_confirm_thanks' => 'Thanks for confirming!',
+ 'email_confirm_thanks_desc' => 'Please wait a moment while your confirmation is handled. If you are not redirected after 3 seconds press the "Continue" link below to proceed.',
+
+ 'email_not_confirmed' => 'E-mail adresa nije potvrđena',
+ 'email_not_confirmed_text' => 'Vaša e-mail adresa nije još potvrđena.',
+ 'email_not_confirmed_click_link' => 'Kliknite na link u e-mailu koji vam je poslan nakon što ste se registrovali.',
+ 'email_not_confirmed_resend' => 'Ako ne možete naći e-mail možete ponovno poslati e-mail za potvrdu tako što ćete ispuniti formu ispod.',
+ 'email_not_confirmed_resend_button' => 'Ponovno pošalji e-mail za potvrdu',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Pozvani ste da se pridružite :appName!',
+ 'user_invite_email_greeting' => 'Račun je napravljen za vas na :appName.',
+ 'user_invite_email_text' => 'Pritisnite dugme ispod da niste postavili lozinku vašeg računa i tako dobili pristup:',
+ 'user_invite_email_action' => 'Postavi lozinku računa',
+ 'user_invite_page_welcome' => 'Dobrodošli na :appName!',
+ 'user_invite_page_text' => 'Da biste završili vaš račun i dobili pristup morate postaviti lozinku koju ćete koristiti da se prijavite na :appName tokom budućih posjeta.',
+ 'user_invite_page_confirm_button' => 'Potvrdi lozinku',
+ 'user_invite_success_login' => 'Password set, you should now be able to login using your set password to access :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Setup Multi-Factor Authentication',
+ 'mfa_setup_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'mfa_setup_configured' => 'Already configured',
+ 'mfa_setup_reconfigure' => 'Reconfigure',
+ 'mfa_setup_remove_confirmation' => 'Are you sure you want to remove this multi-factor authentication method?',
+ 'mfa_setup_action' => 'Setup',
+ 'mfa_backup_codes_usage_limit_warning' => 'You have less than 5 backup codes remaining, Please generate and store a new set before you run out of codes to prevent being locked out of your account.',
+ 'mfa_option_totp_title' => 'Mobile App',
+ 'mfa_option_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Backup Codes',
+ 'mfa_option_backup_codes_desc' => 'Generates a set of one-time-use backup codes which you\'ll enter on login to verify your identity. Make sure to store these in a safe & secure place.',
+ 'mfa_gen_confirm_and_enable' => 'Confirm and Enable',
+ 'mfa_gen_backup_codes_title' => 'Backup Codes Setup',
+ 'mfa_gen_backup_codes_desc' => 'Store the below list of codes in a safe place. When accessing the system you\'ll be able to use one of the codes as a second authentication mechanism.',
+ 'mfa_gen_backup_codes_download' => 'Download Codes',
+ 'mfa_gen_backup_codes_usage_warning' => 'Each code can only be used once',
+ 'mfa_gen_totp_title' => 'Mobile App Setup',
+ 'mfa_gen_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Scan the QR code below using your preferred authentication app to get started.',
+ 'mfa_gen_totp_verify_setup' => 'Verify Setup',
+ 'mfa_gen_totp_verify_setup_desc' => 'Verify that all is working by entering a code, generated within your authentication app, in the input box below:',
+ 'mfa_gen_totp_provide_code_here' => 'Provide your app generated code here',
+ 'mfa_verify_access' => 'Verify Access',
+ 'mfa_verify_access_desc' => 'Your user account requires you to confirm your identity via an additional level of verification before you\'re granted access. Verify using one of your configured methods to continue.',
+ 'mfa_verify_no_methods' => 'No Methods Configured',
+ 'mfa_verify_no_methods_desc' => 'No multi-factor authentication methods could be found for your account. You\'ll need to set up at least one method before you gain access.',
+ 'mfa_verify_use_totp' => 'Verify using a mobile app',
+ 'mfa_verify_use_backup_codes' => 'Verify using a backup code',
+ 'mfa_verify_backup_code' => 'Backup Code',
+ 'mfa_verify_backup_code_desc' => 'Enter one of your remaining backup codes below:',
+ 'mfa_verify_backup_code_enter_here' => 'Enter backup code here',
+ 'mfa_verify_totp_desc' => 'Enter the code, generated using your mobile app, below:',
+ 'mfa_setup_login_notification' => 'Multi-factor method configured, Please now login again using the configured method.',
+];
diff --git a/lang/bs/common.php b/lang/bs/common.php
new file mode 100644
index 00000000000..c2f1fda0d1a
--- /dev/null
+++ b/lang/bs/common.php
@@ -0,0 +1,115 @@
+ 'Otkaži',
+ 'close' => 'Close',
+ 'confirm' => 'Potvrdi',
+ 'back' => 'Nazad',
+ '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' => 'This image should be approximately 440x250px although it will be flexibly scaled & cropped to fit the user interface in different scenarios as required, so actual dimensions for display will differ.',
+
+ // Actions
+ 'actions' => 'Akcije',
+ 'view' => 'Prikaz',
+ 'view_all' => 'Prikaži sve',
+ 'new' => 'New',
+ 'create' => 'Kreiraj',
+ 'update' => 'Ažuriraj',
+ 'edit' => 'Uredi',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Sortiraj',
+ 'move' => 'Pomjeri',
+ 'copy' => 'Kopiraj',
+ 'reply' => 'Odgovori',
+ 'delete' => 'Izbriši',
+ 'delete_confirm' => 'Potvrdi brisanje',
+ 'search' => 'Traži',
+ 'search_clear' => 'Očisti pretragu',
+ 'reset' => 'Resetuj',
+ 'remove' => 'Ukloni',
+ 'add' => 'Dodaj',
+ 'configure' => 'Configure',
+ 'manage' => 'Manage',
+ 'fullscreen' => 'Prikaz preko čitavog ekrana',
+ 'favourite' => 'Favorit',
+ 'unfavourite' => 'Ukloni favorit',
+ 'next' => 'Sljedeće',
+ 'previous' => 'Prethodno',
+ 'filter_active' => 'Active Filter:',
+ 'filter_clear' => 'Clear Filter',
+ 'download' => 'Download',
+ 'open_in_tab' => 'Open in Tab',
+ 'open' => 'Open',
+
+ // Sort Options
+ 'sort_options' => 'Opcije sortiranja',
+ 'sort_direction_toggle' => 'Prebacivanje smjera sortiranja',
+ 'sort_ascending' => 'Sortiraj uzlazno',
+ 'sort_descending' => 'Sortiraj silazno',
+ 'sort_name' => 'Ime',
+ 'sort_default' => 'Početne postavke',
+ 'sort_created_at' => 'Datum kreiranja',
+ 'sort_updated_at' => 'Datum ažuriranja',
+
+ // Misc
+ 'deleted_user' => 'Obrisani korisnik',
+ 'no_activity' => 'Nema aktivnosti za prikazivanje',
+ 'no_items' => 'Nema dostupnih stavki',
+ 'back_to_top' => 'Povratak na vrh',
+ 'skip_to_main_content' => 'Idi odmah na glavni sadržaj',
+ 'toggle_details' => 'Vidi detalje',
+ 'toggle_thumbnails' => 'Vidi prikaze slika',
+ 'details' => 'Detalji',
+ 'grid_view' => 'Prikaz rešetke',
+ 'list_view' => 'Prikaz liste',
+ 'default' => 'Početne postavke',
+ 'breadcrumb' => 'Navigacijske stavke',
+ 'status' => 'Status',
+ 'status_active' => 'Active',
+ 'status_inactive' => 'Inactive',
+ 'never' => 'Never',
+ 'none' => 'None',
+
+ // Header
+ 'homepage' => 'Homepage',
+ 'header_menu_expand' => 'Otvori meni u zaglavlju',
+ 'profile_menu' => 'Meni profila',
+ 'view_profile' => 'Pogledaj profil',
+ 'edit_profile' => 'Izmjeni profil',
+ 'dark_mode' => 'Tamni način rada',
+ 'light_mode' => 'Svijetli način rada',
+ 'global_search' => 'Global Search',
+
+ // Layout tabs
+ 'tab_info' => 'Informacije',
+ 'tab_info_label' => 'Kartica: Prikaži dodatnu informaciju',
+ 'tab_content' => 'Sadržaj',
+ 'tab_content_label' => 'Kartica: Prikaži glavni sadržaj',
+
+ // Email Content
+ 'email_action_help' => 'Ukoliko imate poteškoća sa pritiskom na ":actionText" dugme, kopirajte i zaljepite URL koji se nalazi ispod u vaš web pretraživač:',
+ 'email_rights' => 'Sva prava pridržana',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Pravila o privatnosti',
+ 'terms_of_service' => 'Uslovi korištenja',
+
+ // OpenSearch
+ 'opensearch_description' => 'Search :appName',
+];
diff --git a/lang/bs/components.php b/lang/bs/components.php
new file mode 100644
index 00000000000..6441ffed1b2
--- /dev/null
+++ b/lang/bs/components.php
@@ -0,0 +1,46 @@
+ 'Biraj sliku',
+ 'image_list' => 'Image List',
+ 'image_details' => 'Image Details',
+ 'image_upload' => 'Upload Image',
+ 'image_intro' => 'Here you can select and manage images that have been previously uploaded to the system.',
+ 'image_intro_upload' => 'Upload a new image by dragging an image file into this window, or by using the "Upload Image" button above.',
+ 'image_all' => 'Sve',
+ 'image_all_title' => 'Pogledaj sve slike',
+ 'image_book_title' => 'Pogledaj slike prenesene u ovu knjigu',
+ 'image_page_title' => 'Pogledaj slike prenesene na ovu stranicu',
+ 'image_search_hint' => 'Traži po nazivu slike',
+ 'image_uploaded' => 'Preneseno :uploadedDate',
+ 'image_uploaded_by' => 'Uploaded by :userName',
+ 'image_uploaded_to' => 'Uploaded to :pageLink',
+ 'image_updated' => 'Updated :updateDate',
+ 'image_load_more' => 'Učitaj još',
+ 'image_image_name' => 'Naziv slike',
+ 'image_delete_used' => 'Ova slika se koristi na stranicama prikazanim ispod.',
+ 'image_delete_confirm_text' => 'Jeste li sigurni da želite obrisati ovu sliku?',
+ 'image_select_image' => 'Odaberi sliku',
+ 'image_dropzone' => 'Ostavi slike ili pritisnite ovdje da ih prenesete',
+ 'image_dropzone_drop' => 'Drop images here to upload',
+ 'images_deleted' => 'Slike su izbrisane',
+ 'image_preview' => 'Pregled Slike',
+ 'image_upload_success' => 'Slika uspješno učitana',
+ 'image_update_success' => 'Detalji slike uspješno ažurirani',
+ 'image_delete_success' => 'Slika uspješno izbrisana',
+ 'image_replace' => 'Replace Image',
+ 'image_replace_success' => 'Image file successfully updated',
+ 'image_rebuild_thumbs' => 'Regenerate Size Variations',
+ 'image_rebuild_thumbs_success' => 'Image size variations successfully rebuilt!',
+
+ // Code Editor
+ 'code_editor' => 'Uredi Kod',
+ 'code_language' => 'Jezik koda',
+ 'code_content' => 'Sadržaj Koda',
+ 'code_session_history' => 'Historija Sesije',
+ 'code_save' => 'Snimi Kod',
+];
diff --git a/lang/bs/editor.php b/lang/bs/editor.php
new file mode 100644
index 00000000000..0d250e9a7bd
--- /dev/null
+++ b/lang/bs/editor.php
@@ -0,0 +1,182 @@
+ 'General',
+ 'advanced' => 'Advanced',
+ 'none' => 'None',
+ 'cancel' => 'Cancel',
+ 'save' => 'Save',
+ 'close' => 'Close',
+ 'apply' => 'Apply',
+ 'undo' => 'Undo',
+ 'redo' => 'Redo',
+ 'left' => 'Left',
+ 'center' => 'Center',
+ 'right' => 'Right',
+ 'top' => 'Top',
+ 'middle' => 'Middle',
+ 'bottom' => 'Bottom',
+ 'width' => 'Width',
+ 'height' => 'Height',
+ 'More' => 'More',
+ 'select' => 'Select...',
+
+ // Toolbar
+ 'formats' => 'Formats',
+ 'header_large' => 'Large Header',
+ 'header_medium' => 'Medium Header',
+ 'header_small' => 'Small Header',
+ 'header_tiny' => 'Tiny Header',
+ 'paragraph' => 'Paragraph',
+ 'blockquote' => 'Blockquote',
+ 'inline_code' => 'Inline code',
+ 'callouts' => 'Callouts',
+ 'callout_information' => 'Information',
+ 'callout_success' => 'Success',
+ 'callout_warning' => 'Warning',
+ 'callout_danger' => 'Danger',
+ 'bold' => 'Bold',
+ 'italic' => 'Italic',
+ 'underline' => 'Underline',
+ 'strikethrough' => 'Strikethrough',
+ 'superscript' => 'Superscript',
+ 'subscript' => 'Subscript',
+ 'text_color' => 'Text color',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Custom color',
+ 'remove_color' => 'Remove color',
+ 'background_color' => 'Background color',
+ 'align_left' => 'Align left',
+ 'align_center' => 'Align center',
+ 'align_right' => 'Align right',
+ 'align_justify' => 'Justify',
+ 'list_bullet' => 'Bullet list',
+ 'list_numbered' => 'Numbered list',
+ 'list_task' => 'Task list',
+ 'indent_increase' => 'Increase indent',
+ 'indent_decrease' => 'Decrease indent',
+ 'table' => 'Table',
+ 'insert_image' => 'Insert image',
+ 'insert_image_title' => 'Insert/Edit Image',
+ 'insert_link' => 'Insert/edit link',
+ 'insert_link_title' => 'Insert/Edit Link',
+ 'insert_horizontal_line' => 'Insert horizontal line',
+ 'insert_code_block' => 'Insert code block',
+ 'edit_code_block' => 'Edit code block',
+ 'insert_drawing' => 'Insert/edit drawing',
+ 'drawing_manager' => 'Drawing manager',
+ 'insert_media' => 'Insert/edit media',
+ 'insert_media_title' => 'Insert/Edit Media',
+ 'clear_formatting' => 'Clear formatting',
+ 'source_code' => 'Source code',
+ 'source_code_title' => 'Source Code',
+ 'fullscreen' => 'Fullscreen',
+ 'image_options' => 'Image options',
+
+ // Tables
+ 'table_properties' => 'Table properties',
+ 'table_properties_title' => 'Table Properties',
+ 'delete_table' => 'Delete table',
+ 'table_clear_formatting' => 'Clear table formatting',
+ 'resize_to_contents' => 'Resize to contents',
+ 'row_header' => 'Row header',
+ 'insert_row_before' => 'Insert row before',
+ 'insert_row_after' => 'Insert row after',
+ 'delete_row' => 'Delete row',
+ 'insert_column_before' => 'Insert column before',
+ 'insert_column_after' => 'Insert column after',
+ 'delete_column' => 'Delete column',
+ 'table_cell' => 'Cell',
+ 'table_row' => 'Row',
+ 'table_column' => 'Column',
+ 'cell_properties' => 'Cell properties',
+ 'cell_properties_title' => 'Cell Properties',
+ 'cell_type' => 'Cell type',
+ 'cell_type_cell' => 'Cell',
+ 'cell_scope' => 'Scope',
+ 'cell_type_header' => 'Header cell',
+ 'merge_cells' => 'Merge cells',
+ 'split_cell' => 'Split cell',
+ 'table_row_group' => 'Row Group',
+ 'table_column_group' => 'Column Group',
+ 'horizontal_align' => 'Horizontal align',
+ 'vertical_align' => 'Vertical align',
+ 'border_width' => 'Border width',
+ 'border_style' => 'Border style',
+ 'border_color' => 'Border color',
+ 'row_properties' => 'Row properties',
+ 'row_properties_title' => 'Row Properties',
+ 'cut_row' => 'Cut row',
+ 'copy_row' => 'Copy row',
+ 'paste_row_before' => 'Paste row before',
+ 'paste_row_after' => 'Paste row after',
+ 'row_type' => 'Row type',
+ 'row_type_header' => 'Header',
+ 'row_type_body' => 'Body',
+ 'row_type_footer' => 'Footer',
+ 'alignment' => 'Alignment',
+ 'cut_column' => 'Cut column',
+ 'copy_column' => 'Copy column',
+ 'paste_column_before' => 'Paste column before',
+ 'paste_column_after' => 'Paste column after',
+ 'cell_padding' => 'Cell padding',
+ 'cell_spacing' => 'Cell spacing',
+ 'caption' => 'Caption',
+ 'show_caption' => 'Show caption',
+ 'constrain' => 'Constrain proportions',
+ 'cell_border_solid' => 'Solid',
+ 'cell_border_dotted' => 'Dotted',
+ 'cell_border_dashed' => 'Dashed',
+ 'cell_border_double' => 'Double',
+ 'cell_border_groove' => 'Groove',
+ 'cell_border_ridge' => 'Ridge',
+ 'cell_border_inset' => 'Inset',
+ 'cell_border_outset' => 'Outset',
+ 'cell_border_none' => 'None',
+ 'cell_border_hidden' => 'Hidden',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Source',
+ 'alt_desc' => 'Alternative description',
+ 'embed' => 'Embed',
+ 'paste_embed' => 'Paste your embed code below:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Text to display',
+ 'title' => 'Title',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Open link',
+ 'open_link_in' => 'Open link in...',
+ 'open_link_current' => 'Current window',
+ 'open_link_new' => 'New window',
+ 'remove_link' => 'Remove link',
+ 'insert_collapsible' => 'Insert collapsible block',
+ 'collapsible_unwrap' => 'Unwrap',
+ 'edit_label' => 'Edit label',
+ 'toggle_open_closed' => 'Toggle open/closed',
+ 'collapsible_edit' => 'Edit collapsible block',
+ 'toggle_label' => 'Toggle label',
+
+ // About view
+ 'about' => 'About the editor',
+ 'about_title' => 'About the WYSIWYG Editor',
+ 'editor_license' => 'Editor License & Copyright',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'This editor is built using :tinyLink which is provided under the MIT license.',
+ 'editor_tiny_license_link' => 'The copyright and license details of TinyMCE can be found here.',
+ 'save_continue' => 'Save Page & Continue',
+ 'callouts_cycle' => '(Keep pressing to toggle through types)',
+ 'link_selector' => 'Link to content',
+ 'shortcuts' => 'Shortcuts',
+ 'shortcut' => 'Shortcut',
+ 'shortcuts_intro' => 'The following shortcuts are available in the editor:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Description',
+];
diff --git a/lang/bs/entities.php b/lang/bs/entities.php
new file mode 100644
index 00000000000..f671e1b4527
--- /dev/null
+++ b/lang/bs/entities.php
@@ -0,0 +1,476 @@
+ 'Nedavno napravljen',
+ 'recently_created_pages' => 'Nedavno napravljene stranice',
+ 'recently_updated_pages' => 'Nedavno ažurirane stranice',
+ 'recently_created_chapters' => 'Nedavno napravljena poglavlja',
+ 'recently_created_books' => 'Nedavno napravljene knjige',
+ 'recently_created_shelves' => 'Nedavno napravljene police',
+ 'recently_update' => 'Nedavno ažurirana',
+ 'recently_viewed' => 'Nedavno pogledana',
+ 'recent_activity' => 'Nedavna aktivnost',
+ 'create_now' => 'Napravi jednu sada',
+ 'revisions' => 'Promjene',
+ 'meta_revision' => 'Promjena #:revisionCount',
+ 'meta_created' => 'Napravljena :timeLength',
+ 'meta_created_name' => 'Napravljena :timeLength od :user',
+ 'meta_updated' => 'Ažurirana :timeLength',
+ 'meta_updated_name' => 'Ažurirana :timeLength od :user',
+ 'meta_owned_name' => 'Vlasnik je :user',
+ 'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
+ 'entity_select' => 'Odaberi entitet',
+ 'entity_select_lack_permission' => 'You don\'t have the required permissions to select this item',
+ 'images' => 'Slike',
+ 'my_recent_drafts' => 'Moje nedavne skice',
+ 'my_recently_viewed' => 'Moji nedavni pregledi',
+ 'my_most_viewed_favourites' => 'My Most Viewed Favourites',
+ 'my_favourites' => 'My Favourites',
+ 'no_pages_viewed' => 'Niste pogledali nijednu stranicu',
+ 'no_pages_recently_created' => 'Nijedna stranica nije napravljena nedavno',
+ 'no_pages_recently_updated' => 'Niijedna stranica nije ažurirana nedavno',
+ 'export' => 'Izvezi',
+ 'export_html' => 'Sadržani web fajl',
+ 'export_pdf' => 'PDF fajl',
+ 'export_text' => 'Plain Text fajl',
+ 'export_md' => 'Markdown File',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Dozvole',
+ 'permissions_desc' => 'Set permissions here to override the default permissions provided by user roles.',
+ 'permissions_book_cascade' => 'Permissions set on books will automatically cascade to child chapters and pages, unless they have their own permissions defined.',
+ 'permissions_chapter_cascade' => 'Permissions set on chapters will automatically cascade to child pages, unless they have their own permissions defined.',
+ 'permissions_save' => 'Snimi dozvole',
+ 'permissions_owner' => 'Vlasnik',
+ 'permissions_role_everyone_else' => 'Everyone Else',
+ 'permissions_role_everyone_else_desc' => 'Set permissions for all roles not specifically overridden.',
+ 'permissions_role_override' => 'Override permissions for role',
+ 'permissions_inherit_defaults' => 'Inherit defaults',
+
+ // Search
+ 'search_results' => 'Rezultati pretrage',
+ 'search_total_results_found' => ':count rezultata je nađeno|:count ukupno rezultata je nađeno',
+ 'search_clear' => 'Očisti pretragu',
+ 'search_no_pages' => 'Nijedna stranica nije nađena',
+ 'search_for_term' => 'Traži :term',
+ 'search_more' => 'Više rezultata',
+ 'search_advanced' => 'Napredna pretraga',
+ 'search_terms' => 'Pojmovi za pretragu',
+ 'search_content_type' => 'Vrsta sadržaja',
+ 'search_exact_matches' => 'Tačna podudaranja',
+ 'search_tags' => 'Pretraga oznaka',
+ 'search_options' => 'Opcije',
+ 'search_viewed_by_me' => 'Ja sam pogledao/la',
+ 'search_not_viewed_by_me' => 'Nisam pogledao/la',
+ 'search_permissions_set' => 'Dozvole',
+ 'search_created_by_me' => 'Ja sam napravio/la',
+ 'search_updated_by_me' => 'Ja sam ažurirao/la',
+ 'search_owned_by_me' => 'Owned by me',
+ 'search_date_options' => 'Opcije datuma',
+ 'search_updated_before' => 'Ažurirano prije',
+ 'search_updated_after' => 'Ažurirano nakon',
+ 'search_created_before' => 'Kreirano prije',
+ 'search_created_after' => 'Kreirano nakon',
+ 'search_set_date' => 'Postavi datum',
+ 'search_update' => 'Ažuriraj pretragu',
+
+ // Shelves
+ 'shelf' => 'Polica',
+ 'shelves' => 'Police',
+ 'x_shelves' => ':count Polica|:count Police',
+ 'shelves_empty' => 'Niti jedna polica nije kreirana',
+ 'shelves_create' => 'Kreiraj novu policu',
+ 'shelves_popular' => 'Popularne police',
+ 'shelves_new' => 'Nove police',
+ 'shelves_new_action' => 'Nova polica',
+ 'shelves_popular_empty' => 'Najpopularnije police će se pojaviti ovdje.',
+ 'shelves_new_empty' => 'Najnovije police će se pojaviti ovdje.',
+ 'shelves_save' => 'Spremi policu',
+ 'shelves_books' => 'Knjige na ovoj polici',
+ 'shelves_add_books' => 'Dodaj knjige na ovu policu',
+ 'shelves_drag_books' => 'Drag books below to add them to this shelf',
+ 'shelves_empty_contents' => 'Ova polica nema knjiga koje su postavljene na nju',
+ 'shelves_edit_and_assign' => 'Uredi policu da bi dodao/la knjige',
+ 'shelves_edit_named' => 'Edit Shelf :name',
+ 'shelves_edit' => 'Edit Shelf',
+ 'shelves_delete' => 'Delete Shelf',
+ 'shelves_delete_named' => 'Delete Shelf :name',
+ 'shelves_delete_explain' => "This will delete the shelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Are you sure you want to delete this shelf?',
+ 'shelves_permissions' => 'Shelf Permissions',
+ 'shelves_permissions_updated' => 'Shelf Permissions Updated',
+ 'shelves_permissions_active' => 'Shelf Permissions Active',
+ 'shelves_permissions_cascade_warning' => 'Permissions on shelves do not automatically cascade to contained books. This is because a book can exist on multiple shelves. Permissions can however be copied down to child books using the option found below.',
+ 'shelves_permissions_create' => 'Shelf create permissions are only used for copying permissions to child books using the action below. They do not control the ability to create books.',
+ 'shelves_copy_permissions_to_books' => 'Copy Permissions to Books',
+ 'shelves_copy_permissions' => 'Copy Permissions',
+ 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this shelf to all books contained within. Before activating, ensure any changes to the permissions of this shelf have been saved.',
+ 'shelves_copy_permission_success' => 'Shelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'Book',
+ 'books' => 'Books',
+ 'x_books' => ':count Book|:count Books',
+ 'books_empty' => 'No books have been created',
+ 'books_popular' => 'Popular Books',
+ 'books_recent' => 'Recent Books',
+ 'books_new' => 'New Books',
+ 'books_new_action' => 'New Book',
+ 'books_popular_empty' => 'The most popular books will appear here.',
+ 'books_new_empty' => 'The most recently created books will appear here.',
+ 'books_create' => 'Create New Book',
+ 'books_delete' => 'Delete Book',
+ 'books_delete_named' => 'Delete Book :bookName',
+ 'books_delete_explain' => 'Ovo će izbrisati knjigu naziva \':bookName\'. Sve stranice i poglavlja će biti uklonjene.',
+ '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' => 'Naziv knjige',
+ 'books_save' => 'Spremi knjigu',
+ 'books_permissions' => 'Dozvole knjige',
+ 'books_permissions_updated' => 'Dozvole knjige su ažurirane',
+ 'books_empty_contents' => 'Za ovu knjigu nisu napravljene ni stranice ni poglavlja.',
+ 'books_empty_create_page' => 'Napravi novu stranicu',
+ 'books_empty_sort_current_book' => 'Sortiraj trenutnu knjigu',
+ 'books_empty_add_chapter' => 'Dodaj poglavlje',
+ 'books_permissions_active' => 'Dozvole za knjigu su aktivne',
+ 'books_search_this' => 'Pretraži ovu knjigu',
+ 'books_navigation' => 'Navigacija knjige',
+ 'books_sort' => 'Sortiraj sadržaj knjige',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Sortiraj knjigu :bookName',
+ 'books_sort_name' => 'Sortiraj po imenu',
+ 'books_sort_created' => 'Sortiraj po datumu kreiranja',
+ 'books_sort_updated' => 'Sortiraj po datumu ažuriranja',
+ 'books_sort_chapters_first' => 'Poglavlja prva',
+ 'books_sort_chapters_last' => 'Poglavlja zadnja',
+ 'books_sort_show_other' => 'Prikaži druge knjige',
+ 'books_sort_save' => 'Spremi trenutni poredak',
+ 'books_sort_show_other_desc' => 'Add other books here to include them in the sort operation, and allow easy cross-book reorganisation.',
+ 'books_sort_move_up' => 'Move Up',
+ 'books_sort_move_down' => 'Move Down',
+ 'books_sort_move_prev_book' => 'Move to Previous Book',
+ 'books_sort_move_next_book' => 'Move to Next Book',
+ 'books_sort_move_prev_chapter' => 'Move Into Previous Chapter',
+ 'books_sort_move_next_chapter' => 'Move Into Next Chapter',
+ 'books_sort_move_book_start' => 'Move to Start of Book',
+ 'books_sort_move_book_end' => 'Move to End of Book',
+ 'books_sort_move_before_chapter' => 'Move to Before Chapter',
+ 'books_sort_move_after_chapter' => 'Move to After Chapter',
+ 'books_copy' => 'Copy Book',
+ 'books_copy_success' => 'Book successfully copied',
+
+ // Chapters
+ 'chapter' => 'Poglavlje',
+ 'chapters' => 'Poglavlja',
+ 'x_chapters' => ':count Poglavlje|:count Poglavlja',
+ 'chapters_popular' => 'Popularna poglavlja',
+ 'chapters_new' => 'Novo poglavlje',
+ 'chapters_create' => 'Napravi novo poglavlje',
+ 'chapters_delete' => 'Izbriši poglavlje',
+ 'chapters_delete_named' => 'Izbriši poglavlje :chapterName',
+ 'chapters_delete_explain' => 'Ovo će izbrisati poglavlje naziva \':chapterName\'. Sve stranice koje postoje u ovom poglavlju će također biti izbrisane.',
+ 'chapters_delete_confirm' => 'Jeste li sigurni da želite izbrisati ovo 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',
+ 'chapters_copy' => 'Copy Chapter',
+ 'chapters_copy_success' => 'Chapter successfully copied',
+ 'chapters_permissions' => 'Dozvole poglavlja',
+ 'chapters_empty' => 'U ovom poglavlju trenutno nema stranica.',
+ 'chapters_permissions_active' => 'Dozvole za poglavlje su aktivne',
+ 'chapters_permissions_success' => 'Dozvole za poglavlje su ažurirane',
+ 'chapters_search_this' => 'Pretražuj ovo poglavlje',
+ 'chapter_sort_book' => 'Sort Book',
+
+ // Pages
+ 'page' => 'Stranica',
+ 'pages' => 'Stranice',
+ 'x_pages' => ':count Stranica|:count Stranice',
+ 'pages_popular' => 'Popularne stranice',
+ 'pages_new' => 'Nova stranica',
+ 'pages_attachments' => 'Attachments',
+ 'pages_navigation' => 'Page Navigation',
+ 'pages_delete' => 'Delete Page',
+ 'pages_delete_named' => 'Delete Page :pageName',
+ 'pages_delete_draft_named' => 'Delete Draft Page :pageName',
+ 'pages_delete_draft' => 'Delete Draft Page',
+ 'pages_delete_success' => 'Page deleted',
+ 'pages_delete_draft_success' => 'Draft page deleted',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Are you sure you want to delete this page?',
+ 'pages_delete_draft_confirm' => 'Are you sure you want to delete this draft page?',
+ 'pages_editing_named' => 'Editing Page :pageName',
+ 'pages_edit_draft_options' => 'Draft Options',
+ 'pages_edit_save_draft' => 'Save Draft',
+ 'pages_edit_draft' => 'Edit Page Draft',
+ 'pages_editing_draft' => 'Editing Draft',
+ 'pages_editing_page' => 'Editing Page',
+ 'pages_edit_draft_save_at' => 'Draft saved at ',
+ 'pages_edit_delete_draft' => 'Delete Draft',
+ 'pages_edit_delete_draft_confirm' => 'Are you sure you want to delete your draft page changes? All of your changes, since the last full save, will be lost and the editor will be updated with the latest page non-draft save state.',
+ 'pages_edit_discard_draft' => 'Discard Draft',
+ 'pages_edit_switch_to_markdown' => 'Switch to Markdown Editor',
+ 'pages_edit_switch_to_markdown_clean' => '(Clean Content)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stable Content)',
+ 'pages_edit_switch_to_wysiwyg' => 'Switch to WYSIWYG Editor',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Set Changelog',
+ 'pages_edit_enter_changelog_desc' => 'Enter a brief description of the changes you\'ve made',
+ 'pages_edit_enter_changelog' => 'Enter Changelog',
+ 'pages_editor_switch_title' => 'Switch Editor',
+ 'pages_editor_switch_are_you_sure' => 'Are you sure you want to change the editor for this page?',
+ 'pages_editor_switch_consider_following' => 'Consider the following when changing editors:',
+ 'pages_editor_switch_consideration_a' => 'Once saved, the new editor option will be used by any future editors, including those that may not be able to change editor type themselves.',
+ 'pages_editor_switch_consideration_b' => 'This can potentially lead to a loss of detail and syntax in certain circumstances.',
+ 'pages_editor_switch_consideration_c' => 'Tag or changelog changes, made since last save, won\'t persist across this change.',
+ 'pages_save' => 'Save Page',
+ 'pages_title' => 'Page Title',
+ 'pages_name' => 'Page Name',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Preview',
+ 'pages_md_insert_image' => 'Insert Image',
+ 'pages_md_insert_link' => 'Insert Entity Link',
+ 'pages_md_insert_drawing' => 'Insert Drawing',
+ 'pages_md_show_preview' => 'Show preview',
+ 'pages_md_sync_scroll' => 'Sync preview scroll',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Unsaved Drawing Found',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'Page is not in a chapter',
+ 'pages_move' => 'Move Page',
+ 'pages_copy' => 'Copy Page',
+ 'pages_copy_desination' => 'Copy Destination',
+ 'pages_copy_success' => 'Page successfully copied',
+ 'pages_permissions' => 'Page Permissions',
+ 'pages_permissions_success' => 'Page permissions updated',
+ 'pages_revision' => 'Revision',
+ 'pages_revisions' => 'Page Revisions',
+ 'pages_revisions_desc' => 'Listed below are all the past revisions of this page. You can look back upon, compare, and restore old page versions if permissions allow. The full history of the page may not be fully reflected here since, depending on system configuration, old revisions could be auto-deleted.',
+ 'pages_revisions_named' => 'Page Revisions for :pageName',
+ 'pages_revision_named' => 'Page Revision for :pageName',
+ 'pages_revision_restored_from' => 'Restored from #:id; :summary',
+ 'pages_revisions_created_by' => 'Created By',
+ 'pages_revisions_date' => 'Revision Date',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revision Number',
+ 'pages_revisions_numbered' => 'Revision #:id',
+ 'pages_revisions_numbered_changes' => 'Revision #:id Changes',
+ 'pages_revisions_editor' => 'Editor Type',
+ 'pages_revisions_changelog' => 'Changelog',
+ 'pages_revisions_changes' => 'Changes',
+ 'pages_revisions_current' => 'Trenutna verzija',
+ 'pages_revisions_preview' => 'Pregled',
+ 'pages_revisions_restore' => 'Vrati',
+ 'pages_revisions_none' => 'Ova stranica nema promjena',
+ 'pages_copy_link' => 'Iskopiraj link',
+ 'pages_edit_content_link' => 'Jump to section in editor',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Page Section Options',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Dozvole za stranicu su aktivne',
+ 'pages_initial_revision' => 'Prvo izdavanje',
+ 'pages_references_update_revision' => 'System auto-update of internal links',
+ 'pages_initial_name' => 'Nova stranica',
+ 'pages_editing_draft_notification' => 'Trenutno uređujete skicu koja je posljednji put snimljena :timeDiff.',
+ 'pages_draft_edited_notification' => 'Ova stranica je ažurirana nakon tog vremena. Preporučujemo da odbacite ovu skicu.',
+ 'pages_draft_page_changed_since_creation' => 'This page has been updated since this draft was created. It is recommended that you discard this draft or take care not to overwrite any page changes.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count korisnika je počelo sa uređivanjem ove stranice',
+ 'start_b' => ':userName je počeo/la sa uređivanjem ove stranice',
+ 'time_a' => 'od kada je stranica posljednji put ažurirana',
+ 'time_b' => 'u posljednjih :minCount minuta',
+ 'message' => ':start :time. Pazite da jedni drugima ne prepišete promjene!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'Specifična stranica',
+ 'pages_is_template' => 'Predložak stranice',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'Oznake stranice',
+ 'chapter_tags' => 'Oznake poglavlja',
+ 'book_tags' => 'Oznake knjige',
+ 'shelf_tags' => 'Oznake police',
+ 'tag' => 'Oznaka',
+ 'tags' => 'Oznake',
+ 'tags_index_desc' => 'Tags can be applied to content within the system to apply a flexible form of categorization. Tags can have both a key and value, with the value being optional. Once applied, content can then be queried using the tag name and value.',
+ 'tag_name' => 'Naziv oznake',
+ 'tag_value' => 'Vrijednost oznake (nije obavezno)',
+ 'tags_explain' => "Dodaj nekoliko oznaka da bi sadržaj bio bolje kategorisan. \n Možeš dodati vrijednost oznaci za dublju organizaciju.",
+ 'tags_add' => 'Dodaj još jednu oznaku',
+ 'tags_remove' => 'Ukloni ovu oznaku',
+ 'tags_usages' => 'Total tag usages',
+ 'tags_assigned_pages' => 'Assigned to Pages',
+ 'tags_assigned_chapters' => 'Assigned to Chapters',
+ 'tags_assigned_books' => 'Assigned to Books',
+ 'tags_assigned_shelves' => 'Assigned to Shelves',
+ 'tags_x_unique_values' => ':count unique values',
+ 'tags_all_values' => 'All values',
+ 'tags_view_tags' => 'View Tags',
+ 'tags_view_existing_tags' => 'View existing tags',
+ 'tags_list_empty_hint' => 'Tags can be assigned via the page editor sidebar or while editing the details of a book, chapter or shelf.',
+ 'attachments' => 'Prilozi',
+ 'attachments_explain' => 'Učitajte fajlove ili priložite poveznice da bi ih prikazali na stranici. Oni su onda vidljivi u navigaciji sa strane.',
+ 'attachments_explain_instant_save' => 'Sve promjene se snimaju odmah.',
+ 'attachments_upload' => 'Učitaj fajl',
+ 'attachments_link' => 'Zakači link',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'Postavi link',
+ 'attachments_delete' => 'Jeste li sigurni da želite obrisati ovaj prilog?',
+ 'attachments_dropzone' => 'Drop files here to upload',
+ 'attachments_no_files' => 'Niti jedan fajl nije prenesen',
+ 'attachments_explain_link' => 'Možete zakačiti link ako ne želite učitati fajl. To može biti link druge stranice ili link za fajl u oblaku.',
+ 'attachments_link_name' => 'Naziv linka',
+ 'attachment_link' => 'Link poveznice',
+ 'attachments_link_url' => 'Link do fajla',
+ 'attachments_link_url_hint' => 'Url stranice ili fajla',
+ 'attach' => 'Zakači',
+ 'attachments_insert_link' => 'Dodaj priloženi link na stranicu',
+ 'attachments_edit_file' => 'Uredi fajl',
+ 'attachments_edit_file_name' => 'Naziv fajla',
+ 'attachments_edit_drop_upload' => 'Spusti fajlove ili pritisni ovdje da učitaš i prepišeš',
+ 'attachments_order_updated' => 'Attachment order updated',
+ 'attachments_updated_success' => 'Attachment details updated',
+ 'attachments_deleted' => 'Attachment deleted',
+ 'attachments_file_uploaded' => 'File successfully uploaded',
+ 'attachments_file_updated' => 'File successfully updated',
+ 'attachments_link_attached' => 'Link successfully attached to page',
+ 'templates' => 'Templates',
+ 'templates_set_as_template' => 'Page is a template',
+ 'templates_explain_set_as_template' => 'You can set this page as a template so its contents be utilized when creating other pages. Other users will be able to use this template if they have view permissions for this page.',
+ 'templates_replace_content' => 'Replace page content',
+ 'templates_append_content' => 'Append to page content',
+ 'templates_prepend_content' => 'Prepend to page content',
+
+ // Profile View
+ 'profile_user_for_x' => 'User for :time',
+ 'profile_created_content' => 'Created Content',
+ 'profile_not_created_pages' => ':userName has not created any pages',
+ 'profile_not_created_chapters' => ':userName has not created any chapters',
+ 'profile_not_created_books' => ':userName has not created any books',
+ 'profile_not_created_shelves' => ':userName has not created any shelves',
+
+ // Comments
+ 'comment' => 'Comment',
+ 'comments' => 'Comments',
+ 'comment_add' => 'Add Comment',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Leave a comment here',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Save Comment',
+ 'comment_new' => 'New Comment',
+ 'comment_created' => 'commented :createDiff',
+ 'comment_updated' => 'Updated :updateDiff by :username',
+ 'comment_updated_indicator' => 'Updated',
+ 'comment_deleted_success' => 'Comment deleted',
+ 'comment_created_success' => 'Comment added',
+ 'comment_updated_success' => 'Comment updated',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Are you sure you want to delete this comment?',
+ 'comment_in_reply_to' => 'In reply to :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Here are the comments that have been left on this page. Comments can be added & managed when viewing the saved page.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Are you sure you want to delete this revision?',
+ 'revision_restore_confirm' => 'Are you sure you want to restore this revision? The current page contents will be replaced.',
+ 'revision_cannot_delete_latest' => 'Cannot delete the latest revision.',
+
+ // Copy view
+ 'copy_consider' => 'Please consider the below when copying content.',
+ 'copy_consider_permissions' => 'Custom permission settings will not be copied.',
+ 'copy_consider_owner' => 'You will become the owner of all copied content.',
+ 'copy_consider_images' => 'Page image files will not be duplicated & the original images will retain their relation to the page they were originally uploaded to.',
+ 'copy_consider_attachments' => 'Page attachments will not be copied.',
+ 'copy_consider_access' => 'A change of location, owner or permissions may result in this content being accessible to those previously without access.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Convert to Shelf',
+ 'convert_to_shelf_contents_desc' => 'You can convert this book to a new shelf with the same contents. Chapters contained within this book will be converted to new books. If this book contains any pages, that are not in a chapter, this book will be renamed and contain such pages, and this book will become part of the new shelf.',
+ 'convert_to_shelf_permissions_desc' => 'Any permissions set on this book will be copied to the new shelf and to all new child books that don\'t have their own permissions enforced. Note that permissions on shelves do not auto-cascade to content within, as they do for books.',
+ 'convert_book' => 'Convert Book',
+ 'convert_book_confirm' => 'Are you sure you want to convert this book?',
+ 'convert_undo_warning' => 'This cannot be as easily undone.',
+ 'convert_to_book' => 'Convert to Book',
+ 'convert_to_book_desc' => 'You can convert this chapter to a new book with the same contents. Any permissions set on this chapter will be copied to the new book but any inherited permissions, from the parent book, will not be copied which could lead to a change of access control.',
+ 'convert_chapter' => 'Convert Chapter',
+ 'convert_chapter_confirm' => 'Are you sure you want to convert this chapter?',
+
+ // References
+ 'references' => 'References',
+ 'references_none' => 'There are no tracked references to this item.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Watch',
+ 'watch_title_default' => 'Default Preferences',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignore',
+ 'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
+ 'watch_title_new' => 'New Pages',
+ 'watch_desc_new' => 'Notify when any new page is created within this item.',
+ 'watch_title_updates' => 'All Page Updates',
+ 'watch_desc_updates' => 'Notify upon all new pages and page changes.',
+ 'watch_desc_updates_page' => 'Notify upon all page changes.',
+ 'watch_title_comments' => 'All Page Updates & Comments',
+ 'watch_desc_comments' => 'Notify upon all new pages, page changes and new comments.',
+ 'watch_desc_comments_page' => 'Notify upon page changes and new comments.',
+ 'watch_change_default' => 'Change default notification preferences',
+ 'watch_detail_ignore' => 'Ignoring notifications',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/bs/errors.php b/lang/bs/errors.php
new file mode 100644
index 00000000000..d76f559c17c
--- /dev/null
+++ b/lang/bs/errors.php
@@ -0,0 +1,135 @@
+ 'Nemate ovlaštenje da pristupite ovoj stranici.',
+ 'permissionJson' => 'Nemate ovlaštenje da izvršite tu akciju.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Korisnik sa e-mailom :email već postoji ali sa različitim podacima.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'E-mail je već potvrđen, pokušajte se prijaviti.',
+ 'email_confirmation_invalid' => 'Ovaj token za potvrdu nije ispravan ili je već iskorišten, molimo vas pokušajte se registrovati ponovno.',
+ 'email_confirmation_expired' => 'Ovaj token za potvrdu je istekao, novi e-mail za potvrdu je poslan.',
+ 'email_confirmation_awaiting' => 'E-mail adresa za račun koji se koristi mora biti potvrđena',
+ 'ldap_fail_anonymous' => 'LDAP pristup nije uspio koristeći anonimno povezivanje',
+ 'ldap_fail_authed' => 'LDAP pristup nije uspio koristeći date detalje lozinke i dn',
+ 'ldap_extension_not_installed' => 'LDAP PHP ekstenzija nije instalirana',
+ 'ldap_cannot_connect' => 'Nije se moguće povezati sa ldap serverom, incijalna konekcija nije uspjela',
+ 'saml_already_logged_in' => 'Već prijavljeni',
+ 'saml_no_email_address' => 'E-mail adresa za ovog korisnika nije nađena u podacima dobijenim od eksternog autentifikacijskog sistema',
+ 'saml_invalid_response_id' => 'Proces, koji je pokrenula ova aplikacija, nije prepoznao zahtjev od eksternog sistema za autentifikaciju. Navigacija nazad nakon prijave može uzrokovati ovaj problem.',
+ 'saml_fail_authed' => 'Prijava koristeći :system nije uspjela, sistem nije obezbijedio uspješnu autorizaciju',
+ 'oidc_already_logged_in' => 'Already logged in',
+ 'oidc_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'oidc_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'social_no_action_defined' => 'Nema definisane akcije',
+ 'social_login_bad_response' => "Došlo je do greške prilikom prijave preko :socialAccount :\n:error",
+ 'social_account_in_use' => 'Ovaj :socialAccount račun se već koristi, pokušajte se prijaviti putem :socialAccount opcije.',
+ 'social_account_email_in_use' => 'E-mail :email se već koristi. Ako već imate račun možete povezati vaš :socialAccount račun u postavkama profila.',
+ 'social_account_existing' => 'Ovaj :socialAccount je već povezan sa vašim profilom.',
+ 'social_account_already_used_existing' => 'Drugi korisnik već koristi ovaj :socialAccount.',
+ 'social_account_not_used' => 'Ovaj :socialAccount nije povezan ni sa jednim korisnikom. Povežite ga u postavkama profila. ',
+ 'social_account_register_instructions' => 'Ako još uvijek nemate račun, možete se registrovati koristeći :socialAccount opciju.',
+ 'social_driver_not_found' => 'Driver društvene mreže nije pronađen',
+ 'social_driver_not_configured' => 'Vaše :socialAccount postavke nisu konfigurisane ispravno.',
+ 'invite_token_expired' => 'Pozivni link je istekao. Možete umjesto toga pokušati da resetujete lozinku.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // System
+ 'path_not_writable' => 'Na putanju fajla :filePath se ne može učitati. Potvrdite da je omogućeno pisanje na server.',
+ 'cannot_get_image_from_url' => 'Nije moguće dobiti sliku sa :url',
+ 'cannot_create_thumbs' => 'Server ne može kreirati sličice. Provjerite da imate instaliranu GD PHP ekstenziju.',
+ 'server_upload_limit' => 'Server ne dopušta učitavanja ove veličine. Pokušajte sa manjom veličinom fajla.',
+ 'server_post_limit' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.',
+ 'uploaded' => 'Server ne dopušta učitavanja ove veličine. Pokušajte sa manjom veličinom fajla.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Desila se greška prilikom učitavanja slike',
+ 'image_upload_type_error' => 'Vrsta slike koja se učitava je neispravna',
+ 'image_upload_replace_type' => 'Image file replacements must be of the same type',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Drawing data could not be loaded. The drawing file might no longer exist or you may not have permission to access it.',
+
+ // Attachments
+ 'attachment_not_found' => 'Prilog nije pronađen',
+ 'attachment_upload_error' => 'An error occurred uploading the attachment file',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Snimanje skice nije uspjelo. Provjerite da ste povezani na internet prije snimanja ove stranice',
+ 'page_draft_delete_fail' => 'Failed to delete page draft and fetch current page saved content',
+ 'page_custom_home_deletion' => 'Stranicu nije moguće izbrisati dok se koristi kao početna stranica',
+
+ // Entities
+ 'entity_not_found' => 'Entitet nije pronađen',
+ 'bookshelf_not_found' => 'Shelf not found',
+ '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' => 'Odabrana knjiga ili poglavlje nije pronađeno',
+ 'guests_cannot_save_drafts' => 'Gosti ne mogu snimati skice',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Ne možete izbrisati jedinog administratora',
+ 'users_cannot_delete_guest' => 'Ne možete izbrisati gost korisnika',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Ova uloga ne može biti mijenjana',
+ 'role_system_cannot_be_deleted' => 'Ova uloga je sistemska uloga i ne može biti izbrisana',
+ 'role_registration_default_cannot_delete' => 'Ova uloga ne može biti izbrisana dok je postavljena kao osnovna registracijska uloga',
+ 'role_cannot_remove_only_admin' => 'Ovaj korisnik je jedini korisnik sa ulogom administratora. Postavite ulogu administratora drugom korisniku prije nego je uklonite ovdje.',
+
+ // Comments
+ 'comment_list' => 'Desila se greška prilikom dobavljanja komentara.',
+ 'cannot_add_comment_to_draft' => 'Ne možete dodati komentare na skicu.',
+ 'comment_add' => 'Desila se greška prilikom dodavanja / ažuriranja komentara.',
+ 'comment_delete' => 'Desila se greška prilikom brisanja komentara.',
+ 'empty_comment' => 'Nemoguće dodati prazan komentar.',
+
+ // Error pages
+ '404_page_not_found' => 'Stranica nije pronađena',
+ 'sorry_page_not_found' => 'Stranica koju ste tražili nije pronađena.',
+ 'sorry_page_not_found_permission_warning' => 'Ako ste očekivali da ova stranica postoji, možda nemate privilegije da joj pristupite.',
+ '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' => 'Nazad na početnu stranu',
+ 'error_occurred' => 'Desila se greška',
+ 'app_down' => ':appName trenutno nije u funkciji',
+ 'back_soon' => 'Biti će uskoro u funkciji.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Na zahtjevu nije pronađen token za autorizaciju',
+ 'api_bad_authorization_format' => 'Token za autorizaciju je pronađen u zahtjevu ali je format neispravan',
+ 'api_user_token_not_found' => 'Nije pronađen odgovarajući API token za pruženi token autorizacije',
+ 'api_incorrect_token_secret' => 'Tajni ključ naveden za dati korišteni API token nije tačan',
+ 'api_user_no_api_permission' => 'Vlasnik korištenog API tokena nema dozvolu za upućivanje API poziva',
+ 'api_user_token_expired' => 'Autorizacijski token je istekao',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Došlo je do greške prilikom slanja testnog e-maila:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'The URL does not match the configured allowed SSR hosts',
+];
diff --git a/lang/bs/notifications.php b/lang/bs/notifications.php
new file mode 100644
index 00000000000..563ac24e84d
--- /dev/null
+++ b/lang/bs/notifications.php
@@ -0,0 +1,29 @@
+ 'New comment on page: :pageName',
+ 'new_comment_intro' => 'A user has commented on a page in :appName:',
+ 'new_page_subject' => 'New page: :pageName',
+ 'new_page_intro' => 'A new page has been created in :appName:',
+ 'updated_page_subject' => 'Updated page: :pageName',
+ 'updated_page_intro' => 'A page has been updated in :appName:',
+ 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Page Name:',
+ 'detail_page_path' => 'Page Path:',
+ 'detail_commenter' => 'Commenter:',
+ 'detail_comment' => 'Comment:',
+ 'detail_created_by' => 'Created By:',
+ 'detail_updated_by' => 'Updated By:',
+
+ 'action_view_comment' => 'View Comment',
+ 'action_view_page' => 'View Page',
+
+ 'footer_reason' => 'This notification was sent to you because :link cover this type of activity for this item.',
+ 'footer_reason_link' => 'your notification preferences',
+];
diff --git a/resources/lang/bs/pagination.php b/lang/bs/pagination.php
similarity index 100%
rename from resources/lang/bs/pagination.php
rename to lang/bs/pagination.php
diff --git a/resources/lang/bs/passwords.php b/lang/bs/passwords.php
similarity index 100%
rename from resources/lang/bs/passwords.php
rename to lang/bs/passwords.php
diff --git a/lang/bs/preferences.php b/lang/bs/preferences.php
new file mode 100644
index 00000000000..f4459d738e4
--- /dev/null
+++ b/lang/bs/preferences.php
@@ -0,0 +1,52 @@
+ 'My Account',
+
+ 'shortcuts' => 'Shortcuts',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Here you can enable or disable keyboard system interface shortcuts, used for navigation and actions.',
+ 'shortcuts_customize_desc' => 'You can customize each of the shortcuts below. Just press your desired key combination after selecting the input for a shortcut.',
+ 'shortcuts_toggle_label' => 'Keyboard shortcuts enabled',
+ 'shortcuts_section_navigation' => 'Navigation',
+ 'shortcuts_section_actions' => 'Common Actions',
+ 'shortcuts_save' => 'Save Shortcuts',
+ 'shortcuts_overlay_desc' => 'Note: When shortcuts are enabled a helper overlay is available via pressing "?" which will highlight the available shortcuts for actions currently visible on the screen.',
+ 'shortcuts_update_success' => 'Shortcut preferences have been updated!',
+ 'shortcuts_overview_desc' => 'Manage keyboard shortcuts you can use to navigate the system user interface.',
+
+ 'notifications' => 'Notification Preferences',
+ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.',
+ 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own',
+ 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notify upon replies to my comments',
+ 'notifications_save' => 'Save Preferences',
+ 'notifications_update_success' => 'Notification preferences have been updated!',
+ 'notifications_watched' => 'Watched & Ignored Items',
+ 'notifications_watched_desc' => 'Below are the items that have custom watch preferences applied. To update your preferences for these, view the item then find the watch options in the sidebar.',
+
+ 'auth' => 'Access & Security',
+ 'auth_change_password' => 'Change Password',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Password has been updated!',
+
+ 'profile' => 'Profile Details',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'View Public Profile',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Delete Account',
+ 'delete_my_account' => 'Delete My Account',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/bs/settings.php b/lang/bs/settings.php
new file mode 100644
index 00000000000..c4d1eb136eb
--- /dev/null
+++ b/lang/bs/settings.php
@@ -0,0 +1,374 @@
+ 'Settings',
+ 'settings_save' => 'Save Settings',
+ 'system_version' => 'System Version',
+ 'categories' => 'Categories',
+
+ // App Settings
+ 'app_customization' => 'Customization',
+ 'app_features_security' => 'Features & Security',
+ 'app_name' => 'Application Name',
+ 'app_name_desc' => 'This name is shown in the header and in any system-sent emails.',
+ 'app_name_header' => 'Show name in header',
+ 'app_public_access' => 'Public Access',
+ 'app_public_access_desc' => 'Enabling this option will allow visitors, that are not logged-in, to access content in your BookStack instance.',
+ 'app_public_access_desc_guest' => 'Access for public visitors can be controlled through the "Guest" user.',
+ 'app_public_access_toggle' => 'Allow public access',
+ 'app_public_viewing' => 'Allow public viewing?',
+ 'app_secure_images' => 'Higher Security Image Uploads',
+ 'app_secure_images_toggle' => 'Enable higher security image uploads',
+ 'app_secure_images_desc' => 'For performance reasons, all images are public. This option adds a random, hard-to-guess string in front of image urls. Ensure directory indexes are not enabled to prevent easy access.',
+ 'app_default_editor' => 'Default Page Editor',
+ 'app_default_editor_desc' => 'Select which editor will be used by default when editing new pages. This can be overridden at a page level where permissions allow.',
+ 'app_custom_html' => 'Custom HTML Head Content',
+ 'app_custom_html_desc' => 'Any content added here will be inserted into the bottom of the section of every page. This is handy for overriding styles or adding analytics code.',
+ 'app_custom_html_disabled_notice' => 'Custom HTML head content is disabled on this settings page to ensure any breaking changes can be reverted.',
+ 'app_logo' => 'Application Logo',
+ 'app_logo_desc' => 'This is used in the application header bar, among other areas. This image should be 86px in height. Large images will be scaled down.',
+ 'app_icon' => 'Application Icon',
+ 'app_icon_desc' => 'This icon is used for browser tabs and shortcut icons. This should be a 256px square PNG image.',
+ '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::" 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' => 'Disable Comments',
+ 'app_disable_comments_toggle' => 'Disable comments',
+ 'app_disable_comments_desc' => 'Disables comments across all pages in the application. Existing comments are not shown.',
+
+ // Color settings
+ 'color_scheme' => 'Application Color Scheme',
+ 'color_scheme_desc' => 'Set the colors to use in the application user interface. Colors can be configured separately for dark and light modes to best fit the theme and ensure legibility.',
+ 'ui_colors_desc' => 'Set the application primary color and default link color. The primary color is mainly used for the header banner, buttons and interface decorations. The default link color is used for text-based links and actions, both within written content and in the application interface.',
+ 'app_color' => 'Primary Color',
+ 'link_color' => 'Default Link Color',
+ 'content_colors_desc' => 'Set colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'bookshelf_color' => 'Shelf Color',
+ 'book_color' => 'Book Color',
+ 'chapter_color' => 'Chapter Color',
+ 'page_color' => 'Page Color',
+ 'page_draft_color' => 'Page Draft Color',
+
+ // Registration Settings
+ 'reg_settings' => 'Registration',
+ 'reg_enable' => 'Enable Registration',
+ 'reg_enable_toggle' => 'Enable registration',
+ 'reg_enable_desc' => 'When registration is enabled user will be able to sign themselves up as an application user. Upon registration they are given a single, default user role.',
+ 'reg_default_role' => 'Default user role after registration',
+ 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_email_confirmation' => 'Email Confirmation',
+ 'reg_email_confirmation_toggle' => 'Require email confirmation',
+ 'reg_confirm_email_desc' => 'If domain restriction is used then email confirmation will be required and this option will be ignored.',
+ 'reg_confirm_restrict_domain' => 'Domain Restriction',
+ 'reg_confirm_restrict_domain_desc' => 'Enter a comma separated list of email domains you would like to restrict registration to. Users will be sent an email to confirm their address before being allowed to interact with the application. Note that users will be able to change their email addresses after successful registration.',
+ 'reg_confirm_restrict_domain_placeholder' => 'No restriction set',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Maintenance',
+ 'maint_image_cleanup' => 'Cleanup Images',
+ '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' => 'Also delete images that only exist in old page revisions',
+ 'maint_image_cleanup_run' => 'Run Cleanup',
+ 'maint_image_cleanup_warning' => ':count potentially unused images were found. Are you sure you want to delete these images?',
+ 'maint_image_cleanup_success' => ':count potentially unused images found and deleted!',
+ '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_regen_references' => 'Regenerate References',
+ 'maint_regen_references_desc' => 'This action will rebuild the cross-item reference index within the database. This is usually handled automatically but this action can be useful to index old content or content added via unofficial methods.',
+ 'maint_regen_references_success' => 'Reference index has been regenerated!',
+ 'maint_timeout_command_note' => 'Note: This action can take time to run, which can lead to timeout issues in some web environments. As an alternative, this action be performed using a terminal command.',
+
+ // 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_parent' => 'Parent',
+ '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 from the system, along with any child elements listed below, 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_restore_parent' => 'Restore Parent',
+ '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 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_table_related' => 'Related Item or Detail',
+ 'audit_table_ip' => 'IP Address',
+ 'audit_table_date' => 'Activity Date',
+ 'audit_date_from' => 'Date Range From',
+ 'audit_date_to' => 'Date Range To',
+
+ // Role Settings
+ 'roles' => 'Roles',
+ 'role_user_roles' => 'User Roles',
+ 'roles_index_desc' => 'Roles are used to group users & provide system permission to their members. When a user is a member of multiple roles the privileges granted will stack and the user will inherit all abilities.',
+ 'roles_x_users_assigned' => ':count user assigned|:count users assigned',
+ 'roles_x_permissions_provided' => ':count permission|:count permissions',
+ 'roles_assigned_users' => 'Assigned Users',
+ 'roles_permissions_provided' => 'Provided Permissions',
+ 'role_create' => 'Create New Role',
+ '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_edit' => 'Edit Role',
+ 'role_details' => 'Role Details',
+ 'role_name' => 'Role Name',
+ 'role_desc' => 'Short Description of Role',
+ 'role_mfa_enforced' => 'Requires Multi-Factor Authentication',
+ 'role_external_auth_id' => 'External Authentication IDs',
+ 'role_system' => 'System Permissions',
+ 'role_manage_users' => 'Manage users',
+ 'role_manage_roles' => 'Manage roles & role permissions',
+ 'role_manage_entity_permissions' => 'Manage all book, chapter & page permissions',
+ 'role_manage_own_entity_permissions' => 'Manage permissions on own book, chapter & pages',
+ 'role_manage_page_templates' => 'Manage page templates',
+ 'role_access_api' => 'Access system API',
+ 'role_manage_settings' => 'Manage app settings',
+ 'role_export_content' => 'Export content',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Change page editor',
+ 'role_notifications' => 'Receive & manage notifications',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Asset Permissions',
+ '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' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.',
+ 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.',
+ 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'All',
+ 'role_own' => 'Own',
+ 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to',
+ 'role_save' => 'Save Role',
+ 'role_users' => 'Users in this role',
+ 'role_users_none' => 'No users are currently assigned to this role',
+
+ // Users
+ 'users' => 'Users',
+ 'users_index_desc' => 'Create & manage individual user accounts within the system. User accounts are used for login and attribution of content & activity. Access permissions are primarily role-based but user content ownership, among other factors, may also affect permissions & access.',
+ 'user_profile' => 'User Profile',
+ 'users_add_new' => 'Add New User',
+ 'users_search' => 'Search Users',
+ 'users_latest_activity' => 'Latest Activity',
+ 'users_details' => 'User 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',
+ 'users_role_desc' => 'Select which roles this user will be assigned to. If a user is assigned to multiple roles the permissions from those roles will stack and they will receive all abilities of the assigned roles.',
+ 'users_password' => 'User Password',
+ 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 8 characters long.',
+ 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.',
+ 'users_send_invite_option' => 'Send user invite email',
+ 'users_external_auth_id' => 'External Authentication ID',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ '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_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_edit' => 'Edit User',
+ 'users_edit_profile' => 'Edit Profile',
+ 'users_avatar' => 'User Avatar',
+ 'users_avatar_desc' => 'Select an image to represent this user. This should be approx 256px square.',
+ 'users_preferred_language' => 'Preferred Language',
+ 'users_preferred_language_desc' => 'This option will change the language used for the user-interface of the application. This will not affect any user-created content.',
+ 'users_social_accounts' => 'Social Accounts',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not revoke previously authorized access. Revoke access from your profile settings on the connected social account.',
+ 'users_social_connect' => 'Connect Account',
+ 'users_social_disconnect' => 'Disconnect Account',
+ 'users_social_status_connected' => 'Connected',
+ 'users_social_status_disconnected' => 'Disconnected',
+ 'users_social_connected' => ':socialAccount account was successfully attached to your profile.',
+ 'users_social_disconnected' => ':socialAccount account was successfully disconnected from your profile.',
+ 'users_api_tokens' => 'API Tokens',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'No API tokens have been created for this user',
+ 'users_api_tokens_create' => 'Create Token',
+ 'users_api_tokens_expires' => 'Expires',
+ 'users_api_tokens_docs' => 'API Documentation',
+ 'users_mfa' => 'Multi-Factor Authentication',
+ 'users_mfa_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'users_mfa_x_methods' => ':count method configured|:count methods configured',
+ 'users_mfa_configure' => 'Configure Methods',
+
+ // API Tokens
+ 'user_api_token_create' => 'Create API Token',
+ 'user_api_token_name' => 'Name',
+ 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
+ 'user_api_token_expiry' => 'Expiry Date',
+ 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
+ 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
+ 'user_api_token' => 'API Token',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
+ 'user_api_token_secret' => 'Token Secret',
+ 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
+ 'user_api_token_created' => 'Token created :timeAgo',
+ 'user_api_token_updated' => 'Token updated :timeAgo',
+ 'user_api_token_delete' => 'Delete Token',
+ 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
+ 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks are a way to send data to external URLs when certain actions and events occur within the system which allows event-based integration with external platforms such as messaging or notification systems.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'Create New Webhook',
+ 'webhooks_none_created' => 'No webhooks have yet been created.',
+ 'webhooks_edit' => 'Edit Webhook',
+ 'webhooks_save' => 'Save Webhook',
+ 'webhooks_details' => 'Webhook Details',
+ 'webhooks_details_desc' => 'Provide a user friendly name and a POST endpoint as a location for the webhook data to be sent to.',
+ 'webhooks_events' => 'Webhook Events',
+ 'webhooks_events_desc' => 'Select all the events that should trigger this webhook to be called.',
+ 'webhooks_events_warning' => 'Keep in mind that these events will be triggered for all selected events, even if custom permissions are applied. Ensure that use of this webhook won\'t expose confidential content.',
+ 'webhooks_events_all' => 'All system events',
+ 'webhooks_name' => 'Webhook Name',
+ 'webhooks_timeout' => 'Webhook Request Timeout (Seconds)',
+ 'webhooks_endpoint' => 'Webhook Endpoint',
+ 'webhooks_active' => 'Webhook Active',
+ 'webhook_events_table_header' => 'Events',
+ 'webhooks_delete' => 'Delete Webhook',
+ 'webhooks_delete_warning' => 'This will fully delete this webhook, with the name \':webhookName\', from the system.',
+ 'webhooks_delete_confirm' => 'Are you sure you want to delete this webhook?',
+ 'webhooks_format_example' => 'Webhook Format Example',
+ 'webhooks_format_example_desc' => 'Webhook data is sent as a POST request to the configured endpoint as JSON following the format below. The "related_item" and "url" properties are optional and will depend on the type of event triggered.',
+ 'webhooks_status' => 'Webhook Status',
+ 'webhooks_last_called' => 'Last Called:',
+ 'webhooks_last_errored' => 'Last Errored:',
+ 'webhooks_last_error_message' => 'Last Error Message:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/bs/validation.php b/lang/bs/validation.php
new file mode 100644
index 00000000000..e7e62f2abd4
--- /dev/null
+++ b/lang/bs/validation.php
@@ -0,0 +1,123 @@
+ ':attribute mora biti prihvaćen.',
+ 'active_url' => ':attribute nije ispravan URL.',
+ 'after' => ':attribute mora biti datum 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.',
+ 'backup_codes' => 'The provided code is not valid or has already been used.',
+ 'before' => ':attribute mora biti datum 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 karaktera.',
+ 'array' => ':attribute mora imati između :min i :max stavki.',
+ ],
+ 'boolean' => ':attribute polje mora biti tačno ili netačno.',
+ 'confirmed' => ':attribute potvrda se ne slaže.',
+ 'date' => ':attribute nije ispravan datum.',
+ 'date_format' => ':attribute ne odgovara formatu :format.',
+ 'different' => ':attribute i :other moraju biti različiti.',
+ 'digits' => ':attribute mora imati :digits brojeve.',
+ 'digits_between' => ':attribute mora imati između :min i :max brojeva.',
+ 'email' => ':attribute mora biti ispravna e-mail adresa.',
+ 'ends_with' => ':attribute mora završavati sa jednom od sljedećih: :values',
+ 'file' => 'The :attribute must be provided as a valid file.',
+ 'filled' => 'Polje :attribute je obavezno.',
+ 'gt' => [
+ 'numeric' => ':attribute mora biti veći od :value.',
+ 'file' => ':attribute mota biti veći od :value kilobajta.',
+ 'string' => ':attribute mora imati više od :value karaktera.',
+ 'array' => ':attribute mora imati više od :value stavki.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute mora biti veći od ili jednak :value.',
+ 'file' => ':attribute mora imati više od ili jednako :value kilobajta.',
+ 'string' => ':attribute mora imati više od ili jednako :value karaktera.',
+ 'array' => ':attribute mora imati :value stavki ili više.',
+ ],
+ 'exists' => 'Odabrani :attribute je neispravan.',
+ 'image' => ':attribute mora biti slika.',
+ 'image_extension' => ':attribute mora imati ispravnu i podržanu ekstenziju slike.',
+ 'in' => 'Odabrani :attribute je neispravan.',
+ 'integer' => ':attribute mora biti integer.',
+ 'ip' => ':attribute mora biti ispravna IP adresa.',
+ 'ipv4' => ':attribute mora biti ispravna IPv4 adresa.',
+ 'ipv6' => ':attribute mora biti ispravna IPv6 adresa.',
+ 'json' => ':attribute mora biti ispravan JSON string.',
+ 'lt' => [
+ 'numeric' => ':attribute mora biti manji od :value.',
+ 'file' => ':attribute mora imati manje od :value kilobajta.',
+ 'string' => ':attribute mora imati manje od :value karaktera.',
+ 'array' => ':attribute mora imati manje od :value stavki.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute mora imati vrijednost manju od ili jednaku :value.',
+ 'file' => ':attribute mora imati manje od ili jednako :value kilobajta.',
+ 'string' => ':attribute mora imati manje od ili jednako :value karaktera.',
+ 'array' => ':attribute ne smije imati više od :value stavki.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute ne može biti veći od :max.',
+ 'file' => ':attribute ne može imati više od :max kilobajta.',
+ 'string' => ':attribute ne može imati više od :max karaktera.',
+ 'array' => ':attribute ne može imati više od :max stavki.',
+ ],
+ 'mimes' => ':attribute mora biti fajl vrste: values.',
+ 'min' => [
+ 'numeric' => ':attribute mora biti najmanje :min.',
+ 'file' => ':attribute mora imati najmanje :min kilobajta.',
+ 'string' => ':attribute mora imati najmanje :min karaktera.',
+ 'array' => ':attribute mora imati najmanje :min stavki.',
+ ],
+ 'not_in' => 'Odabrani :attribute je neispravan.',
+ 'not_regex' => 'Format :attribute je neispravan.',
+ 'numeric' => ':attribute mora biti broj.',
+ 'regex' => 'Format :attribute je neispravan.',
+ 'required' => 'Polje :attribute je obavezno.',
+ 'required_if' => 'Polje :attribute je obavezno kada :other ima vrijednost :value.',
+ 'required_with' => 'Polje :attribute je obavezno kada su prisutne :values.',
+ 'required_with_all' => 'Polje :attribute je obavezno kada su prisutne :values.',
+ 'required_without' => 'Polje :attribute je obavezno kada :values nisu prisutne.',
+ 'required_without_all' => 'Polje :attribute je obavezno kada nijedno od :values nije prisutno.',
+ 'same' => ':attribute i :other se moraju poklapati.',
+ 'safe_url' => 'Navedeni link možda nije siguran.',
+ 'size' => [
+ 'numeric' => ':attribute mora biti :size.',
+ 'file' => ':attribute mora imati :size kilobajta.',
+ 'string' => ':attribute mora imati :size karaktera.',
+ 'array' => ':attribute mora sadržavati :size stavki.',
+ ],
+ 'string' => ':attribute mora biti string.',
+ 'timezone' => ':attribute mora biti ispravna zona.',
+ 'totp' => 'The provided code is not valid or has expired.',
+ 'unique' => ':attribute je zauzet.',
+ 'url' => 'Format :attribute je neispravan.',
+ 'uploaded' => 'Fajl nije učitan. Server ne prihvata fajlove ove veličine.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Zahtijeva se potvrda lozinke',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/ca/activities.php b/lang/ca/activities.php
new file mode 100644
index 00000000000..4894c279aad
--- /dev/null
+++ b/lang/ca/activities.php
@@ -0,0 +1,140 @@
+ 'ha creat la pàgina',
+ 'page_create_notification' => 'S’ha creat la pàgina',
+ 'page_update' => 'ha actualitzat la pàgina',
+ 'page_update_notification' => 'S’ha actualitzat la pàgina',
+ 'page_delete' => 'ha suprimit la pàgina',
+ 'page_delete_notification' => 'S’ha suprimit la pàgina',
+ 'page_restore' => 'ha restaurat la pàgina',
+ 'page_restore_notification' => 'S’ha restaurat la pàgina',
+ 'page_move' => 'ha mogut la pàgina',
+ 'page_move_notification' => 'S’ha mogut la pàgina',
+
+ // Chapters
+ 'chapter_create' => 'S\'ha creat el capítol',
+ 'chapter_create_notification' => 'S’ha creat el capítol',
+ 'chapter_update' => 'ha actualitzat el capítol',
+ 'chapter_update_notification' => 'S’ha actualitzat el capítol',
+ 'chapter_delete' => 'ha suprimit el capítol',
+ 'chapter_delete_notification' => 'S’ha suprimit el capítol',
+ 'chapter_move' => 's\'ha mogut el capítol',
+ 'chapter_move_notification' => 'S’ha mogut el capítol',
+
+ // Books
+ 'book_create' => 'llibre creat',
+ 'book_create_notification' => 'S’ha creat el llibre',
+ 'book_create_from_chapter' => 'ha convertit el capítol a llibre',
+ 'book_create_from_chapter_notification' => 'S’ha convertit el capítol a llibre',
+ 'book_update' => 'llibre actualitzat',
+ 'book_update_notification' => 'S’ha actualitzat el llibre',
+ 'book_delete' => 'llibre suprimit',
+ 'book_delete_notification' => 'S’ha suprimit el llibre',
+ 'book_sort' => 'llibre ordenat',
+ 'book_sort_notification' => 'S’ha tornat a ordenar el llibre',
+
+ // Bookshelves
+ 'bookshelf_create' => 'ha creat el prestatge',
+ 'bookshelf_create_notification' => 'S’ha creat el prestatge',
+ 'bookshelf_create_from_book' => 'llibre convertit a prestatge',
+ 'bookshelf_create_from_book_notification' => 'S’ha convertit el llibre a prestatge',
+ 'bookshelf_update' => 'prestatge actualitzat',
+ 'bookshelf_update_notification' => 'S’ha actualitzat el prestatge',
+ 'bookshelf_delete' => 'prestatge suprimit',
+ 'bookshelf_delete_notification' => 'S’ha suprimit el prestatge',
+
+ // Revisions
+ 'revision_restore' => 'ha restaurat la revisió',
+ 'revision_delete' => 'ha suprimit la revisió',
+ 'revision_delete_notification' => 'S’ha suprimit la revisió',
+
+ // Favourites
+ 'favourite_add_notification' => 'S’ha afegit «:name» als favorits.',
+ 'favourite_remove_notification' => 'S’ha eliminat «:name» dels favorits.',
+
+ // Watching
+ 'watch_update_level_notification' => 'S’han actualitzat les preferències de seguiment',
+
+ // Auth
+ 'auth_login' => 'ha iniciat sessió',
+ 'auth_register' => 's’ha registrat com a usuari nou',
+ 'auth_password_reset_request' => 'ha sol·licitat la reinicialització de la contrasenya',
+ 'auth_password_reset_update' => 'ha reinicialitzat la contrasenya',
+ 'mfa_setup_method' => 'ha configurat un mètode d’autenticació multifactorial',
+ 'mfa_setup_method_notification' => 'S’ha configurat un mètode d’autenticació multifactorial',
+ 'mfa_remove_method' => 'ha eliminat un mètode d’autenticació multifactorial',
+ 'mfa_remove_method_notification' => 'S’ha eliminat un mètode d’autenticació multifactorial',
+
+ // Settings
+ 'settings_update' => 'ha actualitzat la configuració',
+ 'settings_update_notification' => 'S’ha actualitzat la configuració',
+ 'maintenance_action_run' => 'ha executat una acció de manteniment',
+
+ // Webhooks
+ 'webhook_create' => 'ha creat un webhook',
+ 'webhook_create_notification' => 'S’ha creat el webhook',
+ 'webhook_update' => 'ha actualitzat el webhook',
+ 'webhook_update_notification' => 'S’ha actualitzat el webhook',
+ 'webhook_delete' => 'ha suprimit el webhook',
+ 'webhook_delete_notification' => 'S’ha suprimit el webhook',
+
+ // Imports
+ 'import_create' => 'importació creada',
+ 'import_create_notification' => 'L\'importació s\'ha carregat correctament',
+ 'import_run' => 'importació actualitzada',
+ 'import_run_notification' => 'Contingut importat correctament',
+ 'import_delete' => 'importació eliminada',
+ 'import_delete_notification' => 'Importació eliminada correctament',
+
+ // Users
+ 'user_create' => 'ha creat l’usuari',
+ 'user_create_notification' => 'S’ha creat l’usuari',
+ 'user_update' => 'ha actualitzat l’usuari',
+ 'user_update_notification' => 'S’ha actualitzat l’usuari',
+ 'user_delete' => 'ha suprimit l’usuari',
+ 'user_delete_notification' => 'S’ha suprimit l’usuari',
+
+ // API Tokens
+ 'api_token_create' => 'ha creat el testimoni API',
+ 'api_token_create_notification' => 'S’ha creat el testimoni API',
+ 'api_token_update' => 'ha actualitzat el testimoni API',
+ 'api_token_update_notification' => 'S’ha actualitzat el testimoni API',
+ 'api_token_delete' => 'ha suprimit el testimoni API',
+ 'api_token_delete_notification' => 'S’ha suprimit el testimoni API',
+
+ // Roles
+ 'role_create' => 'ha creat el rol',
+ 'role_create_notification' => 'S’ha creat el rol',
+ 'role_update' => 'ha actualitzat el rol',
+ 'role_update_notification' => 'S’ha actualitzat el rol',
+ 'role_delete' => 'ha suprimit el rol',
+ 'role_delete_notification' => 'S’ha suprimit el rol',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'ha buidat la paperera',
+ 'recycle_bin_restore' => 'ha restaurat de la paperera',
+ 'recycle_bin_destroy' => 'ha eliminat de la paperera',
+
+ // Comments
+ 'commented_on' => 'ha comentat a',
+ 'comment_create' => 'ha afegit un comentari',
+ 'comment_update' => 'ha actualitzat un comentari',
+ 'comment_delete' => 'ha suprimit un comentari',
+
+ // Sort Rules
+ 'sort_rule_create' => 'crear regla d\'ordenació',
+ 'sort_rule_create_notification' => 'Regla d\'ordenació creada correctament',
+ 'sort_rule_update' => 'regla d\'ordenació actualitzada',
+ 'sort_rule_update_notification' => 'Regla d\'ordenació actualitzada correctament',
+ 'sort_rule_delete' => 'regla d\'ordenació eliminada',
+ 'sort_rule_delete_notification' => 'Regla d\'ordenació eliminada correctament',
+
+ // Other
+ 'permissions_update' => 'ha actualitzat els permisos',
+];
diff --git a/lang/ca/auth.php b/lang/ca/auth.php
new file mode 100644
index 00000000000..ba6ede42f0c
--- /dev/null
+++ b/lang/ca/auth.php
@@ -0,0 +1,117 @@
+ 'Aquestes credencials no existeixen al nostre registre.',
+ 'throttle' => 'Massa intents d’inici de sessió. Torneu-ho a provar d’aquí :seconds segons.',
+
+ // Login & Register
+ 'sign_up' => 'Registreu-vos',
+ 'log_in' => 'Inicia sessió',
+ 'log_in_with' => 'Inicia sessió amb :socialDriver',
+ 'sign_up_with' => 'Registreu-vos amb :socialDriver',
+ 'logout' => 'Tanca la sessió',
+
+ 'name' => 'Nom',
+ 'username' => 'Nom d’usuari',
+ 'email' => 'Correu electrònic',
+ 'password' => 'Contrasenya',
+ 'password_confirm' => 'Confirmeu la contrasenya',
+ 'password_hint' => 'Ha de tenir almenys 8 caràcters',
+ 'forgot_password' => 'Heu oblidat la contrasenya?',
+ 'remember_me' => 'Recorda’m',
+ 'ldap_email_hint' => 'Introduïu un correu electrònic per al compte.',
+ 'create_account' => 'Creeu un compte',
+ 'already_have_account' => 'Ja teniu un compte?',
+ 'dont_have_account' => 'No teniu cap compte?',
+ 'social_login' => 'Inici de sessió amb una xarxa social',
+ 'social_registration' => 'Registre amb una xarxa social',
+ 'social_registration_text' => 'Registreu-vos i inicieu sessió amb un altre servei.',
+
+ 'register_thanks' => 'Gràcies per registrar-vos.',
+ 'register_confirm' => 'Comproveu el correu electrònic i cliqueu el botó de confirmació per a accedir a :appName.',
+ 'registrations_disabled' => 'Els registres estan desactivats',
+ 'registration_email_domain_invalid' => 'Aquest domini de correu electrònic no té accés a l’aplicació.',
+ 'register_success' => 'Gràcies per registrar-vos Us heu registrat i heu iniciat sessió.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'S’està provant d’iniciar sessió',
+ 'auto_init_starting_desc' => 'Estem contactant amb el vostre sistema d’autenticació per a començar el procés d’inici sessió. Si d’aquí 5 segons no hi ha hagut cap progrés proveu de clicar l’enllaç.',
+ 'auto_init_start_link' => 'Continua amb la l’autenticació',
+
+ // Password Reset
+ 'reset_password' => 'Reinicialitza la contrasenya',
+ 'reset_password_send_instructions' => 'Introduïu la vostra adreça electrònica i us enviarem un correu electrònic amb un enllaç de reinicialització de la contrasenya.',
+ 'reset_password_send_button' => 'Envia’m un enllaç de reinicialització',
+ 'reset_password_sent' => 'Si l’adreça electrònica :email existeix al sistema, us hi enviarem un enllaç de reinicialització de contrasenya.',
+ 'reset_password_success' => 'S’ha reinicialitzat la contrasenya.',
+ 'email_reset_subject' => 'Reinicialització de la contrasenya de :appName',
+ 'email_reset_text' => 'Heu rebut aquest correu electrònic perquè hem rebut una sol·licitud de reinicialització de contrasenya per al vostre compte.',
+ 'email_reset_not_requested' => 'Si no heu sol·licitat la reinicialització de la contrasenya, no cal que feu res més.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Confirmeu l’adreça electrònica de :appName',
+ 'email_confirm_greeting' => 'Gràcies per registrar-vos a :appName!',
+ 'email_confirm_text' => 'Cliqueu el botó per a confirmar l’adreça electrònica:',
+ 'email_confirm_action' => 'Confirmeu d’adreça electrònica',
+ 'email_confirm_send_error' => 'S’ha de confirmar de l’adreça electrònica però no s’ha pogut enviar el correu de confirmació. Contacteu l’administrador per a assegurar-vos que el correu està ben configurat.',
+ 'email_confirm_success' => 'S’ha confirmat el correu electrònic. Ara hauríeu de poder iniciar sessió amb aquesta adreça electrònica.',
+ 'email_confirm_resent' => 'S’ha enviat el correu de confirmació. Comproveu la safata d’entrada.',
+ 'email_confirm_thanks' => 'Gràcies per la confirmació.',
+ 'email_confirm_thanks_desc' => 'Espereu-vos un moment mentre es gestiona la confirmació. Si d’aquí 3 segons no se us ha redirigit, cliqueu l’enllaç «Continua» per a continuar.',
+
+ 'email_not_confirmed' => 'No s’ha confirmat l’adreça de correu electrònic',
+ 'email_not_confirmed_text' => 'Encara no heu confirmat l’adreça electrònica.',
+ 'email_not_confirmed_click_link' => 'Cliqueu l’enllaç que hi ha al correu electrònic que se us va enviar en registrar-vos.',
+ 'email_not_confirmed_resend' => 'Si no trobeu el correu electrònic ompliu el formulari a continuació i us n’enviarem un altre.',
+ 'email_not_confirmed_resend_button' => 'Torna a enviar el correu de confirmació',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Us han convidat a utilitzar :appName!',
+ 'user_invite_email_greeting' => 'Us han creat un compte a :appName.',
+ 'user_invite_email_text' => 'Cliqueu el botó per a configurar una contrasenya pel compte i poder-hi accedir:',
+ 'user_invite_email_action' => 'Configura la contrasenya del compte',
+ 'user_invite_page_welcome' => 'Us donem la benvinguda a :appName!',
+ 'user_invite_page_text' => 'Per a poder accedir al compte heu de configurar una contrasenya que s’utilitzarà per a iniciar sessió a :appName d’ara endavant.',
+ 'user_invite_page_confirm_button' => 'Confirma la contrasenya',
+ 'user_invite_success_login' => 'S’ha configurat la contrasenya. Ara hauríeu de poder iniciar sessió a :appName amb la contrasenya configurada.',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Configuració de l’autenticació multifactorial',
+ 'mfa_setup_desc' => 'Configureu l’autenticació multifactorial per a afegir una capa de seguretat extra al vostre compte d’usuari.',
+ 'mfa_setup_configured' => 'Ja està configurat',
+ 'mfa_setup_reconfigure' => 'Torna-la a configurar',
+ 'mfa_setup_remove_confirmation' => 'Esteu segur que voleu eliminar aquest mètode d’autenticació multifactorial?',
+ 'mfa_setup_action' => 'Configura',
+ 'mfa_backup_codes_usage_limit_warning' => 'Us queden menys de 5 codis de suport. Genereu-ne de nous i deseu-los abans de quedar-vos-en sense per a evitar perdre l’accés al compte.',
+ 'mfa_option_totp_title' => 'Aplicació mòbil',
+ 'mfa_option_totp_desc' => 'Per a utilitzar l’autenticació multifactorial heu de tenir una aplicació que sigui compatible amb TOPT (contrasenyes d’un sol ús basades en el temps) com ara Google Authenticator, Authy, o Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Codis de suport',
+ 'mfa_option_backup_codes_desc' => 'Genereu un joc de codis de suport d’un sol ús que haureu d’introduir per a verificar la vostra identitat. Assegureu-vos de desar-los en un lloc segur.',
+ 'mfa_gen_confirm_and_enable' => 'Confirma i activa',
+ 'mfa_gen_backup_codes_title' => 'Configuració dels codis de suport',
+ 'mfa_gen_backup_codes_desc' => 'Deseu els codis en un lloc segur. Podreu utilitzar un dels codis com a un altre mètode d’autenticació per a iniciar sessió.',
+ 'mfa_gen_backup_codes_download' => 'Baixa els codis',
+ 'mfa_gen_backup_codes_usage_warning' => 'Només podeu utilitzar cada codi un sol cop.',
+ 'mfa_gen_totp_title' => 'Configuració de l’aplicació mòbil',
+ 'mfa_gen_totp_desc' => 'Per a utilitzar l’autenticació multifactorial heu de tenir una aplicació que sigui compatible amb TOPT (contrasenyes d’un sol ús basades en el temps) com ara Google Authenticator, Authy, o Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Escanegeu el codi QR amb l’aplicació d’autenticació que preferiu per a començar.',
+ 'mfa_gen_totp_verify_setup' => 'Verificació de la configuració',
+ 'mfa_gen_totp_verify_setup_desc' => 'Introduïu un dels codis generats per l’aplicació d’autenticació per a verificar que tot funciona:',
+ 'mfa_gen_totp_provide_code_here' => 'Codi',
+ 'mfa_verify_access' => 'Verifica l’accés',
+ 'mfa_verify_access_desc' => 'Heu de verificar la vostra identitat amb un nivell de verificació addicional per a iniciar sessió. Verifiqueu-la amb un dels mètodes que heu configurat per a continuar.',
+ 'mfa_verify_no_methods' => 'No hi ha cap mètode configurat',
+ 'mfa_verify_no_methods_desc' => 'No hi ha cap mètode d’autenticació multifactorial configurat al vostre compte. Heu de configurar com a mínim un mètode per a iniciar sessió.',
+ 'mfa_verify_use_totp' => 'Verificació amb una aplicació mòbil',
+ 'mfa_verify_use_backup_codes' => 'Verificació amb un codi de suport',
+ 'mfa_verify_backup_code' => 'Codi de suport',
+ 'mfa_verify_backup_code_desc' => 'Introduïu un dels codis de suport que us quedin:',
+ 'mfa_verify_backup_code_enter_here' => 'Codi:',
+ 'mfa_verify_totp_desc' => 'Introduïu el codi generat per l’aplicació mòbil:',
+ 'mfa_setup_login_notification' => 'S’ha configurat el mètode multifactorial. Torneu a iniciar sessió amb el mètode configurat.',
+];
diff --git a/lang/ca/common.php b/lang/ca/common.php
new file mode 100644
index 00000000000..8976edaa127
--- /dev/null
+++ b/lang/ca/common.php
@@ -0,0 +1,115 @@
+ 'Cancel·la',
+ 'close' => 'Tanca',
+ 'confirm' => 'Confirma',
+ 'back' => 'Torna',
+ 'save' => 'Desa',
+ 'continue' => 'Continua',
+ 'select' => 'Selecciona',
+ 'toggle_all' => 'Commuta-ho tot',
+ 'more' => 'Més',
+
+ // Form Labels
+ 'name' => 'Nom',
+ 'description' => 'Descripció',
+ 'role' => 'Funció',
+ 'cover_image' => 'Imatge de coberta',
+ 'cover_image_description' => 'La imatge ha de ser d’uns 440×250px, però quan calgui se n’ajustarà la mida o s’escapçarà per a adaptar-la a la interfície d’usuari i les mides amb què es mostrarà canviaran.',
+
+ // Actions
+ 'actions' => 'Accions',
+ 'view' => 'Mostra',
+ 'view_all' => 'Mostra-ho tot',
+ 'new' => 'Nou',
+ 'create' => 'Crea',
+ 'update' => 'Actualitza',
+ 'edit' => 'Edita',
+ 'archive' => 'Arxivar',
+ 'unarchive' => 'Desarxivar',
+ 'sort' => 'Ordena',
+ 'move' => 'Mou',
+ 'copy' => 'Copia',
+ 'reply' => 'Respon',
+ 'delete' => 'Suprimeix',
+ 'delete_confirm' => 'Confirma la supressió',
+ 'search' => 'Cerca',
+ 'search_clear' => 'Esborra la cerca',
+ 'reset' => 'Reinicialitza',
+ 'remove' => 'Elimina',
+ 'add' => 'Afegeix',
+ 'configure' => 'Configura',
+ 'manage' => 'Gestiona',
+ 'fullscreen' => 'Pantalla completa',
+ 'favourite' => 'Afegeix als favorits',
+ 'unfavourite' => 'Suprimeix dels favorits',
+ 'next' => 'Endavant',
+ 'previous' => 'Endarrere',
+ 'filter_active' => 'Filtre actiu:',
+ 'filter_clear' => 'Esborra el filtre',
+ 'download' => 'Baixa',
+ 'open_in_tab' => 'Obre en una pestanya',
+ 'open' => 'Obre',
+
+ // Sort Options
+ 'sort_options' => 'Opcions d’ordenació',
+ 'sort_direction_toggle' => 'Inverteix l’ordre',
+ 'sort_ascending' => 'Ordenació ascendent',
+ 'sort_descending' => 'Ordenació descendent',
+ 'sort_name' => 'Nom',
+ 'sort_default' => 'Predeterminat',
+ 'sort_created_at' => 'Data de creació',
+ 'sort_updated_at' => 'Data d’actualització',
+
+ // Misc
+ 'deleted_user' => 'Usuari suprimit',
+ 'no_activity' => 'No hi ha cap activitat per mostrar',
+ 'no_items' => 'No hi ha cap element disponible',
+ 'back_to_top' => 'Amunt',
+ 'skip_to_main_content' => 'Ves al contingut principal',
+ 'toggle_details' => 'Commuta els detalls',
+ 'toggle_thumbnails' => 'Commuta les miniatures',
+ 'details' => 'Detalls',
+ 'grid_view' => 'Visualització en graella',
+ 'list_view' => 'Visualització en llista',
+ 'default' => 'Predeterminat',
+ 'breadcrumb' => 'Ruta de navegació',
+ 'status' => 'Estat',
+ 'status_active' => 'Actiu',
+ 'status_inactive' => 'Inactiu',
+ 'never' => 'Mai',
+ 'none' => 'Cap',
+
+ // Header
+ 'homepage' => 'Pàgina d’inici',
+ 'header_menu_expand' => 'Desplega el menú de la capçalera',
+ 'profile_menu' => 'Menú del perfil',
+ 'view_profile' => 'Mostra el perfil',
+ 'edit_profile' => 'Edita el perfil',
+ 'dark_mode' => 'Mode fosc',
+ 'light_mode' => 'Mode clar',
+ 'global_search' => 'Cerca global',
+
+ // Layout tabs
+ 'tab_info' => 'Informació',
+ 'tab_info_label' => 'Pestanya: Mostra la informació secundària',
+ 'tab_content' => 'Contingut',
+ 'tab_content_label' => 'Pestanya: Mostra el contingut principal',
+
+ // Email Content
+ 'email_action_help' => 'Si el botó «:actionText» no funciona, copieu i enganxeu l’URL següent al vostre navegador:',
+ 'email_rights' => 'Tots els drets reservats',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Política de privadesa',
+ 'terms_of_service' => 'Condicions del servei',
+
+ // OpenSearch
+ 'opensearch_description' => 'Buscar :appName',
+];
diff --git a/lang/ca/components.php b/lang/ca/components.php
new file mode 100644
index 00000000000..c1494ec53a9
--- /dev/null
+++ b/lang/ca/components.php
@@ -0,0 +1,46 @@
+ 'Selecciona una imatge',
+ 'image_list' => 'Llista d’imatges',
+ 'image_details' => 'Detalls de la imatge',
+ 'image_upload' => 'Puja una imatge',
+ 'image_intro' => 'Seleccioneu i gestioneu les imatges que s’han pujat al sistema amb anterioritat.',
+ 'image_intro_upload' => 'Pugeu una imatge arrossegant-la i deixant-la anar en aquesta finestra o amb el botó «Puja una imatge».',
+ 'image_all' => 'Totes',
+ 'image_all_title' => 'Mostra totes les imatges',
+ 'image_book_title' => 'Mostra les imatges pujades en aquest llibre',
+ 'image_page_title' => 'Mostra les imatges pujades en aquesta pàgina',
+ 'image_search_hint' => 'Cerca pel nom de la imatge',
+ 'image_uploaded' => 'Pujada el :uploadedDate',
+ 'image_uploaded_by' => 'Pujada per :userName',
+ 'image_uploaded_to' => 'Pujada a :pageLink',
+ 'image_updated' => 'Actualitzada el :updateDate',
+ 'image_load_more' => 'Carrega’n més',
+ 'image_image_name' => 'Nom de la imatge',
+ 'image_delete_used' => 'Aquesta imatge s’utilitza en les pàgines següents.',
+ 'image_delete_confirm_text' => 'Esteu segur que voleu suprimir aquesta imatge?',
+ 'image_select_image' => 'Selecció d’imatges',
+ 'image_dropzone' => 'Deixeu-hi anar les imatges o cliqueu aquí per a pujar-ne',
+ 'image_dropzone_drop' => 'Deixeu-hi anar les imatges per a pujar-les',
+ 'images_deleted' => 'Imatges suprimides',
+ 'image_preview' => 'Previsualització de la imatge',
+ 'image_upload_success' => 'S’ha pujat la imatge',
+ 'image_update_success' => 'S’han actualitzat els detalls de la imatge',
+ 'image_delete_success' => 'S’ha suprimit la imatge',
+ 'image_replace' => 'Substitueix la imatge',
+ 'image_replace_success' => 'S’ha substituït la imatge',
+ 'image_rebuild_thumbs' => 'Regenera les variacions de mida',
+ 'image_rebuild_thumbs_success' => 'S’han regenerat les variacions de mida',
+
+ // Code Editor
+ 'code_editor' => 'Edita el codi',
+ 'code_language' => 'Llenguatge de codificació',
+ 'code_content' => 'Contingut del codi',
+ 'code_session_history' => 'Historial de la sessió',
+ 'code_save' => 'Desa el codi',
+];
diff --git a/lang/ca/editor.php b/lang/ca/editor.php
new file mode 100644
index 00000000000..e19d82f8f3c
--- /dev/null
+++ b/lang/ca/editor.php
@@ -0,0 +1,182 @@
+ 'General',
+ 'advanced' => 'Avançat',
+ 'none' => 'Cap',
+ 'cancel' => 'Cancel·la',
+ 'save' => 'Desa',
+ 'close' => 'Tanca',
+ 'apply' => 'Aplicar',
+ 'undo' => 'Desfés',
+ 'redo' => 'Refés',
+ 'left' => 'Esquerra',
+ 'center' => 'Centre',
+ 'right' => 'Dreta',
+ 'top' => 'Dalt',
+ 'middle' => 'Mig',
+ 'bottom' => 'Baix',
+ 'width' => 'Amplada',
+ 'height' => 'Altura',
+ 'More' => 'Més',
+ 'select' => 'Selecciona …',
+
+ // Toolbar
+ 'formats' => 'Formats',
+ 'header_large' => 'Títol gros',
+ 'header_medium' => 'Títol mitjà',
+ 'header_small' => 'Títol petit',
+ 'header_tiny' => 'Títol minúscul',
+ 'paragraph' => 'Paràgraf',
+ 'blockquote' => 'Bloc de cita',
+ 'inline_code' => 'Línia de codi',
+ 'callouts' => 'Crides',
+ 'callout_information' => 'Informació',
+ 'callout_success' => 'Èxit',
+ 'callout_warning' => 'Advertiment',
+ 'callout_danger' => 'Perill',
+ 'bold' => 'Negreta',
+ 'italic' => 'Cursiva',
+ 'underline' => 'Subratllat',
+ 'strikethrough' => 'Ratllat',
+ 'superscript' => 'Superíndex',
+ 'subscript' => 'Subíndex',
+ 'text_color' => 'Color del text',
+ 'highlight_color' => 'Color ressaltat',
+ 'custom_color' => 'Color personalitzat',
+ 'remove_color' => 'Elimina el color',
+ 'background_color' => 'Color de fons',
+ 'align_left' => 'Alinea a l’esquerra',
+ 'align_center' => 'Alinea al centre',
+ 'align_right' => 'Alinea a la dreta',
+ 'align_justify' => 'Justifica',
+ 'list_bullet' => 'Llista de pics',
+ 'list_numbered' => 'Llista numerada',
+ 'list_task' => 'Llista de caselles',
+ 'indent_increase' => 'Augmenta la sagnia',
+ 'indent_decrease' => 'Redueix la sagnia',
+ 'table' => 'Taula',
+ 'insert_image' => 'Insereix una imatge',
+ 'insert_image_title' => 'Insereix o edita una imatge',
+ 'insert_link' => 'Insereix un enllaç',
+ 'insert_link_title' => 'Insereix o edita un enllaç',
+ 'insert_horizontal_line' => 'Insereix una línia horitzontal',
+ 'insert_code_block' => 'Insereix un bloc de codi',
+ 'edit_code_block' => 'Edita el bloc de codi',
+ 'insert_drawing' => 'Insereix o edita un diagrama',
+ 'drawing_manager' => 'Gestor de diagrames',
+ 'insert_media' => 'Insereix o edita un contingut multimèdia',
+ 'insert_media_title' => 'Insereix o edita un contingut multimèdia',
+ 'clear_formatting' => 'Lleva el format',
+ 'source_code' => 'Codi font',
+ 'source_code_title' => 'Codi font',
+ 'fullscreen' => 'Pantalla completa',
+ 'image_options' => 'Opcions d’imatge',
+
+ // Tables
+ 'table_properties' => 'Propietats de la taula',
+ 'table_properties_title' => 'Propietats de la taula',
+ 'delete_table' => 'Suprimeix la taula',
+ 'table_clear_formatting' => 'Lleva el format de la taula',
+ 'resize_to_contents' => 'Ajusta al contingut',
+ 'row_header' => 'Capçalera de la fila',
+ 'insert_row_before' => 'Insereix una fila abans',
+ 'insert_row_after' => 'Insereix una fila després',
+ 'delete_row' => 'Suprimeix la fila',
+ 'insert_column_before' => 'Insereix una columna abans',
+ 'insert_column_after' => 'Insereix una columna després',
+ 'delete_column' => 'Suprimeix la columna',
+ 'table_cell' => 'Cel·la',
+ 'table_row' => 'Fila',
+ 'table_column' => 'Columna',
+ 'cell_properties' => 'Propietats de la cel·la',
+ 'cell_properties_title' => 'Propietats de la cel·la',
+ 'cell_type' => 'Tipus de cel·la',
+ 'cell_type_cell' => 'Cel·la',
+ 'cell_scope' => 'Àmbit de la cel·la',
+ 'cell_type_header' => 'Cel·la de capçalera',
+ 'merge_cells' => 'Combina les cel·les',
+ 'split_cell' => 'Divideix la cel·la',
+ 'table_row_group' => 'Grup de files',
+ 'table_column_group' => 'Grup de columnes',
+ 'horizontal_align' => 'Alineació horitzontal',
+ 'vertical_align' => 'Alineació vertical',
+ 'border_width' => 'Amplada de la vora',
+ 'border_style' => 'Estil de la vora',
+ 'border_color' => 'Color de la vora',
+ 'row_properties' => 'Propietats de la fila',
+ 'row_properties_title' => 'Propietats de la fila',
+ 'cut_row' => 'Retalla la fila',
+ 'copy_row' => 'Copia la fila',
+ 'paste_row_before' => 'Enganxa la fila abans',
+ 'paste_row_after' => 'Enganxa la fila després',
+ 'row_type' => 'Tipus de fila',
+ 'row_type_header' => 'Capçalera',
+ 'row_type_body' => 'Cos',
+ 'row_type_footer' => 'Peu',
+ 'alignment' => 'Alineació',
+ 'cut_column' => 'Retalla la columna',
+ 'copy_column' => 'Copia la columna',
+ 'paste_column_before' => 'Enganxa la columna abans',
+ 'paste_column_after' => 'Enganxa la columna després',
+ 'cell_padding' => 'Separació de cel·la',
+ 'cell_spacing' => 'Espaiat de cel·la',
+ 'caption' => 'Llegenda',
+ 'show_caption' => 'Mostra la llegenda',
+ 'constrain' => 'Mantén les proporcions',
+ 'cell_border_solid' => 'Sòlida',
+ 'cell_border_dotted' => 'De punts',
+ 'cell_border_dashed' => 'De guions',
+ 'cell_border_double' => 'Doble',
+ 'cell_border_groove' => 'Vora enfonsada',
+ 'cell_border_ridge' => 'Vora ressaltada',
+ 'cell_border_inset' => 'Fons enfonsat',
+ 'cell_border_outset' => 'Fons ressaltat',
+ 'cell_border_none' => 'Sense vora',
+ 'cell_border_hidden' => 'Amagada',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Font',
+ 'alt_desc' => 'Descripció alternativa',
+ 'embed' => 'Incrusta',
+ 'paste_embed' => 'Enganxa el codi per a incrustar a sota:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Text per a mostrar',
+ 'title' => 'Títol',
+ 'browse_links' => 'Explorar enllaços',
+ 'open_link' => 'Obre l’enllaç',
+ 'open_link_in' => 'Obre l’enllaç…',
+ 'open_link_current' => 'A la finestra actual',
+ 'open_link_new' => 'En una finestra nova',
+ 'remove_link' => 'Lleva l’enllaç',
+ 'insert_collapsible' => 'Insereix un bloc desplegable',
+ 'collapsible_unwrap' => 'Lleva el bloc desplegable',
+ 'edit_label' => 'Edita l’etiqueta',
+ 'toggle_open_closed' => 'Obre o tanca',
+ 'collapsible_edit' => 'Edita el bloc desplegable',
+ 'toggle_label' => 'Commuta l’etiqueta',
+
+ // About view
+ 'about' => 'Quant a l’Editor',
+ 'about_title' => 'Quant a l’Editor WYSIWYG',
+ 'editor_license' => 'Llicència i copyright de l’Editor',
+ 'editor_lexical_license' => 'Aquest editor està construït com una bifurcació de :lexicalLink i es distribueix sota la llicència MIT.',
+ 'editor_lexical_license_link' => 'Tots els detalls complets de la llicència es poden trobar aquí.',
+ 'editor_tiny_license' => 'Aquest editor s’ha creat amb :tinyLink que es proporciona amb la llicència MIT.',
+ 'editor_tiny_license_link' => 'Detalls de la llicència i el copyright de TinyMCE.',
+ 'save_continue' => 'Desa la pàgina i continua',
+ 'callouts_cycle' => '(Continueu prement per a canviar entre tipus)',
+ 'link_selector' => 'Enllaç a contingut',
+ 'shortcuts' => 'Dreceres de teclat',
+ 'shortcut' => 'Drecera',
+ 'shortcuts_intro' => 'A l’editor, hi ha disponibles les dreceres de teclat següents:',
+ 'windows_linux' => '(Windows o Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Descripció',
+];
diff --git a/lang/ca/entities.php b/lang/ca/entities.php
new file mode 100644
index 00000000000..108a38c2c50
--- /dev/null
+++ b/lang/ca/entities.php
@@ -0,0 +1,476 @@
+ 'Elements creats recentment',
+ 'recently_created_pages' => 'Pàgines creades recentment',
+ 'recently_updated_pages' => 'Pàgines actualitzades recentment',
+ 'recently_created_chapters' => 'Capítols creats recentment',
+ 'recently_created_books' => 'Llibres creats recentment',
+ 'recently_created_shelves' => 'Prestatges creats recentment',
+ 'recently_update' => 'Elements actualitzats recentment',
+ 'recently_viewed' => 'Elements vistos recentment',
+ 'recent_activity' => 'Activitat recent',
+ 'create_now' => 'Crea un element',
+ 'revisions' => 'Revisions',
+ 'meta_revision' => 'Revisió núm. :revisionCount',
+ 'meta_created' => 'S’ha creat :timeLength',
+ 'meta_created_name' => ':user l’ha creat :timeLength',
+ 'meta_updated' => 'S’ha actualitzat :timeLength',
+ 'meta_updated_name' => ':user l’ha actualitzat :timeLength',
+ 'meta_owned_name' => 'Propietat de :user',
+ 'meta_reference_count' => 'S’hi fa referència en :count element|S’hi fa referència en :count elements',
+ 'entity_select' => 'Selecció de l’entitat',
+ 'entity_select_lack_permission' => 'No teniu els permisos necessaris per a seleccionar aquest element',
+ 'images' => 'Imatges',
+ 'my_recent_drafts' => 'Els meus esborranys recents',
+ 'my_recently_viewed' => 'Els meus vistos recentment',
+ 'my_most_viewed_favourites' => 'Els meus favorits més vistos',
+ 'my_favourites' => 'Els meus favorits',
+ 'no_pages_viewed' => 'No heu vist cap pàgina',
+ 'no_pages_recently_created' => 'No s’ha creat cap pàgina recentment',
+ 'no_pages_recently_updated' => 'No s’ha actualitzat cap pàgina recentment',
+ 'export' => 'Exporta',
+ 'export_html' => 'Fitxer web independent',
+ 'export_pdf' => 'Fitxer PDF',
+ 'export_text' => 'Fitxer de text sense format',
+ 'export_md' => 'Fitxer Markdown',
+ 'export_zip' => 'ZIP portable',
+ 'default_template' => 'Plantilla de pàgina per defecte',
+ 'default_template_explain' => 'Assigna una plantilla de pàgina que s\'utilitzarà com a contingut predeterminat per a totes les pàgines creades en aquest element. Tingues en compte que això només s\'utilitzarà si el creador de pàgines té accés a la plantilla de pàgina triada.',
+ 'default_template_select' => 'Seleccioneu una plantilla de pàgina',
+ 'import' => 'Importar',
+ 'import_validate' => 'Validar importació',
+ 'import_desc' => 'Importar llibres, capítols i pàgines utilitzant una exportació ZIP portable de la mateixa o una altra instància. Selecciona un arxiu ZIP per continuar. Després que l\'arxiu s\'hagi penjat i validat, podrà configurar i confirmar l\'importació en la següent vista.',
+ 'import_zip_select' => 'Seleccioneu un fitxer ZIP per pujar',
+ 'import_zip_validation_errors' => 'S\'han detectat errors al validar l\'arxiu ZIP proporcionat:',
+ 'import_pending' => 'Importació pendent',
+ 'import_pending_none' => 'No s\'han iniciat les importacions.',
+ 'import_continue' => 'Continuar importació',
+ 'import_continue_desc' => 'Revisa el contingut que s\'ha d\'importar de l\'arxiu ZIP penjat. Quan estigui llest, executa l\'importació per afegir el seu contingut al sistema. L\'arxiu d\'importació ZIP penjat s\'eliminarà automàticament al finalitzar l\'importació correctament.',
+ 'import_details' => 'Detalls d\'importació',
+ 'import_run' => 'Executar importació',
+ 'import_size' => ':size Mida de l\'arxiu ZIP',
+ 'import_uploaded_at' => 'Penjat :relativeTime',
+ 'import_uploaded_by' => 'Actualitzat per',
+ 'import_location' => 'Importar ubicació',
+ 'import_location_desc' => 'Selecciona una ubicació de destí pel contingut importat. Necessitarà els permisos pertinents per crear-lo dins de la ubicació triada.',
+ 'import_delete_confirm' => 'Esteu segur que voleu suplir aquesta importació?',
+ 'import_delete_desc' => 'Això eliminarà l\'arxiu ZIP d\'importació penjat i no es pot desfer.',
+ 'import_errors' => 'Importar errors',
+ 'import_errors_desc' => 'S\'han produït els següents errors durant l\'intent d\'importació:',
+ 'breadcrumb_siblings_for_page' => 'Navegar entre pàgines del mateix nivell',
+ 'breadcrumb_siblings_for_chapter' => 'Navegar entre capítols del mateix nivell',
+ 'breadcrumb_siblings_for_book' => 'Navegar entre llibres del mateix nivell',
+ 'breadcrumb_siblings_for_bookshelf' => 'Navegar entre llibreries del mateix nivell',
+
+ // Permissions and restrictions
+ 'permissions' => 'Permisos',
+ 'permissions_desc' => 'Configureu aquí els permisos per a sobreescriure els permisos per defecte proporcionats pels rols d’usuari.',
+ 'permissions_book_cascade' => 'Els permisos dels llibres s’aplicaran també als capítols i les pàgines que continguin llevat que tinguin els seus propis permisos.',
+ 'permissions_chapter_cascade' => 'Els permisos dels capítols s’aplicaran també a les pàgines que continguin llevat que tinguin els seus propis permisos.',
+ 'permissions_save' => 'Desa els permisos',
+ 'permissions_owner' => 'Propietari',
+ 'permissions_role_everyone_else' => 'La resta dels usuaris',
+ 'permissions_role_everyone_else_desc' => 'Configureu permisos per a tots els rols que no s’hagin sobreescrit específicament.',
+ 'permissions_role_override' => 'Sobreescriu els permisos per al rol',
+ 'permissions_inherit_defaults' => 'Hereta la configuració per defecte',
+
+ // Search
+ 'search_results' => 'Resultats de la cerca',
+ 'search_total_results_found' => 'S’ha trobat :count coincidència|S’han trobat :count coincidències',
+ 'search_clear' => 'Esborra la cerca',
+ 'search_no_pages' => 'No s’ha trobat cap pàgina que coincideixi amb la cerca',
+ 'search_for_term' => 'Cerca :term',
+ 'search_more' => 'Més resultats',
+ 'search_advanced' => 'Cerca avançada',
+ 'search_terms' => 'Termes de cerca',
+ 'search_content_type' => 'Tipus de contingut',
+ 'search_exact_matches' => 'Coincidències exactes',
+ 'search_tags' => 'Cerca d’etiquetes',
+ 'search_options' => 'Opcions',
+ 'search_viewed_by_me' => 'Vistos per mi',
+ 'search_not_viewed_by_me' => 'No vistos per mi',
+ 'search_permissions_set' => 'Amb permisos',
+ 'search_created_by_me' => 'Creats per mi',
+ 'search_updated_by_me' => 'Actualitzats per mi',
+ 'search_owned_by_me' => 'En soc propietari',
+ 'search_date_options' => 'Opcions de data',
+ 'search_updated_before' => 'Actualitzats abans de',
+ 'search_updated_after' => 'Actualitzats després de',
+ 'search_created_before' => 'Creats abans de',
+ 'search_created_after' => 'Creats després de',
+ 'search_set_date' => 'Defineix una data',
+ 'search_update' => 'Actualitza la cerca',
+
+ // Shelves
+ 'shelf' => 'Prestatge',
+ 'shelves' => 'Prestatges',
+ 'x_shelves' => ':count prestatge|:count prestatges',
+ 'shelves_empty' => 'No hi ha cap prestatge',
+ 'shelves_create' => 'Crea un prestatge',
+ 'shelves_popular' => 'Prestatges populars',
+ 'shelves_new' => 'Prestatges nous',
+ 'shelves_new_action' => 'Prestatge nou',
+ 'shelves_popular_empty' => 'Aquí apareixeran els prestatges més populars.',
+ 'shelves_new_empty' => 'Aquí apareixeran els prestatges més recents.',
+ 'shelves_save' => 'Desa el prestatge',
+ 'shelves_books' => 'Llibres en aquest prestatge',
+ 'shelves_add_books' => 'Afegiu llibres en aquest prestatge',
+ 'shelves_drag_books' => 'Arrossegueu i deixeu anar llibres a sota per a afegir-los en aquest prestatge',
+ 'shelves_empty_contents' => 'Aquest prestatge no té cap llibre',
+ 'shelves_edit_and_assign' => 'Editeu el prestatge per a afegir-hi llibres',
+ 'shelves_edit_named' => 'Edita el prestatge «:name»',
+ 'shelves_edit' => 'Edita el prestatge',
+ 'shelves_delete' => 'Suprimeix el prestatge',
+ 'shelves_delete_named' => 'Suprimeix del prestatge «:name»',
+ 'shelves_delete_explain' => "Se suprimirà el prestatge «:name». No se suprimiran els llibres que contingui.",
+ 'shelves_delete_confirmation' => 'Esteu segur que voleu suprimir aquest prestatge?',
+ 'shelves_permissions' => 'Permisos del prestatge',
+ 'shelves_permissions_updated' => 'S’han actualitzat els permisos del prestatge',
+ 'shelves_permissions_active' => 'El prestatge té permisos',
+ 'shelves_permissions_cascade_warning' => 'Els permisos dels prestatges no s’aplicaran als llibres que contingui. Això és perquè els llibres poden estar en més d’un prestatge a la vegada. Això no obstant, els permisos es poden copiar als llibres que contingui amb l’opció de sota.',
+ 'shelves_permissions_create' => 'Els permisos per a crear prestatges només s’utilitzen per a copiar permisos als llibres que contenen amb l’acció de sota. No controlen els permisos per a crear llibres.',
+ 'shelves_copy_permissions_to_books' => 'Copia els permisos als llibres',
+ 'shelves_copy_permissions' => 'Copia els permisos',
+ 'shelves_copy_permissions_explain' => 'S’aplicaran els permisos del prestatge a tots els llibres que contingui. Abans de continuar assegureu-vos que heu desat els canvis que hàgiu fet als permisos del prestatge.',
+ 'shelves_copy_permission_success' => 'S’han copiat els permisos del prestatge a :count llibres',
+
+ // Books
+ 'book' => 'Llibre',
+ 'books' => 'Llibres',
+ 'x_books' => ':count llibre|:count llibres',
+ 'books_empty' => 'No hi ha cap llibre',
+ 'books_popular' => 'Llibres populars',
+ 'books_recent' => 'Llibres recents',
+ 'books_new' => 'Llibres nous',
+ 'books_new_action' => 'Llibre nou',
+ 'books_popular_empty' => 'Aquí apareixeran els llibres més populars.',
+ 'books_new_empty' => 'Aquí apareixeran els llibres més recents.',
+ 'books_create' => 'Crea un llibre',
+ 'books_delete' => 'Suprimeix el llibre',
+ 'books_delete_named' => 'Suprimeix el llibre «:bookName»',
+ 'books_delete_explain' => 'Se suprimirà el llibre «:bookName». Se suprimiran totes les pàgines i capítols.',
+ 'books_delete_confirmation' => 'Esteu segur que voleu suprimir aquest llibre?',
+ 'books_edit' => 'Edita el llibre',
+ 'books_edit_named' => 'Edita el llibre «:bookName»',
+ 'books_form_book_name' => 'Títol del llibre',
+ 'books_save' => 'Desa el llibre',
+ 'books_permissions' => 'Permisos del llibre',
+ 'books_permissions_updated' => 'S’han actualitzat els permisos',
+ 'books_empty_contents' => 'No hi ha cap capítol ni cap pàgina en aquest llibre.',
+ 'books_empty_create_page' => 'Crea una pàgina',
+ 'books_empty_sort_current_book' => 'Ordena el llibre',
+ 'books_empty_add_chapter' => 'Afegeix un capítol',
+ 'books_permissions_active' => 'El llibre té permisos',
+ 'books_search_this' => 'Cerca en aquest llibre',
+ 'books_navigation' => 'Navegació del llibre',
+ 'books_sort' => 'Ordena el contingut d’un llibre',
+ 'books_sort_desc' => 'Mou capítols i pàgines dins d\'un llibre per reorganitzar el seu contingut. Es poden afegir altres llibres que permetin moure fàcilment capítols i pàgines entre llibres. De manera opcional, es poden establir regles d\'ordenació automàtica per ordenar automàticament el contingut d\'aquest llibre quan hi hagi canvis.',
+ 'books_sort_auto_sort' => 'Opció d\'ordenació automàtica',
+ 'books_sort_auto_sort_active' => 'Opció d\'ordenació activa :sortName',
+ 'books_sort_named' => 'Ordena el llibre «:bookName»',
+ 'books_sort_name' => 'Ordena pel nom',
+ 'books_sort_created' => 'Ordena per la data de creació',
+ 'books_sort_updated' => 'Ordena per la data d’actualització',
+ 'books_sort_chapters_first' => 'Capítols al principi',
+ 'books_sort_chapters_last' => 'Capítols al final',
+ 'books_sort_show_other' => 'Mostra altres llibres',
+ 'books_sort_save' => 'Desa l’ordre nou',
+ 'books_sort_show_other_desc' => 'Afegiu llibres per a incloure’ls en l’ordenació i permetre una reorganització entre llibres més senzilla.',
+ 'books_sort_move_up' => 'Mou-ho cap amunt',
+ 'books_sort_move_down' => 'Mou-ho cap avall',
+ 'books_sort_move_prev_book' => 'Mou-ho al llibre anterior',
+ 'books_sort_move_next_book' => 'Mou-ho al llibre següent',
+ 'books_sort_move_prev_chapter' => 'Mou-ho al capítol anterior',
+ 'books_sort_move_next_chapter' => 'Mou-ho al capítol següent',
+ 'books_sort_move_book_start' => 'Mou-ho al principi del llibre',
+ 'books_sort_move_book_end' => 'Mou-ho al final del llibre',
+ 'books_sort_move_before_chapter' => 'Mou-ho a abans del capítol',
+ 'books_sort_move_after_chapter' => 'Mou-ho a després del capítol',
+ 'books_copy' => 'Copia el llibre',
+ 'books_copy_success' => 'S’ha copiat el llibre',
+
+ // Chapters
+ 'chapter' => 'Capítol',
+ 'chapters' => 'Capítols',
+ 'x_chapters' => ':count capítol|:count capítols',
+ 'chapters_popular' => 'Capítols populars',
+ 'chapters_new' => 'Capítol nou',
+ 'chapters_create' => 'Crea un capítol',
+ 'chapters_delete' => 'Suprimeix un capítol',
+ 'chapters_delete_named' => 'Suprimeix el capítol «:chapterName»',
+ 'chapters_delete_explain' => 'Se suprimirà el capítol «:chapterName». Se suprimiran totes les pàgines que hi ha al capítol.',
+ 'chapters_delete_confirm' => 'Esteu segur que voleu suprimir aquest capítol?',
+ 'chapters_edit' => 'Edita el capítol',
+ 'chapters_edit_named' => 'Edita el capítol «:chapterName»',
+ 'chapters_save' => 'Desa el capítol',
+ 'chapters_move' => 'Mou el capítol',
+ 'chapters_move_named' => 'Mou el capítol «:chapterName»',
+ 'chapters_copy' => 'Copia el capítol',
+ 'chapters_copy_success' => 'S’ha copiat el capítol',
+ 'chapters_permissions' => 'Permisos del capítol',
+ 'chapters_empty' => 'No hi ha cap pàgina en aquest capítol.',
+ 'chapters_permissions_active' => 'El capítol té permisos',
+ 'chapters_permissions_success' => 'S’han actualitzat els permisos del capítol',
+ 'chapters_search_this' => 'Cerca en aquest capítol',
+ 'chapter_sort_book' => 'Ordena el llibre',
+
+ // Pages
+ 'page' => 'Pàgina',
+ 'pages' => 'Pàgines',
+ 'x_pages' => ':count pàgina|:count pàgines',
+ 'pages_popular' => 'Pàgines populars',
+ 'pages_new' => 'Crea una pàgina',
+ 'pages_attachments' => 'Fitxers adjunts',
+ 'pages_navigation' => 'Navegació de la pàgina',
+ 'pages_delete' => 'Suprimeix la pàgina',
+ 'pages_delete_named' => 'Suprimeix la pàgina «:pageName»',
+ 'pages_delete_draft_named' => 'Suprimeix l’esborrany de pàgina «:pageName»',
+ 'pages_delete_draft' => 'Suprimeix l’esborrany de pàgina',
+ 'pages_delete_success' => 'S’ha suprimit la pàgina',
+ 'pages_delete_draft_success' => 'S’ha suprimit l’esborrany de pàgina',
+ 'pages_delete_warning_template' => 'Aquesta pàgina està en ús com a plantilla de pàgina predeterminada de llibre o capítol. Aquests llibres o capítols ja no tindran una plantilla de pàgina predeterminada assignada després d\'eliminar aquesta pàgina.',
+ 'pages_delete_confirm' => 'Esteu segur que voleu suprimir aquesta pàgina?',
+ 'pages_delete_draft_confirm' => 'Esteu segur que voleu suprimir aquest esborrany de pàgina?',
+ 'pages_editing_named' => 'Edició de la pàgina «:pageName»',
+ 'pages_edit_draft_options' => 'Opcions d’esborrany',
+ 'pages_edit_save_draft' => 'Desa l’esborrany',
+ 'pages_edit_draft' => 'Edita l’esborrany de pàgina',
+ 'pages_editing_draft' => 'Estàs editant l’esborrany',
+ 'pages_editing_page' => 'Edita la pàgina',
+ 'pages_edit_draft_save_at' => 'S’ha desat l’esborrany a les ',
+ 'pages_edit_delete_draft' => 'Suprimeix l’esborrany',
+ 'pages_edit_delete_draft_confirm' => 'Esteu segur que voleu suprimir els canvis de l’esborrany de pàgina? Es perdran tots els canvis que hàgiu fet després de la darrera vegada que vau desar la pàgina i l’editor s’actualitzarà amb l’estat de la darrera vegada que es va desar la pàgina que no era esborrany.',
+ 'pages_edit_discard_draft' => 'Descarta l’esborrany',
+ 'pages_edit_switch_to_markdown' => 'Canvia a l’editor de Markdown',
+ 'pages_edit_switch_to_markdown_clean' => '(Contingut net)',
+ 'pages_edit_switch_to_markdown_stable' => '(Contingut estable)',
+ 'pages_edit_switch_to_wysiwyg' => 'Canvia a l’editor WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Canviar al nou editor WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(En Beta Test)',
+ 'pages_edit_set_changelog' => 'Registre de canvis',
+ 'pages_edit_enter_changelog_desc' => 'Introduïu una descripció breu dels canvis que heu fet',
+ 'pages_edit_enter_changelog' => 'Registra un canvi',
+ 'pages_editor_switch_title' => 'Canvia l’editor',
+ 'pages_editor_switch_are_you_sure' => 'Esteu segur que voleu canviar l’editor d’aquesta pàgina?',
+ 'pages_editor_switch_consider_following' => 'Quan canvieu l’editor tingueu en compte que:',
+ 'pages_editor_switch_consideration_a' => 'Un cop s’hagi desat, l’editor nou serà el que hagin d’utilitzar tots els editor futurs, incloent-hi aquells que no puguin canviar el tipus d’editor.',
+ 'pages_editor_switch_consideration_b' => 'És possible que hi hagi pèrdues en el detall i la sintaxi.',
+ 'pages_editor_switch_consideration_c' => 'Els canvis en les etiquetes i el registre de canvis que s’hagin fet després de la darrera vegada que es va desar no es conservaran.',
+ 'pages_save' => 'Desa la pàgina',
+ 'pages_title' => 'Títol de la pàgina',
+ 'pages_name' => 'Nom de la pàgina',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Visualització prèvia',
+ 'pages_md_insert_image' => 'Insereix una imatge',
+ 'pages_md_insert_link' => 'Insereix un enllaç d’entitat',
+ 'pages_md_insert_drawing' => 'Insereix un dibuix',
+ 'pages_md_show_preview' => 'Mostra la visualització prèvia',
+ 'pages_md_sync_scroll' => 'Sincronitza el desplaçament de la visualització prèvia',
+ 'pages_md_plain_editor' => 'Editor de text pla',
+ 'pages_drawing_unsaved' => 'S’ha trobat un dibuix sense desar',
+ 'pages_drawing_unsaved_confirm' => 'S’han trobat dades d’un dibuix d’un intent anterior de desar un dibuix. Voleu restaurar aquest dibuix no desat per a reprendre’n l’edició?',
+ 'pages_not_in_chapter' => 'La pàgina no és un capítol',
+ 'pages_move' => 'Mou la pàgina',
+ 'pages_copy' => 'Copia la pàgina',
+ 'pages_copy_desination' => 'Copia la destinació',
+ 'pages_copy_success' => 'S’ha copiat la pàgina',
+ 'pages_permissions' => 'Permisos de la pàgina',
+ 'pages_permissions_success' => 'S’han actualitzat els permisos de la pàgina',
+ 'pages_revision' => 'Revisió',
+ 'pages_revisions' => 'Revisions de la pàgina',
+ 'pages_revisions_desc' => 'A continuació hi ha la llista de totes les revisions d’aquesta pàgina. Si hi teniu permís, podeu mirar, comparar i restaurar versions antigues de la pàgina. És possible que no hi aparegui tot l’historial de la pàgina ja que, segons la configuració del sistema, és possible que s’hagin suprimit les revisions antigues automàticament.',
+ 'pages_revisions_named' => 'Revisions de la pàgina «:pageName»',
+ 'pages_revision_named' => 'Revisió de la pàgina «:pageName»',
+ 'pages_revision_restored_from' => 'S’ha restaurat de núm. :id: :summary',
+ 'pages_revisions_created_by' => 'Revisor:',
+ 'pages_revisions_date' => 'Data de la revisió',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Número de la revisió',
+ 'pages_revisions_numbered' => 'Revisió núm. :id',
+ 'pages_revisions_numbered_changes' => 'Canvis de la revisió núm. :id',
+ 'pages_revisions_editor' => 'Tipus d’editor',
+ 'pages_revisions_changelog' => 'Registre de canvis',
+ 'pages_revisions_changes' => 'Canvis',
+ 'pages_revisions_current' => 'Versió actual',
+ 'pages_revisions_preview' => 'Visualització prèvia',
+ 'pages_revisions_restore' => 'Restaura',
+ 'pages_revisions_none' => 'Aquesta pàgina no té cap revisió',
+ 'pages_copy_link' => 'Copia l’enllaç',
+ 'pages_edit_content_link' => 'Ves a la secció a l’editor',
+ 'pages_pointer_enter_mode' => 'Entra al mode de selecció de secció',
+ 'pages_pointer_label' => 'Opcions de la secció de pàgina',
+ 'pages_pointer_permalink' => 'Enllaç permanent de la secció de pàgina',
+ 'pages_pointer_include_tag' => 'Etiqueta inclou de la secció de pàgina',
+ 'pages_pointer_toggle_link' => 'Enllaç permanent. Cliqueu per a mostrar l’etiqueta d’inclusió',
+ 'pages_pointer_toggle_include' => 'Etiqueta d’inclusió. Cliqueu per a mostrar l’enllaç permanent',
+ 'pages_permissions_active' => 'La pàgina té permisos',
+ 'pages_initial_revision' => 'Publicació inicial',
+ 'pages_references_update_revision' => 'Actualització automàtica dels enllaços interns',
+ 'pages_initial_name' => 'Pàgina nova',
+ 'pages_editing_draft_notification' => 'Esteu editant un esborrany que es va desar :timeDiff.',
+ 'pages_draft_edited_notification' => 'Des de llavors, s’ha actualitzat la pàgina. Us recomanem que descarteu aquest esborrany.',
+ 'pages_draft_page_changed_since_creation' => 'Des que es va crear l’esborrany, la pàgina s’ha actualitzat. Us recomanem que descarteu aquest esborrany o que aneu amb compte de no sobreescriure cap canvi.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count usuaris han començat a editar aquesta pàgina',
+ 'start_b' => ':userName ha començat a editar aquesta pàgina',
+ 'time_a' => 'des que es va actualitzar aquesta pàgina',
+ 'time_b' => 'en els darrers :minCount minuts',
+ 'message' => ':start :time. Aneu amb compte de no sobreescriure-us els canvis.',
+ ],
+ 'pages_draft_discarded' => 'S’ha descartat l’esborrany. L’editor s’ha actualitzat amb el contingut actual de la pàgina',
+ 'pages_draft_deleted' => 'S’ha suprimit l’esborrany! L’editor s’ha actualitzat amb el contingut actual de la pàgina',
+ 'pages_specific' => 'Pàgina específica',
+ 'pages_is_template' => 'Plantilla de la pàgina',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Commuta la barra lateral',
+ 'page_tags' => 'Etiquetes de la pàgina',
+ 'chapter_tags' => 'Etiquetes del capítol',
+ 'book_tags' => 'Etiquetes del llibre',
+ 'shelf_tags' => 'Etiquetes del prestatge',
+ 'tag' => 'Etiqueta',
+ 'tags' => 'Etiquetes',
+ 'tags_index_desc' => 'Es poden posar etiquetes al contingut per a aconseguir una categorització flexible. Les etiquetes han de tenir una clau i poden o no tenir un valor. Un cop s’hi han posat, es pot cercar el contingut utilitzant el nom o el valor de les etiquetes.',
+ 'tag_name' => 'Nom de l’etiqueta',
+ 'tag_value' => 'Valor de l’etiqueta (opcional)',
+ 'tags_explain' => "Poseu alguna etiqueta per a categoritzar millor el contingut. \n Podeu assignar un valor a l’etiqueta per a aconseguir una organització més detallada.",
+ 'tags_add' => 'Posa-hi una altra etiqueta',
+ 'tags_remove' => 'Lleva aquesta etiqueta',
+ 'tags_usages' => 'Ús total de les etiquetes',
+ 'tags_assigned_pages' => 'Assignades a pàgines',
+ 'tags_assigned_chapters' => 'Assignades a capítols',
+ 'tags_assigned_books' => 'Assignades a llibres',
+ 'tags_assigned_shelves' => 'Assignades a prestatges',
+ 'tags_x_unique_values' => ':count valors únics',
+ 'tags_all_values' => 'Tots els valors',
+ 'tags_view_tags' => 'Mostra les etiquetes',
+ 'tags_view_existing_tags' => 'Mostra les etiquetes existents',
+ 'tags_list_empty_hint' => 'Podeu posar etiquetes a la barra lateral de l’editor o quan canvieu la informació d’un capítol o d’un prestatge.',
+ 'attachments' => 'Fitxers adjunts',
+ 'attachments_explain' => 'Pugeu fitxers o afegiu enllaços per a mostrar a la pàgina. Els podreu veure a la barra lateral de la pàgina.',
+ 'attachments_explain_instant_save' => 'Els canvis dels fitxers adjunts es desen a l’instant.',
+ 'attachments_upload' => 'Puja un fitxer',
+ 'attachments_link' => 'Afegeix un enllaç',
+ 'attachments_upload_drop' => 'També podeu arrossegar i deixar anar un fitxer aquí per a adjuntar-lo.',
+ 'attachments_set_link' => 'Configura l’enllaç',
+ 'attachments_delete' => 'Esteu segur que voleu suprimir aquest fitxer adjunt?',
+ 'attachments_dropzone' => 'Deixeu-hi anar fitxers per a pujar-los',
+ 'attachments_no_files' => 'No s’ha pujat cap fitxer',
+ 'attachments_explain_link' => 'Si us estimeu més no pujar un fitxer, podeu afegir un enllaç. Pot ser un enllaç en una altra pàgina o a un fitxer al núvol.',
+ 'attachments_link_name' => 'Nom de l’enllaç',
+ 'attachment_link' => 'Enllaç del fitxer adjunt',
+ 'attachments_link_url' => 'Enllaç al fitxer',
+ 'attachments_link_url_hint' => 'URL del lloc o del fitxer.',
+ 'attach' => 'Adjunta',
+ 'attachments_insert_link' => 'Afegeix un enllaç de fitxer adjunt a la pàgina',
+ 'attachments_edit_file' => 'Edita el fitxer',
+ 'attachments_edit_file_name' => 'Nom del fitxer',
+ 'attachments_edit_drop_upload' => 'Deixeu-hi anar fitxers o cliqueu aquí per a pujar-ne i sobreescriure’ls.',
+ 'attachments_order_updated' => 'S’ha actualitzat l’ordre del fitxer adjunt',
+ 'attachments_updated_success' => 'S’han actualitzat els detalls dels fitxer adjunt',
+ 'attachments_deleted' => 'S’ha suprimit el fitxer adjunt',
+ 'attachments_file_uploaded' => 'S’ha pujat el fitxer',
+ 'attachments_file_updated' => 'S’ha actualitzat el fitxer',
+ 'attachments_link_attached' => 'S’ha adjuntat l’enllaç a la pàgina',
+ 'templates' => 'Plantilles',
+ 'templates_set_as_template' => 'La pàgina és una plantilla',
+ 'templates_explain_set_as_template' => 'Podeu configurar aquesta pàgina com a plantilla perquè s’utilitzi en la creació d’altres pàgines. Els altres usuaris podran utilitzar aquesta plantilla si tenen permisos de visualització d’aquesta pàgina.',
+ 'templates_replace_content' => 'Substitueix el contingut de la pàgina',
+ 'templates_append_content' => 'Afegeix-ho després del contingut la pàgina',
+ 'templates_prepend_content' => 'Afegeix-ho abans del contingut la pàgina',
+
+ // Profile View
+ 'profile_user_for_x' => 'Usuari des de fa :time',
+ 'profile_created_content' => 'Contingut creat',
+ 'profile_not_created_pages' => ':userName no ha creat cap pàgina',
+ 'profile_not_created_chapters' => ':userName no ha creat cap capítol',
+ 'profile_not_created_books' => ':userName no ha creat cap llibre',
+ 'profile_not_created_shelves' => ':userName no ha creat cap prestatge',
+
+ // Comments
+ 'comment' => 'Comentari',
+ 'comments' => 'Comentaris',
+ 'comment_add' => 'Afegeix un comentari',
+ 'comment_none' => 'No hi ha comentaris per mostrar',
+ 'comment_placeholder' => 'Deixa un comentari aquí',
+ 'comment_thread_count' => ':count fil de comentaris|:count fils de comentaris',
+ 'comment_archived_count' => ':count Arxivats',
+ 'comment_archived_threads' => 'Fils arxivats',
+ 'comment_save' => 'Desa el comentari',
+ 'comment_new' => 'Crea un comentari',
+ 'comment_created' => 'ha comentat :createDiff',
+ 'comment_updated' => ':username l’ha actualitzat :updateDiff',
+ 'comment_updated_indicator' => 'Actualitzat',
+ 'comment_deleted_success' => 'S’ha suprimit el comentari',
+ 'comment_created_success' => 'S’ha afegit un comentari',
+ 'comment_updated_success' => 'S’ha actualitzat un comentari',
+ 'comment_archive_success' => 'Comentari arxivat',
+ 'comment_unarchive_success' => 'Comentari desarxivat',
+ 'comment_view' => 'Mostra el comentari',
+ 'comment_jump_to_thread' => 'Anar al fil',
+ 'comment_delete_confirm' => 'Esteu segur que voleu suprimir aquest comentari?',
+ 'comment_in_reply_to' => 'En resposta a :commentId',
+ 'comment_reference' => 'Referència',
+ 'comment_reference_outdated' => '(Obsolet)',
+ 'comment_editor_explain' => 'Vet aquí els comentaris que s’han fet en aquesta pàgina. Els comentaris es poden fer i gestionar quan es visualitza la pàgina desada.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Esteu segur que voleu suprimir aquesta revisió?',
+ 'revision_restore_confirm' => 'Esteu segur que voleu restaurar aquesta revisió? Se substituirà el contingut actual de la pàgina.',
+ 'revision_cannot_delete_latest' => 'No es pot suprimir la darrera revisió.',
+
+ // Copy view
+ 'copy_consider' => 'Quan copieu contingut, tingueu en compte el següent:',
+ 'copy_consider_permissions' => 'No es copiarà la configuració personalitzada de permisos.',
+ 'copy_consider_owner' => 'Sereu el propietari de tot el contingut copiat.',
+ 'copy_consider_images' => 'Els fitxers d’imatge de la pàgina no es duplicaran i les imatges originals conservaran la relació amb la pàgina a què es van pujar originalment.',
+ 'copy_consider_attachments' => 'No es copiaran els fitxers adjunts de la pàgina.',
+ 'copy_consider_access' => 'És possible que, en canviar la ubicació, el propietari o els permisos, el contingut esdevingui accessible a usuaris que no hi tenien accés.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Converteix en prestatge',
+ 'convert_to_shelf_contents_desc' => 'Pots convertir aquest llibre en un prestatge nou amb els mateixos continguts. Els capítols d’aquest llibre es convertiran en llibres. Si aquest llibre conté cap pàgina que no sigui en un capítol, es canviarà el nom del llibre que contindrà aquestes pàgines i el llibre formarà part del prestatge nou.',
+ 'convert_to_shelf_permissions_desc' => 'Es copiaran els permisos d’aquest llibre al prestatge nou i a tots els llibres que contingui que no tinguin els seus propis permisos. Tingueu en compte que els permisos dels prestatges no es propaguen als seus continguts com sí que ho fan els dels llibres.',
+ 'convert_book' => 'Converteix el llibre',
+ 'convert_book_confirm' => 'Esteu segur que voleu convertir aquest llibre?',
+ 'convert_undo_warning' => 'Això no es pot desfer fàcilment.',
+ 'convert_to_book' => 'Converteix en llibre',
+ 'convert_to_book_desc' => 'Podeu convertir aquest capítol en un llibre nou amb els mateixos continguts. Es copiaran els permisos d’aquest capítol al llibre nou, però no es copiaran els permisos heretats del llibre a què pertany cosa que podria canviar-ne el control d’accés.',
+ 'convert_chapter' => 'Converteix el capítol',
+ 'convert_chapter_confirm' => 'Esteu segur que voleu convertir aquest capítol?',
+
+ // References
+ 'references' => 'Referències',
+ 'references_none' => 'No hi ha cap referència cap a aquest element.',
+ 'references_to_desc' => 'A la llista que hi ha a continuació, hi trobareu tot el contingut que enllaça cap aquest element.',
+
+ // Watch Options
+ 'watch' => 'Segueix',
+ 'watch_title_default' => 'Preferències predeterminades',
+ 'watch_desc_default' => 'Reverteix el seguiment a les preferències de notificació per defecte.',
+ 'watch_title_ignore' => 'Ignora',
+ 'watch_desc_ignore' => 'Ignora totes les notificacions, incloent-hi les de les preferències de nivell usuari.',
+ 'watch_title_new' => 'Pàgines noves',
+ 'watch_desc_new' => 'Notifica’m la creació d’una pàgina nova dins d’aquest element.',
+ 'watch_title_updates' => 'Actualitzacions de la pàgina',
+ 'watch_desc_updates' => 'Notifica’m totes les pàgines noves i totes les actualitzacions de les pàgines.',
+ 'watch_desc_updates_page' => 'Notifica’m totes les actualitzacions de les pàgines.',
+ 'watch_title_comments' => 'Actualitzacions i comentaris de la pàgina',
+ 'watch_desc_comments' => 'Notifica’m totes les pàgines noves, totes les actualitzacions de les pàgines i tots els comentaris nous.',
+ 'watch_desc_comments_page' => 'Notifica’m tots les actualitzacions de pàgines i tots els comentaris nous.',
+ 'watch_change_default' => 'Canvia les preferències de notificació per defecte',
+ 'watch_detail_ignore' => 'S’estan ignorant les notificacions',
+ 'watch_detail_new' => 'S’està fent el seguiment de pàgines noves',
+ 'watch_detail_updates' => 'S’està fent el seguiment de pàgines noves i les actualitzacions de les pàgines',
+ 'watch_detail_comments' => 'S’està fent el seguiment de pàgines noves i les actualitzacions de les pàgines i els comentaris',
+ 'watch_detail_parent_book' => 'S’està fent el seguiment a través del llibre de què és part',
+ 'watch_detail_parent_book_ignore' => 'S’està ignorant a través del llibre de què és part',
+ 'watch_detail_parent_chapter' => 'S’està fent el seguiment a través del capítol de què és part',
+ 'watch_detail_parent_chapter_ignore' => 'S’està ignorant a través del capítol de què és part',
+];
diff --git a/lang/ca/errors.php b/lang/ca/errors.php
new file mode 100644
index 00000000000..69268838451
--- /dev/null
+++ b/lang/ca/errors.php
@@ -0,0 +1,135 @@
+ 'No teniu permís per a accedir a la pàgina sol·licitada.',
+ 'permissionJson' => 'No teniu permís per a executar l’acció sol·licitada.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Ja existeix un usuari amb el correu electrònic :email però amb unes credencials diferents.',
+ 'auth_pre_register_theme_prevention' => 'El compte d\'usuari no s\'ha pogut registrar amb els detalls proporcionats',
+ 'email_already_confirmed' => 'L’adreça electrònica ja està confirmada. Proveu d’iniciar la sessió.',
+ 'email_confirmation_invalid' => 'Aquest testimoni de confirmació no és vàlid o ja s’ha utilitzat. Proveu de tornar-vos a registrar.',
+ 'email_confirmation_expired' => 'Aquest testimoni de confirmació ha caducat. S’ha enviat un altre correu electrònic de confirmació.',
+ 'email_confirmation_awaiting' => 'Cal confirmar l’adreça electrònica del compte que utilitzeu',
+ 'ldap_fail_anonymous' => 'L’accés LDAP anònim ha fallat',
+ 'ldap_fail_authed' => 'L’accés LDAP amb el nom distintiu i la contrasenya proporcionats ha fallat',
+ 'ldap_extension_not_installed' => 'L’extensió PHP de l’LDAP no està instal·lada',
+ 'ldap_cannot_connect' => 'No s’ha pogut connectar amb el servidor LDAP perquè la connexió inicial ha fallat',
+ 'saml_already_logged_in' => 'Ja heu iniciat sessió',
+ 'saml_no_email_address' => 'No s’ha pogut trobar una adreça electrònica per a aquest usuari a les dades proporcionades pel sistema d’autenticació extern',
+ 'saml_invalid_response_id' => 'Un procés iniciat per aquesta aplicació no reconeix la sol·licitud del sistema d’autenticació extern. Haver navegat enrere després d’iniciar sessió en podria ser la causa.',
+ 'saml_fail_authed' => 'No s’ha pogut iniciar sessió amb :system perquè el sistema no ha proporcionat una autorització satisfactòria',
+ 'oidc_already_logged_in' => 'Ja heu iniciat sessió',
+ 'oidc_no_email_address' => 'No s’ha pogut trobar una adreça electrònica per a aquest usuari a les dades proporcionades pel sistema d’autenticació extern',
+ 'oidc_fail_authed' => 'No s’ha pogut iniciar sessió amb :system perquè el sistema no ha proporcionat una autorització satisfactòria',
+ 'social_no_action_defined' => 'No s’ha definit cap acció',
+ 'social_login_bad_response' => "S’ha produït un error en l’inici de sessió amb :socialAccount: \n:error",
+ 'social_account_in_use' => 'Aquest compte de :socialAccount ja s’està utilitzant. Proveu d’iniciar sessió amb :socialAccount.',
+ 'social_account_email_in_use' => 'L’adreça electrònica :email ja està en ús. Si ja teniu un compte, podeu connectar-hi el vostre compte de :socialAccount a la configuració del vostre perfil.',
+ 'social_account_existing' => 'Aquest compte de :socialAccount ja està associat al vostre perfil.',
+ 'social_account_already_used_existing' => 'Aquest compte de :socialAccount ja està associat a un altre usuari.',
+ 'social_account_not_used' => 'Aquest compte de :socialAccount no està associat a cap usuari. Associeu-lo a la configuració del vostre perfil. ',
+ 'social_account_register_instructions' => 'Si encara no teniu un compte, podeu registrar-vos amb l’opció :socialAccount.',
+ 'social_driver_not_found' => 'No s’ha trobat el controlador social',
+ 'social_driver_not_configured' => 'La configuració de :socialAccount no és correcta.',
+ 'invite_token_expired' => 'Aquest enllaç d’invitació ha caducat. Podeu provar de restablir la contrasenya del vostre compte.',
+ 'login_user_not_found' => 'No s\'ha pogut trobar un usuari per aquesta acció.',
+
+ // System
+ 'path_not_writable' => 'No s’ha pogut pujar a :filePath. Assegureu-vos que teniu permisos d’escriptura al servidor.',
+ 'cannot_get_image_from_url' => 'No s’ha pogut obtenir la imatge des de :url',
+ 'cannot_create_thumbs' => 'El servidor no pot crear miniatures. Assegureu-vos que s’ha instal·lat l’extensió de GD PHP.',
+ 'server_upload_limit' => 'El servidor no permet pujades d’aquesta mida. Proveu-ho amb una mida més petita.',
+ 'server_post_limit' => 'El servidor no pot rebre la quantitat de dades proporcionades. Proveu-ho amb menys dades o amb un fitxer més petit.',
+ 'uploaded' => 'El servidor no permet pujades d’aquesta mida. Proveu-ho amb un fitxer més petit.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'S’ha produït un error en pujar la imatge.',
+ 'image_upload_type_error' => 'El tipus d’imatge no és vàlid.',
+ 'image_upload_replace_type' => 'Els fitxers d’imatge s’han de substituir per un del mateix tipus',
+ 'image_upload_memory_limit' => 'No s’ha pogut pujar la imatge o crear-ne les miniatures a causa dels límits dels recursos del sistema.',
+ 'image_thumbnail_memory_limit' => 'No s’han pogut crear mides d’imatge diferents a causa dels límits dels recursos del sistema.',
+ 'image_gallery_thumbnail_memory_limit' => 'No s’han pogut crear les miniatures de la galeria a causa dels límits dels recursos del sistema.',
+ 'drawing_data_not_found' => 'No s’han pogut pujar les dades del dibuix. És possible que el fitxer del dibuix ja no existeixi o que no tingueu permís per a accedir-hi.',
+
+ // Attachments
+ 'attachment_not_found' => 'No s’ha trobat el fitxer adjunt',
+ 'attachment_upload_error' => 'S’ha produït un error en pujar el fitxer adjunt',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'No s’ha pogut desar l’esborrany. Assegureu-vos que esteu connectat a internet per a desar la pàgina.',
+ 'page_draft_delete_fail' => 'No s’ha pogut suprimir l’esborrany de la pàgina i obtenir el contingut de la pàgina desada actual.',
+ 'page_custom_home_deletion' => 'No es pot suprimir una pàgina que està definida com a pàgina d’inici.',
+
+ // Entities
+ 'entity_not_found' => 'No s’ha trobat l’entitat.',
+ 'bookshelf_not_found' => 'No s’ha trobat el prestatge.',
+ 'book_not_found' => 'No s’ha trobat el llibre.',
+ 'page_not_found' => 'No s’ha trobat la pàgina.',
+ 'chapter_not_found' => 'No s’ha trobat el capítol.',
+ 'selected_book_not_found' => 'No s’ha trobat el llibre seleccionat.',
+ 'selected_book_chapter_not_found' => 'No s’ha trobat el llibre o el capítol seleccionat.',
+ 'guests_cannot_save_drafts' => 'Els convidats no poden desar esborranys.',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'No podeu suprimir l’administrador únic.',
+ 'users_cannot_delete_guest' => 'No podeu suprimir l’usuari convidat.',
+ 'users_could_not_send_invite' => 'No s\'ha pogut crear l\'usuari, ja que no s\'ha pogut enviar el correu d\'invitació',
+
+ // Roles
+ 'role_cannot_be_edited' => 'No es pot editar aquest rol.',
+ 'role_system_cannot_be_deleted' => 'No es pot suprimir aquest rol perquè és un rol del sistema.',
+ 'role_registration_default_cannot_delete' => 'No es pot suprimir aquest rol mentre estigui configurat com a rol de registre per defecte.',
+ 'role_cannot_remove_only_admin' => 'Aquest és l’únic usuari assignat al rol d’administrador. Assigneu el rol d’administrador a un altre usuari abans de provar de suprimir-lo.',
+
+ // Comments
+ 'comment_list' => 'S’ha produït un error en obtenir els comentaris.',
+ 'cannot_add_comment_to_draft' => 'No es poden afegir comentaris en un esborrany.',
+ 'comment_add' => 'S’ha produït un error en afegir o actualitzar el comentari.',
+ 'comment_delete' => 'S’ha produït un error en suprimir el comentari.',
+ 'empty_comment' => 'No es pot afegir un comentari buit.',
+
+ // Error pages
+ '404_page_not_found' => 'No s’ha trobat la pàgina',
+ 'sorry_page_not_found' => 'No s’ha trobat la pàgina que heu cercat.',
+ 'sorry_page_not_found_permission_warning' => 'Si la pàgina existeix, és possible que no tingueu permís per a accedir-hi.',
+ 'image_not_found' => 'No s’ha trobat la imatge',
+ 'image_not_found_subtitle' => 'No s’ha trobat la imatge que heu cercat.',
+ 'image_not_found_details' => 'És possible que s’hagi suprimit.',
+ 'return_home' => 'Torna a la pàgina d’inici',
+ 'error_occurred' => 'S’ha produït un error.',
+ 'app_down' => ':appName està fora de servei.',
+ 'back_soon' => 'Aviat ho arreglarem.',
+
+ // Import
+ 'import_zip_cant_read' => 'No es pot llegir el fitxer ZIP.',
+ 'import_zip_cant_decode_data' => 'No s\'ha pogut trobar i descodificar el fitxer data.json en el fitxer ZIP.',
+ 'import_zip_no_data' => 'Les dades del fitxer ZIP no contenen cap llibre, capítol o contingut de pàgina.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Error en validar la importació del ZIP amb els errors:',
+ 'import_zip_failed_notification' => 'Error en importar l\'arxiu ZIP.',
+ 'import_perms_books' => 'Li falten els permisos necessaris per crear llibres.',
+ 'import_perms_chapters' => 'Li falten els permisos necessaris per crear capítols.',
+ 'import_perms_pages' => 'Li falten els permisos necessaris per crear pàgines.',
+ 'import_perms_images' => 'Li falten els permisos necessaris per crear imatges.',
+ 'import_perms_attachments' => 'Li falten els permisos necessaris per crear adjunts.',
+
+ // API errors
+ 'api_no_authorization_found' => 'No s’ha trobat cap testimoni d’autorització en aquesta sol·licitud.',
+ 'api_bad_authorization_format' => 'S’ha trobat un testimoni d’autorització en aquesta sol·licitud però no tenia el format correcte.',
+ 'api_user_token_not_found' => 'No s’ha trobat cap testimoni d’API per al testimoni d’autorització proporcionat.',
+ 'api_incorrect_token_secret' => 'El secret proporcionat per al testimoni d’API utilitzat no és correcte.',
+ 'api_user_no_api_permission' => 'El propietari del testimoni API utilitzat no té permís per a fer crides a l’API.',
+ 'api_user_token_expired' => 'El testimoni d’autorització utilitzat ha caducat.',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'S’ha produït un error en enviar el correu electrònic de prova:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'L’URL no coincideix amb els amfitrions SSR configurats permesos.',
+];
diff --git a/lang/ca/notifications.php b/lang/ca/notifications.php
new file mode 100644
index 00000000000..e3fb928a1ef
--- /dev/null
+++ b/lang/ca/notifications.php
@@ -0,0 +1,29 @@
+ 'S’ha fet un comentari a la pàgina :pageName.',
+ 'new_comment_intro' => 'S’ha fet un comentari nou en una pàgina a :appName.',
+ 'new_page_subject' => 'S’ha creat la pàgina :pageName',
+ 'new_page_intro' => 'S’ha creat una pàgina nova a :appName.',
+ 'updated_page_subject' => 'S’ha actualitzat la pàgina :pageName',
+ 'updated_page_intro' => 'S’ha actualitzat una pàgina a :appName.',
+ 'updated_page_debounce' => 'Per a evitar que s’acumulin les notificacions, durant un temps no se us notificarà cap canvi fet en aquesta pàgina pel mateix usuari.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Nom de la pàgina:',
+ 'detail_page_path' => 'Ruta de la pàgina:',
+ 'detail_commenter' => 'Autor del comentari:',
+ 'detail_comment' => 'Comentari:',
+ 'detail_created_by' => 'Creada per:',
+ 'detail_updated_by' => 'Actualitzada per:',
+
+ 'action_view_comment' => 'Mostra el comentari',
+ 'action_view_page' => 'Mostra la pàgina',
+
+ 'footer_reason' => 'Heu rebut aquesta notificació perquè :link inclouen aquest tipus d’activitat per a aquest element.',
+ 'footer_reason_link' => 'les vostres preferències de notificació',
+];
diff --git a/resources/lang/ca/pagination.php b/lang/ca/pagination.php
similarity index 100%
rename from resources/lang/ca/pagination.php
rename to lang/ca/pagination.php
diff --git a/lang/ca/passwords.php b/lang/ca/passwords.php
new file mode 100644
index 00000000000..aa727ad4b61
--- /dev/null
+++ b/lang/ca/passwords.php
@@ -0,0 +1,15 @@
+ 'Les contrasenyes han de tenir almenys 8 caràcters i han de coincidir amb la confirmació de contrasenya.',
+ 'user' => "No es pot trobar un usuari amb aquesta adreça electrònica.",
+ 'token' => 'El testimoni de restabliment de la contrasenya no és vàlid per a aquesta adreça electrònica.',
+ 'sent' => 'Us hem enviat un enllaç per a restablir la contrasenya!',
+ 'reset' => 'S’ha reinicialitzat la contrasenya.',
+
+];
diff --git a/lang/ca/preferences.php b/lang/ca/preferences.php
new file mode 100644
index 00000000000..09fdaa4e586
--- /dev/null
+++ b/lang/ca/preferences.php
@@ -0,0 +1,52 @@
+ 'El meu compte',
+
+ 'shortcuts' => 'Dreceres de teclat',
+ 'shortcuts_interface' => 'Preferències de dreceres de teclat de la interfície d’usuari',
+ 'shortcuts_toggle_desc' => 'Configureu les dreceres de teclat de la interfície d’usuari del sistema utilitzades per a la navegació i les accions.',
+ 'shortcuts_customize_desc' => 'Podeu personalitzar cadascuna de les dreceres a continuació. seleccionant el camp d’entrada de cada drecera i prement la combinació de tecles que vulgueu.',
+ 'shortcuts_toggle_label' => 'Activa les dreceres de teclat',
+ 'shortcuts_section_navigation' => 'Navegació',
+ 'shortcuts_section_actions' => 'Accions habituals',
+ 'shortcuts_save' => 'Desa les dreceres',
+ 'shortcuts_overlay_desc' => 'Nota: Quan les dreces estan activades hi haurà disponible una ajuda que es pot obtenir prement «?» que ressaltarà les dreceres disponibles a la pantalla que s’estigui visualitzant.',
+ 'shortcuts_update_success' => 'S’han actualitzat les preferències de drecera.',
+ 'shortcuts_overview_desc' => 'Gestioneu les dreceres que s’utilitzen per a navegar per la interfície d’usuari.',
+
+ 'notifications' => 'Preferències de les notificacions',
+ 'notifications_desc' => 'Gestioneu les notificacions de correu electrònic que rebreu quan es facin certes activitats.',
+ 'notifications_opt_own_page_changes' => 'Notifica’m els canvis a les meves pàgines.',
+ 'notifications_opt_own_page_comments' => 'Notifica’m la creació de comentaris a les meves pàgines.',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notifica’m les respostes als meus comentaris.',
+ 'notifications_save' => 'Desa les preferències',
+ 'notifications_update_success' => 'S’han actualitzat les preferències de notificació',
+ 'notifications_watched' => 'Elements seguits i ignorats',
+ 'notifications_watched_desc' => 'A continuació hi ha els elements que tenen preferències de seguiment personalitzades. Per a actualitzar-les, accediu a l’element i configureu-les a la barra lateral.',
+
+ 'auth' => 'Accés i seguretat',
+ 'auth_change_password' => 'Canvia la contrasenya',
+ 'auth_change_password_desc' => 'Canvieu la contrasenya que s’utilitzarà per a iniciar sessió a l’aplicació. Ha de tenir com a mínim 8 caràcters.',
+ 'auth_change_password_success' => 'S’ha actualitzat la contrasenya.',
+
+ 'profile' => 'Informació del perfil',
+ 'profile_desc' => 'Gestioneu la informació del vostre compte que representa com us veuran els altres usuaris a més de la informació que s’utilitza per a la comunicació i la personalització del sistema.',
+ 'profile_view_public' => 'Mostra’m el perfil públic',
+ 'profile_name_desc' => 'Configureu el nom públic que veuran els altres usuaris a les activitats que feu i al vostre contingut.',
+ 'profile_email_desc' => 'Aquesta serà l’adreça electrònica on s’enviaran les notificacions i que, segons l’autenticació del sistema activada, s’utilitzarà per a iniciar sessió.',
+ 'profile_email_no_permission' => 'No teniu permís per a canviar la vostra adreça electrònica. Si voleu canviar-la, demaneu-ho a un administrador.',
+ 'profile_avatar_desc' => 'Seleccioneu una imatge que us representi davant dels altres usuaris. És millor que sigui una imatge quadrada de 256px de costat.',
+ 'profile_admin_options' => 'Preferències d’administrador',
+ 'profile_admin_options_desc' => 'Podeu trobar preferències addicionals d’administrador pel vostre compte, com ara les que gestionen els rols d’usuari, a «Preferències › Usuaris».',
+
+ 'delete_account' => 'Suprimeix el compte',
+ 'delete_my_account' => 'Suprimeix el meu compte',
+ 'delete_my_account_desc' => 'Se suprimirà completament del sistema el vostre compte d’usuari. No podreu recuperar el compte ni revertir-ne la supressió. Es conservarà el contingut que hàgiu creat, com ara les pàgines o les imatges que hàgiu pujat.',
+ 'delete_my_account_warning' => 'Esteu segur que voleu suprimir el vostre compte?',
+];
diff --git a/lang/ca/settings.php b/lang/ca/settings.php
new file mode 100644
index 00000000000..a890b9809d4
--- /dev/null
+++ b/lang/ca/settings.php
@@ -0,0 +1,374 @@
+ 'Configuració',
+ 'settings_save' => 'Guardar configuració',
+ 'system_version' => 'Versió de sistema',
+ 'categories' => 'Categories',
+
+ // App Settings
+ 'app_customization' => 'Personalització',
+ 'app_features_security' => 'Funcions i seguretat',
+ 'app_name' => 'Nom de l’aplicació',
+ 'app_name_desc' => 'El nom es mostra a la capçalera i als correus electrònics enviats pel sistema.',
+ 'app_name_header' => 'Mostra el nom a la capçalera',
+ 'app_public_access' => 'Accés públic',
+ 'app_public_access_desc' => 'Si activeu aquesta opció permetrà als visitants, accedir a la vostra instància del BookStack sense iniciar sessió.',
+ 'app_public_access_desc_guest' => 'L’accés per als visitants públics es pot gestionar amb l’usuari Convidat.',
+ 'app_public_access_toggle' => 'Permet l’accés públic',
+ 'app_public_viewing' => 'Esteu segur que voleu permetre l’accés públic?',
+ 'app_secure_images' => 'Pujada d’imatges amb més seguretat',
+ 'app_secure_images_toggle' => 'Habilita la pujada d’imatges amb més seguretat',
+ 'app_secure_images_desc' => 'Per raons de rendiment, totes les imatges són públiques. Aquesta opció afegeix una cadena aleatòria que és difícil d’endevinar al davant de l’URL de les imatges. Assegureu-vos que els índex de carpetes estan desactivats perquè no s’hi pugui accedir fàcilment.',
+ 'app_default_editor' => 'Editor de pàgines per defecte',
+ 'app_default_editor_desc' => 'Seleccioneu quin editor s’utilitzarà per defecte quan s’editin pàgines noves. Això es pot sobreescriure a nivell de pàgina si els permisos ho permeten.',
+ 'app_custom_html' => 'Contingut personalitzat a la capçalera HTML',
+ 'app_custom_html_desc' => 'El contingut que s’afegeixi aquí s’inserirà al final de la secció de cada pàgina. Això permet sobreescriure els estils o afegir codi d’analítiques web.',
+ 'app_custom_html_disabled_notice' => 'El contingut personalitzat a la capçalera HTML està desactivat en aquesta pàgina perquè es puguin revertir els canvis que trenquin el lloc web.',
+ 'app_logo' => 'Logotip de l’aplicació',
+ 'app_logo_desc' => 'El logotip s’utilitzarà a la barra de la capçalera de l’aplicació, entre d’altres llocs. La imatge ha de tenir 86px d’alçada. Les imatges més grans es reduiran.',
+ 'app_icon' => 'Icona de l’aplicació',
+ 'app_icon_desc' => 'La icona s’utilitzarà a les pestanyes del navegador i a les icones de les adreces. La imatge ha de ser un PNG quadrat de 256px de costat.',
+ 'app_homepage' => 'Pàgina d’inici de l’aplicació',
+ 'app_homepage_desc' => 'Seleccioneu una vista per a mostrar a la pàgina d’inici en comptes de la vista per defecte. Els permisos de pàgina s’ignoren a les pàgines seleccionades.',
+ 'app_homepage_select' => 'Seleccioneu una pàgina',
+ 'app_footer_links' => 'Enllaços del peu de pàgina',
+ 'app_footer_links_desc' => 'Afegiu enllaços per a mostrar al peu de pàgina. Els enllaços es mostraran al final de la majoria de les pàgines, incloent-hi les pàgines per a les que no es requereix iniciar sessió. Podeu utilitzar una etiqueta «trans::» per a utilitzar traduccions definides pel sistema. Per exemple: Si utilitzeu «trans::common.privacy_policy» es mostrarà la traducció de «Privacy Policy» i si utilitzeu «trans::common.terms_of_service» es mostrarà la traducció de «Terms of Service».',
+ 'app_footer_links_label' => 'Text de l’enllaç',
+ 'app_footer_links_url' => 'URL de l’enllaç',
+ 'app_footer_links_add' => 'Afegeix l’enllaç en el peu de pàgina',
+ 'app_disable_comments' => 'Desactiva els comentaris',
+ 'app_disable_comments_toggle' => 'Desactiva els comentaris',
+ 'app_disable_comments_desc' => 'Desactivarà els comentaris a totes les pàgines de l’aplicació. Els comentaris existents no es mostraran.',
+
+ // Color settings
+ 'color_scheme' => 'Esquema de colors de l’aplicació',
+ 'color_scheme_desc' => 'Configureu els colors que s’utilitzaran a la interfície d’usuari de l’aplicació. Podeu configurar els colors pel mode clar o el mode fosc per separat perquè escaigui millor al tema i assegurar la llegibilitat.',
+ 'ui_colors_desc' => 'Configureu el color principal de l’aplicació i el color per defecte dels enllaços. El color principal s’utilitza al bàner de la capçalera, els botons i les decoracions de la interfície. El color per defecte dels enllaços s’utilitza a les accions i els enllaços de text, tant al contingut escrit com a la interfície de l’aplicació.',
+ 'app_color' => 'Color principal',
+ 'link_color' => 'Color per defecte dels enllaços',
+ 'content_colors_desc' => 'Configureu els colors per a tots els elements en la jerarquia de l’organització de la pàgina. És recomanable que trieu uns colors amb una brillantor similar a la dels colors per defecte per assegurar la llegibilitat.',
+ 'bookshelf_color' => 'Color dels prestatges',
+ 'book_color' => 'Color dels llibres',
+ 'chapter_color' => 'Color dels capítols',
+ 'page_color' => 'Color de les pàgines',
+ 'page_draft_color' => 'Color de les pàgines d’esborrany',
+
+ // Registration Settings
+ 'reg_settings' => 'Registre',
+ 'reg_enable' => 'Activa el registre d’usuaris',
+ 'reg_enable_toggle' => 'Activa el registre d’usuaris',
+ 'reg_enable_desc' => 'Quan el registre està activat, els usuaris es podran registrar com a usuari de l’aplicació. Un cop registrat, se’ls assignarà un rol d’usuari per defecte únic.',
+ 'reg_default_role' => 'Rol d’usuari per defecte després del registre.',
+ 'reg_enable_external_warning' => 'S’ignorarà l’opció de sobre quan l’autenticació LDAP or SAML estigui activada. Es crearan automàticament comptes d’usuari per als membres que encara no ho siguin si no és possible l’autenticació amb els sistema d’autenticació extern.',
+ 'reg_email_confirmation' => 'Correu electrònic de confirmació',
+ 'reg_email_confirmation_toggle' => 'Requereix un correu electrònic de confirmació',
+ 'reg_confirm_email_desc' => 'Si s’utilitza la restricció de dominis es requerirà un correu electrònic de confirmació i s’ignorarà aquesta opció.',
+ 'reg_confirm_restrict_domain' => 'Restricció de dominis',
+ 'reg_confirm_restrict_domain_desc' => 'Introduïu una llista separada per comes dels dominis a què voleu restringir el registre. S’enviarà un correu electrònic als usuaris perquè confirmin la seva adreça electrònica abans que puguin interactuar amb l’aplicació. Tingueu en compte que els usuaris podran canviar l’adreça electrònica un cop s’hagin registrat.',
+ 'reg_confirm_restrict_domain_placeholder' => 'No hi ha cap restricció',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Selecciona la regla d\'ordenació predeterminada per aplicar a nous llibres. Això no afectarà els llibres existents, i pot ser anul·lat per llibre.',
+ 'sorting_rules' => 'Regles d\'ordenació',
+ 'sorting_rules_desc' => 'Són operacions d\'ordenació predefinides que es poden aplicar al contingut en el sistema.',
+ 'sort_rule_assigned_to_x_books' => 'Assignat a :count llibre | Assignat a :count llibres',
+ 'sort_rule_create' => 'Crear regla d\'ordenació',
+ 'sort_rule_edit' => 'Editar regla d\'ordenació',
+ 'sort_rule_delete' => 'Eliminar regla d\'ordenació',
+ 'sort_rule_delete_desc' => 'Eliminar aquesta regla d\'ordenació del sistema. Els llibres que utilitzin aquest tipus, es revertiran a l\'ordenació manual.',
+ 'sort_rule_delete_warn_books' => 'Aquesta regla d\'ordenació s\'utilitza actualment en :count llibre(s). Està segur que vol eliminar-la?',
+ 'sort_rule_delete_warn_default' => 'Aquesta regla d\'ordenació s\'utilitza actualment com a predeterminada per als llibres. Està segur que vol eliminar-la?',
+ 'sort_rule_details' => 'Detalls de la regla d\'ordenació',
+ 'sort_rule_details_desc' => 'Defineix un nom per aquesta regla d\'ordenació, que apareixerà a les llistes quan els usuaris estiguin seleccionant un ordre.',
+ 'sort_rule_operations' => 'Operacions d\'ordenació',
+ 'sort_rule_operations_desc' => 'Configura les accions d\'ordenació a realitzar movent-les de la llista d\'operacions disponibles. En utilitzar-se, les operacions s\'aplicaran en ordre, de dalt cap a baix. Qualsevol canvi realitzat aquí, s\'aplicarà a tots els llibres assignats en guardar.',
+ 'sort_rule_available_operations' => 'Operacions disponibles',
+ 'sort_rule_available_operations_empty' => 'No hi ha operacions pendents',
+ 'sort_rule_configured_operations' => 'Operacions configurades',
+ 'sort_rule_configured_operations_empty' => 'Arrossegar/afegir operacions des de la llista d\'Operacions Disponibles',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Nom - Alfabètic',
+ 'sort_rule_op_name_numeric' => 'Nom - Numèric',
+ 'sort_rule_op_created_date' => 'Data de creació',
+ 'sort_rule_op_updated_date' => 'Data d\'actualització',
+ 'sort_rule_op_chapters_first' => 'Capítols a l\'inici',
+ 'sort_rule_op_chapters_last' => 'Capítols al final',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Manteniment',
+ 'maint_image_cleanup' => 'Neteja d’imatges',
+ 'maint_image_cleanup_desc' => 'Escanegeu les pàgines i les revisions per a comprovar quines imatges o dibuixos s’utilitzen i quins no. Assegureu-vos de crear una còpia de seguretat completa de la base de dades i de les imatges abans d’executar-la.',
+ 'maint_delete_images_only_in_revisions' => 'Suprimiu també les imatges que només existeixen en revisions de pàgina antigues.',
+ 'maint_image_cleanup_run' => 'Executa la neteja',
+ 'maint_image_cleanup_warning' => 'Imatges que potencialment no s’utilitzen: :count. Esteu segur que voleu suprimir aquestes imatges?',
+ 'maint_image_cleanup_success' => 'Imatges que potencialment no s’utilitzen que s’han suprimit: :count.',
+ 'maint_image_cleanup_nothing_found' => 'No s’ha trobat cap imatge que no s’utilitzi. No s’ha suprimit res.',
+ 'maint_send_test_email' => 'Envia un correu electrònic de prova.',
+ 'maint_send_test_email_desc' => 'S’enviarà un correu electrònic de prova a l’adreça electrònica que figura al vostre perfil.',
+ 'maint_send_test_email_run' => 'Envia el correu electrònic de prova',
+ 'maint_send_test_email_success' => 'S’ha enviat un correu electrònic a :address',
+ 'maint_send_test_email_mail_subject' => 'Correu electrònic de prova',
+ 'maint_send_test_email_mail_greeting' => 'Sembla que l’enviament de correus electrònics funciona.',
+ 'maint_send_test_email_mail_text' => 'Enhorabona! Que hagis rebut aquesta notificació de correu electrònic vol dir que la vostra configuració de correu electrònic és correcta.',
+ 'maint_recycle_bin_desc' => 'Els prestatges, els llibres, els capítols i les pàgines suprimides s’envien a la paperera perquè es puguin restaurar o suprimir permanentment. És possible que els elements que fa més temps que són a la paperera s’eliminin automàticament al cap d’un temps segons la configuració del sistema.',
+ 'maint_recycle_bin_open' => 'Obre la paperera',
+ 'maint_regen_references' => 'Regenera les referències',
+ 'maint_regen_references_desc' => 'Aquesta acció reconstruirà l’índex de referències creuades entre elements a la base de dades. Normalment es fa automàticament però aquesta acció és útil per a indexar contingut antic o contingut afegit a través de mètodes no oficials.',
+ 'maint_regen_references_success' => 'S’ha regenerat l’índex de referències.',
+ 'maint_timeout_command_note' => 'Nota: És possible que aquesta acció trigui a executar-se cosa que pot provocar que s’excedeixi el temps d’espera en alguns entorns web. Com a alternativa, podeu executar aquesta acció amb una ordre del terminal.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Paperera',
+ 'recycle_bin_desc' => 'Aquí podeu restaurar els elements que s’han suprimit o suprimir-los permanentment del sistema. Aquesta llista no està filtrada, a diferència de llistes d’activitat similars on s’apliquen filtres de permisos.',
+ 'recycle_bin_deleted_item' => 'Element suprimit',
+ 'recycle_bin_deleted_parent' => 'Pare',
+ 'recycle_bin_deleted_by' => 'Suprimit per',
+ 'recycle_bin_deleted_at' => 'Hora de supressió',
+ 'recycle_bin_permanently_delete' => 'Suprimit permanentment',
+ 'recycle_bin_restore' => 'Restaura',
+ 'recycle_bin_contents_empty' => 'La paperera és buida',
+ 'recycle_bin_empty' => 'Buida la paperera',
+ 'recycle_bin_empty_confirm' => 'Se suprimiran permanentment tots els elements que hi ha a la paperera incloent-hi el contingut que hi hagi a cada element. Esteu segur que voleu buidar la paperera?',
+ 'recycle_bin_destroy_confirm' => 'Aquesta acció suprimirà del sistema de manera permanent aquest element, juntament amb tots els fills que es llisten a sota, i no podreu restaurar aquest contingut. Segur que voleu suprimir de manera permanent aquest element?',
+ 'recycle_bin_destroy_list' => 'Elements per destruir',
+ 'recycle_bin_restore_list' => 'Elements per restaurar',
+ 'recycle_bin_restore_confirm' => 'Aquesta acció restaurarà l’element suprimit, incloent-hi els elements fills, a la seva ubicació original. Si la ubicació original s’ha suprimit i és a la paperera, l’element pare també s’haurà de restaurar.',
+ 'recycle_bin_restore_deleted_parent' => 'El pare d’aquest element també s’ha suprimit. L’element continuarà suprimit fins que no se’n restauri també el pare.',
+ 'recycle_bin_restore_parent' => 'Restaura el pare',
+ 'recycle_bin_destroy_notification' => 'Elements suprimits de la paperera: :count.',
+ 'recycle_bin_restore_notification' => 'Elements restaurats de la paperera: :count.',
+
+ // Audit Log
+ 'audit' => 'Registre d’auditoria',
+ 'audit_desc' => 'El registre d\'auditoria mostra una llista de les activitats de què es fa un seguiment. Aquesta llista no està filtrada, a diferència de llistes d’activitat similars on s’apliquen filtres de permisos.',
+ 'audit_event_filter' => 'Filtre d’esdeveniments',
+ 'audit_event_filter_no_filter' => 'Sense filtre',
+ 'audit_deleted_item' => 'Element suprimit',
+ 'audit_deleted_item_name' => 'Nom: :name',
+ 'audit_table_user' => 'Usuari',
+ 'audit_table_event' => 'Esdeveniment',
+ 'audit_table_related' => 'Element relacionat o detall',
+ 'audit_table_ip' => 'Adreça IP',
+ 'audit_table_date' => 'Data de l’activitat',
+ 'audit_date_from' => 'Des de',
+ 'audit_date_to' => 'Fins a',
+
+ // Role Settings
+ 'roles' => 'Rols',
+ 'role_user_roles' => 'Rols d’usuari',
+ 'roles_index_desc' => 'Els rols d’usuari s’utilitzen per a agrupar usuaris i donar-los permisos conjuntament. Un usuari que tingui més d’un rol acumularà els privilegis que s’atorguin a tots els rols i n’heretarà els permisos.',
+ 'roles_x_users_assigned' => ':count usuari assignat|:count usuaris assignats',
+ 'roles_x_permissions_provided' => ':count permís|:count permisos',
+ 'roles_assigned_users' => 'Usuaris assignats',
+ 'roles_permissions_provided' => 'Permisos atorgats',
+ 'role_create' => 'Crea un rol',
+ 'role_delete' => 'Suprimeix un rol',
+ 'role_delete_confirm' => 'Se suprimirà el rol «:roleName».',
+ 'role_delete_users_assigned' => 'Usuaris assignats en aquest rol: :userCount. Si voleu migrar aquests usuaris a un altre rol, seleccioneu-ne un dels de sota.',
+ 'role_delete_no_migration' => "No migris els usuaris",
+ 'role_delete_sure' => 'Esteu segur que voleu suprimir aquest rol?',
+ 'role_edit' => 'Edita el rol',
+ 'role_details' => 'Detalls del rol',
+ 'role_name' => 'Nom del rol',
+ 'role_desc' => 'Descripció del rol',
+ 'role_mfa_enforced' => 'Autenticació multifactorial requerida',
+ 'role_external_auth_id' => 'Identificadors d’autenticació externa',
+ 'role_system' => 'Permisos del sistema',
+ 'role_manage_users' => 'Gestió dels usuaris',
+ 'role_manage_roles' => 'Gestió dels rols i els seus permisos',
+ 'role_manage_entity_permissions' => 'Gestió de tots els permisos de llibres, capítols i pàgines',
+ 'role_manage_own_entity_permissions' => 'Gestió dels permisos als seus llibres, capítols i pàgines',
+ 'role_manage_page_templates' => 'Gestió de les plantilles de pàgina',
+ 'role_access_api' => 'Accés a l’API del sistema',
+ 'role_manage_settings' => 'Gestió de la configuració de l’aplicació',
+ 'role_export_content' => 'Exportació de contingut',
+ 'role_import_content' => 'Importar contingut',
+ 'role_editor_change' => 'Canvi de l’editor de pàgina',
+ 'role_notifications' => 'Recepció i gestió de notificacions',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Permisos de recursos',
+ 'roles_system_warning' => 'Tingueu en compte que l’accés a qualsevol dels tres permisos de dalt permeten que l’usuari canviï els seus privilegis i els privilegis d’altres usuaris. Assigneu rols d’usuari amb aquests permisos només a usuaris de confiança.',
+ 'role_asset_desc' => 'Aquests permisos controlen l’accés per defecte als recursos del sistema. El permisos dels llibres, capítols i pàgines sobreescriuran aquests permisos.',
+ 'role_asset_admins' => 'Als administradors se’ls dona accés automàticament a tot el contingut però aquestes opcions mostren o amaguen opcions de la interfície d’usuari.',
+ 'role_asset_image_view_note' => 'Això té relació amb la visibilitat al gestor d’imatges. L’accés a les imatges pujades dependrà de l’opció d’emmagatzematge d’imatges dels sistema.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Tot',
+ 'role_own' => 'Propi',
+ 'role_controlled_by_asset' => 'Controlat pel recurs a què estan pujats',
+ 'role_save' => 'Desa el rol',
+ 'role_users' => 'Usuaris assignats en aquest rol',
+ 'role_users_none' => 'No hi ha cap usuari assignat en aquest rol',
+
+ // Users
+ 'users' => 'Usuaris',
+ 'users_index_desc' => 'Creeu i gestioneu comptes d’usuari individuals. Els comptes d’usuari s’utilitzen per als inicis de sessió i les atribucions de contingut i activitat. Els permisos d’accés es basen fonamentalment en el rol d’usuari però la propietat del contingut, entre d’altres, també afecta els permisos i l’accés.',
+ 'user_profile' => 'Perfil d’usuari',
+ 'users_add_new' => 'Afegeix un usuari nou',
+ 'users_search' => 'Cerca usuaris',
+ 'users_latest_activity' => 'Activitat més recent',
+ 'users_details' => 'Detalls de l’usuari',
+ 'users_details_desc' => 'Configureu un nom i una adreça electrònica per a aquest usuari. L’adreça electrònica s’usarà per a iniciar sessió a l’aplicació.',
+ 'users_details_desc_no_email' => 'Configureu un nom per a aquest usuari perquè se’l pugui reconèixer.',
+ 'users_role' => 'Rols d’usuari',
+ 'users_role_desc' => 'Seleccioneu quins rols s’assignaran en aquest usuari. Si a un usuari se li assignen més d’un rol acumularà els privilegis que s’atorguin a tots els rols i n’heretarà les els permisos.',
+ 'users_password' => 'Contrasenya d’usuari',
+ 'users_password_desc' => 'Configureu la contrasenya que s’utilitzarà per a iniciar sessió a l’aplicació. Ha de tenir com a mínim 8 caràcters.',
+ 'users_send_invite_text' => 'Podeu configurar la contrasenya o enviar un correu electrònic que convidi a l’usuari a configurar-la.',
+ 'users_send_invite_option' => 'Envia el correu electrònic',
+ 'users_external_auth_id' => 'Identificador d’autenticació extern',
+ 'users_external_auth_id_desc' => 'Quan s’utilitza un sistema d’autenticació extern (com ara SAML2, OIDC or LDAP) l’identificador enllaça l’usuari amb el compte dels sistema d’autenticació. Podeu ignorar aquest camp si utilitzeu l’autenticació amb correu electrònic per defecte.',
+ 'users_password_warning' => 'Ompliu els camps de sota només si voleu canviar la contrasenya d’aquest usuari.',
+ 'users_system_public' => 'Aquest usuari representa qualsevol usuari convidat que visiti la instància. No es pot utilitzar per a iniciar sessió sinó que s’assigna automàticament.',
+ 'users_delete' => 'Suprimeix l’usuari',
+ 'users_delete_named' => 'Suprimeix l’usuari :userName',
+ 'users_delete_warning' => 'Se suprimirà l’usuari «:userName» del sistema.',
+ 'users_delete_confirm' => 'Esteu segur que voleu suprimir aquest usuari?',
+ 'users_migrate_ownership' => 'Migració de la propietat',
+ 'users_migrate_ownership_desc' => 'Si voleu que un altre usuari esdevingui el propietari de tots els elements d’aquest usuari, seleccioneu-ne un.',
+ 'users_none_selected' => 'No s’ha seleccionat cap usuari',
+ 'users_edit' => 'Edita l’usuari',
+ 'users_edit_profile' => 'Edita el perfil',
+ 'users_avatar' => 'Avatar',
+ 'users_avatar_desc' => 'Seleccioneu una imatge per a representar aquest usuari. Ha de ser una imatge quadrada de 256px de costat, aproximadament.',
+ 'users_preferred_language' => 'Llengua',
+ 'users_preferred_language_desc' => 'Canvia la llengua en què es mostra la interfície d’usuari de l’aplicació. No afectarà el contingut creat pels usuaris.',
+ 'users_social_accounts' => 'Comptes a les xarxes socials',
+ 'users_social_accounts_desc' => 'Mireu l’estat dels comptes socials connectats d’aquest usuari. També es poden utilitzar els comptes socials per a iniciar sessió a banda del sistema d’autenticació principal.',
+ 'users_social_accounts_info' => 'Connecteu els vostres comptes socials per a iniciar sessió més ràpidament. La desconnexió d’un compte no revoca l’autorització d’accés atorgada prèviament. Revoqueu l’accés des de la configuració de perfil del compte social connectat.',
+ 'users_social_connect' => 'Connecta el compte',
+ 'users_social_disconnect' => 'Desconnecta el compte',
+ 'users_social_status_connected' => 'Connectat',
+ 'users_social_status_disconnected' => 'Desconnectat',
+ 'users_social_connected' => 'S’ha connectat el compte :socialAccount al vostre perfil.',
+ 'users_social_disconnected' => 'S’ha desconnectat el compte :socialAccount del vostre perfil.',
+ 'users_api_tokens' => 'Testimonis API',
+ 'users_api_tokens_desc' => 'Creeu i gestioneu els testimonis d’accés que s’utilitzen per autenticar els usuaris amb la l’API REST del BookStack. Els permisos de l’API es gestionen a través de l’usuari a qui pertany el testimoni.',
+ 'users_api_tokens_none' => 'No s’ha creat cap testimoni API per a aquest usuari',
+ 'users_api_tokens_create' => 'Crea un testimoni',
+ 'users_api_tokens_expires' => 'Caducitat',
+ 'users_api_tokens_docs' => 'Documentació de l’API',
+ 'users_mfa' => 'Autenticació multifactorial',
+ 'users_mfa_desc' => 'Configureu l’autenticació multifactorial per a afegir una capa de seguretat extra al vostre compte d’usuari.',
+ 'users_mfa_x_methods' => 'Hi ha :count mètode configurat|Hi ha :count mètodes configurats',
+ 'users_mfa_configure' => 'Configura un mètode',
+
+ // API Tokens
+ 'user_api_token_create' => 'Crea un testimoni API',
+ 'user_api_token_name' => 'Nom',
+ 'user_api_token_name_desc' => 'Anomeneu el testimoni amb un nom entenedor que permeti saber-ne el propòsit.',
+ 'user_api_token_expiry' => 'Data de caducitat',
+ 'user_api_token_expiry_desc' => 'Configureu la data de caducitat del testimoni. Un cop passada aquesta data, les sol·licituds fetes amb aquest testimoni no funcionaran. Si deixeu aquest camp en blanc, el testimoni caducarà d’aquí 100 anys.',
+ 'user_api_token_create_secret_message' => 'Es crearà i es mostrarà un «identificador de testimoni» i un «secret de testimoni» immediatament després de crear aquest testimoni. El secret es mostrarà només un sol cop. Assegureu-vos d’anotar-lo i de desar-lo en un lloc segur abans de continuar.',
+ 'user_api_token' => 'Testimoni API',
+ 'user_api_token_id' => 'Identificador de testimoni',
+ 'user_api_token_id_desc' => 'És un identificador no editable generat pel sistema per a aquest testimoni i que s’haurà de proporcionar en les sol·licituds API.',
+ 'user_api_token_secret' => 'Secret de testimoni',
+ 'user_api_token_secret_desc' => 'És un secret generat pel sistema per a aquest testimoni i que s’haurà de proporcionar en les sol·licituds API. Es mostrarà només un sol cop. Assegureu-vos d’anotar-lo i de desar-lo en un lloc segur abans de continuar.',
+ 'user_api_token_created' => 'Testimoni creat :timeAgo',
+ 'user_api_token_updated' => 'Testimoni actualitzat :timeAgo',
+ 'user_api_token_delete' => 'Suprimeix el testimoni',
+ 'user_api_token_delete_warning' => 'Se suprimirà el testimoni API «:tokenName» del sistema.',
+ 'user_api_token_delete_confirm' => 'Esteu segur que voleu suprimir aquest testimoni API?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Els webhooks permeten enviar dades a URLs externs quan ocorren unes accions o esdeveniments determinats. Això permet la integració basada en esdeveniments amb plataformes externes com ara sistemes de missatgeria o notificació.',
+ 'webhooks_x_trigger_events' => 'Hi ha :count esdeveniment disparador|Hi ha :count esdeveniments disparadors',
+ 'webhooks_create' => 'Crea un webhook',
+ 'webhooks_none_created' => 'No hi ha cap webhook',
+ 'webhooks_edit' => 'Edita el webhook',
+ 'webhooks_save' => 'Desa el webhook',
+ 'webhooks_details' => 'Detalls del webhook',
+ 'webhooks_details_desc' => 'Anomeneu el webhook amb un nom entenedor i proporcioneu un extrem POST com a ubicació on enviar les dades per al webhook.',
+ 'webhooks_events' => 'Esdeveniments webhook',
+ 'webhooks_events_desc' => 'Seleccioneu els esdeveniment que voleu que disparin la crida d’aquest webhook.',
+ 'webhooks_events_warning' => 'Tingueu en compte que aquestes crides es dispararan a tots els esdeveniments seleccionats, inclús si s’apliquen permisos personalitzats. Assegureu-vos que l’ús d’aquest webhook no exposarà contingut confidencial.',
+ 'webhooks_events_all' => 'Tots els esdeveniments del sistema',
+ 'webhooks_name' => 'Nom del webhook',
+ 'webhooks_timeout' => 'Temps d’espera del webhook (en segons)',
+ 'webhooks_endpoint' => 'Extrem del webhook',
+ 'webhooks_active' => 'Webhook actiu',
+ 'webhook_events_table_header' => 'Esdeveniments',
+ 'webhooks_delete' => 'Suprimeix el webhook',
+ 'webhooks_delete_warning' => 'Se suprimirà el webhook «:webhookName» del sistema.',
+ 'webhooks_delete_confirm' => 'Esteu segur que voleu suprimir aquest webhook?',
+ 'webhooks_format_example' => 'Exemple de format de webhook',
+ 'webhooks_format_example_desc' => 'Les dades d’un webhook s’envien com una sol·licitud POST a l’extrem configurat com a JSON amb el format següent. Les propietats «related_item» i «url» són opcionals i dependran del tipus d’esdeveniment que es dispari.',
+ 'webhooks_status' => 'Estat del webhook',
+ 'webhooks_last_called' => 'Darrera crida:',
+ 'webhooks_last_errored' => 'Darrer error:',
+ 'webhooks_last_error_message' => 'Darrer missatge d’error:',
+
+ // Licensing
+ 'licenses' => 'Llicències',
+ 'licenses_desc' => 'Aquesta pàgina detalla informació sobre la llicència de BookStack a més dels projectes i biblioteques que s\'utilitzen en BookStack. Molts projectes enumerats aquí poden ser utilitzats només en un context de desenvolupament.',
+ 'licenses_bookstack' => 'Llicència de BookStack',
+ 'licenses_php' => 'Llicències de Biblioteques de PHP',
+ 'licenses_js' => 'Llicències de Biblioteques de JavaScript',
+ 'licenses_other' => 'Altres llicències',
+ 'license_details' => 'Detalls de la llicència',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/ca/validation.php b/lang/ca/validation.php
new file mode 100644
index 00000000000..1debc5eb21d
--- /dev/null
+++ b/lang/ca/validation.php
@@ -0,0 +1,123 @@
+ 'Cal que accepteu el camp :attribute.',
+ 'active_url' => 'El camp :attribute no és un URL vàlid.',
+ 'after' => 'El camp :attribute ha de ser una data posterior a :date.',
+ 'alpha' => 'El camp :attribute només pot contenir lletres.',
+ 'alpha_dash' => 'El camp :attribute només pot contenir lletres, xifres, guionets i guions baixos.',
+ 'alpha_num' => 'El camp :attribute només pot contenir lletres, xifres.',
+ 'array' => 'El camp :attribute ha de ser una matriu.',
+ 'backup_codes' => 'El codi que heu proporcionat no és vàlid o ja s’ha utilitzat.',
+ 'before' => 'El camp :attribute ha de ser una data posterior a :date.',
+ 'between' => [
+ 'numeric' => 'El camp :attribute ha de ser un nombre entre :min i :max.',
+ 'file' => 'El camp :attribute ha de tenir entre :min i :max kilobytes.',
+ 'string' => 'El camp :attribute ha de tenir entre :min i :max caràcters.',
+ 'array' => 'El camp :attribute ha de tenir entre :min i :max elements.',
+ ],
+ 'boolean' => 'El camp :attribute ha de ser cert o fals.',
+ 'confirmed' => 'La confirmació del camp :attribute no coincideix.',
+ 'date' => 'El camp :attribute no és una data vàlida.',
+ 'date_format' => 'El camp :attribute no coincideix amb el format :format.',
+ 'different' => 'El camp :attribute i :other han de ser diferents.',
+ 'digits' => 'El camp :attribute ha de tenir :digits xifres.',
+ 'digits_between' => 'El camp :attribute ha de tenir entre :min i :max xifres.',
+ 'email' => 'El camp :attribute ha de ser un adreça electrònica vàlida.',
+ 'ends_with' => 'El camp :attribute ha d’acabar amb un dels signes següents: :values',
+ 'file' => 'El camp :attribute ha de ser un fitxer vàlid.',
+ 'filled' => 'El camp :attribute és obligatori.',
+ 'gt' => [
+ 'numeric' => 'El camp :attribute ha de ser més gran que :value.',
+ 'file' => 'El camp :attribute ha de tenir més de :value kilobytes.',
+ 'string' => 'El camp :attribute ha de tenir més de :value caràcters.',
+ 'array' => 'El camp :attribute ha de tenir més de :value elements.',
+ ],
+ 'gte' => [
+ 'numeric' => 'El camp :attribute ha de ser com a mínim :value.',
+ 'file' => 'El camp :attribute ha de tenir com a mínim :value kilobytes.',
+ 'string' => 'El camp :attribute ha de tenir com a mínim :value caràcters.',
+ 'array' => 'El camp :attribute ha de tenir com a mínim :value elements.',
+ ],
+ 'exists' => 'El camp :attribute seleccionat no és vàlid.',
+ 'image' => 'El camp :attribute ha de ser una imatge.',
+ 'image_extension' => 'El camp :attribute ha de tenir una extensió d’imatge compatible.',
+ 'in' => 'El camp :attribute no és vàlid.',
+ 'integer' => 'El camp :attribute ha de ser un nombre enter.',
+ 'ip' => 'El camp :attribute ha de ser un adreça IP vàlida.',
+ 'ipv4' => 'El camp :attribute ha de ser un adreça IPv4 vàlida.',
+ 'ipv6' => 'El camp :attribute ha de ser un adreça IPv6 vàlida.',
+ 'json' => 'El camp :attribute ha de ser una cadena JSON vàlida.',
+ 'lt' => [
+ 'numeric' => 'El camp :attribute ha de ser més petit que :value.',
+ 'file' => 'El camp :attribute ha de tenir menys de :value kilobytes.',
+ 'string' => 'El camp :attribute ha de tenir menys de :value caràcters.',
+ 'array' => 'El camp :attribute ha de tenir menys de :value elements.',
+ ],
+ 'lte' => [
+ 'numeric' => 'El camp :attribute ha de ser com a màxim :value.',
+ 'file' => 'El camp :attribute ha de tenir com a màxim :value kilobytes.',
+ 'string' => 'El camp :attribute ha de tenir com a màxim :value caràcters.',
+ 'array' => 'El camp :attribute ha de tenir com a màxim :value elements.',
+ ],
+ 'max' => [
+ 'numeric' => 'El camp :attribute ha de ser com a màxim :max.',
+ 'file' => 'El camp :attribute ha de tenir com a màxim :max kilobytes.',
+ 'string' => 'El camp :attribute ha de tenir com a màxim :max caràcters.',
+ 'array' => 'El camp :attribute ha de tenir com a màxim :max elements.',
+ ],
+ 'mimes' => 'El camp :attribute ha de ser un fitxer del tipus: :values.',
+ 'min' => [
+ 'numeric' => 'El camp :attribute ha de ser com a mínim :min.',
+ 'file' => 'El camp :attribute ha de tenir com a mínim :min kilobytes.',
+ 'string' => 'El camp :attribute ha de tenir com a mínim :min caràcters.',
+ 'array' => 'El camp :attribute ha de tenir com a mínim :min elements.',
+ ],
+ 'not_in' => 'El camp :attribute no és vàlid.',
+ 'not_regex' => 'El format :attribute no és vàlid.',
+ 'numeric' => 'El camp :attribute ha de ser un nombre.',
+ 'regex' => 'El format :attribute no és vàlid.',
+ 'required' => 'El camp :attribute és obligatori.',
+ 'required_if' => 'El camp :attribute és obligatori quan :other és :value.',
+ 'required_with' => 'El camp :attribute és obligatori quan hi ha :values.',
+ 'required_with_all' => 'El camp :attribute és obligatori quan hi ha tots aquests valors: :values.',
+ 'required_without' => 'El camp :attribute és obligatori quan no hi ha :values.',
+ 'required_without_all' => 'El camp :attribute és obligatori quan no hi ha cap d’aquests valors: :values.',
+ 'same' => 'El camp :attribute i :other han de coincidir.',
+ 'safe_url' => 'És possible que l’enllaç proporcionat no sigui segur.',
+ 'size' => [
+ 'numeric' => 'El camp :attribute ha de ser :size.',
+ 'file' => 'El camp :attribute ha de tenir :size kilobytes.',
+ 'string' => 'El camp :attribute ha de tenir :size caràcters',
+ 'array' => 'El camp :attribute ha de tenir :size elements.',
+ ],
+ 'string' => 'El camp :attribute ha de ser una cadena de text.',
+ 'timezone' => 'El camp :attribute ha de ser un fus horari vàlid.',
+ 'totp' => 'El codi proporcionat no és vàlid o ha caducat.',
+ 'unique' => 'El camp :attribute ja s’ha utilitzat.',
+ 'url' => 'El format :attribute no és vàlid.',
+ 'uploaded' => 'No s’ha pogut pujar el fitxer. És possible que el servidor no admeti fitxers d’aquesta mida.',
+
+ 'zip_file' => 'El :attribute necessita fer referència a un arxiu dins del ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'El :attribute necessita fer referència a un arxiu de tipus :validTyes, trobat :foundType.',
+ 'zip_model_expected' => 'S\'esperava un objecte de dades, però s\'ha trobat ":type".',
+ 'zip_unique' => 'El :attribute ha de ser únic pel tipus d\'objecte dins del ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Heu de confirmar la contrasenya.',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/cs/activities.php b/lang/cs/activities.php
new file mode 100644
index 00000000000..f7e9337d3fa
--- /dev/null
+++ b/lang/cs/activities.php
@@ -0,0 +1,140 @@
+ 'vytvořil/a stránku',
+ 'page_create_notification' => 'Stránka byla úspěšně vytvořena',
+ 'page_update' => 'aktualizoval/a stránku',
+ 'page_update_notification' => 'Stránka byla úspěšně aktualizována',
+ 'page_delete' => 'odstranil/a stránku',
+ 'page_delete_notification' => 'Stránka byla úspěšně smazána',
+ 'page_restore' => 'obnovil/a stránku',
+ 'page_restore_notification' => 'Stránka byla úspěšně obnovena',
+ 'page_move' => 'přesunul/a stránku',
+ 'page_move_notification' => 'Strana byla úspěšně přesunuta',
+
+ // Chapters
+ 'chapter_create' => 'vytvořil/a kapitolu',
+ 'chapter_create_notification' => 'Kapitola byla úspěšně vytvořena',
+ 'chapter_update' => 'aktualizoval/a kapitolu',
+ 'chapter_update_notification' => 'Kapitola byla úspěšně aktualizována',
+ 'chapter_delete' => 'odstranila/a kapitolu',
+ 'chapter_delete_notification' => 'Kapitola byla úspěšně odstraněna',
+ 'chapter_move' => 'přesunul/a kapitolu',
+ 'chapter_move_notification' => 'Kapitola byla úspěšně přesunuta',
+
+ // Books
+ 'book_create' => 'vytvořil/a knihu',
+ 'book_create_notification' => 'Kniha byla úspěšně vytvořena',
+ 'book_create_from_chapter' => 'převést kapitolu na knihu',
+ 'book_create_from_chapter_notification' => 'Kapitola byla úspěšně převedena na knihu',
+ 'book_update' => 'aktualizoval/a knihu',
+ 'book_update_notification' => 'Kniha byla úspěšně aktualizována',
+ 'book_delete' => 'odstranil/a knihu',
+ 'book_delete_notification' => 'Kniha byla úspěšně odstraněna',
+ 'book_sort' => 'seřadil/a knihu',
+ 'book_sort_notification' => 'Kniha byla úspěšně seřazena',
+
+ // Bookshelves
+ 'bookshelf_create' => 'vytvořil polici',
+ 'bookshelf_create_notification' => 'Police byla úspěšně vytvořena',
+ 'bookshelf_create_from_book' => 'převést knihu na polici',
+ 'bookshelf_create_from_book_notification' => 'Kniha byla úspěšně převedena na polici',
+ 'bookshelf_update' => 'aktualizovat polici',
+ 'bookshelf_update_notification' => 'Police byla úspěšně aktualizována',
+ 'bookshelf_delete' => 'odstranil polici',
+ 'bookshelf_delete_notification' => 'Police byla úspěšně odstraněna',
+
+ // Revisions
+ 'revision_restore' => 'obnovil revizi',
+ 'revision_delete' => 'odstranil revizi',
+ 'revision_delete_notification' => 'Revize byla úspěšně odstraněna',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" byla přidána do Vašich oblíbených',
+ 'favourite_remove_notification' => '":name" byla odstraněna z Vašich oblíbených',
+
+ // Watching
+ 'watch_update_level_notification' => 'Předvolby sledování úspěšně aktualizovány',
+
+ // Auth
+ 'auth_login' => 'se přihlásil',
+ 'auth_register' => 'se zaregistroval jako nový uživatel',
+ 'auth_password_reset_request' => 'zažádal o resetování hesla',
+ 'auth_password_reset_update' => 'zresetoval uživatelské heslo',
+ 'mfa_setup_method' => 'nastavil MFA metodu',
+ 'mfa_setup_method_notification' => 'Vícefaktorová metoda byla úspěšně nakonfigurována',
+ 'mfa_remove_method' => 'odstranil MFA metodu',
+ 'mfa_remove_method_notification' => 'Vícefaktorová metoda byla úspěšně odstraněna',
+
+ // Settings
+ 'settings_update' => 'aktualizoval nastavení',
+ 'settings_update_notification' => 'Nastavení bylo úspěšně aktualizováno',
+ 'maintenance_action_run' => 'spustil údržbu',
+
+ // Webhooks
+ 'webhook_create' => 'vytvořil/a webhook',
+ 'webhook_create_notification' => 'Webhook byl úspěšně vytvořen',
+ 'webhook_update' => 'aktualizoval/a webhook',
+ 'webhook_update_notification' => 'Webhook byl úspěšně aktualizován',
+ 'webhook_delete' => 'odstranil/a webhook',
+ 'webhook_delete_notification' => 'Webhook byl úspěšně odstraněn',
+
+ // Imports
+ 'import_create' => 'vytvořil/a import',
+ 'import_create_notification' => 'Import byl úspěšně nahrán',
+ 'import_run' => 'aktualizoval/a import',
+ 'import_run_notification' => 'Obsah byl úspěšně importován',
+ 'import_delete' => 'odstranil/a import',
+ 'import_delete_notification' => 'Import byl úspěšně odstraněn',
+
+ // Users
+ 'user_create' => 'vytvořil uživatele',
+ 'user_create_notification' => 'Uživatel byl úspěšně vytvořen',
+ 'user_update' => 'aktualizoval uživatele',
+ 'user_update_notification' => 'Uživatel byl úspěšně aktualizován',
+ 'user_delete' => 'odstranil uživatele',
+ 'user_delete_notification' => 'Uživatel byl úspěšně odstraněn',
+
+ // API Tokens
+ 'api_token_create' => 'API token byl vytvořen',
+ 'api_token_create_notification' => 'API token úspěšně vytvořen',
+ 'api_token_update' => 'API token byl aktualizován',
+ 'api_token_update_notification' => 'API token úspěšně aktualizován',
+ 'api_token_delete' => 'API token byl odstraněn',
+ 'api_token_delete_notification' => 'API token úspěšně odstraněn',
+
+ // Roles
+ 'role_create' => 'vytvořil roli',
+ 'role_create_notification' => 'Role byla úspěšně vytvořena',
+ 'role_update' => 'aktualizoval roli',
+ 'role_update_notification' => 'Role byla úspěšně aktualizována',
+ 'role_delete' => 'odstranil roli',
+ 'role_delete_notification' => 'Role byla odstraněna',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'vyprázdnil koš',
+ 'recycle_bin_restore' => 'obnovil z koše',
+ 'recycle_bin_destroy' => 'odstranil z koše',
+
+ // Comments
+ 'commented_on' => 'okomentoval/a',
+ 'comment_create' => 'přidal komentář',
+ 'comment_update' => 'aktualizoval komentář',
+ 'comment_delete' => 'odstranil komentář',
+
+ // Sort Rules
+ 'sort_rule_create' => 'vytvořil/a pravidlo řazení',
+ 'sort_rule_create_notification' => 'Pravidlo řazení bylo úspěšně vytvořeno',
+ 'sort_rule_update' => 'aktualizoval/a pravidlo řazení',
+ 'sort_rule_update_notification' => 'Pravidlo řazení bylo úspěšně aktualizováno',
+ 'sort_rule_delete' => 'odstranil/a pravidlo řazení',
+ 'sort_rule_delete_notification' => 'Pravidlo řazení bylo úspěšně odstraněno',
+
+ // Other
+ 'permissions_update' => 'oprávnění upravena',
+];
diff --git a/lang/cs/auth.php b/lang/cs/auth.php
new file mode 100644
index 00000000000..ad225a2fee2
--- /dev/null
+++ b/lang/cs/auth.php
@@ -0,0 +1,117 @@
+ 'Neplatné přihlašovací údaje.',
+ 'throttle' => 'Příliš mnoho pokusů o přihlášení. Zkuste to prosím znovu za :seconds sekund.',
+
+ // Login & Register
+ 'sign_up' => 'Registrace',
+ 'log_in' => 'Přihlášení',
+ 'log_in_with' => 'Přihlásit se přes :socialDriver',
+ 'sign_up_with' => 'Registrovat se přes :socialDriver',
+ 'logout' => 'Odhlásit',
+
+ 'name' => 'Jméno',
+ 'username' => 'Uživatelské jméno',
+ 'email' => 'E-mail',
+ 'password' => 'Heslo',
+ 'password_confirm' => 'Potvrzení hesla',
+ 'password_hint' => 'Musí mít alespoň 8 znaků',
+ 'forgot_password' => 'Zapomenuté heslo?',
+ 'remember_me' => 'Zapamatovat si mě',
+ 'ldap_email_hint' => 'Zadejte email, který chcete přiřadit k tomuto účtu.',
+ 'create_account' => 'Vytvořit účet',
+ 'already_have_account' => 'Již máte účet?',
+ 'dont_have_account' => 'Nemáte učet?',
+ 'social_login' => 'Přihlášení přes sociální sítě',
+ 'social_registration' => 'Registrace přes sociální sítě',
+ 'social_registration_text' => 'Registrovat a přihlásit se přes jinou službu',
+
+ 'register_thanks' => 'Děkujeme za registraci!',
+ 'register_confirm' => 'Zkontrolujte prosím svůj e-mail a klikněte na potvrzovací tlačítko pro přístup do :appName.',
+ 'registrations_disabled' => 'Registrace jsou momentálně pozastaveny',
+ 'registration_email_domain_invalid' => 'Registrace z této e-mailové domény nejsou povoleny',
+ 'register_success' => 'Děkujeme za registraci! Nyní jste zaregistrováni a přihlášeni.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Pokus o přihlášení',
+ 'auto_init_starting_desc' => 'Kontaktujeme váš ověřovací systém pro zahájení procesu přihlášení. Pokud po 5 sekundách nedojde k žádnému pokroku, můžete zkusit kliknout na odkaz níže.',
+ 'auto_init_start_link' => 'Pokračovat s ověřováním',
+
+ // Password Reset
+ 'reset_password' => 'Obnovit heslo',
+ 'reset_password_send_instructions' => 'Níže zadejte svou e-mailovou adresu a bude vám zaslán e-mail s odkazem na obnovení hesla.',
+ 'reset_password_send_button' => 'Zaslat odkaz na obnovení hesla',
+ 'reset_password_sent' => 'Odkaz pro obnovení hesla bude odeslán na :email, pokud bude tato e-mailová adresa nalezena v systému.',
+ 'reset_password_success' => 'Vaše heslo bylo obnoveno.',
+ 'email_reset_subject' => 'Obnovit heslo do :appName',
+ 'email_reset_text' => 'Tento e-mail jste obdrželi, protože jsme obdrželi žádost o obnovení hesla k vašemu účtu.',
+ 'email_reset_not_requested' => 'Pokud jste o obnovení hesla nežádali, není vyžadována žádná další akce.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Potvrďte svůj e-mail pro :appName',
+ 'email_confirm_greeting' => 'Díky že jste se přidali do :appName!',
+ 'email_confirm_text' => 'Prosíme potvrďte svou e-mailovou adresu kliknutím na níže uvedené tlačítko:',
+ 'email_confirm_action' => 'Potvrdit e-mail',
+ 'email_confirm_send_error' => 'Potvrzení e-mailu je vyžadováno, ale systém nemohl odeslat e-mail. Obraťte se na správce, abyste se ujistili, že je e-mail správně nastaven.',
+ 'email_confirm_success' => 'Váš email byl ověřen! Nyní byste měli být schopni se touto emailovou adresou přihlásit.',
+ 'email_confirm_resent' => 'E-mail s potvrzením byl znovu odeslán. Zkontrolujte svou příchozí poštu.',
+ 'email_confirm_thanks' => 'Děkujeme za potvrzení!',
+ 'email_confirm_thanks_desc' => 'Počkejte prosím chvíli, než se vaše potvrzení vyřizuje. Pokud nebudete po 3 sekundách přesměrováni, klikněte na odkaz "Pokračovat" níže pro pokračování.',
+
+ 'email_not_confirmed' => 'E-mailová adresa nebyla potvrzena',
+ 'email_not_confirmed_text' => 'Vaše e-mailová adresa nebyla dosud potvrzena.',
+ 'email_not_confirmed_click_link' => 'Klikněte prosím na odkaz v e-mailu, který byl odeslán krátce po registraci.',
+ 'email_not_confirmed_resend' => 'Pokud nemůžete e-mail nalézt, můžete znovu odeslat potvrzovací e-mail odesláním níže uvedeného formuláře.',
+ 'email_not_confirmed_resend_button' => 'Znovu odeslat potvrzovací e-mail',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Byli jste pozváni do :appName!',
+ 'user_invite_email_greeting' => 'Byl pro vás vytvořen účet na :appName.',
+ 'user_invite_email_text' => 'Klikněte na níže uvedené tlačítko pro nastavení hesla k účtu a získání přístupu:',
+ 'user_invite_email_action' => 'Nastavit heslo k účtu',
+ 'user_invite_page_welcome' => 'Vítejte v :appName!',
+ 'user_invite_page_text' => 'Pro dokončení vašeho účtu a získání přístupu musíte nastavit heslo, které bude použito k přihlášení do :appName při dalších návštěvách.',
+ 'user_invite_page_confirm_button' => 'Potvrdit heslo',
+ 'user_invite_success_login' => 'Heslo bylo nasteaveno, nyní byste měli být schopni přihlásit se nastaveným heslem do aplikace :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Nastavit vícefaktorové ověření',
+ 'mfa_setup_desc' => 'Nastavit vícefaktorové ověřování jako další vrstvu zabezpečení vašeho uživatelského účtu.',
+ 'mfa_setup_configured' => 'Již nastaveno',
+ 'mfa_setup_reconfigure' => 'Přenastavit',
+ 'mfa_setup_remove_confirmation' => 'Opravdu chcete odstranit tuto metodu vícefaktorového ověřování?',
+ 'mfa_setup_action' => 'Nastavit',
+ 'mfa_backup_codes_usage_limit_warning' => 'Zbývá vám méně než 5 záložních kódů. Před vypršením kódu si prosím vygenerujte a uložte novou sadu, abyste se vyhnuli zablokování vašeho účtu.',
+ 'mfa_option_totp_title' => 'Mobilní aplikace',
+ 'mfa_option_totp_desc' => 'Pro použití vícefaktorového ověření budete potřebovat mobilní aplikaci, která podporuje TOTP jako např. Google Authenticator, Authy nebo Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Záložní kódy',
+ 'mfa_option_backup_codes_desc' => 'Vygeneruje sadu jednorázových záložních kódů, které zadáte při přihlášení k ověření své identity. Ujistěte se, že jsou uloženy na bezpečném místě.',
+ 'mfa_gen_confirm_and_enable' => 'Potvrdit a povolit',
+ 'mfa_gen_backup_codes_title' => 'Nastavení záložních kódů',
+ 'mfa_gen_backup_codes_desc' => 'Uložte níže uvedený seznam kódů na bezpečné místo. Při přístupu k systému budete moci použít jeden z kódů jako druhou metodu ověření.',
+ 'mfa_gen_backup_codes_download' => 'Stáhnout kódy',
+ 'mfa_gen_backup_codes_usage_warning' => 'Každý kód může být použit pouze jednou',
+ 'mfa_gen_totp_title' => 'Nastavení mobilní aplikace',
+ 'mfa_gen_totp_desc' => 'Pro použití vícefaktorového ověření budete potřebovat mobilní aplikaci, která podporuje TOTP jako např. Google Authenticator, Authy nebo Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Naskenujte QR kód níže pomocí vaší preferované ověřovací aplikace.',
+ 'mfa_gen_totp_verify_setup' => 'Ověřit nastavení',
+ 'mfa_gen_totp_verify_setup_desc' => 'Ověřte, že vše funguje zadáním kódu, generovaného v ověřovací aplikaci, do níže uvedeného vstupního pole:',
+ 'mfa_gen_totp_provide_code_here' => 'Zde zadejte kód vygenerovaný vaší aplikací',
+ 'mfa_verify_access' => 'Ověřit přístup',
+ 'mfa_verify_access_desc' => 'Váš uživatelský účet vyžaduje, abyste před udělením přístupu potvrdili svou totožnost prostřednictvím další úrovně ověření. Ověřte pomocí jedné z vašich nakonfigurovaných metod, abyste mohli pokračovat.',
+ 'mfa_verify_no_methods' => 'Nejsou nastaveny žádné metody',
+ 'mfa_verify_no_methods_desc' => 'Pro váš účet nebyly nalezeny žádné vícefázové metody ověřování. Před získáním přístupu budete muset nastavit alespoň jednu metodu.',
+ 'mfa_verify_use_totp' => 'Ověřit pomocí mobilní aplikace',
+ 'mfa_verify_use_backup_codes' => 'Ověřit pomocí záložního kódu',
+ 'mfa_verify_backup_code' => 'Záložní kód',
+ 'mfa_verify_backup_code_desc' => 'Níže zadejte jeden z vašich zbývajících záložních kódů:',
+ 'mfa_verify_backup_code_enter_here' => 'Zde zadejte záložní kód',
+ 'mfa_verify_totp_desc' => 'Níže zadejte kód, který jste si vygenerovali pomocí mobilní aplikace:',
+ 'mfa_setup_login_notification' => 'Vícefázová metoda nastavena, nyní se prosím znovu přihlaste pomocí konfigurované metody.',
+];
diff --git a/lang/cs/common.php b/lang/cs/common.php
new file mode 100644
index 00000000000..25c32b0397c
--- /dev/null
+++ b/lang/cs/common.php
@@ -0,0 +1,115 @@
+ 'Zrušit',
+ 'close' => 'Zavřít',
+ 'confirm' => 'Potvrdit',
+ 'back' => 'Zpět',
+ 'save' => 'Uložit',
+ 'continue' => 'Pokračovat',
+ 'select' => 'Vybrat',
+ 'toggle_all' => 'Přepnout vše',
+ 'more' => 'Více',
+
+ // Form Labels
+ 'name' => 'Název',
+ 'description' => 'Popis',
+ 'role' => 'Role',
+ 'cover_image' => 'Obrázek obálky',
+ 'cover_image_description' => 'Tento obrázek by měl mít rozměry přibližně 440x250px, ačkoli bude podle potřeby zmenšen a oříznut, aby se vešel do uživatelského rozhraní, takže se skutečné rozměry budou lišit.',
+
+ // Actions
+ 'actions' => 'Akce',
+ 'view' => 'Zobrazit',
+ 'view_all' => 'Zobrazit vše',
+ 'new' => 'Nový',
+ 'create' => 'Vytvořit',
+ 'update' => 'Aktualizovat',
+ 'edit' => 'Upravit',
+ 'archive' => 'Archivovat',
+ 'unarchive' => 'Od-Archivovat',
+ 'sort' => 'Seřadit',
+ 'move' => 'Přesunout',
+ 'copy' => 'Kopírovat',
+ 'reply' => 'Odpovědět',
+ 'delete' => 'Odstranit',
+ 'delete_confirm' => 'Potvrdit odstranění',
+ 'search' => 'Hledat',
+ 'search_clear' => 'Vymazat hledání',
+ 'reset' => 'Obnovit',
+ 'remove' => 'Odebrat',
+ 'add' => 'Přidat',
+ 'configure' => 'Nastavit',
+ 'manage' => 'Spravovat',
+ 'fullscreen' => 'Celá obrazovka',
+ 'favourite' => 'Přidat do oblíbených',
+ 'unfavourite' => 'Odebrat z oblíbených',
+ 'next' => 'Další',
+ 'previous' => 'Předchozí',
+ 'filter_active' => 'Aktivní filtr:',
+ 'filter_clear' => 'Zrušit filtr',
+ 'download' => 'Stáhnout',
+ 'open_in_tab' => 'Otevřít v nové záložce',
+ 'open' => 'Otevřít',
+
+ // Sort Options
+ 'sort_options' => 'Možnosti řazení',
+ 'sort_direction_toggle' => 'Přepínač směru řazení',
+ 'sort_ascending' => 'Řadit vzestupně',
+ 'sort_descending' => 'Řadit sestupně',
+ 'sort_name' => 'Název',
+ 'sort_default' => 'Výchozí',
+ 'sort_created_at' => 'Datum vytvoření',
+ 'sort_updated_at' => 'Datum aktualizace',
+
+ // Misc
+ 'deleted_user' => 'Odstraněný uživatel',
+ 'no_activity' => 'Žádná aktivita k zobrazení',
+ 'no_items' => 'Žádné položky k dispozici',
+ 'back_to_top' => 'Zpět nahoru',
+ 'skip_to_main_content' => 'Přeskočit na hlavní obsah',
+ 'toggle_details' => 'Přepnout podrobnosti',
+ 'toggle_thumbnails' => 'Přepnout náhledy',
+ 'details' => 'Podrobnosti',
+ 'grid_view' => 'Zobrazit mřížku',
+ 'list_view' => 'Zobrazit seznam',
+ 'default' => 'Výchozí',
+ 'breadcrumb' => 'Drobečková navigace',
+ 'status' => 'Stav',
+ 'status_active' => 'Aktivní',
+ 'status_inactive' => 'Neaktivní',
+ 'never' => 'Nikdy',
+ 'none' => 'Žádná',
+
+ // Header
+ 'homepage' => 'Domovská stránka',
+ 'header_menu_expand' => 'Rozbalit menu v záhlaví',
+ 'profile_menu' => 'Nabídka profilu',
+ 'view_profile' => 'Zobrazit profil',
+ 'edit_profile' => 'Upravit profil',
+ 'dark_mode' => 'Tmavý režim',
+ 'light_mode' => 'Světlý režim',
+ 'global_search' => 'Globální vyhledávání',
+
+ // Layout tabs
+ 'tab_info' => 'Informace',
+ 'tab_info_label' => 'Tab: Zobrazit podružné informace',
+ 'tab_content' => 'Obsah',
+ 'tab_content_label' => 'Tab: Zobrazit hlavní obsah',
+
+ // Email Content
+ 'email_action_help' => 'Pokud se vám nedaří kliknout na tlačítko „:actionText“, zkopírujte a vložte níže uvedenou URL do vašeho webového prohlížeče:',
+ 'email_rights' => 'Všechna práva vyhrazena',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Zásady ochrany osobních údajů',
+ 'terms_of_service' => 'Podmínky služby',
+
+ // OpenSearch
+ 'opensearch_description' => 'Vyhledat :appName',
+];
diff --git a/lang/cs/components.php b/lang/cs/components.php
new file mode 100644
index 00000000000..d265d49b657
--- /dev/null
+++ b/lang/cs/components.php
@@ -0,0 +1,46 @@
+ 'Výběr obrázku',
+ 'image_list' => 'Seznam obrázků',
+ 'image_details' => 'Detail obrázku',
+ 'image_upload' => 'Nahrát obrázek',
+ 'image_intro' => 'Zde můžete vybrat a spravovat obrázky, které byly dříve nahrány do systému.',
+ 'image_intro_upload' => 'Nahrajte nový obrázek přetažením obrázku do tohoto okna, nebo pomocí tlačítka "Nahrát obrázek" výše.',
+ 'image_all' => 'Vše',
+ 'image_all_title' => 'Zobrazit všechny obrázky',
+ 'image_book_title' => 'Zobrazit obrázky nahrané do této knihy',
+ 'image_page_title' => 'Zobrazit obrázky nahrané na tuto stránku',
+ 'image_search_hint' => 'Hledat podle názvu obrázku',
+ 'image_uploaded' => 'Nahráno :uploadedDate',
+ 'image_uploaded_by' => 'Nahráno uživatelem :userName',
+ 'image_uploaded_to' => 'Nahráno na :pageLink',
+ 'image_updated' => 'Aktualizováno :updateDate',
+ 'image_load_more' => 'Načíst další',
+ 'image_image_name' => 'Název obrázku',
+ 'image_delete_used' => 'Tento obrázek je použit na níže uvedených stránkách.',
+ 'image_delete_confirm_text' => 'Opravdu chcete odstranit tento obrázek?',
+ 'image_select_image' => 'Zvolte obrázek',
+ 'image_dropzone' => 'Přetáhněte obrázky nebo klikněte sem pro nahrání',
+ 'image_dropzone_drop' => 'Obrázky nahrajete přetažením sem',
+ 'images_deleted' => 'Obrázky odstraněny',
+ 'image_preview' => 'Náhled obrázku',
+ 'image_upload_success' => 'Obrázek byl nahrán',
+ 'image_update_success' => 'Podrobnosti o obrázku byly aktualizovány',
+ 'image_delete_success' => 'Obrázek byl odstraněn',
+ 'image_replace' => 'Nahradit obrázek',
+ 'image_replace_success' => 'Obrázek úspěšně vytvořen',
+ 'image_rebuild_thumbs' => 'Přegenerovat všechny velikosti',
+ 'image_rebuild_thumbs_success' => 'Všechny velikostní varianty obrázku byly úspěšně znovu vytvořeny!',
+
+ // Code Editor
+ 'code_editor' => 'Upravit kód',
+ 'code_language' => 'Jazyk kódu',
+ 'code_content' => 'Obsah kódu',
+ 'code_session_history' => 'Historie relace',
+ 'code_save' => 'Uložit kód',
+];
diff --git a/lang/cs/editor.php b/lang/cs/editor.php
new file mode 100644
index 00000000000..2a6b344d549
--- /dev/null
+++ b/lang/cs/editor.php
@@ -0,0 +1,182 @@
+ 'Základní nastavení',
+ 'advanced' => 'Pokročilé',
+ 'none' => 'Nic',
+ 'cancel' => 'Zrušit',
+ 'save' => 'Uložit',
+ 'close' => 'Zavřít',
+ 'apply' => 'Použít',
+ 'undo' => 'Zpět',
+ 'redo' => 'Znovu',
+ 'left' => 'Vlevo',
+ 'center' => 'Na střed',
+ 'right' => 'Vpravo',
+ 'top' => 'Nahoru',
+ 'middle' => 'Uprostřed',
+ 'bottom' => 'Odspodu',
+ 'width' => 'Šířka',
+ 'height' => 'výška',
+ 'More' => 'Více',
+ 'select' => 'Vybrat...',
+
+ // Toolbar
+ 'formats' => 'Formáty',
+ 'header_large' => 'Velké záhlaví',
+ 'header_medium' => 'Střední záhlaví',
+ 'header_small' => 'Malé záhlaví',
+ 'header_tiny' => 'Malá hlavička',
+ 'paragraph' => 'Odstavec',
+ 'blockquote' => 'Citát do bloku',
+ 'inline_code' => 'Vložený kód',
+ 'callouts' => 'Poznámka',
+ 'callout_information' => 'Informace',
+ 'callout_success' => 'Úspěšně dokončeno',
+ 'callout_warning' => 'Upozornění',
+ 'callout_danger' => 'Nebezpečí',
+ 'bold' => 'Tučně',
+ 'italic' => 'Kurzíva',
+ 'underline' => 'Podtržené',
+ 'strikethrough' => 'Proškrtnuté',
+ 'superscript' => 'horní index',
+ 'subscript' => 'Dolní index',
+ 'text_color' => 'Barva textu',
+ 'highlight_color' => 'Barva zvýraznění',
+ 'custom_color' => 'Vlastní barva',
+ 'remove_color' => 'Odstranit barvu',
+ 'background_color' => 'Barva pozadí',
+ 'align_left' => 'Zarovnat vlevo',
+ 'align_center' => 'Zarovnat na střed',
+ 'align_right' => 'Zarovnat doprava',
+ 'align_justify' => 'Zarovnat do bloku',
+ 'list_bullet' => 'Bodový seznam',
+ 'list_numbered' => 'Číslovaný seznam',
+ 'list_task' => 'Seznam úkolů',
+ 'indent_increase' => 'Zvýšit odsazení',
+ 'indent_decrease' => 'Zmenšit odsazení',
+ 'table' => 'Tabulka',
+ 'insert_image' => 'Vložit obrázek',
+ 'insert_image_title' => 'Vložit/upravit obrázek',
+ 'insert_link' => 'Vložit/upravit odkaz',
+ 'insert_link_title' => 'Vložit/upravit odkaz',
+ 'insert_horizontal_line' => 'Vložit vodorovnou čáru',
+ 'insert_code_block' => 'Vložit blok s kódem',
+ 'edit_code_block' => 'Upravit blok kódu',
+ 'insert_drawing' => 'Vložit/upravit kreslení',
+ 'drawing_manager' => 'Správce kreslení',
+ 'insert_media' => 'Vložit/upravit média',
+ 'insert_media_title' => 'Vložit/upravit média',
+ 'clear_formatting' => 'Vymazat formátování',
+ 'source_code' => 'Zdrojový kód',
+ 'source_code_title' => 'Zdrojový kód',
+ 'fullscreen' => 'Celá obrazovka',
+ 'image_options' => 'Možnosti obrázku',
+
+ // Tables
+ 'table_properties' => 'Vlastnosti tabulky',
+ 'table_properties_title' => 'Vlastnosti tabulky',
+ 'delete_table' => 'Smazat tabulku',
+ 'table_clear_formatting' => 'Vymazat formátování tabulky',
+ 'resize_to_contents' => 'Změnit velikost podle obsahu',
+ 'row_header' => 'Záhlaví řádku',
+ 'insert_row_before' => 'Vložit řádek před',
+ 'insert_row_after' => 'Vložit řádek za',
+ 'delete_row' => 'Smazat řádek',
+ 'insert_column_before' => 'Vložit sloupec před',
+ 'insert_column_after' => 'Vložit sloupec za',
+ 'delete_column' => 'Odstranit sloupec',
+ 'table_cell' => 'Buňka',
+ 'table_row' => 'Řádek',
+ 'table_column' => 'Sloupec',
+ 'cell_properties' => 'Vlastnosti buňky',
+ 'cell_properties_title' => 'Vlastnosti buňky',
+ 'cell_type' => 'Typ buňky',
+ 'cell_type_cell' => 'Buňka',
+ 'cell_scope' => 'Rozsah',
+ 'cell_type_header' => 'buňka záhlaví',
+ 'merge_cells' => 'Sloučit buňky',
+ 'split_cell' => 'Rozdělit buňku',
+ 'table_row_group' => 'Skupina řádků',
+ 'table_column_group' => 'Skupina sloupců',
+ 'horizontal_align' => 'Vodorovné zarovnání',
+ 'vertical_align' => 'Svislé vyrovnání',
+ 'border_width' => 'Šířka okraje',
+ 'border_style' => 'Styl okraje',
+ 'border_color' => 'Barva okraje',
+ 'row_properties' => 'Vlastnosti řádku',
+ 'row_properties_title' => 'Vlastnosti řádku',
+ 'cut_row' => 'Vyjmout řádek',
+ 'copy_row' => 'Kopírovat řádek',
+ 'paste_row_before' => 'Vložit řádek před',
+ 'paste_row_after' => 'Vložit za',
+ 'row_type' => 'Typ řádku',
+ 'row_type_header' => 'Hlavička',
+ 'row_type_body' => 'Tělo',
+ 'row_type_footer' => 'Zápatí',
+ 'alignment' => 'zarovnání',
+ 'cut_column' => 'Vyjmout sloupec',
+ 'copy_column' => 'Kopírovat sloupec',
+ 'paste_column_before' => 'Přidat sloupec před',
+ 'paste_column_after' => 'Přidat sloupec za',
+ 'cell_padding' => 'Odsazení obsahu buněk',
+ 'cell_spacing' => 'Mezery mezi buňkami',
+ 'caption' => 'Titulek',
+ 'show_caption' => 'Zobrazit titulek',
+ 'constrain' => 'Vazba poměrů',
+ 'cell_border_solid' => 'Nepřerušovaná čára',
+ 'cell_border_dotted' => 'Tečkovaná čára',
+ 'cell_border_dashed' => 'Přerušovaná čára',
+ 'cell_border_double' => 'Dvojitá',
+ 'cell_border_groove' => 'Drážek',
+ 'cell_border_ridge' => 'hřeben',
+ 'cell_border_inset' => 'Vsazený',
+ 'cell_border_outset' => 'Počátek',
+ 'cell_border_none' => 'Žádné',
+ 'cell_border_hidden' => 'Skrytý',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Zdroj',
+ 'alt_desc' => 'Alternativní popis',
+ 'embed' => 'Vložení',
+ 'paste_embed' => 'Vložte svůj vložený kód níže:',
+ 'url' => 'Adresa URL',
+ 'text_to_display' => 'Text k zobrazení',
+ 'title' => 'Titulek',
+ 'browse_links' => 'Procházet odkazy',
+ 'open_link' => 'Otevřít odkaz',
+ 'open_link_in' => 'Otevřít odkaz v...',
+ 'open_link_current' => 'Aktuální okno',
+ 'open_link_new' => 'Nové okno',
+ 'remove_link' => 'Odstranit odkaz',
+ 'insert_collapsible' => 'Vložit sbalitelný blok',
+ 'collapsible_unwrap' => 'Rozbalit',
+ 'edit_label' => 'Upravit štítek',
+ 'toggle_open_closed' => 'Přepnout otevření/zavření',
+ 'collapsible_edit' => 'Upravit sbalitelný blok',
+ 'toggle_label' => 'Přepnout popisek',
+
+ // About view
+ 'about' => 'O editoru',
+ 'about_title' => 'O WYSIWYG editoru',
+ 'editor_license' => 'Editor licence a autorská práva',
+ 'editor_lexical_license' => 'Tento editor je vytvořen jako fork :lexicalLink, který je distribuován pod licencí MIT.',
+ 'editor_lexical_license_link' => 'Kompletní údaje o licenci naleznete zde.',
+ 'editor_tiny_license' => 'Tento editor je vytvořen pomocí :tinyLink, který je poskytován pod licencí MIT.',
+ 'editor_tiny_license_link' => 'Podrobnosti o autorských právech a licenci TinyMCE naleznete zde.',
+ 'save_continue' => 'Uložit stránku a pokračovat',
+ 'callouts_cycle' => '(Stiskněte pro přepnutí typů)',
+ 'link_selector' => 'Odkaz na obsah',
+ 'shortcuts' => 'Zkratky',
+ 'shortcut' => 'Zástupce',
+ 'shortcuts_intro' => 'Následující zkratky jsou k dispozici v editoru:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Popis',
+];
diff --git a/lang/cs/entities.php b/lang/cs/entities.php
new file mode 100644
index 00000000000..d65d85ccb7e
--- /dev/null
+++ b/lang/cs/entities.php
@@ -0,0 +1,476 @@
+ 'Nedávno vytvořené',
+ 'recently_created_pages' => 'Nedávno vytvořené stránky',
+ 'recently_updated_pages' => 'Nedávno aktualizované stránky',
+ 'recently_created_chapters' => 'Nedávno vytvořené kapitoly',
+ 'recently_created_books' => 'Nedávno vytvořené knihy',
+ 'recently_created_shelves' => 'Nedávno vytvořené knihovny',
+ 'recently_update' => 'Nedávno aktualizované',
+ 'recently_viewed' => 'Nedávno zobrazené',
+ 'recent_activity' => 'Nedávné aktivity',
+ 'create_now' => 'Vytvořit nyní',
+ 'revisions' => 'Revize',
+ 'meta_revision' => 'Revize č. :revisionCount',
+ 'meta_created' => 'Vytvořeno :timeLength',
+ 'meta_created_name' => 'Vytvořeno :timeLength uživatelem :user',
+ 'meta_updated' => 'Aktualizováno :timeLength',
+ 'meta_updated_name' => 'Aktualizováno :timeLength uživatelem :user',
+ 'meta_owned_name' => 'Vlastník :user',
+ 'meta_reference_count' => 'Odkazováno :count položkou|Odkazováno :count položkami',
+ 'entity_select' => 'Výběr entity',
+ 'entity_select_lack_permission' => 'Nemáte dostatečná oprávnění k výběru této položky',
+ 'images' => 'Obrázky',
+ 'my_recent_drafts' => 'Mé nedávné koncepty',
+ 'my_recently_viewed' => 'Mé nedávno zobrazené',
+ 'my_most_viewed_favourites' => 'Mé nejčastěji zobrazené oblíbené',
+ 'my_favourites' => 'Mé oblíbené',
+ 'no_pages_viewed' => 'Nezobrazili jste žádné stránky',
+ 'no_pages_recently_created' => 'Žádné nedávno vytvořené stránky',
+ 'no_pages_recently_updated' => 'Žádné nedávno aktualizované stránky',
+ 'export' => 'Exportovat',
+ 'export_html' => 'HTML stránka s celým obsahem',
+ 'export_pdf' => 'PDF dokument',
+ 'export_text' => 'Textový soubor',
+ 'export_md' => 'Markdown',
+ 'export_zip' => 'Přenosný archiv ZIP',
+ 'default_template' => 'Výchozí šablona stránky',
+ 'default_template_explain' => 'Přiřadit šablonu stránky, která bude použita jako výchozí obsah pro všechny nové stránky v této knize. Mějte na paměti, že šablona bude použita pouze v případě, že tvůrce stránek bude mít přístup k těmto vybraným stránkám šablony.',
+ 'default_template_select' => 'Vyberte šablonu stránky',
+ 'import' => 'Importovat',
+ 'import_validate' => 'Ověřit import',
+ 'import_desc' => 'Import knih, kapitol a stránek pomocí přenosného archivu ZIP z tohoto nebo jiného webu. Pro pokračování vyberte ZIP soubor. Po nahrání a ověření souboru budete moci v dalším kroku nastavit a potvrdit import.',
+ 'import_zip_select' => 'Vybrat ZIP soubor k nahrání',
+ 'import_zip_validation_errors' => 'Při ověřování vybraného souboru ZIP byly zjištěny chyby:',
+ 'import_pending' => 'Čekající importy',
+ 'import_pending_none' => 'Žádné importy nebyly spuštěny.',
+ 'import_continue' => 'Pokračovat v importu',
+ 'import_continue_desc' => 'Zkontrolujte obsah, který má být importován z nahraného souboru. Pokud je vše v pořádku, spusťte import pro přidání obsahu ZIP archivu na tento web. Nahraný soubor ZIP bude automaticky odstraněn po úspěšném importu.',
+ 'import_details' => 'Obsah importu',
+ 'import_run' => 'Spustit import',
+ 'import_size' => 'Velikost archivu ZIP: :size',
+ 'import_uploaded_at' => 'Nahráno :relativeTime',
+ 'import_uploaded_by' => 'Nahrál/a',
+ 'import_location' => 'Cílové umístění',
+ 'import_location_desc' => 'Vyberte cílové umístění pro importovaný obsah. K vytvoření potřebujete příslušná oprávnění.',
+ 'import_delete_confirm' => 'Opravdu chcete tento import odstranit?',
+ 'import_delete_desc' => 'Potvrzením odstraníte nahraný ZIP soubor. Tento krok nelze vrátit zpět.',
+ 'import_errors' => 'Chyby importu',
+ 'import_errors_desc' => 'Při pokusu o import došlo k následujícím chybám:',
+ 'breadcrumb_siblings_for_page' => 'Přejít na jinou stránku',
+ 'breadcrumb_siblings_for_chapter' => 'Přejít na jinou kapitolu',
+ 'breadcrumb_siblings_for_book' => 'Přejít na jinou knihu',
+ 'breadcrumb_siblings_for_bookshelf' => 'Přejít na jinou polici',
+
+ // Permissions and restrictions
+ 'permissions' => 'Oprávnění',
+ 'permissions_desc' => 'Nastavte oprávnění, které změní výchozích oprávnění pochazejících z uživatelské role.',
+ 'permissions_book_cascade' => 'Oprávnění nastavená v knihách budou automaticky kaskádována do podřízených kapitol a stránek, pokud nemají svá vlastní oprávnění.',
+ 'permissions_chapter_cascade' => 'Oprávnění nastavená v knihách budou automaticky kaskádována do podřízených kapitol a stránek, pokud nemají svá vlastní oprávnění.',
+ 'permissions_save' => 'Uložit oprávnění',
+ 'permissions_owner' => 'Vlastník',
+ 'permissions_role_everyone_else' => 'Všichni ostatní',
+ 'permissions_role_everyone_else_desc' => 'Nastavte oprávnění pro všechny role, které nejsou výslovně přepsány.',
+ 'permissions_role_override' => 'Přepsat oprávnění pro roli',
+ 'permissions_inherit_defaults' => 'Zdědit výchozí oprávnění',
+
+ // Search
+ 'search_results' => 'Výsledky hledání',
+ 'search_total_results_found' => '{1}Nalezen :count výsledek|[2,4]Nalezeny :count výsledky|[5,*]Nalezeno :count výsledků',
+ 'search_clear' => 'Vymazat hledání',
+ 'search_no_pages' => 'Tomuto hledání neodpovídají žádné stránky',
+ 'search_for_term' => 'Hledat :term',
+ 'search_more' => 'Další výsledky',
+ 'search_advanced' => 'Rozšířené hledání',
+ 'search_terms' => 'Hledané výrazy',
+ 'search_content_type' => 'Typ obsahu',
+ 'search_exact_matches' => 'Přesné shody',
+ 'search_tags' => 'Hledat štítky',
+ 'search_options' => 'Možnosti',
+ 'search_viewed_by_me' => 'Zobrazeno mnou',
+ 'search_not_viewed_by_me' => 'Nezobrazeno mnou',
+ 'search_permissions_set' => 'Sada oprávnění',
+ 'search_created_by_me' => 'Vytvořeno mnou',
+ 'search_updated_by_me' => 'Aktualizováno mnou',
+ 'search_owned_by_me' => 'Patřící mně',
+ 'search_date_options' => 'Možnosti data',
+ 'search_updated_before' => 'Aktualizováno před',
+ 'search_updated_after' => 'Aktualizováno po',
+ 'search_created_before' => 'Vytvořeno před',
+ 'search_created_after' => 'Vytvořeno po',
+ 'search_set_date' => 'Nastavit datum',
+ 'search_update' => 'Aktualizovat hledání',
+
+ // Shelves
+ 'shelf' => 'Police',
+ 'shelves' => 'Police',
+ 'x_shelves' => '{0}:count polic|{1}:count police|[2,4]:count police|[5,*]:count polic',
+ 'shelves_empty' => 'Nebyly vytvořeny žádné police',
+ 'shelves_create' => 'Vytvořit novou polici',
+ 'shelves_popular' => 'Populární police',
+ 'shelves_new' => 'Nové police',
+ 'shelves_new_action' => 'Nová Police',
+ 'shelves_popular_empty' => 'Nejpopulárnější police se objeví zde.',
+ 'shelves_new_empty' => 'Zde se zobrazí nejnovější police.',
+ 'shelves_save' => 'Uložit polici',
+ 'shelves_books' => 'Knihy na této polici',
+ 'shelves_add_books' => 'Přidat knihy do této police',
+ 'shelves_drag_books' => 'Přetáhněte knihy níže a přidejte je do této police',
+ 'shelves_empty_contents' => 'Tato police neobsahuje žádné knihy',
+ 'shelves_edit_and_assign' => 'Upravit polici a přiřadit knihy',
+ 'shelves_edit_named' => 'Upravit polici :name',
+ 'shelves_edit' => 'Upravit polici',
+ 'shelves_delete' => 'Odstranit polici',
+ 'shelves_delete_named' => 'Odstranit polici :name',
+ 'shelves_delete_explain' => "Chystáte se smazat polici ':name'. Knihy v ní obsažené zůstanou zachovány.",
+ 'shelves_delete_confirmation' => 'Opravdu chcete odstranit tuto polici?',
+ 'shelves_permissions' => 'Oprávnění police',
+ 'shelves_permissions_updated' => 'Oprávnění police byla aktualizována',
+ 'shelves_permissions_active' => 'Oprávnění police byla aktivována',
+ 'shelves_permissions_cascade_warning' => 'Oprávnění v policiích nejsou automaticky kaskádována do obsažených knih. To proto, že kniha může existovat ve více policích. Oprávnění však lze zkopírovat do podřízených knih pomocí níže uvedené možnosti.',
+ 'shelves_permissions_create' => 'Oprávnění k vytváření Shelf se používají pouze ke kopírování oprávnění do dětských knih pomocí níže uvedené akce. Nekontrolují schopnost vytvářet knihy.',
+ 'shelves_copy_permissions_to_books' => 'Kopírovat oprávnění na knihy',
+ 'shelves_copy_permissions' => 'Kopírovat oprávnění',
+ 'shelves_copy_permissions_explain' => 'Tímto se použije aktuální nastavení oprávnění police na všechny knihy v ní obsažené. Před aktivací se ujistěte, že byly uloženy všechny změny oprávnění této police.',
+ 'shelves_copy_permission_success' => '{1}Oprávnění police byla zkopírována na :count knihu|[2,4]Oprávnění police byla zkopírována na :count knihy|[5,*]Oprávnění police byla zkopírována na :count knih',
+
+ // Books
+ 'book' => 'Kniha',
+ 'books' => 'Knihy',
+ 'x_books' => '{0}:count knih|{1}:count kniha|[2,4]:count knihy|[5,*]:count knih',
+ 'books_empty' => 'Nebyly vytvořeny žádné knihy',
+ 'books_popular' => 'Oblíbené knihy',
+ 'books_recent' => 'Nedávné knihy',
+ 'books_new' => 'Nové knihy',
+ 'books_new_action' => 'Nová kniha',
+ 'books_popular_empty' => 'Zde se zobrazí nejoblíbenější knihy.',
+ 'books_new_empty' => 'Zde se zobrazí nejnověji vytvořené knihy.',
+ 'books_create' => 'Vytvořit novou knihu',
+ 'books_delete' => 'Odstranit knihu',
+ 'books_delete_named' => 'Odstranit knihu :bookName',
+ 'books_delete_explain' => 'Toto odstraní knihu ‚:bookName‘. Všechny stránky a kapitoly v této knize budou také odstraněny.',
+ 'books_delete_confirmation' => 'Opravdu chcete odstranit tuto knihu?',
+ 'books_edit' => 'Upravit knihu',
+ 'books_edit_named' => 'Upravit knihu :bookName',
+ 'books_form_book_name' => 'Název knihy',
+ 'books_save' => 'Uložit knihu',
+ 'books_permissions' => 'Oprávnění knihy',
+ 'books_permissions_updated' => 'Oprávnění knihy byla aktualizována',
+ 'books_empty_contents' => 'Pro tuto knihu nebyly vytvořeny žádné stránky ani kapitoly.',
+ 'books_empty_create_page' => 'Vytvořit novou stránku',
+ 'books_empty_sort_current_book' => 'Seřadit aktuální knihu',
+ 'books_empty_add_chapter' => 'Přidat kapitolu',
+ 'books_permissions_active' => 'Oprávnění knihy byla aktivována',
+ 'books_search_this' => 'Prohledat tuto knihu',
+ 'books_navigation' => 'Navigace knihy',
+ 'books_sort' => 'Seřadit obsah knihy',
+ 'books_sort_desc' => 'Pro přeuspořádání obsahu přesuňte kapitoly a stránky v knize. Mohou být přidány další knihy, které umožní snadný přesun kapitol a stránek mezi knihami. Volitelně lze nastavit pravidlo automatického řazení, aby se při změnách automaticky seřadil obsah této knihy.',
+ 'books_sort_auto_sort' => 'Možnost automatického řazení',
+ 'books_sort_auto_sort_active' => 'Aktivní automatické řazení: :sortName',
+ 'books_sort_named' => 'Seřadit knihu :bookName',
+ 'books_sort_name' => 'Seřadit podle názvu',
+ 'books_sort_created' => 'Seřadit podle data vytvoření',
+ 'books_sort_updated' => 'Seřadit podle data aktualizace',
+ 'books_sort_chapters_first' => 'Kapitoly jako první',
+ 'books_sort_chapters_last' => 'Kapitoly jako poslední',
+ 'books_sort_show_other' => 'Zobrazit ostatní knihy',
+ 'books_sort_save' => 'Uložit nové pořadí',
+ 'books_sort_show_other_desc' => 'Přidejte sem další knihy, abyste je zahrnuli do operace třídění, a umožněte snadnou křížovou reorganizaci.',
+ 'books_sort_move_up' => 'Posunout Nahoru',
+ 'books_sort_move_down' => 'Posunout dolů',
+ 'books_sort_move_prev_book' => 'Přesunout se na předchozí knihu',
+ 'books_sort_move_next_book' => 'Přesunout se na další knihu',
+ 'books_sort_move_prev_chapter' => 'Přesunout se do předchozí kapitoly',
+ 'books_sort_move_next_chapter' => 'Přesunout se do další kapitoly',
+ 'books_sort_move_book_start' => 'Přesunout se na začátek knihy',
+ 'books_sort_move_book_end' => 'Přesunout se na konec knihy',
+ 'books_sort_move_before_chapter' => 'Přesunout se před kapitolu',
+ 'books_sort_move_after_chapter' => 'Přesunout se za kapitolu',
+ 'books_copy' => 'Kopírovat knihu',
+ 'books_copy_success' => 'Kniha byla úspěšně zkopírována',
+
+ // Chapters
+ 'chapter' => 'Kapitola',
+ 'chapters' => 'Kapitoly',
+ 'x_chapters' => '{0}:count kapitol|{1}:count kapitola|[2,4]:count kapitoly|[5,*]:count kapitol',
+ 'chapters_popular' => 'Populární kapitoly',
+ 'chapters_new' => 'Nová kapitola',
+ 'chapters_create' => 'Vytvořit novou kapitolu',
+ 'chapters_delete' => 'Odstranit kapitolu',
+ 'chapters_delete_named' => 'Odstranit kapitolu :chapterName',
+ 'chapters_delete_explain' => 'Toto odstraní kapitolu ‚:chapterName‘. Všechny stránky v této kapitole budou také odstraněny.',
+ 'chapters_delete_confirm' => 'Opravdu chcete odstranit tuto kapitolu?',
+ 'chapters_edit' => 'Upravit kapitolu',
+ 'chapters_edit_named' => 'Upravit kapitolu :chapterName',
+ 'chapters_save' => 'Uložit kapitolu',
+ 'chapters_move' => 'Přesunout kapitolu',
+ 'chapters_move_named' => 'Přesunout kapitolu :chapterName',
+ 'chapters_copy' => 'Kopírovat kapitolu',
+ 'chapters_copy_success' => 'Kapitola byla úspěšně zkopírována',
+ 'chapters_permissions' => 'Oprávnění kapitoly',
+ 'chapters_empty' => 'Tato kapitola neobsahuje žádné stránky',
+ 'chapters_permissions_active' => 'Oprávnění kapitoly byla aktivována',
+ 'chapters_permissions_success' => 'Oprávnění kapitoly byla aktualizována',
+ 'chapters_search_this' => 'Prohledat tuto kapitolu',
+ 'chapter_sort_book' => 'Seřadit knihy',
+
+ // Pages
+ 'page' => 'Stránka',
+ 'pages' => 'Stránky',
+ 'x_pages' => '{0}:count stran|{1}:count strana|[2,4]:count strany|[5,*]:count stran',
+ 'pages_popular' => 'Populární stránky',
+ 'pages_new' => 'Nová stránka',
+ 'pages_attachments' => 'Přílohy',
+ 'pages_navigation' => 'Obsah stránky',
+ 'pages_delete' => 'Odstranit stránku',
+ 'pages_delete_named' => 'Odstranit stránku :pageName',
+ 'pages_delete_draft_named' => 'Odstranit koncept stránky :pageName',
+ 'pages_delete_draft' => 'Odstranit koncept stránky',
+ 'pages_delete_success' => 'Stránka odstraněna',
+ 'pages_delete_draft_success' => 'Koncept stránky odstraněn',
+ 'pages_delete_warning_template' => 'Tato stránka je aktivní výchozí šablona pro nějakou knihu či kapitolu. Tyto knihy nebo kapitoly již nebudou mít výchozí šablonu stránky přiřazenou po odstranění této stránky.',
+ 'pages_delete_confirm' => 'Opravdu chcete odstranit tuto stránku?',
+ 'pages_delete_draft_confirm' => 'Opravdu chcete odstranit tento koncept stránky?',
+ 'pages_editing_named' => 'Úpravy stránky :pageName',
+ 'pages_edit_draft_options' => 'Možnosti konceptu',
+ 'pages_edit_save_draft' => 'Uložit koncept',
+ 'pages_edit_draft' => 'Upravit koncept stránky',
+ 'pages_editing_draft' => 'Úprava konceptu',
+ 'pages_editing_page' => 'Úpravy stránky',
+ 'pages_edit_draft_save_at' => 'Koncept uložen v ',
+ 'pages_edit_delete_draft' => 'Odstranit koncept',
+ 'pages_edit_delete_draft_confirm' => 'Jste si jisti, že chcete odstranit změny vašich konceptů? Všechny vaše změny, od posledního úplného uložení, budou ztraceny a editor bude aktualizován s nejnovějším stavem nekonceptu stránky.',
+ 'pages_edit_discard_draft' => 'Zahodit koncept',
+ 'pages_edit_switch_to_markdown' => 'Přepnout na Markdown Editor',
+ 'pages_edit_switch_to_markdown_clean' => '(Prostý zápis)',
+ 'pages_edit_switch_to_markdown_stable' => '(Formátovaný zápis)',
+ 'pages_edit_switch_to_wysiwyg' => 'Přepnout na WYSIWYG Editor',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Přepnout na nový WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(V beta testování)',
+ 'pages_edit_set_changelog' => 'Nastavit protokol změn',
+ 'pages_edit_enter_changelog_desc' => 'Zadejte stručný popis změn, které jste provedli',
+ 'pages_edit_enter_changelog' => 'Zadejte protokol změn',
+ 'pages_editor_switch_title' => 'Přepnout editor',
+ 'pages_editor_switch_are_you_sure' => 'Jste si jisti, že chcete změnit editor této stránky?',
+ 'pages_editor_switch_consider_following' => 'Při změně editorů zvažte následující:',
+ 'pages_editor_switch_consideration_a' => 'Po uložení bude nová možnost editoru použita všemi budoucími editory, včetně těch, které nemusí být schopny změnit typ editoru.',
+ 'pages_editor_switch_consideration_b' => 'To může za určitých okolností vést ke ztrátě podrobností a syntaxe.',
+ 'pages_editor_switch_consideration_c' => 'Změny tagu nebo seznamu změn, provedené od posledního uložení, nebudou přetrvávat po celé této změně.',
+ 'pages_save' => 'Uložit stránku',
+ 'pages_title' => 'Nadpis stránky',
+ 'pages_name' => 'Název stránky',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Náhled',
+ 'pages_md_insert_image' => 'Vložit obrázek',
+ 'pages_md_insert_link' => 'Vložit odkaz na entitu',
+ 'pages_md_insert_drawing' => 'Vložit kresbu',
+ 'pages_md_show_preview' => 'Zobrazit náhled',
+ 'pages_md_sync_scroll' => 'Synchronizovat náhled',
+ 'pages_md_plain_editor' => 'Upravovat prostý text',
+ 'pages_drawing_unsaved' => 'Nalezen neuložený výkres',
+ 'pages_drawing_unsaved_confirm' => 'Byly nalezeny neuložené kresby z předchozí neúspěšné pokusu o uložení kresby. Chcete je obnovit a pokračovat v úpravě této neuložené kresby?',
+ 'pages_not_in_chapter' => 'Stránka není v kapitole',
+ 'pages_move' => 'Přesunout stránku',
+ 'pages_copy' => 'Kopírovat stránku',
+ 'pages_copy_desination' => 'Cíl kopírování',
+ 'pages_copy_success' => 'Stránka byla zkopírována',
+ 'pages_permissions' => 'Oprávnění stránky',
+ 'pages_permissions_success' => 'Oprávnění stránky byla aktualizována',
+ 'pages_revision' => 'Revize',
+ 'pages_revisions' => 'Revize stránky',
+ 'pages_revisions_desc' => 'Níže uvedené jsou všechny minulé revize této stránky. Můžete se podívat zpět, porovnat a obnovit staré verze stránek, pokud to dovolí oprávnění. Úplná historie stránky nemusí být plně zohledněna, protože v závislosti na konfiguraci systému mohou být staré revize automaticky smazány.',
+ 'pages_revisions_named' => 'Revize stránky pro :pageName',
+ 'pages_revision_named' => 'Revize stránky pro :pageName',
+ 'pages_revision_restored_from' => 'Obnoveno z #:id; :summary',
+ 'pages_revisions_created_by' => 'Vytvořeno uživatelem',
+ 'pages_revisions_date' => 'Datum revize',
+ 'pages_revisions_number' => 'Č. ',
+ 'pages_revisions_sort_number' => 'Číslo revize',
+ 'pages_revisions_numbered' => 'Revize č. :id',
+ 'pages_revisions_numbered_changes' => 'Změny revize č. :id',
+ 'pages_revisions_editor' => 'Typ editoru',
+ 'pages_revisions_changelog' => 'Protokol změn',
+ 'pages_revisions_changes' => 'Změny',
+ 'pages_revisions_current' => 'Aktuální verze',
+ 'pages_revisions_preview' => 'Náhled',
+ 'pages_revisions_restore' => 'Obnovit',
+ 'pages_revisions_none' => 'Tato stránka nemá žádné revize',
+ 'pages_copy_link' => 'Kopírovat odkaz',
+ 'pages_edit_content_link' => 'Přejít na sekci v editoru',
+ 'pages_pointer_enter_mode' => 'Zadejte režim výběru sekce',
+ 'pages_pointer_label' => 'Možnosti sekce stránky',
+ 'pages_pointer_permalink' => 'Trvalý odkaz sekce stránky',
+ 'pages_pointer_include_tag' => 'Sekce stránky obsahuje štítek',
+ 'pages_pointer_toggle_link' => 'Režim trvalého odkazu, stiskem zobrazíte značku',
+ 'pages_pointer_toggle_include' => 'Zahrnout režim značek, stiskněte pro zobrazení trvalého odkazu',
+ 'pages_permissions_active' => 'Oprávnění stránky byla aktivována',
+ 'pages_initial_revision' => 'První vydání',
+ 'pages_references_update_revision' => 'Automatická aktualizace interních odkazů',
+ 'pages_initial_name' => 'Nová stránka',
+ 'pages_editing_draft_notification' => 'Právě upravujete koncept, který byl uložen :timeDiff.',
+ 'pages_draft_edited_notification' => 'Tato stránka se od té doby změnila. Je doporučeno aktuální koncept zahodit.',
+ 'pages_draft_page_changed_since_creation' => 'Tato stránka byla aktualizována od vytvoření tohoto konceptu. Doporučuje se zrušit tento koncept nebo se postarat o to, abyste si nepřepsali žádné již zadané změny.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => '{1}:count uživatel začal upravovat tuto stránku|[2,4]:count uživatelé začali upravovat tuto stránku|[5,*]:count uživatelů začalo upravovat tuto stránku',
+ 'start_b' => ':userName začal/a upravovat tuto stránku',
+ 'time_a' => 'od doby, kdy byla tato stránky naposledy aktualizována',
+ 'time_b' => 'v posledních minutách (:minCount min.)',
+ 'message' => ':start :time. Dávejte pozor abyste nepřepsali změny ostatním!',
+ ],
+ 'pages_draft_discarded' => 'Koncept byl zahozen. Editor nyní obsahuje aktuální verzi stránky',
+ 'pages_draft_deleted' => 'Koncept byl zahozen. Editor nyní obsahuje aktuální verzi stránky',
+ 'pages_specific' => 'Konkrétní stránka',
+ 'pages_is_template' => 'Šablona stránky',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Skrýt/Zobrazit postranní panel',
+ 'page_tags' => 'Štítky stránky',
+ 'chapter_tags' => 'Štítky kapitoly',
+ 'book_tags' => 'Štítky knihy',
+ 'shelf_tags' => 'Štítky police',
+ 'tag' => 'Štítek',
+ 'tags' => 'Štítky',
+ 'tags_index_desc' => 'Tagy mohou být použity pro obsah v rámci systému pro pružnou formu kategorizace. Tagy mohou mít klíč i hodnotu, přičemž hodnota je nepovinná. Po aplikaci může být obsah dotazován pomocí názvu a hodnoty štítku.',
+ 'tag_name' => 'Název štítku',
+ 'tag_value' => 'Hodnota štítku (volitelné)',
+ 'tags_explain' => "Přidejte si štítky pro lepší kategorizaci knih. \n Štítky mohou nést i hodnotu pro detailnější klasifikaci.",
+ 'tags_add' => 'Přidat další štítek',
+ 'tags_remove' => 'Odstranit tento štítek',
+ 'tags_usages' => 'Počet použití štítku',
+ 'tags_assigned_pages' => 'Přiřazeno ke stránkám',
+ 'tags_assigned_chapters' => 'Přiřazeno ke kapitolám',
+ 'tags_assigned_books' => 'Přiřazeno ke knihám',
+ 'tags_assigned_shelves' => 'Přiřazeno k policím',
+ 'tags_x_unique_values' => '{1}:count jedinečná hodnota|[2,4]:count jedinečné hodnoty|[5,*]:count jedinečných hodnot',
+ 'tags_all_values' => 'Všechny hodnoty',
+ 'tags_view_tags' => 'Zobrazit štítky',
+ 'tags_view_existing_tags' => 'Zobrazit existující štítky',
+ 'tags_list_empty_hint' => 'Štítky mohou být přiřazeny pomocí postranního panelu editoru stránky nebo při úpravách podrobností knihy, kapitoly nebo police.',
+ 'attachments' => 'Přílohy',
+ 'attachments_explain' => 'Nahrajte soubory nebo připojte odkazy, které se zobrazí na stránce. Budou k nalezení v postranní liště.',
+ 'attachments_explain_instant_save' => 'Změny zde provedené se okamžitě ukládají.',
+ 'attachments_upload' => 'Nahrát soubor',
+ 'attachments_link' => 'Připojit odkaz',
+ 'attachments_upload_drop' => 'Případně můžete přetáhnout soubor zde, abyste jej mohli nahrát jako přílohu.',
+ 'attachments_set_link' => 'Nastavit odkaz',
+ 'attachments_delete' => 'Jste si jisti, že chcete odstranit tuto přílohu?',
+ 'attachments_dropzone' => 'Soubory nahrajete přetažením sem',
+ 'attachments_no_files' => 'Žádné soubory nebyly nahrány',
+ 'attachments_explain_link' => 'Můžete pouze připojit odkaz pokud nechcete nahrávat soubor přímo. Může to být odkaz na jinou stránku nebo na soubor v cloudu.',
+ 'attachments_link_name' => 'Název odkazu',
+ 'attachment_link' => 'Odkaz na přílohu',
+ 'attachments_link_url' => 'Odkaz na soubor',
+ 'attachments_link_url_hint' => 'URL stránky nebo souboru',
+ 'attach' => 'Připojit',
+ 'attachments_insert_link' => 'Přidat odkaz na přílohu do stránky',
+ 'attachments_edit_file' => 'Upravit soubor',
+ 'attachments_edit_file_name' => 'Název souboru',
+ 'attachments_edit_drop_upload' => 'Přetáhněte sem soubor myší nebo klikněte pro nahrání nového souboru a následné přepsání starého',
+ 'attachments_order_updated' => 'Pořadí příloh aktualizováno',
+ 'attachments_updated_success' => 'Podrobnosti příloh aktualizovány',
+ 'attachments_deleted' => 'Příloha byla odstraněna',
+ 'attachments_file_uploaded' => 'Soubor byl nahrán',
+ 'attachments_file_updated' => 'Soubor byl aktualizován',
+ 'attachments_link_attached' => 'Odkaz byl přiložen ke stránce',
+ 'templates' => 'Šablony',
+ 'templates_set_as_template' => 'Tato stránka je šablona',
+ 'templates_explain_set_as_template' => 'Tuto stránku můžete nastavit jako šablonu, aby byl její obsah využit při vytváření dalších stránek. Ostatní uživatelé budou moci použít tuto šablonu, pokud mají oprávnění k zobrazení této stránky.',
+ 'templates_replace_content' => 'Nahradit obsah stránky',
+ 'templates_append_content' => 'Připojit za obsah stránky',
+ 'templates_prepend_content' => 'Připojit před obsah stránky',
+
+ // Profile View
+ 'profile_user_for_x' => 'Uživatelem již :time',
+ 'profile_created_content' => 'Vytvořený obsah',
+ 'profile_not_created_pages' => ':userName nevytvořil/a žádné stránky',
+ 'profile_not_created_chapters' => ':userName nevytvořil/a žádné kapitoly',
+ 'profile_not_created_books' => ':userName nevytvořil/a žádné knihy',
+ 'profile_not_created_shelves' => ':userName nevytvořil/a žádné knihovny',
+
+ // Comments
+ 'comment' => 'Komentář',
+ 'comments' => 'Komentáře',
+ 'comment_add' => 'Přidat komentář',
+ 'comment_none' => 'Žádné komentáře k zobrazení',
+ 'comment_placeholder' => 'Zde zadejte komentář',
+ 'comment_thread_count' => '{0}:count vláken komentářů|{1}:count vlákno komentářů|[2,4]:count vlákna komentářů|[5,*]:count vláken komentářů',
+ 'comment_archived_count' => '[0,1]:count archivováno|[2,4]:count archivována|[5,*]:count archivováno',
+ 'comment_archived_threads' => 'Archivovaná vlákna',
+ 'comment_save' => 'Uložit komentář',
+ 'comment_new' => 'Nový komentář',
+ 'comment_created' => 'komentováno :createDiff',
+ 'comment_updated' => 'Aktualizováno :updateDiff uživatelem :username',
+ 'comment_updated_indicator' => 'Aktualizováno',
+ 'comment_deleted_success' => 'Komentář odstraněn',
+ 'comment_created_success' => 'Komentář přidán',
+ 'comment_updated_success' => 'Komentář aktualizován',
+ 'comment_archive_success' => 'Komentář archivován',
+ 'comment_unarchive_success' => 'Komentář od-archivován',
+ 'comment_view' => 'Zobrazit komentář',
+ 'comment_jump_to_thread' => 'Přejít na vlákno',
+ 'comment_delete_confirm' => 'Opravdu chcete odstranit tento komentář?',
+ 'comment_in_reply_to' => 'Odpověď na :commentId',
+ 'comment_reference' => 'Odkaz',
+ 'comment_reference_outdated' => '(Zastaralý)',
+ 'comment_editor_explain' => 'Zde jsou komentáře, které zůstaly na této stránce. Komentáře lze přidat a spravovat při prohlížení uložené stránky.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Opravdu chcete odstranit tuto revizi?',
+ 'revision_restore_confirm' => 'Jste si jisti, že chcete obnovit tuto revizi? Aktuální obsah stránky bude nahrazen.',
+ 'revision_cannot_delete_latest' => 'Nelze odstranit poslední revizi.',
+
+ // Copy view
+ 'copy_consider' => 'Při kopírování obsahu zvažte prosím níže.',
+ 'copy_consider_permissions' => 'Vlastní nastavení oprávnění nebudou zkopírovány.',
+ 'copy_consider_owner' => 'Stanete se vlastníkem veškerého kopírovaného obsahu.',
+ 'copy_consider_images' => 'Soubory obrázků stránky nebudou duplikovány a původní obrázky si zachovají jejich vztah ke stránce, na kterou byly původně nahrány.',
+ 'copy_consider_attachments' => 'Přílohy stránky nebudou zkopírovány.',
+ 'copy_consider_access' => 'Po změně umístění, vlastníka nebo oprávnění může dojít k tomu, že obsah může být přístupný těm, kteří přístup dříve něměli.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Převést na polici',
+ 'convert_to_shelf_contents_desc' => 'Tuto knihu můžete převést na novou polici se stejným obsahem. Kapitoly obsažené v této knize budou převedeny na nové knihy. Pokud tato kniha obsahuje jakékoli stránky, které nejsou uvedeny v kapitole, bude tato kniha přejmenována a bude obsahovat tyto stránky a stane se součástí nové police.',
+ 'convert_to_shelf_permissions_desc' => 'Veškerá oprávnění nastavená v této knize budou zkopírována do nové police a do všech nových podřazených knih, které nemají vlastní oprávnění. Všimněte si, že oprávnění na policích neobsahují automatickou kaskádu na obsah, jako je tomu u knih.',
+ 'convert_book' => 'Převést knihu',
+ 'convert_book_confirm' => 'Opravdu chcete převést tuto knihu?',
+ 'convert_undo_warning' => 'To nelze tak snadno vrátit zpět.',
+ 'convert_to_book' => 'Převést knihu',
+ 'convert_to_book_desc' => 'Tuto kapitolu můžete převést na novou knihu se stejným obsahem. Veškerá oprávnění nastavená v této kapitole budou zkopírována do nové knihy, ale všechna zděděná oprávnění, z nadřazené knihy nebudou kopírovány, což by mohlo vést ke změně kontroly přístupu.',
+ 'convert_chapter' => 'Převést kapitolu',
+ 'convert_chapter_confirm' => 'Jste si jisti, že chcete převést tuto kapitolu?',
+
+ // References
+ 'references' => 'Odkazy',
+ 'references_none' => 'Nebyly nalezeny žádné odkazy na tuto položku.',
+ 'references_to_desc' => 'Níže je uveden veškerý obsah o kterém systém ví, že odkazuje na tuto položku.',
+
+ // Watch Options
+ 'watch' => 'Sledovat',
+ 'watch_title_default' => 'Výchozí vlastnosti',
+ 'watch_desc_default' => 'Vrátit sledování pouze do výchozích nastavení oznámení.',
+ 'watch_title_ignore' => 'Ignorovat',
+ 'watch_desc_ignore' => 'Ignorovat všechna oznámení, včetně oznámení z nastavení uživatelské úrovně.',
+ 'watch_title_new' => 'Nová stránka',
+ 'watch_desc_new' => 'Upozornit, když je v této položce vytvořena nová stránka.',
+ 'watch_title_updates' => 'Všechny aktualizace stránky',
+ 'watch_desc_updates' => 'Upozornit na všechny nové stránky a změny stránek.',
+ 'watch_desc_updates_page' => 'Upozornit na všechny změny stránky.',
+ 'watch_title_comments' => 'Všechny aktualizace a komentáře stránky',
+ 'watch_desc_comments' => 'Upozornit na všechny nové stránky, změny stránek a nové komentáře.',
+ 'watch_desc_comments_page' => 'Upozornit na změny stránky a nové komentáře.',
+ 'watch_change_default' => 'Změnit výchozí předvolby oznámení',
+ 'watch_detail_ignore' => 'Ignorování oznámení',
+ 'watch_detail_new' => 'Sledování nových stránek',
+ 'watch_detail_updates' => 'Sledování nových stránek a aktualizací',
+ 'watch_detail_comments' => 'Sledování nových stránek, aktualizací a komentářů',
+ 'watch_detail_parent_book' => 'Sledování přes nadřazenou knihu',
+ 'watch_detail_parent_book_ignore' => 'Ignorování přes nadřazenou knihu',
+ 'watch_detail_parent_chapter' => 'Sledování přes nadřazenou knihu',
+ 'watch_detail_parent_chapter_ignore' => 'Ignorování přes nadřazenou knihu',
+];
diff --git a/lang/cs/errors.php b/lang/cs/errors.php
new file mode 100644
index 00000000000..5d086456ba1
--- /dev/null
+++ b/lang/cs/errors.php
@@ -0,0 +1,135 @@
+ 'Nemáte povolení přistupovat na požadovanou stránku.',
+ 'permissionJson' => 'Nemáte povolení k provedení požadované akce.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Uživatel s emailem :email již existuje, ale s jinými přihlašovacími údaji.',
+ 'auth_pre_register_theme_prevention' => 'Zadané údaje nedovolují zaregistrovat uživatelský účet',
+ 'email_already_confirmed' => 'Emailová adresa již byla potvrzena. Zkuste se přihlásit.',
+ 'email_confirmation_invalid' => 'Tento potvrzovací odkaz již neplatí nebo už byl použit. Zkuste prosím registraci znovu.',
+ 'email_confirmation_expired' => 'Tento potvrzovací odkaz již neplatí, byl Vám odeslán nový potvrzovací e-mail.',
+ 'email_confirmation_awaiting' => 'E-mailová adresa pro používaný účet musí být potvrzena',
+ 'ldap_fail_anonymous' => 'Přístup k adresáři LDAP jako anonymní uživatel (anonymous bind) selhal',
+ 'ldap_fail_authed' => 'Přístup k adresáři LDAP pomocí zadaného jména (dn) a hesla selhal',
+ 'ldap_extension_not_installed' => 'Není nainstalováno rozšíření LDAP pro PHP',
+ 'ldap_cannot_connect' => 'Nelze se připojit k adresáři LDAP. Prvotní připojení selhalo.',
+ 'saml_already_logged_in' => 'Již jste přihlášeni',
+ 'saml_no_email_address' => 'Nelze najít e-mailovou adresu pro tohoto uživatele v datech poskytnutých externím přihlašovacím systémem',
+ 'saml_invalid_response_id' => 'Požadavek z externího ověřovacího systému nebyl rozpoznám procesem, který tato aplikace spustila. Tento problém může způsobit stisknutí tlačítka Zpět po přihlášení.',
+ 'saml_fail_authed' => 'Přihlášení pomocí :system selhalo, systém neposkytl úspěšnou autorizaci',
+ 'oidc_already_logged_in' => 'Již jste přihlášeni',
+ 'oidc_no_email_address' => 'Nelze najít e-mailovou adresu pro tohoto uživatele v datech poskytnutých externím přihlašovacím systémem',
+ 'oidc_fail_authed' => 'Přihlášení pomocí :system selhalo, systém neposkytl úspěšnou autorizaci',
+ 'social_no_action_defined' => 'Nebyla zvolena žádá akce',
+ 'social_login_bad_response' => "Nastala chyba během přihlašování přes :socialAccount \n:error",
+ 'social_account_in_use' => 'Tento účet na :socialAccount se již používá. Pokuste se s ním přihlásit volbou Přihlásit přes :socialAccount.',
+ 'social_account_email_in_use' => 'Emailová adresa :email se již používá. Pokud máte již máte náš účet, můžete si jej propojit se svým účtem na :socialAccount v nastavení vašeho profilu.',
+ 'social_account_existing' => 'Tento účet na :socialAccount je již propojen s vaším profilem zde.',
+ 'social_account_already_used_existing' => 'Tento účet na :socialAccount je již používán jiným uživatelem.',
+ 'social_account_not_used' => 'Tento účet na :socialAccount není spřažen s žádným uživatelem. Prosím přiřaďtě si jej v nastavení svého profilu.',
+ 'social_account_register_instructions' => 'Pokud ještě nemáte náš účet, můžete se zaregistrovat pomocí vašeho účtu na :socialAccount.',
+ 'social_driver_not_found' => 'Doplněk pro tohoto správce identity nebyl nalezen.',
+ 'social_driver_not_configured' => 'Nastavení vašeho účtu na :socialAccount není správné. :socialAccount musí mít vaše svolení pro naší aplikaci vás přihlásit.',
+ 'invite_token_expired' => 'Odkaz v pozvánce již bohužel vypršel. Namísto toho ale můžete zkusit resetovat heslo do Vašeho účtu.',
+ 'login_user_not_found' => 'Uživatele pro tuto akci se nepodařilo najít.',
+
+ // System
+ 'path_not_writable' => 'Nelze zapisovat na cestu k souboru :filePath. Zajistěte aby se dalo nahrávat na server.',
+ 'cannot_get_image_from_url' => 'Nelze získat obrázek z adresy :url',
+ 'cannot_create_thumbs' => 'Server nedokáže udělat náhledy. Zkontrolujte, že rozšíření GD pro PHP je nainstalováno.',
+ 'server_upload_limit' => 'Server nepovoluje nahrávat tak veliké soubory. Zkuste prosím menší soubor.',
+ 'server_post_limit' => 'Server nemůže přijmout takové množství dat. Zkuste to znovu s méně daty nebo menším souborem.',
+ 'uploaded' => 'Server nepovoluje nahrávat tak veliké soubory. Zkuste prosím menší soubor.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Nastala chyba během nahrávání souboru',
+ 'image_upload_type_error' => 'Typ nahrávaného obrázku je neplatný.',
+ 'image_upload_replace_type' => 'Náhrady souboru obrázku musí být stejného typu',
+ 'image_upload_memory_limit' => 'Nepodařilo se zpracovat nahrávaný obrázek anebo vytvořit náhledy z důvodu omezených systémových prostředků.',
+ 'image_thumbnail_memory_limit' => 'Nepodařilo se vytvořit všechny velikostní varianty obrázku z důvodu omezených systémových prostředků.',
+ 'image_gallery_thumbnail_memory_limit' => 'Nepodařilo se vytvořit náhledy alba z důvodu omezených systémových prostředků.',
+ 'drawing_data_not_found' => 'Data výkresu nelze načíst. Výkresový soubor již nemusí existovat nebo nemusí mít oprávnění k němu přistupovat.',
+
+ // Attachments
+ 'attachment_not_found' => 'Příloha nenalezena',
+ 'attachment_upload_error' => 'Nastala chyba během nahrávání přiloženého souboru',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Nepovedlo se uložit koncept. Než stránku uložíte, ujistěte se, že jste připojeni k internetu.',
+ 'page_draft_delete_fail' => 'Nepodařilo se odstranit koncept stránky a načíst její aktuální obsah',
+ 'page_custom_home_deletion' => 'Nelze odstranit tuto stránku, protože je nastavena jako uvítací stránka',
+
+ // Entities
+ 'entity_not_found' => 'Prvek nenalezen',
+ 'bookshelf_not_found' => 'Police nenalezena',
+ 'book_not_found' => 'Kniha nenalezena',
+ 'page_not_found' => 'Stránka nenalezena',
+ 'chapter_not_found' => 'Kapitola nenalezena',
+ 'selected_book_not_found' => 'Vybraná kniha nebyla nalezena',
+ 'selected_book_chapter_not_found' => 'Zvolená kniha nebo kapitola nebyla nalezena',
+ 'guests_cannot_save_drafts' => 'Nepřihlášení návštěvníci nemohou ukládat koncepty',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Nemůžete odstranit posledního administrátora',
+ 'users_cannot_delete_guest' => 'Uživatele Host není možno odstranit',
+ 'users_could_not_send_invite' => 'Nebylo možné vytvořit uživatele, protože se nepodařilo odeslat email s pozvánkou',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Tuto roli nelze editovat',
+ 'role_system_cannot_be_deleted' => 'Toto je systémová role a nelze jí odstranit',
+ 'role_registration_default_cannot_delete' => 'Tuto roli nelze odstranit dokud je nastavená jako výchozí role pro registraci nových uživatelů',
+ 'role_cannot_remove_only_admin' => 'Tento uživatel má roli administrátora. Přiřaďte roli administrátora někomu jinému než jí odeberete zde.',
+
+ // Comments
+ 'comment_list' => 'Při načítání komentářů nastala chyba.',
+ 'cannot_add_comment_to_draft' => 'Nemůžete přidávat komentáře ke konceptu.',
+ 'comment_add' => 'Při přidávání / aktualizaci komentáře nastala chyba.',
+ 'comment_delete' => 'Při odstraňování komentáře nastala chyba.',
+ 'empty_comment' => 'Nemůžete přidat prázdný komentář.',
+
+ // Error pages
+ '404_page_not_found' => 'Stránka nenalezena',
+ 'sorry_page_not_found' => 'Omlouváme se, ale stránka, kterou hledáte, nebyla nalezena.',
+ 'sorry_page_not_found_permission_warning' => 'Pokud očekáváte, že by stránka měla existovat, možná jen nemáte oprávnění pro její zobrazení.',
+ 'image_not_found' => 'Obrázek nenalezen',
+ 'image_not_found_subtitle' => 'Omlouváme se, ale obrázek, který hledáte, nebyl nalezen.',
+ 'image_not_found_details' => 'Pokud očekáváte, že by obrázel měl existovat, tak byl zřejmě již odstraněn.',
+ 'return_home' => 'Návrat domů',
+ 'error_occurred' => 'Nastala chyba',
+ 'app_down' => ':appName je momentálně vypnutá',
+ 'back_soon' => 'Brzy bude opět v provozu.',
+
+ // Import
+ 'import_zip_cant_read' => 'Nelze načíst ZIP soubor.',
+ 'import_zip_cant_decode_data' => 'Nelze najít a dekódovat data.json v archivu ZIP.',
+ 'import_zip_no_data' => 'ZIP archiv neobsahuje knihy, kapitoly nebo stránky.',
+ 'import_zip_data_too_large' => 'Obsah souboru data.json v archivu ZIP překračuje maximální povolenou velikost.',
+ 'import_validation_failed' => 'Importování ZIP selhalo s chybami:',
+ 'import_zip_failed_notification' => 'Nepodařilo se naimportovat ZIP soubor.',
+ 'import_perms_books' => 'Chybí vám požadovaná oprávnění k vytvoření knih.',
+ 'import_perms_chapters' => 'Chybí vám požadovaná oprávnění k vytvoření kapitol.',
+ 'import_perms_pages' => 'Chybí vám požadovaná oprávnění k vytvoření stránek.',
+ 'import_perms_images' => 'Chybí vám požadovaná oprávnění k vytvoření obrázků.',
+ 'import_perms_attachments' => 'Chybí vám požadovaná oprávnění k vytvoření příloh.',
+
+ // API errors
+ 'api_no_authorization_found' => 'V požadavku nebyl nalezen žádný autorizační token',
+ 'api_bad_authorization_format' => 'V požadavku byl nalezen autorizační token, ale jeho formát se zdá být chybný',
+ 'api_user_token_not_found' => 'Pro zadaný autorizační token nebyl nalezen žádný odpovídající API token',
+ 'api_incorrect_token_secret' => 'Poskytnutý Token Secret neodpovídá použitému API tokenu',
+ 'api_user_no_api_permission' => 'Vlastník použitého API tokenu nemá oprávnění provádět API volání',
+ 'api_user_token_expired' => 'Platnost autorizačního tokenu vypršela',
+ 'api_cookie_auth_only_get' => 'Při používání API s ověřováním pomocí souborů cookie jsou povoleny pouze požadavky GET',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Při posílání testovacího e-mailu nastala chyba:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'URL adresa neodpovídá povoleným SSR poskytovatelům',
+];
diff --git a/lang/cs/notifications.php b/lang/cs/notifications.php
new file mode 100644
index 00000000000..7e20f654fd6
--- /dev/null
+++ b/lang/cs/notifications.php
@@ -0,0 +1,29 @@
+ 'Nový komentář na stránce: :pageName',
+ 'new_comment_intro' => 'Uživatel/ka okomentoval/a stránku v :appName:',
+ 'new_page_subject' => 'Nová stránka: :pageName',
+ 'new_page_intro' => 'V :appName byla vytvořena nová stránka:',
+ 'updated_page_subject' => 'Aktualizovaná stránka: :pageName',
+ 'updated_page_intro' => 'V :appName byla aktualizována stránka:',
+ 'updated_page_debounce' => 'Po nějakou dobu neobdržíte další oznámení o aktualizaci této stránky stejným editorem, aby se omezil počet stejných zpráv.',
+ 'comment_mention_subject' => 'Byli jste zmíněni v komentáři na stránce: :pageName',
+ 'comment_mention_intro' => 'Byli jste zmíněni v komentáři na webu :appName:',
+
+ 'detail_page_name' => 'Název stránky:',
+ 'detail_page_path' => 'Umístění:',
+ 'detail_commenter' => 'Komentoval/a:',
+ 'detail_comment' => 'Komentář:',
+ 'detail_created_by' => 'Vytvořil/a:',
+ 'detail_updated_by' => 'Aktualizoval/a:',
+
+ 'action_view_comment' => 'Zobrazit komentář',
+ 'action_view_page' => 'Zobrazit stránku',
+
+ 'footer_reason' => 'Tato zpráva Vám byla doručena na základě Vašeho :link.',
+ 'footer_reason_link' => 'nastavení upozornění',
+];
diff --git a/resources/lang/cs/pagination.php b/lang/cs/pagination.php
similarity index 100%
rename from resources/lang/cs/pagination.php
rename to lang/cs/pagination.php
diff --git a/lang/cs/passwords.php b/lang/cs/passwords.php
new file mode 100644
index 00000000000..9dc1c0fc3c0
--- /dev/null
+++ b/lang/cs/passwords.php
@@ -0,0 +1,15 @@
+ 'Heslo musí mít alespoň osm znaků a shodovat se v obou polích.',
+ 'user' => "Uživatel s touto e-mailovou adresou nebyl nalezen.",
+ 'token' => 'Token pro obnovení hesla není platný pro tuto e-mailovou adresu.',
+ 'sent' => 'Poslali jsme Vám e-mail s odkazem pro obnovení hesla!',
+ 'reset' => 'Vaše heslo bylo obnoveno!',
+
+];
diff --git a/lang/cs/preferences.php b/lang/cs/preferences.php
new file mode 100644
index 00000000000..be0f972f9e0
--- /dev/null
+++ b/lang/cs/preferences.php
@@ -0,0 +1,52 @@
+ 'Můj účet',
+
+ 'shortcuts' => 'Zkratky',
+ 'shortcuts_interface' => 'Nastavení klávesových zkratek',
+ 'shortcuts_toggle_desc' => 'Zde můžete povolit nebo zakázat klávesové zkratky systémového rozhraní používané pro navigaci a akce.',
+ 'shortcuts_customize_desc' => 'Po výběru vstupu pro zástupce si můžete přizpůsobit všechny klávesové zkratky.',
+ 'shortcuts_toggle_label' => 'Klávesové zkratky povoleny',
+ 'shortcuts_section_navigation' => 'Navigace',
+ 'shortcuts_section_actions' => 'Společné akce',
+ 'shortcuts_save' => 'Uložit zkratky',
+ 'shortcuts_overlay_desc' => 'Poznámka: Když jsou povoleny zkratky, je k dispozici pomocný překryv stisknutím "? která zvýrazní dostupné zkratky pro akce viditelné na obrazovce.',
+ 'shortcuts_update_success' => 'Nastavení pro zkratky bylo aktualizováno!',
+ 'shortcuts_overview_desc' => 'Správa klávesových zkratek, které můžete použít k navigaci systémového uživatelského rozhraní.',
+
+ 'notifications' => 'Nastavení upozornění',
+ 'notifications_desc' => 'Nastavte si e-mailová oznámení, která dostanete při provedení určitých akcí v systému.',
+ 'notifications_opt_own_page_changes' => 'Upozornit na změny stránek u kterých jsem vlastníkem',
+ 'notifications_opt_own_page_comments' => 'Upozornit na komentáře na stránkách, které vlastním',
+ 'notifications_opt_comment_mentions' => 'Upozornit, když mě někdo zmíní v komentáři',
+ 'notifications_opt_comment_replies' => 'Upozornit na odpovědi na mé komentáře',
+ 'notifications_save' => 'Uložit nastavení',
+ 'notifications_update_success' => 'Nastavení oznámení byla aktualizována!',
+ 'notifications_watched' => 'Sledované a ignorované položky',
+ 'notifications_watched_desc' => 'Níže jsou položky, které mají vlastní nastavení sledování. Chcete-li aktualizovat vaše předvolby, zobrazte položku a pak upravte možnosti sledování v postranním panelu.',
+
+ 'auth' => 'Přístup a zabezpečení',
+ 'auth_change_password' => 'Změnit heslo',
+ 'auth_change_password_desc' => 'Změňte heslo, které používáte pro přihlášení do aplikace. Musí být minimálně 8 znaků dlouhé.',
+ 'auth_change_password_success' => 'Heslo bylo aktualizováno!',
+
+ 'profile' => 'Podrobnosti profilu',
+ 'profile_desc' => 'Spravujte údaje k vašemu účtu, které vás reprezentují před ostatními uživateli, kromě údajů, které se používají pro komunikaci a přizpůsobení systému.',
+ 'profile_view_public' => 'Zobrazit veřejný profil',
+ 'profile_name_desc' => 'Nastavte vaše zobrazované jméno, které bude viditelné ostatním uživatelům v systému prostřednictvím provedených aktivit a vlastního obsahu.',
+ 'profile_email_desc' => 'Tento e-mail bude použit pro oznámení a přístup do systému v závislosti na systémové autentizaci.',
+ 'profile_email_no_permission' => 'Bohužel nemáte oprávnění ke změně své e-mailové adresy. Pokud ji chcete změnit, musíte požádat správce, aby provedl tuto změnu za vás.',
+ 'profile_avatar_desc' => 'Vyberte obrázek, který bude použit k vaší prezentaci pro ostatní v systému. Ideálně by tento obrázek měl být čtverec o velikosti 256px na šířku a výšku.',
+ 'profile_admin_options' => 'Možnosti správce',
+ 'profile_admin_options_desc' => 'Další možnosti na úrovni administrátora. Například ty, které spravují přiřazení rolí lze najít pro váš účet v sekci "Nastavení > Uživatelé".',
+
+ 'delete_account' => 'Smazat účet',
+ 'delete_my_account' => 'Smazat můj účet',
+ 'delete_my_account_desc' => 'Tímto zcela smažete váš účet ze systému. Nebudete moci tento účet obnovit nebo tuto akci vrátit. Obsah, který jste vytvořili, jako jsou vytvořené stránky a nahrané obrázky, zůstanou zachovány.',
+ 'delete_my_account_warning' => 'Opravdu si přejete smazat váš účet?',
+];
diff --git a/lang/cs/settings.php b/lang/cs/settings.php
new file mode 100644
index 00000000000..ef25f1a2035
--- /dev/null
+++ b/lang/cs/settings.php
@@ -0,0 +1,374 @@
+ 'Nastavení',
+ 'settings_save' => 'Uložit nastavení',
+ 'system_version' => 'Verze systému',
+ 'categories' => 'Kategorie',
+
+ // App Settings
+ 'app_customization' => 'Přizpůsobení',
+ 'app_features_security' => 'Funkce a zabezpečení',
+ 'app_name' => 'Název aplikace',
+ 'app_name_desc' => 'Název se bude zobrazovat v záhlaví této aplikace a v e-mailech odesílaných systémem.',
+ 'app_name_header' => 'Zobrazovat název aplikace v záhlaví',
+ 'app_public_access' => 'Veřejný přístup',
+ 'app_public_access_desc' => 'Zapnutím této volby umožníte nepřihlášeným návštěvníkům přístup k Vašemu obsahu v BookStack aplikaci.',
+ 'app_public_access_desc_guest' => 'Přístup pro nepřihlášené návštěvníky je možné nastavit přes uživatele "Guest".',
+ 'app_public_access_toggle' => 'Povolit veřejný přístup',
+ 'app_public_viewing' => 'Povolit prohlížení veřejností?',
+ 'app_secure_images' => 'Nahrávat obrázky neveřejně a zabezpečeně',
+ 'app_secure_images_toggle' => 'Zapnout bezpečnější nahrávání obrázků',
+ 'app_secure_images_desc' => 'Z výkonnostních důvodů jsou všechny obrázky veřejně dostupné. Tato volba přidá do adresy obrázku náhodný řetězec, aby nikdo neodhadnul adresu obrázku. Ujistěte se, že server nezobrazuje v adresáři seznam souborů, což by přístup k obrázkům opět otevřelo.',
+ 'app_default_editor' => 'Výchozí editor',
+ 'app_default_editor_desc' => 'Vyberte, který editor bude použit ve výchozím nastavení při úpravách nových stránek. To může být přepsáno na úrovni stránky, kde to dovolují oprávnění.',
+ 'app_custom_html' => 'Vlastní obsah hlavičky HTML',
+ 'app_custom_html_desc' => 'Cokoliv sem napíšete bude přidáno na konec sekce v každém místě této aplikace. To se hodí pro přidávání nebo změnu CSS stylů nebo přidání kódu pro analýzu používání (např.: google analytics.).',
+ 'app_custom_html_disabled_notice' => 'Na této stránce nastavení je zakázán vlastní obsah HTML hlavičky, aby bylo zajištěno, že bude možné vrátit případnou problematickou úpravu.',
+ 'app_logo' => 'Logo aplikace',
+ 'app_logo_desc' => 'Používá se v záhlaví aplikace, a v jiných oblastech. Tento obrázek by měl být velký 86px. Větší obrázky budou zmenšeny.',
+ 'app_icon' => 'Ikona aplikace',
+ 'app_icon_desc' => 'Tato ikona se používá pro záložky prohlížeče a ikony zástupců. Obrazek by měl být čtverec o velikosti 256px a formátu PNG.',
+ 'app_homepage' => 'Úvodní stránka aplikace',
+ 'app_homepage_desc' => 'Zvolte si zobrazení, které se použije jako úvodní stránka. U zvolených stránek bude ignorováno jejich oprávnění.',
+ 'app_homepage_select' => 'Zvolte stránku',
+ 'app_footer_links' => 'Odkazy v zápatí',
+ 'app_footer_links_desc' => 'Přidejte odkazy, které se zobrazí v zápatí webu. Ty se zobrazí ve spodní části většiny stránek, včetně těch, které nevyžadují přihlášení. K použití překladů definovaných systémem můžete použít štítek „trans::“. Například: Použití „trans::common.privacy_policy“ přeloží text na „Zásady ochrany osobních údajů“ a „trans::common.terms_of_service“ poskytne přeložený text „Podmínky služby“.',
+ 'app_footer_links_label' => 'Text odkazu',
+ 'app_footer_links_url' => 'URL odkazu',
+ 'app_footer_links_add' => 'Přidat odkaz do zápatí',
+ 'app_disable_comments' => 'Vypnutí komentářů',
+ 'app_disable_comments_toggle' => 'Vypnout komentáře',
+ 'app_disable_comments_desc' => 'Vypne komentáře napříč všemi stránkami. Existující komentáře se přestanou zobrazovat.',
+
+ // Color settings
+ 'color_scheme' => 'Barevné schéma aplikace',
+ 'color_scheme_desc' => 'Nastavte barvy pro uživatelské rozhraní. Barvy mohou být konfigurovány samostatně pro tmavý a světlý režim, aby co nejlépe odpovídaly tématu a zajistily čitelnost.',
+ 'ui_colors_desc' => 'Nastavte primární barvu aplikace a výchozí barvu odkazu. Primární barva je použitá hlavně na banneru hlavičky, tlačítkách a ozdobách rozhraní. Výchozí barva odkazu se používá pro odkazy a akce napříč psaným textem a rozhraním aplikace.',
+ 'app_color' => 'Hlavní barva',
+ 'link_color' => 'Výchozí barva odkazu',
+ 'content_colors_desc' => 'Nastaví barvy pro všechny prvky v organizační struktuře stránky. Pro lepší čitelnost doporučujeme zvolit barvy s podobným jasem, jakou mají výchozí barvy.',
+ 'bookshelf_color' => 'Barva police',
+ 'book_color' => 'Barva knihy',
+ 'chapter_color' => 'Barva kapitoly',
+ 'page_color' => 'Barva stránky',
+ 'page_draft_color' => 'Barva návrhu stránky',
+
+ // Registration Settings
+ 'reg_settings' => 'Nastavení registrace',
+ 'reg_enable' => 'Povolení registrace',
+ 'reg_enable_toggle' => 'Povolit registrace',
+ 'reg_enable_desc' => 'Pokud jsou povoleny registrace, bude se uživatel moci sám registrovat jako uživatel aplikace. Po registraci dostane jednu výchozí uživatelskou roli.',
+ 'reg_default_role' => 'Role přiřazená po registraci',
+ 'reg_enable_external_warning' => 'Pokud je povolené externí ověřování přes LDAP nebo SAML, je výše uvedená možnost ignorována. Uživatelský účet budou automaticky vytvořen i neexistujícímu uživateli, jakmile se úspěšně přihlásí přes použitý externí přihlašovací systém.',
+ 'reg_email_confirmation' => 'Ověření e-mailu',
+ 'reg_email_confirmation_toggle' => 'Vyžadovat ověření e-mailu',
+ 'reg_confirm_email_desc' => 'Pokud je zapnuté Omezení registrace podle domény, bude e-mail ověřován vždy a tato volba bude ignorována.',
+ 'reg_confirm_restrict_domain' => 'Omezit registraci podle domény',
+ 'reg_confirm_restrict_domain_desc' => 'Zadejte seznam e-mailových domén oddělených čárkami, na které chcete registraci omezit. Registrujícímu se uživateli bude zaslán e-mail, aby ověřil svoji e-mailovou adresu před tím, než mu bude přístup do aplikace povolen. Upozorňujeme, že po úspěšné registraci může uživatel svoji e-mailovou adresu změnit.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Žádná omezení nebyla nastavena',
+
+ // Sorting Settings
+ 'sorting' => 'Seznamy a řazení',
+ 'sorting_book_default' => 'Výchozí řazení knih',
+ 'sorting_book_default_desc' => 'Vybere výchozí pravidlo řazení pro nové knihy. Řazení neovlivní existující knihy a může být upraveno u konkrétní knihy.',
+ 'sorting_rules' => 'Pravidla řazení',
+ 'sorting_rules_desc' => 'Toto jsou předem definovaná pravidla řazení, která mohou být použita na webu.',
+ 'sort_rule_assigned_to_x_books' => 'Přiřazeno k :count knize|Přiřazeno :count knihám',
+ 'sort_rule_create' => 'Vytvořit pravidlo řazení',
+ 'sort_rule_edit' => 'Upravit pravidlo řazení',
+ 'sort_rule_delete' => 'Odstranit pravidlo řazení',
+ 'sort_rule_delete_desc' => 'Odstraní toto pravidlo řazení z webu. Knihy, které jej používají, se vrátí k ručnímu řazení.',
+ 'sort_rule_delete_warn_books' => 'Toto pravidlo řazení se v současné době používá na :count knihách. Opravdu ho chcete smazat?',
+ 'sort_rule_delete_warn_default' => 'Toto pravidlo řazení je v současné době používáno jako výchozí. Opravdu ho chcete odstranit?',
+ 'sort_rule_details' => 'Podrobnosti pravidla pro řazení',
+ 'sort_rule_details_desc' => 'Nastavte název pro toto pravidlo, který se zobrazí v seznamu při výběru řazení.',
+ 'sort_rule_operations' => 'Možnosti řazení',
+ 'sort_rule_operations_desc' => 'Přesunem ze seznamu dostupných operací nastavte akce řazení, které mají být provedeny. Operace se použijí v pořadí od shora dolů. Veškeré změny zde provedené budou při uložení aplikovány na všechny přiřazené knihy.',
+ 'sort_rule_available_operations' => 'Dostupné operace',
+ 'sort_rule_available_operations_empty' => 'Žádné zbývající operace',
+ 'sort_rule_configured_operations' => 'Konfigurované operace',
+ 'sort_rule_configured_operations_empty' => 'Přetáhněte/přidejte operace ze seznamu "Dostupné operace"',
+ 'sort_rule_op_asc' => '(Vzest)',
+ 'sort_rule_op_desc' => '(Sest)',
+ 'sort_rule_op_name' => 'Název - abecední',
+ 'sort_rule_op_name_numeric' => 'Název - číselné',
+ 'sort_rule_op_created_date' => 'Datum vytvoření',
+ 'sort_rule_op_updated_date' => 'Datum aktualizace',
+ 'sort_rule_op_chapters_first' => 'Kapitoly jako první',
+ 'sort_rule_op_chapters_last' => 'Kapitoly jako poslední',
+ 'sorting_page_limits' => 'Počet zobrazených položek na stránce',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Údržba',
+ 'maint_image_cleanup' => 'Pročistění obrázků',
+ 'maint_image_cleanup_desc' => 'Prohledá stránky a jejich revize, aby zjistil, které obrázky a kresby jsou momentálně používány a které jsou zbytečné. Zajistěte plnou zálohu databáze a obrázků než se do toho pustíte.',
+ 'maint_delete_images_only_in_revisions' => 'Odstranit i obrázky, které se vyskytují pouze ve starých revizích stránky',
+ 'maint_image_cleanup_run' => 'Spustit pročištění',
+ 'maint_image_cleanup_warning' => 'Nalezeno :count potenciálně nepoužitých obrázků. Jste si jisti, že je chcete odstranit?',
+ 'maint_image_cleanup_success' => 'Nalezeno :count potenciálně nepoužitých obrázků a všechny byly odstraněny!',
+ 'maint_image_cleanup_nothing_found' => 'Žádné potenciálně nepoužité obrázky nebyly nalezeny. Nic nebylo smazáno.',
+ 'maint_send_test_email' => 'Odeslat zkušební e-mail',
+ 'maint_send_test_email_desc' => 'Toto pošle zkušební e-mail na vaši e-mailovou adresu uvedenou ve vašem profilu.',
+ 'maint_send_test_email_run' => 'Odeslat zkušební e-mail',
+ 'maint_send_test_email_success' => 'E-mail odeslán na :address',
+ 'maint_send_test_email_mail_subject' => 'Testovací e-mail',
+ 'maint_send_test_email_mail_greeting' => 'Zdá se, že posílání e-mailů funguje!',
+ 'maint_send_test_email_mail_text' => 'Gratulujeme! Protože jste dostali tento e-mail, zdá se, že nastavení e-mailů je v pořádku.',
+ 'maint_recycle_bin_desc' => 'Odstraněné police, knihy, kapitoly a stránky se přesouvají do Koše, aby je bylo možné obnovit nebo trvale smazat. Starší položky v koši mohou být po čase automaticky odstraněny v závislosti na konfiguraci systému.',
+ 'maint_recycle_bin_open' => 'Otevřít Koš',
+ 'maint_regen_references' => 'Přegenerovat odkazy',
+ 'maint_regen_references_desc' => 'Tato akce obnoví referenční index křížových položek v rámci databáze. Toto je obvykle zpracováno automaticky, ale tato akce může být užitečná pro indexování starého obsahu nebo obsahu přidaného neoficiálními metodami.',
+ 'maint_regen_references_success' => 'Referenční index byl obnoven!',
+ 'maint_timeout_command_note' => 'Poznámka: Tato akce může trvat nějakou dobu, což může vést k vypršení časového limitu v některých webových prostředích. Alternativně se tato akce provádí pomocí příkazu terminálu.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Koš',
+ 'recycle_bin_desc' => 'Zde můžete obnovit položky, které byly odstraněny, nebo zvolit jejich trvalé odstranění ze systému. Tento seznam je nefiltrovaný, na rozdíl od podobných seznamů aktivit v systému, kde jsou použity filtry podle oprávnění.',
+ 'recycle_bin_deleted_item' => 'Odstraněná položka',
+ 'recycle_bin_deleted_parent' => 'Nadřazená položka',
+ 'recycle_bin_deleted_by' => 'Odstranil/a',
+ 'recycle_bin_deleted_at' => 'Čas odstranění',
+ 'recycle_bin_permanently_delete' => 'Trvale odstranit',
+ 'recycle_bin_restore' => 'Obnovit',
+ 'recycle_bin_contents_empty' => 'Koš je nyní prázdný',
+ 'recycle_bin_empty' => 'Vysypat Koš',
+ 'recycle_bin_empty_confirm' => 'Toto trvale odstraní všechny položky v Koši včetně obsahu vloženého v každé položce. Opravdu chcete vysypat Koš?',
+ 'recycle_bin_destroy_confirm' => 'Tato akce trvale odstraní tuto položku ze systému spolu se všemi položkami uvedenými níže a nebudete je moci obnovit. Opravdu chcete tuto položku trvale odstranit?',
+ 'recycle_bin_destroy_list' => 'Položky k trvalému odstranění',
+ 'recycle_bin_restore_list' => 'Položky k obnovení',
+ 'recycle_bin_restore_confirm' => 'Tato akce obnoví odstraněnou položku včetně veškerého vloženého obsahu do původního umístění. Pokud bylo původní umístění od té doby odstraněno a nyní je v Koši, bude také nutné obnovit nadřazenou položku.',
+ 'recycle_bin_restore_deleted_parent' => 'Nadřazená položka této položky byla také odstraněna. Ty zůstanou odstraněny, dokud nebude obnoven i nadřazený objekt.',
+ 'recycle_bin_restore_parent' => 'Obnovit nadřazenu položku',
+ 'recycle_bin_destroy_notification' => 'Celkem odstraněno :count položek z Koše.',
+ 'recycle_bin_restore_notification' => 'Celkem obnoveno :count položek z Koše.',
+
+ // Audit Log
+ 'audit' => 'Protokol auditu',
+ 'audit_desc' => 'Tento protokol auditu zobrazuje seznam činností zaznamenaných v systému. Tento seznam není filtrován na rozdíl od podobných seznamů aktivit v systému, kde jsou použity filtry podle oprávnění.',
+ 'audit_event_filter' => 'Filtr událostí',
+ 'audit_event_filter_no_filter' => 'Bez filtru',
+ 'audit_deleted_item' => 'Odstraněná položka',
+ 'audit_deleted_item_name' => 'Jméno: :name',
+ 'audit_table_user' => 'Uživatel',
+ 'audit_table_event' => 'Událost',
+ 'audit_table_related' => 'Související položka nebo detail',
+ 'audit_table_ip' => 'IP adresa',
+ 'audit_table_date' => 'Datum aktivity',
+ 'audit_date_from' => 'Časový rozsah od',
+ 'audit_date_to' => 'Časový rozsah do',
+
+ // Role Settings
+ 'roles' => 'Role',
+ 'role_user_roles' => 'Uživatelské role',
+ 'roles_index_desc' => 'Role se používají ke sdružování uživatelů a k poskytování systémových oprávnění jejich členům. Pokud je uživatel členem více rolí, udělená oprávnění budou uložena a uživatel zdědí všechny schopnosti.',
+ 'roles_x_users_assigned' => '1 přiřazený uživatel|:count přiřazených uživatelů',
+ 'roles_x_permissions_provided' => '1 oprávnění|:count oprávnění',
+ 'roles_assigned_users' => 'Přiřazení uživatelé',
+ 'roles_permissions_provided' => 'Poskytnutá oprávnění',
+ 'role_create' => 'Vytvořit novou roli',
+ 'role_delete' => 'Odstranit roli',
+ 'role_delete_confirm' => 'Role \':roleName\' bude odstraněna.',
+ 'role_delete_users_assigned' => 'Role je přiřazena :userCount uživatelům. Pokud jim chcete náhradou přidělit jinou roli, zvolte jednu z následujících.',
+ 'role_delete_no_migration' => "Nepřiřazovat uživatelům náhradní roli",
+ 'role_delete_sure' => 'Opravdu chcete tuto roli odstranit?',
+ 'role_edit' => 'Upravit roli',
+ 'role_details' => 'Detaily role',
+ 'role_name' => 'Název role',
+ 'role_desc' => 'Stručný popis role',
+ 'role_mfa_enforced' => 'Vyžaduje Vícefaktorové ověření',
+ 'role_external_auth_id' => 'Přihlašovací identifikátory třetích stran',
+ 'role_system' => 'Systémová oprávnění',
+ 'role_manage_users' => 'Správa uživatelů',
+ 'role_manage_roles' => 'Správa rolí a jejich práv',
+ 'role_manage_entity_permissions' => 'Správa práv všech knih, kapitol a stránek',
+ 'role_manage_own_entity_permissions' => 'Správa práv vlastních knih, kapitol a stránek',
+ 'role_manage_page_templates' => 'Správa šablon stránek',
+ 'role_access_api' => 'Přístup k systémovému API',
+ 'role_manage_settings' => 'Správa nastavení aplikace',
+ 'role_export_content' => 'Exportovat obsah',
+ 'role_import_content' => 'Importovat obsah',
+ 'role_editor_change' => 'Změnit editor stránek',
+ 'role_notifications' => 'Přijímat a spravovat oznámení',
+ 'role_permission_note_users_and_roles' => 'Tato oprávnění zároveň umožní zobrazit a vyhledat uživatele a role na webu.',
+ 'role_asset' => 'Obsahová oprávnění',
+ 'roles_system_warning' => 'Berte na vědomí, že přístup k některému ze tří výše uvedených oprávnění může uživateli umožnit změnit svá vlastní oprávnění nebo oprávnění ostatních uživatelů v systému. Přiřazujte role s těmito oprávněními pouze důvěryhodným uživatelům.',
+ 'role_asset_desc' => 'Tato oprávnění řídí přístup k obsahu napříč systémem. Specifická oprávnění na knihách, kapitolách a stránkách převáží tato nastavení.',
+ 'role_asset_admins' => 'Administrátoři automaticky dostávají přístup k veškerému obsahu, ale tyto volby mohou ukázat nebo skrýt volby v uživatelském rozhraní.',
+ 'role_asset_image_view_note' => 'To se týká viditelnosti ve správci obrázků. Skutečný přístup k nahraným souborům obrázků bude záviset na možnosti uložení systémových obrázků.',
+ 'role_asset_users_note' => 'Tato oprávnění zároveň umožní zobrazit a vyhledat uživatele v systému.',
+ 'role_all' => 'Vše',
+ 'role_own' => 'Vlastní',
+ 'role_controlled_by_asset' => 'Řídí se obsahem, do kterého jsou nahrávány',
+ 'role_save' => 'Uložit roli',
+ 'role_users' => 'Uživatelé mající tuto roli',
+ 'role_users_none' => 'Žádný uživatel nemá tuto roli',
+
+ // Users
+ 'users' => 'Uživatelé',
+ 'users_index_desc' => 'Vytváření a správa jednotlivých uživatelských účtů v rámci systému. Uživatelské účty jsou používány pro přihlášení a přiřazování obsahu a aktivity. Přístupová práva jsou primárně založena na roli, ale vlastnictví obsahu uživatele může kromě jiných faktorů také ovlivnit oprávnění a přístup.',
+ 'user_profile' => 'Profil uživatele',
+ 'users_add_new' => 'Přidat nového uživatele',
+ 'users_search' => 'Vyhledávání uživatelů',
+ 'users_latest_activity' => 'Nedávná aktivita',
+ 'users_details' => 'Údaje o uživateli',
+ 'users_details_desc' => 'Nastavte zobrazované jméno a e-mailovou adresu pro tohoto uživatele. E-mailová adresa bude použita pro přihlášení do aplikace.',
+ 'users_details_desc_no_email' => 'Nastavte zobrazované jméno pro tohoto uživatele, aby jej ostatní uživatele poznali.',
+ 'users_role' => 'Uživatelské role',
+ 'users_role_desc' => 'Zvolte role, do kterých chcete uživatele zařadit. Pokud bude uživatel zařazen do více rolí, oprávnění z těchto rolí se sloučí a uživateli bude dovoleno vše, k čemu mají jednotlivé role oprávnění.',
+ 'users_password' => 'Heslo uživatele',
+ 'users_password_desc' => 'Zadejte heslo pro přihlášení do aplikace. Heslo musí být nejméně 8 znaků dlouhé.',
+ 'users_send_invite_text' => 'Uživateli můžete poslat pozvánku e-mailem, která umožní uživateli, aby si zvolil sám svoje heslo do aplikace a nebo můžete zadat heslo sami.',
+ 'users_send_invite_option' => 'Poslat uživateli pozvánku e-mailem',
+ 'users_external_auth_id' => 'Přihlašovací identifikátor třetích stran',
+ 'users_external_auth_id_desc' => 'Při použití externího autentizačního systému (např. SAML2, OIDC nebo LDAP) toto je ID, které spojuje tohoto BookStack uživatele s ověřovacím systémem. Toto pole můžete ignorovat, pokud používáte ověření pomocí e-mailu.',
+ 'users_password_warning' => 'Vyplňte pouze v případě, že chcete změnit heslo pro tohoto uživatele.',
+ 'users_system_public' => 'Symbolizuje každého nepřihlášeného návštěvníka, který navštívil aplikaci. Nelze ho použít k přihlášení ale je přiřazen automaticky nepřihlášeným.',
+ 'users_delete' => 'Odstranit uživatele',
+ 'users_delete_named' => 'Odstranit uživatele :userName',
+ 'users_delete_warning' => 'Uživatel \':userName\' bude zcela odstraněn ze systému.',
+ 'users_delete_confirm' => 'Opravdu chcete tohoto uživatele smazat?',
+ 'users_migrate_ownership' => 'Převést vlastnictví',
+ 'users_migrate_ownership_desc' => 'Zde zvolte jiného uživatele, pokud chcete, aby se stal vlastníkem všech položek aktuálně vlastněných tímto uživatelem.',
+ 'users_none_selected' => 'Nebyl zvolen žádný uživatel',
+ 'users_edit' => 'Upravit uživatele',
+ 'users_edit_profile' => 'Upravit profil',
+ 'users_avatar' => 'Obrázek uživatele',
+ 'users_avatar_desc' => 'Zvolte obrázek, který bude reprezentovat tohoto uživatele. Měl by být přibližně 256px velký ve tvaru čtverce.',
+ 'users_preferred_language' => 'Preferovaný jazyk',
+ 'users_preferred_language_desc' => 'Tato volba ovlivní pouze jazyk používaný v uživatelském rozhraní aplikace. Volba nemá vliv na žádný uživateli vytvářený obsah.',
+ 'users_social_accounts' => 'Sociální účty',
+ 'users_social_accounts_desc' => 'Zobrazit stav připojených sociálních účtů tohoto uživatele. Sociální účty mohou být použity pro přístup do systému vedle hlavního systému ověřování.',
+ 'users_social_accounts_info' => 'Zde můžete přidat vaše účty ze sociálních sítí pro pohodlnější přihlašování. Odpojení účtů neznamená, že tato aplikace ztratí práva číst detaily z vašeho účtu. Zakázat této aplikaci přístup k detailům vašeho účtu musíte přímo ve svém profilu na dané sociální síti.',
+ 'users_social_connect' => 'Připojit účet',
+ 'users_social_disconnect' => 'Odpojit účet',
+ 'users_social_status_connected' => 'Připojeno',
+ 'users_social_status_disconnected' => 'Odpojeno',
+ 'users_social_connected' => 'Účet :socialAccount byl připojen k vašemu profilu.',
+ 'users_social_disconnected' => 'Účet :socialAccount byl odpojen od vašeho profilu.',
+ 'users_api_tokens' => 'API Tokeny',
+ 'users_api_tokens_desc' => 'Vytvořte a spravujte přístupové tokeny používané pro ověření k REST API aplikace BookStack. Oprávnění pro API jsou spravována prostřednictvím uživatele, kterému token patří.',
+ 'users_api_tokens_none' => 'Tento uživatel nemá vytvořené žádné API Tokeny',
+ 'users_api_tokens_create' => 'Vytvořit Token',
+ 'users_api_tokens_expires' => 'Vyprší',
+ 'users_api_tokens_docs' => 'Dokumentace API',
+ 'users_mfa' => 'Vícefázové ověření',
+ 'users_mfa_desc' => 'Nastavit vícefaktorové ověřování jako další vrstvu zabezpečení vašeho uživatelského účtu.',
+ 'users_mfa_x_methods' => ':count nastavená metoda|:count nastavených metod',
+ 'users_mfa_configure' => 'Konfigurovat metody',
+
+ // API Tokens
+ 'user_api_token_create' => 'Vytvořit API Token',
+ 'user_api_token_name' => 'Název',
+ 'user_api_token_name_desc' => 'Zadejte srozumitelný název tokenu, který vám později může pomoci připomenout účel, za jakým jste token vytvářeli.',
+ 'user_api_token_expiry' => 'Platný do',
+ 'user_api_token_expiry_desc' => 'Zadejte datum, kdy platnost tokenu vyprší. Po tomto datu nebudou požadavky, které používají tento token, fungovat. Pokud ponecháte pole prázdné, bude tokenu nastavena platnost na dalších 100 let.',
+ 'user_api_token_create_secret_message' => 'Ihned po vytvoření tokenu Vám bude vygenerován a zobrazen "Token ID" a "Token Secret". Upozorňujeme, že "Token Secret" bude možné zobrazit pouze jednou, ujistěte se, že si jej poznamenáte a uložíte na bezpečné místo před tím, než budete pokračovat dále.',
+ 'user_api_token' => 'API Token',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'Toto je neupravitelný systémový identifikátor generovaný pro tento Token, který musí být uveden v API requestu.',
+ 'user_api_token_secret' => 'Token Secret',
+ 'user_api_token_secret_desc' => 'Toto je systémem generovaný "Secret" pro tento Token, který musí být v API requestech. Toto bude zobrazeno pouze jednou, takže si uložte tuto hodnotu na bezpečné místo.',
+ 'user_api_token_created' => 'Token vytvořen :timeAgo',
+ 'user_api_token_updated' => 'Token aktualizován :timeAgo',
+ 'user_api_token_delete' => 'Odstranit Token',
+ 'user_api_token_delete_warning' => 'Tímto plně odstraníte tento API Token s názvem \':tokenName\' ze systému.',
+ 'user_api_token_delete_confirm' => 'Opravdu chcete odstranit tento API Token?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooky',
+ 'webhooks_index_desc' => 'Webhooks jsou způsob, jak odeslat data na externí URL, pokud se vyskytnou určité akce a události v systému, které umožňují integraci událostí s externími platformami, jako jsou systémy zasílání zpráv nebo oznámení.',
+ 'webhooks_x_trigger_events' => '1 spouštěcí událost|:count spouštěcích událostí',
+ 'webhooks_create' => 'Vytvořit nový webhook',
+ 'webhooks_none_created' => 'Žádné webhooky nebyly doposud vytvořeny.',
+ 'webhooks_edit' => 'Upravit webhook',
+ 'webhooks_save' => 'Uložit webhook',
+ 'webhooks_details' => 'Podrobnosti webhooku',
+ 'webhooks_details_desc' => 'Zadejte uživatelsky přívětivé jméno a koncový bod POST jako umístění pro zasílání dat webhooku.',
+ 'webhooks_events' => 'Události webhooku',
+ 'webhooks_events_desc' => 'Vyberte všechny události, které by měly spustit tento webhook pro volání.',
+ 'webhooks_events_warning' => 'Mějte na paměti, že tyto události budou spouštěny pro všechny vybrané události, i když budou použita vlastní oprávnění. Zajistěte, aby používání tohoto webového háčku nezobrazovalo důvěrné obsahy.',
+ 'webhooks_events_all' => 'Všechny události systému',
+ 'webhooks_name' => 'Název webhooku',
+ 'webhooks_timeout' => 'Časový limit požadavku Webhook (sekundy)',
+ 'webhooks_endpoint' => 'Koncový bod webhooku',
+ 'webhooks_active' => 'Webhook aktivní',
+ 'webhook_events_table_header' => 'Události',
+ 'webhooks_delete' => 'Odstranit webhook',
+ 'webhooks_delete_warning' => 'Webhook s názvem \':webhookName\' bude úplně odstraněn ze systému.',
+ 'webhooks_delete_confirm' => 'Opravdu chcete odstranit tento webhook?',
+ 'webhooks_format_example' => 'Příklad formátu webhooku',
+ 'webhooks_format_example_desc' => 'Webový háček je odesílán jako POST požadavek na konfigurovaný koncový bod ve formátu JSON ve formátu níže. Vlastnosti "related_item" a "url" jsou volitelné a budou záviset na typu události spuštěné.',
+ 'webhooks_status' => 'Stav webhooku',
+ 'webhooks_last_called' => 'Poslední volání:',
+ 'webhooks_last_errored' => 'Poslední chyba:',
+ 'webhooks_last_error_message' => 'Poslední chybová zpráva',
+
+ // Licensing
+ 'licenses' => 'Licence',
+ 'licenses_desc' => 'Na této stránce naleznete kromě informací o projektech a knihovnách, které se v rámci BookStacku používají, také informace o licencích pro BookStack. Mnoho uvedených projektů lze používat pouze ve vývojovém kontextu.',
+ 'licenses_bookstack' => 'BookStack licence',
+ 'licenses_php' => 'Licence PHP knihoven',
+ 'licenses_js' => 'Licence JavaScript knihoven',
+ 'licenses_other' => 'Ostatní licence',
+ 'license_details' => 'Podrobnosti o licenci',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/cs/validation.php b/lang/cs/validation.php
new file mode 100644
index 00000000000..d14c24d60bb
--- /dev/null
+++ b/lang/cs/validation.php
@@ -0,0 +1,123 @@
+ ':attribute musí být přijat.',
+ 'active_url' => ':attribute není platnou URL adresou.',
+ 'after' => ':attribute musí být datum po :date.',
+ 'alpha' => ':attribute může obsahovat pouze písmena.',
+ 'alpha_dash' => ':attribute může obsahovat pouze písmena, číslice, pomlčky a podtržítka. České znaky (á, é, í, ó, ú, ů, ž, š, č, ř, ď, ť, ň) nejsou podporovány.',
+ 'alpha_num' => ':attribute může obsahovat pouze písmena a číslice.',
+ 'array' => ':attribute musí být pole.',
+ 'backup_codes' => 'Zadaný kód není platný nebo již byl použit.',
+ 'before' => ':attribute musí být datum před :date.',
+ 'between' => [
+ 'numeric' => ':attribute musí být hodnota mezi :min a :max.',
+ 'file' => ':attribute musí být větší než :min a menší než :max Kilobytů.',
+ 'string' => ':attribute musí být delší než :min a kratší než :max znaků.',
+ 'array' => ':attribute musí obsahovat nejméně :min a nesmí obsahovat více než :max prvků.',
+ ],
+ 'boolean' => ':attribute musí být true nebo false',
+ 'confirmed' => ':attribute nesouhlasí.',
+ 'date' => ':attribute musí být platné datum.',
+ 'date_format' => ':attribute není platný formát data podle :format.',
+ 'different' => ':attribute a :other se musí lišit.',
+ 'digits' => ':attribute musí být :digits pozic dlouhé.',
+ 'digits_between' => ':attribute musí být dlouhé nejméně :min a nejvíce :max pozic.',
+ 'email' => ':attribute není platný formát.',
+ 'ends_with' => ':attribute musí končit jednou z následujících hodnot: :values',
+ 'file' => ':attribute musí být zadán jako platný soubor.',
+ 'filled' => ':attribute musí být vyplněno.',
+ 'gt' => [
+ 'numeric' => ':attribute musí být větší než :value.',
+ 'file' => 'Velikost souboru :attribute musí být větší než :value kB.',
+ 'string' => 'Počet znaků :attribute musí být větší :value.',
+ 'array' => 'Pole :attribute musí mít více prvků než :value.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute musí být větší nebo rovno :value.',
+ 'file' => 'Velikost souboru :attribute musí být větší nebo rovno :value kB.',
+ 'string' => 'Počet znaků :attribute musí být větší nebo rovno :value.',
+ 'array' => 'Pole :attribute musí mít :value prvků nebo více.',
+ ],
+ 'exists' => 'Zvolená hodnota pro :attribute není platná.',
+ 'image' => ':attribute musí být obrázek.',
+ 'image_extension' => ':attribute musí mít platné a podporované rozšíření obrázku.',
+ 'in' => 'Zvolená hodnota pro :attribute je neplatná.',
+ 'integer' => ':attribute musí být celé číslo.',
+ 'ip' => ':attribute musí být platnou IP adresou.',
+ 'ipv4' => ':attribute musí být platná IPv4 adresa.',
+ 'ipv6' => ':attribute musí být platná IPv6 adresa.',
+ 'json' => ':attribute musí být platný JSON řetězec.',
+ 'lt' => [
+ 'numeric' => ':attribute musí být menší než :value.',
+ 'file' => 'Velikost souboru :attribute musí být menší než :value kB.',
+ 'string' => ':attribute musí obsahovat méně než :value znaků.',
+ 'array' => ':attribute by měl obsahovat méně než :value položek.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute musí být menší nebo rovno :value.',
+ 'file' => 'Velikost souboru :attribute musí být menší než :value kB.',
+ 'string' => ':attribute nesmí být delší než :value znaků.',
+ 'array' => ':attribute by měl obsahovat maximálně :value položek.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute nemůže být větší než :max.',
+ 'file' => 'Velikost souboru :attribute musí být menší než :value kB.',
+ 'string' => ':attribute nemůže být delší než :max znaků.',
+ 'array' => ':attribute nemůže obsahovat více než :max prvků.',
+ ],
+ 'mimes' => ':attribute musí být jeden z následujících datových typů :values.',
+ 'min' => [
+ 'numeric' => ':attribute musí být větší než :min.',
+ 'file' => ':attribute musí být větší než :min kB.',
+ 'string' => ':attribute musí být delší než :min znaků.',
+ 'array' => ':attribute musí obsahovat více než :min prvků.',
+ ],
+ 'not_in' => 'Zvolená hodnota pro :attribute je neplatná.',
+ 'not_regex' => ':attribute musí být regulární výraz.',
+ 'numeric' => ':attribute musí být číslo.',
+ 'regex' => ':attribute nemá správný formát.',
+ 'required' => ':attribute musí být vyplněno.',
+ 'required_if' => ':attribute musí být vyplněno pokud :other je :value.',
+ 'required_with' => ':attribute musí být vyplněno pokud :values je vyplněno.',
+ 'required_with_all' => ':attribute musí být vyplněno pokud :values je zvoleno.',
+ 'required_without' => ':attribute musí být vyplněno pokud :values není vyplněno.',
+ 'required_without_all' => ':attribute musí být vyplněno pokud není žádné z :values zvoleno.',
+ 'same' => ':attribute a :other se musí shodovat.',
+ 'safe_url' => 'Zadaný odkaz může být nebezpečný.',
+ 'size' => [
+ 'numeric' => ':attribute musí být přesně :size.',
+ 'file' => ':attribute musí mít přesně :size Kilobytů.',
+ 'string' => ':attribute musí být přesně :size znaků dlouhý.',
+ 'array' => ':attribute musí obsahovat právě :size prvků.',
+ ],
+ 'string' => ':attribute musí být řetězec znaků.',
+ 'timezone' => ':attribute musí být platná časová zóna.',
+ 'totp' => 'Zadaný kód je neplatný nebo vypršel.',
+ 'unique' => ':attribute musí být unikátní.',
+ 'url' => 'Formát :attribute je neplatný.',
+ 'uploaded' => 'Nahrávání :attribute se nezdařilo.',
+
+ 'zip_file' => ':attribute musí odkazovat na soubor v archivu ZIP.',
+ 'zip_file_size' => 'Soubor :attribute nesmí překročit :size MB.',
+ 'zip_file_mime' => ':attribute musí odkazovat na soubor typu :validTypes, nalezen :foundType.',
+ 'zip_model_expected' => 'Očekáván datový objekt, ale nalezen „:type“.',
+ 'zip_unique' => ':attribute musí být jedinečný pro typ objektu v archivu ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Je nutné potvrdit heslo',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/cy/activities.php b/lang/cy/activities.php
new file mode 100644
index 00000000000..2459f2357f5
--- /dev/null
+++ b/lang/cy/activities.php
@@ -0,0 +1,140 @@
+ 'creodd dudalen',
+ 'page_create_notification' => 'Tudalen wedi\'i chreu\'n llwyddiannus',
+ 'page_update' => 'diweddarodd dudalen',
+ 'page_update_notification' => 'Tudalen wedi\'i diweddaru\'n llwyddiannus',
+ 'page_delete' => 'dileodd dudalen',
+ 'page_delete_notification' => 'Tudalen wedi\'i dileu\'n llwyddiannus',
+ 'page_restore' => 'adferodd dudalen',
+ 'page_restore_notification' => 'Tudalen wedi\'i hadfer yn llwyddiannus',
+ 'page_move' => 'symydodd dudalen',
+ 'page_move_notification' => 'Tudalen wedi\'i symud yn llwyddianus',
+
+ // Chapters
+ 'chapter_create' => 'creodd bennod',
+ 'chapter_create_notification' => 'Pennod wedi\'i chreu\'n llwyddiannus',
+ 'chapter_update' => 'pennod wedi diweddaru',
+ 'chapter_update_notification' => 'Pennod wedi\'i diweddaru\'n llwyddiannus',
+ 'chapter_delete' => 'pennod wedi dileu',
+ 'chapter_delete_notification' => 'Pennod wedi\'i dileu\'n llwyddiannus',
+ 'chapter_move' => 'pennod wedi symud',
+ 'chapter_move_notification' => 'Pennod wedi\'i symud yn llwyddianus',
+
+ // Books
+ 'book_create' => 'llyfr wedi creu',
+ 'book_create_notification' => 'Llyfr wedi\'i creu\'n llwyddiannus',
+ 'book_create_from_chapter' => 'trosodd bennod i lyfr',
+ 'book_create_from_chapter_notification' => 'Pennod wedi\'i trosi\'n llwyddiannus i lyfr',
+ 'book_update' => 'llyfr wedi diweddaru',
+ 'book_update_notification' => 'Llyfr wedi\'i diweddaru\'n llwyddiannus',
+ 'book_delete' => 'llyfr wedi\'i dileu',
+ 'book_delete_notification' => 'Cafodd y llyfr ei dileu yn llwyddiannus',
+ 'book_sort' => 'llyfr wedi\'i ddidoli',
+ 'book_sort_notification' => 'Ail-archebwyd y llyfr yn llwyddiannus',
+
+ // Bookshelves
+ 'bookshelf_create' => 'creodd silff',
+ 'bookshelf_create_notification' => 'Silff wedi\'i chreu\'n llwyddiannus',
+ 'bookshelf_create_from_book' => 'trosodd lyfr i silff',
+ 'bookshelf_create_from_book_notification' => 'Llyfr wedi\'i trosi\'n llwyddiannus i silff',
+ 'bookshelf_update' => 'diweddarodd silff',
+ 'bookshelf_update_notification' => 'Silff wedi\'i diweddaru\'n llwyddiannus',
+ 'bookshelf_delete' => 'dileodd silff',
+ 'bookshelf_delete_notification' => 'Silff wedi\'i dileu\'n llwyddiannus',
+
+ // Revisions
+ 'revision_restore' => 'adferodd y diwygiad',
+ 'revision_delete' => 'dileuodd y diwygiad',
+ 'revision_delete_notification' => 'Diwygiad wedi\'i dileu\'n llwyddiannus',
+
+ // Favourites
+ 'favourite_add_notification' => 'Mae ":name" wedi\'i ychwanegu at eich ffefrynnau',
+ 'favourite_remove_notification' => 'Mae ":name" wedi\'i tynnu o\'ch ffefrynnau',
+
+ // Watching
+ 'watch_update_level_notification' => 'Dewisiadau gwylio wedi’u diweddaru\'n llwyddiannus',
+
+ // Auth
+ 'auth_login' => 'wedi\'u mewngofnodi',
+ 'auth_register' => 'wedi\'i cofrestru\'n ddefnyddiwr newydd',
+ 'auth_password_reset_request' => 'wedi ceisio ailosod gair pass defnyddiwr',
+ 'auth_password_reset_update' => 'ailosododd air pass defnyddiwr',
+ 'mfa_setup_method' => 'Dull Dilysu Aml-ffactor wedi’i ffurfweddu',
+ 'mfa_setup_method_notification' => 'Dull aml-ffactor wedi\'i ffurfweddu\'n llwyddiannus',
+ 'mfa_remove_method' => 'Dull Dilysu Aml-ffactor wedi\'i ddileu',
+ 'mfa_remove_method_notification' => 'Llwyddwyd i ddileu dull aml-ffactor',
+
+ // Settings
+ 'settings_update' => 'diweddarodd osodiadau',
+ 'settings_update_notification' => 'Gosodiadau wedi\'i diweddaru\'n llwyddiannus',
+ 'maintenance_action_run' => 'rhedeg gweithred cynnal a chadw',
+
+ // Webhooks
+ 'webhook_create' => 'webhook wedi creu',
+ 'webhook_create_notification' => 'Webhook wedi\'i creu\'n llwyddiannus',
+ 'webhook_update' => 'webhook wedi\'i diweddaru',
+ 'webhook_update_notification' => 'Webhook wedi\'i diweddaru\'n llwyddiannus',
+ 'webhook_delete' => 'webhook wedi\'i dileu',
+ 'webhook_delete_notification' => 'Webhook wedi\'i dileu\'n llwyddiannus',
+
+ // Imports
+ 'import_create' => 'creodd fewnforyn',
+ 'import_create_notification' => 'Mewnforyn wedi\'i lwytho i fyny\'n llwyddiannus',
+ 'import_run' => 'diweddarodd fewnforyn',
+ 'import_run_notification' => 'Cynnwys wedi\'i fewnforio\'n llwyddiannus',
+ 'import_delete' => 'dileodd fewnforyn',
+ 'import_delete_notification' => 'Mewnforyn wedi\'i ddileu\'n llwyddiannus',
+
+ // Users
+ 'user_create' => 'creodd ddefnyddiwr',
+ 'user_create_notification' => 'Defnyddiwr wedi\'i greu\'n llwyddiannus',
+ 'user_update' => 'diweddarodd ddefnyddiwr',
+ 'user_update_notification' => 'Diweddarwyd y defnyddiwr yn llwyddiannus',
+ 'user_delete' => 'dileodd ddefnyddiwr',
+ 'user_delete_notification' => 'Tynnwyd y defnyddiwr yn llwyddiannus',
+
+ // API Tokens
+ 'api_token_create' => 'creodd docyn API',
+ 'api_token_create_notification' => 'Tocyn API wedi\'i greu\'n llwyddiannus',
+ 'api_token_update' => 'diweddarodd docyn API',
+ 'api_token_update_notification' => 'Tocyn API wedi\'i ddiweddaru\'n llwyddiannus',
+ 'api_token_delete' => 'dileodd docyn API',
+ 'api_token_delete_notification' => 'Tocyn API wedi\'i ddileu\'n llwyddiannus',
+
+ // Roles
+ 'role_create' => 'creodd rôl',
+ 'role_create_notification' => 'Rôl wedi\'i creu\'n llwyddiannus',
+ 'role_update' => 'diweddarodd rôl',
+ 'role_update_notification' => 'Rôl wedi\'i diweddaru\'n llwyddiannus',
+ 'role_delete' => 'dileodd rôl',
+ 'role_delete_notification' => 'Rôl wedi\'i dileu\'n llwyddiannus',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'gwagodd fin ailgylchu',
+ 'recycle_bin_restore' => 'wedi\'i adfer o\'r bin ailgylchu',
+ 'recycle_bin_destroy' => 'symudwyd o’r bin ailgylchu',
+
+ // Comments
+ 'commented_on' => 'gwnaeth sylwadau ar',
+ 'comment_create' => 'ychwanegodd sylw',
+ 'comment_update' => 'diweddarodd sylw',
+ 'comment_delete' => 'dileodd sylw',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'caniatadau wedi\'u diweddaru',
+];
diff --git a/lang/cy/auth.php b/lang/cy/auth.php
new file mode 100644
index 00000000000..5c4034fcdd4
--- /dev/null
+++ b/lang/cy/auth.php
@@ -0,0 +1,117 @@
+ 'Nid yw\'r manylion hyn yn cyfateb i\'n cofnodion.',
+ 'throttle' => 'Gormod o ymdrechion mewngofnodi. Rhowch gynnig arall arni o gwmpas :seconds eiliadau.',
+
+ // Login & Register
+ 'sign_up' => 'Cofrestru',
+ 'log_in' => 'Mewngofnodi',
+ 'log_in_with' => 'Mewngofnodi efo :socialDriver',
+ 'sign_up_with' => 'Cofrestru efo :socialDriver',
+ 'logout' => 'Allgofnodi',
+
+ 'name' => 'Enw',
+ 'username' => 'Enw defnyddiwr',
+ 'email' => 'Ebost',
+ 'password' => 'Cyfrinair',
+ 'password_confirm' => 'Cadarnhau cyfrinair',
+ 'password_hint' => 'Rhaid bod o leiaf 8 nod',
+ 'forgot_password' => 'Wedi anghofio cyfrinair?',
+ 'remember_me' => 'Cofiwch fi',
+ 'ldap_email_hint' => 'Rhowch e-bost i\'w ddefnyddio ar gyfer y cyfrif hwn.',
+ 'create_account' => 'Creu cyfrif',
+ 'already_have_account' => 'Oes gennych chi gyfrif yn barod?',
+ 'dont_have_account' => 'Dim cyfrif?',
+ 'social_login' => 'Mewngofnodi cymdeithasol',
+ 'social_registration' => 'Cofrestru cymdeithasol',
+ 'social_registration_text' => 'Cofrestru a mewngofnodi gan ddefnyddio dyfais arall.',
+
+ 'register_thanks' => 'Diolch am cofrestru!',
+ 'register_confirm' => 'Gwiriwch eich e-bost a chliciwch ar y botwm cadarnhau i gael mynediad i: appName.',
+ 'registrations_disabled' => 'Mae cofrestriadau wedi\'u hanalluogi ar hyn o bryd',
+ 'registration_email_domain_invalid' => 'Nid oes gan y parth e-bost hwnnw fynediad i\'r rhaglen hon',
+ 'register_success' => 'Diolch am arwyddo! Rydych bellach wedi cofrestru ac wedi mewngofnodi.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Wrthi\'n ceisio mewngofnodi',
+ 'auto_init_starting_desc' => 'Rydym yn cysylltu â\'ch system ddilysu i ddechrau\'r broses fewngofnodi. Os nad oes cynnydd ar ôl 5 eiliad, gallwch geisio clicio ar y ddolen isod.',
+ 'auto_init_start_link' => 'Parhau gyda dilysu',
+
+ // Password Reset
+ 'reset_password' => 'Ailosod cyfrinair',
+ 'reset_password_send_instructions' => 'Rhowch eich e-bost isod ac anfonir e-bost atoch gyda dolen ailosod cyfrinair.',
+ 'reset_password_send_button' => 'Anfon Dolen Ailosod',
+ 'reset_password_sent' => 'Bydd dolen ailosod cyfrinair yn cael ei hanfon at :email os ceir hyd i’r cyfeiriad e-bost hwn yn y system.',
+ 'reset_password_success' => 'Mae eich cyfrinair wedi\'i ailosod yn llwyddiannus.',
+ 'email_reset_subject' => 'Ailosod eich gair pass :appName',
+ 'email_reset_text' => 'Anfonwyd yr e-bost hwn atoch oherwydd ein bod wedi cael cais ailosod cyfrinair ar gyfer eich cyfrif.',
+ 'email_reset_not_requested' => 'Os nad oeddwch chi\'n ceisio ailosod eich gair pass, does dim byd arall i wneud.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Cadarnhewch eich e-bost chi a :appName',
+ 'email_confirm_greeting' => 'Diolch am ymuno â :appName!',
+ 'email_confirm_text' => 'Os gwelwch yn dda cadarnhewch eich e-bost chi gan clicio ar y botwm isod:',
+ 'email_confirm_action' => 'Cadarnhau E-bost',
+ 'email_confirm_send_error' => 'Mae angen cadarnhad e-bost ond ni allai\'r system anfon yr e-bost. Cysylltwch â\'r gweinyddwr i sicrhau bod yr e-bost wedi\'i osod yn gywir.',
+ 'email_confirm_success' => 'Mae eich e-bost wedi\'i gadarnhau! Dylech nawr allu mewngofnodi gan ddefnyddio\'r cyfeiriad e-bost hwn.',
+ 'email_confirm_resent' => 'Ail-anfonwyd cadarnhad e-bost, gwiriwch eich mewnflwch.',
+ 'email_confirm_thanks' => 'Diolch am gadarnhau!',
+ 'email_confirm_thanks_desc' => 'Arhoswch eiliad wrth i’ch cadarnhad gael ei drin. Os na chewch eich ailgyfeirio ar ôl 3 eiliad, pwyswch y ddolen "Parhau" isod i symud ymlaen.',
+
+ 'email_not_confirmed' => 'Cyfeiriad E-bost heb ei Gadarnhau',
+ 'email_not_confirmed_text' => 'Dyw eich cyfeiriad e-bost chi ddim wedi cael ei gadarnhau eto.',
+ 'email_not_confirmed_click_link' => 'Cliciwch ar y ddolen yn yr e-bost a anfonwyd yn fuan ar ôl i chi gofrestru.',
+ 'email_not_confirmed_resend' => 'Os na allwch ddod o hyd i\'r e-bost, gallwch ail-anfon yr e-bost cadarnhad trwy gyflwyno\'r ffurflen isod.',
+ 'email_not_confirmed_resend_button' => 'Ail-anfon E-bost Cadarnhad',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Rydych chi wedi cael gwahoddiad i ymuno :appName!',
+ 'user_invite_email_greeting' => 'Mae cyfrif wedi cae ei greu i chi ar :appName.',
+ 'user_invite_email_text' => 'Cliciwch ar y botwm isod i osod cyfrinair cyfrif a chael mynediad:',
+ 'user_invite_email_action' => 'Gosod Cyfrinair Cyfrif',
+ 'user_invite_page_welcome' => 'Croeso i :appName!',
+ 'user_invite_page_text' => 'I gwblhau eich cyfrif a chael mynediad mae angen i chi osod cyfrinair a fydd yn cael ei ddefnyddio i fewngofnodi i :appName ar ymweliadau yn y dyfodol.',
+ 'user_invite_page_confirm_button' => 'Cadarnhau cyfrinair',
+ 'user_invite_success_login' => 'Cyfrinair wedi’i osod, dylech nawr allu mewngofnodi gan ddefnyddio\'r cyfrinair a osodwyd i gael mynediad i :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Gosod Dilysu Aml-Ffactor',
+ 'mfa_setup_desc' => 'Gosod dilysu aml-ffactor fel haen ychwanegol o ddiogelwch ar gyfer eich cyfrif defnyddiwr.',
+ 'mfa_setup_configured' => 'Wedi\'i ail-ffurfweddu\'n barod',
+ 'mfa_setup_reconfigure' => 'Ail-ffurfweddu',
+ 'mfa_setup_remove_confirmation' => 'Ydych chi\'n siŵr eich bod am gael gwared ar y dull dilysu aml-ffactor hwn?',
+ 'mfa_setup_action' => 'Gosodiad',
+ 'mfa_backup_codes_usage_limit_warning' => 'Mae gennych lai na 5 cod wrth gefn yn weddill, crëwch a storio cyfres newydd cyn i chi redeg allan o godau i osgoi cael eich cloi allan o\'ch cyfrif.',
+ 'mfa_option_totp_title' => 'Ap Ffôn Symudol',
+ 'mfa_option_totp_desc' => 'I ddefnyddio dilysu aml-ffactor bydd angen dyfais symudol arnoch sy\'n cefnogi TOTP megis Google Authenticator, Authy neu Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Codau wrth Gefn',
+ 'mfa_option_backup_codes_desc' => 'Mae’n cynhyrchu cyfres o godau wrth gefn un-amser y byddwch chi\'n eu defnyddio i fewngofnodi i wirio pwy ydych chi. Gwnewch yn siŵr eich bod yn storio\'r rhain mewn lle saff a diogel.',
+ 'mfa_gen_confirm_and_enable' => 'Cadarnhau a Galluogi',
+ 'mfa_gen_backup_codes_title' => 'Gosodiad Codau wrth Gefn',
+ 'mfa_gen_backup_codes_desc' => 'Storiwch y rhestr isod o godau mewn lle diogel. Wrth ddefnyddio’r system bydd modd i chi ddefnyddio un o\'r codau fel ail fecanwaith dilysu.',
+ 'mfa_gen_backup_codes_download' => 'Llwytho Codau i Lawr',
+ 'mfa_gen_backup_codes_usage_warning' => 'Gellir defnyddio pob cod unwaith yn unig',
+ 'mfa_gen_totp_title' => 'Gosod Ap Symudol',
+ 'mfa_gen_totp_desc' => 'I ddefnyddio dilysu aml-ffactor bydd angen dyfais symudol arnoch sy\'n cefnogi TOTP megis Google Authenticator, Authy neu Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Sganiwch y cod QR isod gan ddefnyddio\'ch ap dilysu dewisol i ddechrau.',
+ 'mfa_gen_totp_verify_setup' => 'Gwirio Gosodiad',
+ 'mfa_gen_totp_verify_setup_desc' => 'Gwiriwch fod popeth yn gweithio trwy roi cod, a gynhyrchwyd gan eich ap dilysu, yn y blwch mewnbwn isod:',
+ 'mfa_gen_totp_provide_code_here' => 'Rhowch y cod a gynhyrchwyd gan eich ap yma',
+ 'mfa_verify_access' => 'Gwirio Mynediad',
+ 'mfa_verify_access_desc' => 'Mae eich cyfrif defnyddiwr yn gofyn i chi gadarnhau pwy ydych chi trwy lefel ychwanegol o ddilysu cyn i chi gael mynediad. Gwiriwch gan ddefnyddio un o\'ch dulliau ffurfweddu i barhau.',
+ 'mfa_verify_no_methods' => 'Dim Dulliau wedi\'u Ffurfweddu',
+ 'mfa_verify_no_methods_desc' => 'Ni ellid dod o hyd i unrhyw ddulliau dilysu aml-ffactor ar gyfer eich cyfrif. Bydd angen i chi osod o leiaf un dull cyn i chi gael mynediad.',
+ 'mfa_verify_use_totp' => 'Gwirio gan ap ffôn',
+ 'mfa_verify_use_backup_codes' => 'Gwirio gan god wrth gefn',
+ 'mfa_verify_backup_code' => 'Cod wrth Gefn',
+ 'mfa_verify_backup_code_desc' => 'Rhowch un o\'ch codau wrth gefn sy\'n weddill isod:',
+ 'mfa_verify_backup_code_enter_here' => 'Cofnodi cod wrth gefn yma',
+ 'mfa_verify_totp_desc' => 'Rhowch y cod, a gynhyrchwyd gan ddefnyddio\'ch ap symudol, isod:',
+ 'mfa_setup_login_notification' => 'Dull aml-ffactor wedi\'i ffurfweddu, nawr mewngofnodwch eto gan ddefnyddio\'r dull wedi\'i ffurfweddu.',
+];
diff --git a/lang/cy/common.php b/lang/cy/common.php
new file mode 100644
index 00000000000..b42e0d44b19
--- /dev/null
+++ b/lang/cy/common.php
@@ -0,0 +1,115 @@
+ 'Canslo',
+ 'close' => 'Cau',
+ 'confirm' => 'Cadarnhau',
+ 'back' => 'Yn ôl',
+ 'save' => 'Cadw',
+ 'continue' => 'Parhau',
+ 'select' => 'Dewis',
+ 'toggle_all' => 'Toglo Popeth',
+ 'more' => 'Mwy',
+
+ // Form Labels
+ 'name' => 'Enw',
+ 'description' => 'Disgrifiad',
+ 'role' => 'Rôl',
+ 'cover_image' => 'Delwedd y clawr',
+ 'cover_image_description' => 'Dylai\'r ddelwedd hon fod oddeutu 440x250px er y bydd wedi\'i graddio a’i thocio i ffitio rhyngwyneb y defnyddiwr mewn gwahanol senarios yn ôl yr angen, felly bydd y dimensiynau arddangos gwirioneddol yn amrywio.',
+
+ // Actions
+ 'actions' => 'Gweithredoedd',
+ 'view' => 'Gweld',
+ 'view_all' => 'Gweld popeth',
+ 'new' => 'Newydd',
+ 'create' => 'Creu',
+ 'update' => 'Diweddaru',
+ 'edit' => 'Golygu',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Trefnu',
+ 'move' => 'Symud',
+ 'copy' => 'Copïo',
+ 'reply' => 'Ateb',
+ 'delete' => 'Dileu',
+ 'delete_confirm' => 'Cadarnhau\'r dilead',
+ 'search' => 'Chwilio',
+ 'search_clear' => 'Clirio\'r chwiliad',
+ 'reset' => 'Ailosod',
+ 'remove' => 'Diddymu',
+ 'add' => 'Ychwanegu',
+ 'configure' => 'Ffurfweddu',
+ 'manage' => 'Rheoli',
+ 'fullscreen' => 'Sgrin Llawn',
+ 'favourite' => 'Gwneud Ffefryn',
+ 'unfavourite' => 'Dadwneud Ffefryn',
+ 'next' => 'Nesa',
+ 'previous' => 'Cynt',
+ 'filter_active' => 'Hidl weithredol:',
+ 'filter_clear' => 'Clirio\'r hidl',
+ 'download' => 'Llwytho i lawr',
+ 'open_in_tab' => 'Agor mewn Tab',
+ 'open' => 'Agor',
+
+ // Sort Options
+ 'sort_options' => 'Trefnu\'r opsiynau',
+ 'sort_direction_toggle' => 'Trefnu Cyfeiriad Togl',
+ 'sort_ascending' => 'Trefnu\'n esgynnol',
+ 'sort_descending' => 'Trefnu\'n ddisgynnol',
+ 'sort_name' => 'Enw',
+ 'sort_default' => 'Diofyn',
+ 'sort_created_at' => 'Dyddiad Creu',
+ 'sort_updated_at' => 'Dyddiad Diweddaru',
+
+ // Misc
+ 'deleted_user' => 'Defnyddiwr wedi\'i Dileu',
+ 'no_activity' => 'Dim actifedd i arddangos',
+ 'no_items' => 'Dim eitemau ar gael',
+ 'back_to_top' => 'Yn ôl i\'r brig',
+ 'skip_to_main_content' => 'Neidio i\'r prif gynnwys',
+ 'toggle_details' => 'Toglo Manylion',
+ 'toggle_thumbnails' => 'Toglo Mân-Luniau',
+ 'details' => 'Manylion',
+ 'grid_view' => 'Golwg Grid',
+ 'list_view' => 'Golwg Rhestr',
+ 'default' => 'Diofyn',
+ 'breadcrumb' => 'Briwsion bara',
+ 'status' => 'Statws',
+ 'status_active' => 'Gweithredol',
+ 'status_inactive' => 'Anweithredol',
+ 'never' => 'Byth',
+ 'none' => 'Dim un',
+
+ // Header
+ 'homepage' => 'Tudalen cartref',
+ 'header_menu_expand' => 'Ehangu Dewislen Pennawd',
+ 'profile_menu' => 'Dewislen Proffil',
+ 'view_profile' => 'Gweld proffil',
+ 'edit_profile' => 'Golygu Proffil',
+ 'dark_mode' => 'Modd Tywyll',
+ 'light_mode' => 'Modd Golau',
+ 'global_search' => 'Chwilio Byd-eang',
+
+ // Layout tabs
+ 'tab_info' => 'Gwybodaeth',
+ 'tab_info_label' => 'Tab: Dangos Gwybodaeth Eilaidd',
+ 'tab_content' => 'Cynnwys',
+ 'tab_content_label' => 'Tab: Dangos Prif Gynnwys',
+
+ // Email Content
+ 'email_action_help' => 'Os ydych chi\'n cael trafferth clicio ar y botwm ":actionText", copïwch a gludwch yr URL isod i\'ch porwr gwe:',
+ 'email_rights' => 'Cedwir pob hawl',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Polisi Preifatrwydd',
+ 'terms_of_service' => 'Telerau Gwasanaeth',
+
+ // OpenSearch
+ 'opensearch_description' => 'Chwilio :appName',
+];
diff --git a/lang/cy/components.php b/lang/cy/components.php
new file mode 100644
index 00000000000..84ddbb5e643
--- /dev/null
+++ b/lang/cy/components.php
@@ -0,0 +1,46 @@
+ 'Dewis Llun',
+ 'image_list' => 'Rhestr o Ddelweddau',
+ 'image_details' => 'Manylion Delwedd',
+ 'image_upload' => 'Uwchlwytho Llun',
+ 'image_intro' => 'Yma gallwch ddewis a rheoli lluniau sydd wedi\'u huwchlwytho i’r system o’r blaen.',
+ 'image_intro_upload' => 'Uwchlwythwch lun newydd drwy lusgo ffeil llun i\'r ffenestr hon, neu drwy ddefnyddio\'r botwm "Uwchlwytho Llun" uchod.',
+ 'image_all' => 'Popeth',
+ 'image_all_title' => 'Gweld holl ddelweddau',
+ 'image_book_title' => 'Gweld lluniau a uwchlwythwyd i’r llyfr hwn',
+ 'image_page_title' => 'Gweld lluniau a uwchlwythwyd i’r dudalen hon',
+ 'image_search_hint' => 'Cwilio gan enw delwedd',
+ 'image_uploaded' => 'Uwchlwythwyd am :uploadedDate',
+ 'image_uploaded_by' => 'Uwchlwythwyd gan :userName',
+ 'image_uploaded_to' => 'Uwchlwythwyd i :pageLink',
+ 'image_updated' => 'Diweddarwyd am :updateDate',
+ 'image_load_more' => 'Llwytho Mwy',
+ 'image_image_name' => 'Enw Delwedd',
+ 'image_delete_used' => 'Mae\'r llun hwn yn cael ei ddefnyddio ar y tudalennau isod.',
+ 'image_delete_confirm_text' => 'Wyt ti\'n bendant eisiau dileu\'r ddelwedd hwn?',
+ 'image_select_image' => 'Dewis Llun',
+ 'image_dropzone' => 'Gollyngwch luniau neu cliciwch yma i uwchlwytho',
+ 'image_dropzone_drop' => 'Gollyngwch luniau yma i uwchlwytho',
+ 'images_deleted' => 'Delweddau wedi\'u Dileu',
+ 'image_preview' => 'Rhagolwg o’r Llun',
+ 'image_upload_success' => 'Uwchlwythwyd y llun yn llwyddiannus',
+ 'image_update_success' => 'Diweddarwyd manylion y llun yn llwyddiannus',
+ 'image_delete_success' => 'Dilëwyd y llun yn llwyddiannus',
+ 'image_replace' => 'Newid y llun',
+ 'image_replace_success' => 'Ffeil llun wedi\'i diweddaru’n llwyddiannus',
+ 'image_rebuild_thumbs' => 'Atgynhyrchu Amrywiadau Maint',
+ 'image_rebuild_thumbs_success' => 'Ailadeiladwyd amrywiadau maint y llun yn llwyddiannus!',
+
+ // Code Editor
+ 'code_editor' => 'Golygu Cod',
+ 'code_language' => 'Iaith y Cod',
+ 'code_content' => 'Cynnwys y Cod',
+ 'code_session_history' => 'Hanes y Sesiwn',
+ 'code_save' => 'Cadw Cod',
+];
diff --git a/lang/cy/editor.php b/lang/cy/editor.php
new file mode 100644
index 00000000000..980099ffd7a
--- /dev/null
+++ b/lang/cy/editor.php
@@ -0,0 +1,182 @@
+ 'Cyffredin',
+ 'advanced' => 'Datblygedig',
+ 'none' => 'Dim un',
+ 'cancel' => 'Canslo',
+ 'save' => 'Cadw',
+ 'close' => 'Cau',
+ 'apply' => 'Apply',
+ 'undo' => 'Dadwneud',
+ 'redo' => 'Ail-wneud',
+ 'left' => 'Chwith',
+ 'center' => 'Canol',
+ 'right' => 'Dde',
+ 'top' => 'Pen',
+ 'middle' => 'Canol',
+ 'bottom' => 'Gwaelod',
+ 'width' => 'Lled',
+ 'height' => 'Uchder',
+ 'More' => 'Mwy',
+ 'select' => 'Dewis...',
+
+ // Toolbar
+ 'formats' => 'Fformatau',
+ 'header_large' => 'Pennyn Mawr',
+ 'header_medium' => 'Pennyn Canolig',
+ 'header_small' => 'Pennyn Bach',
+ 'header_tiny' => 'Pennyn Mân',
+ 'paragraph' => 'Paragraff',
+ 'blockquote' => 'Dyfyniad bloc',
+ 'inline_code' => 'Cod mewnol',
+ 'callouts' => 'Galwadau',
+ 'callout_information' => 'Gwybodaeth',
+ 'callout_success' => 'Llwyddiant',
+ 'callout_warning' => 'Rhybudd',
+ 'callout_danger' => 'Perygl',
+ 'bold' => 'Trwm',
+ 'italic' => 'Italig',
+ 'underline' => 'Tanlinellu',
+ 'strikethrough' => 'Llinell Drwodd',
+ 'superscript' => 'Uwchysgrif',
+ 'subscript' => 'Isysgrif',
+ 'text_color' => 'Lliw testun',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Lliw addasu',
+ 'remove_color' => 'Dileu lliw',
+ 'background_color' => 'Lliw cefnder',
+ 'align_left' => 'Alinio i\'r chwith',
+ 'align_center' => 'Alinio i’r canol',
+ 'align_right' => 'Alinio i\'r dde',
+ 'align_justify' => 'Unioni',
+ 'list_bullet' => 'Rhestr o Bwyntiau Bwled',
+ 'list_numbered' => 'Rhestr wedi\'i rhifo',
+ 'list_task' => 'Rhestr dasgau',
+ 'indent_increase' => 'Cynyddu mewnoliad',
+ 'indent_decrease' => 'Lleihau mewnoliad',
+ 'table' => 'Bwrdd',
+ 'insert_image' => 'Mewnosod llun',
+ 'insert_image_title' => 'Mewnosod/Golygu Llun',
+ 'insert_link' => 'Mewnosod/golygu dolen',
+ 'insert_link_title' => 'Mewnosod/Golygu Dolen',
+ 'insert_horizontal_line' => 'Mewnosod llinell lorweddol',
+ 'insert_code_block' => 'Mewnosod bloc cod',
+ 'edit_code_block' => 'Golygu bloc cod',
+ 'insert_drawing' => 'Mewnosod/golygu dyluniad',
+ 'drawing_manager' => 'Rheolwr dylunio',
+ 'insert_media' => 'Mewnosod/golygu cyfryngau',
+ 'insert_media_title' => 'Mewnosod/Golygu Cyfryngau',
+ 'clear_formatting' => 'Clirio fformatio',
+ 'source_code' => 'Cod ffynhonnell',
+ 'source_code_title' => 'Cod Ffynhonnell',
+ 'fullscreen' => 'Sgrin lawn',
+ 'image_options' => 'Opsiynau llun',
+
+ // Tables
+ 'table_properties' => 'Priodweddau tabl',
+ 'table_properties_title' => 'Priodweddau Tabl',
+ 'delete_table' => 'Dileu tabl',
+ 'table_clear_formatting' => 'Clirio fformatio tabl',
+ 'resize_to_contents' => 'Newid maint i\'r cynnwys',
+ 'row_header' => 'Pennyn rhes',
+ 'insert_row_before' => 'Mewnosod rhes cyn',
+ 'insert_row_after' => 'Mewnosod rhes ar ôl',
+ 'delete_row' => 'Dileu rhes',
+ 'insert_column_before' => 'Mewnosod colofn cyn',
+ 'insert_column_after' => 'Mewnosod colofn ar ôl',
+ 'delete_column' => 'Dileu colofn',
+ 'table_cell' => 'Cell',
+ 'table_row' => 'Rhes',
+ 'table_column' => 'Colofn',
+ 'cell_properties' => 'Priodweddau cell',
+ 'cell_properties_title' => 'Priodweddau Cell',
+ 'cell_type' => 'Math o gell',
+ 'cell_type_cell' => 'Cell',
+ 'cell_scope' => 'Cwmpas',
+ 'cell_type_header' => 'Pennyn cell',
+ 'merge_cells' => 'Uno celloedd',
+ 'split_cell' => 'Hollti cell',
+ 'table_row_group' => 'Grŵp Rhes',
+ 'table_column_group' => 'Grŵp Colofn',
+ 'horizontal_align' => 'Alinio llorweddol',
+ 'vertical_align' => 'Alinio fertigol',
+ 'border_width' => 'Lled y border',
+ 'border_style' => 'Arddull y border',
+ 'border_color' => 'Lliw y border',
+ 'row_properties' => 'Priodweddau’r rhes',
+ 'row_properties_title' => 'Priodweddau’r Rhes',
+ 'cut_row' => 'Torri rhes',
+ 'copy_row' => 'Copïo rhes',
+ 'paste_row_before' => 'Gludo rhes cyn',
+ 'paste_row_after' => 'Gludo rhes ar ôl',
+ 'row_type' => 'Math o res',
+ 'row_type_header' => 'Pennyn',
+ 'row_type_body' => 'Corff',
+ 'row_type_footer' => 'Troedyn',
+ 'alignment' => 'Aliniad',
+ 'cut_column' => 'Torri colofn',
+ 'copy_column' => 'Copïo colofn',
+ 'paste_column_before' => 'Gludo colofn cyn',
+ 'paste_column_after' => 'Gludo colofn ar ôl',
+ 'cell_padding' => 'Padio cell',
+ 'cell_spacing' => 'Bylchau rhwng celloedd',
+ 'caption' => 'Pennawd',
+ 'show_caption' => 'Dangos pennawd',
+ 'constrain' => 'Cyfyngu cyfrannau',
+ 'cell_border_solid' => 'Solid',
+ 'cell_border_dotted' => 'Dotiog',
+ 'cell_border_dashed' => 'Llinell Doredig',
+ 'cell_border_double' => 'Dwbl',
+ 'cell_border_groove' => 'Rhigol',
+ 'cell_border_ridge' => 'Crib',
+ 'cell_border_inset' => 'Mewnosodiad',
+ 'cell_border_outset' => 'Cychwyniad',
+ 'cell_border_none' => 'Dim un',
+ 'cell_border_hidden' => 'Cuddiedig',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Ffynhonnell',
+ 'alt_desc' => 'Disgrifiad amgen',
+ 'embed' => 'Ymgorffori',
+ 'paste_embed' => 'Gludwch eich cod ymgorffori isod:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Testun i\'w arddangos',
+ 'title' => 'Teitl',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Agor dolen',
+ 'open_link_in' => 'Agor dolen yn...',
+ 'open_link_current' => 'Ffenestr bresennol',
+ 'open_link_new' => 'Ffenestr newydd',
+ 'remove_link' => 'Dileu dolen',
+ 'insert_collapsible' => 'Mewnosod bloc cwympadwy',
+ 'collapsible_unwrap' => 'Datod',
+ 'edit_label' => 'Golygu label',
+ 'toggle_open_closed' => 'Agor/cau Togl',
+ 'collapsible_edit' => 'Golygu bloc cwympadwy',
+ 'toggle_label' => 'Toglo label',
+
+ // About view
+ 'about' => 'Ynglŷn â\'r golygydd',
+ 'about_title' => 'Ynglŷn â\'r Golygydd WYSIWYG',
+ 'editor_license' => 'Trwydded a Hawlfraint Golygydd',
+ 'editor_lexical_license' => 'Mae\'r golygydd hwn wedi\'i adeiladu fel fforc o :lexicalLink sy\'n cael ei ddosbarthu o dan y drwydded MIT.',
+ 'editor_lexical_license_link' => 'Gellir gweld manylion llawn y drwydded yma.',
+ 'editor_tiny_license' => 'Mae\'r golygydd hwn wedi\'i adeiladu gan ddefnyddio :tinyLink sy\'n cael ei ddarparu o dan y drwydded MIT.',
+ 'editor_tiny_license_link' => 'Gellir dod o hyd i fanylion hawlfraint a thrwydded TinyMCE yma.',
+ 'save_continue' => 'Cadw Tudalen a Pharhau',
+ 'callouts_cycle' => '(Pwyswch i doglo drwy’r mathau)',
+ 'link_selector' => 'Dolen i\'r cynnwys',
+ 'shortcuts' => 'Llwybrau Byr',
+ 'shortcut' => 'Llwybr Byr',
+ 'shortcuts_intro' => 'Mae\'r llwybrau byr canlynol ar gael yn y golygydd:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Disgrifiad',
+];
diff --git a/lang/cy/entities.php b/lang/cy/entities.php
new file mode 100644
index 00000000000..e6df4317b1d
--- /dev/null
+++ b/lang/cy/entities.php
@@ -0,0 +1,476 @@
+ 'Crëwyd yn Ddiweddar',
+ 'recently_created_pages' => 'Tudalennau a Grëwyd yn Ddiweddar',
+ 'recently_updated_pages' => 'Tudalennau a Ddiweddarwyd yn Ddiweddar',
+ 'recently_created_chapters' => 'Penodau a Grëwyd yn Ddiweddar',
+ 'recently_created_books' => 'Llyfrau a Grëwyd yn Ddiweddar',
+ 'recently_created_shelves' => 'Silffoedd a Grëwyd yn Ddiweddar',
+ 'recently_update' => 'Diweddarwyd yn Ddiweddar',
+ 'recently_viewed' => 'Gwelwyd yn Ddiweddar',
+ 'recent_activity' => 'Gweithgaredd Diweddar',
+ 'create_now' => 'Creu un nawr',
+ 'revisions' => 'Diwygiadau',
+ 'meta_revision' => 'Diwygiad #:revisionCount',
+ 'meta_created' => 'Crëwyd',
+ 'meta_created_name' => 'Crëwyd :timeLength gan :user',
+ 'meta_updated' => 'Diweddarwyd :timeLength',
+ 'meta_updated_name' => 'Diweddarwyd :timeLength gan :user',
+ 'meta_owned_name' => 'Mae\'n eiddo i :user',
+ 'meta_reference_count' => 'Cyfeirir ato gan :count eitem|Cyfeirir ato gan :count o eitemau',
+ 'entity_select' => 'Dewis Endid',
+ 'entity_select_lack_permission' => 'Nid oes gennych y caniatâd angenrheidiol i ddewis yr eitem hon',
+ 'images' => 'Delweddau',
+ 'my_recent_drafts' => 'Fy Nrafftiau Diweddar',
+ 'my_recently_viewed' => 'Edrych yn Ddiweddar',
+ 'my_most_viewed_favourites' => 'Fy Ffefrynnau Mwyaf Poblogaidd',
+ 'my_favourites' => 'Fy Ffefrynnau',
+ 'no_pages_viewed' => 'Nid ydych wedi edrych ar unrhyw dudalennau',
+ 'no_pages_recently_created' => 'Nid oes unrhyw dudalennau wedi\'u creu\'n ddiweddar',
+ 'no_pages_recently_updated' => 'Nid oes unrhyw dudalennau wedi\'u diweddaru\'n ddiweddar',
+ 'export' => 'Allforio',
+ 'export_html' => 'Ffeil Gwe wedi\'i Chynnwys',
+ 'export_pdf' => 'Ffeil PDF',
+ 'export_text' => 'Ffeil Testun Plaen',
+ 'export_md' => 'Ffeil Markdown',
+ 'export_zip' => 'ZIP cludadwy',
+ 'default_template' => 'Templed Tudalen Diofyn',
+ 'default_template_explain' => 'Clustnodwch dempled tudalen a fydd yn cael ei ddefnyddio fel y cynnwys diofyn ar gyfer pob tudalen a grëwyd yn yr eitem hon. Cofiwch y bydd hwn ond yn cael ei ddefnyddio os yw’r sawl a grëodd y dudalen â mynediad gweld i’r dudalen dempled a ddewiswyd.',
+ 'default_template_select' => 'Dewiswch dudalen templed',
+ 'import' => 'Mewnforio',
+ 'import_validate' => 'Dilysu\'r Mewnforyn',
+ 'import_desc' => 'Mewnforio llyfrau, pennodau & tudalennau gan allforyn zip cludadwy o\'r un enghraifft, neu enghraifft wahanol. Dewis ffeil ZIP i barhau. Ar ôl i\'r ffeil wedi cael ei llwytho i fyny a dilysu, gallwch chi ffurfweddu & cadarnhau\'r mewnforyn yn yr olygfa nesa.',
+ 'import_zip_select' => 'Dewis ffeil ZIP i lwytho i fyny',
+ 'import_zip_validation_errors' => 'Wedi canfod gwallau pan ddilysu\'r ffeil ZIP wedi\'i roi:',
+ 'import_pending' => 'Mewnforion i Ddod',
+ 'import_pending_none' => 'Nid wedi dechrau unrhyw fewnforion.',
+ 'import_continue' => 'Parhau Mewnforyn',
+ 'import_continue_desc' => 'Adolygu\'r cynnwys sy\'n ddod i gael ei fewnforio o\'r ffeil ZIP wedi\'i lwytho i fyny. Pan barod, Rhedeg y mewnforyn i ychwanegu ei gynnwys â\'r system yma. Bydd y ffeil ZIP yn cael ei symud yn awtomatig ar ôl mewnforyn llwyddiannus.',
+ 'import_details' => 'Manylion Mewnforyn',
+ 'import_run' => 'Rhedeg y Mewnforyn',
+ 'import_size' => ':size Mewnforio Maint ZIP',
+ 'import_uploaded_at' => 'Wedi\'i lwytho i fyny :relativeTime',
+ 'import_uploaded_by' => 'Llwythwyd gan',
+ 'import_location' => 'Lleoliad Mewnforyn',
+ 'import_location_desc' => 'Dewis lleoliad targedi\'r cynnwys wedi\'i mewnforio. Bydd angen yr hawliau perthnasol i greu yn y lleoliad yno.',
+ 'import_delete_confirm' => 'Ydych chi\'n siŵr eich bod eisiau dileu\'r mewnforyn yma?',
+ 'import_delete_desc' => 'Bydd hwn yn dileu\'r mewnforyn ffeil ZIP sy wedi\'i lwytho i fyny, a fydd e ddim gallu cael ei ddadwneud.',
+ 'import_errors' => 'Gwallau Mewnforyn',
+ 'import_errors_desc' => 'Digwyddodd y gwallau canlynol yn ystod cynnig y mewnforyn:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Caniatâd',
+ 'permissions_desc' => 'Gosodwch ganiatâd yma i ddiystyru\'r caniatâd diofyn a ddarperir gan rolau defnyddwyr.',
+ 'permissions_book_cascade' => 'Bydd caniatâd a osodir ar lyfrau yn rhaeadru’n awtomatig i benodau a thudalennau plant, oni bai bod ganddynt eu caniatâd diffiniedig eu hunain.',
+ 'permissions_chapter_cascade' => 'Bydd caniatâd a osodir ar benodau yn rhaeadru’n awtomatig i dudalennau plant, oni bai bod ganddynt eu caniatâd diffiniedig eu hunain.',
+ 'permissions_save' => 'Cadw Caniatâd',
+ 'permissions_owner' => 'Perchennog',
+ 'permissions_role_everyone_else' => 'Pawb arall',
+ 'permissions_role_everyone_else_desc' => 'Gosod caniatâd ar gyfer pob rôl nad ydynt yn cael eu diystyru\'n benodol.',
+ 'permissions_role_override' => 'Diystyru caniatâd ar gyfer rôl',
+ 'permissions_inherit_defaults' => 'Etifeddu rhagosodiadau',
+
+ // Search
+ 'search_results' => 'Canlyniadau Chwilio',
+ 'search_total_results_found' => 'Cafwyd :count canlyniad|Cafwyd cyfanswm o :count canlyniad',
+ 'search_clear' => 'Clirio\'r Chwiliad',
+ 'search_no_pages' => 'Nid oedd unrhyw dudalennau yn cyfateb â\'r chwiliad hwn',
+ 'search_for_term' => 'Chwilio am :term',
+ 'search_more' => 'Mwy o Ganlyniadau',
+ 'search_advanced' => 'Math o Gynnwys',
+ 'search_terms' => 'Termau Chwilio',
+ 'search_content_type' => 'Math o Gynnwys',
+ 'search_exact_matches' => 'Union Gyfatebiaethau',
+ 'search_tags' => 'Tagio Chwiliadau',
+ 'search_options' => 'Opsiynau',
+ 'search_viewed_by_me' => 'Gwelwyd gennyf fi',
+ 'search_not_viewed_by_me' => 'Nas gwelwyd gennyf fi',
+ 'search_permissions_set' => 'Gosod Caniatâd',
+ 'search_created_by_me' => 'Crëwyd gennyf fi',
+ 'search_updated_by_me' => 'Diweddarwyd gennyf fi',
+ 'search_owned_by_me' => 'Yn eiddo i mi',
+ 'search_date_options' => 'Opsiynau Dyddiad',
+ 'search_updated_before' => 'Diweddarwyd cyn',
+ 'search_updated_after' => 'Diweddarwyd ar ôl',
+ 'search_created_before' => 'Crëwyd cyn',
+ 'search_created_after' => 'Crëwyd ar ôl',
+ 'search_set_date' => 'Gosod Dyddiad',
+ 'search_update' => 'Diweddaru Chwiliad',
+
+ // Shelves
+ 'shelf' => 'Silff',
+ 'shelves' => 'Silffau',
+ 'x_shelves' => ':count Silff|:count Shelves',
+ 'shelves_empty' => 'Ni chrëwyd unrhyw silffoedd',
+ 'shelves_create' => 'Creu Silff Newydd',
+ 'shelves_popular' => 'Silffoedd Poblogaidd',
+ 'shelves_new' => 'Silffau Newydd',
+ 'shelves_new_action' => 'Silff Newydd',
+ 'shelves_popular_empty' => 'Bydd y silffoedd mwyaf poblogaidd yn ymddangos yma.',
+ 'shelves_new_empty' => 'Bydd y silffoedd a grëwyd fwyaf diweddar yn ymddangos yma.',
+ 'shelves_save' => 'Cadw Silff',
+ 'shelves_books' => 'Llyfrau ar y silff hon',
+ 'shelves_add_books' => 'Ychwanegu llyfrau i\'r silff hon',
+ 'shelves_drag_books' => 'Llusgwch lyfrau isod i\'w hychwanegu at y silff hon',
+ 'shelves_empty_contents' => 'Nid oes gan y silff hon unrhyw lyfrau wedi’u clustnodi iddi',
+ 'shelves_edit_and_assign' => 'Golygu silff i glustnodi llyfrau',
+ 'shelves_edit_named' => 'Golygu Silff :name',
+ 'shelves_edit' => 'Golygu Silff',
+ 'shelves_delete' => 'Dileu Silff',
+ 'shelves_delete_named' => 'Dileu Silff :name',
+ 'shelves_delete_explain' => "Bydd hyn yn dileu'r silff gyda'r enw ':name'. Ni fydd llyfrau wedi'u cynnwys yn cael eu dileu.",
+ 'shelves_delete_confirmation' => 'Ydych chi\'n siŵr eich bod chi eisiau dileu\'r silff hon?',
+ 'shelves_permissions' => 'Caniatâd Silffoedd',
+ 'shelves_permissions_updated' => 'Diweddarwyd Caniatâd Silffoedd',
+ 'shelves_permissions_active' => 'Caniatâd Silffoedd yn Weithredol',
+ 'shelves_permissions_cascade_warning' => 'Nid yw caniatâd ar silffoedd yn rhaeadru’n awtomatig i lyfrau sydd wedi\'u cynnwys. Mae hyn oherwydd y gall llyfr fodoli ar silffoedd lluosog. Fodd bynnag, gellir copïo caniatâd i lawr i lyfrau plant gan ddefnyddio\'r opsiwn a geir isod.',
+ 'shelves_permissions_create' => 'Dim ond ar gyfer copïo caniatâd i lyfrau plant y defnyddir caniatâd creu silff gan ddefnyddio\'r camau isod. Nid ydynt yn rheoli\'r gallu i greu llyfrau.',
+ 'shelves_copy_permissions_to_books' => 'Copïo Caniatâd i Lyfrau',
+ 'shelves_copy_permissions' => 'Copïo Caniatâd',
+ 'shelves_copy_permissions_explain' => 'Bydd hyn yn cymhwyso gosodiadau caniatâd presennol y silff hon i bob llyfr sydd wedi\'u cynnwys ynddi. Cyn ysgogi, gwnewch yn siŵr bod unrhyw newidiadau i ganiatâd y silff hon wedi\'u cadw.',
+ 'shelves_copy_permission_success' => 'Caniatâd silff wedi\'i gopïo i :count o lyfrau',
+
+ // Books
+ 'book' => 'Llyfr',
+ 'books' => 'Llyfrau',
+ 'x_books' => ':count Llyfr|:count o Lyfrau',
+ 'books_empty' => 'Ni chrëwyd unrhyw llyfrau',
+ 'books_popular' => 'Llyfrau Poblogaidd',
+ 'books_recent' => 'Llyfrau Diweddar',
+ 'books_new' => 'Llyfrau Newydd',
+ 'books_new_action' => 'Llyfr Newydd',
+ 'books_popular_empty' => 'Bydd y llyfrau mwyaf poblogaidd yn ymddangos yma.',
+ 'books_new_empty' => 'Bydd y llyfrau a grëwyd fwyaf diweddar yn ymddangos yma.',
+ 'books_create' => 'Creu Llyfr Newydd',
+ 'books_delete' => 'Dileu Llyfr',
+ 'books_delete_named' => 'Dileu :bookName Llyfr',
+ 'books_delete_explain' => 'Bydd hyn yn dileu\'r llyfr gyda\'r enw ‘:bookName’. Bydd yr holl dudalennau a phenodau yn cael eu dileu.',
+ 'books_delete_confirmation' => 'Ydych chi\'n siŵr eich bod eisiau dileu\'r llyfr hwn?',
+ 'books_edit' => 'Golygu\'r Llyfr',
+ 'books_edit_named' => 'Golygu :bookName Llyfr',
+ 'books_form_book_name' => 'Enw\'r Llyfr',
+ 'books_save' => 'Cadw Llyfr',
+ 'books_permissions' => 'Caniatâd Llyfr',
+ 'books_permissions_updated' => 'Diweddarwyd Caniatâd Llyfr',
+ 'books_empty_contents' => 'Ni chrëwyd unrhyw dudalennau neu benodau ar gyfer y llyfr hwn.',
+ 'books_empty_create_page' => 'Creu tudalen newydd',
+ 'books_empty_sort_current_book' => 'Trefnu’r llyfr presennol',
+ 'books_empty_add_chapter' => 'Ychwanegu pennod',
+ 'books_permissions_active' => 'Caniatâd Llyfr yn Weithredol',
+ 'books_search_this' => 'Chwilio\'r llyfr hwn',
+ 'books_navigation' => 'Llywio Llyfr',
+ 'books_sort' => 'Trefnu Cynnwys Llyfr',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Trefnu Llyfr :bookName',
+ 'books_sort_name' => 'Trefnu yn ôl Enw',
+ 'books_sort_created' => 'Trefnu yn ôl Dyddiad Creu',
+ 'books_sort_updated' => 'Trefnu yn ôl Dyddiad Diweddaru',
+ 'books_sort_chapters_first' => 'Penodau yn Gyntaf',
+ 'books_sort_chapters_last' => 'Penodau yn Olaf',
+ 'books_sort_show_other' => 'Dangos Llyfrau Eraill',
+ 'books_sort_save' => 'Cadw’r Drefn Newydd',
+ 'books_sort_show_other_desc' => 'Ychwanegwch lyfrau eraill yma i\'w cynnwys yn y gwaith didoli, a chaniatáu ad-drefnu hawdd rhwng llyfrau.',
+ 'books_sort_move_up' => 'Symud i Fyny',
+ 'books_sort_move_down' => 'Symud i Lawr',
+ 'books_sort_move_prev_book' => 'Symud i\'r Llyfr Blaenorol',
+ 'books_sort_move_next_book' => 'Symud i\'r Llyfr Nesaf',
+ 'books_sort_move_prev_chapter' => 'Symud i\'r Bennod Flaenorol',
+ 'books_sort_move_next_chapter' => 'Symud i\'r Bennod Nesaf',
+ 'books_sort_move_book_start' => 'Symud i Ddechrau\'r Llyfr',
+ 'books_sort_move_book_end' => 'Symud i Ddiwedd y Llyfr',
+ 'books_sort_move_before_chapter' => 'Symud i’r Bennod Cynt',
+ 'books_sort_move_after_chapter' => 'Symud i’r Bennod Ddilynol',
+ 'books_copy' => 'Copio Llyfr',
+ 'books_copy_success' => 'Llyfr wedi\'i copio\'n llwyddiannus',
+
+ // Chapters
+ 'chapter' => 'Pennod',
+ 'chapters' => 'Penodau',
+ 'x_chapters' => ':count Pennod|:count Penodau',
+ 'chapters_popular' => 'Penodau Poblogaidd',
+ 'chapters_new' => 'Pennod Newydd',
+ 'chapters_create' => 'Creu Pennod Newydd',
+ 'chapters_delete' => 'Dileu Pennod',
+ 'chapters_delete_named' => 'Dileu :chapterName Pennod',
+ 'chapters_delete_explain' => 'Bydd hyn yn dileu\'r bennod gyda\'r enw \':chapterName\'. Bydd yr holl dudalennau sy\'n bodoli yn y bennod hon hefyd yn cael eu dileu.',
+ 'chapters_delete_confirm' => 'Ydych chi\'n siŵr eich bod eisiau dileu\'r bennod hon?',
+ 'chapters_edit' => 'Ychwanegu Pennod',
+ 'chapters_edit_named' => 'Ychwanegu Pennod :chapterName',
+ 'chapters_save' => 'Cadw Pennod',
+ 'chapters_move' => 'Symud Pennod',
+ 'chapters_move_named' => 'Symud Pennod :chapterName',
+ 'chapters_copy' => 'Copïo Pennod',
+ 'chapters_copy_success' => 'Pennod wedi\'i chopïo\'n llwyddiannus',
+ 'chapters_permissions' => 'Pennau Taith Pennod',
+ 'chapters_empty' => 'Does dim tudalennau yn y bennod hon ar hyn o bryd.',
+ 'chapters_permissions_active' => 'Caniatâd Pennod yn Weithredol',
+ 'chapters_permissions_success' => 'Diweddarwyd Caniatâd Pennod',
+ 'chapters_search_this' => 'Chwilio yn y bennod hon',
+ 'chapter_sort_book' => 'Trefnu Llyfr',
+
+ // Pages
+ 'page' => 'Tudalen',
+ 'pages' => 'Tudalennau',
+ 'x_pages' => ':count Tudalen|:count Tudalennau',
+ 'pages_popular' => 'Tudalennau Poblogaidd',
+ 'pages_new' => 'Tudalen Newydd',
+ 'pages_attachments' => 'Atodiadau',
+ 'pages_navigation' => 'Llywio Tudalen',
+ 'pages_delete' => 'Dileu Tudalen',
+ 'pages_delete_named' => 'Dileu :pageName Tudalen',
+ 'pages_delete_draft_named' => 'Dileu Tudalen Ddrafft :pageName',
+ 'pages_delete_draft' => 'Dileu Tudalen Ddrafft',
+ 'pages_delete_success' => 'Tudalen wedi\'i dileu',
+ 'pages_delete_draft_success' => 'Tudalen ddrafft wedi’i dileu',
+ 'pages_delete_warning_template' => 'Mae\'r dudalen hon yn cael ei defnyddio\'n weithredol fel templed tudalen diofyn llyfr neu bennod. Ni fydd gan y llyfrau neu\'r penodau hyn dempled tudalen diofyn wedi\'i glustnodi ar ôl dileu\'r dudalen hon.',
+ 'pages_delete_confirm' => 'Ydych chi\'n siŵr eich bod eisiau dileu\'r dudalen hon?',
+ 'pages_delete_draft_confirm' => 'Ydych chi\'n siŵr eich bod eisiau dileu\'r dudalen ddrafft hon?',
+ 'pages_editing_named' => 'Golygu Tudalen :pageName',
+ 'pages_edit_draft_options' => 'Opsiynau Drafft',
+ 'pages_edit_save_draft' => 'Cadw Drafft',
+ 'pages_edit_draft' => 'Golygu Tudalen Ddrafft',
+ 'pages_editing_draft' => 'Golygu Drafft',
+ 'pages_editing_page' => 'Golygu Tudalen',
+ 'pages_edit_draft_save_at' => 'Cadwyd drafft ar ',
+ 'pages_edit_delete_draft' => 'Dileu Drafft',
+ 'pages_edit_delete_draft_confirm' => 'Ydych chi\'n siŵr eich bod am ddileu eich newidiadau i’r dudalen ddrafft? Bydd eich holl newidiadau, ers eu cadw ddiwethaf, yn cael eu colli a bydd y golygydd yn cael ei ddiweddaru gyda\'r dudalen ddiweddaraf nad yw\'n ddrafft.',
+ 'pages_edit_discard_draft' => 'Gwaredu Drafft',
+ 'pages_edit_switch_to_markdown' => 'Newid i’r Golygydd Markdown',
+ 'pages_edit_switch_to_markdown_clean' => '(Cynnwys Glân)',
+ 'pages_edit_switch_to_markdown_stable' => '(Cynnwys Glân)',
+ 'pages_edit_switch_to_wysiwyg' => 'Newid i Olygydd WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Newid i WYSIWYG newydd',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Gosod Changelog',
+ 'pages_edit_enter_changelog_desc' => 'Rhowch ddisgrifiad byr o\'r newidiadau rydych wedi\'u gwneud',
+ 'pages_edit_enter_changelog' => 'Cofnodwch Changelog',
+ 'pages_editor_switch_title' => 'Newid Golygydd',
+ 'pages_editor_switch_are_you_sure' => 'Ydych chi\'n siŵr eich bod eisiau newid y golygydd ar gyfer y dudalen hon?',
+ 'pages_editor_switch_consider_following' => 'Ystyriwch y canlynol wrth newid golygyddion:',
+ 'pages_editor_switch_consideration_a' => 'Ar ôl ei gadw, bydd yr opsiwn golygydd newydd yn cael ei ddefnyddio gan unrhyw olygydd yn y dyfodol, gan gynnwys y rhai na fyddant efallai\'n gallu newid y math o olygydd eu hunain.',
+ 'pages_editor_switch_consideration_b' => 'Gall hyn arwain at golli manylion a Syntax mewn rhai amgylchiadau.',
+ 'pages_editor_switch_consideration_c' => 'Ni fydd newidiadau tag neu changelog, a wnaed ers eu cadw ddiwethaf, yn parhau ar draws y newid hwn.',
+ 'pages_save' => 'Cadw Tudalen',
+ 'pages_title' => 'Teitl y Dudalen',
+ 'pages_name' => 'Enw\'r Dudalen',
+ 'pages_md_editor' => 'Golygydd',
+ 'pages_md_preview' => 'Rhagolwg',
+ 'pages_md_insert_image' => 'Mewnosod Delwedd',
+ 'pages_md_insert_link' => 'Mewnosod Dolen Endid',
+ 'pages_md_insert_drawing' => 'Mewnosod Llun',
+ 'pages_md_show_preview' => 'Dangos rhagolwg',
+ 'pages_md_sync_scroll' => 'Cydamseru sgrôl ragolwg',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Canfuwyd Llun heb ei Gadw',
+ 'pages_drawing_unsaved_confirm' => 'Canfuwyd data llun heb ei gadw o ymgais aflwyddiannus blaenorol i gadw llun. Hoffech chi adfer a pharhau i olygu\'r llun heb ei gadw?',
+ 'pages_not_in_chapter' => 'Nid yw\'r dudalen mewn pennod',
+ 'pages_move' => 'Symud Tudalen',
+ 'pages_copy' => 'Copïo Tudalen',
+ 'pages_copy_desination' => 'Copïo Cyrchfan',
+ 'pages_copy_success' => 'Tudalen wedi\'i chreu\'n llwyddiannus',
+ 'pages_permissions' => 'Pennau Taith Tudalen',
+ 'pages_permissions_success' => 'Pennau taith tudalen wedi\'u diweddaru',
+ 'pages_revision' => 'Diwygiad',
+ 'pages_revisions' => 'Diwygiadau\'r Dudalen',
+ 'pages_revisions_desc' => 'Isod ceir holl ddiwygiadau blaenorol y dudalen hon. Gallwch edrych yn ôl ar, cymharu, ac adfer hen fersiynau o’r dudalen os oes gennych y caniatâd priodol. Efallai na fydd hanes llawn y dudalen yn cael ei adlewyrchu\'n llawn yma oherwydd, gan ddibynnu ar ffurfweddiad y system, gallai hen fersiynau fod wedi’u dileu’n awtomatig.',
+ 'pages_revisions_named' => 'Diwygiadau Tudalen ar gyfer :pageName',
+ 'pages_revision_named' => 'Diwygiad Tudalen ar gyfer :pageName',
+ 'pages_revision_restored_from' => 'Adferwyd o #:id; :summary',
+ 'pages_revisions_created_by' => 'Crëwyd gan',
+ 'pages_revisions_date' => 'Dyddiad Adolygu',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Rhif Diwygiad',
+ 'pages_revisions_numbered' => 'Diwygiad #:id',
+ 'pages_revisions_numbered_changes' => 'Diwygiad #:id Newidiadau',
+ 'pages_revisions_editor' => 'Math o Olygydd',
+ 'pages_revisions_changelog' => 'Changelog',
+ 'pages_revisions_changes' => 'Newidiadau',
+ 'pages_revisions_current' => 'Fersiwn Bresennol',
+ 'pages_revisions_preview' => 'Rhagolwg',
+ 'pages_revisions_restore' => 'Adfer',
+ 'pages_revisions_none' => 'Nid oes gan y dudalen hon unrhyw ddiwygiadau',
+ 'pages_copy_link' => 'Copïo Dolen',
+ 'pages_edit_content_link' => 'Neidio i\'r adran yn y golygydd',
+ 'pages_pointer_enter_mode' => 'Rhowch y modd dethol adran',
+ 'pages_pointer_label' => 'Dewisiadau Adran Tudalen',
+ 'pages_pointer_permalink' => 'Dolen Barhaol Adran Tudalen',
+ 'pages_pointer_include_tag' => 'Adran Tudalen Cynnwys Tag',
+ 'pages_pointer_toggle_link' => 'Modd dolen barhaol, Pwyswch i ddangos cynnwys tag',
+ 'pages_pointer_toggle_include' => 'Modd cynnwys tag, Pwyswch i ddangos dolen barhaol',
+ 'pages_permissions_active' => 'Caniatâd Tudalen yn Weithredol',
+ 'pages_initial_revision' => 'Cyhoeddi cychwynnol',
+ 'pages_references_update_revision' => 'Diweddariad awtomatig y system o ddolenni mewnol',
+ 'pages_initial_name' => 'Tudalen Newydd',
+ 'pages_editing_draft_notification' => 'Rydych chi wrthi’n golygu drafft a gafodd ei gadw ddiwethaf ar :timeDiff.',
+ 'pages_draft_edited_notification' => 'Mae\'r dudalen hon wedi\'i diweddaru ers hynny. Argymhellir eich bod yn dileu\'r drafft hwn.',
+ 'pages_draft_page_changed_since_creation' => 'Mae\'r dudalen hon wedi\'i diweddaru ers i\'r drafft hwn gael ei greu. Argymhellir eich bod yn dileu\'r drafft hwn neu\'n sicrhau nad ydych yn ysgrifennu unrhyw newidiadau i’r dudalen.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => 'Mae :count defnyddiwr wedi dechrau golygu\'r dudalen hon',
+ 'start_b' => 'Mae :userName wedi dechrau golygu\'r dudalen hon',
+ 'time_a' => 'ers i\'r dudalen gael ei diweddaru ddiwethaf',
+ 'time_b' => 'yn y :minCount munud diwethaf',
+ 'message' => ':start :time. Gofalwch beidio ag ysgrifennu dros ddiweddariadau eich gilydd!',
+ ],
+ 'pages_draft_discarded' => 'Drafft wedi\'i waredu! Mae\'r golygydd wedi\'i ddiweddaru gyda chynnwys presennol y dudalen',
+ 'pages_draft_deleted' => 'Drafft wedi\'i ddileu! Mae\'r golygydd wedi\'i ddiweddaru gyda chynnwys presennol y dudalen',
+ 'pages_specific' => 'Tudalen Benodol',
+ 'pages_is_template' => 'Templed Tudalen',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toglo Bar ochr',
+ 'page_tags' => 'Tagiau Tudalennau',
+ 'chapter_tags' => 'Tagiau Penodau',
+ 'book_tags' => 'Tagiau Llyfrau',
+ 'shelf_tags' => 'Tagiau Silffoedd',
+ 'tag' => 'Tag',
+ 'tags' => 'Tagiau',
+ 'tags_index_desc' => 'Gellir cymhwyso tagiau i gynnwys o fewn y system i sicrhau categoreiddio hyblyg. Gall tagiau fod ag allwedd a gwerth, gyda\'r gwerth yn ddewisol. Ar ôl ei gymhwyso, gellir cwestiynu’r cynnwys gan ddefnyddio enw a gwerth y tag.',
+ 'tag_name' => 'Enw’r Tag',
+ 'tag_value' => 'Gwerth y Tag (Dewisol)',
+ 'tags_explain' => "Ychwanegwch rai tagiau i gategoreiddio'ch cynnwys yn well. Gallwch glustnodi gwerth i dag i gael trefn fanylach.",
+ 'tags_add' => 'Ychwanegu tag arall',
+ 'tags_remove' => 'Tynnu’r tag hwn',
+ 'tags_usages' => 'Cyfanswm y defnydd o’r tag',
+ 'tags_assigned_pages' => 'Clustnodwyd i Dudalennau',
+ 'tags_assigned_chapters' => 'Clustnodwyd i Benodau',
+ 'tags_assigned_books' => 'Clustnodwyd i Lyfrau',
+ 'tags_assigned_shelves' => 'Clustnodwyd i Silffoedd',
+ 'tags_x_unique_values' => ':count gwerthoedd unigryw',
+ 'tags_all_values' => 'Pob gwerth',
+ 'tags_view_tags' => 'Gweld Tagiau',
+ 'tags_view_existing_tags' => 'Gweld tagiau presennol',
+ 'tags_list_empty_hint' => 'Gellir clustnodi tagiau trwy far ochr golygydd y dudalen neu wrth olygu manylion llyfr, pennod neu silff.',
+ 'attachments' => 'Atodiadau',
+ 'attachments_explain' => 'Uwchlwytho rhai ffeiliau neu atodi rhai dolenni i\'w harddangos ar eich tudalen. Mae\'r rhain i\'w gweld ym mar ochr y dudalen.',
+ 'attachments_explain_instant_save' => 'Caiff y newidiadau yma eu cadw ar unwaith.',
+ 'attachments_upload' => 'Uwchlwytho Ffeil',
+ 'attachments_link' => 'Atodi Dolen',
+ 'attachments_upload_drop' => 'Neu gallwch lusgo a gollwng ffeil yma i\'w huwchlwytho fel atodiad.',
+ 'attachments_set_link' => 'Gosod Dolen',
+ 'attachments_delete' => 'Ydych chi\'n siŵr eich bod eisiau dileu\'r atodiad hwn?',
+ 'attachments_dropzone' => 'Gollyngwch ffeiliau yma i\'w huwchlwytho',
+ 'attachments_no_files' => 'Nid oes unrhyw ffeiliau wedi\'u huwchlwytho',
+ 'attachments_explain_link' => 'Gallwch atodi dolen pe bai’n well gennych beidio ag uwchlwytho ffeil. Gall hyn fod yn ddolen i dudalen arall neu\'n ddolen i ffeil yn y cwmwl.',
+ 'attachments_link_name' => 'Enw’r Ddolen',
+ 'attachment_link' => 'Dolen atodiad',
+ 'attachments_link_url' => 'Dolen i ffeil',
+ 'attachments_link_url_hint' => 'Url y safle neu ffeil',
+ 'attach' => 'Atodi',
+ 'attachments_insert_link' => 'Ychwanegu Dolen Atodiad i Dudalen',
+ 'attachments_edit_file' => 'Golygu Ffeil',
+ 'attachments_edit_file_name' => 'Enw\'r Ffeil',
+ 'attachments_edit_drop_upload' => 'Gollwng ffeiliau neu glicio yma i uwchlwytho ac arysgrifennu',
+ 'attachments_order_updated' => 'Trefn atodiad wedi’i diweddaru',
+ 'attachments_updated_success' => 'Manylion yr atodiad wedi\'u diweddaru',
+ 'attachments_deleted' => 'Atodiad wedi’i ddileu',
+ 'attachments_file_uploaded' => 'Ffeil wedi\'i huwchwytho\'n llwyddiannus',
+ 'attachments_file_updated' => 'Ffeil wedi\'i diweddaru’n llwyddiannus',
+ 'attachments_link_attached' => 'Dolen wedi\'i atodi’n llwyddiannus i\'r dudalen',
+ 'templates' => 'Templedi',
+ 'templates_set_as_template' => 'Mae\'r dudalen yn dempled',
+ 'templates_explain_set_as_template' => 'Gallwch osod y dudalen hon fel templed er mwyn gallu defnyddio ei chynnwys wrth greu tudalennau eraill. Bydd modd i ddefnyddwyr eraill ddefnyddio\'r templed hwn os oes ganddynt ganiatâd gweld ar gyfer y dudalen hon.',
+ 'templates_replace_content' => 'Disodli cynnwys tudalen',
+ 'templates_append_content' => 'Atodi i gynnwys tudalen',
+ 'templates_prepend_content' => 'Rhagarweiniad i gynnwys tudalen',
+
+ // Profile View
+ 'profile_user_for_x' => 'Defnyddiwr am :time',
+ 'profile_created_content' => 'Cynnwys a Grëwyd',
+ 'profile_not_created_pages' => 'Nid yw :userName wedi creu unrhyw dudalennau',
+ 'profile_not_created_chapters' => 'Nid yw :userName wedi creu unrhyw benodau',
+ 'profile_not_created_books' => 'Nid yw :userName wedi creu unrhyw lyfrau',
+ 'profile_not_created_shelves' => 'Nid yw :userName wedi creu unrhyw silffoedd',
+
+ // Comments
+ 'comment' => 'Sylw',
+ 'comments' => 'Sylwadau',
+ 'comment_add' => 'Ychwanegu Sylw',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Gadewch sylw yma',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Cadw Sylw',
+ 'comment_new' => 'Sylw Newydd',
+ 'comment_created' => 'sylwodd :createDiff',
+ 'comment_updated' => 'Diweddarwyd :update gan :username',
+ 'comment_updated_indicator' => 'Diweddarwyd',
+ 'comment_deleted_success' => 'Dilëwyd sylw',
+ 'comment_created_success' => 'Ychwanegwyd sylw',
+ 'comment_updated_success' => 'Diweddarwyd sylw',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Ydych chi\'n siwr eich bod eisiau dileu\'r sylw hwn?',
+ 'comment_in_reply_to' => 'Mewn ymateb i :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Dyma\'r sylwadau sydd wedi eu gadael ar y dudalen hon. Gellir ychwanegu a rheoli sylwadau wrth edrych ar y dudalen a gadwyd.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Ydych chi\'n siŵr eich bod eisiau dileu\'r adolygiad hwn?',
+ 'revision_restore_confirm' => 'Ydych chi\'n siŵr eich bod eisiau adfer yr adolygiad hwn? Bydd cynnwys presennol y dudalen yn cael ei newid.',
+ 'revision_cannot_delete_latest' => 'Ni ellir dileu\'r adolygiad diweddaraf.',
+
+ // Copy view
+ 'copy_consider' => 'Ystyriwch yr isod wrth gopïo cynnwys.',
+ 'copy_consider_permissions' => 'Ni fydd gosodiadau caniatâd personol yn cael eu copïo.',
+ 'copy_consider_owner' => 'Byddwch yn dod yn berchennog yr holl gynnwys sydd wedi’i gopïo.',
+ 'copy_consider_images' => 'Ni fydd ffeiliau delwedd tudalen yn cael eu dyblygu a bydd y delweddau gwreiddiol yn cadw eu perthynas â\'r dudalen y cawsant eu huwchlwytho yn wreiddiol iddi.',
+ 'copy_consider_attachments' => 'Ni fydd atodiadau tudalen yn cael eu copïo.',
+ 'copy_consider_access' => 'Gall newid lleoliad, perchennog neu ganiatâd olygu bod y cynnwys hwn yn hygyrch i\'r rhai nad oedd ganddynt fynediad o\'r blaen.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Trosi i Silff',
+ 'convert_to_shelf_contents_desc' => 'Gallwch drosi\'r llyfr hwn i silff newydd gyda\'r un cynnwys. Bydd penodau yn y llyfr hwn yn cael eu trosi i lyfrau newydd. Os yw\'r llyfr hwn yn cynnwys unrhyw dudalennau, nad ydynt mewn pennod, bydd y llyfr hwn yn cael ei ailenwi ac yn cynnwys tudalennau o\'r fath, a bydd y llyfr hwn yn dod yn rhan o\'r silff newydd.',
+ 'convert_to_shelf_permissions_desc' => 'Bydd unrhyw ganiatâd a osodir ar y llyfr hwn yn cael ei gopïo i\'r silff newydd ac i bob llyfr plentyn newydd nad oes ganddynt eu caniatâd eu hunain. Noder nad yw caniatâd ar silffoedd yn rhaeadru’n awtomatig i’r cynnwys oddi mewn, fel y maent ar gyfer llyfrau.',
+ 'convert_book' => 'Trosi Llyfr',
+ 'convert_book_confirm' => 'Ydych chi\'n siwr eich bod eisiau trosi’r llyfr hwn?',
+ 'convert_undo_warning' => 'Ni ellir dad-wneud hyn mor hawdd.',
+ 'convert_to_book' => 'Trosi i Lyfr',
+ 'convert_to_book_desc' => 'Gallwch drosi\'r bennod hon i lyfr newydd gyda\'r un cynnwys. Bydd unrhyw ganiatâd a osodir ar y bennod hon yn cael ei gopïo i\'r llyfr newydd ond ni fydd unrhyw ganiatâd a etifeddir o\'r llyfr rhiant yn cael ei gopïo, a allai arwain at newid rheolaeth mynediad.',
+ 'convert_chapter' => 'Trosi Pennod',
+ 'convert_chapter_confirm' => 'Ydych chi\'n siŵr eich bod eisiau trosi’r bennod hon?',
+
+ // References
+ 'references' => 'Cyfeirnodau',
+ 'references_none' => 'Nid oes unrhyw gyfeirnodau wedi\'u holrhain ar gyfer yr eitem hon.',
+ 'references_to_desc' => 'Isod ceir yr holl gynnwys hysbys yn y system sy\'n cysylltu â\'r eitem hon.',
+
+ // Watch Options
+ 'watch' => 'Gwylio',
+ 'watch_title_default' => 'Dewisiadau Diofyn',
+ 'watch_desc_default' => 'Newid i weld eich dewisiadau hysbysu diofyn yn unig.',
+ 'watch_title_ignore' => 'Anwybyddu',
+ 'watch_desc_ignore' => 'Anwybyddu pob hysbysiad, gan gynnwys y rhai o ddewisiadau lefel defnyddiwr.',
+ 'watch_title_new' => 'Tudalennau Newydd',
+ 'watch_desc_new' => 'Rhoi gwybod pan fydd unrhyw dudalen newydd yn cael ei chreu yn yr eitem hon.',
+ 'watch_title_updates' => 'Diweddariadau Pob Tudalen',
+ 'watch_desc_updates' => 'Hysbysu am bob tudalen newydd a newid i dudalennau.',
+ 'watch_desc_updates_page' => 'Hysbysu am bob newid i dudalennau.',
+ 'watch_title_comments' => 'Pob Diweddariad i Dualennau a Sylwadau',
+ 'watch_desc_comments' => 'Hysbysu am bob tudalen newydd, newidiadau i dudalennau a sylwadau newydd.',
+ 'watch_desc_comments_page' => 'Hysbysu am newidiadau i dudalennau a sylwadau newydd.',
+ 'watch_change_default' => 'Newid dewisiadau hysbysu diofyn',
+ 'watch_detail_ignore' => 'Anwybyddu hysbysiadau',
+ 'watch_detail_new' => 'Gwylio am dudalennau newydd',
+ 'watch_detail_updates' => 'Gwylio tudalennau a diweddariadau newydd',
+ 'watch_detail_comments' => 'Gwylio tudalennau newydd, diweddariadau a sylwadau',
+ 'watch_detail_parent_book' => 'Gwylio trwy lyfr rhiant',
+ 'watch_detail_parent_book_ignore' => 'Anwybyddu trwy lyfr rhiant',
+ 'watch_detail_parent_chapter' => 'Gwylio trwy bennod rhiant',
+ 'watch_detail_parent_chapter_ignore' => 'Anwybyddu trwy bennod rhiant',
+];
diff --git a/lang/cy/errors.php b/lang/cy/errors.php
new file mode 100644
index 00000000000..a3ab3279e41
--- /dev/null
+++ b/lang/cy/errors.php
@@ -0,0 +1,135 @@
+ 'Nid oes gennych ganiatâd i gael mynediad i\'r dudalen y gofynnwyd amdani.',
+ 'permissionJson' => 'Nid oes gennych ganiatâd i gyflawni\'r weithred y gofynnwyd amdani.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Mae defnyddiwr gyda\'r e-bost :email eisoes yn bodoli ond gyda nodweddion gwahanol.',
+ 'auth_pre_register_theme_prevention' => 'Nid oedd modd cofrestru cyfrif defnyddiwr ar gyfer y manylion a ddarparwyd',
+ 'email_already_confirmed' => 'E-bost eisoes wedi\'i gadarnhau, Ceisiwch fewngofnodi.',
+ 'email_confirmation_invalid' => 'Nid yw\'r tocyn cadarnhau hwn yn ddilys neu mae eisoes wedi\'i ddefnyddio. Ceisiwch gofrestru eto.',
+ 'email_confirmation_expired' => 'Mae\'r tocyn cadarnhad wedi dod i ben, Mae e-bost cadarnhau newydd wedi\'i anfon.',
+ 'email_confirmation_awaiting' => 'Mae angen cadarnhau cyfeiriad e-bost y cyfrif a ddefnyddir',
+ 'ldap_fail_anonymous' => 'Methodd mynediad LDAP gan ddefnyddio rhwymiad dienw',
+ 'ldap_fail_authed' => 'Methodd mynediad LDAP gan ddefnyddio\'r manylion dn a chyfrinair a roddwyd',
+ 'ldap_extension_not_installed' => 'Estyniad PHP LDAP heb ei osod',
+ 'ldap_cannot_connect' => 'Methu cysylltu i weinydd ldap, cysylltiad cychwynnol wedi methu',
+ 'saml_already_logged_in' => 'Wedi mewngofnodi yn barod',
+ 'saml_no_email_address' => 'Methu dod o hyd i gyfeiriad e-bost, ar gyfer y defnyddiwr hwn, yn y data a ddarparwyd gan y system ddilysu allanol',
+ 'saml_invalid_response_id' => 'Nid yw\'r cais o\'r system ddilysu allanol yn cael ei gydnabod gan broses a ddechreuwyd gan y cais hwn. Gallai llywio yn ôl ar ôl mewngofnodi achosi\'r broblem hon.',
+ 'saml_fail_authed' => 'Wedi methu mewngofnodi gan ddefnyddio :system, ni roddodd y system awdurdodiad llwyddiannus',
+ 'oidc_already_logged_in' => 'Wedi mewngofnodi yn barod',
+ 'oidc_no_email_address' => 'Methu dod o hyd i gyfeiriad e-bost, ar gyfer y defnyddiwr hwn, yn y data a ddarparwyd gan y system ddilysu allanol',
+ 'oidc_fail_authed' => 'Wedi methu mewngofnodi gan ddefnyddio :system, ni roddodd y system awdurdodiad llwyddiannus',
+ 'social_no_action_defined' => 'Dim gweithred wedi\'i diffinio',
+ 'social_login_bad_response' => "Gwall a dderbyniwyd yn ystod mewngofnodi :socialAccount:\n:error",
+ 'social_account_in_use' => 'Mae\'r cyfrif :socialAccount hwn eisoes yn cael ei ddefnyddio, Ceisiwch fewngofnodi trwy\'r opsiwn :socialAccount.',
+ 'social_account_email_in_use' => 'Mae\'r e-bost :email eisoes yn cael ei ddefnyddio. Os oes gennych gyfrif yn barod gallwch gysylltu eich cyfrif :socialAccount o osodiadau eich proffil.',
+ 'social_account_existing' => 'Mae\'r :socialAccount hwn eisoes ynghlwm wrth eich proffil.',
+ 'social_account_already_used_existing' => 'Mae\'r cyfrif :socialAccount hwn eisoes yn cael ei ddefnyddio gan ddefnyddiwr arall.',
+ 'social_account_not_used' => 'Nid yw\'r cyfrif :socialAccount hwn yn gysylltiedig ag unrhyw ddefnyddwyr. Atodwch ef yn eich gosodiadau proffil. ',
+ 'social_account_register_instructions' => 'Os nad oes gennych gyfrif eto, gallwch gofrestru cyfrif gan ddefnyddio\'r opsiwn :socialAccount.',
+ 'social_driver_not_found' => 'Gyrrwr cymdeithasol heb ei ganfod',
+ 'social_driver_not_configured' => 'Nid yw eich gosodiadau cymdeithasol :socialAccount wedi\'u ffurfweddu\'n gywir.',
+ 'invite_token_expired' => 'Mae\'r ddolen wahoddiad hon wedi dod i ben. Yn lle hynny, gallwch chi geisio ailosod cyfrinair eich cyfrif.',
+ 'login_user_not_found' => 'Nid oedd modd dod o hyd i ddefnyddiwr ar gyfer y weithred hon.',
+
+ // System
+ 'path_not_writable' => 'Nid oedd modd uwchlwytho llwybr ffeil :filePath. Sicrhewch ei fod yn ysgrifenadwy i\'r gweinydd.',
+ 'cannot_get_image_from_url' => 'Methu cael delwedd o :url',
+ 'cannot_create_thumbs' => 'Ni all y gweinydd greu mân-luniau. Gwiriwch fod gennych yr estyniad GD PHP wedi\'i osod.',
+ 'server_upload_limit' => 'Nid yw\'r gweinydd yn caniatáu uwchlwythiadau o\'r maint hwn. Rhowch gynnig ar faint ffeil llai.',
+ 'server_post_limit' => 'Ni all y gweinydd dderbyn y swm o ddata a ddarparwyd. Rhowch gynnig arall arni eto gyda llai o ddata neu ffeil lai.',
+ 'uploaded' => 'Nid yw\'r gweinydd yn caniatáu uwchlwythiadau o\'r maint hwn. Rhowch gynnig ar faint ffeil llai.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Bu gwall wrth uwchlwytho\'r ddelwedd',
+ 'image_upload_type_error' => 'Mae\'r math o ddelwedd sy\'n cael ei huwchlwytho yn annilys',
+ 'image_upload_replace_type' => 'Rhaid i ffeiliau delwedd a newidir fod o\'r un math',
+ 'image_upload_memory_limit' => 'Methwyd â thrin y llun a uwchlwythwyd a/neu greu mân-luniau oherwydd cyfyngiadau i adnoddau’r system.',
+ 'image_thumbnail_memory_limit' => 'Methwyd â chreu amrywiadau i faint y llun oherwydd cyfyngiadau i adnoddau’r system.',
+ 'image_gallery_thumbnail_memory_limit' => 'Methwyd â chreu oriel o fân-luniau oherwydd cyfyngiadau i adnoddau’r system.',
+ 'drawing_data_not_found' => 'Nid oedd modd llwytho\'r data dylunio. Efallai nad yw’r ffeil ddylunio yn bodoli mwyach neu efallai nad oes gennych ganiatâd i\'w defnyddio.',
+
+ // Attachments
+ 'attachment_not_found' => 'Ni chanfuwyd yr atodiad',
+ 'attachment_upload_error' => 'Digwyddodd gwall wrth uwchlwytho’r ffeil atodiad',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Wedi methu cadw\'r drafft. Sicrhewch fod gennych gysylltiad rhyngrwyd cyn cadw\'r dudalen hon',
+ 'page_draft_delete_fail' => 'Methwyd â dileu’r dudalen ddrafft a chyrchu cynnwys y dudalen gyfredol',
+ 'page_custom_home_deletion' => 'Methu dileu tudalen tra ei bod wedi\'i gosod fel hafan',
+
+ // Entities
+ 'entity_not_found' => 'Endid heb ei ganfod',
+ 'bookshelf_not_found' => 'Ni chanfuwyd y silff',
+ 'book_not_found' => 'Ni chanfuwyd y llyfr',
+ 'page_not_found' => 'Heb ganfod y dudalen',
+ 'chapter_not_found' => 'Pennod heb ei chanfod',
+ 'selected_book_not_found' => 'Ni ddaethpwyd o hyd i\'r llyfr a ddewiswyd',
+ 'selected_book_chapter_not_found' => 'Ni ddaethpwyd o hyd i\'r Llyfr neu\'r Bennod a ddewiswyd',
+ 'guests_cannot_save_drafts' => 'Ni all gwesteion arbed drafftiau',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Ni allwch ddileu\'r unig weinyddwr',
+ 'users_cannot_delete_guest' => 'Ni allwch ddileu\'r defnyddiwr gwadd',
+ 'users_could_not_send_invite' => 'Methu creu defnyddiwr oherwydd ni fu modd anfon e-bost gwahodd',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Nid oes modd golygu\'r rôl hon',
+ 'role_system_cannot_be_deleted' => 'Rôl system yw\'r rôl hon ac ni ellir ei dileu',
+ 'role_registration_default_cannot_delete' => 'Ni ellir dileu\'r rôl hon tra ei bod wedi\'i gosod fel y rôl gofrestru ddiofyn',
+ 'role_cannot_remove_only_admin' => 'Y defnyddiwr hwn yw\'r unig ddefnyddiwr sydd wedi\'i neilltuo i rôl y gweinyddwr. Neilltuo rôl y gweinyddwr i ddefnyddiwr arall cyn ceisio ei dynnu yma.',
+
+ // Comments
+ 'comment_list' => 'Digwyddodd gwall wrth nôl y sylwadau.',
+ 'cannot_add_comment_to_draft' => 'Ni allwch ychwanegu sylwadau at ddrafft.',
+ 'comment_add' => 'Digwyddodd gwall wrth ychwanegu / diweddaru\'r sylw.',
+ 'comment_delete' => 'Digwyddodd gwall wrth dileu\'r sylwad.',
+ 'empty_comment' => 'Methu ychwanegu sylw gwag.',
+
+ // Error pages
+ '404_page_not_found' => 'Heb ganfod y dudalen',
+ 'sorry_page_not_found' => 'Mae\'n ddrwg gennym, nid oedd modd dod o hyd i\'r dudalen roeddech yn chwilio amdani.',
+ 'sorry_page_not_found_permission_warning' => 'Os oeddech yn disgwyl i\'r dudalen hon fodoli, efallai na fyddai gennych ganiatâd i\'w gweld.',
+ 'image_not_found' => 'Heb ganfod y delwedd',
+ 'image_not_found_subtitle' => 'Mae\'n ddrwg gennym, ni fu modd dod o hyd i\'r ffeil delwedd roeddech yn chwilio amdani.',
+ 'image_not_found_details' => 'Os oeddech chi\'n disgwyl i\'r ddelwedd hon fodoli efallai ei bod wedi\'i dileu.',
+ 'return_home' => 'Dychwelyd i gartref',
+ 'error_occurred' => 'Digwyddodd Gwall',
+ 'app_down' => 'Mae :appName i lawr ar hyn o bryd',
+ 'back_soon' => 'Bydd yn ôl i fyny yn fuan.',
+
+ // Import
+ 'import_zip_cant_read' => 'Wedi methu darllen ffeil ZIP.',
+ 'import_zip_cant_decode_data' => 'Wedi methu ffeindio a dadgodio cynnwys ZIP data.json.',
+ 'import_zip_no_data' => 'Nid oes cynnwys llyfr, pennod neu dudalen disgwyliedig yn nata ffeil ZIP.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'ZIP mewnforyn wedi\'i methu dilysu gyda gwallau:',
+ 'import_zip_failed_notification' => 'Wedi methu mewnforio ffeil ZIP.',
+ 'import_perms_books' => 'Dych chi\'n methu\'r caniatâd gofynnol i greu llyfrau.',
+ 'import_perms_chapters' => 'Dych chi\'n methu\'r caniatâd gofynnol i greu pennodau.',
+ 'import_perms_pages' => 'Dych chi\'n methu\'r caniatâd gofynnol i greu tudalennau.',
+ 'import_perms_images' => 'Dych chi\'n methu\'r caniatâd gofynnol i greu delwau.',
+ 'import_perms_attachments' => 'Dych chi\'n methu\'r caniatâd gofynnol i greu atodiadau.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Ni chanfuwyd tocyn awdurdodi ar y cais',
+ 'api_bad_authorization_format' => 'Canfuwyd tocyn awdurdodi ar y cais ond roedd yn ymddangos bod y fformat yn anghywir',
+ 'api_user_token_not_found' => 'Ni chanfuwyd tocyn API cyfatebol ar gyfer y tocyn awdurdodi a ddarparwyd',
+ 'api_incorrect_token_secret' => 'Mae\'r gyfrinach a ddarparwyd ar gyfer y tocyn API defnyddiedig a roddwyd yn anghywir',
+ 'api_user_no_api_permission' => 'Nid oes gan berchennog y tocyn API a ddefnyddiwyd ganiatâd i wneud galwadau API',
+ 'api_user_token_expired' => 'Mae\'r tocyn awdurdodi a ddefnyddiwyd wedi dod i ben',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Gwall a daflwyd wrth anfon e-bost prawf:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'Nid yw\'r URL yn cyd-fynd â\'r gwesteion SSR ffurfweddu a ganiateir',
+];
diff --git a/lang/cy/notifications.php b/lang/cy/notifications.php
new file mode 100644
index 00000000000..766e666b929
--- /dev/null
+++ b/lang/cy/notifications.php
@@ -0,0 +1,29 @@
+ 'Sylw newydd ar dudalen :pageName',
+ 'new_comment_intro' => 'Mae defnyddiwr wedi sylw ar dudalen yn :appName:',
+ 'new_page_subject' => 'Tudalen newydd :pageName',
+ 'new_page_intro' => 'Mae tudalen newydd wedi cael ei chreu yn :appName:',
+ 'updated_page_subject' => 'Tudalen wedi\'i diweddaru :pageName',
+ 'updated_page_intro' => 'Mae tudalen newydd wedi cael ei diweddaru yn :appName:',
+ 'updated_page_debounce' => 'Er mwyn atal llu o hysbysiadau, am gyfnod ni fyddwch yn cael hysbysiadau am ragor o olygiadau i\'r dudalen hon gan yr un golygydd.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Enw\'r dudalen:',
+ 'detail_page_path' => 'Llwybr Tudalen:',
+ 'detail_commenter' => 'Sylwebydd:',
+ 'detail_comment' => 'Sylw:',
+ 'detail_created_by' => 'Crëwyd gan:',
+ 'detail_updated_by' => 'Diweddarwyd Gan:',
+
+ 'action_view_comment' => 'Gweld y sylw',
+ 'action_view_page' => 'Gweld y dudalen',
+
+ 'footer_reason' => 'Anfonwyd yr hysbysiad hwn atoch oherwydd bod y :ddolen yn ymdrin â’r math hwn o weithgaredd ar gyfer yr eitem hon.',
+ 'footer_reason_link' => 'eich dewisiadau hysbysu',
+];
diff --git a/lang/cy/pagination.php b/lang/cy/pagination.php
new file mode 100644
index 00000000000..9cd781925e9
--- /dev/null
+++ b/lang/cy/pagination.php
@@ -0,0 +1,12 @@
+ '« Cynt',
+ 'next' => 'Nesa »',
+
+];
diff --git a/lang/cy/passwords.php b/lang/cy/passwords.php
new file mode 100644
index 00000000000..992c1d09321
--- /dev/null
+++ b/lang/cy/passwords.php
@@ -0,0 +1,15 @@
+ 'Rhaid i gyfrineiriau fod yn 8 nod o leiaf ac yn cyd-fynd â\'r cadarnhad.',
+ 'user' => "Ni allwn ddod o hyd i ddefnyddiwr gyda'r cyfeiriad e-bost hwn.",
+ 'token' => 'Mae\'r tocyn ailosod cyfrinair yn annilys ar gyfer y cyfeiriad e-bost hwn.',
+ 'sent' => 'Rydym wedi e-bostio eich dolen ailosod cyfrinair!',
+ 'reset' => 'Mae eich cyfrinair wedi\'i ailosod!',
+
+];
diff --git a/lang/cy/preferences.php b/lang/cy/preferences.php
new file mode 100644
index 00000000000..4a08ca49886
--- /dev/null
+++ b/lang/cy/preferences.php
@@ -0,0 +1,52 @@
+ 'Fy Nghyfrif',
+
+ 'shortcuts' => 'Llwybrau Byr',
+ 'shortcuts_interface' => 'Dewisiadau Llwybr Byr UI',
+ 'shortcuts_toggle_desc' => 'Yma gallwch alluogi neu analluogi llwybrau byr rhyngwyneb system ar y bysellfwrdd, a ddefnyddir ar gyfer llywio a gweithredoedd.',
+ 'shortcuts_customize_desc' => 'Gallwch addasu pob un o\'r llwybrau byr isod. Pwyswch eich cyfuniad o fysellau ar ôl dewis y mewnbwn ar gyfer llwybr byr.',
+ 'shortcuts_toggle_label' => 'Llwybrau byr bysellfwrdd wedi\'u galluogi',
+ 'shortcuts_section_navigation' => 'Llywio',
+ 'shortcuts_section_actions' => 'Gweithredoedd Cyffredin',
+ 'shortcuts_save' => 'Cadw Llwybrau Byr',
+ 'shortcuts_overlay_desc' => 'Noder: Pan fydd llwybrau byr yn cael eu galluogi, mae troshaen helpwr ar gael trwy bwyso "?" a fydd yn tynnu sylw at y llwybrau byr sydd ar gael ar gyfer camau gweithredu sydd i\'w gweld ar y sgrin ar hyn o bryd.',
+ 'shortcuts_update_success' => 'Mae’r dewisiadau llwybr byr wedi\'u diweddaru!',
+ 'shortcuts_overview_desc' => 'Rheoli llwybrau byr bysellfwrdd a gellir eu defnyddio i lywio trwy ryngwyneb defnyddiwr y system.',
+
+ 'notifications' => 'Dewisiadau Hysbysu',
+ 'notifications_desc' => 'Rheoli’r hysbysiadau e-bost a gewch pan fydd gweithgaredd penodol yn cael ei gyflawni o fewn y system.',
+ 'notifications_opt_own_page_changes' => 'Hysbysu am newidiadau i dudalennau yr wyf yn berchen arnynt',
+ 'notifications_opt_own_page_comments' => 'Hysbysu am sylwadau ar dudalennau yr wyf yn berchen arnynt',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Hysbysu am atebion i\'m sylwadau',
+ 'notifications_save' => 'Dewisiadau Cadw',
+ 'notifications_update_success' => 'Mae’r dewisiadau hysbysu wedi\'u diweddaru!',
+ 'notifications_watched' => 'Eitemau Gwylio ac Anwybyddu',
+ 'notifications_watched_desc' => 'Isod ceir yr eitemau sydd â dewisiadau gwylio penodol wedi\'u cymhwyso. I ddiweddaru eich dewisiadau ar gyfer y rhain, edrychwch ar yr eitem yna dewch o hyd i\'r opsiynau gwylio yn y bar ochr.',
+
+ 'auth' => 'Mynediad a Diogelwch',
+ 'auth_change_password' => 'Newid Cyfrinair',
+ 'auth_change_password_desc' => 'Newidiwch y cyfrinair rydych chi’n ei ddefnyddio i fewngofnodi i’r rhaglen. Rhaid i gyfrineiriau fod yn 8 nod o leiaf.',
+ 'auth_change_password_success' => 'Mae\'r cyfrinair wedi\'i ddiweddaru!',
+
+ 'profile' => 'Manylion Proffil',
+ 'profile_desc' => 'Rheoli manylion eich cyfrif sy\'n eich cynrychioli chi i ddefnyddwyr eraill, yn ogystal â manylion a ddefnyddir ar gyfer cyfathrebu a phersonoli systemau.',
+ 'profile_view_public' => 'Gweld Proffil Cyhoeddus',
+ 'profile_name_desc' => 'Ffurfweddwch eich enw arddangos a fydd yn weladwy i ddefnyddwyr eraill yn y system trwy\'r hyn yr ydych yn ei wneud, a\'r cynnwys rydych chi\'n berchen arno.',
+ 'profile_email_desc' => 'Bydd yr e-bost hwn yn cael ei ddefnyddio ar gyfer hysbysiadau a, gan ddibynnu ar ddilysiad system gweithredol, mynediad i’r system.',
+ 'profile_email_no_permission' => 'Yn anffodus, nid oes gennych ganiatâd i newid eich cyfeiriad e-bost. Os hoffech newid hwn, byddai angen i chi ofyn i weinyddwr newid hyn ar eich rhan.',
+ 'profile_avatar_desc' => 'Dewiswch lun a fydd yn cael ei ddefnyddio i’ch cynrychioli chi i eraill yn y system. Yn ddelfrydol, dylai\'r llun hwn fod yn sgwâr a thua 256px o led ac uchder.',
+ 'profile_admin_options' => 'Dewisiadau Gweinyddwr',
+ 'profile_admin_options_desc' => 'Gellir dod o hyd i ddewisiadau lefel gweinyddwyr ychwanegol, fel y rhai i reoli aseiniadau rôl, ar gyfer eich cyfrif defnyddiwr yn yr ardal "Gosodiadau > Defnyddiwr” o’r rhaglen.',
+
+ 'delete_account' => 'Dileu Cyfrif',
+ 'delete_my_account' => 'Dileu fy Nghyfrif',
+ 'delete_my_account_desc' => 'Bydd hyn yn dileu eich cyfrif defnyddiwr o\'r system yn llwyr. Ni fydd modd i chi adfer y cyfrif hwn na gwrthdroi\'r weithred hon. Bydd cynnwys rydych chi wedi\'i greu, megis tudalennau wedi\'u creu a delweddau wedi\'u huwchlwytho, yn parhau.',
+ 'delete_my_account_warning' => 'Ydych chi\'n siŵr eich bod eisiau dileu eich cyfrif?',
+];
diff --git a/lang/cy/settings.php b/lang/cy/settings.php
new file mode 100644
index 00000000000..f4fbf0bba1b
--- /dev/null
+++ b/lang/cy/settings.php
@@ -0,0 +1,374 @@
+ 'Gosodiadau',
+ 'settings_save' => 'Cadw Gosodiadau',
+ 'system_version' => 'Fersiwn System',
+ 'categories' => 'Categorïau',
+
+ // App Settings
+ 'app_customization' => 'Addasiad',
+ 'app_features_security' => 'Nodweddion & Diogelwch',
+ 'app_name' => 'Enw\'r Rhaglen',
+ 'app_name_desc' => 'Dangosir yr enw hwn yn y pennawd ac mewn unrhyw negeseuon e-bost a anfonir gan y system.',
+ 'app_name_header' => 'Dangos enw yn y pennyn',
+ 'app_public_access' => 'Mynediad Cyhoeddus',
+ 'app_public_access_desc' => 'Bydd galluogi\'r opsiwn hwn yn caniatáu i ymwelwyr, nad ydynt wedi mewngofnodi, gael mynediad at gynnwys yn achos BookStack.',
+ 'app_public_access_desc_guest' => 'Gellir rheoli mynediad i ymwelwyr cyhoeddus trwy\'r defnyddiwr "Gwestai".',
+ 'app_public_access_toggle' => 'Caniatáu mynediad i\'r cyhoedd',
+ 'app_public_viewing' => 'Caniatáu i\'r cyhoedd weld?',
+ 'app_secure_images' => 'Uwchlwytho Delwedd Diogelwch Uwch',
+ 'app_secure_images_toggle' => 'Galluogi uwchlwytho delwedd diogelwch uwch',
+ 'app_secure_images_desc' => 'Am resymau perfformiad, mae\'r holl ddelweddau yn gyhoeddus. Mae\'r opsiwn hwn yn ychwanegu llinyn ar hap, anodd ei ddyfalu o flaen urls delwedd. Sicrhau nad yw mynegeion cyfeiriadur yn cael eu galluogi i atal mynediad hawdd.',
+ 'app_default_editor' => 'Golygydd Tudalen Diofyn',
+ 'app_default_editor_desc' => 'Dewiswch pa olygydd fydd yn cael ei ddefnyddio yn ddiofyn wrth olygu tudalennau newydd. Gellir diystyru hyn ar lefel tudalen os yw’r caniatâd yn galluogi hyn.',
+ 'app_custom_html' => 'Cynnwys Pen HTML wedi’i deilwra',
+ 'app_custom_html_desc' => 'Bydd unrhyw gynnwys a ychwanegir yma yn cael ei fewnosod i waelod yr adran ar bob tudalen. Mae hyn yn ddefnyddiol ar gyfer diystyru arddulliau neu ychwanegu cod dadansoddeg.',
+ 'app_custom_html_disabled_notice' => 'Mae cynnwys pen HTML wedi\'i deilwra wedi’i analluogi ar y dudalen gosodiadau hon i sicrhau y gellir troi unrhyw newidiadau toriadol yn ôl.',
+ 'app_logo' => 'Logo’r Rhaglen',
+ 'app_logo_desc' => 'Defnyddir hwn ym mar pennawd y rhaglen, ymhlith ardaloedd eraill. Dylai\'r ddelwedd hon fod yn 86px o uchder. Bydd delweddau mawr yn cael eu graddio i lawr.',
+ 'app_icon' => 'Eicon yr Ap',
+ 'app_icon_desc' => 'Defnyddir yr eicon hwn ar gyfer tabiau porwr ac eiconau llwybr byr. Dylai hwn fod yn ddelwedd PNG sgwâr 256px.',
+ 'app_homepage' => 'Hafan y Rhaglen',
+ 'app_homepage_desc' => 'Dewiswch wedd i\'w dangos ar yr hafan yn hytrach na\'r wedd ddiofyn. Anwybyddir caniatâd tudalen ar gyfer tudalennau dethol.',
+ 'app_homepage_select' => 'Dewiswch dudalen',
+ 'app_footer_links' => 'Dolenni Troedynnau',
+ 'app_footer_links_desc' => 'Ychwanegwch ddolenni i\'w dangos o fewn troedyn y safle. Bydd y rhain yn cael eu harddangos ar waelod y rhan fwyaf o dudalennau, gan gynnwys y rhai nad oes angen mewngofnodi. Gallwch ddefnyddio label "trans:: i ddefnyddio cyfieithiadau wedi\'u diffinio gan y system. Er enghraifft: Bydd defnyddio "trans::common.privacy_policy" yn darparu\'r testun wedi’i gyfieithu "Polisi Preifatrwydd" a "trans::common.terms_of_service" yn darparu\'r testun wedi’i gyfieithu "Telerau Gwasanaeth".',
+ 'app_footer_links_label' => 'Label Dolen',
+ 'app_footer_links_url' => 'URL Dolen',
+ 'app_footer_links_add' => 'Ychwanegu Dolen Troedyn',
+ 'app_disable_comments' => 'Analluogi Sylwadau',
+ 'app_disable_comments_toggle' => 'Analluogi sylwadau',
+ 'app_disable_comments_desc' => 'Analluogi sylwadau ar draws pob tudalen yn y rhaglen. Nid yw\'r sylwadau presennol yn cael eu dangos.',
+
+ // Color settings
+ 'color_scheme' => 'Cynllun Lliw’r Rhaglen',
+ 'color_scheme_desc' => 'Gosodwch y lliwiau i\'w defnyddio yn rhyngwyneb defnyddiwr y rhaglen. Gellir ffurfweddu lliwiau ar wahân ar gyfer moddau tywyll a golau i gyd-fynd â\'r thema orau a sicrhau ei fod yn ddarllenadwy.',
+ 'ui_colors_desc' => 'Gosodwch liw sylfaenol y rhaglen a’r lliw diofyn y ddolen. Defnyddir y lliw sylfaenol yn bennaf ar gyfer baner y pennyn, y botymau ac addurniadau rhyngwyneb. Defnyddir lliw diofyn y ddolen ar gyfer dolenni a chamau gweithredu testun, o fewn cynnwys ysgrifenedig ac yn rhyngwyneb y rhaglen.',
+ 'app_color' => 'Prif Liw',
+ 'link_color' => 'Lliw Diofyn y Ddolen',
+ 'content_colors_desc' => 'Gosodwch liwiau ar gyfer pob elfen yn hierarchaeth trefn y dudalen. Argymhellir dewis lliwiau â disgleirdeb tebyg i\'r lliwiau diofyn ar gyfer darllenadwyedd.',
+ 'bookshelf_color' => 'Lliw Silff',
+ 'book_color' => 'Lliw Llyfr',
+ 'chapter_color' => 'Lliw Pennod',
+ 'page_color' => 'Lliw Tudalen',
+ 'page_draft_color' => 'Lliw Tudalen Ddrafft',
+
+ // Registration Settings
+ 'reg_settings' => 'Cofrestriad',
+ 'reg_enable' => 'Galluogi Cofrestru',
+ 'reg_enable_toggle' => 'Galluogi cofrestru',
+ 'reg_enable_desc' => 'Pan fydd cofrestru wedi\'i alluogi bydd modd i ddefnyddwyr gofrestru fel defnyddwyr y rhaglen. Wrth gofrestru maent yn cael un rôl defnyddiwr diofyn.',
+ 'reg_default_role' => 'Rôl defnyddiwr diofyn ar ôl cofrestru',
+ 'reg_enable_external_warning' => 'Anwybyddir y dewis uchod tra bod dilysu LDAP neu SAML allanol yn weithredol. Bydd cyfrifon defnyddwyr ar gyfer aelodau nad ydynt yn bodoli yn cael eu creu\'n awtomatig os bydd dilysiad, yn erbyn y system allanol sy\'n cael ei defnyddio, yn llwyddiannus.',
+ 'reg_email_confirmation' => 'Cadarnhad E-bost',
+ 'reg_email_confirmation_toggle' => 'Angen cadarnhad e-bost',
+ 'reg_confirm_email_desc' => 'Os defnyddir cyfyngiad parth, bydd angen cadarnhad e-bost a bydd yr opsiwn hwn yn cael ei anwybyddu.',
+ 'reg_confirm_restrict_domain' => 'Cyfyngiad Parth',
+ 'reg_confirm_restrict_domain_desc' => 'Rhowch restr wedi\'i gwahanu gan goma o barthau e-bost yr hoffech gyfyngu cofrestriad iddynt. Bydd defnyddwyr yn cael e-bost i gadarnhau eu cyfeiriad cyn cael caniatâd i ryngweithio â\'r rhaglen. Noder y bydd modd i ddefnyddwyr newid eu cyfeiriadau e-bost ar ôl cofrestru\'n llwyddiannus.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Ni osodwyd cyfyngiad',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Cynnal',
+ 'maint_image_cleanup' => 'Glanhau Delweddau',
+ 'maint_image_cleanup_desc' => 'Sganio tudalennau a chynnwys adolygu i wirio pa ddelweddau a darluniau sy\'n cael eu defnyddio ar hyn o bryd a pha ddelweddau sy\'n cael eu diddymu. Gwnewch yn siŵr eich bod yn creu cronfa ddata lawn a chopi wrth gefn o’r ddelwedd cyn rhedeg hwn.',
+ 'maint_delete_images_only_in_revisions' => 'Hefyd dilëwch ddelweddau sydd ond yn bodoli mewn dhen dudalennau',
+ 'maint_image_cleanup_run' => 'Rhedeg Glanhau',
+ 'maint_image_cleanup_warning' => 'Daethpwyd o hyd i :count o ddelweddau nas defnyddiwyd o bosibl. Ydych chi\'n siŵr eich bod eisiau dileu’r delweddau hyn?',
+ 'maint_image_cleanup_success' => 'daethpwyd o hyd i :count o ddelweddau nas defnyddiwyd o bosibl a chawsant eu dileu!',
+ 'maint_image_cleanup_nothing_found' => 'Daethpwyd o hyd i ddim ddelweddau, Dim byd wedi\'i dileu!',
+ 'maint_send_test_email' => 'Anfon E-bost Prawf',
+ 'maint_send_test_email_desc' => 'Mae hyn yn anfon e-bost prawf i\'ch cyfeiriad e-bost a nodir yn eich proffil.',
+ 'maint_send_test_email_run' => 'Anfon e-bost prawf',
+ 'maint_send_test_email_success' => 'Anfonwyd e-bost at :address',
+ 'maint_send_test_email_mail_subject' => 'E-bost Prawf',
+ 'maint_send_test_email_mail_greeting' => 'Mae\'n ymddangos bod anfon e-bost yn gweithio!',
+ 'maint_send_test_email_mail_text' => 'Llongyfarchiadau! Gan eich bod wedi derbyn yr hysbysiad e-bost hwn, mae\'n ymddangos bod eich gosodiadau e-bost wedi\'u ffurfweddu\'n iawn.',
+ 'maint_recycle_bin_desc' => 'Caiff silffoedd, llyfrau, penodau a thudalennau wedi\'u dileu eu hanfon i’r bin ailgylchu fel y gellir eu hadfer neu eu dileu\'n barhaol. Bydd eitemau hŷn yn y bin ailgylchu yn cael eu dileu’n awtomatig ar ôl ychydig o bosibl, gan ddibynnu ar ffurfweddiad y system.',
+ 'maint_recycle_bin_open' => 'Agor y Bin Ailgylchu',
+ 'maint_regen_references' => 'Atgynhyrchu Cyfeiriadau',
+ 'maint_regen_references_desc' => 'Bydd y weithred hon yn ailadeiladu\'r mynegai cyfeirio traws-eitem yn y gronfa ddata. Fel arfer, caiff hyn ei drin yn awtomatig ond gall y weithred hon fod yn ddefnyddiol i fynegeio hen gynnwys neu gynnwys a ychwanegwyd trwy ddulliau answyddogol.',
+ 'maint_regen_references_success' => 'Mae’r mynegai cyfeirio wedi cael ei atgynhyrchu!',
+ 'maint_timeout_command_note' => 'Noder: Gall y weithred hon gymryd amser i redeg, a all arwain at faterion amseru mewn rhai amgylcheddau gwe. Fel dewis arall, cyflawnir y weithred hon gan ddefnyddio gorchymyn terfynell.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Bin Ailgylchu',
+ 'recycle_bin_desc' => 'Yma gallwch adfer eitemau sydd wedi\'u dileu neu ddewis eu dileu yn barhaol oddi ar y system. Nid yw’r rhestr hon wedi’i hidlo yn wahanol i restrau gweithgaredd tebyg yn y system lle mae hidlwyr caniatâd yn cael eu cymhwyso.',
+ 'recycle_bin_deleted_item' => 'Eitem wedi\'i Dileu',
+ 'recycle_bin_deleted_parent' => 'Rhiant',
+ 'recycle_bin_deleted_by' => 'Dilëwyd gan',
+ 'recycle_bin_deleted_at' => 'Amser Dileu',
+ 'recycle_bin_permanently_delete' => 'Dileu yn Barhaol',
+ 'recycle_bin_restore' => 'Adfer',
+ 'recycle_bin_contents_empty' => 'Mae\'r bin ailgylchu yn wag ar hyn o bryd',
+ 'recycle_bin_empty' => 'Gwagio’r Bin Ailgylchu',
+ 'recycle_bin_empty_confirm' => 'Bydd hyn yn dileu pob eitem yn y bin ailgylchu yn barhaol gan gynnwys popeth sydd wedi\'i gynnwys ym mhob eitem. Ydych chi\'n siŵr eich bod am wagio’r bin ailgylchu?',
+ 'recycle_bin_destroy_confirm' => 'Bydd y weithred hon yn dileu\'r eitem hon o\'r system yn barhaol, ynghyd ag unrhyw elfennau plentyn a restrir isod, ac ni fyddwch yn gallu adfer y cynnwys hwn. Ydych chi\'n siŵr eich bod eisiau dileu\'r eitem hon yn barhaol?',
+ 'recycle_bin_destroy_list' => 'Eitemau i\'w Dinistrio',
+ 'recycle_bin_restore_list' => 'Eitemau i\'w Hadfer',
+ 'recycle_bin_restore_confirm' => 'Bydd y weithred hon yn adfer yr eitem a ddilëwyd, gan gynnwys unrhyw elfennau plentyn, i\'w lleoliad gwreiddiol. Os yw\'r lleoliad gwreiddiol wedi\'i ddileu ers hynny, a’i fod bellach yn y bin ailgylchu, bydd angen adfer yr eitem riant hefyd.',
+ 'recycle_bin_restore_deleted_parent' => 'Mae rhiant yr eitem hon hefyd wedi\'i dileu. Bydd y rhain yn parhau i fod wedi’u dileu nes bod y rhiant hwnnw hefyd yn cael ei adfer.',
+ 'recycle_bin_restore_parent' => 'Adfer Rhiant',
+ 'recycle_bin_destroy_notification' => 'Dilëwyd cyfanswm o :count o eitemau o\'r bin ailgylchu.',
+ 'recycle_bin_restore_notification' => 'Adferwyd cyfanswm o :count o eitemau o\'r bin ailgylchu.',
+
+ // Audit Log
+ 'audit' => 'Log Awdit',
+ 'audit_desc' => 'Mae\'r cofnod archwilio hwn yn dangos rhestr o weithgareddau sydd wedi\'u holrhain yn y system. Nid yw’r rhestr hon wedi’i hidlo yn wahanol i restrau gweithgaredd tebyg yn y system lle mae hidlwyr caniatâd yn cael eu cymhwyso.',
+ 'audit_event_filter' => 'Hidlydd Digwyddiad',
+ 'audit_event_filter_no_filter' => 'Dim Fidlydd',
+ 'audit_deleted_item' => 'Eitem wedi\'i Dileu',
+ 'audit_deleted_item_name' => 'Enw: :name',
+ 'audit_table_user' => 'Defnyddiwr',
+ 'audit_table_event' => 'Digwyddiad',
+ 'audit_table_related' => 'Eitem neu Fanylion Cysylltiedig',
+ 'audit_table_ip' => 'Cyfeiriad IP',
+ 'audit_table_date' => 'Dyddiad Gweithgaredd',
+ 'audit_date_from' => 'Amrediad Dyddiad O',
+ 'audit_date_to' => 'Amrediad Dyddiad Tan',
+
+ // Role Settings
+ 'roles' => 'Rolau',
+ 'role_user_roles' => 'Rolau Defnyddiwr',
+ 'roles_index_desc' => 'Defnyddir rolau i grwpio defnyddwyr a rhoi caniatâd system i\'w haelodau. Pan fydd defnyddiwr yn aelod o sawl rôl, bydd y breintiau a roddir yn pentyrru a bydd y defnyddiwr yn etifeddu pob gallu.',
+ 'roles_x_users_assigned' => ':count defnyddiwr wedi\'u clustnodi|:count o ddefnyddwyr wedi\'u clustnodi',
+ 'roles_x_permissions_provided' => ':count caniatâd|:count caniatâd',
+ 'roles_assigned_users' => 'Clustnodi Defnyddwyr',
+ 'roles_permissions_provided' => 'Darparu Caniatâd',
+ 'role_create' => 'Creu Rôl Newydd',
+ 'role_delete' => 'Dileu Rôl',
+ 'role_delete_confirm' => 'Bydd hyn yn dileu\'r rôl gyda\'r enw \':roleName\'.',
+ 'role_delete_users_assigned' => 'Mae gan y rôl hon :userCount o ddefnyddwyr wedi’u clustnodi iddi. Os hoffech chi fudo\'r defnyddwyr o\'r rôl hon dewiswch rôl newydd isod.',
+ 'role_delete_no_migration' => "Peidiwch â mudo defnyddwyr",
+ 'role_delete_sure' => 'Wyt ti\'n bendant eisiau dileu\'r rôl hwn?',
+ 'role_edit' => 'Golygu Rôl',
+ 'role_details' => 'Manylion Rôl',
+ 'role_name' => 'Enw Rôl',
+ 'role_desc' => 'Disgrifiad Byr o’r Rôl',
+ 'role_mfa_enforced' => 'Angen Dilysu Aml-Ffactor',
+ 'role_external_auth_id' => 'ID Dilysu Allanol',
+ 'role_system' => 'Caniatâd System',
+ 'role_manage_users' => 'Rheoli defnyddwyr',
+ 'role_manage_roles' => 'Rheoli rolau & chaniatâd rolau',
+ 'role_manage_entity_permissions' => 'Rheoli caniatâd pob llyfr, pennod a thudalen',
+ 'role_manage_own_entity_permissions' => 'Rheoli caniatâd eich llyfr, pennod a thudalennau eich hun',
+ 'role_manage_page_templates' => 'Rheoli templedi tudalen',
+ 'role_access_api' => 'Mynediad i Ryngwyneb Rhaglennu Cymwysiadau (API) system',
+ 'role_manage_settings' => 'Rheoli gosodiadau apiau',
+ 'role_export_content' => 'Cynnwys allforio',
+ 'role_import_content' => 'Mewnforio Cynnwys',
+ 'role_editor_change' => 'Newid golygydd tudalen',
+ 'role_notifications' => 'Derbyn a rheoli hysbysiadau',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Caniatâd Asedau',
+ 'roles_system_warning' => 'Byddwch yn ymwybodol y gall mynediad i unrhyw un o\'r tri chaniatâd uchod ganiatáu i ddefnyddiwr newid eu breintiau eu hunain neu freintiau eraill yn y system. Neilltuo rolau gyda\'r caniatâd hyn i ddefnyddwyr dibynadwy yn unig.',
+ 'role_asset_desc' => 'Mae\'r caniatâd hwn yn rheoli mynediad diofyn i\'r asedau o fewn y system. Bydd caniatâd ar Lyfrau, Penodau a Thudalennau yn diystyru\'r caniatâd hwn.',
+ 'role_asset_admins' => 'Mae gweinyddwyr yn cael mynediad awtomatig i\'r holl gynnwys ond gall yr opsiynau hyn ddangos neu guddio opsiynau UI.',
+ 'role_asset_image_view_note' => 'Mae hyn yn ymwneud â gwelededd o fewn y rheolwr delweddau. Bydd mynediad gwirioneddol i ffeiliau delwedd wedi\'u huwchlwytho yn dibynnu ar opsiwn storio delwedd y system.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Popeth',
+ 'role_own' => 'Meddu',
+ 'role_controlled_by_asset' => 'Wedi\'u rheoli gan yr ased y maent yn cael eu huwchlwytho iddo',
+ 'role_save' => 'Cadw Rôl',
+ 'role_users' => 'Defnyddwyr yn y rôl hon',
+ 'role_users_none' => 'Nid oes unrhyw ddefnyddwyr wedi’u neilltuo i\'r rôl hon ar hyn o bryd',
+
+ // Users
+ 'users' => 'Defnyddwyr',
+ 'users_index_desc' => 'Creu a rheoli cyfrifon defnyddwyr unigol o fewn y system. Defnyddir cyfrifon defnyddwyr ar gyfer mewngofnodi a phriodoli cynnwys a gweithgaredd. Mae caniatâd mynediad yn seiliedig ar rôl yn bennaf ond gall perchenogaeth cynnwys defnyddwyr, ymhlith ffactorau eraill, hefyd effeithio ar ganiatâd a mynediad.',
+ 'user_profile' => 'Proffil Defnyddiwr',
+ 'users_add_new' => 'Ychwanegu Defnyddiwr Newydd',
+ 'users_search' => 'Chwilio Defnyddwyr',
+ 'users_latest_activity' => 'Gweithgaredd Diweddaraf',
+ 'users_details' => 'Manylion Defnyddiwr',
+ 'users_details_desc' => 'Gosodwch enw arddangos a chyfeiriad e-bost ar gyfer y defnyddiwr hwn. Bydd y cyfeiriad e-bost yn cael ei ddefnyddio ar gyfer mewngofnodi i’r cais.',
+ 'users_details_desc_no_email' => 'Gosodwch enw arddangos ar gyfer y defnyddiwr hwn fel y gall eraill eu hadnabod.',
+ 'users_role' => 'Rolau Defnyddiwr',
+ 'users_role_desc' => 'Dewiswch ba rolau a neilltuir i’r defnyddiwr hwn. Os yw defnyddiwr yn cael ei neilltuo i rolau lluosog, bydd y caniatâd o\'r rolau hynny yn pentyrru a byddant yn derbyn pob gallu o\'r rolau a neilltuwyd.',
+ 'users_password' => 'Cyfrinair Defnyddiwr',
+ 'users_password_desc' => 'Gosodwch gyfrinair a ddefnyddir i fewngofnodi i\'r rhaglen. Rhaid i gyfrineiriau fod yn 8 nod o leiaf.',
+ 'users_send_invite_text' => 'Gallwch ddewis anfon e-bost gwahoddiad i\'r defnyddiwr hwn sy\'n caniatáu iddynt osod eu cyfrinair eu hunain neu gallwch osod eu cyfrinair eich hun.',
+ 'users_send_invite_option' => 'Anfon e-bost gwahodd i’r defnyddiwr',
+ 'users_external_auth_id' => 'External Authentication ID',
+ 'users_external_auth_id_desc' => 'Pan fydd system ddilysu allanol yn cael ei defnyddio (megis SAML2, OIDC neu LDAP) dyma\'r ID sy\'n cysylltu\'r defnyddiwr BookStack hwn â\'r cyfrif system ddilysu. Gallwch anwybyddu\'r maes hwn os ydych chi\'n defnyddio\'r dilysiad diofyn e-bost.',
+ 'users_password_warning' => 'Llenwch y canlynol os hoffech newid y cyfrinair ar gyfer y defnyddiwr hwn yn unig.',
+ 'users_system_public' => 'Mae\'r defnyddiwr hwn yn cynrychioli unrhyw westeion sy\'n ymweld â\'ch enghraifft. Ni ellir ei ddefnyddio i fewngofnodi ond mae\'n cael ei aseinio\'n awtomatig.',
+ 'users_delete' => 'Dileu Defnyddiwr',
+ 'users_delete_named' => 'Dileu defnyddiwr :userName',
+ 'users_delete_warning' => 'Bydd hyn yn dileu\'r defnyddiwr hwn yn llawn gyda\'r enw \':userName\' o\'r system.',
+ 'users_delete_confirm' => 'Ydych chi\'n siŵr eich bod eisiau dileu’r defnyddiwr hwn?',
+ 'users_migrate_ownership' => 'Mudo Perchnogaeth',
+ 'users_migrate_ownership_desc' => 'Dewiswch ddefnyddiwr yma os ydych chi am i ddefnyddiwr arall ddod yn berchennog ar yr holl eitemau sy\'n eiddo i\'r defnyddiwr hwn ar hyn o bryd.',
+ 'users_none_selected' => 'Ni ddewiswyd defnyddiwr',
+ 'users_edit' => 'Golygu Defnyddiwr',
+ 'users_edit_profile' => 'Golygu Proffil',
+ 'users_avatar' => 'Afatar Defnyddiwr',
+ 'users_avatar_desc' => 'Dewiswch ddelwedd i gynrychioli\'r defnyddiwr hwn. Dylai hwn fod yn ddelwedd sgwâr tua 256px.',
+ 'users_preferred_language' => 'Dewis Iaith',
+ 'users_preferred_language_desc' => 'Bydd yr opsiwn hwn yn newid yr iaith a ddefnyddir ar gyfer rhyngwyneb defnyddiwr y rhaglen. Ni fydd hyn yn effeithio ar unrhyw gynnwys a grëwyd gan y defnyddiwr.',
+ 'users_social_accounts' => 'Cyfrifon Cymdeithasol',
+ 'users_social_accounts_desc' => 'Gweld statws y cyfrifon cymdeithasol cysylltiedig ar gyfer y defnyddiwr hwn. Gellir defnyddio cyfrifon cymdeithasol yn ychwanegol at y system ddilysu sylfaenol ar gyfer mynediad system.',
+ 'users_social_accounts_info' => 'Yma gallwch gysylltu eich cyfrifon eraill ar gyfer mewngofnodi cyflymach a haws. Nid yw datgysylltu cyfrif yma yn diddymu mynediad awdurdodedig blaenorol. Diddymu mynediad o\'ch gosodiadau proffil ar y cyfrif cymdeithasol cysylltiedig.',
+ 'users_social_connect' => 'Cysylltu Cyfrif',
+ 'users_social_disconnect' => 'Datgysylltu Cyfrif',
+ 'users_social_status_connected' => 'Wedi Cysylltu',
+ 'users_social_status_disconnected' => 'Wedi Datgysylltu',
+ 'users_social_connected' => 'Mae eich cyfrif :socialAccount wedi\'i gysylltu\'n llwyddiannus â\'ch proffil.',
+ 'users_social_disconnected' => 'Mae eich cyfrif :socialAccount wedi\'i ddatgysylltu\'n llwyddiannus o\'ch proffil.',
+ 'users_api_tokens' => 'Tocynnau API',
+ 'users_api_tokens_desc' => 'Creu a rheoli\'r tocynnau mynediad a ddefnyddir i ddilysu gyda\'r API BookStack REST. Rheolir caniatâd ar gyfer yr API trwy\'r defnyddiwr y mae\'r tocyn yn perthyn iddo.',
+ 'users_api_tokens_none' => 'Nid oes tocynnau API wedi\'u creu ar gyfer y defnyddiwr hwn',
+ 'users_api_tokens_create' => 'Creu Tocyn',
+ 'users_api_tokens_expires' => 'Yn dod i ben',
+ 'users_api_tokens_docs' => 'Dogfennaeth API',
+ 'users_mfa' => 'Dilysu Aml-Ffactor',
+ 'users_mfa_desc' => 'Gosod dilysu aml-ffactor fel haen ychwanegol o ddiogelwch ar gyfer eich cyfrif defnyddiwr.',
+ 'users_mfa_x_methods' => ':count dull wedi\'i ffurfweddu|:count dull wedi\'u ffurfweddu',
+ 'users_mfa_configure' => 'Ffurfweddu Dulliau',
+
+ // API Tokens
+ 'user_api_token_create' => 'Creu Tocyn API',
+ 'user_api_token_name' => 'Enw',
+ 'user_api_token_name_desc' => 'Rhowch enw darllenadwy i\'ch tocyn i\'ch atgoffa o\'i bwrpas arfaethedig yn y dyfodol.',
+ 'user_api_token_expiry' => 'Dyddiad Dod i Ben',
+ 'user_api_token_expiry_desc' => 'Gosodwch ddyddiad pan fydd y tocyn hwn yn dod i ben. Ar ôl y dyddiad hwn, ni fydd ceisiadau a wneir gan ddefnyddio\'r tocyn hwn yn gweithio mwyach. Bydd gadael y maes hwn yn wag yn gosod dyddiad dod i ben 100 mlynedd i\'r dyfodol.',
+ 'user_api_token_create_secret_message' => 'Yn syth ar ôl creu\'r tocyn hwn bydd "ID tocyn" a "Chyfrinach Tocyn" yn cael eu cynhyrchu a\'u harddangos. Dim ond unwaith y bydd y gyfrinach yn cael ei dangos, felly gwnewch yn siŵr eich bod yn copïo\'r gwerth i rywle diogel cyn bwrw ymlaen.',
+ 'user_api_token' => 'Tocyn API',
+ 'user_api_token_id' => 'ID Tocyn',
+ 'user_api_token_id_desc' => 'Mae hwn yn ddynodwr a gynhyrchir gan y system na ellir ei olygu ar gyfer y tocyn hwn y bydd angen ei ddarparu mewn ceisiadau API.',
+ 'user_api_token_secret' => 'Cyfrinach Tocyn',
+ 'user_api_token_secret_desc' => 'Mae hwn yn gyfrinach a gynhyrchir gan y system ar gyfer y tocyn hwn y bydd angen ei ddarparu mewn ceisiadau API. Dim ond unwaith y bydd hyn yn cael ei arddangos, felly copïwch y gwerth hwn i rywle diogel.',
+ 'user_api_token_created' => 'Crëwyd tocyn :timeAgo',
+ 'user_api_token_updated' => 'Diweddarwyd tocyn :timeAgo',
+ 'user_api_token_delete' => 'Dileu Tocyn',
+ 'user_api_token_delete_warning' => 'Bydd hyn yn dileu\'r tocyn API hwn yn llawn gyda\'r enw \':tokenName\' o\'r system.',
+ 'user_api_token_delete_confirm' => 'Ydych chi\'n siŵr eich bod eisiau dileu’r tocyn API hwn?',
+
+ // Webhooks
+ 'webhooks' => 'Gwe-fachau',
+ 'webhooks_index_desc' => 'Mae gwe-fachau’n ffordd o anfon data at URL allanol pan fydd rhai gweithredoedd a digwyddiadau yn digwydd o fewn y system sy\'n caniatáu integreiddio ar sail digwyddiadau gyda llwyfannau allanol megis systemau negeseuon neu hysbysu.',
+ 'webhooks_x_trigger_events' => ':count sbarduno digwyddiad|:count sbarduno digwyddiadau',
+ 'webhooks_create' => 'Creu Gwe-fachyn Newydd',
+ 'webhooks_none_created' => 'Nid oes unrhyw we-fachau wedi\'u creu eto.',
+ 'webhooks_edit' => 'Golygu Gwe-fachyn',
+ 'webhooks_save' => 'Cadw Gwe-fachyn',
+ 'webhooks_details' => 'Manylion Gwe-fachyn',
+ 'webhooks_details_desc' => 'Darparu enw defnyddiwr cyfeillgar a chyfeiriad POST fel lleoliad ar gyfer anfon y data gwe-fachyn iddo.',
+ 'webhooks_events' => 'Digwyddiadau Gwe-fachyn',
+ 'webhooks_events_desc' => 'Dewiswch yr holl ddigwyddiadau a ddylai sbarduno\'r gwe-fachyn hwn i gael ei alw.',
+ 'webhooks_events_warning' => 'Cadwch mewn cof y bydd y digwyddiadau hyn yn cael eu sbarduno ar gyfer yr holl ddigwyddiadau a ddewiswyd, hyd yn oed os rhoddir caniatâd arferol ar waith. Gwnewch yn siŵr na fydd defnyddio\'r gwe-fachyn hwn yn datgelu cynnwys cyfrinachol.',
+ 'webhooks_events_all' => 'Holl ddigwyddiadau\'r system',
+ 'webhooks_name' => 'Enw Gwe-fachyn',
+ 'webhooks_timeout' => 'Terfyn Amser Gwneud Cais Gwe-fachyn (Eiliadau)',
+ 'webhooks_endpoint' => 'Pwynt Terfyn Gwe-fachyn',
+ 'webhooks_active' => 'Gwe-fachyn Byw',
+ 'webhook_events_table_header' => 'Digwyddiadau',
+ 'webhooks_delete' => 'Dileu Gwe-fachyn',
+ 'webhooks_delete_warning' => 'Bydd hyn yn dileu\'r gwe-fachyn hwn yn llawn gyda\'r enw \':webhookName\', o\'r system.',
+ 'webhooks_delete_confirm' => 'Ydych chi\'n siŵr eich bod eisiau dileu’r gwe-fachyn hwn?',
+ 'webhooks_format_example' => 'Enghraifft Fformat Gwe-fachyn',
+ 'webhooks_format_example_desc' => 'Anfonir data Gwe-fachyn fel cais POST i\'r pwynt terfyn wedi\'i ffurfweddu fel JSON yn dilyn y fformat isod. Mae\'r nodweddion "related_item" ac "url" yn ddewisol a byddant yn dibynnu ar y math o ddigwyddiad a sbardunir.',
+ 'webhooks_status' => 'Statws Gwe-fachyn',
+ 'webhooks_last_called' => 'Galwyd Ddiwethaf:',
+ 'webhooks_last_errored' => 'Cafwyd Gwall Ddiwethaf:',
+ 'webhooks_last_error_message' => 'Neges Wall Ddiwethaf:',
+
+ // Licensing
+ 'licenses' => 'Trwyddedau',
+ 'licenses_desc' => 'Mae\'r dudalen hon yn manylu ar wybodaeth am drwydded ar gyfer BookStack yn ychwanegol at y prosiectau a’r llyfrgelloedd a ddefnyddir o fewn BookStack. Dim ond mewn cyd-destun datblygu y gellir defnyddio llawer o’r prosiectau a restrir.',
+ 'licenses_bookstack' => 'Trwydded BookStack',
+ 'licenses_php' => 'Trwyddedau Llyfrgell PHP',
+ 'licenses_js' => 'Trwyddedau Llyfrgell JavaScript',
+ 'licenses_other' => 'Trwyddedau Eraill',
+ 'license_details' => 'Manylion y Drwydded',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/cy/validation.php b/lang/cy/validation.php
new file mode 100644
index 00000000000..63a19bf238d
--- /dev/null
+++ b/lang/cy/validation.php
@@ -0,0 +1,123 @@
+ 'Rhaid derbyn y :attribute.',
+ 'active_url' => 'Nid ywr :attribute yn URL dilys.',
+ 'after' => 'Rhaid i\'r :attribute bod yn dyddiad ar ol :date.',
+ 'alpha' => 'Rhaid ir :attribute cynnwys llythrennau yn unig.',
+ 'alpha_dash' => 'Dim ond llythrennau, rhifau, llinellau toriad a thanlinellau y gall y :attribute gynnwys.',
+ 'alpha_num' => 'Rhaid ir :attribute cynnwys llythrennau a rhifau yn unig.',
+ 'array' => 'Rhaid i :attribute fod yn array.',
+ 'backup_codes' => 'Nid yw\'r cod a ddarparwyd yn ddilys neu mae eisoes wedi\'i ddefnyddio.',
+ 'before' => 'Rhaid i\'r :attribute bod yn dyddiad cyn :date.',
+ 'between' => [
+ 'numeric' => 'Rhaid i\'r :attribute bod rhwng :min a :max.',
+ 'file' => 'Rhaid i\'r :attribute bod rhwng :min a :max kilobytes.',
+ 'string' => 'Rhaid i\'r :attribute bod rhwng :min a :max cymeriadau.',
+ 'array' => 'Rhaid i\'r :attribute cael rhwng :min a :max o eitemau.',
+ ],
+ 'boolean' => 'Rhaid i :attribute fod yn wir neu ddim.',
+ 'confirmed' => 'Dydi\'r cadarnhad :attribute ddim yn cydfynd.',
+ 'date' => 'Nid yw\'r :attribute yn dyddiad dilys.',
+ 'date_format' => 'Nid yw\'r :attribute yn cydfynd ar format :format.',
+ 'different' => 'Rhaid i :attribute a :other bod yn wahanol.',
+ 'digits' => 'Rhai i\'r :attribute bod yn :digits o ddigidau.',
+ 'digits_between' => 'Rhaid i\'r :attribute bod rhwng :min a :max o digidau.',
+ 'email' => 'Rhaid i\'r :attribute bod yn cyfeiriad e-bost dilys.',
+ 'ends_with' => 'Rhaid i\'r :attribute orffen gydag un o\'r canlynol: :values',
+ 'file' => 'Rhaid darparu\'r :attribute fel ffeil ddilys.',
+ 'filled' => 'Mae angen llenwi\'r maes :attribute.',
+ 'gt' => [
+ 'numeric' => 'Rhaid i\'r :attribute fod yn fwy na :value.',
+ 'file' => 'Rhaid i\'r :attribute fod yn fwy na :value kilobytes.',
+ 'string' => 'Rhaid i\'r :attribute fod yn fwy na :value cymeriadau.',
+ 'array' => 'Rhaid i\'r :attribute fod yn fwy na :value eitemau.',
+ ],
+ 'gte' => [
+ 'numeric' => 'Rhaid i’r :attribute fod yn fwy na, neu’n gyfartal â :value.',
+ 'file' => 'Rhaid i’r :attribute fod yn fwy na, neu’n gyfartal â :value cilobeit.',
+ 'string' => 'Rhaid i’r :attribute fod yn fwy na, neu’n gyfartal â :value nod.',
+ 'array' => 'Rhaid i’r :attribute fod â :value o eitemau neu fwy.',
+ ],
+ 'exists' => 'Mae\'r dewis :attribute yn annilys.',
+ 'image' => 'Rhaid i’r :attribute fod yn ddelwedd.',
+ 'image_extension' => 'Rhaid i’r :attribute fod ag estyniad delwedd dilys & gefnogir.',
+ 'in' => 'Mae\'r dewis :attribute yn annilys.',
+ 'integer' => 'Rhaid i’r :attribute fod yn gyfanrif.',
+ 'ip' => 'Rhaid i’r :attribute fod yn gyfeiriad IP dilys.',
+ 'ipv4' => 'Rhaid i’r :attribute fod yn gyfeiriad IPv4 dilys.',
+ 'ipv6' => 'Rhaid i’r :attribute fod yn gyfeiriad IPv6 dilys.',
+ 'json' => 'Rhaid i’r :attribute fod yn llinyn JSON dilys.',
+ 'lt' => [
+ 'numeric' => 'Rhaid i’r :attribute fod yn llai na :value.',
+ 'file' => 'Rhaid i’r :attribute fod yn llai na :value cilobeit.',
+ 'string' => 'Rhaid i’r :attribute fod yn llai na :value nod.',
+ 'array' => 'Rhaid i’r :attribute fod â llai na :value o eitemau.',
+ ],
+ 'lte' => [
+ 'numeric' => 'Rhaid i’r :attribute fod yn llai na, neu’n gyfartal â :value.',
+ 'file' => 'Rhaid i’r :attribute fod yn llai na, neu’n gyfartal â :value cilobeit.',
+ 'string' => 'Rhaid i’r :attribute fod yn llai na, neu’n gyfartal â :value nod.',
+ 'array' => 'Ni ddylai’r :attribute fod â mwy na :value o eitemau.',
+ ],
+ 'max' => [
+ 'numeric' => 'Ni ddylai’r :attribute fod yn fwy na :max.',
+ 'file' => 'Ni ddylai’r :attribute fod yn fwy na :max cilobeit.',
+ 'string' => 'Ni ddylai’r :attribute fod yn fwy na :max nod.',
+ 'array' => 'Ni ddylai’r :attribute fod â mwy na :max o eitemau.',
+ ],
+ 'mimes' => 'Rhaid i’r :attribute fod yn ffeil o fath: :values.',
+ 'min' => [
+ 'numeric' => 'Rhaid i’r :attribute fod yn o leiaf :min.',
+ 'file' => 'Rhaid i’r :attribute fod yn o leiaf :min cilobeit.',
+ 'string' => 'Rhaid i’r :attribute fod yn o leiaf :min nod.',
+ 'array' => 'Rhaid i’r :attribute fod â llai na :min o eitemau.',
+ ],
+ 'not_in' => 'Mae\'r dewis :attribute yn annilys.',
+ 'not_regex' => 'Mae’r fformat :attribute yn annilys.',
+ 'numeric' => 'Rhaid i’r :attribute fod yn rhif.',
+ 'regex' => 'Mae’r fformat :attribute yn annilys.',
+ 'required' => 'Mae :attribute yn faes gofynnol.',
+ 'required_if' => 'Mae :attribute yn faes gofynnol pan fo :other yn :value.',
+ 'required_with' => 'Mae :attribute yn faes gofynnol pan fo :values yn bresennol.',
+ 'required_with_all' => 'Mae :attribute yn faes gofynnol pan fo :values yn bresennol.',
+ 'required_without' => 'Mae :attitude yn faes gofynnol pan nad yw :values yn bresennol.',
+ 'required_without_all' => 'Mae angen y maes :attribute os dydi\'r un o :values yn bresennol.',
+ 'same' => 'Mae’n rhaid i’r :attribute a :other gyd-fynd.',
+ 'safe_url' => 'Efallai na fydd y ddolen a ddarperir yn ddiogel.',
+ 'size' => [
+ 'numeric' => 'Rhaid i’r :attribute fod yn :size.',
+ 'file' => 'Rhaid i’r :attribute fod yn :size cilobeit.',
+ 'string' => 'Rhaid i’r :attribute fod yn :size nod.',
+ 'array' => 'Rhaid i’r :attribute gynnwys eitemau :size.',
+ ],
+ 'string' => 'Rhaid i’r :attribute fod yn llinyn.',
+ 'timezone' => 'Rhaid i’r :attribute fod yn barth dilys.',
+ 'totp' => 'Nid yw\'r cod a ddarperir yn ddilys neu mae wedi dod i ben.',
+ 'unique' => 'Mae’r :attribute eisoes wedi ei gymryd.',
+ 'url' => 'Mae’r fformat :attribute yn annilys.',
+ 'uploaded' => 'Nid oedd modd uwchlwytho’r ffeil. Efallai na fydd y gweinydd yn derbyn ffeiliau o\'r maint hwn.',
+
+ 'zip_file' => 'Mae\'r :attribute angen cyfeirio at ffeil yn y ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'Mae\'r :attribute angen cyfeirio at ffeil o fath :valid Types, sydd wedi\'i ffeindio :foundType.',
+ 'zip_model_expected' => 'Dyswgyl am wrthrych data ond wedi ffeindio ":type".',
+ 'zip_unique' => 'Mae rhaid y :attribute fod yn unigol i\'r fath o wrthrych yn y ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Rhaid cadarnhau cyfrinair',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/da/activities.php b/lang/da/activities.php
new file mode 100644
index 00000000000..fa11e8e3afb
--- /dev/null
+++ b/lang/da/activities.php
@@ -0,0 +1,140 @@
+ 'oprettede side',
+ 'page_create_notification' => 'Siden blev oprettet',
+ 'page_update' => 'opdaterede side',
+ 'page_update_notification' => 'Siden blev opdateret',
+ 'page_delete' => 'slettede side',
+ 'page_delete_notification' => 'Siden blev slettet',
+ 'page_restore' => 'gendannede side',
+ 'page_restore_notification' => 'Siden blev gendannet',
+ 'page_move' => 'flyttede side',
+ 'page_move_notification' => 'Siden blev flyttet',
+
+ // Chapters
+ 'chapter_create' => 'oprettede kapitel',
+ 'chapter_create_notification' => 'Kapitel blev oprettet',
+ 'chapter_update' => 'opdaterede kapitel',
+ 'chapter_update_notification' => 'Kapitel blev opdateret',
+ 'chapter_delete' => 'slettede kapitel',
+ 'chapter_delete_notification' => 'Kapitel blev slettet',
+ 'chapter_move' => 'flyttede kapitel',
+ 'chapter_move_notification' => 'Kapitlet blev flyttet',
+
+ // Books
+ 'book_create' => 'oprettede bog',
+ 'book_create_notification' => 'Bogen blev oprettet',
+ 'book_create_from_chapter' => 'omdannede kapitel til bog',
+ 'book_create_from_chapter_notification' => 'Kapitel blev omdannet til en bog',
+ 'book_update' => 'opdaterede bog',
+ 'book_update_notification' => 'Bogen blev opdateret',
+ 'book_delete' => 'slettede bog',
+ 'book_delete_notification' => 'Bogen blev slettet',
+ 'book_sort' => 'sorterede bogen',
+ 'book_sort_notification' => 'Bogen blev re-sorteret',
+
+ // Bookshelves
+ 'bookshelf_create' => 'oprettede reol',
+ 'bookshelf_create_notification' => 'Reolen blev oprettet',
+ 'bookshelf_create_from_book' => 'omdannede bog til reol',
+ 'bookshelf_create_from_book_notification' => 'Bogen blev omdannet til en bogreal',
+ 'bookshelf_update' => 'opdaterede reolen',
+ 'bookshelf_update_notification' => 'Reolen blev opdateret',
+ 'bookshelf_delete' => 'slettede reol',
+ 'bookshelf_delete_notification' => 'Reolen blev slettet',
+
+ // Revisions
+ 'revision_restore' => 'gendannede version',
+ 'revision_delete' => 'slettede version',
+ 'revision_delete_notification' => 'Versionen blev slettet',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" er blevet tilføjet til dine favoritter',
+ 'favourite_remove_notification' => '":name" er blevet fjernet fra dine favoritter',
+
+ // Watching
+ 'watch_update_level_notification' => 'Opdatering af urets præferencer lykkedes',
+
+ // Auth
+ 'auth_login' => 'loggede ind',
+ 'auth_register' => 'registreret som ny bruger',
+ 'auth_password_reset_request' => 'anmodet om nulstilling af brugeradgangskode',
+ 'auth_password_reset_update' => 'nulstil adgangskode',
+ 'mfa_setup_method' => 'konfigureret MFA metode',
+ 'mfa_setup_method_notification' => 'Multi-faktor metode konfigureret',
+ 'mfa_remove_method' => 'fjernet MFA metode',
+ 'mfa_remove_method_notification' => 'Multi-faktor metode fjernet',
+
+ // Settings
+ 'settings_update' => 'opdaterede indstillinger',
+ 'settings_update_notification' => 'Indstillinger opdateret',
+ 'maintenance_action_run' => 'kørte vedligeholdelsesaktion',
+
+ // Webhooks
+ 'webhook_create' => 'oprettede webhook',
+ 'webhook_create_notification' => 'Webhooken blev oprettet',
+ 'webhook_update' => 'opdaterede webhooken',
+ 'webhook_update_notification' => 'Webhooken blev opdateret',
+ 'webhook_delete' => 'slettede webhooken',
+ 'webhook_delete_notification' => 'Webhooken blev slettet',
+
+ // Imports
+ 'import_create' => 'oprettet import',
+ 'import_create_notification' => 'Importen er uploadet med succes',
+ 'import_run' => 'opdateret import',
+ 'import_run_notification' => 'Indhold importeret med succes',
+ 'import_delete' => 'slettet import',
+ 'import_delete_notification' => 'Import slettet med succes',
+
+ // Users
+ 'user_create' => 'opret bruger',
+ 'user_create_notification' => 'Bruger oprettet korrekt',
+ 'user_update' => 'opdateret bruger',
+ 'user_update_notification' => 'Brugeren blev opdateret',
+ 'user_delete' => 'slettet bruger',
+ 'user_delete_notification' => 'Brugeren blev fjernet',
+
+ // API Tokens
+ 'api_token_create' => 'oprettet API token',
+ 'api_token_create_notification' => 'API-token oprettet med succes',
+ 'api_token_update' => 'opdateret API-token',
+ 'api_token_update_notification' => 'API-token opdateret med succes',
+ 'api_token_delete' => 'slettet API-token',
+ 'api_token_delete_notification' => 'API-token slettet med succes',
+
+ // Roles
+ 'role_create' => 'oprettet rolle',
+ 'role_create_notification' => 'Rolle oprettet',
+ 'role_update' => 'opdateret rolle',
+ 'role_update_notification' => 'Rolle opdateret',
+ 'role_delete' => 'slettet rolle',
+ 'role_delete_notification' => 'Rollen blev slettet',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'tømt papirkurven',
+ 'recycle_bin_restore' => 'gendannet fra papirkurven',
+ 'recycle_bin_destroy' => 'fjernet fra papirkurven',
+
+ // Comments
+ 'commented_on' => 'kommenterede til',
+ 'comment_create' => 'tilføjet kommentar',
+ 'comment_update' => 'opdateret kommentar',
+ 'comment_delete' => 'slettet kommentar',
+
+ // Sort Rules
+ 'sort_rule_create' => 'oprettet sorteringsregel',
+ 'sort_rule_create_notification' => 'Sorteringsregel oprettet med succes',
+ 'sort_rule_update' => 'opdateret sorteringsregel',
+ 'sort_rule_update_notification' => 'Sorteringsregel opdateret med succes',
+ 'sort_rule_delete' => 'slettet sorteringsregel',
+ 'sort_rule_delete_notification' => 'Sorteringsregel slettet med succes',
+
+ // Other
+ 'permissions_update' => 'opdaterede tilladelser',
+];
diff --git a/lang/da/auth.php b/lang/da/auth.php
new file mode 100644
index 00000000000..dcc531125d5
--- /dev/null
+++ b/lang/da/auth.php
@@ -0,0 +1,117 @@
+ 'De indtastede brugeroplysninger stemmer ikke overens med vores registreringer.',
+ 'throttle' => 'For mange mislykkede loginforsøg. Prøv igen om :seconds sekunder.',
+
+ // Login & Register
+ 'sign_up' => 'Registrer',
+ 'log_in' => 'Log ind',
+ 'log_in_with' => 'Log ind med :socialDriver',
+ 'sign_up_with' => 'Registrér med :socialDriver',
+ 'logout' => 'Log ud',
+
+ 'name' => 'Navn',
+ 'username' => 'Brugernavn',
+ 'email' => 'E-mail',
+ 'password' => 'Adgangskode',
+ 'password_confirm' => 'Bekræft adgangskode',
+ 'password_hint' => 'Skal være på mindst 8 karakterer',
+ 'forgot_password' => 'Glemt Adgangskode?',
+ 'remember_me' => 'Husk mig',
+ 'ldap_email_hint' => 'Angiv venligst din kontos e-mail.',
+ 'create_account' => 'Opret konto',
+ 'already_have_account' => 'Har du allerede en konto?',
+ 'dont_have_account' => 'Har du ikke en konto?',
+ 'social_login' => 'Social Log ind',
+ 'social_registration' => 'Social Registrering',
+ 'social_registration_text' => 'Registrér og log ind med anden service.',
+
+ 'register_thanks' => 'Tak for registreringen!',
+ 'register_confirm' => 'Check venligst din e-mail og klik deri på bekræftelses knappen for at tilgå :appName.',
+ 'registrations_disabled' => 'Registrering er i øjeblikket deaktiveret',
+ 'registration_email_domain_invalid' => 'E-Mail domænet har ikke adgang til denne applikation',
+ 'register_success' => 'Tak for din registrering. Du er nu registeret og logget ind.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Forsøger Login',
+ 'auto_init_starting_desc' => 'Vi kontakter dit godkendelsessystem for at starte loginprocessen. Hvis der ikke er nogen fremskridt efter 5 sekunder, kan du prøve at klikke på linket nedenfor.',
+ 'auto_init_start_link' => 'Fortsæt med godkendelse',
+
+ // Password Reset
+ 'reset_password' => 'Nulstil adgangskode',
+ 'reset_password_send_instructions' => 'Indtast din e-mail herunder og du vil blive sendt en e-mail med et link til at nulstille din adgangskode.',
+ 'reset_password_send_button' => 'Send link til nulstilling',
+ 'reset_password_sent' => 'Et link til nulstilling af adgangskode sendes til :email, hvis den e-mail-adresse findes i systemet.',
+ 'reset_password_success' => 'Din adgangskode er blevet nulstillet.',
+ 'email_reset_subject' => 'Nulstil din :appName adgangskode',
+ 'email_reset_text' => 'Du modtager denne e-mail fordi vi har modtaget en anmodning om at nulstille din adgangskode.',
+ 'email_reset_not_requested' => 'Hvis du ikke har anmodet om at få din adgangskode nulstillet, behøver du ikke at foretage dig noget.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Bekræft din E-Mail på :appName',
+ 'email_confirm_greeting' => 'Tak for at oprette dig på :appName!',
+ 'email_confirm_text' => 'Bekræft venligst din e-mail adresse ved at klikke på linket nedenfor:',
+ 'email_confirm_action' => 'Bekræft e-mail',
+ 'email_confirm_send_error' => 'E-mailbekræftelse kræves, men systemet kunne ikke sende e-mailen. Kontakt administratoren for at sikre, at e-mail er konfigureret korrekt.',
+ 'email_confirm_success' => 'Din e-mail er blevet bekræftet! Du bør nu kunne logge ind med denne e-mailadresse.',
+ 'email_confirm_resent' => 'Bekræftelsesmail sendt, tjek venligst din indboks.',
+ 'email_confirm_thanks' => 'Tak for bekræftelsen!',
+ 'email_confirm_thanks_desc' => 'Vent venligst et øjeblik, mens din bekræftelse behandles. Hvis du ikke bliver omdirigeret efter 3 sekunder, skal du trykke på linket "Fortsæt" nedenfor for at fortsætte.',
+
+ 'email_not_confirmed' => 'E-mailadresse ikke bekræftet',
+ 'email_not_confirmed_text' => 'Din e-mailadresse er endnu ikke blevet bekræftet.',
+ 'email_not_confirmed_click_link' => 'Klik venligst på linket i e-mailen der blev sendt kort efter du registrerede dig.',
+ 'email_not_confirmed_resend' => 'Hvis du ikke kan finde E-Mailen, kan du du få gensendt bekræftelsesemailen ved at trykke herunder.',
+ 'email_not_confirmed_resend_button' => 'Gensend bekræftelsesemail',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Du er blevet inviteret til :appName!',
+ 'user_invite_email_greeting' => 'En konto er blevet oprettet til dig på :appName.',
+ 'user_invite_email_text' => 'Klik på knappen nedenunderm for at sætte en adgangskode og opnå adgang:',
+ 'user_invite_email_action' => 'Set adgangskode',
+ 'user_invite_page_welcome' => 'Velkommen til :appName!',
+ 'user_invite_page_text' => 'For at færdiggøre din konto og få adgang skal du indstille en adgangskode, der bruges til at logge ind på :appName ved fremtidige besøg.',
+ 'user_invite_page_confirm_button' => 'Bekræft adgangskode',
+ 'user_invite_success_login' => 'Adgangskoden er sat. Du burde nu kunne logge ind med din angivede adgangskode for at tilgå :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Opsætning af Multi-faktor godkendelse',
+ 'mfa_setup_desc' => 'Opsæt multi-faktor godkendelse som et ekstra lag af sikkerhed for din brugerkonto.',
+ 'mfa_setup_configured' => 'Allerede konfigureret',
+ 'mfa_setup_reconfigure' => 'Genkonfigurer',
+ 'mfa_setup_remove_confirmation' => 'Er du sikker på, at du vil fjerne denne multi-faktor godkendelsesmetode?',
+ 'mfa_setup_action' => 'Opsætning',
+ 'mfa_backup_codes_usage_limit_warning' => 'Du har mindre end 5 backup koder tilbage, generere og gem et nyt sæt før du løber tør for koder, for at forhindre at blive lukket ude af din konto.',
+ 'mfa_option_totp_title' => 'Mobil app',
+ 'mfa_option_totp_desc' => 'For at bruge multi-faktor godkendelse, skal du bruge en mobil app, der understøtter TOTP såsom Google Authenticator, Authy eller Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Backup koder',
+ 'mfa_option_backup_codes_desc' => 'Genererer et sæt backup-koder til engangsbrug, som du skal indtaste ved login for at bekræfte din identitet. Sørg for at opbevare dem et sikkert sted.',
+ 'mfa_gen_confirm_and_enable' => 'Bekræft og aktivér',
+ 'mfa_gen_backup_codes_title' => 'Backup koder opsætning',
+ 'mfa_gen_backup_codes_desc' => 'Opbevar nedenstående liste med koder et sikkert sted. Når du får adgang til systemet, kan du bruge en af koderne som en ekstra godkendelsesmekanisme.',
+ 'mfa_gen_backup_codes_download' => 'Download koder',
+ 'mfa_gen_backup_codes_usage_warning' => 'Hver kode kan kun bruges en gang',
+ 'mfa_gen_totp_title' => 'Mobil App Setup',
+ 'mfa_gen_totp_desc' => 'For at bruge multifaktorgodkendelse skal du bruge en mobilapplikation, der understøtter TOTP, f.eks. Google Authenticator, Authy eller Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Scan QR-koden nedenfor med din foretrukne godkendelsesapp for at komme i gang.',
+ 'mfa_gen_totp_verify_setup' => 'Verificer Opsætning',
+ 'mfa_gen_totp_verify_setup_desc' => 'Kontrollér, at alt fungerer, ved at indtaste en kode, der er genereret i din godkendelsesapp, i indtastningsfeltet nedenfor:',
+ 'mfa_gen_totp_provide_code_here' => 'Angiv din app-genererede kode her',
+ 'mfa_verify_access' => 'Bekræft Adgang',
+ 'mfa_verify_access_desc' => 'Din brugerkonto kræver, at du bekræfter din identitet via et ekstra verifikationsniveau, før du får adgang. Bekræft ved hjælp af en af dine konfigurerede metoder for at fortsætte.',
+ 'mfa_verify_no_methods' => 'Ingen Metoder Konfigureret',
+ 'mfa_verify_no_methods_desc' => 'Der blev ikke fundet nogen metoder til multifaktorgodkendelse til din konto. Du skal konfigurere mindst én metode, før du får adgang.',
+ 'mfa_verify_use_totp' => 'Bekræft ved brug af en mobil app',
+ 'mfa_verify_use_backup_codes' => 'Bekræft ved hjælp af en backup kode',
+ 'mfa_verify_backup_code' => 'Backup Kode',
+ 'mfa_verify_backup_code_desc' => 'Indtast en af dine resterende backup koder nedenfor:',
+ 'mfa_verify_backup_code_enter_here' => 'Indtast backup kode her',
+ 'mfa_verify_totp_desc' => 'Indtast koden, der er genereret med din mobilapp, nedenfor:',
+ 'mfa_setup_login_notification' => 'Multifaktormetode konfigureret, log venligst ind igen med den konfigurerede metode.',
+];
diff --git a/lang/da/common.php b/lang/da/common.php
new file mode 100644
index 00000000000..db75772c857
--- /dev/null
+++ b/lang/da/common.php
@@ -0,0 +1,115 @@
+ 'Annuller',
+ 'close' => 'Luk',
+ 'confirm' => 'Bekræft',
+ 'back' => 'Tilbage',
+ 'save' => 'Gem',
+ 'continue' => 'Fortsæt',
+ 'select' => 'Vælg',
+ 'toggle_all' => 'Vælg/Fravælg alle',
+ 'more' => 'Mere',
+
+ // Form Labels
+ 'name' => 'Navn',
+ 'description' => 'Beskrivelse',
+ 'role' => 'Rolle',
+ 'cover_image' => 'Coverbillede',
+ 'cover_image_description' => 'Dette billede skal være omkring 440x250px selvom det vil være fleksibelt skaleret & beskåret for at passe til brugergrænsefladen i forskellige scenarier efter behov. Så de faktiske dimensioner for visning vil være forskellige.',
+
+ // Actions
+ 'actions' => 'Handlinger',
+ 'view' => 'Vis',
+ 'view_all' => 'Vis alle',
+ 'new' => 'Ny',
+ 'create' => 'Opret',
+ 'update' => 'Opdater',
+ 'edit' => 'Rediger',
+ 'archive' => 'Arkiver',
+ 'unarchive' => 'Tilbagekald',
+ 'sort' => 'Sorter',
+ 'move' => 'Flyt',
+ 'copy' => 'Kopier',
+ 'reply' => 'Besvar',
+ 'delete' => 'Slet',
+ 'delete_confirm' => 'Bekræft sletning',
+ 'search' => 'Søg',
+ 'search_clear' => 'Ryd søgning',
+ 'reset' => 'Nulstil',
+ 'remove' => 'Fjern',
+ 'add' => 'Tilføj',
+ 'configure' => 'Konfigurer',
+ 'manage' => 'Administrer',
+ 'fullscreen' => 'Fuld skærm',
+ 'favourite' => 'Foretrukken',
+ 'unfavourite' => 'Fjern som foretrukken',
+ 'next' => 'Næste',
+ 'previous' => 'Forrige',
+ 'filter_active' => 'Aktivt filter:',
+ 'filter_clear' => 'Nulstil filter',
+ 'download' => 'Hent',
+ 'open_in_tab' => 'Åben i ny fane',
+ 'open' => 'Åbn',
+
+ // Sort Options
+ 'sort_options' => 'Sorteringsindstillinger',
+ 'sort_direction_toggle' => 'Sorteringsretning',
+ 'sort_ascending' => 'Sorter stigende',
+ 'sort_descending' => 'Sorter faldende',
+ 'sort_name' => 'Navn',
+ 'sort_default' => 'Standard',
+ 'sort_created_at' => 'Oprettelsesdato',
+ 'sort_updated_at' => 'Opdateringsdato',
+
+ // Misc
+ 'deleted_user' => 'Slettet bruger',
+ 'no_activity' => 'Ingen aktivitet at vise',
+ 'no_items' => 'Intet indhold tilgængeligt',
+ 'back_to_top' => 'Tilbage til toppen',
+ 'skip_to_main_content' => 'Spring til indhold',
+ 'toggle_details' => 'Vis/skjul detaljer',
+ 'toggle_thumbnails' => 'Vis/skjul miniaturer',
+ 'details' => 'Detaljer',
+ 'grid_view' => 'Gittervisning',
+ 'list_view' => 'Listevisning',
+ 'default' => 'Standard',
+ 'breadcrumb' => 'Brødkrumme',
+ 'status' => 'Status',
+ 'status_active' => 'Aktiv',
+ 'status_inactive' => 'Inaktiv',
+ 'never' => 'Aldrig',
+ 'none' => 'Ingen',
+
+ // Header
+ 'homepage' => 'Forside',
+ 'header_menu_expand' => 'Udvid header menu',
+ 'profile_menu' => 'Profilmenu',
+ 'view_profile' => 'Vis profil',
+ 'edit_profile' => 'Redigér Profil',
+ 'dark_mode' => 'Mørk tilstand',
+ 'light_mode' => 'Lys tilstand',
+ 'global_search' => 'Global søgning',
+
+ // Layout tabs
+ 'tab_info' => 'Info',
+ 'tab_info_label' => 'Faneblad: Vis sekundær information',
+ 'tab_content' => 'Indhold',
+ 'tab_content_label' => 'Faneblad: Vis primær indhold',
+
+ // Email Content
+ 'email_action_help' => 'Hvis du har problemer med at trykke på ":actionText" knappen, prøv at kopiere og indsætte linket herunder ind i din webbrowser:',
+ 'email_rights' => 'Alle rettigheder forbeholdes',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Privatlivspolitik',
+ 'terms_of_service' => 'Tjenestevilkår',
+
+ // OpenSearch
+ 'opensearch_description' => 'Søg :appName',
+];
diff --git a/lang/da/components.php b/lang/da/components.php
new file mode 100644
index 00000000000..3deeadf485d
--- /dev/null
+++ b/lang/da/components.php
@@ -0,0 +1,46 @@
+ 'Billedselektion',
+ 'image_list' => 'Billedliste',
+ 'image_details' => 'Billeddetaljer',
+ 'image_upload' => 'Upload billede',
+ 'image_intro' => 'Her kan du vælge og administrere billeder, der tidligere er blevet uploadet til systemet.',
+ 'image_intro_upload' => 'Upload et nyt billede ved at trække en billedfil ind i dette vindue, eller ved at bruge knappen "Upload billede" ovenfor.',
+ 'image_all' => 'Alt',
+ 'image_all_title' => 'Se alle billeder',
+ 'image_book_title' => 'Vis billeder uploadet til denne bog',
+ 'image_page_title' => 'Vis billeder uploadet til denne side',
+ 'image_search_hint' => 'Søg efter billednavn',
+ 'image_uploaded' => 'Uploadet :uploadedDate',
+ 'image_uploaded_by' => 'Uploadet af :userName',
+ 'image_uploaded_to' => 'Uploadet til :pageLink',
+ 'image_updated' => 'Opdateret :updateDate',
+ 'image_load_more' => 'Indlæse mere',
+ 'image_image_name' => 'Billednavn',
+ 'image_delete_used' => 'Dette billede er brugt på siderne nedenfor.',
+ 'image_delete_confirm_text' => 'Er du sikker på at du vil slette dette billede?',
+ 'image_select_image' => 'Vælg billede',
+ 'image_dropzone' => 'Træk-og-slip billede eller klik her for at uploade',
+ 'image_dropzone_drop' => 'Slip billeder her for at uploade',
+ 'images_deleted' => 'Billede slettet',
+ 'image_preview' => 'Billedeksempel',
+ 'image_upload_success' => 'Foto uploadet',
+ 'image_update_success' => 'Billeddetaljer succesfuldt opdateret',
+ 'image_delete_success' => 'Billede slettet',
+ 'image_replace' => 'Erstat billede',
+ 'image_replace_success' => 'Billedfil blev opdateret',
+ 'image_rebuild_thumbs' => 'Regenerer størrelsesvariationer',
+ 'image_rebuild_thumbs_success' => 'Variationer i billedstørrelse blev genopbygget!',
+
+ // Code Editor
+ 'code_editor' => 'Rediger kode',
+ 'code_language' => 'Kodesprog',
+ 'code_content' => 'Kodeindhold',
+ 'code_session_history' => 'Sessionshistorik',
+ 'code_save' => 'Gem kode',
+];
diff --git a/lang/da/editor.php b/lang/da/editor.php
new file mode 100644
index 00000000000..f135f06a90b
--- /dev/null
+++ b/lang/da/editor.php
@@ -0,0 +1,182 @@
+ 'Generel',
+ 'advanced' => 'Avanceret',
+ 'none' => 'Ingen',
+ 'cancel' => 'Annuller',
+ 'save' => 'Gem',
+ 'close' => 'Luk',
+ 'apply' => 'Anvend',
+ 'undo' => 'Fortryd',
+ 'redo' => 'Gendan',
+ 'left' => 'Venstre',
+ 'center' => 'Midten',
+ 'right' => 'Højre',
+ 'top' => 'Top',
+ 'middle' => 'Midt',
+ 'bottom' => 'Bund',
+ 'width' => 'Bredde',
+ 'height' => 'Højde',
+ 'More' => 'Mere',
+ 'select' => 'Vælg...',
+
+ // Toolbar
+ 'formats' => 'Formater',
+ 'header_large' => 'Stor Overskrift',
+ 'header_medium' => 'Mellemstor Overskrift',
+ 'header_small' => 'Lille Overskrift',
+ 'header_tiny' => 'Lille Header',
+ 'paragraph' => 'Paragraf',
+ 'blockquote' => 'Citat',
+ 'inline_code' => 'Inline kode',
+ 'callouts' => 'Callouts',
+ 'callout_information' => 'Information',
+ 'callout_success' => 'Succes',
+ 'callout_warning' => 'Advarsel',
+ 'callout_danger' => 'Fare',
+ 'bold' => 'Fed',
+ 'italic' => 'Kursiv',
+ 'underline' => 'Understreget',
+ 'strikethrough' => 'Gennemstreget',
+ 'superscript' => 'Hævet',
+ 'subscript' => 'Sænket',
+ 'text_color' => 'Tekstfarve',
+ 'highlight_color' => 'Fremhævelsesfarve',
+ 'custom_color' => 'Tilpasset farve',
+ 'remove_color' => 'Fjern farve',
+ 'background_color' => 'Baggrundsfarve',
+ 'align_left' => 'Venstrejusteret',
+ 'align_center' => 'Centrér',
+ 'align_right' => 'Højrejusteret',
+ 'align_justify' => 'Juster',
+ 'list_bullet' => 'Punktliste',
+ 'list_numbered' => 'Nummereret liste',
+ 'list_task' => 'Opgaveliste',
+ 'indent_increase' => 'Forøg indrykning',
+ 'indent_decrease' => 'Formindsk indrykning',
+ 'table' => 'Tabel',
+ 'insert_image' => 'Indsæt billede',
+ 'insert_image_title' => 'Indsæt/rediger billede',
+ 'insert_link' => 'Indsæt/rediger link',
+ 'insert_link_title' => 'Indsæt/Rediger Link',
+ 'insert_horizontal_line' => 'Indsæt vandret linje',
+ 'insert_code_block' => 'Indsæt kodeblok',
+ 'edit_code_block' => 'Rediger kodeblok',
+ 'insert_drawing' => 'Indsæt/rediger tegning',
+ 'drawing_manager' => 'Tegningsansvarlig',
+ 'insert_media' => 'Indsæt/rediger medie',
+ 'insert_media_title' => 'Indsæt/Rediger Medie',
+ 'clear_formatting' => 'Ryd formatering',
+ 'source_code' => 'Kildekode',
+ 'source_code_title' => 'Kildekode',
+ 'fullscreen' => 'Fuld skærm',
+ 'image_options' => 'Billedindstillinger',
+
+ // Tables
+ 'table_properties' => 'Tabelegenskaber',
+ 'table_properties_title' => 'Tabelegenskaber',
+ 'delete_table' => 'Slet tabel',
+ 'table_clear_formatting' => 'Ryd tabelformatering',
+ 'resize_to_contents' => 'Ændre størrelse til indhold',
+ 'row_header' => 'Rækkeoverskrift',
+ 'insert_row_before' => 'Indsæt række før',
+ 'insert_row_after' => 'Indsæt række efter',
+ 'delete_row' => 'Slet række',
+ 'insert_column_before' => 'Indsæt kolonne før',
+ 'insert_column_after' => 'Indsæt kolonne efter',
+ 'delete_column' => 'Slet kolonne',
+ 'table_cell' => 'Celle',
+ 'table_row' => 'Række',
+ 'table_column' => 'Kolonne',
+ 'cell_properties' => 'Celle egenskaber',
+ 'cell_properties_title' => 'Celle Egenskaber',
+ 'cell_type' => 'Celle type',
+ 'cell_type_cell' => 'Celle',
+ 'cell_scope' => 'Omfang',
+ 'cell_type_header' => 'Overskriftscelle',
+ 'merge_cells' => 'Flet celler',
+ 'split_cell' => 'Opdel celle',
+ 'table_row_group' => 'Række Gruppe',
+ 'table_column_group' => 'Kolonne Gruppe',
+ 'horizontal_align' => 'Juster vandret',
+ 'vertical_align' => 'Juster lodret',
+ 'border_width' => 'Kantbredde',
+ 'border_style' => 'Kantstil',
+ 'border_color' => 'Kantfarve',
+ 'row_properties' => 'Række egenskaber',
+ 'row_properties_title' => 'Række Egenskaber',
+ 'cut_row' => 'Klip række',
+ 'copy_row' => 'Kopier række',
+ 'paste_row_before' => 'Indsæt række før',
+ 'paste_row_after' => 'Indsæt række efter',
+ 'row_type' => 'Række type',
+ 'row_type_header' => 'Overskrift',
+ 'row_type_body' => 'Krop',
+ 'row_type_footer' => 'Sidefod',
+ 'alignment' => 'Justering',
+ 'cut_column' => 'Klip kolonne',
+ 'copy_column' => 'Kopier kolonne',
+ 'paste_column_before' => 'Indsæt kolonne før',
+ 'paste_column_after' => 'Indsæt kolonne efter',
+ 'cell_padding' => 'Celle margen',
+ 'cell_spacing' => 'Celle afstand',
+ 'caption' => 'Citat',
+ 'show_caption' => 'Vis citat',
+ 'constrain' => 'Begræns proportioner',
+ 'cell_border_solid' => 'Solid',
+ 'cell_border_dotted' => 'Prikket',
+ 'cell_border_dashed' => 'Stiplet',
+ 'cell_border_double' => 'Dobbelt',
+ 'cell_border_groove' => 'Udfræsning',
+ 'cell_border_ridge' => 'Kant',
+ 'cell_border_inset' => 'Indsat',
+ 'cell_border_outset' => 'Outset',
+ 'cell_border_none' => 'Ingen',
+ 'cell_border_hidden' => 'Gemt',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Kilde',
+ 'alt_desc' => 'Alternativ beskrivelse',
+ 'embed' => 'Indlejre',
+ 'paste_embed' => 'Indsæt din indlejringskode nedenfor:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Tekst til visning',
+ 'title' => 'Titel',
+ 'browse_links' => 'Gennemse links',
+ 'open_link' => 'Åbn link',
+ 'open_link_in' => 'Åbn link i...',
+ 'open_link_current' => 'Nuværende vindue',
+ 'open_link_new' => 'Nyt vindue',
+ 'remove_link' => 'Fjern link',
+ 'insert_collapsible' => 'Indsæt sammenklappelig blok',
+ 'collapsible_unwrap' => 'Pak ud',
+ 'edit_label' => 'Rediger mærkat',
+ 'toggle_open_closed' => 'Skift mellem åben og lukket',
+ 'collapsible_edit' => 'Rediger sammenklappelig blok',
+ 'toggle_label' => 'Skift etiket',
+
+ // About view
+ 'about' => 'Om redaktøren',
+ 'about_title' => 'Om WYSIWYG-editoren',
+ 'editor_license' => 'Editor-licens og copyright',
+ 'editor_lexical_license' => 'Denne editor er bygget som en forgrening af :lexicalLink, som distribueres under MIT-licensen.',
+ 'editor_lexical_license_link' => 'Du kan finde alle licensoplysninger her.',
+ 'editor_tiny_license' => 'Denne editor er bygget ved hjælp af :tinyLink, som leveres under MIT-licensen.',
+ 'editor_tiny_license_link' => 'Oplysninger om copyright og licens for TinyMCE kan findes her.',
+ 'save_continue' => 'Gem og fortsæt',
+ 'callouts_cycle' => '(Bliv ved med at trykke for at skifte mellem typerne)',
+ 'link_selector' => 'Link til indhold',
+ 'shortcuts' => 'Genveje',
+ 'shortcut' => 'Genvej',
+ 'shortcuts_intro' => 'Følgende genveje er tilgængelige i editoren:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Beskrivelse',
+];
diff --git a/lang/da/entities.php b/lang/da/entities.php
new file mode 100644
index 00000000000..23cc94626c5
--- /dev/null
+++ b/lang/da/entities.php
@@ -0,0 +1,476 @@
+ 'Nyligt oprettet',
+ 'recently_created_pages' => 'Nyligt oprettede sider',
+ 'recently_updated_pages' => 'Nyligt opdaterede sider',
+ 'recently_created_chapters' => 'Nyligt oprettede kapitler',
+ 'recently_created_books' => 'Nyligt oprettede bøger',
+ 'recently_created_shelves' => 'Nyligt oprettede reoler',
+ 'recently_update' => 'Opdateret for nyligt',
+ 'recently_viewed' => 'Senest viste',
+ 'recent_activity' => 'Seneste aktivitet',
+ 'create_now' => 'Opret en nu',
+ 'revisions' => 'Revisioner',
+ 'meta_revision' => 'Revision #:revisionCount',
+ 'meta_created' => 'Oprettet :timeLength',
+ 'meta_created_name' => 'Oprettet :timeLength af :user',
+ 'meta_updated' => 'Opdateret :timeLength',
+ 'meta_updated_name' => 'Opdateret :timeLength af :user',
+ 'meta_owned_name' => 'Ejet af :user',
+ 'meta_reference_count' => 'Refereret af :count item|Refereret af :count items',
+ 'entity_select' => 'Vælg emne',
+ 'entity_select_lack_permission' => 'Du har ikke de nødvendige tilladelser til at vælge dette element',
+ 'images' => 'Billeder',
+ 'my_recent_drafts' => 'Mine seneste kladder',
+ 'my_recently_viewed' => 'Mine senest viste',
+ 'my_most_viewed_favourites' => 'Mine mest viste favoritter',
+ 'my_favourites' => 'Mine favoritter',
+ 'no_pages_viewed' => 'Du har ikke besøgt nogle sider',
+ 'no_pages_recently_created' => 'Ingen sider er blevet oprettet for nyligt',
+ 'no_pages_recently_updated' => 'Ingen sider er blevet opdateret for nyligt',
+ 'export' => 'Eksporter',
+ 'export_html' => 'Indeholdt webfil',
+ 'export_pdf' => 'PDF-fil',
+ 'export_text' => 'Almindelig tekstfil',
+ 'export_md' => 'Markdown Fil',
+ 'export_zip' => 'Bærbar ZIP',
+ 'default_template' => 'Standard sideskabelon',
+ 'default_template_explain' => 'Tildel en sideskabelon, der vil blive brugt som standardindhold for alle sider, der oprettes i dette element. Husk, at dette kun vil blive brugt, hvis sideskaberen har adgang til den valgte skabelonside.',
+ 'default_template_select' => 'Vælg en skabelonside',
+ 'import' => 'Importer',
+ 'import_validate' => 'Valider import',
+ 'import_desc' => 'Importer bøger, kapitler og sider ved hjælp af en bærbar zip-eksport fra den samme eller en anden instans. Vælg en ZIP-fil for at fortsætte. Når filen er blevet uploadet og valideret, kan du konfigurere og bekræfte importen i den næste visning.',
+ 'import_zip_select' => 'Vælg den ZIP-fil, der skal uploades',
+ 'import_zip_validation_errors' => 'Der blev opdaget fejl under validering af den medfølgende ZIP-fil:',
+ 'import_pending' => 'Afventende import',
+ 'import_pending_none' => 'Der er ikke startet nogen import.',
+ 'import_continue' => 'Fortsæt med at importere',
+ 'import_continue_desc' => 'Gennemgå det indhold, der skal importeres fra den uploadede ZIP-fil. Når du er klar, skal du køre importen for at tilføje dens indhold til dette system. Den uploadede ZIP-importfil fjernes automatisk, når importen er vellykket.',
+ 'import_details' => 'Import detaljer',
+ 'import_run' => 'Kør import',
+ 'import_size' => ':size Importer ZIP-størrelse',
+ 'import_uploaded_at' => 'Uploadet :relativeTime',
+ 'import_uploaded_by' => 'Uploadet af',
+ 'import_location' => 'Importplacering',
+ 'import_location_desc' => 'Vælg en målplacering for dit importerede indhold. Du skal have de relevante tilladelser til at oprette på den valgte placering.',
+ 'import_delete_confirm' => 'Er du sikker på, at du vil slette denne import?',
+ 'import_delete_desc' => 'Dette vil slette den uploadede ZIP-fil og kan ikke fortrydes.',
+ 'import_errors' => 'Importfejl',
+ 'import_errors_desc' => 'Følgende fejl opstod under importforsøget:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Rettigheder',
+ 'permissions_desc' => 'Angiv tilladelser her for at tilsidesætte de standardtilladelser, der gives af brugerroller.',
+ 'permissions_book_cascade' => 'Tilladelser, der er indstillet på bøger, vil automatisk blive overført til underordnede kapitler og sider, medmindre de har deres egne tilladelser defineret.',
+ 'permissions_chapter_cascade' => 'Tilladelser, der er indstillet på kapitler, overføres automatisk til underordnede sider, medmindre de har deres egne tilladelser defineret.',
+ 'permissions_save' => 'Gem tilladelser',
+ 'permissions_owner' => 'Ejer',
+ 'permissions_role_everyone_else' => 'Alle andre',
+ 'permissions_role_everyone_else_desc' => 'Indstil tilladelser for alle roller, der ikke specifikt er tilsidesat.',
+ 'permissions_role_override' => 'Tilsidesæt tilladelser for rolle',
+ 'permissions_inherit_defaults' => 'Arv standardindstillinger',
+
+ // Search
+ 'search_results' => 'Søgeresultater',
+ 'search_total_results_found' => ':count resultat fundet|:count resultater fundet',
+ 'search_clear' => 'Ryd søgning',
+ 'search_no_pages' => 'Ingen sider matchede søgning',
+ 'search_for_term' => 'Søgning for :term',
+ 'search_more' => 'Flere resultater',
+ 'search_advanced' => 'Avanceret søgning',
+ 'search_terms' => 'Søgeord',
+ 'search_content_type' => 'Indholdstype',
+ 'search_exact_matches' => 'Nøjagtige matches',
+ 'search_tags' => 'Tagsøgninger',
+ 'search_options' => 'Indstillinger',
+ 'search_viewed_by_me' => 'Set af mig',
+ 'search_not_viewed_by_me' => 'Ikke set af mig',
+ 'search_permissions_set' => 'Rettigheders sæt',
+ 'search_created_by_me' => 'Oprettet af mig',
+ 'search_updated_by_me' => 'Opdateret af mig',
+ 'search_owned_by_me' => 'Ejet af mig',
+ 'search_date_options' => 'Datoindstillinger',
+ 'search_updated_before' => 'Opdateret før',
+ 'search_updated_after' => 'Opdateret efter',
+ 'search_created_before' => 'Oprettet før',
+ 'search_created_after' => 'Oprettet efter',
+ 'search_set_date' => 'Sæt dato',
+ 'search_update' => 'Opdatér søgning',
+
+ // Shelves
+ 'shelf' => 'Reol',
+ 'shelves' => 'Reoler',
+ 'x_shelves' => ':count reol|:count reoler',
+ 'shelves_empty' => 'Ingen reoler er blevet oprettet',
+ 'shelves_create' => 'Opret ny reol',
+ 'shelves_popular' => 'Populære reoler',
+ 'shelves_new' => 'Nye reoler',
+ 'shelves_new_action' => 'Ny reol',
+ 'shelves_popular_empty' => 'De mest populære reoler vil blive vist her.',
+ 'shelves_new_empty' => 'De nyeste reoler vil blive vist her.',
+ 'shelves_save' => 'Gem reol',
+ 'shelves_books' => 'Bøger på denne reol',
+ 'shelves_add_books' => 'Tilføj bøger til denne reol',
+ 'shelves_drag_books' => 'Træk bøger nedenfor for at tilføje dem til denne hylde',
+ 'shelves_empty_contents' => 'Denne reol har ingen bøger tilknyttet til den',
+ 'shelves_edit_and_assign' => 'Rediger reol for at tilføje bøger',
+ 'shelves_edit_named' => 'Rediger hylde :navn',
+ 'shelves_edit' => 'Rediger Reol',
+ 'shelves_delete' => 'Slettede reoler',
+ 'shelves_delete_named' => 'Slet hylde :navn',
+ 'shelves_delete_explain' => "Dette vil slette hylden med navnet ':navn'. Indeholdte bøger vil ikke blive slettet.",
+ 'shelves_delete_confirmation' => 'Er du sikker på, at du vil slette denne hylde?',
+ 'shelves_permissions' => 'Tilladelser til hylder',
+ 'shelves_permissions_updated' => 'Tilladelser til hylder opdateret',
+ 'shelves_permissions_active' => 'Hyldetilladelser aktive',
+ 'shelves_permissions_cascade_warning' => 'Tilladelser på hylder overføres ikke automatisk til indeholdte bøger. Det skyldes, at en bog kan findes på flere hylder. Tilladelser kan dog kopieres ned til underordnede bøger ved hjælp af nedenstående mulighed.',
+ 'shelves_permissions_create' => 'Hyldeoprettelsestilladelser bruges kun til at kopiere tilladelser til underordnede bøger ved hjælp af nedenstående handling. De kontrollerer ikke muligheden for at oprette bøger.',
+ 'shelves_copy_permissions_to_books' => 'Kopier tilladelser til bøger',
+ 'shelves_copy_permissions' => 'Kopier tilladelser',
+ 'shelves_copy_permissions_explain' => 'Dette vil anvende de aktuelle tilladelsesindstillinger for denne hylde på alle bøger, der er indeholdt i den. Før du aktiverer, skal du sikre dig, at eventuelle ændringer af tilladelserne for denne hylde er blevet gemt.',
+ 'shelves_copy_permission_success' => 'Hyldetilladelser kopieret til :count books',
+
+ // Books
+ 'book' => 'Bog',
+ 'books' => 'Bøger',
+ 'x_books' => ':count bog|:count bøger',
+ 'books_empty' => 'Ingen bøger er blevet oprettet',
+ 'books_popular' => 'Populære bøger',
+ 'books_recent' => 'Nylige bøger',
+ 'books_new' => 'Nye bøger',
+ 'books_new_action' => 'Ny bog',
+ 'books_popular_empty' => 'De mest populære bøger vil blive vist her.',
+ 'books_new_empty' => 'De nyeste boger vil blive vist her.',
+ 'books_create' => 'Lav en ny bog',
+ 'books_delete' => 'Slet bog',
+ 'books_delete_named' => 'Slet bog :bookName',
+ 'books_delete_explain' => 'Dette vil slette bogen ved navn \':bookName\'. Alle sider og kapitler vil blive slettet.',
+ 'books_delete_confirmation' => 'Er du sikker på at du vil slette denne bog?',
+ 'books_edit' => 'Rediger bog',
+ 'books_edit_named' => 'Rediger bog :bookName',
+ 'books_form_book_name' => 'Bognavn',
+ 'books_save' => 'Gem bog',
+ 'books_permissions' => 'Bogtilladelser',
+ 'books_permissions_updated' => 'Bogtilladelser opdateret',
+ 'books_empty_contents' => 'Ingen sider eller kapitler er blevet oprettet i denne bog.',
+ 'books_empty_create_page' => 'Opret en ny side',
+ 'books_empty_sort_current_book' => 'Sortér denne bog',
+ 'books_empty_add_chapter' => 'Tilføj et kapitel',
+ 'books_permissions_active' => 'Aktive bogtilladelser',
+ 'books_search_this' => 'Søg i denne bog',
+ 'books_navigation' => 'Bognavigation',
+ 'books_sort' => 'Sorter bogindhold',
+ 'books_sort_desc' => 'Flyt kapitler og sider i en bog for at omorganisere dens indhold. Der kan tilføjes andre bøger, som gør det nemt at flytte kapitler og sider mellem bøgerne. Man kan indstille en automatisk sorteringsregel, så bogens indhold automatisk sorteres efter ændringer.',
+ 'books_sort_auto_sort' => 'Mulighed for automatisk sortering',
+ 'books_sort_auto_sort_active' => 'Automatisk sortering Aktiv: :sortName',
+ 'books_sort_named' => 'Sorter bog :bookName',
+ 'books_sort_name' => 'Sortér efter navn',
+ 'books_sort_created' => 'Sortér efter oprettelsesdato',
+ 'books_sort_updated' => 'Sortér efter opdateringsdato',
+ 'books_sort_chapters_first' => 'Kapitler først',
+ 'books_sort_chapters_last' => 'Kapitler sidst',
+ 'books_sort_show_other' => 'Vis andre bøger',
+ 'books_sort_save' => 'Gem ny ordre',
+ 'books_sort_show_other_desc' => 'Tilføj andre bøger her for at inkludere dem i sorteringen og gøre det nemt at omorganisere på tværs af bøger.',
+ 'books_sort_move_up' => 'Flyt op',
+ 'books_sort_move_down' => 'Flyt ned',
+ 'books_sort_move_prev_book' => 'Flyt til forrige bog',
+ 'books_sort_move_next_book' => 'Flyt til næste bog',
+ 'books_sort_move_prev_chapter' => 'Flyt Til Foregående Kapitel',
+ 'books_sort_move_next_chapter' => 'Flyt Til Næste Kapitel',
+ 'books_sort_move_book_start' => 'Flyt til Start af bog',
+ 'books_sort_move_book_end' => 'Flyt til slutningen af bogen',
+ 'books_sort_move_before_chapter' => 'Gå til kapitlet Før',
+ 'books_sort_move_after_chapter' => 'Flyt til Efter kapitel',
+ 'books_copy' => 'Kopier Bog',
+ 'books_copy_success' => 'Bogen blev kopieret',
+
+ // Chapters
+ 'chapter' => 'Kapitel',
+ 'chapters' => 'Kapitler',
+ 'x_chapters' => ':count kapitel|:count kapitler',
+ 'chapters_popular' => 'Populære kapitler',
+ 'chapters_new' => 'Nyt kapitel',
+ 'chapters_create' => 'Opret nyt kapitel',
+ 'chapters_delete' => 'Slet kapitel',
+ 'chapters_delete_named' => 'Slet kapitel :chapterName',
+ 'chapters_delete_explain' => 'Dette vil slette kapitlet med navnet \':chapterName\'. Alle sider i dette kapitel vil også blive slettet.',
+ 'chapters_delete_confirm' => 'Er du sikker på du vil slette dette kapitel?',
+ 'chapters_edit' => 'Rediger kapitel',
+ 'chapters_edit_named' => 'Rediger kapitel :chapterName',
+ 'chapters_save' => 'Gem kapitel',
+ 'chapters_move' => 'Flyt kapitel',
+ 'chapters_move_named' => 'Flyt kapitel :chapterName',
+ 'chapters_copy' => 'Kopier Kapitel',
+ 'chapters_copy_success' => 'Kapitlet blev kopieret',
+ 'chapters_permissions' => 'Kapiteltilladelser',
+ 'chapters_empty' => 'Der er lige nu ingen sider i dette kapitel.',
+ 'chapters_permissions_active' => 'Aktive kapiteltilladelser',
+ 'chapters_permissions_success' => 'Kapiteltilladelser opdateret',
+ 'chapters_search_this' => 'Søg i dette kapitel',
+ 'chapter_sort_book' => 'Sorter bog',
+
+ // Pages
+ 'page' => 'Side',
+ 'pages' => 'Sider',
+ 'x_pages' => ':count Side|:count Sider',
+ 'pages_popular' => 'Populære sider',
+ 'pages_new' => 'Ny side',
+ 'pages_attachments' => 'Vedhæftninger',
+ 'pages_navigation' => 'Sidenavigation',
+ 'pages_delete' => 'Slet side',
+ 'pages_delete_named' => 'Slet side :pageName',
+ 'pages_delete_draft_named' => 'Slet kladdesidde :pageName',
+ 'pages_delete_draft' => 'Slet kladdeside',
+ 'pages_delete_success' => 'Side slettet',
+ 'pages_delete_draft_success' => 'Kladdeside slettet',
+ 'pages_delete_warning_template' => 'Denne side er i aktiv brug som standardsideskabelon for en bog eller et kapitel. Disse bøger eller kapitler vil ikke længere have en standardsideskabelon tildelt, når denne side er slettet.',
+ 'pages_delete_confirm' => 'Er du sikker på, du vil slette denne side?',
+ 'pages_delete_draft_confirm' => 'Er du sikker på at du vil slette denne kladdesidde?',
+ 'pages_editing_named' => 'Redigerer :pageName',
+ 'pages_edit_draft_options' => 'Kladdeindstillinger',
+ 'pages_edit_save_draft' => 'Gem kladde',
+ 'pages_edit_draft' => 'Rediger sidekladde',
+ 'pages_editing_draft' => 'Redigerer kladde',
+ 'pages_editing_page' => 'Redigerer side',
+ 'pages_edit_draft_save_at' => 'Kladde gemt ved ',
+ 'pages_edit_delete_draft' => 'Slet kladde',
+ 'pages_edit_delete_draft_confirm' => 'Er du sikker på, at du vil slette dine ændringer på kladdesiden? Alle dine ændringer siden den sidste fulde lagring vil gå tabt, og editoren vil blive opdateret med den seneste lagring af siden uden udkast.',
+ 'pages_edit_discard_draft' => 'Kassér kladde',
+ 'pages_edit_switch_to_markdown' => 'Skift til Markdown redigering',
+ 'pages_edit_switch_to_markdown_clean' => '(Rent indhold)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stabilt indhold)',
+ 'pages_edit_switch_to_wysiwyg' => 'Skift til WYSIWYG redigering',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Skift til ny WYSIWYG (Hvad man ser, er hvad man får)',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(I Beta Test)',
+ 'pages_edit_set_changelog' => 'Sæt ændringsoversigt',
+ 'pages_edit_enter_changelog_desc' => 'Indtast en kort beskrivelse af ændringer du har lavet',
+ 'pages_edit_enter_changelog' => 'Indtast ændringsoversigt',
+ 'pages_editor_switch_title' => 'Skift Editor',
+ 'pages_editor_switch_are_you_sure' => 'Er du sikker på, at du vil ændre editoren for denne side?',
+ 'pages_editor_switch_consider_following' => 'Overvej følgende ved skift af redaktører:',
+ 'pages_editor_switch_consideration_a' => 'Når den nye redaktørindstilling er gemt, vil den blive brugt af alle fremtidige redaktører, også dem, der måske ikke selv kan ændre redaktørtype.',
+ 'pages_editor_switch_consideration_b' => 'Dette kan potentielt føre til tab af detaljer og syntaks under visse omstændigheder.',
+ 'pages_editor_switch_consideration_c' => 'Ændringer i tag eller changelog, der er foretaget siden sidste lagring, fortsætter ikke på tværs af denne ændring.',
+ 'pages_save' => 'Gem siden',
+ 'pages_title' => 'Overskrift',
+ 'pages_name' => 'Sidenavn',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Forhåndsvisning',
+ 'pages_md_insert_image' => 'Indsæt billede',
+ 'pages_md_insert_link' => 'Indsæt emnelink',
+ 'pages_md_insert_drawing' => 'Indsæt tegning',
+ 'pages_md_show_preview' => 'Vis forhåndsvisning',
+ 'pages_md_sync_scroll' => 'Rulning af forhåndsvisning af synkronisering',
+ 'pages_md_plain_editor' => 'Klartekst editor',
+ 'pages_drawing_unsaved' => 'Ikke gemt tegning fundet',
+ 'pages_drawing_unsaved_confirm' => 'Der blev fundet ikke-gemte tegningsdata fra et tidligere mislykket forsøg på at gemme en tegning. Vil du gendanne og fortsætte med at redigere denne ikke-gemte tegning?',
+ 'pages_not_in_chapter' => 'Side er ikke i et kapitel',
+ 'pages_move' => 'Flyt side',
+ 'pages_copy' => 'Kopier side',
+ 'pages_copy_desination' => 'Kopier destination',
+ 'pages_copy_success' => 'Side kopieret succesfuldt',
+ 'pages_permissions' => 'Sidetilladelser',
+ 'pages_permissions_success' => 'Sidetilladelser opdateret',
+ 'pages_revision' => 'Revision',
+ 'pages_revisions' => 'Sidserevisioner',
+ 'pages_revisions_desc' => 'Nedenfor findes alle tidligere revisioner af denne side. Du kan se tilbage på, sammenligne og gendanne gamle sideversioner, hvis tilladelserne tillader det. Sidens fulde historik afspejles muligvis ikke fuldt ud her, da gamle revisioner kan blive slettet automatisk, afhængigt af systemkonfigurationen.',
+ 'pages_revisions_named' => 'Siderevisioner for :pageName',
+ 'pages_revision_named' => 'Siderevision for :pageName',
+ 'pages_revision_restored_from' => 'Genoprettet fra #:id; :summary',
+ 'pages_revisions_created_by' => 'Oprettet af',
+ 'pages_revisions_date' => 'Revisionsdato',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revisionsnummer',
+ 'pages_revisions_numbered' => 'Revision #:id',
+ 'pages_revisions_numbered_changes' => 'Revision #:id ændringer',
+ 'pages_revisions_editor' => 'Editor Type',
+ 'pages_revisions_changelog' => 'Ændringsoversigt',
+ 'pages_revisions_changes' => 'Ændringer',
+ 'pages_revisions_current' => 'Nuværende version',
+ 'pages_revisions_preview' => 'Forhåndsvisning',
+ 'pages_revisions_restore' => 'Gendan',
+ 'pages_revisions_none' => 'Denne side har ingen revisioner',
+ 'pages_copy_link' => 'Kopier link',
+ 'pages_edit_content_link' => 'Spring til sektionen i editoren',
+ 'pages_pointer_enter_mode' => 'Gå ind i sektionsvalgtilstand',
+ 'pages_pointer_label' => 'Indstillinger for sideafsnit',
+ 'pages_pointer_permalink' => 'Side Afsnit Permalink',
+ 'pages_pointer_include_tag' => 'Sideafsnit inkluderer tag',
+ 'pages_pointer_toggle_link' => 'Permalink-tilstand, tryk for at vise include-tag',
+ 'pages_pointer_toggle_include' => 'Inkluder tag-tilstand, tryk for at vise permalink',
+ 'pages_permissions_active' => 'Aktive sidetilladelser',
+ 'pages_initial_revision' => 'Første udgivelse',
+ 'pages_references_update_revision' => 'Automatisk systemopdatering af interne links',
+ 'pages_initial_name' => 'Ny side',
+ 'pages_editing_draft_notification' => 'Du redigerer en kladde der sidst var gemt :timeDiff.',
+ 'pages_draft_edited_notification' => 'Siden har været opdateret siden da. Det er anbefalet at du kasserer denne kladde.',
+ 'pages_draft_page_changed_since_creation' => 'Denne side er blevet opdateret siden dette udkast blev oprettet. Det anbefales at du kasserer dette udkast eller passer på ikke at overskrive nogen sideændringer.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count brugerer har begyndt at redigere denne side',
+ 'start_b' => ':userName er begyndt at redigere denne side',
+ 'time_a' => 'siden siden sidst blev opdateret',
+ 'time_b' => 'i de sidste :minCount minutter',
+ 'message' => ':start : time. Pas på ikke at overskrive hinandens opdateringer!',
+ ],
+ 'pages_draft_discarded' => 'Udkast kasseret! Editoren er blevet opdateret med det aktuelle sideindhold',
+ 'pages_draft_deleted' => 'Udkast slettet! Editoren er blevet opdateret med det aktuelle sideindhold',
+ 'pages_specific' => 'Specifik side',
+ 'pages_is_template' => 'Sideskabelon',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Sidebjælke til/fra',
+ 'page_tags' => 'Sidetags',
+ 'chapter_tags' => 'Kapiteltags',
+ 'book_tags' => 'Bogtags',
+ 'shelf_tags' => 'Reoltags',
+ 'tag' => 'Tag',
+ 'tags' => 'Tags',
+ 'tags_index_desc' => 'Tags kan anvendes på indhold i systemet for at anvende en fleksibel form for kategorisering. Tags kan have både en nøgle og en værdi, hvor værdien er valgfri. Når de er anvendt, kan der søges efter indhold ved hjælp af tagnavn og -værdi.',
+ 'tag_name' => 'Tagnavn',
+ 'tag_value' => 'Tagværdi (valgfri)',
+ 'tags_explain' => "Tilføj nogle tags for bedre at kategorisere dit indhold. \n Du kan tildele en værdi til et tag for mere dybdegående organisering.",
+ 'tags_add' => 'Tilføj endnu et tag',
+ 'tags_remove' => 'Fjern dette tag',
+ 'tags_usages' => 'Samlet brug af tags',
+ 'tags_assigned_pages' => 'Tildelt til sider',
+ 'tags_assigned_chapters' => 'Tildelt til Kapitler',
+ 'tags_assigned_books' => 'Tildelt til Bøger',
+ 'tags_assigned_shelves' => 'Tildelt til bogreoler',
+ 'tags_x_unique_values' => ':count unikke værdier',
+ 'tags_all_values' => 'Alle værdier',
+ 'tags_view_tags' => 'Vis Tags',
+ 'tags_view_existing_tags' => 'Vis eksisterende tags',
+ 'tags_list_empty_hint' => 'Tags kan tildeles via sideeditorens sidepanel eller under redigering af detaljerne i en bog, et kapitel eller en hylde.',
+ 'attachments' => 'Vedhæftninger',
+ 'attachments_explain' => 'Upload nogle filer, eller vedhæft nogle links, der skal vises på siden. Disse er synlige i sidepanelet.',
+ 'attachments_explain_instant_save' => 'Ændringer her gemmes med det samme.',
+ 'attachments_upload' => 'Upload fil',
+ 'attachments_link' => 'Vedhæft link',
+ 'attachments_upload_drop' => 'Alternativt kan du trække og slippe en fil her for at uploade den som en vedhæftet fil.',
+ 'attachments_set_link' => 'Sæt link',
+ 'attachments_delete' => 'Er du sikker på at du vil slette denne vedhæftning?',
+ 'attachments_dropzone' => 'Slip filer her for at uploade',
+ 'attachments_no_files' => 'Ingen filer er blevet overført',
+ 'attachments_explain_link' => 'Du kan vedhæfte et link, hvis du foretrækker ikke at uploade en fil. Dette kan være et link til en anden side eller et link til en fil i skyen.',
+ 'attachments_link_name' => 'Linknavn',
+ 'attachment_link' => 'Vedhæftningslink',
+ 'attachments_link_url' => 'Link til filen',
+ 'attachments_link_url_hint' => 'Adresse (URL) på side eller fil',
+ 'attach' => 'Vedhæft',
+ 'attachments_insert_link' => 'Tilføj vedhæftningslink til side',
+ 'attachments_edit_file' => 'Rediger fil',
+ 'attachments_edit_file_name' => 'Filnavn',
+ 'attachments_edit_drop_upload' => 'Slip filer eller klik her for at uploade og overskrive',
+ 'attachments_order_updated' => 'Vedhæftningsordre opdateret',
+ 'attachments_updated_success' => 'Vedhæftningsdetaljer opdateret',
+ 'attachments_deleted' => 'Vedhæftning slettet',
+ 'attachments_file_uploaded' => 'Filen blev uploadet korrekt',
+ 'attachments_file_updated' => 'Filen blev opdateret korrekt',
+ 'attachments_link_attached' => 'Link succesfuldt vedhæftet til side',
+ 'templates' => 'Skabeloner',
+ 'templates_set_as_template' => 'Side er en skabelon',
+ 'templates_explain_set_as_template' => 'Du kan indstille denne side som en skabelon, så dens indhold bruges, når du opretter andre sider. Andre brugere vil kunne bruge denne skabelon, hvis de har visningstilladelser til denne side.',
+ 'templates_replace_content' => 'Udskift sideindhold',
+ 'templates_append_content' => 'Tilføj efter sideindhold',
+ 'templates_prepend_content' => 'Tilføj før sideindhold',
+
+ // Profile View
+ 'profile_user_for_x' => 'Bruger i :time',
+ 'profile_created_content' => 'Oprettet indhold',
+ 'profile_not_created_pages' => ':userName har ikke oprettet nogle sider',
+ 'profile_not_created_chapters' => ':userName har ikke oprettet nogle kapitler',
+ 'profile_not_created_books' => ':userName har ikke oprettet nogle bøger',
+ 'profile_not_created_shelves' => ':userName har ikke oprettet nogle reoler',
+
+ // Comments
+ 'comment' => 'Kommentar',
+ 'comments' => 'Kommentarer',
+ 'comment_add' => 'Tilføj kommentar',
+ 'comment_none' => 'Ingen kommentarer at vise',
+ 'comment_placeholder' => 'Skriv en kommentar her',
+ 'comment_thread_count' => ':count Kommentar Tråde:count Kommentar Tråde',
+ 'comment_archived_count' => ':count Arkiveret',
+ 'comment_archived_threads' => 'Arkiverede Tråde',
+ 'comment_save' => 'Gem kommentar',
+ 'comment_new' => 'Ny kommentar',
+ 'comment_created' => 'kommenteret :createDiff',
+ 'comment_updated' => 'Opdateret :updateDiff af :username',
+ 'comment_updated_indicator' => 'Opdateret',
+ 'comment_deleted_success' => 'Kommentar slettet',
+ 'comment_created_success' => 'Kommentaren er tilføjet',
+ 'comment_updated_success' => 'Kommentaren er opdateret',
+ 'comment_archive_success' => 'Kommentar arkiveret',
+ 'comment_unarchive_success' => 'Kommentaren er ikke længere arkiveret',
+ 'comment_view' => 'Se kommentar',
+ 'comment_jump_to_thread' => 'Hop til tråd',
+ 'comment_delete_confirm' => 'Er du sikker på, at du vil slette denne kommentar?',
+ 'comment_in_reply_to' => 'Som svar til :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Forældet)',
+ 'comment_editor_explain' => 'Her er de kommentarer, der er blevet efterladt på denne side. Kommentarer kan tilføjes og administreres, når du ser den gemte side.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Er du sikker på at du vil slette denne revision?',
+ 'revision_restore_confirm' => 'Er du sikker på at du ønsker at gendanne denne revision? Nuværende sideindhold vil blive erstattet.',
+ 'revision_cannot_delete_latest' => 'Kan ikke slette seneste revision.',
+
+ // Copy view
+ 'copy_consider' => 'Vær opmærksom på nedenstående, når du kopierer indhold.',
+ 'copy_consider_permissions' => 'Brugerdefinerede tilladelsesindstillinger kopieres ikke.',
+ 'copy_consider_owner' => 'Du bliver ejer af alt kopieret indhold.',
+ 'copy_consider_images' => 'Sidens billedfiler vil ikke blive duplikeret, og de originale billeder vil bevare deres relation til den side, de oprindeligt blev uploadet til.',
+ 'copy_consider_attachments' => 'Vedhæftede sider bliver ikke kopieret.',
+ 'copy_consider_access' => 'En ændring af placering, ejer eller tilladelser kan resultere i, at dette indhold er tilgængeligt for dem, der tidligere ikke havde adgang.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Konverter til hylde',
+ 'convert_to_shelf_contents_desc' => 'Du kan konvertere denne bog til en ny hylde med samme indhold. Kapitler i denne bog vil blive konverteret til nye bøger. Hvis denne bog indeholder sider, som ikke er i et kapitel, vil bogen blive omdøbt og indeholde sådanne sider, og bogen vil blive en del af den nye hylde.',
+ 'convert_to_shelf_permissions_desc' => 'Alle tilladelser, der er indstillet på denne bog, vil blive kopieret til den nye hylde og til alle nye underordnede bøger, der ikke har deres egne tilladelser håndhævet. Bemærk, at tilladelser på hylder ikke automatisk overføres til indholdet på hylden, som de gør for bøger.',
+ 'convert_book' => 'Omdan Bog',
+ 'convert_book_confirm' => 'Er du sikker på, at du vil konvertere denne bog?',
+ 'convert_undo_warning' => 'Det kan ikke gøres om så let.',
+ 'convert_to_book' => 'Omdan til Bog',
+ 'convert_to_book_desc' => 'Du kan konvertere dette kapitel til en ny bog med samme indhold. Alle tilladelser, der er indstillet på dette kapitel, vil blive kopieret til den nye bog, men eventuelle nedarvede tilladelser fra den overordnede bog vil ikke blive kopieret, hvilket kan føre til en ændring af adgangskontrollen.',
+ 'convert_chapter' => 'Omdan Kapitel',
+ 'convert_chapter_confirm' => 'Er du sikker på at du vil omdanne dette kapitel?',
+
+ // References
+ 'references' => 'Kilder',
+ 'references_none' => 'Der er ingen sporede referencer til dette emne.',
+ 'references_to_desc' => 'Nedenfor vises alt det kendte indhold i systemet, som linker til dette element.',
+
+ // Watch Options
+ 'watch' => 'Overvåg',
+ 'watch_title_default' => 'Standardindstillinger',
+ 'watch_desc_default' => 'Gå tilbage til kun at se dine standardindstillinger for notifikationer.',
+ 'watch_title_ignore' => 'Ignorér',
+ 'watch_desc_ignore' => 'Ignorer alle meddelelser, også dem fra indstillinger på brugerniveau.',
+ 'watch_title_new' => 'Nye sider',
+ 'watch_desc_new' => 'Giv besked, når der oprettes en ny side i dette element.',
+ 'watch_title_updates' => 'Alle sideopdateringer',
+ 'watch_desc_updates' => 'Giv besked om alle nye sider og sideændringer.',
+ 'watch_desc_updates_page' => 'Giv besked om alle sideændringer.',
+ 'watch_title_comments' => 'Alle sideopdateringer og kommentarer',
+ 'watch_desc_comments' => 'Giv besked om alle nye sider, sideændringer og nye kommentarer.',
+ 'watch_desc_comments_page' => 'Giv besked ved sideændringer og nye kommentarer.',
+ 'watch_change_default' => 'Skift indstillinger for standardmeddelelser',
+ 'watch_detail_ignore' => 'Ignorerer notifikationer',
+ 'watch_detail_new' => 'Holder øje med nye sider',
+ 'watch_detail_updates' => 'Holder øje med nye sider og opdateringer',
+ 'watch_detail_comments' => 'Holder øje med nye sider, opdateringer og kommentarer',
+ 'watch_detail_parent_book' => 'Se med via forældrebogen',
+ 'watch_detail_parent_book_ignore' => 'Ignorering via forældrebog',
+ 'watch_detail_parent_chapter' => 'Se med via forældrekapitel',
+ 'watch_detail_parent_chapter_ignore' => 'Ignorering via forældrekapitel',
+];
diff --git a/lang/da/errors.php b/lang/da/errors.php
new file mode 100644
index 00000000000..eeb96f59b8d
--- /dev/null
+++ b/lang/da/errors.php
@@ -0,0 +1,135 @@
+ 'Du har ikke tilladelse til at tilgå den efterspurgte side.',
+ 'permissionJson' => 'Du har ikke tilladelse til at udføre den valgte handling.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'En bruger med email :email eksistere allerede, men med andre legitimationsoplysninger.',
+ 'auth_pre_register_theme_prevention' => 'Brugerkonto kunne ikke registreres for de angivne detaljer',
+ 'email_already_confirmed' => 'Email er allerede bekræftet. Prøv at logge ind.',
+ 'email_confirmation_invalid' => 'Denne bekræftelsestoken er ikke gyldig eller er allerede blevet brugt. Prøv at registrere dig igen.',
+ 'email_confirmation_expired' => 'Bekræftelsestoken er udløbet. En ny bekræftelsesmail er blevet sendt.',
+ 'email_confirmation_awaiting' => 'Mail-adressen for din konto i brug er nød til at blive bekræftet',
+ 'ldap_fail_anonymous' => 'LDAP-adgang fejlede ved brugen af annonym bind',
+ 'ldap_fail_authed' => 'LDAP adgang fejlede med de givne DN & kodeord oplysninger',
+ 'ldap_extension_not_installed' => 'LDAP PHP udvidelse er ikke installeret',
+ 'ldap_cannot_connect' => 'Kan ikke forbinde til ldap server. Indledende forbindelse mislykkedes',
+ 'saml_already_logged_in' => 'Allerede logget ind',
+ 'saml_no_email_address' => 'Kunne ikke finde en e-mail-adresse for denne bruger i de data, der leveres af det eksterne godkendelsessystem',
+ 'saml_invalid_response_id' => 'Anmodningen fra det eksterne godkendelsessystem genkendes ikke af en proces, der er startet af denne applikation. Navigering tilbage efter et login kan forårsage dette problem.',
+ 'saml_fail_authed' => 'Login ved hjælp af :system failed, systemet har ikke givet tilladelse',
+ 'oidc_already_logged_in' => 'Allerede logget ind',
+ 'oidc_no_email_address' => 'Kunne ikke finde en e-mailadresse for denne bruger i de data, der leveres af det eksterne godkendelsessystem',
+ 'oidc_fail_authed' => 'Login ved hjælp af :system fejlede, systemet har ikke givet tilladelse',
+ 'social_no_action_defined' => 'Ingen handling er defineret',
+ 'social_login_bad_response' => "Der opstod en fejl under :socialAccount login:\n:error",
+ 'social_account_in_use' => 'Denne :socialAccount konto er allerede i brug, prøv at logge ind med :socialAccount loginmetoden.',
+ 'social_account_email_in_use' => 'Emailen :email er allerede i brug. Hvis du allerede har en konto, kan du forbinde din :socialAccount fra dine profilindstillinger.',
+ 'social_account_existing' => ':socialAccount er allerede tilknyttet din profil.',
+ 'social_account_already_used_existing' => 'Denne :socialAccount konto er allerede i brug af en anden bruger.',
+ 'social_account_not_used' => 'Denne :socialAccount konto er ikke tilknyttet nogle brugere. Tilknyt den i dine profilindstillinger. ',
+ 'social_account_register_instructions' => 'Hvis du ikke har en konto, kan du registrere en konto gennem :socialAccount loginmetoden.',
+ 'social_driver_not_found' => 'Socialdriver ikke fundet',
+ 'social_driver_not_configured' => 'Dine :socialAccount indstillinger er ikke konfigureret korret.',
+ 'invite_token_expired' => 'Dette invitationslink er udløbet. I stedet kan du prøve at nulstille din kontos kodeord.',
+ 'login_user_not_found' => 'Der kunne ikke findes en bruger til denne handling.',
+
+ // System
+ 'path_not_writable' => 'Filsti :filePath kunne ikke uploades til. Sørg for at den kan skrives til af webserveren.',
+ 'cannot_get_image_from_url' => 'Kan ikke finde billede på :url',
+ 'cannot_create_thumbs' => 'Serveren kan ikke oprette miniaturer. Kontroller, at GD PHP-udvidelsen er installeret.',
+ 'server_upload_limit' => 'Serveren tillader ikke uploads af denne størrelse. Prøv en mindre filstørrelse.',
+ 'server_post_limit' => 'Serveren kan ikke modtage den angivne mængde data. Prøv igen med færre data eller en mindre fil.',
+ 'uploaded' => 'Serveren tillader ikke uploads af denne størrelse. Prøv en mindre filstørrelse.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Der opstod en fejl ved upload af billedet',
+ 'image_upload_type_error' => 'Billedtypen, der uploades, er ugyldig',
+ 'image_upload_replace_type' => 'Udskiftninger af billedfiler skal være af samme type',
+ 'image_upload_memory_limit' => 'Kunne ikke håndtere billedupload og/eller oprette thumbnails på grund af begrænsninger i systemets ressourcer.',
+ 'image_thumbnail_memory_limit' => 'Det lykkedes ikke at skabe variationer i billedstørrelsen på grund af begrænsninger i systemets ressourcer.',
+ 'image_gallery_thumbnail_memory_limit' => 'Det lykkedes ikke at oprette galleriminiaturer på grund af begrænsede systemressourcer.',
+ 'drawing_data_not_found' => 'Tegningsdata kunne ikke indlæses. Tegningsfilen findes måske ikke længere, eller du har måske ikke tilladelse til at få adgang til den.',
+
+ // Attachments
+ 'attachment_not_found' => 'Vedhæftning ikke fundet',
+ 'attachment_upload_error' => 'Der opstod en fejl ved upload af den vedhæftede fil',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Kunne ikke gemme kladde. Tjek at du har internetforbindelse før du gemmer siden',
+ 'page_draft_delete_fail' => 'Kunne ikke slette sideudkast og hente den aktuelle sides gemte indhold',
+ 'page_custom_home_deletion' => 'Kan ikke slette en side der er sat som forside',
+
+ // Entities
+ 'entity_not_found' => 'Emne ikke fundet',
+ 'bookshelf_not_found' => 'Hylde ikke fundet',
+ 'book_not_found' => 'Bog ikke fundet',
+ 'page_not_found' => 'Side ikke fundet',
+ 'chapter_not_found' => 'Kapitel ikke fundet',
+ 'selected_book_not_found' => 'Den valgte bog kunne ikke findes',
+ 'selected_book_chapter_not_found' => 'Den valgte bog eller kapitel kunne ikke findes',
+ 'guests_cannot_save_drafts' => 'Gæster kan ikke gemme kladder',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Du kan ikke slette den eneste admin',
+ 'users_cannot_delete_guest' => 'Du kan ikke slette gæstebrugeren',
+ 'users_could_not_send_invite' => 'Kunne ikke oprette en bruger, da invitationsmailen ikke blev sendt',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Denne rolle kan ikke redigeres',
+ 'role_system_cannot_be_deleted' => 'Denne rolle er en systemrolle og kan ikke slettes',
+ 'role_registration_default_cannot_delete' => 'Kan ikke slette rollen mens den er sat som standardrolle for registrerede brugere',
+ 'role_cannot_remove_only_admin' => 'Denne bruger er den eneste bruger der har administratorrollen. Tilføj en anden bruger til administratorrollen før du forsøger at slette den her.',
+
+ // Comments
+ 'comment_list' => 'Der opstod en fejl under hentning af kommentarerne.',
+ 'cannot_add_comment_to_draft' => 'Du kan ikke kommentere på en kladde.',
+ 'comment_add' => 'Der opstod en fejl under tilføjelse/opdatering af kommentaren.',
+ 'comment_delete' => 'Der opstod en fejl under sletning af kommentaren.',
+ 'empty_comment' => 'Kan ikke tilføje en tom kommentar.',
+
+ // Error pages
+ '404_page_not_found' => 'Siden blev ikke fundet',
+ 'sorry_page_not_found' => 'Beklager, siden du leder efter blev ikke fundet.',
+ 'sorry_page_not_found_permission_warning' => 'Hvis du forventede, at denne side skulle eksistere, har du muligvis ikke tilladelse til at se den.',
+ 'image_not_found' => 'Billede ikke fundet',
+ 'image_not_found_subtitle' => 'Beklager, billedet du ledte efter kunne ikke findes.',
+ 'image_not_found_details' => 'Hvis du forventede, at dette billede skulle eksistere, kan det være blevet slettet.',
+ 'return_home' => 'Gå tilbage til hjem',
+ 'error_occurred' => 'Der opstod en fejl',
+ 'app_down' => ':appName er nede lige nu',
+ 'back_soon' => 'Den er oppe igen snart.',
+
+ // Import
+ 'import_zip_cant_read' => 'Kunne ikke læse ZIP-filen.',
+ 'import_zip_cant_decode_data' => 'Kunne ikke finde og afkode ZIP data.json-indhold.',
+ 'import_zip_no_data' => 'ZIP-filens data har ikke noget forventet bog-, kapitel- eller sideindhold.',
+ 'import_zip_data_too_large' => 'Indholdet af ZIP data.json overstiger den konfigurerede maksimale uploadstørrelse for applikationen.',
+ 'import_validation_failed' => 'Import ZIP kunne ikke valideres med fejl:',
+ 'import_zip_failed_notification' => 'Kunne ikke importere ZIP-fil.',
+ 'import_perms_books' => 'Du mangler de nødvendige tilladelser til at oprette bøger.',
+ 'import_perms_chapters' => 'Du mangler de nødvendige tilladelser til at oprette kapitler.',
+ 'import_perms_pages' => 'Du mangler de nødvendige tilladelser til at oprette sider.',
+ 'import_perms_images' => 'Du mangler de nødvendige tilladelser til at oprette billeder.',
+ 'import_perms_attachments' => 'Du mangler den nødvendige tilladelse til at oprette vedhæftede filer.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Der blev ikke fundet nogen autorisationstoken på anmodningen',
+ 'api_bad_authorization_format' => 'En autorisationstoken blev fundet på anmodningen, men formatet var forkert',
+ 'api_user_token_not_found' => 'Der blev ikke fundet nogen matchende API-token for det angivne autorisationstoken',
+ 'api_incorrect_token_secret' => 'Hemmeligheden leveret til det givne anvendte API-token er forkert',
+ 'api_user_no_api_permission' => 'Ejeren af den brugte API token har ikke adgang til at foretage API-kald',
+ 'api_user_token_expired' => 'Den brugte godkendelsestoken er udløbet',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Følgende fejl opstod under afsendelse af testemail:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'URL\'en stemmer ikke overens med de konfigurerede tilladte SSR-værter',
+];
diff --git a/lang/da/notifications.php b/lang/da/notifications.php
new file mode 100644
index 00000000000..fc4d7d763b7
--- /dev/null
+++ b/lang/da/notifications.php
@@ -0,0 +1,29 @@
+ 'Ny kommentar på siden: :pageName',
+ 'new_comment_intro' => 'En bruger har kommenteret på en side i :appName:',
+ 'new_page_subject' => 'Ny side: :pageName',
+ 'new_page_intro' => 'En ny side er blevet oprettet i :appName:',
+ 'updated_page_subject' => 'Opdateret side: :pageName',
+ 'updated_page_intro' => 'En side er blevet opdateret i :appName:',
+ 'updated_page_debounce' => 'For at forhindre en masse af notifikationer, i et stykke tid vil du ikke blive sendt notifikationer for yderligere redigeringer til denne side af den samme editor.',
+ 'comment_mention_subject' => 'Du er blevet nævnt i en kommentar på siden: :pageName',
+ 'comment_mention_intro' => 'Du blev nævnt i en kommentar på :appName:',
+
+ 'detail_page_name' => 'Sidens navn:',
+ 'detail_page_path' => 'Sidesti:',
+ 'detail_commenter' => 'Kommentator:',
+ 'detail_comment' => 'Bemærkninger:',
+ 'detail_created_by' => 'Oprettet af:',
+ 'detail_updated_by' => 'Opdateret af:',
+
+ 'action_view_comment' => 'Se kommentar',
+ 'action_view_page' => 'Vis Side',
+
+ 'footer_reason' => 'Denne meddelelse blev sendt til dig, fordi :link dækker denne type aktivitet for denne vare.',
+ 'footer_reason_link' => 'dine indstillinger for notifikationer',
+];
diff --git a/resources/lang/da/pagination.php b/lang/da/pagination.php
similarity index 100%
rename from resources/lang/da/pagination.php
rename to lang/da/pagination.php
diff --git a/lang/da/passwords.php b/lang/da/passwords.php
new file mode 100644
index 00000000000..b58a4c94b78
--- /dev/null
+++ b/lang/da/passwords.php
@@ -0,0 +1,15 @@
+ 'Adgangskoder skal være mindst otte tegn og svare til bekræftelsen.',
+ 'user' => "Vi kan ikke finde en bruger med den e-mailadresse.",
+ 'token' => 'Linket til nulstilling af adgangskode er ugyldigt for denne e-mail-adresse.',
+ 'sent' => 'Vi har sendt dig en e-mail med et link til at nulstille adgangskoden!',
+ 'reset' => 'Dit kodeord er blevet nulstillet!',
+
+];
diff --git a/lang/da/preferences.php b/lang/da/preferences.php
new file mode 100644
index 00000000000..9b31a0c1f16
--- /dev/null
+++ b/lang/da/preferences.php
@@ -0,0 +1,52 @@
+ 'Min konto',
+
+ 'shortcuts' => 'Genveje',
+ 'shortcuts_interface' => 'Genveje',
+ 'shortcuts_toggle_desc' => 'Her kan du aktivere eller deaktivere genveje, der bruges til navigation og handlinger.',
+ 'shortcuts_customize_desc' => 'Du kan tilpasse hver af genvejene nedenfor. Tryk på din ønskede tastekombination efter at have valgt feltet for genvejen.',
+ 'shortcuts_toggle_label' => 'Tastaturgenveje aktiveret',
+ 'shortcuts_section_navigation' => 'Navigation',
+ 'shortcuts_section_actions' => 'Almindelige handlinger',
+ 'shortcuts_save' => 'Gem Genveje',
+ 'shortcuts_overlay_desc' => 'Bemærk: Når genveje er aktiveret kan du altid se de tilgængelige genveje ved at trykke på "?" på dit tastatur.',
+ 'shortcuts_update_success' => 'Genvejspræferencer er blevet opdateret!',
+ 'shortcuts_overview_desc' => 'Håndtér tastaturgenveje, du kan bruge til at navigere i systemets brugergrænseflade.',
+
+ 'notifications' => 'Notifikationer',
+ 'notifications_desc' => 'Administrer de e-mail-notifikationer, du modtager, når visse aktiviteter udføres i systemet.',
+ 'notifications_opt_own_page_changes' => 'Adviser ved ændringer af sider, jeg ejer',
+ 'notifications_opt_own_page_comments' => 'Adviser ved kommentarer på sider, jeg ejer',
+ 'notifications_opt_comment_mentions' => 'Giv besked, når jeg er nævnt i en kommentar',
+ 'notifications_opt_comment_replies' => 'Adviser ved svar på mine kommentarer',
+ 'notifications_save' => 'Gem indstillinger',
+ 'notifications_update_success' => 'Indstillinger for notifikationer er blevet opdateret!',
+ 'notifications_watched' => 'Overvågede og ignorerede',
+ 'notifications_watched_desc' => 'Nedenfor er de elementer, der har brugerdefinerede overvågning aktivt. For at opdatere dine præferencer for disse, gå til elementet og find derefter overvågning i sidepanelet.',
+
+ 'auth' => 'Adgang og sikkerhed',
+ 'auth_change_password' => 'Skift adgangskode',
+ 'auth_change_password_desc' => 'Skift den adgangskode, du bruger til at logge ind med. Den skal være mindst 8 tegn lang.',
+ 'auth_change_password_success' => 'Adgangskoden er blevet opdateret!',
+
+ 'profile' => 'Profil',
+ 'profile_desc' => 'Administrer detaljerne på din konto, som repræsenterer dig over for andre brugere.',
+ 'profile_view_public' => 'Vis offentlig profil',
+ 'profile_name_desc' => 'Konfigurer dit visningsnavn, som vil være synligt for andre brugere i systemet gennem den aktivitet, du udfører, og indhold du ejer.',
+ 'profile_email_desc' => 'Denne e-mail vil blive brugt til notifikationer og, afhængigt af aktiv systemgodkendelse, systemadgang.',
+ 'profile_email_no_permission' => 'Desværre har du ikke tilladelse til at ændre din e-mailadresse. Hvis du ønsker at ændre dette, skal du bede en administrator om at ændre dette for dig.',
+ 'profile_avatar_desc' => 'Vælg et billede som vil blive brugt til at repræsentere dig selv over for andre i systemet. Ideelt set bør dette billede være kvadrat og omkring 256px i bredde og højde.',
+ 'profile_admin_options' => 'Administratorindstillinger',
+ 'profile_admin_options_desc' => 'Yderligere indstillinger på administratorniveau, såsom dem der håndterer rolleopgaver, kan findes for din brugerkonto i området "Indstillinger > Brugere".',
+
+ 'delete_account' => 'Slet konto',
+ 'delete_my_account' => 'Slet min konto',
+ 'delete_my_account_desc' => 'Dette vil fuldt ud slette din brugerkonto fra systemet. Du vil ikke være i stand til at gendanne denne konto eller fortryde denne handling. Indhold, du har oprettet, såsom oprettede sider og uploadede billeder, vil ikke blive slettet.',
+ 'delete_my_account_warning' => 'Er du sikker at du vil slette din konto?',
+];
diff --git a/lang/da/settings.php b/lang/da/settings.php
new file mode 100644
index 00000000000..cd869c62fe0
--- /dev/null
+++ b/lang/da/settings.php
@@ -0,0 +1,374 @@
+ 'Indstillinger',
+ 'settings_save' => 'Gem indstillinger',
+ 'system_version' => 'Systemversion',
+ 'categories' => 'Kategorier',
+
+ // App Settings
+ 'app_customization' => 'Tilpasning',
+ 'app_features_security' => 'Funktionalitet og sikkerhed',
+ 'app_name' => 'Applikationsnavn',
+ 'app_name_desc' => 'Dette navn vises i headeren og i alle e-mails sendt fra systemet.',
+ 'app_name_header' => 'Vis navn i header',
+ 'app_public_access' => 'Offentlig adgang',
+ 'app_public_access_desc' => 'Aktivering af denne funktion giver besøgende, der ikke er logget ind, adgang til indhold i din BookStack-instans.',
+ 'app_public_access_desc_guest' => 'Adgang for ikke-registrerede besøgende kan kontrolleres via "Gæst" -brugeren.',
+ 'app_public_access_toggle' => 'Tillad offentlig adgang',
+ 'app_public_viewing' => 'Tillad offentlig visning?',
+ 'app_secure_images' => 'Højere sikkerhed for billeduploads',
+ 'app_secure_images_toggle' => 'Aktiver højere sikkerhed for billeduploads',
+ 'app_secure_images_desc' => 'Af performanceårsager er alle billeder offentlige. Denne funktion tilføjer en tilfældig, vanskelig at gætte streng foran billed-url\'er. Sørg for, at mappeindeksering ikke er aktiveret for at forhindre nem adgang.',
+ 'app_default_editor' => 'Standard sideeditor',
+ 'app_default_editor_desc' => 'Vælg hvilken editor der som standard skal bruges ved redigering af nye sider. Dette kan tilsidesættes på side niveau, hvor tilladelser tillader det.',
+ 'app_custom_html' => 'Tilpasset HTML head indhold',
+ 'app_custom_html_desc' => 'Alt indhold tilføjet her, vil blive indsat i bunden af sektionen på alle sider. Dette er brugbart til overskrivning af styles og tilføjelse af analytics kode.',
+ 'app_custom_html_disabled_notice' => 'Brugerdefineret HTML head indhold er deaktiveret på denne indstillingsside for at, at ændringer kan rulles tilbage.',
+ 'app_logo' => 'Applikationslogo',
+ 'app_logo_desc' => 'Det bruges blandt andet i applikationens headerbar. Dette billede skal være 86px i højden. Store billeder vil blive skaleret ned.',
+ 'app_icon' => 'Programikon',
+ 'app_icon_desc' => 'Dette ikon bruges til browserfaner og genvejsikoner. Det skal være et 256px kvadratisk PNG-billede.',
+ 'app_homepage' => 'Applikationsforside',
+ 'app_homepage_desc' => 'Vælg en visning, der skal vises på forsiden i stedet for standardvisningen. Sidetilladelser ignoreres for de valgte sider.',
+ 'app_homepage_select' => 'Vælg en side',
+ 'app_footer_links' => 'Footer links',
+ 'app_footer_links_desc' => 'Tilføj links til footeren. Linksene vil blive vist nederst på de fleste sider, inkluderet sider, som ikke kræver login. Brug en label med "trans::" for at bruge systemdefinerede oversættelser. For eksempel: "trans::common.privacy_policy" giver den oversatte tekst "Privacy Policy" og "trans::common.terms_of_service" vil give den oversatte tekst "Terms of Service".',
+ 'app_footer_links_label' => 'Link label',
+ 'app_footer_links_url' => 'Link URL',
+ 'app_footer_links_add' => 'Tilføj footer link',
+ 'app_disable_comments' => 'Deaktiver kommentarer',
+ 'app_disable_comments_toggle' => 'Deaktiver kommentar',
+ 'app_disable_comments_desc' => 'Deaktiverer kommentarer på tværs af alle sider i applikationen. Eksisterende kommentarer vises ikke.',
+
+ // Color settings
+ 'color_scheme' => 'Applikationens farveskema',
+ 'color_scheme_desc' => 'Indstil de farver, der skal bruges i applikationens brugergrænseflade. Farver kan konfigureres separat for mørke og lyse tilstande for at passe bedst til temaet og sikre læsbarhed.',
+ 'ui_colors_desc' => 'Indstil applikationens primære farve og standardlinkfarve. Den primære farve bruges hovedsageligt til headerbanneret, knapper og interfacedekorationer. Standardlinkfarven bruges til tekstbaserede links og handlinger, både i det skrevne indhold og i programmets brugerflade.',
+ 'app_color' => 'Primær farve',
+ 'link_color' => 'Standard Link Farve',
+ 'content_colors_desc' => 'Indstil farver for alle elementer i sideorganisationshierarkiet. Det anbefales at vælge farver med samme lysstyrke som standardfarverne af hensyn til læsbarheden.',
+ 'bookshelf_color' => 'Bogreolfarve',
+ 'book_color' => 'Bogfarve',
+ 'chapter_color' => 'Kapitelfarve',
+ 'page_color' => 'Sidefarve',
+ 'page_draft_color' => 'Sidekladdefarve',
+
+ // Registration Settings
+ 'reg_settings' => 'Registrering',
+ 'reg_enable' => 'Aktivér tilmelding',
+ 'reg_enable_toggle' => 'Aktivér tilmelding',
+ 'reg_enable_desc' => 'Når registrering er aktiveret, vil alle kunne registrere sig som en applikationsbruger. Ved registrering får de en standardbrugerrolle.',
+ 'reg_default_role' => 'Standardrolle efter registrering',
+ 'reg_enable_external_warning' => 'Indstillingen ovenfor ignoreres, mens ekstern LDAP- eller SAML-godkendelse er aktiv. Brugerkonti for ikke-eksisterende medlemmer oprettes automatisk, hvis godkendelse mod det eksterne system, der er i brug, er vellykket.',
+ 'reg_email_confirmation' => 'Email bekræftelse',
+ 'reg_email_confirmation_toggle' => 'Kræv E-Mail bekræftelse',
+ 'reg_confirm_email_desc' => 'Hvis domænebegrænsning bruges, kræves e-mail-bekræftelse, og denne indstilling ignoreres.',
+ 'reg_confirm_restrict_domain' => 'Domæneregistrering',
+ 'reg_confirm_restrict_domain_desc' => 'Indtast en kommasepareret liste over e-mail-domæner, som du vil begrænse registreringen til. Brugere får en E-Mail for at bekræfte deres adresse, før de får tilladelse til at interagere med applikationen. Bemærk, at brugere vil kunne ændre deres e-mail-adresser efter vellykket registrering.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Ingen restriktion opsat',
+
+ // Sorting Settings
+ 'sorting' => 'Lister & Sortering',
+ 'sorting_book_default' => 'Standardregel for sortering af bog',
+ 'sorting_book_default_desc' => 'Vælg den standardsorteringsregel, der skal gælde for nye bøger. Dette påvirker ikke eksisterende bøger og kan tilsidesættes for hver enkelt bog.',
+ 'sorting_rules' => 'Regler for sortering',
+ 'sorting_rules_desc' => 'Det er foruddefinerede sorteringsoperationer, som kan anvendes på indhold i systemet.',
+ 'sort_rule_assigned_to_x_books' => 'Tildelt til :count Book|Tildelt til :count Books',
+ 'sort_rule_create' => 'Opret sorteringsregel',
+ 'sort_rule_edit' => 'Rediger sorteringsregel',
+ 'sort_rule_delete' => 'Slet sorteringsregel',
+ 'sort_rule_delete_desc' => 'Fjern denne sorteringsregel fra systemet. Bøger, der bruger denne sortering, vil vende tilbage til manuel sortering.',
+ 'sort_rule_delete_warn_books' => 'Denne sorteringsregel bruges i øjeblikket på :count book(s). Er du sikker på, at du vil slette den?',
+ 'sort_rule_delete_warn_default' => 'Denne sorteringsregel bruges i øjeblikket som standard for bøger. Er du sikker på, at du vil slette den?',
+ 'sort_rule_details' => 'Detaljer om sorteringsregler',
+ 'sort_rule_details_desc' => 'Angiv et navn for denne sorteringsregel, som vises i lister, når brugerne vælger en sortering.',
+ 'sort_rule_operations' => 'Sorteringsoperationer',
+ 'sort_rule_operations_desc' => 'Konfigurer de sorteringshandlinger, der skal udføres, ved at flytte dem fra listen over tilgængelige handlinger. Ved brug vil handlingerne blive anvendt i rækkefølge, fra top til bund. Alle ændringer, der foretages her, vil blive anvendt på alle tildelte bøger, når de gemmes.',
+ 'sort_rule_available_operations' => 'Tilgængelige operationer',
+ 'sort_rule_available_operations_empty' => 'Ingen operationer tilbage',
+ 'sort_rule_configured_operations' => 'Konfigurerede operationer',
+ 'sort_rule_configured_operations_empty' => 'Træk/tilføj operationer fra listen "Tilgængelige operationer"',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Navn - alfabetisk',
+ 'sort_rule_op_name_numeric' => 'Navn - numerisk',
+ 'sort_rule_op_created_date' => 'Oprettet den',
+ 'sort_rule_op_updated_date' => 'Opdateret dato',
+ 'sort_rule_op_chapters_first' => 'Kapitler først',
+ 'sort_rule_op_chapters_last' => 'De sidste kapitler',
+ 'sorting_page_limits' => 'Visningsgrænser pr. side',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Vedligeholdelse',
+ 'maint_image_cleanup' => 'Ryd op i billeder',
+ 'maint_image_cleanup_desc' => 'Scanner side & revisionsindhold for at kontrollere, hvilke billeder og tegninger, der i øjeblikket er i brug, og hvilke billeder, der er overflødige. Sørg for, at du opretter en komplet database og billedbackup, før du kører dette.',
+ 'maint_delete_images_only_in_revisions' => 'Slet også billeder, der kun findes i gamle siderevisioner',
+ 'maint_image_cleanup_run' => 'Kør Oprydning',
+ 'maint_image_cleanup_warning' => 'der blev fundet :count potentielt ubrugte billeder. Er du sikker på, at du vil slette disse billeder?',
+ 'maint_image_cleanup_success' => ':count: potentielt ubrugte billeder fundet og slettet!',
+ 'maint_image_cleanup_nothing_found' => 'Ingen ubrugte billeder fundet, intet slettet!',
+ 'maint_send_test_email' => 'Send en Testemail',
+ 'maint_send_test_email_desc' => 'Dette sender en testmail til din mailadresse specificeret på din profil.',
+ 'maint_send_test_email_run' => 'Afsend test E-Mail',
+ 'maint_send_test_email_success' => 'E-Mail sendt til :address',
+ 'maint_send_test_email_mail_subject' => 'Test E-Mail',
+ 'maint_send_test_email_mail_greeting' => 'E-Mail levering ser ud til at virke!',
+ 'maint_send_test_email_mail_text' => 'Tillykke! Da du har modtaget denne mailnotifikation, ser det ud som om, at dine mailindstillinger er opsat korrekt.',
+ 'maint_recycle_bin_desc' => 'Slettede hylder, bøger, kapitler og sider overføres til papirkurven, så de kan gendannes eller slettes permanent. Ældre elementer i papirkurven fjernes automatisk efter et stykke tid afhængigt af systemets konfiguration.',
+ 'maint_recycle_bin_open' => 'Åbn papirkurven',
+ 'maint_regen_references' => 'Regenerer Referencer',
+ 'maint_regen_references_desc' => 'Denne handling vil genopbygge referenceindekset på tværs af elementer i databasen. Dette håndteres normalt automatisk, men denne handling kan være nyttig til at indeksere gammelt indhold eller indhold, der er tilføjet via uofficielle metoder.',
+ 'maint_regen_references_success' => 'Referenceindekset er blevet genskabt!',
+ 'maint_timeout_command_note' => 'Bemærk: Denne handling kan tage tid at udføre, hvilket kan føre til timeout-problemer i nogle webmiljøer. Som et alternativ kan denne handling udføres med en terminalkommando.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Papirkurv',
+ 'recycle_bin_desc' => 'Her kan du gendanne elementer, der er blevet slettet eller vælge at permanent fjerne dem fra systemet. Denne liste er ufiltreret, i modsætning til lignende aktivitetslister i systemet, hvor tilladelsesfiltre anvendes.',
+ 'recycle_bin_deleted_item' => 'Slettet element',
+ 'recycle_bin_deleted_parent' => 'Overordnet',
+ 'recycle_bin_deleted_by' => 'Slettet af',
+ 'recycle_bin_deleted_at' => 'Sletningstidspunkt',
+ 'recycle_bin_permanently_delete' => 'Slet permanent',
+ 'recycle_bin_restore' => 'Gendan',
+ 'recycle_bin_contents_empty' => 'Papirkurven er tom',
+ 'recycle_bin_empty' => 'Tøm papirkurv',
+ 'recycle_bin_empty_confirm' => 'Dette vil permanent slette alle elementer i papirkurven, inkluderet hvert elements indhold. Er du sikker på, at du vil tømme papirkurven?',
+ 'recycle_bin_destroy_confirm' => 'Denne handling vil permanent slette dette element fra systemet sammen med alle underordnede elementer, der er anført nedenfor, og du vil ikke kunne gendanne dette indhold. Er du sikker på, at du vil slette dette element permanent?',
+ 'recycle_bin_destroy_list' => 'Elementer der skal slettes',
+ 'recycle_bin_restore_list' => 'Elementer der skal gendannes',
+ 'recycle_bin_restore_confirm' => 'Denne handling vil gendanne det slettede element, herunder alle underelementer, til deres oprindelige placering. Hvis den oprindelige placering siden er blevet slettet, og nu er i papirkurven, vil det overordnede element også skulle gendannes.',
+ 'recycle_bin_restore_deleted_parent' => 'Det overordnede element til dette element er også blevet slettet. Disse vil forblive slettet indtil det overordnede også er gendannet.',
+ 'recycle_bin_restore_parent' => 'Gendan Overordnet',
+ 'recycle_bin_destroy_notification' => 'Slettede :count elementer fra papirkurven.',
+ 'recycle_bin_restore_notification' => 'Gendannede :count elementer fra papirkurven.',
+
+ // Audit Log
+ 'audit' => 'Revisionslog',
+ 'audit_desc' => 'Denne revisionslog viser en liste over aktiviteter sporet i systemet. Denne liste er ufiltreret i modsætning til lignende aktivitetslister i systemet, hvor tilladelsesfiltre anvendes.',
+ 'audit_event_filter' => 'Event filter',
+ 'audit_event_filter_no_filter' => 'Intet filter',
+ 'audit_deleted_item' => 'Element slettet',
+ 'audit_deleted_item_name' => 'Navn: :name',
+ 'audit_table_user' => 'Bruger',
+ 'audit_table_event' => 'Hændelse',
+ 'audit_table_related' => 'Relateret element eller detalje',
+ 'audit_table_ip' => 'IP-adresse',
+ 'audit_table_date' => 'Aktivitetsdato',
+ 'audit_date_from' => 'Datointerval fra',
+ 'audit_date_to' => 'Datointerval til',
+
+ // Role Settings
+ 'roles' => 'Roller',
+ 'role_user_roles' => 'Brugerroller',
+ 'roles_index_desc' => 'Roller bruges til at gruppere brugere og give systemtilladelser til deres medlemmer. Når en bruger er medlem af flere roller, stables de tildelte rettigheder, og brugeren arver alle evner.',
+ 'roles_x_users_assigned' => ':count bruger tildelt:count brugere tildelt',
+ 'roles_x_permissions_provided' => ':count tilladelser: count tilladelser',
+ 'roles_assigned_users' => 'Tildelte brugere',
+ 'roles_permissions_provided' => 'Givne tilladelser',
+ 'role_create' => 'Opret en ny rolle',
+ 'role_delete' => 'Slet rolle',
+ 'role_delete_confirm' => 'Dette vil slette rollen med navnet \':roleName\'.',
+ 'role_delete_users_assigned' => 'Denne rolle er tildelt :userCount brugere. Hvis du vil rykke disse brugere fra denne rolle, kan du vælge en ny nedenunder.',
+ 'role_delete_no_migration' => "Ryk ikke brugere",
+ 'role_delete_sure' => 'Er du sikker på, at du vil slette denne rolle?',
+ 'role_edit' => 'Rediger rolle',
+ 'role_details' => 'Rolledetaljer',
+ 'role_name' => 'Rollenavn',
+ 'role_desc' => 'Kort beskrivelse af rolle',
+ 'role_mfa_enforced' => 'Kræver multifaktor godkendelse',
+ 'role_external_auth_id' => 'Eksterne godkendelses-IDer',
+ 'role_system' => 'Systemtilladelser',
+ 'role_manage_users' => 'Administrere brugere',
+ 'role_manage_roles' => 'Administrer roller & rollerettigheder',
+ 'role_manage_entity_permissions' => 'Administrer alle bog-, kapitel- & side-rettigheder',
+ 'role_manage_own_entity_permissions' => 'Administrer tilladelser på egne bøger, kapitler og sider',
+ 'role_manage_page_templates' => 'Administrer side-skabeloner',
+ 'role_access_api' => 'Tilgå system-API',
+ 'role_manage_settings' => 'Administrer app-indstillinger',
+ 'role_export_content' => 'Eksporter indhold',
+ 'role_import_content' => 'Importer indhold',
+ 'role_editor_change' => 'Skift side editor',
+ 'role_notifications' => 'Modtag og administrer notifikationer',
+ 'role_permission_note_users_and_roles' => 'Disse tilladelser vil teknisk set også give synlighed og søgning efter brugere og roller i systemet.',
+ 'role_asset' => 'Tilladelser for medier og "assets"',
+ 'roles_system_warning' => 'Vær opmærksom på, at adgang til alle af de ovennævnte tre tilladelser, kan give en bruger mulighed for at ændre deres egne brugerrettigheder eller brugerrettigheder for andre i systemet. Tildel kun roller med disse tilladelser til betroede brugere.',
+ 'role_asset_desc' => 'Disse tilladelser kontrollerer standardadgang til medier og "assets" i systemet. Tilladelser til bøger, kapitler og sider tilsidesætter disse tilladelser.',
+ 'role_asset_admins' => 'Administratorer får automatisk adgang til alt indhold, men disse indstillinger kan vise eller skjule UI-indstillinger.',
+ 'role_asset_image_view_note' => 'Dette vedrører synlighed i billedhåndteringen. Den faktiske adgang til uploadede billedfiler vil afhænge af systemets billedlagringsindstilling.',
+ 'role_asset_users_note' => 'Disse tilladelser vil teknisk set også give synlighed og søgning efter brugere i systemet.',
+ 'role_all' => 'Alle',
+ 'role_own' => 'Eget',
+ 'role_controlled_by_asset' => 'Styres af det medie/"asset", de uploades til',
+ 'role_save' => 'Gem rolle',
+ 'role_users' => 'Brugere med denne rolle',
+ 'role_users_none' => 'Ingen brugere er i øjeblikket tildelt denne rolle',
+
+ // Users
+ 'users' => 'Brugere',
+ 'users_index_desc' => 'Opret og administrer individuelle brugerkonti i systemet. Brugerkonti bruges til login og tilskrivning af indhold og aktivitet. Adgangstilladelser er primært rollebaserede, men ejerskab af brugerindhold, blandt andre faktorer, kan også påvirke tilladelser og adgang.',
+ 'user_profile' => 'Brugerprofil',
+ 'users_add_new' => 'Tilføj ny bruger',
+ 'users_search' => 'Søg efter brugere',
+ 'users_latest_activity' => 'Seneste aktivitet',
+ 'users_details' => 'Brugeroplysninger',
+ 'users_details_desc' => 'Angiv et visningsnavn og en E-Mail-adresse for denne bruger. E-Mail-adressen bruges til at logge ind på applikationen.',
+ 'users_details_desc_no_email' => 'Sætter et visningsnavn for denne bruger, så andre kan genkende dem.',
+ 'users_role' => 'Brugerroller',
+ 'users_role_desc' => 'Vælg hvilke roller denne bruger skal tildeles. Hvis en bruger er tildelt flere roller, sammenføres tilladelserne fra disse roller, og de får alle evnerne fra de tildelte roller.',
+ 'users_password' => 'Brugeradgangskode',
+ 'users_password_desc' => 'Sæt et kodeord, der bruges til at logge på applikationen. Dette skal være mindst 8 tegn langt.',
+ 'users_send_invite_text' => 'Du kan vælge at sende denne bruger en invitation på E-Mail, som giver dem mulighed for at indstille deres egen adgangskode, ellers kan du indstille deres adgangskode selv.',
+ 'users_send_invite_option' => 'Send bruger en invitationsmail',
+ 'users_external_auth_id' => 'Ekstern godkendelses ID',
+ 'users_external_auth_id_desc' => 'Når et eksternt godkendelsessystem er i brug (f.eks. SAML2, OIDC eller LDAP), er dette det ID, som forbinder denne BookStack-bruger med godkendelsessystemets konto. Du kan ignorere dette felt, hvis du bruger den e-mailbaserede standardgodkendelse.',
+ 'users_password_warning' => 'Udfyld kun nedenstående, hvis du ønsker at ændre adgangskoden for denne bruger.',
+ 'users_system_public' => 'Denne bruger repræsenterer alle gæstebrugere, der besøger din instans. Den kan ikke bruges til at logge på, men tildeles automatisk.',
+ 'users_delete' => 'Slet bruger',
+ 'users_delete_named' => 'Slet bruger :userName',
+ 'users_delete_warning' => 'Dette vil helt slette denne bruger med navnet \':userName\' fra systemet.',
+ 'users_delete_confirm' => 'Er du sikker på, at du vil slette denne bruger?',
+ 'users_migrate_ownership' => 'Overfør ejerskab',
+ 'users_migrate_ownership_desc' => 'Vælg en bruger her, hvis du vil have en anden bruger til at blive ejer af alle elementer, der i øjeblikket ejes af denne bruger.',
+ 'users_none_selected' => 'Ingen bruger valgt',
+ 'users_edit' => 'Rediger bruger',
+ 'users_edit_profile' => 'Rediger profil',
+ 'users_avatar' => 'Brugeravatar',
+ 'users_avatar_desc' => 'Vælg et billede for at repræsentere denne bruger. Dette skal være ca. 256px kvadratisk.',
+ 'users_preferred_language' => 'Foretrukket sprog',
+ 'users_preferred_language_desc' => 'Denne indstilling ændrer det sprog, der bruges til applikationens brugergrænseflade. Dette påvirker ikke noget brugeroprettet indhold.',
+ 'users_social_accounts' => 'Sociale konti',
+ 'users_social_accounts_desc' => 'Se status for de tilsluttede sociale konti for denne bruger. Sociale konti kan bruges som supplement til det primære godkendelsessystem til systemadgang.',
+ 'users_social_accounts_info' => 'Her kan du forbinde dine andre konti for hurtigere og lettere login. Afbrydelse af en konto her tilbagekalder ikke tidligere autoriseret adgang. Tilbagekald adgang fra dine profilindstillinger på den tilsluttede sociale konto.',
+ 'users_social_connect' => 'Forbind konto',
+ 'users_social_disconnect' => 'Frakobl konto',
+ 'users_social_status_connected' => 'Tilsluttet',
+ 'users_social_status_disconnected' => 'Afbrudt',
+ 'users_social_connected' => ':socialAccount kontoen blev knyttet til din profil.',
+ 'users_social_disconnected' => ':socialAccount kontoen blev afbrudt fra din profil.',
+ 'users_api_tokens' => 'API Tokens',
+ 'users_api_tokens_desc' => 'Opret og administrer de adgangstokens, der bruges til at godkende med BookStack REST API. Tilladelser til API\'en administreres via den bruger, som tokenet tilhører.',
+ 'users_api_tokens_none' => 'Ingen API tokens er blevet oprettet for denne bruger',
+ 'users_api_tokens_create' => 'Opret Token',
+ 'users_api_tokens_expires' => 'Udløber',
+ 'users_api_tokens_docs' => 'API-dokumentation',
+ 'users_mfa' => 'Multi-faktor godkendelse',
+ 'users_mfa_desc' => 'Opsæt multi-faktor godkendelse som et ekstra lag af sikkerhed for din brugerkonto.',
+ 'users_mfa_x_methods' => ':count metode konfigureret|:count metoder konfigureret',
+ 'users_mfa_configure' => 'Konfigurer metoder',
+
+ // API Tokens
+ 'user_api_token_create' => 'Opret API-token',
+ 'user_api_token_name' => 'Navn',
+ 'user_api_token_name_desc' => 'Giv din token et læsbart navn som en fremtidig påmindelse om dets tilsigtede formål.',
+ 'user_api_token_expiry' => 'Udløbsdato',
+ 'user_api_token_expiry_desc' => 'Indstil en dato, hvorpå denne token udløber. Efter denne dato fungerer anmodninger, der er lavet med denne token, ikke længere. Hvis du lader dette felt være tomt, udløber den 100 år ud i fremtiden.',
+ 'user_api_token_create_secret_message' => 'Umiddelbart efter oprettelse af denne token genereres og vises et "Token-ID" og Token hemmelighed". Hemmeligheden vises kun en gang, så husk at kopiere værdien til et sikkert sted inden du fortsætter.',
+ 'user_api_token' => 'API Token',
+ 'user_api_token_id' => 'Token-ID',
+ 'user_api_token_id_desc' => 'Dette er en ikke-redigerbar systemgenereret identifikator for denne token, som skal sendes i API-anmodninger.',
+ 'user_api_token_secret' => 'Token hemmelighed',
+ 'user_api_token_secret_desc' => 'Dette er et system genereret hemmelighed for denne token, som skal sendes i API-anmodninger. Dette vises kun denne ene gang, så kopier denne værdi til et sikkert sted.',
+ 'user_api_token_created' => 'Token oprettet :timeAgo',
+ 'user_api_token_updated' => 'Token opdateret :timeAgo',
+ 'user_api_token_delete' => 'Slet Token',
+ 'user_api_token_delete_warning' => 'Dette vil helt slette API-token\'en med navnet \':tokenName\' fra systemet.',
+ 'user_api_token_delete_confirm' => 'Er du sikker på, at du vil slette denne API-token?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks er en måde at sende data til eksterne URL\'er på, når bestemte handlinger og hændelser sker i systemet, hvilket giver mulighed for hændelsesbaseret integration med eksterne platforme som f.eks. besked- eller notifikationssystemer.',
+ 'webhooks_x_trigger_events' => ':count trigger begivenhed:count trigger events',
+ 'webhooks_create' => 'Opret ny Webhook',
+ 'webhooks_none_created' => 'Ingen webhooks er blevet oprettet endnu.',
+ 'webhooks_edit' => 'Rediger Webhook',
+ 'webhooks_save' => 'Gem Webhook',
+ 'webhooks_details' => 'Webhook detaljer',
+ 'webhooks_details_desc' => 'Angiv et brugervenligt navn og et POST endpoint som en lokation for webhook data at blive sendt til.',
+ 'webhooks_events' => 'Webhook Begivenheder',
+ 'webhooks_events_desc' => 'Vælg alle begivenheder der skal udløse denne webhook til at blive kaldt.',
+ 'webhooks_events_warning' => 'Husk, at disse begivenheder vil blive udløst for alle valgte begivenheder, selv om brugerdefinerede tilladelser bliver anvendt. Sørg for, at brugen af denne webhook ikke vil afsløre fortroligt indhold.',
+ 'webhooks_events_all' => 'Alle systemhændelser',
+ 'webhooks_name' => 'Webhook Navn',
+ 'webhooks_timeout' => 'Webhook forespørgsel timeout (Sekunder)',
+ 'webhooks_endpoint' => 'Webhook Endpoint',
+ 'webhooks_active' => 'Webhook Aktiv',
+ 'webhook_events_table_header' => 'Begivenheder',
+ 'webhooks_delete' => 'Slet Webhook',
+ 'webhooks_delete_warning' => 'Dette vil helt slette denne webhook med navnet \':webhookName\' fra systemet.',
+ 'webhooks_delete_confirm' => 'Er du sikker på at du vil slette denne webhook?',
+ 'webhooks_format_example' => 'Webhook format eksempel',
+ 'webhooks_format_example_desc' => 'Webhook data bliver sendt som en POST anmodning til det konfigurerede endpoint som JSON efter formatet nedenfor. Egenskaberne "related_item" og "url" er valgri og vil afhænge af den type begivenhed udløst.',
+ 'webhooks_status' => 'Webhook Status',
+ 'webhooks_last_called' => 'Sidst Kaldt:',
+ 'webhooks_last_errored' => 'Sidst Fejlet:',
+ 'webhooks_last_error_message' => 'Sidste fejlmeddelelse:',
+
+ // Licensing
+ 'licenses' => 'Licenser',
+ 'licenses_desc' => 'Denne side indeholder licensoplysninger for BookStack ud over de projekter og biblioteker, der bruges i BookStack. Mange af de nævnte projekter må kun bruges i udviklingssammenhæng.',
+ 'licenses_bookstack' => 'BookStack-licens',
+ 'licenses_php' => 'Licenser til PHP-biblioteker',
+ 'licenses_js' => 'Licenser til JavaScript-biblioteker',
+ 'licenses_other' => 'Andre licenser',
+ 'license_details' => 'Licensoplysninger',
+
+ //! 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' => 'Catalansk',
+ 'cs' => 'Česky',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'Hebraisk',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/da/validation.php b/lang/da/validation.php
new file mode 100644
index 00000000000..58e80052a63
--- /dev/null
+++ b/lang/da/validation.php
@@ -0,0 +1,123 @@
+ ':attribute skal være accepteret.',
+ 'active_url' => ':attribute er ikke en gyldig URL.',
+ 'after' => ':attribute skal være en dato efter :date.',
+ 'alpha' => ':attribute må kun indeholde bogstaver.',
+ 'alpha_dash' => ':attribute må kun bestå af bogstaver, tal, binde- og under-streger.',
+ 'alpha_num' => ':attribute må kun indeholde bogstaver og tal.',
+ 'array' => ':attribute skal være et array.',
+ 'backup_codes' => 'Den angivne kode er ikke gyldig eller er allerede brugt.',
+ 'before' => ':attribute skal være en dato før :date.',
+ 'between' => [
+ 'numeric' => ':attribute skal være mellem :min og :max.',
+ 'file' => ':attribute skal være mellem :min og :max kilobytes.',
+ 'string' => ':attribute skal være mellem :min og :max tegn.',
+ 'array' => ':attribute skal have mellem :min og :max elementer.',
+ ],
+ 'boolean' => ':attribute-feltet skal være enten sandt eller falsk.',
+ 'confirmed' => ':attribute-bekræftelsen matcher ikke.',
+ 'date' => ':attribute er ikke en gyldig dato.',
+ 'date_format' => ':attribute matcher ikke formatet :format.',
+ 'different' => ':attribute og :other skal være forskellige.',
+ 'digits' => ':attribute skal være :digits cifre.',
+ 'digits_between' => ':attribute skal være mellem :min og :max cifre.',
+ 'email' => ':attribute skal være en gyldig mail-adresse.',
+ 'ends_with' => ':attribute skal slutte på en af følgende værdier: :values',
+ 'file' => ':attribute skal leveres som en gyldig fil.',
+ 'filled' => ':attribute er obligatorisk.',
+ 'gt' => [
+ 'numeric' => ':attribute skal være større end :value.',
+ 'file' => ':attribute skal være større end :value kilobytes.',
+ 'string' => ':attribute skal have mere end :value tegn.',
+ 'array' => ':attribute skal indeholde mere end :value elementer.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute skal mindst være :value.',
+ 'file' => ':attribute skal være mindst :value kilobytes.',
+ 'string' => ':attribute skal indeholde mindst :value tegn.',
+ 'array' => ':attribute skal have :value elementer eller flere.',
+ ],
+ 'exists' => 'Den valgte :attribute er ikke gyldig.',
+ 'image' => ':attribute skal være et billede.',
+ 'image_extension' => ':attribute skal være et gyldigt og understøttet billedformat.',
+ 'in' => 'Den valgte :attribute er ikke gyldig.',
+ 'integer' => ':attribute skal være et heltal.',
+ 'ip' => ':attribute skal være en gyldig IP-adresse.',
+ 'ipv4' => ':attribute skal være en gyldig IPv4-adresse.',
+ 'ipv6' => ':attribute skal være en gyldig IPv6-adresse.',
+ 'json' => ':attribute skal være en gyldig JSON-streng.',
+ 'lt' => [
+ 'numeric' => ':attribute skal være mindre end :value.',
+ 'file' => ':attribute skal være mindre end :value kilobytes.',
+ 'string' => ':attribute skal have mindre end :value tegn.',
+ 'array' => ':attribute skal indeholde mindre end :value elementer.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute skal være mindre end eller lig med :value.',
+ 'file' => 'The :attribute skal være mindre eller lig med :value kilobytes.',
+ 'string' => ':attribute skal maks være :value tegn.',
+ 'array' => ':attribute må ikke indeholde mere end :value elementer.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute må ikke overstige :max.',
+ 'file' => ':attribute må ikke overstige :max kilobytes.',
+ 'string' => ':attribute må ikke overstige :max. tegn.',
+ 'array' => ':attribute må ikke have mere end :max elementer.',
+ ],
+ 'mimes' => ':attribute skal være en fil af typen: :values.',
+ 'min' => [
+ 'numeric' => ':attribute skal mindst være :min.',
+ 'file' => ':attribute skal være mindst :min kilobytes.',
+ 'string' => ':attribute skal mindst være :min tegn.',
+ 'array' => ':attribute skal have mindst :min elementer.',
+ ],
+ 'not_in' => 'Den valgte :attribute er ikke gyldig.',
+ 'not_regex' => ':attribute-formatet er ugyldigt.',
+ 'numeric' => ':attribute skal være et tal.',
+ 'regex' => ':attribute-formatet er ugyldigt.',
+ 'required' => ':attribute er obligatorisk.',
+ 'required_if' => ':attribute skal udfyldes når :other er :value.',
+ 'required_with' => ':attribute skal udfyldes når :values er udfyldt.',
+ 'required_with_all' => ':attribute skal udfyldes når :values er udfyldt.',
+ 'required_without' => ':attribute skal udfyldes når :values ikke er udfyldt.',
+ 'required_without_all' => ':attribute skal udfyldes når ingen af :values er udfyldt.',
+ 'same' => ':attribute og :other skal være ens.',
+ 'safe_url' => 'Det angivne link kan være usikkert.',
+ 'size' => [
+ 'numeric' => ':attribute skal være :size.',
+ 'file' => ':attribute skal være :size kilobytes.',
+ 'string' => ':attribute skal være :size tegn.',
+ 'array' => ':attribute skal indeholde :size elementer.',
+ ],
+ 'string' => ':attribute skal være tekst.',
+ 'timezone' => ':attribute skal være en gyldig zone.',
+ 'totp' => 'Den angivne kode er ikke gyldig eller er udløbet.',
+ 'unique' => ':attribute er allerede i brug.',
+ 'url' => ':attribute-formatet er ugyldigt.',
+ 'uploaded' => 'Filen kunne ikke oploades. Serveren accepterer muligvis ikke filer af denne størrelse.',
+
+ 'zip_file' => 'Attributten skal henvise til en fil i ZIP.',
+ 'zip_file_size' => 'Filen :attribute må ikke overstige: størrelse MB.',
+ 'zip_file_mime' => 'Attributten skal henvise til en fil af typen: validTypes, fundet:foundType.',
+ 'zip_model_expected' => 'Data objekt forventet men ":type" fundet.',
+ 'zip_unique' => 'Attributten skal være unik for objekttypen i ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Adgangskodebekræftelse påkrævet',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/de/activities.php b/lang/de/activities.php
new file mode 100644
index 00000000000..025cbaeffab
--- /dev/null
+++ b/lang/de/activities.php
@@ -0,0 +1,140 @@
+ 'erstellte Seite',
+ 'page_create_notification' => 'Seite erfolgreich erstellt',
+ 'page_update' => 'aktualisierte Seite',
+ 'page_update_notification' => 'Seite erfolgreich aktualisiert',
+ 'page_delete' => 'löschte Seite',
+ 'page_delete_notification' => 'Seite erfolgreich gelöscht',
+ 'page_restore' => 'wiederherstellte Seite',
+ 'page_restore_notification' => 'Seite erfolgreich wiederhergestellt',
+ 'page_move' => 'verschob Seite',
+ 'page_move_notification' => 'Seite erfolgreich verschoben',
+
+ // Chapters
+ 'chapter_create' => 'erstellte Kapitel',
+ 'chapter_create_notification' => 'Kapitel erfolgreich erstellt',
+ 'chapter_update' => 'aktualisierte Kapitel',
+ 'chapter_update_notification' => 'Kapitel erfolgreich aktualisiert',
+ 'chapter_delete' => 'löschte Kapitel',
+ 'chapter_delete_notification' => 'Kapitel erfolgreich gelöscht',
+ 'chapter_move' => 'verschob Kapitel',
+ 'chapter_move_notification' => 'Kapitel erfolgreich verschoben',
+
+ // Books
+ 'book_create' => 'erstellte Buch',
+ 'book_create_notification' => 'Buch erfolgreich erstellt',
+ 'book_create_from_chapter' => 'konvertierte Kapitel zu Buch',
+ 'book_create_from_chapter_notification' => 'Kapitel erfolgreich in ein Buch konvertiert',
+ 'book_update' => 'aktualisierte Buch',
+ 'book_update_notification' => 'Buch erfolgreich aktualisiert',
+ 'book_delete' => 'löschte Buch',
+ 'book_delete_notification' => 'Buch erfolgreich gelöscht',
+ 'book_sort' => 'sortierte Buch',
+ 'book_sort_notification' => 'Buch wurde erfolgreich umsortiert',
+
+ // Bookshelves
+ 'bookshelf_create' => 'erstellte Regal',
+ 'bookshelf_create_notification' => 'Regal erfolgreich erstellt',
+ 'bookshelf_create_from_book' => 'konvertierte Buch zu Regal',
+ 'bookshelf_create_from_book_notification' => 'Buch erfolgreich in Regal konvertiert',
+ 'bookshelf_update' => 'aktualisierte Regal',
+ 'bookshelf_update_notification' => 'Regal erfolgreich aktualisiert',
+ 'bookshelf_delete' => 'löschte Regal',
+ 'bookshelf_delete_notification' => 'Regal erfolgreich gelöscht',
+
+ // Revisions
+ 'revision_restore' => 'stellte Revision wieder her:',
+ 'revision_delete' => 'löschte Revision',
+ 'revision_delete_notification' => 'Revision erfolgreich gelöscht',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" wurde zu Ihren Favoriten hinzugefügt',
+ 'favourite_remove_notification' => '":name" wurde aus Ihren Favoriten entfernt',
+
+ // Watching
+ 'watch_update_level_notification' => 'Beobachtungseinstellungen erfolgreich aktualisiert',
+
+ // Auth
+ 'auth_login' => 'loggte sich ein',
+ 'auth_register' => 'registrierte sich als neuer User',
+ 'auth_password_reset_request' => 'forderte Rücksetzung des Benutzerpassworts an',
+ 'auth_password_reset_update' => 'setzte Benutzerpasswort zurück',
+ 'mfa_setup_method' => 'konfigurierte MFA-Methode',
+ 'mfa_setup_method_notification' => 'Multi-Faktor-Methode erfolgreich konfiguriert',
+ 'mfa_remove_method' => 'entfernte MFA-Methode',
+ 'mfa_remove_method_notification' => 'Multi-Faktor-Methode erfolgreich entfernt',
+
+ // Settings
+ 'settings_update' => 'aktualisierte Einstellungen',
+ 'settings_update_notification' => 'Einstellungen erfolgreich aktualisiert',
+ 'maintenance_action_run' => 'führte Wartungsaktion aus',
+
+ // Webhooks
+ 'webhook_create' => 'erstellte Webhook',
+ 'webhook_create_notification' => 'Webhook erfolgreich erstellt',
+ 'webhook_update' => 'aktualisierte Webhook',
+ 'webhook_update_notification' => 'Webhook erfolgreich aktualisiert',
+ 'webhook_delete' => 'löschte Webhook',
+ 'webhook_delete_notification' => 'Webhook erfolgreich gelöscht',
+
+ // Imports
+ 'import_create' => 'Import erstellt',
+ 'import_create_notification' => 'Import erfolgreich hochgeladen',
+ 'import_run' => 'Import aktualisiert',
+ 'import_run_notification' => 'Inhalt erfolgreich importiert',
+ 'import_delete' => 'Import gelöscht',
+ 'import_delete_notification' => 'Import erfolgreich gelöscht',
+
+ // Users
+ 'user_create' => 'hat Benutzer erzeugt:',
+ 'user_create_notification' => 'Benutzer erfolgreich erstellt',
+ 'user_update' => 'hat Benutzer aktualisiert:',
+ 'user_update_notification' => 'Benutzer erfolgreich aktualisiert',
+ 'user_delete' => 'hat Benutzer gelöscht: ',
+ 'user_delete_notification' => 'Benutzer erfolgreich entfernt',
+
+ // API Tokens
+ 'api_token_create' => 'API-Token erstellt',
+ 'api_token_create_notification' => 'API-Token erfolgreich erstellt',
+ 'api_token_update' => 'API-Token aktualisiert',
+ 'api_token_update_notification' => 'API-Token erfolgreich aktualisiert',
+ 'api_token_delete' => 'API-Token gelöscht',
+ 'api_token_delete_notification' => 'API-Token erfolgreich gelöscht',
+
+ // Roles
+ 'role_create' => 'hat Rolle erzeugt',
+ 'role_create_notification' => 'Rolle erfolgreich angelegt',
+ 'role_update' => 'hat Rolle aktualisiert',
+ 'role_update_notification' => 'Rolle erfolgreich aktualisiert',
+ 'role_delete' => 'hat Rolle gelöscht',
+ 'role_delete_notification' => 'Rolle erfolgreich gelöscht',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'hat den Papierkorb geleert',
+ 'recycle_bin_restore' => 'aus dem Papierkorb wiederhergestellt',
+ 'recycle_bin_destroy' => 'aus dem Papierkorb gelöscht',
+
+ // Comments
+ 'commented_on' => 'hat einen Kommentar hinzugefügt',
+ 'comment_create' => 'Kommentar hinzugefügt',
+ 'comment_update' => 'Kommentar aktualisiert',
+ 'comment_delete' => 'Kommentar gelöscht',
+
+ // Sort Rules
+ 'sort_rule_create' => 'hat eine Sortierregel erstellt',
+ 'sort_rule_create_notification' => 'Sortierregel erfolgreich angelegt',
+ 'sort_rule_update' => 'hat eine Sortierregel aktualisiert',
+ 'sort_rule_update_notification' => 'Sortierregel erfolgreich aktualisiert',
+ 'sort_rule_delete' => 'hat eine Sortierregel gelöscht',
+ 'sort_rule_delete_notification' => 'Sortierregel erfolgreich gelöscht',
+
+ // Other
+ 'permissions_update' => 'hat die Berechtigungen aktualisiert',
+];
diff --git a/lang/de/auth.php b/lang/de/auth.php
new file mode 100644
index 00000000000..92789d18216
--- /dev/null
+++ b/lang/de/auth.php
@@ -0,0 +1,117 @@
+ 'Diese Anmeldedaten stimmen nicht mit unseren Aufzeichnungen überein.',
+ 'throttle' => 'Zu viele Anmeldeversuche. Bitte versuchen Sie es in :seconds Sekunden erneut.',
+
+ // Login & Register
+ 'sign_up' => 'Registrieren',
+ 'log_in' => 'Anmelden',
+ 'log_in_with' => 'Anmelden mit :socialDriver',
+ 'sign_up_with' => 'Registrieren mit :socialDriver',
+ 'logout' => 'Abmelden',
+
+ 'name' => 'Name',
+ 'username' => 'Benutzername',
+ 'email' => 'E-Mail',
+ 'password' => 'Passwort',
+ 'password_confirm' => 'Passwort bestätigen',
+ 'password_hint' => 'Muss mindestens 8 Zeichen lang sein',
+ 'forgot_password' => 'Passwort vergessen?',
+ 'remember_me' => 'Angemeldet bleiben',
+ 'ldap_email_hint' => 'Bitte geben Sie eine E-Mail-Adresse ein, um diese mit dem Account zu nutzen.',
+ 'create_account' => 'Account erstellen',
+ 'already_have_account' => 'Sie haben bereits einen Account?',
+ 'dont_have_account' => 'Sie haben noch keinen Account?',
+ 'social_login' => 'Mit sozialem Netzwerk anmelden',
+ 'social_registration' => 'Mit sozialem Netzwerk registrieren',
+ 'social_registration_text' => 'Mit einem anderen Dienst registrieren oder anmelden.',
+
+ 'register_thanks' => 'Vielen Dank für Ihre Registrierung!',
+ 'register_confirm' => 'Bitte prüfen Sie Ihren Posteingang und bestätigen Sie die Registrierung, um :appName nutzen zu können.',
+ 'registrations_disabled' => 'Eine Registrierung ist momentan nicht möglich',
+ 'registration_email_domain_invalid' => 'Sie können sich mit dieser E-Mail-Adresse nicht für diese Anwendung registrieren',
+ 'register_success' => 'Vielen Dank für Ihre Registrierung! Die Daten sind gespeichert und Sie sind angemeldet.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Anmeldeversuche',
+ 'auto_init_starting_desc' => 'Wir verbinden uns mit Ihrem Authentifizierungssystem, um den Anmeldeprozess zu starten. Sollte es nach 5 Sekunden nicht weitergehen, klicken Sie bitte auf den unten stehenden Link.',
+ 'auto_init_start_link' => 'Mit Authentifizierung fortfahren',
+
+ // Password Reset
+ 'reset_password' => 'Passwort zurücksetzen',
+ 'reset_password_send_instructions' => 'Bitte geben Sie Ihre E-Mail-Adresse ein. Danach erhalten Sie eine E-Mail mit einem Link zum Zurücksetzen Ihres Passwortes.',
+ 'reset_password_send_button' => 'Link zum Zurücksetzen senden',
+ 'reset_password_sent' => 'Ein Link zum Zurücksetzen des Passworts wird an :email gesendet, wenn diese E-Mail-Adresse im System gefunden wird.',
+ 'reset_password_success' => 'Ihr Passwort wurde erfolgreich zurückgesetzt.',
+ 'email_reset_subject' => 'Passwort zurücksetzen für :appName',
+ 'email_reset_text' => 'Sie erhalten diese E-Mail, weil jemand versucht hat, Ihr Passwort zurückzusetzen.',
+ 'email_reset_not_requested' => 'Wenn Sie das Zurücksetzen des Passworts nicht angefordert haben, ist keine weitere Aktion erforderlich.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Bestätigen Sie Ihre E-Mail-Adresse für :appName',
+ 'email_confirm_greeting' => 'Danke, dass Sie sich für :appName registriert haben!',
+ 'email_confirm_text' => 'Bitte bestätigen Sie Ihre E-Mail-Adresse, indem Sie auf die Schaltfläche klicken:',
+ 'email_confirm_action' => 'E-Mail-Adresse bestätigen',
+ 'email_confirm_send_error' => 'Leider konnte die für die Registrierung notwendige E-Mail zur Bestätigung Ihrer E-Mail-Adresse nicht versandt werden. Bitte kontaktieren Sie den Systemadministrator.',
+ 'email_confirm_success' => 'Ihre E-Mail wurde bestätigt! Sie sollten nun in der Lage sein, sich mit dieser E-Mail-Adresse anzumelden.',
+ 'email_confirm_resent' => 'Bestätigungs-E-Mail wurde erneut versendet, bitte überprüfen Sie Ihren Posteingang.',
+ 'email_confirm_thanks' => 'Vielen Dank für das Bestätigen!',
+ 'email_confirm_thanks_desc' => 'Bitte warten Sie einen Augenblick, während Ihre Bestätigung bearbeitet wird. Wenn Sie nach 3 Sekunden nicht weitergeleitet werden, drücken Sie unten den „Weiter“-Link, um fortzufahren.',
+
+ 'email_not_confirmed' => 'E-Mail-Adresse ist nicht bestätigt',
+ 'email_not_confirmed_text' => 'Ihre E-Mail-Adresse ist bisher nicht bestätigt.',
+ 'email_not_confirmed_click_link' => 'Bitte klicken Sie auf den Link in der E-Mail, die Sie nach der Registrierung erhalten haben.',
+ 'email_not_confirmed_resend' => 'Wenn Sie die E-Mail nicht erhalten haben, können Sie die Nachricht erneut anfordern. Füllen Sie hierzu bitte das folgende Formular aus.',
+ 'email_not_confirmed_resend_button' => 'Bestätigungs-E-Mail erneut senden',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Sie wurden eingeladen, :appName beizutreten!',
+ 'user_invite_email_greeting' => 'Ein Konto wurde für Sie auf :appName erstellt.',
+ 'user_invite_email_text' => 'Klicken Sie auf die Schaltfläche unten, um ein Passwort festzulegen und Zugriff zu erhalten:',
+ 'user_invite_email_action' => 'Account-Passwort festlegen',
+ 'user_invite_page_welcome' => 'Willkommen bei :appName!',
+ 'user_invite_page_text' => 'Um die Anmeldung abzuschließen und Zugriff auf :appName zu bekommen, muss noch ein Passwort festgelegt werden. Dieses wird in Zukunft für die Anmeldung benötigt.',
+ 'user_invite_page_confirm_button' => 'Passwort bestätigen',
+ 'user_invite_success_login' => 'Passwort gesetzt, Sie sollten nun in der Lage sein, sich mit Ihrem Passwort an :appName anzumelden!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Multi-Faktor-Authentifizierung einrichten',
+ 'mfa_setup_desc' => 'Richten Sie Multi-Faktor-Authentifizierung als zusätzliche Sicherheitsstufe für Ihr Benutzerkonto ein.',
+ 'mfa_setup_configured' => 'Bereits konfiguriert',
+ 'mfa_setup_reconfigure' => 'Umkonfigurieren',
+ 'mfa_setup_remove_confirmation' => 'Sind Sie sicher, dass Sie diese Multi-Faktor-Authentifizierungsmethode entfernen möchten?',
+ 'mfa_setup_action' => 'Einrichtung',
+ 'mfa_backup_codes_usage_limit_warning' => 'Sie haben weniger als 5 Backup-Codes übrig, bitte erstellen und speichern Sie ein neues Set, bevor Ihnen die Codes ausgehen, um zu verhindern, dass Sie aus Ihrem Konto ausgesperrt werden.',
+ 'mfa_option_totp_title' => 'Handy-App',
+ 'mfa_option_totp_desc' => 'Um Mehrfach-Faktor-Authentifizierung nutzen zu können, benötigen Sie eine Handy-Anwendung, die TOTP unterstützt, wie Google Authenticator, Authy oder Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Backup-Codes',
+ 'mfa_option_backup_codes_desc' => 'Erzeugt eine Reihe von einmalig nutzbaren Backup-Codes, welche Sie bei der Anmeldung eingeben, um Ihre Identität zu bestätigen. Achten Sie darauf diese an einem sicheren Ort aufzubewahren.',
+ 'mfa_gen_confirm_and_enable' => 'Bestätigen und aktivieren',
+ 'mfa_gen_backup_codes_title' => 'Backup-Codes einrichten',
+ 'mfa_gen_backup_codes_desc' => 'Speichern Sie die folgende Liste von Codes an einem sicheren Ort. Wenn Sie auf das System zugreifen, können Sie einen der Codes als zweiten Authentifizierungsmechanismus verwenden.',
+ 'mfa_gen_backup_codes_download' => 'Codes herunterladen',
+ 'mfa_gen_backup_codes_usage_warning' => 'Jeder Code kann nur einmal verwendet werden',
+ 'mfa_gen_totp_title' => 'Handy-App einrichten',
+ 'mfa_gen_totp_desc' => 'Um Multi-Faktor-Authentifizierung nutzen zu können, benötigen Sie eine Handy-Anwendung, die TOTP unterstützt, wie Google Authenticator, Authy oder Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Scannen Sie den QR-Code unten mit Ihrer bevorzugten Authentifizierungs-App, um loszulegen.',
+ 'mfa_gen_totp_verify_setup' => 'Setup überprüfen',
+ 'mfa_gen_totp_verify_setup_desc' => 'Überprüfen Sie, dass alles funktioniert, indem Sie einen von Ihrer Authentifizierungs-App generierten Code in das Eingabefeld unten eingeben:',
+ 'mfa_gen_totp_provide_code_here' => 'Geben Sie hier Ihren App-generierten Code ein',
+ 'mfa_verify_access' => 'Zugriff überprüfen',
+ 'mfa_verify_access_desc' => 'Ihr Benutzerkonto erfordert, dass Sie Ihre Identität über eine zusätzliche Verifikationsebene bestätigen, bevor Sie Zugriff erhalten. Nutzen Sie dazu eine Ihrer konfigurierten Methoden, um fortzufahren.',
+ 'mfa_verify_no_methods' => 'Keine Methoden konfiguriert',
+ 'mfa_verify_no_methods_desc' => 'Es konnten keine Multi-Faktor-Authentifizierungsmethoden für Ihr Konto gefunden werden. Sie müssen mindestens eine Methode einrichten, bevor Sie Zugriff erhalten.',
+ 'mfa_verify_use_totp' => 'Mit einer Handy-App verifizieren',
+ 'mfa_verify_use_backup_codes' => 'Mit einem Backup-Code überprüfen',
+ 'mfa_verify_backup_code' => 'Backup-Code',
+ 'mfa_verify_backup_code_desc' => 'Geben Sie unten einen Ihrer verbleibenden Backup-Codes ein:',
+ 'mfa_verify_backup_code_enter_here' => 'Backup-Code hier eingeben',
+ 'mfa_verify_totp_desc' => 'Geben Sie den Code ein, der mit Ihrer Handy-App generiert wurde:',
+ 'mfa_setup_login_notification' => 'Multi-Faktor-Methode konfiguriert. Bitte melden Sie sich jetzt erneut mit der konfigurierten Methode an.',
+];
diff --git a/lang/de/common.php b/lang/de/common.php
new file mode 100644
index 00000000000..4f2ae54d272
--- /dev/null
+++ b/lang/de/common.php
@@ -0,0 +1,115 @@
+ 'Abbrechen',
+ 'close' => 'Schließen',
+ 'confirm' => 'Bestätigen',
+ 'back' => 'Zurück',
+ 'save' => 'Speichern',
+ 'continue' => 'Fortfahren',
+ 'select' => 'Auswählen',
+ 'toggle_all' => 'Alle umschalten',
+ 'more' => 'Mehr',
+
+ // Form Labels
+ 'name' => 'Name',
+ 'description' => 'Beschreibung',
+ 'role' => 'Rolle',
+ 'cover_image' => 'Titelbild',
+ 'cover_image_description' => 'Dieses Bild sollte ungefähr 440x250px groß sein, obwohl es flexibel skaliert und beschnitten wird, um in verschiedenen Szenarien in die Benutzeroberfläche zu passen, sodass die tatsächlichen Abmessungen für die Anzeige abweichen können.',
+
+ // Actions
+ 'actions' => 'Aktionen',
+ 'view' => 'Anzeigen',
+ 'view_all' => 'Alle anzeigen',
+ 'new' => 'Neu',
+ 'create' => 'Erstellen',
+ 'update' => 'Aktualisieren',
+ 'edit' => 'Bearbeiten',
+ 'archive' => 'Archivieren',
+ 'unarchive' => 'Nicht mehr archivieren',
+ 'sort' => 'Sortieren',
+ 'move' => 'Verschieben',
+ 'copy' => 'Kopieren',
+ 'reply' => 'Antworten',
+ 'delete' => 'Löschen',
+ 'delete_confirm' => 'Löschen bestätigen',
+ 'search' => 'Suchen',
+ 'search_clear' => 'Suche löschen',
+ 'reset' => 'Zurücksetzen',
+ 'remove' => 'Entfernen',
+ 'add' => 'Hinzufügen',
+ 'configure' => 'Konfigurieren',
+ 'manage' => 'Verwalten',
+ 'fullscreen' => 'Vollbild',
+ 'favourite' => 'Favoriten',
+ 'unfavourite' => 'Kein Favorit',
+ 'next' => 'Nächste',
+ 'previous' => 'Vorheriges',
+ 'filter_active' => 'Gesetzte Filter:',
+ 'filter_clear' => 'Filter löschen',
+ 'download' => 'Herunterladen',
+ 'open_in_tab' => 'In neuem Tab öffnen',
+ 'open' => 'Öffnen',
+
+ // Sort Options
+ 'sort_options' => 'Sortieroptionen',
+ 'sort_direction_toggle' => 'Sortierreihenfolge umkehren',
+ 'sort_ascending' => 'Aufsteigend sortieren',
+ 'sort_descending' => 'Absteigend sortieren',
+ 'sort_name' => 'Name',
+ 'sort_default' => 'Standard',
+ 'sort_created_at' => 'Erstellungsdatum',
+ 'sort_updated_at' => 'Aktualisierungsdatum',
+
+ // Misc
+ 'deleted_user' => 'Gelöschter Benutzer',
+ 'no_activity' => 'Keine Aktivitäten zum Anzeigen',
+ 'no_items' => 'Keine Einträge gefunden',
+ 'back_to_top' => 'nach oben',
+ 'skip_to_main_content' => 'Direkt zum Hauptinhalt',
+ 'toggle_details' => 'Details zeigen/verstecken',
+ 'toggle_thumbnails' => 'Thumbnails zeigen/verstecken',
+ 'details' => 'Details',
+ 'grid_view' => 'Gitteransicht',
+ 'list_view' => 'Listenansicht',
+ 'default' => 'Voreinstellung',
+ 'breadcrumb' => 'Brotkrumen',
+ 'status' => 'Status',
+ 'status_active' => 'Aktiv',
+ 'status_inactive' => 'Inaktiv',
+ 'never' => 'Niemals',
+ 'none' => 'Nichts',
+
+ // Header
+ 'homepage' => 'Startseite',
+ 'header_menu_expand' => 'Header-Menü erweitern',
+ 'profile_menu' => 'Profilmenü',
+ 'view_profile' => 'Profil ansehen',
+ 'edit_profile' => 'Profil bearbeiten',
+ 'dark_mode' => 'Dunkler Modus',
+ 'light_mode' => 'Heller Modus',
+ 'global_search' => 'Globale Suche',
+
+ // Layout tabs
+ 'tab_info' => 'Info',
+ 'tab_info_label' => 'Tab: Sekundäre Informationen anzeigen',
+ 'tab_content' => 'Inhalt',
+ 'tab_content_label' => 'Tab: Hauptinhalt anzeigen',
+
+ // Email Content
+ 'email_action_help' => 'Sollte es beim Anklicken der Schaltfläche ":actionText" Probleme geben, öffnen Sie folgende URL in Ihrem Browser:',
+ 'email_rights' => 'Alle Rechte vorbehalten',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Datenschutzbestimmungen',
+ 'terms_of_service' => 'Allgemeine Geschäftsbedingungen',
+
+ // OpenSearch
+ 'opensearch_description' => 'Search :appName',
+];
diff --git a/lang/de/components.php b/lang/de/components.php
new file mode 100644
index 00000000000..5f0da6f301b
--- /dev/null
+++ b/lang/de/components.php
@@ -0,0 +1,46 @@
+ 'Bild auswählen',
+ 'image_list' => 'Bilderliste',
+ 'image_details' => 'Bilddetails',
+ 'image_upload' => 'Bild hochladen',
+ 'image_intro' => 'Hier können Sie die zuvor hochgeladenen Bilder auswählen und verwalten.',
+ 'image_intro_upload' => 'Laden Sie ein neues Bild hoch, indem Sie eine Bilddatei in dieses Fenster ziehen oder auf die Schaltfläche "Bild hochladen" oben klicken.',
+ 'image_all' => 'Alle',
+ 'image_all_title' => 'Alle Bilder anzeigen',
+ 'image_book_title' => 'Zeige alle Bilder, die in dieses Buch hochgeladen wurden',
+ 'image_page_title' => 'Zeige alle Bilder, die auf diese Seite hochgeladen wurden',
+ 'image_search_hint' => 'Nach Bildnamen suchen',
+ 'image_uploaded' => 'Hochgeladen am :uploadedDate',
+ 'image_uploaded_by' => 'Hochgeladen von :userName',
+ 'image_uploaded_to' => 'Hochgeladen auf :pageLink',
+ 'image_updated' => 'Aktualisiert am :updateDate',
+ 'image_load_more' => 'Mehr',
+ 'image_image_name' => 'Bildname',
+ 'image_delete_used' => 'Dieses Bild wird auf den folgenden Seiten benutzt. ',
+ 'image_delete_confirm_text' => 'Möchten Sie dieses Bild wirklich löschen?',
+ 'image_select_image' => 'Bild auswählen',
+ 'image_dropzone' => 'Ziehen Sie Bilder hierher oder klicken Sie hier, um ein Bild auszuwählen',
+ 'image_dropzone_drop' => 'Ziehen Sie Dateien hierher, um sie hochzuladen',
+ 'images_deleted' => 'Bilder gelöscht',
+ 'image_preview' => 'Bildvorschau',
+ 'image_upload_success' => 'Bild erfolgreich hochgeladen',
+ 'image_update_success' => 'Bilddetails erfolgreich aktualisiert',
+ 'image_delete_success' => 'Bild erfolgreich gelöscht',
+ 'image_replace' => 'Bild ersetzen',
+ 'image_replace_success' => 'Bild erfolgreich aktualisiert',
+ 'image_rebuild_thumbs' => 'Größenvariationen neu generieren',
+ 'image_rebuild_thumbs_success' => 'Bildgrößenvariationen erfolgreich neu erstellt!',
+
+ // Code Editor
+ 'code_editor' => 'Code editieren',
+ 'code_language' => 'Code Sprache',
+ 'code_content' => 'Code Inhalt',
+ 'code_session_history' => 'Sitzungsverlauf',
+ 'code_save' => 'Code speichern',
+];
diff --git a/lang/de/editor.php b/lang/de/editor.php
new file mode 100644
index 00000000000..1be31551987
--- /dev/null
+++ b/lang/de/editor.php
@@ -0,0 +1,182 @@
+ 'Allgemein',
+ 'advanced' => 'Erweitert',
+ 'none' => 'Keine Auswahl',
+ 'cancel' => 'Abbrechen',
+ 'save' => 'Speichern',
+ 'close' => 'Schließen',
+ 'apply' => 'Übernehmen',
+ 'undo' => 'Rückgängig',
+ 'redo' => 'Wiederholen',
+ 'left' => 'Links',
+ 'center' => 'Zentriert',
+ 'right' => 'Rechts',
+ 'top' => 'Nach oben',
+ 'middle' => 'Mittig',
+ 'bottom' => 'Nach unten',
+ 'width' => 'Breite',
+ 'height' => 'Höhe',
+ 'More' => 'Mehr',
+ 'select' => 'Auswählen...',
+
+ // Toolbar
+ 'formats' => 'Formate',
+ 'header_large' => 'Große Überschrift',
+ 'header_medium' => 'Mittlere Überschrift',
+ 'header_small' => 'Kleine Überschrift',
+ 'header_tiny' => 'Sehr kleine Überschrift',
+ 'paragraph' => 'Absatz',
+ 'blockquote' => 'Blockzitat',
+ 'inline_code' => 'Inline-Code',
+ 'callouts' => 'Anmerkungen',
+ 'callout_information' => 'Info',
+ 'callout_success' => 'Erfolgreich',
+ 'callout_warning' => 'Warnung',
+ 'callout_danger' => 'Achtung',
+ 'bold' => 'Fett',
+ 'italic' => 'Kursiv',
+ 'underline' => 'Unterstrichen',
+ 'strikethrough' => 'Durchgestrichen',
+ 'superscript' => 'Hochgestellt',
+ 'subscript' => 'Tiefgestellt',
+ 'text_color' => 'Schriftfarbe',
+ 'highlight_color' => 'Markierungsfarbe',
+ 'custom_color' => 'Benutzerdefinierte Farbe',
+ 'remove_color' => 'Farbe entfernen',
+ 'background_color' => 'Hintergrundfarbe',
+ 'align_left' => 'Linksbündig',
+ 'align_center' => 'Zentriert',
+ 'align_right' => 'Rechtsbündig',
+ 'align_justify' => 'Blocksatz',
+ 'list_bullet' => 'Liste',
+ 'list_numbered' => 'Nummerierte Liste',
+ 'list_task' => 'Aufgabenliste',
+ 'indent_increase' => 'Einzug vergrößern',
+ 'indent_decrease' => 'Einzug verkleinern',
+ 'table' => 'Tabelle',
+ 'insert_image' => 'Bild einfügen',
+ 'insert_image_title' => 'Bild einfügen/ändern',
+ 'insert_link' => 'Link einfügen/ändern',
+ 'insert_link_title' => 'Link einfügen/ändern',
+ 'insert_horizontal_line' => 'Horizontale Linie einfügen',
+ 'insert_code_block' => 'Code-Block einfügen',
+ 'edit_code_block' => 'Code-Block bearbeiten',
+ 'insert_drawing' => 'Zeichnung einfügen/ändern',
+ 'drawing_manager' => 'Zeichnungsmanager',
+ 'insert_media' => 'Medien einfügen/ändern',
+ 'insert_media_title' => 'Medien einfügen/ändern',
+ 'clear_formatting' => 'Formatierung zurücksetzen',
+ 'source_code' => 'Quellcode',
+ 'source_code_title' => 'Quellcode',
+ 'fullscreen' => 'Vollbild',
+ 'image_options' => 'Bild-Optionen',
+
+ // Tables
+ 'table_properties' => 'Tabelleneigenschaften',
+ 'table_properties_title' => 'Tabelleneigenschaften',
+ 'delete_table' => 'Tabelle löschen',
+ 'table_clear_formatting' => 'Tabellenformatierung löschen',
+ 'resize_to_contents' => 'Größe an Inhalt anpassen',
+ 'row_header' => 'Zeilenkopf',
+ 'insert_row_before' => 'Zeile davor einfügen',
+ 'insert_row_after' => 'Zeile danach einfügen',
+ 'delete_row' => 'Zeile löschen',
+ 'insert_column_before' => 'Spalte davor einfügen',
+ 'insert_column_after' => 'Spalte danach einfügen',
+ 'delete_column' => 'Spalte löschen',
+ 'table_cell' => 'Zelle',
+ 'table_row' => 'Reihe',
+ 'table_column' => 'Spalte',
+ 'cell_properties' => 'Zelleneigenschaften',
+ 'cell_properties_title' => 'Zelleneigenschaften',
+ 'cell_type' => 'Zellentyp',
+ 'cell_type_cell' => 'Zelle',
+ 'cell_scope' => 'Zellbereich',
+ 'cell_type_header' => 'Tabellen-Kopfzelle',
+ 'merge_cells' => 'Zellen verbinden',
+ 'split_cell' => 'Zellen teilen',
+ 'table_row_group' => 'Zeilengruppe',
+ 'table_column_group' => 'Spaltengruppe',
+ 'horizontal_align' => 'Horizontal ausrichten',
+ 'vertical_align' => 'Vertikal ausrichten',
+ 'border_width' => 'Randbreite',
+ 'border_style' => 'Randstil',
+ 'border_color' => 'Randfarbe',
+ 'row_properties' => 'Zeileneigenschaften',
+ 'row_properties_title' => 'Zeileneigenschaften',
+ 'cut_row' => 'Zeile ausschneiden',
+ 'copy_row' => 'Zeile kopieren',
+ 'paste_row_before' => 'Vor der Zeile einfügen',
+ 'paste_row_after' => 'Nach der Zeile einfügen',
+ 'row_type' => 'Zeilentyp',
+ 'row_type_header' => 'Kopfzeile',
+ 'row_type_body' => 'Hauptteil',
+ 'row_type_footer' => 'Fußzeile',
+ 'alignment' => 'Ausrichtung',
+ 'cut_column' => 'Spalte ausschneiden',
+ 'copy_column' => 'Spalte kopieren',
+ 'paste_column_before' => 'Vor der Spalte einfügen',
+ 'paste_column_after' => 'Nach der Spalte einfügen',
+ 'cell_padding' => 'Zellenabstand',
+ 'cell_spacing' => 'Zellen-Außenabstand',
+ 'caption' => 'Beschriftung',
+ 'show_caption' => 'Beschriftungen anzeigen',
+ 'constrain' => 'Proportionen beschränken',
+ 'cell_border_solid' => 'Voll',
+ 'cell_border_dotted' => 'Gepunktet',
+ 'cell_border_dashed' => 'Gestrichelt',
+ 'cell_border_double' => 'Doppelt',
+ 'cell_border_groove' => 'Rille',
+ 'cell_border_ridge' => 'Erhaben',
+ 'cell_border_inset' => 'vertiefte Fläche',
+ 'cell_border_outset' => 'erhabene Fläche',
+ 'cell_border_none' => 'Keine',
+ 'cell_border_hidden' => 'Versteckt',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Quelle',
+ 'alt_desc' => 'Alternative Beschreibung',
+ 'embed' => 'Einbetten',
+ 'paste_embed' => 'Fügen Sie Ihren Einbettungscode unten ein:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Anzuzeigender Text',
+ 'title' => 'Titel',
+ 'browse_links' => 'Links durchsuchen',
+ 'open_link' => 'Link öffnen',
+ 'open_link_in' => 'Link öffnen in...',
+ 'open_link_current' => 'Aktuelles Fenster',
+ 'open_link_new' => 'Neues Fenster',
+ 'remove_link' => 'Link entfernen',
+ 'insert_collapsible' => 'Einklappbarer Block einfügen',
+ 'collapsible_unwrap' => 'Auspacken',
+ 'edit_label' => 'Label bearbeiten',
+ 'toggle_open_closed' => 'Öffnen/Schließen',
+ 'collapsible_edit' => 'Einklappbarer Block bearbeiten',
+ 'toggle_label' => 'Label umschalten',
+
+ // About view
+ 'about' => 'Über den Editor',
+ 'about_title' => 'Über den WYSIWYG-Editor',
+ 'editor_license' => 'Editorlizenz & Copyright',
+ 'editor_lexical_license' => 'Dieser Editor wurde mithilfe von :lexicalLink erstellt, der unter der MIT-Lizenz bereitgestellt wird.',
+ 'editor_lexical_license_link' => 'Vollständige Lizenzdetails finden Sie hier.',
+ 'editor_tiny_license' => 'Dieser Editor wurde mithilfe von :tinyLink erstellt, der unter der MIT-Lizenz bereitgestellt wird.',
+ 'editor_tiny_license_link' => 'Die Copyright- und Lizenzdetails von TinyMCE finden Sie hier.',
+ 'save_continue' => 'Speichern & Fortfahren',
+ 'callouts_cycle' => '(Drücken Sie weiter, um durch Typen umzuschalten)',
+ 'link_selector' => 'Inhalt verlinken',
+ 'shortcuts' => 'Verknüpfungen',
+ 'shortcut' => 'Verknüpfung',
+ 'shortcuts_intro' => 'Die folgenden Verknüpfungen sind im Editor verfügbar:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Beschreibung',
+];
diff --git a/lang/de/entities.php b/lang/de/entities.php
new file mode 100644
index 00000000000..94c327b7e06
--- /dev/null
+++ b/lang/de/entities.php
@@ -0,0 +1,476 @@
+ 'Kürzlich angelegt',
+ 'recently_created_pages' => 'Kürzlich angelegte Seiten',
+ 'recently_updated_pages' => 'Kürzlich aktualisierte Seiten',
+ 'recently_created_chapters' => 'Kürzlich angelegte Kapitel',
+ 'recently_created_books' => 'Kürzlich angelegte Bücher',
+ 'recently_created_shelves' => 'Kürzlich angelegte Regale',
+ 'recently_update' => 'Kürzlich aktualisiert',
+ 'recently_viewed' => 'Kürzlich angesehen',
+ 'recent_activity' => 'Kürzliche Aktivität',
+ 'create_now' => 'Jetzt anlegen',
+ 'revisions' => 'Versionen',
+ 'meta_revision' => 'Version #:revisionCount',
+ 'meta_created' => 'Erstellt: :timeLength',
+ 'meta_created_name' => 'Erstellt: :timeLength von :user',
+ 'meta_updated' => 'Zuletzt aktualisiert: :timeLength',
+ 'meta_updated_name' => 'Zuletzt aktualisiert: :timeLength von :user',
+ 'meta_owned_name' => 'Im Besitz von :user',
+ 'meta_reference_count' => 'Referenziert von :count Element|Referenziert von :count Elementen',
+ 'entity_select' => 'Eintrag auswählen',
+ 'entity_select_lack_permission' => 'Sie haben nicht die benötigte Berechtigung, um dieses Element auszuwählen',
+ 'images' => 'Bilder',
+ 'my_recent_drafts' => 'Meine kürzlichen Entwürfe',
+ 'my_recently_viewed' => 'Kürzlich von mir angesehen',
+ 'my_most_viewed_favourites' => 'Meine meistgesehenen Favoriten',
+ 'my_favourites' => 'Meine Favoriten',
+ 'no_pages_viewed' => 'Sie haben bisher keine Seiten angesehen',
+ 'no_pages_recently_created' => 'Sie haben bisher keine Seiten angelegt',
+ 'no_pages_recently_updated' => 'Sie haben bisher keine Seiten aktualisiert',
+ 'export' => 'Exportieren',
+ 'export_html' => 'HTML-Datei',
+ 'export_pdf' => 'PDF-Datei',
+ 'export_text' => 'Textdatei',
+ 'export_md' => 'Markdown-Datei',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Standard-Seitenvorlage',
+ 'default_template_explain' => 'Bestimmen Sie eine Seitenvorlage, die als Standardinhalt für alle Seiten verwendet wird, die innerhalb dieses Elements erstellt werden. Beachten Sie, dass dies nur dann verwendet wird, wenn der Ersteller der Seite Lesezugriff auf die ausgewählte Vorlagen-Seite hat.',
+ 'default_template_select' => 'Wählen Sie eine Seitenvorlage',
+ 'import' => 'Import',
+ 'import_validate' => 'Import validieren',
+ 'import_desc' => 'Importieren Sie Bücher, Kapitel & Seiten mit einem "Portable Zip-Export" von der gleichen oder einer anderen Instanz. Wählen Sie eine ZIP-Datei, um fortzufahren. Nachdem die Datei hochgeladen und bestätigt wurde, können Sie den Import in der nächsten Ansicht konfigurieren und bestätigen.',
+ 'import_zip_select' => 'ZIP-Datei zum Hochladen auswählen',
+ 'import_zip_validation_errors' => 'Fehler bei der Validierung der angegebenen ZIP-Datei:',
+ 'import_pending' => 'Ausstehende Importe',
+ 'import_pending_none' => 'Es wurden keine Importe gestartet.',
+ 'import_continue' => 'Import fortsetzen',
+ 'import_continue_desc' => 'Überprüfen Sie den Inhalt, der aus der hochgeladenen ZIP-Datei importiert werden soll. Führen Sie den Import aus, um dessen Inhalt zu diesem System hinzuzufügen. Die hochgeladene ZIP-Importdatei wird bei erfolgreichem Import automatisch entfernt.',
+ 'import_details' => 'Einzelheiten zum Import',
+ 'import_run' => 'Import starten',
+ 'import_size' => ':size Import ZIP Größe',
+ 'import_uploaded_at' => 'Hochgeladen :relativeTime',
+ 'import_uploaded_by' => 'Hochgeladen von',
+ 'import_location' => 'Import Ort',
+ 'import_location_desc' => 'Wählen Sie einen Zielort für Ihren importierten Inhalt. Sie benötigen die entsprechenden Berechtigungen, um innerhalb des gewünschten Standortes zu erstellen.',
+ 'import_delete_confirm' => 'Sind Sie sicher, dass Sie diesen Import löschen möchten?',
+ 'import_delete_desc' => 'Dies löscht die hochgeladene ZIP-Datei und kann nicht rückgängig gemacht werden.',
+ 'import_errors' => 'Importfehler',
+ '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' => 'Navigiere in Büchern',
+ 'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
+
+ // Permissions and restrictions
+ 'permissions' => 'Berechtigungen',
+ 'permissions_desc' => 'Legen Sie hier Berechtigungen fest, um die Standardberechtigungen von Benutzerrollen zu überschreiben.',
+ 'permissions_book_cascade' => 'In Büchern festgelegte Berechtigungen werden automatisch in untergeordnete Kapitel und Seiten kaskadiert, es sei denn, sie haben eigene Berechtigungen definiert.',
+ 'permissions_chapter_cascade' => 'In Kapiteln festgelegte Berechtigungen werden automatisch in untergeordnete Seiten kaskadiert, es sei denn, sie haben eigene Berechtigungen definiert.',
+ 'permissions_save' => 'Berechtigungen speichern',
+ 'permissions_owner' => 'Besitzer',
+ 'permissions_role_everyone_else' => 'Alle anderen',
+ 'permissions_role_everyone_else_desc' => 'Berechtigungen für alle Rollen setzen, die nicht explizit überschrieben wurden.',
+ 'permissions_role_override' => 'Berechtigungen für Rolle überschreiben',
+ 'permissions_inherit_defaults' => 'Standardeinstellungen vererben',
+
+ // Search
+ 'search_results' => 'Suchergebnisse',
+ 'search_total_results_found' => ':count Ergebnis gefunden|:count Ergebnisse gesamt',
+ 'search_clear' => 'Filter löschen',
+ 'search_no_pages' => 'Keine Seiten gefunden',
+ 'search_for_term' => 'Nach :term suchen',
+ 'search_more' => 'Mehr Ergebnisse',
+ 'search_advanced' => 'Erweiterte Suche',
+ 'search_terms' => 'Suchbegriffe',
+ 'search_content_type' => 'Inhaltstyp',
+ 'search_exact_matches' => 'Exakte Treffer',
+ 'search_tags' => 'Schlagwort-Suchen',
+ 'search_options' => 'Optionen',
+ 'search_viewed_by_me' => 'Schon von mir angesehen',
+ 'search_not_viewed_by_me' => 'Noch nicht von mir angesehen',
+ 'search_permissions_set' => 'Berechtigungen gesetzt',
+ 'search_created_by_me' => 'Von mir erstellt',
+ 'search_updated_by_me' => 'Von mir aktualisiert',
+ 'search_owned_by_me' => 'In meinem Besitz',
+ 'search_date_options' => 'Datums Optionen',
+ 'search_updated_before' => 'Aktualisiert vor',
+ 'search_updated_after' => 'Aktualisiert nach',
+ 'search_created_before' => 'Erstellt vor',
+ 'search_created_after' => 'Erstellt nach',
+ 'search_set_date' => 'Datum auswählen',
+ 'search_update' => 'Suche aktualisieren',
+
+ // Shelves
+ 'shelf' => 'Regal',
+ 'shelves' => 'Regale',
+ 'x_shelves' => ':count Regal|:count Regale',
+ 'shelves_empty' => 'Es wurden noch keine Regale angelegt',
+ 'shelves_create' => 'Erzeuge ein Regal',
+ 'shelves_popular' => 'Beliebte Regale',
+ 'shelves_new' => 'Kürzlich erstellte Regale',
+ 'shelves_new_action' => 'Neues Regal',
+ 'shelves_popular_empty' => 'Die beliebtesten Regale werden hier angezeigt.',
+ 'shelves_new_empty' => 'Die neusten Regale werden hier angezeigt.',
+ 'shelves_save' => 'Regal speichern',
+ 'shelves_books' => 'Bücher in diesem Regal',
+ 'shelves_add_books' => 'Buch zu diesem Regal hinzufügen',
+ 'shelves_drag_books' => 'Ziehen Sie Bücher nach unten, um sie diesem Regal hinzuzufügen',
+ 'shelves_empty_contents' => 'Diesem Regal sind keine Bücher zugewiesen',
+ 'shelves_edit_and_assign' => 'Regal bearbeiten um Bücher hinzuzufügen',
+ 'shelves_edit_named' => 'Regal :name bearbeiten',
+ 'shelves_edit' => 'Regal bearbeiten',
+ 'shelves_delete' => 'Regal löschen',
+ 'shelves_delete_named' => 'Regal :name löschen',
+ 'shelves_delete_explain' => "Dadurch wird das Regal mit dem Namen ':name' gelöscht. Die darin enthaltenen Bücher werden nicht gelöscht.",
+ 'shelves_delete_confirmation' => 'Sind Sie sicher, dass Sie dieses Regal löschen möchten?',
+ 'shelves_permissions' => 'Regalberechtigungen',
+ 'shelves_permissions_updated' => 'Regalberechtigungen aktualisiert',
+ 'shelves_permissions_active' => 'Regalberechtigungen aktiv',
+ 'shelves_permissions_cascade_warning' => 'Berechtigungen für Regale werden nicht automatisch auf die enthaltenen Bücher übertragen. Das liegt daran, dass ein Buch in mehreren Regalen vorhanden sein kann. Berechtigungen können jedoch auf untergeordnete Bücher kopiert werden, indem Sie die unten stehende Option verwenden.',
+ 'shelves_permissions_create' => 'Regalerstellungsberechtigungen werden nur zum Kopieren von Berechtigungen für untergeordnete Bücher mit der folgenden Aktion verwendet. Sie kontrollieren nicht die Fähigkeit, Bücher zu erstellen.',
+ 'shelves_copy_permissions_to_books' => 'Kopiere die Berechtigungen zum Buch',
+ 'shelves_copy_permissions' => 'Berechtigungen kopieren',
+ 'shelves_copy_permissions_explain' => 'Dadurch werden die aktuellen Berechtigungseinstellungen dieses Regals auf alle darin enthaltenen Bücher angewendet. Vergewissern Sie sich vor der Aktivierung, dass alle Änderungen an den Berechtigungen für dieses Regal gespeichert wurden.',
+ 'shelves_copy_permission_success' => 'Regalberechtigungen auf :count Bücher kopiert',
+
+ // Books
+ 'book' => 'Buch',
+ 'books' => 'Bücher',
+ 'x_books' => ':count Buch|:count Bücher',
+ 'books_empty' => 'Keine Bücher vorhanden',
+ 'books_popular' => 'Beliebte Bücher',
+ 'books_recent' => 'Kürzlich angesehene Bücher',
+ 'books_new' => 'Neue Bücher',
+ 'books_new_action' => 'Neues Buch',
+ 'books_popular_empty' => 'Die beliebtesten Bücher werden hier angezeigt.',
+ 'books_new_empty' => 'Die neusten Bücher werden hier angezeigt.',
+ 'books_create' => 'Neues Buch erstellen',
+ 'books_delete' => 'Buch löschen',
+ 'books_delete_named' => 'Buch ":bookName" löschen',
+ 'books_delete_explain' => 'Das Buch ":bookName" wird gelöscht und alle zugehörigen Kapitel und Seiten entfernt.',
+ 'books_delete_confirmation' => 'Sind Sie sicher, dass Sie dieses Buch löschen möchten?',
+ 'books_edit' => 'Buch bearbeiten',
+ 'books_edit_named' => 'Buch ":bookName" bearbeiten',
+ 'books_form_book_name' => 'Name des Buches',
+ 'books_save' => 'Buch speichern',
+ 'books_permissions' => 'Buch-Berechtigungen',
+ 'books_permissions_updated' => 'Buch-Berechtigungen aktualisiert',
+ 'books_empty_contents' => 'Es sind noch keine Seiten oder Kapitel zu diesem Buch hinzugefügt worden.',
+ 'books_empty_create_page' => 'Neue Seite anlegen',
+ 'books_empty_sort_current_book' => 'Aktuelles Buch sortieren',
+ 'books_empty_add_chapter' => 'Neues Kapitel hinzufügen',
+ 'books_permissions_active' => 'Buch-Berechtigungen aktiv',
+ 'books_search_this' => 'Dieses Buch durchsuchen',
+ 'books_navigation' => 'Buchnavigation',
+ 'books_sort' => 'Buchinhalte sortieren',
+ 'books_sort_desc' => 'Kapitel und Seiten innerhalb eines Buches verschieben, um dessen Inhalt zu reorganisieren. Andere Bücher können hinzugefügt werden, was das Verschieben von Kapiteln und Seiten zwischen Büchern erleichtert. Optional kann eine automatische Sortierregel erstellt werden, um den Inhalt dieses Buches nach Änderungen automatisch zu sortieren.',
+ 'books_sort_auto_sort' => 'Auto-Sortieroption',
+ 'books_sort_auto_sort_active' => 'Automatische Sortierung aktiv: :sortName',
+ 'books_sort_named' => 'Buch ":bookName" sortieren',
+ 'books_sort_name' => 'Sortieren nach Namen',
+ 'books_sort_created' => 'Sortieren nach Erstellungsdatum',
+ 'books_sort_updated' => 'Sortieren nach Aktualisierungsdatum',
+ 'books_sort_chapters_first' => 'Kapitel zuerst',
+ 'books_sort_chapters_last' => 'Kapitel zuletzt',
+ 'books_sort_show_other' => 'Andere Bücher anzeigen',
+ 'books_sort_save' => 'Neue Reihenfolge speichern',
+ 'books_sort_show_other_desc' => 'Füge hier weitere Bücher hinzu, um sie in die Sortierung einzubinden und ermögliche so eine einfache und übergreifende Reorganisation.',
+ 'books_sort_move_up' => 'Nach oben bewegen',
+ 'books_sort_move_down' => 'Nach unten bewegen',
+ 'books_sort_move_prev_book' => 'Zum vorherigen Buch verschieben',
+ 'books_sort_move_next_book' => 'Zum nächsten Buch verschieben',
+ 'books_sort_move_prev_chapter' => 'In das vorherige Kapitel verschieben',
+ 'books_sort_move_next_chapter' => 'In nächstes Kapitel verschieben',
+ 'books_sort_move_book_start' => 'Zum Buchbeginn verschieben',
+ 'books_sort_move_book_end' => 'Zum Ende des Buches verschieben',
+ 'books_sort_move_before_chapter' => 'Vor Kapitel verschieben',
+ 'books_sort_move_after_chapter' => 'Nach Kapitel verschieben',
+ 'books_copy' => 'Buch kopieren',
+ 'books_copy_success' => 'Das Buch wurde erfolgreich kopiert',
+
+ // Chapters
+ 'chapter' => 'Kapitel',
+ 'chapters' => 'Kapitel',
+ 'x_chapters' => ':count Kapitel',
+ 'chapters_popular' => 'Beliebte Kapitel',
+ 'chapters_new' => 'Neues Kapitel',
+ 'chapters_create' => 'Neues Kapitel anlegen',
+ 'chapters_delete' => 'Kapitel entfernen',
+ 'chapters_delete_named' => 'Kapitel ":chapterName" entfernen',
+ 'chapters_delete_explain' => 'Dies löscht das Kapitel mit dem Namen \':chapterName\'. Alle Seiten, die innerhalb dieses Kapitels existieren, werden ebenfalls gelöscht.',
+ 'chapters_delete_confirm' => 'Sind Sie sicher, dass Sie dieses Kapitel löschen möchten?',
+ 'chapters_edit' => 'Kapitel bearbeiten',
+ 'chapters_edit_named' => 'Kapitel ":chapterName" bearbeiten',
+ 'chapters_save' => 'Kapitel speichern',
+ 'chapters_move' => 'Kapitel verschieben',
+ 'chapters_move_named' => 'Kapitel ":chapterName" verschieben',
+ 'chapters_copy' => 'Kapitel kopieren',
+ 'chapters_copy_success' => 'Kapitel erfolgreich kopiert',
+ 'chapters_permissions' => 'Kapitel-Berechtigungen',
+ 'chapters_empty' => 'Aktuell sind keine Kapitel diesem Buch hinzugefügt worden.',
+ 'chapters_permissions_active' => 'Kapitel-Berechtigungen aktiv',
+ 'chapters_permissions_success' => 'Kapitel-Berechtigungenen aktualisisert',
+ 'chapters_search_this' => 'Dieses Kapitel durchsuchen',
+ 'chapter_sort_book' => 'Buch sortieren',
+
+ // Pages
+ 'page' => 'Seite',
+ 'pages' => 'Seiten',
+ 'x_pages' => ':count Seite|:count Seiten',
+ 'pages_popular' => 'Beliebte Seiten',
+ 'pages_new' => 'Neue Seite',
+ 'pages_attachments' => 'Anhänge',
+ 'pages_navigation' => 'Seitennavigation',
+ 'pages_delete' => 'Seite löschen',
+ 'pages_delete_named' => 'Seite ":pageName" löschen',
+ 'pages_delete_draft_named' => 'Seitenentwurf von ":pageName" löschen',
+ 'pages_delete_draft' => 'Seitenentwurf löschen',
+ 'pages_delete_success' => 'Seite gelöscht',
+ 'pages_delete_draft_success' => 'Seitenentwurf gelöscht',
+ 'pages_delete_warning_template' => 'Diese Seite wird aktiv als Standardvorlage für Bücher oder Kapitel verwendet. In diesen Büchern oder Kapiteln wird nach dem Löschen dieser Seite keine Standardvorlage mehr zugewiesen sein.',
+ 'pages_delete_confirm' => 'Sind Sie sicher, dass Sie diese Seite löschen möchen?',
+ 'pages_delete_draft_confirm' => 'Sind Sie sicher, dass Sie diesen Seitenentwurf löschen möchten?',
+ 'pages_editing_named' => 'Seite ":pageName" bearbeiten',
+ 'pages_edit_draft_options' => 'Entwurfsoptionen',
+ 'pages_edit_save_draft' => 'Entwurf speichern',
+ 'pages_edit_draft' => 'Seitenentwurf bearbeiten',
+ 'pages_editing_draft' => 'Seitenentwurf bearbeiten',
+ 'pages_editing_page' => 'Seite bearbeiten',
+ 'pages_edit_draft_save_at' => 'Entwurf gesichert um ',
+ 'pages_edit_delete_draft' => 'Entwurf löschen',
+ 'pages_edit_delete_draft_confirm' => 'Sind Sie sicher, dass Sie Ihren Entwurf löschen möchten? Alle Ihre Änderungen seit dem letzten vollständigen Speichern gehen verloren und der Editor wird mit dem letzten Speicherzustand aktualisiert, der kein Entwurf ist.',
+ 'pages_edit_discard_draft' => 'Entwurf verwerfen',
+ 'pages_edit_switch_to_markdown' => 'Zum Markdown-Editor wechseln',
+ 'pages_edit_switch_to_markdown_clean' => '(Gesäuberter Inhalt)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stabiler Inhalt)',
+ 'pages_edit_switch_to_wysiwyg' => 'Zum WYSIWYG-Editor wechseln',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Zum neuen WYSIWYG wechseln',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(Im Beta-Test)',
+ 'pages_edit_set_changelog' => 'Änderungsprotokoll hinzufügen',
+ 'pages_edit_enter_changelog_desc' => 'Bitte geben Sie eine kurze Zusammenfassung Ihrer Änderungen ein',
+ 'pages_edit_enter_changelog' => 'Änderungsprotokoll eingeben',
+ 'pages_editor_switch_title' => 'Editor wechseln',
+ 'pages_editor_switch_are_you_sure' => 'Sind Sie sicher, dass Sie den Editor für diese Seite ändern möchten?',
+ 'pages_editor_switch_consider_following' => 'Betrachten Sie folgendes beim Ändern von Editoren:',
+ 'pages_editor_switch_consideration_a' => 'Einmal gespeichert, wird die neue Editoroption von zukünftigen Editoren verwendet, einschließlich derjenigen, die nicht in der Lage sind, den Editortyp selbst zu ändern.',
+ 'pages_editor_switch_consideration_b' => 'Dies kann unter bestimmten Umständen zu einem Verlust von Details und Quellcode führen.',
+ 'pages_editor_switch_consideration_c' => 'Änderungen des Tags oder Änderungsprotokolls, die seit dem letzten Speichern vorgenommen wurden, werden bei dieser Änderung nicht fortgesetzt.',
+ 'pages_save' => 'Seite speichern',
+ 'pages_title' => 'Seitentitel',
+ 'pages_name' => 'Seitenname',
+ 'pages_md_editor' => 'Redakteur',
+ 'pages_md_preview' => 'Vorschau',
+ 'pages_md_insert_image' => 'Bild einfügen',
+ 'pages_md_insert_link' => 'Link zu einem Objekt einfügen',
+ 'pages_md_insert_drawing' => 'Zeichnung einfügen',
+ 'pages_md_show_preview' => 'Vorschau anzeigen',
+ 'pages_md_sync_scroll' => 'Vorschau synchronisieren',
+ '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öchten Sie diese ungespeicherte Zeichnung wiederherstellen und weiter bearbeiten?',
+ 'pages_not_in_chapter' => 'Seite ist in keinem Kapitel',
+ 'pages_move' => 'Seite verschieben',
+ 'pages_copy' => 'Seite kopieren',
+ 'pages_copy_desination' => 'Ziel',
+ 'pages_copy_success' => 'Seite erfolgreich kopiert',
+ 'pages_permissions' => 'Seiten Berechtigungen',
+ 'pages_permissions_success' => 'Seiten Berechtigungen aktualisiert',
+ 'pages_revision' => 'Version',
+ 'pages_revisions' => 'Seitenversionen',
+ 'pages_revisions_desc' => 'Alle vorherhigen Revisionen dieser Seite sind unten aufgelistet. Sie können zurückschauen, vergleichen und alte Seitenversionen wiederherstellen, wenn die Berechtigungen dies erlauben. Der vollständige Verlauf der Seite kann hier möglicherweise nicht vollständig wiedergegeben werden, da je nach Systemkonfiguration alte Revisionen automatisch hätten gelöscht werden können.',
+ 'pages_revisions_named' => 'Seitenversionen von ":pageName"',
+ 'pages_revision_named' => 'Seitenversion von ":pageName"',
+ 'pages_revision_restored_from' => 'Wiederhergestellt von #:id; :summary',
+ 'pages_revisions_created_by' => 'Erstellt von',
+ 'pages_revisions_date' => 'Versionsdatum',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revisionsnummer',
+ 'pages_revisions_numbered' => 'Revision #:id',
+ 'pages_revisions_numbered_changes' => 'Revision #:id Änderungen',
+ 'pages_revisions_editor' => 'Editor-Typ',
+ 'pages_revisions_changelog' => 'Änderungsprotokoll',
+ 'pages_revisions_changes' => 'Änderungen',
+ 'pages_revisions_current' => 'Aktuelle Version',
+ 'pages_revisions_preview' => 'Vorschau',
+ 'pages_revisions_restore' => 'Wiederherstellen',
+ 'pages_revisions_none' => 'Diese Seite hat keine älteren Versionen.',
+ 'pages_copy_link' => 'Link kopieren',
+ 'pages_edit_content_link' => 'Im Editor zum Abschnitt springen',
+ 'pages_pointer_enter_mode' => 'Abschnittsauswahlmodus aktivieren',
+ 'pages_pointer_label' => 'Abschnittsoptionen der Seite',
+ 'pages_pointer_permalink' => 'Seitenabschnitt-Permalink',
+ 'pages_pointer_include_tag' => 'Seitenabschnitts-Include-Tag',
+ 'pages_pointer_toggle_link' => 'Permalink-Modus, Drücken, um Include-Tag anzuzeigen',
+ 'pages_pointer_toggle_include' => 'Include-Tag-Modus, Drücken, um Permalink anzuzeigen',
+ 'pages_permissions_active' => 'Seiten-Berechtigungen aktiv',
+ 'pages_initial_revision' => 'Erste Veröffentlichung',
+ 'pages_references_update_revision' => 'Automatische Systemaktualisierung interner Links',
+ 'pages_initial_name' => 'Neue Seite',
+ 'pages_editing_draft_notification' => 'Sie bearbeiten momenten einen Entwurf, der zuletzt :timeDiff gespeichert wurde.',
+ 'pages_draft_edited_notification' => 'Diese Seite wurde seit diesem Zeitpunkt verändert. Wir empfehlen Ihnen, diesen Entwurf zu verwerfen.',
+ 'pages_draft_page_changed_since_creation' => 'Diese Seite wurde seit der Erstellung dieses Entwurfs aktualisiert. Es wird empfohlen, diesen Entwurf zu verwerfen oder darauf zu achten, dass keine Seitenänderungen überschrieben werden.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count Benutzer bearbeiten derzeit diese Seite.',
+ 'start_b' => ':userName bearbeitet jetzt diese Seite.',
+ 'time_a' => 'seit die Seiten zuletzt aktualisiert wurden.',
+ 'time_b' => 'in den letzten :minCount Minuten',
+ 'message' => ':start :time. Achten Sie darauf, keine Änderungen von anderen Benutzern zu überschreiben!',
+ ],
+ 'pages_draft_discarded' => 'Entwurf verworfen! Der aktuelle Seiteninhalt wurde geladen',
+ 'pages_draft_deleted' => 'Entwurf gelöscht. Der aktuelle Seiteninhalt wurde geladen',
+ 'pages_specific' => 'Spezifische Seite',
+ 'pages_is_template' => 'Seitenvorlage',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Seitenleiste umschalten',
+ 'page_tags' => 'Seiten-Schlagwörter',
+ 'chapter_tags' => 'Kapitel-Schlagwörter',
+ 'book_tags' => 'Buch-Schlagwörter',
+ 'shelf_tags' => 'Regal-Schlagwörter',
+ 'tag' => 'Schlagwort',
+ 'tags' => 'Schlagwörter',
+ 'tags_index_desc' => 'Tags können auf Inhalte im System angewendet werden, um eine flexible Form der Kategorisierung anzuwenden. Tags können sowohl einen Schlüssel als auch einen Wert haben, wobei der Wert optional ist. Einmal angewendet, können Inhalte unter Verwendung des Tag-Namens und Wertes abgefragt werden.',
+ 'tag_name' => 'Schlagwortname',
+ 'tag_value' => 'Inhalt (Optional)',
+ 'tags_explain' => "Fügen Sie Schlagwörter hinzu, um Ihren Inhalt zu kategorisieren.\nSie können einen erklärenden Inhalt hinzufügen, um eine genauere Unterteilung vorzunehmen.",
+ 'tags_add' => 'Weiteres Schlagwort hinzufügen',
+ 'tags_remove' => 'Diesen Tag entfernen',
+ 'tags_usages' => 'Gesamte Tagnutzung',
+ 'tags_assigned_pages' => 'Zugewiesen zu Seiten',
+ 'tags_assigned_chapters' => 'Zugewiesen zu Kapiteln',
+ 'tags_assigned_books' => 'Zugewiesen zu Büchern',
+ 'tags_assigned_shelves' => 'Zugewiesen zu Regalen',
+ 'tags_x_unique_values' => ':count eindeutige Werte',
+ 'tags_all_values' => 'Alle Werte',
+ 'tags_view_tags' => 'Tags anzeigen',
+ 'tags_view_existing_tags' => 'Vorhandene Tags anzeigen',
+ 'tags_list_empty_hint' => 'Tags können über die Seitenleiste des Seiteneditors oder beim Bearbeiten der Details eines Buches, Kapitels oder Regals zugewiesen werden.',
+ 'attachments' => 'Anhänge',
+ 'attachments_explain' => 'Sie können auf Ihrer Seite Dateien hochladen oder Links hinzufügen. Diese werden in der Seitenleiste angezeigt.',
+ 'attachments_explain_instant_save' => 'Änderungen werden direkt gespeichert.',
+ 'attachments_upload' => 'Datei hochladen',
+ 'attachments_link' => 'Link hinzufügen',
+ 'attachments_upload_drop' => 'Alternativ können Sie eine Datei per Drag & Drop hier als Anhang hochladen.',
+ 'attachments_set_link' => 'Link setzen',
+ 'attachments_delete' => 'Sind Sie sicher, dass Sie diesen Anhang löschen möchten?',
+ 'attachments_dropzone' => 'Ziehe Dateien hierher, um sie hochzuladen',
+ 'attachments_no_files' => 'Es wurden bisher keine Dateien hochgeladen.',
+ 'attachments_explain_link' => 'Wenn Sie keine Datei hochladen möchten, können Sie stattdessen einen Link hinzufügen. Dieser Link kann auf eine andere Seite oder eine Datei im Internet weisen.',
+ 'attachments_link_name' => 'Link-Name',
+ 'attachment_link' => 'Link zum Anhang',
+ 'attachments_link_url' => 'Link zu einer Datei',
+ 'attachments_link_url_hint' => 'URL einer Seite oder Datei',
+ 'attach' => 'Hinzufügen',
+ 'attachments_insert_link' => 'Link zum Anhang auf Seite einfügen',
+ 'attachments_edit_file' => 'Datei bearbeiten',
+ 'attachments_edit_file_name' => 'Dateiname',
+ 'attachments_edit_drop_upload' => 'Ziehen Sie Dateien hierher, um diese hochzuladen und zu überschreiben',
+ 'attachments_order_updated' => 'Reihenfolge der Anhänge aktualisiert',
+ 'attachments_updated_success' => 'Anhangdetails aktualisiert',
+ 'attachments_deleted' => 'Anhang gelöscht',
+ 'attachments_file_uploaded' => 'Datei erfolgreich hochgeladen',
+ 'attachments_file_updated' => 'Datei erfolgreich aktualisiert',
+ 'attachments_link_attached' => 'Link erfolgreich der Seite hinzugefügt',
+ 'templates' => 'Vorlagen',
+ 'templates_set_as_template' => 'Seite ist eine Vorlage',
+ 'templates_explain_set_as_template' => 'Sie können diese Seite als Vorlage festlegen, damit deren Inhalt beim Erstellen anderer Seiten verwendet werden kann. Andere Benutzer können diese Vorlage verwenden, wenn sie die Zugriffsrechte für diese Seite haben.',
+ 'templates_replace_content' => 'Seiteninhalt ersetzen',
+ 'templates_append_content' => 'An Seiteninhalt anhängen',
+ 'templates_prepend_content' => 'Seiteninhalt voranstellen',
+
+ // Profile View
+ 'profile_user_for_x' => 'Benutzer seit :time',
+ 'profile_created_content' => 'Erstellte Inhalte',
+ 'profile_not_created_pages' => ':userName hat noch keine Seiten erstellt.',
+ 'profile_not_created_chapters' => ':userName hat noch keine Kapitel erstellt.',
+ 'profile_not_created_books' => ':userName hat noch keine Bücher erstellt.',
+ 'profile_not_created_shelves' => ':userName hat noch keine Regale erstellt.',
+
+ // Comments
+ 'comment' => 'Kommentar',
+ 'comments' => 'Kommentare',
+ 'comment_add' => 'Kommentieren',
+ 'comment_none' => 'Keine Kommentare vorhanden',
+ 'comment_placeholder' => 'Geben Sie hier Ihre Kommentare ein',
+ 'comment_thread_count' => ':count Thema|:count Themen',
+ 'comment_archived_count' => ':count archiviert',
+ 'comment_archived_threads' => 'Archivierte Themen',
+ 'comment_save' => 'Kommentar speichern',
+ 'comment_new' => 'Neuer Kommentar',
+ 'comment_created' => ':createDiff kommentiert',
+ 'comment_updated' => ':updateDiff aktualisiert von :username',
+ 'comment_updated_indicator' => 'Aktualisiert',
+ 'comment_deleted_success' => 'Kommentar gelöscht',
+ 'comment_created_success' => 'Kommentar hinzugefügt',
+ 'comment_updated_success' => 'Kommentar aktualisiert',
+ 'comment_archive_success' => 'Kommentar archiviert',
+ 'comment_unarchive_success' => 'Kommentar nicht mehr archiviert',
+ 'comment_view' => 'Kommentar ansehen',
+ 'comment_jump_to_thread' => 'Zum Thema springen',
+ 'comment_delete_confirm' => 'Möchten Sie diesen Kommentar wirklich löschen?',
+ 'comment_in_reply_to' => 'Antwort auf :commentId',
+ 'comment_reference' => 'Referenz',
+ 'comment_reference_outdated' => '(Veraltet)',
+ 'comment_editor_explain' => 'Hier sind die Kommentare, die auf dieser Seite hinterlassen wurden. Kommentare können hinzugefügt und verwaltet werden, wenn die gespeicherte Seite angezeigt wird.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Sind Sie sicher, dass Sie diese Revision löschen wollen?',
+ 'revision_restore_confirm' => 'Sind Sie sicher, dass Sie diese Revision wiederherstellen wollen? Der aktuelle Seiteninhalt wird ersetzt.',
+ 'revision_cannot_delete_latest' => 'Die letzte Version kann nicht gelöscht werden.',
+
+ // Copy view
+ 'copy_consider' => 'Bitte beachten Sie das Untenstehende, wenn Sie Inhalte kopieren.',
+ 'copy_consider_permissions' => 'Benutzerdefinierte Berechtigungseinstellungen werden nicht kopiert.',
+ 'copy_consider_owner' => 'Sie werden Eigentümer aller kopierten Inhalte.',
+ 'copy_consider_images' => 'Bilder auf der Seite werden nicht dupliziert und die originalen Bilder werden die Beziehung zur ursprünglichen Seite, auf der sie hochgeladen wurden, behalten.',
+ 'copy_consider_attachments' => 'Seitenanhänge werden nicht kopiert.',
+ 'copy_consider_access' => 'Eine Veränderung der Position, Besitzers oder Berechtigungen könnte dafür sorgen, dass Unberechtigte, Zugriff bekommen.',
+
+ // Conversions
+ 'convert_to_shelf' => 'In Regal umwandeln',
+ 'convert_to_shelf_contents_desc' => 'Sie können dieses Buch in ein neues Regal mit dem gleichen Inhalt umwandeln. Kapitel in diesem Buch werden in neue Bücher umgewandelt. Wenn dieses Buch Seiten enthält, die nicht in einem Kapitel sind, wird dieses Buch entsprechend umbenannt und wird Teil des neuen Regals.',
+ 'convert_to_shelf_permissions_desc' => 'Alle Berechtigungen dieses Buches werden in das neue Regal kopiert und in alle darin enthaltenen neuen Bücher, die keine eigenen Berechtigungen haben. Beachten Sie, dass die Berechtigungen für Regale nicht automatisch auf die enthaltenen Inhalte angewendet werden, wie es bei Büchern der Fall ist.',
+ 'convert_book' => 'Buch umwandeln',
+ 'convert_book_confirm' => 'Sind Sie sicher, dass Sie dieses Buch umwandeln möchten?',
+ 'convert_undo_warning' => 'Dies kann nicht so einfach rückgängig gemacht werden.',
+ 'convert_to_book' => 'In Buch umwandeln',
+ 'convert_to_book_desc' => 'Sie können dieses Kapitel zu einem neuen Buch mit dem gleichen Inhalt umwandeln. Alle Berechtigungen für dieses Kapitel werden in das neue Buch übernommen, aber alle vom ursprünglichen Buch vererbten Berechtigungen werden nicht übernommen, daher kann es zu Änderungen im Zugriff kommen.',
+ 'convert_chapter' => 'Kapitel umwandeln',
+ 'convert_chapter_confirm' => 'Sind Sie sicher, dass Sie dieses Kapitel umwandeln möchten?',
+
+ // References
+ 'references' => 'Verweise',
+ 'references_none' => 'Es gibt keine nachverfolgten Referenzen zu diesem Element.',
+ 'references_to_desc' => 'Unten sind alle bekannten Inhalte im System aufgelistet, die auf diesen Eintrag verweisen.',
+
+ // Watch Options
+ 'watch' => 'Beobachten',
+ 'watch_title_default' => 'Standardeinstellungen',
+ 'watch_desc_default' => 'Rückgängig machen auf Standard-Benachrichtigungseinstellungen.',
+ 'watch_title_ignore' => 'Ignorieren',
+ 'watch_desc_ignore' => 'Ignorieren aller Benachrichtigungen, auch die von den Einstellungen auf Benutzerebene.',
+ 'watch_title_new' => 'Neue Seiten',
+ 'watch_desc_new' => 'Benachrichtigung, wenn eine neue Seite in diesem Element erstellt wird.',
+ 'watch_title_updates' => 'Alle Seitenupdates',
+ 'watch_desc_updates' => 'Bei allen neuen Seiten und Seitenänderungen benachrichtigen.',
+ 'watch_desc_updates_page' => 'Bei allen Seitenänderungen benachrichtigen.',
+ 'watch_title_comments' => 'Alle Seitenupdates & Kommentare',
+ 'watch_desc_comments' => 'Benachrichtigung bei allen neuen Seiten, Seitenänderungen und neuen Kommentaren.',
+ 'watch_desc_comments_page' => 'Benachrichtigung bei Seitenänderungen und neuen Kommentaren.',
+ 'watch_change_default' => 'Standard-Benachrichtigungseinstellungen ändern',
+ 'watch_detail_ignore' => 'Benachrichtigungen ignorieren',
+ 'watch_detail_new' => 'Beobachten von neuen Seiten',
+ 'watch_detail_updates' => 'Beobachtung neuer Seiten und Aktualisierungen',
+ 'watch_detail_comments' => 'Beobachtung neuer Seiten, Aktualisierungen und Kommentare',
+ 'watch_detail_parent_book' => 'Beobachten über übergeordnetes Buch',
+ 'watch_detail_parent_book_ignore' => 'Ignorieren über übergeordnetes Buch',
+ 'watch_detail_parent_chapter' => 'Beobachten über übergeordnetes Kapitel',
+ 'watch_detail_parent_chapter_ignore' => 'Ignorieren über übergeordnetes Kapitel',
+];
diff --git a/lang/de/errors.php b/lang/de/errors.php
new file mode 100644
index 00000000000..75c1cf3944e
--- /dev/null
+++ b/lang/de/errors.php
@@ -0,0 +1,135 @@
+ 'Sie haben keine Zugriffsberechtigung auf die angeforderte Seite.',
+ 'permissionJson' => 'Sie haben keine Berechtigung die angeforderte Aktion auszuführen.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Ein Benutzer mit der E-Mail-Adresse :email ist bereits mit anderen Anmeldedaten registriert.',
+ 'auth_pre_register_theme_prevention' => 'Benutzerkonto konnte für die angegebenen Details nicht registriert werden',
+ 'email_already_confirmed' => 'Die E-Mail-Adresse ist bereits bestätigt. Bitte melden Sie sich an.',
+ 'email_confirmation_invalid' => 'Der Bestätigungslink ist nicht gültig oder wurde bereits verwendet. Bitte registrieren Sie sich erneut.',
+ 'email_confirmation_expired' => 'Der Bestätigungslink ist abgelaufen. Es wurde eine neue Bestätigungs-E-Mail gesendet.',
+ 'email_confirmation_awaiting' => 'Die E-Mail-Adresse für das verwendete Konto muss bestätigt werden',
+ 'ldap_fail_anonymous' => 'Anonymer LDAP-Zugriff ist fehlgeschlagen',
+ 'ldap_fail_authed' => 'LDAP-Zugriff mit DN und Passwort ist fehlgeschlagen',
+ 'ldap_extension_not_installed' => 'LDAP-PHP-Erweiterung ist nicht installiert.',
+ 'ldap_cannot_connect' => 'Die Verbindung zum LDAP-Server ist fehlgeschlagen. Beim initialen Verbindungsaufbau trat ein Fehler auf.',
+ 'saml_already_logged_in' => 'Sie sind bereits angemeldet',
+ 'saml_no_email_address' => 'Es konnte keine E-Mail-Adresse für diesen Benutzer in den vom externen Authentifizierungssystem zur Verfügung gestellten Daten gefunden werden',
+ 'saml_invalid_response_id' => 'Die Anfrage vom externen Authentifizierungssystem wird von einem von dieser Anwendung gestarteten Prozess nicht erkannt. Das Zurückgehen nach einer Anmeldung könnte dieses Problem verursachen.',
+ 'saml_fail_authed' => 'Anmeldung mit :system fehlgeschlagen, System konnte keine erfolgreiche Autorisierung bereitstellen',
+ 'oidc_already_logged_in' => 'Bereits angemeldet',
+ 'oidc_no_email_address' => 'Es konnte keine E-Mail-Adresse für diesen Benutzer in den vom externen Authentifizierungssystem zur Verfügung gestellten Daten gefunden werden',
+ 'oidc_fail_authed' => 'Anmeldung mit :system fehlgeschlagen, System konnte keine erfolgreiche Autorisierung bereitstellen',
+ 'social_no_action_defined' => 'Es ist keine Aktion definiert',
+ 'social_login_bad_response' => "Fehler bei der :socialAccount-Anmeldung: \n:error",
+ 'social_account_in_use' => 'Dieses :socialAccount-Konto wird bereits verwendet. Bitte melden Sie sich mit dem :socialAccount-Konto an.',
+ 'social_account_email_in_use' => 'Die E-Mail-Adresse ":email" ist bereits registriert. Wenn Sie bereits registriert sind, können Sie Ihr :socialAccount-Konto in Ihren Profil-Einstellungen verknüpfen.',
+ 'social_account_existing' => 'Dieses :socialAccount-Konto ist bereits mit Ihrem Profil verknüpft.',
+ 'social_account_already_used_existing' => 'Dieses :socialAccount-Konto wird bereits von einem anderen Benutzer verwendet.',
+ 'social_account_not_used' => 'Dieses :socialAccount-Konto ist bisher keinem Benutzer zugeordnet. Sie können es in Ihren Profil-Einstellungen zuordnen. ',
+ 'social_account_register_instructions' => 'Wenn Sie bisher keinen Social-Media Konto besitzen, können Sie ein solches Konto mit der :socialAccount Option anlegen.',
+ 'social_driver_not_found' => 'Treiber für Social-Media-Konten nicht gefunden',
+ 'social_driver_not_configured' => 'Ihr :socialAccount-Konto ist nicht korrekt konfiguriert.',
+ 'invite_token_expired' => 'Dieser Einladungslink ist abgelaufen. Sie können stattdessen versuchen Ihr Passwort zurückzusetzen.',
+ 'login_user_not_found' => 'Ein Benutzer für diese Aktion konnte nicht gefunden werden.',
+
+ // System
+ 'path_not_writable' => 'Die Datei kann nicht in den angegebenen Pfad :filePath hochgeladen werden. Stellen Sie sicher, dass dieser Ordner auf dem Server beschreibbar ist.',
+ 'cannot_get_image_from_url' => 'Bild konnte nicht von der URL :url geladen werden.',
+ 'cannot_create_thumbs' => 'Der Server kann keine Vorschau-Bilder erzeugen. Bitte prüfen Sie, ob die GD PHP-Erweiterung installiert ist.',
+ 'server_upload_limit' => 'Der Server verbietet das Hochladen von Dateien mit dieser Dateigröße. Bitte versuchen Sie es mit einer kleineren Datei.',
+ 'server_post_limit' => 'Der Server kann die angegebene Datenmenge nicht empfangen. Versuchen Sie es erneut mit weniger Daten oder einer kleineren Datei.',
+ 'uploaded' => 'Der Server verbietet das Hochladen von Dateien mit dieser Dateigröße. Bitte versuchen Sie es mit einer kleineren Datei.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Beim Hochladen des Bildes trat ein Fehler auf.',
+ 'image_upload_type_error' => 'Der Bildtyp der hochgeladenen Datei ist ungültig.',
+ 'image_upload_replace_type' => 'Bild-Ersetzungen müssen vom gleichen Typ sein',
+ 'image_upload_memory_limit' => 'Bildupload und/oder Thumbnailerstellung konnten aufgrund von Systemressourcenbeschränkungen nicht verarbeitet werden.',
+ 'image_thumbnail_memory_limit' => 'Fehler beim Erstellen der Thumbnails aufgrund von Systemressourcenbeschränkungen.',
+ 'image_gallery_thumbnail_memory_limit' => 'Fehler beim Erstellen der Galerie Thumbnails aufgrund von Systemressourcenbeschränkungen.',
+ 'drawing_data_not_found' => 'Zeichnungsdaten konnten nicht geladen werden. Die Zeichnungsdatei existiert möglicherweise nicht mehr oder Sie haben nicht die Berechtigung, darauf zuzugreifen.',
+
+ // Attachments
+ 'attachment_not_found' => 'Anhang konnte nicht gefunden werden.',
+ 'attachment_upload_error' => 'Beim Hochladen des Anhangs trat ein Fehler auf',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Fehler beim Speichern des Entwurfs. Stellen Sie sicher, dass Sie mit dem Internet verbunden sind, bevor Sie den Entwurf dieser Seite speichern.',
+ 'page_draft_delete_fail' => 'Fehler beim Löschen des Seitenentwurfs und beim Abrufen des gespeicherten Inhalts der aktuellen Seite',
+ 'page_custom_home_deletion' => 'Eine als Startseite gesetzte Seite kann nicht gelöscht werden',
+
+ // Entities
+ 'entity_not_found' => 'Eintrag nicht gefunden',
+ 'bookshelf_not_found' => 'Regal nicht gefunden',
+ 'book_not_found' => 'Buch nicht gefunden',
+ 'page_not_found' => 'Seite nicht gefunden',
+ 'chapter_not_found' => 'Kapitel nicht gefunden',
+ 'selected_book_not_found' => 'Das gewählte Buch wurde nicht gefunden',
+ 'selected_book_chapter_not_found' => 'Das gewählte Buch oder Kapitel wurde nicht gefunden.',
+ 'guests_cannot_save_drafts' => 'Gäste können keine Entwürfe speichern',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Sie können den einzigen Administrator nicht löschen',
+ 'users_cannot_delete_guest' => 'Sie können den Gast-Benutzer nicht löschen',
+ 'users_could_not_send_invite' => 'Benutzer konnte nicht erstellt werden, da die Einladungs-E-Mail nicht gesendet wurde',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Diese Rolle kann nicht bearbeitet werden',
+ 'role_system_cannot_be_deleted' => 'Dies ist eine Systemrolle und kann nicht gelöscht werden',
+ 'role_registration_default_cannot_delete' => 'Diese Rolle kann nicht gelöscht werden, solange sie als Standardrolle für neue Registrierungen gesetzt ist',
+ 'role_cannot_remove_only_admin' => 'Dieser Benutzer ist der einzige Benutzer, welchem die Administratorrolle zugeordnet ist. Ordnen Sie die Administratorrolle einem anderen Benutzer zu bevor Sie versuchen sie hier zu entfernen.',
+
+ // Comments
+ 'comment_list' => 'Beim Abrufen der Kommentare ist ein Fehler aufgetreten.',
+ 'cannot_add_comment_to_draft' => 'Sie können keine Kommentare zu einem Entwurf hinzufügen.',
+ 'comment_add' => 'Beim Hinzufügen des Kommentars ist ein Fehler aufgetreten.',
+ 'comment_delete' => 'Beim Löschen des Kommentars ist ein Fehler aufgetreten.',
+ 'empty_comment' => 'Kann keinen leeren Kommentar hinzufügen.',
+
+ // Error pages
+ '404_page_not_found' => 'Seite nicht gefunden',
+ 'sorry_page_not_found' => 'Entschuldigung. Die angeforderte Seite wurde nicht gefunden.',
+ 'sorry_page_not_found_permission_warning' => 'Wenn Sie erwartet haben, dass diese Seite existiert, haben Sie möglicherweise nicht die Berechtigung, sie anzuzeigen.',
+ 'image_not_found' => 'Bild nicht gefunden',
+ 'image_not_found_subtitle' => 'Entschuldigung. Das angeforderte Bild 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',
+ 'back_soon' => 'Wir werden so schnell wie möglich wieder online sein.',
+
+ // Import
+ 'import_zip_cant_read' => 'ZIP-Datei konnte nicht gelesen werden.',
+ 'import_zip_cant_decode_data' => 'ZIP data.json konnte nicht gefunden und dekodiert werden.',
+ 'import_zip_no_data' => 'ZIP-Datei Daten haben kein erwartetes Buch, Kapitel oder Seiteninhalt.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'ZIP Import konnte mit Fehlern nicht validiert werden:',
+ 'import_zip_failed_notification' => 'Importieren der ZIP-Datei fehlgeschlagen.',
+ 'import_perms_books' => 'Ihnen fehlt die erforderliche Berechtigung, um Bücher zu erstellen.',
+ 'import_perms_chapters' => 'Ihnen fehlt die erforderliche Berechtigung, um Bücher zu erstellen.',
+ 'import_perms_pages' => 'Ihnen fehlt die erforderliche Berechtigung, um Seiten zu erstellen.',
+ 'import_perms_images' => 'Ihnen fehlt die erforderliche Berechtigung, um Bilder zu erstellen.',
+ 'import_perms_attachments' => 'Ihnen fehlt die erforderliche Berechtigung, um Anhänge zu erstellen.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Kein Autorisierungstoken für die Anfrage gefunden',
+ 'api_bad_authorization_format' => 'Ein Autorisierungstoken wurde auf die Anfrage gefunden, aber das Format schien falsch zu sein',
+ 'api_user_token_not_found' => 'Es wurde kein passender API-Token für den angegebenen Autorisierungstoken gefunden',
+ 'api_incorrect_token_secret' => 'Das Kennwort für das angegebene API-Token ist falsch',
+ 'api_user_no_api_permission' => 'Der Besitzer des verwendeten API-Tokens hat keine Berechtigung für API-Aufrufe',
+ 'api_user_token_expired' => 'Das verwendete Autorisierungstoken ist abgelaufen',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Fehler beim Versenden einer Test E-Mail:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'Die URL stimmt nicht mit den konfigurierten erlaubten SSR-Hosts überein',
+];
diff --git a/lang/de/notifications.php b/lang/de/notifications.php
new file mode 100644
index 00000000000..71b71d1b662
--- /dev/null
+++ b/lang/de/notifications.php
@@ -0,0 +1,29 @@
+ 'Neuer Kommentar auf Seite: :pageName',
+ 'new_comment_intro' => 'Ein Benutzer hat eine Seite in :appName kommentiert:',
+ 'new_page_subject' => 'Neue Seite: :pageName',
+ 'new_page_intro' => 'Es wurde eine neue Seite in :appName erstellt:',
+ 'updated_page_subject' => 'Aktualisierte Seite: :pageName',
+ 'updated_page_intro' => 'Eine Seite wurde in :appName aktualisiert:',
+ 'updated_page_debounce' => 'Um eine Flut von Benachrichtigungen zu vermeiden, werden Sie für eine gewisse Zeit keine Benachrichtigungen für weitere Bearbeitungen dieser Seite durch denselben Bearbeiter erhalten.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Name der Seite:',
+ 'detail_page_path' => 'Seitenpfad:',
+ 'detail_commenter' => 'Kommentator:',
+ 'detail_comment' => 'Kommentar:',
+ 'detail_created_by' => 'Erstellt von:',
+ 'detail_updated_by' => 'Aktualisiert von:',
+
+ 'action_view_comment' => 'Kommentar anzeigen',
+ 'action_view_page' => 'Seite anzeigen',
+
+ 'footer_reason' => 'Diese Benachrichtigung wurde an Sie gesendet, weil :link diese Art von Aktivität für dieses Element abdeckt.',
+ 'footer_reason_link' => 'ihre Benachrichtigungseinstellungen',
+];
diff --git a/resources/lang/de/pagination.php b/lang/de/pagination.php
similarity index 100%
rename from resources/lang/de/pagination.php
rename to lang/de/pagination.php
diff --git a/lang/de/passwords.php b/lang/de/passwords.php
new file mode 100644
index 00000000000..c93ccb4dd84
--- /dev/null
+++ b/lang/de/passwords.php
@@ -0,0 +1,15 @@
+ 'Passwörter müssen aus mindestens acht Zeichen bestehen und mit der eingegebenen Wiederholung übereinstimmen.',
+ 'user' => "Es wurde kein Benutzer mit dieser E-Mail-Adresse gefunden.",
+ 'token' => 'Der Token zum Zurücksetzen des Passworts ist für diese E-Mail-Adresse ungültig.',
+ 'sent' => 'Der Link zum Zurücksetzen Ihres Passwortes wurde Ihnen per E-Mail zugesendet.',
+ 'reset' => 'Ihr Passwort wurde zurückgesetzt!',
+
+];
diff --git a/lang/de/preferences.php b/lang/de/preferences.php
new file mode 100644
index 00000000000..1f74f3d3eb0
--- /dev/null
+++ b/lang/de/preferences.php
@@ -0,0 +1,52 @@
+ 'Mein Account',
+
+ 'shortcuts' => 'Tastenkürzel',
+ 'shortcuts_interface' => 'Einstellungen zu UI Abkürzungen',
+ 'shortcuts_toggle_desc' => 'Hier können Sie Tastaturkürzel für die Systemoberfläche für Navigation und Aktionen aktivieren oder deaktivieren.',
+ 'shortcuts_customize_desc' => 'Unten können Sie alle Tastenkürzel anpassen. Drücken Sie einfach die gewünschte Tastenkombination, nachdem Sie die Eingabe für eine Tastenkombination ausgewählt haben.',
+ 'shortcuts_toggle_label' => 'Tastaturkürzel aktiviert',
+ 'shortcuts_section_navigation' => 'Navigation',
+ 'shortcuts_section_actions' => 'Häufige Aktionen',
+ 'shortcuts_save' => 'Tastenkürzel speichern',
+ 'shortcuts_overlay_desc' => 'Hinweis: Wenn Tastenkürzel aktiviert sind, ist ein Hilfsoverlay durch Drücken von "?" verfügbar, welches die verfügbaren Tastenkürzel für Aktionen hervorhebt, die aktuell auf dem Bildschirm sichtbar sind.',
+ 'shortcuts_update_success' => 'Tastenkürzel Einstellungen wurden aktualisiert!',
+ 'shortcuts_overview_desc' => 'Verwalten von Tastenkombinationen, die zur Navigation der Benutzeroberfläche verwendet werden können.',
+
+ 'notifications' => 'Benachrichtigungseinstellungen',
+ 'notifications_desc' => 'Legen Sie fest, welche E-Mail-Benachrichtigungen Sie erhalten, wenn bestimmte Aktivitäten im System durchgeführt werden.',
+ 'notifications_opt_own_page_changes' => 'Benachrichtigung bei Änderungen an eigenen Seiten',
+ 'notifications_opt_own_page_comments' => 'Benachrichtigung bei Kommentaren an eigenen Seiten',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Bei Antworten auf meine Kommentare benachrichtigen',
+ 'notifications_save' => 'Einstellungen speichern',
+ 'notifications_update_success' => 'Benachrichtigungseinstellungen wurden aktualisiert!',
+ 'notifications_watched' => 'Beobachtete und ignorierte Elemente',
+ 'notifications_watched_desc' => 'Nachfolgend finden Sie die Elemente, für die benutzerdefinierten Überwachungspräferenzen gelten. Um Ihre Einstellungen für diese Elemente zu aktualisieren, sehen Sie sich das Element an und suchen dann die Überwachungsoptionen in der Seitenleiste.',
+
+ 'auth' => 'Zugang & Sicherheit',
+ 'auth_change_password' => 'Passwort ändern',
+ 'auth_change_password_desc' => 'Legen Sie ein Passwort für die Anmeldung in der Anwendung fest. Dieses muss mindestens 8 Zeichen lang sein.',
+ 'auth_change_password_success' => 'Das Passwort wurde aktualisiert!',
+
+ 'profile' => 'Profildetails',
+ 'profile_desc' => 'Verwalten Sie die Details Ihres Kontos, welches Sie gegenüber anderen Benutzern repräsentiert, zusätzlich zu den Details, die für die Kommunikation und Personalisierung des Systems genutzt werden.',
+ 'profile_view_public' => 'Öffentliches Profil anzeigen',
+ 'profile_name_desc' => 'Konfigurieren Sie Ihren Anzeigenamen, der durch die Aktivität, die Sie ausführen, und die Ihnen gehörenden Inhalte für andere Benutzer sichtbar ist.',
+ 'profile_email_desc' => 'Diese E-Mail wird für Benachrichtigungen und, je nach aktiver Systemauthentifizierung, den Systemzugriff verwendet.',
+ 'profile_email_no_permission' => 'Leider haben Sie nicht die Berechtigung, Ihre E-Mail-Adresse zu ändern. Wenn Sie diese ändern möchten, wenden Sie sich bitte an Ihren Administrator.',
+ 'profile_avatar_desc' => 'Wählen Sie ein Bild aus, das anderen im System angezeigt wird, um Sie zu repräsentieren. Idealerweise sollte dieses Bild quadratisch und etwa 256px breit und hoch sein.',
+ 'profile_admin_options' => 'Administratoroptionen',
+ 'profile_admin_options_desc' => 'Weitere Administrator-Optionen wie zum Beispiel die Verwaltung von Rollenzuweisungen für Ihr Benutzerkonto finden Sie im Bereich "Einstellungen > Benutzer" der Anwendung.',
+
+ 'delete_account' => 'Konto löschen',
+ 'delete_my_account' => 'Meine Konto löschen',
+ 'delete_my_account_desc' => 'Dadurch wird Ihr Benutzerkonto vollständig vom System gelöscht. Sie können dieses Konto nicht wiederherstellen oder diese Aktion rückgängig machen. Inhalte, die Sie erstellt haben, wie erstellte Seiten und hochgeladene Bilder, bleiben erhalten.',
+ 'delete_my_account_warning' => 'Sind Sie sicher, dass Sie Ihr Benutzerkonto löschen möchten?',
+];
diff --git a/lang/de/settings.php b/lang/de/settings.php
new file mode 100644
index 00000000000..e57ac52c457
--- /dev/null
+++ b/lang/de/settings.php
@@ -0,0 +1,375 @@
+ 'Einstellungen',
+ 'settings_save' => 'Einstellungen speichern',
+ 'system_version' => 'Systemversion',
+ 'categories' => 'Kategorien',
+
+ // App Settings
+ 'app_customization' => 'Personalisierung',
+ 'app_features_security' => 'Funktionen & Sicherheit',
+ 'app_name' => 'Anwendungsname',
+ 'app_name_desc' => 'Dieser Name wird im Header und in E-Mails angezeigt.',
+ 'app_name_header' => 'Anwendungsname im Header anzeigen?',
+ 'app_public_access' => 'Öffentlicher Zugriff',
+ 'app_public_access_desc' => 'Wenn Sie diese Option aktivieren, können Besucher, die nicht angemeldet sind, auf Inhalte in Ihrer BookStack-Instanz zugreifen.',
+ 'app_public_access_desc_guest' => 'Der Zugang für öffentliche Besucher kann über den Benutzer "Guest" gesteuert werden.',
+ 'app_public_access_toggle' => 'Öffentlichen Zugriff erlauben',
+ 'app_public_viewing' => 'Öffentliche Ansicht erlauben?',
+ 'app_secure_images' => 'Erhöhte Sicherheit für hochgeladene Bilder aktivieren?',
+ 'app_secure_images_toggle' => 'Höhere Sicherheit für Bild-Uploads aktivieren',
+ 'app_secure_images_desc' => 'Aus Leistungsgründen sind alle Bilder öffentlich sichtbar. Diese Option fügt zufällige, schwer zu erratende, Zeichenketten zu Bild-URLs hinzu. Stellen Sie sicher, dass Verzeichnisindizes deaktiviert sind, um einen einfachen Zugriff zu verhindern.',
+ 'app_default_editor' => 'Standard-Seiten-Editor',
+ 'app_default_editor_desc' => 'Wählen Sie aus, welcher Editor standardmäßig beim Bearbeiten neuer Seiten verwendet wird. Dies kann auf einer Seitenebene überschrieben werden, wenn es die Berechtigungen erlauben.',
+ 'app_custom_html' => 'Benutzerdefinierter HTML-Head-Inhalt',
+ 'app_custom_html_desc' => 'Jeder Inhalt, der hier hinzugefügt wird, wird am Ende der -Sektion jeder Seite eingefügt. Diese kann praktisch sein, um CSS-Styles anzupassen oder Analytics-Code hinzuzufügen.',
+ 'app_custom_html_disabled_notice' => 'Benutzerdefinierte HTML-Kopfzeileninhalte sind auf dieser Einstellungsseite deaktiviert, um sicherzustellen, dass alle Änderungen rückgängig gemacht werden können.',
+ 'app_logo' => 'Anwendungslogo',
+ 'app_logo_desc' => 'Dies wird unter anderem in der Kopfzeile der Anwendung verwendet. Dieses Bild sollte 86px hoch sein. Große Bilder werden herunterskaliert.',
+ 'app_icon' => 'Anwendungssymbol',
+ 'app_icon_desc' => 'Dieses Symbol wird für Browser-Registerkarten und Verknüpfungssymbole verwendet. Dies sollte ein 256px quadratisches PNG-Bild sein.',
+ 'app_homepage' => 'Startseite der Anwendung',
+ 'app_homepage_desc' => 'Wählen Sie eine Seite als Startseite aus, die statt der Standardansicht angezeigt werden soll. Seitenberechtigungen werden für die ausgewählten Seiten ignoriert.',
+ 'app_homepage_select' => 'Wählen Sie eine Seite aus',
+ 'app_footer_links' => 'Fußzeilen-Links',
+ 'app_footer_links_desc' => 'Fügen Sie Links hinzu, die innerhalb der Seitenfußzeile angezeigt werden. Diese werden am unteren Ende der meisten Seiten angezeigt, einschließlich derjenigen, die keine Anmeldung benötigen. Sie können die Bezeichnung "trans::" verwenden, um systemdefinierte Übersetzungen zu verwenden. Beispiel: Mit "trans::common.privacy_policy" wird der übersetzte Text "Privacy Policy" bereitgestellt und "trans::common.terms_of_service" liefert den übersetzten Text "Terms of Service".',
+ 'app_footer_links_label' => 'Link-Label',
+ 'app_footer_links_url' => 'Link-URL',
+ 'app_footer_links_add' => 'Fußzeilen-Link hinzufügen',
+ 'app_disable_comments' => 'Kommentare deaktivieren',
+ 'app_disable_comments_toggle' => 'Kommentare deaktivieren',
+ 'app_disable_comments_desc' => 'Deaktiviert Kommentare über alle Seiten in der Anwendung. Vorhandene Kommentare werden nicht angezeigt.',
+
+ // Color settings
+ 'color_scheme' => 'Farbschema der Anwendung',
+ 'color_scheme_desc' => 'Lege die Farben, die in der Benutzeroberfläche verwendet werden, fest. Farben können separat für dunkle und helle Modi konfiguriert werden, um am besten zum Farbschema zu passen und die Lesbarkeit zu gewährleisten.',
+ 'ui_colors_desc' => 'Lege die primäre Farbe und die Standard-Linkfarbe der Anwendung fest. Die primäre Farbe wird hauptsächlich für Kopfzeilen, Buttons und Interface-Dekorationen verwendet. Die Standard-Linkfarbe wird für textbasierte Links und Aktionen sowohl innerhalb des geschriebenen Inhalts als auch in der Benutzeroberfläche verwendet.',
+ 'app_color' => 'Primäre Farbe',
+ 'link_color' => 'Standard-Linkfarbe',
+ 'content_colors_desc' => 'Legt Farben für alle Elemente in der Seitenorganisationshierarchie fest. Die Auswahl von Farben mit einer ähnlichen Helligkeit wie die Standardfarben wird zur Lesbarkeit empfohlen.',
+ 'bookshelf_color' => 'Regalfarbe',
+ 'book_color' => 'Buchfarbe',
+ 'chapter_color' => 'Kapitelfarbe',
+ 'page_color' => 'Seitenfarbe',
+ 'page_draft_color' => 'Seitenentwurfsfarbe',
+
+ // Registration Settings
+ 'reg_settings' => 'Registrierungseinstellungen',
+ 'reg_enable' => 'Registrierung erlauben',
+ 'reg_enable_toggle' => 'Registrierung erlauben',
+ 'reg_enable_desc' => 'Wenn die Registrierung erlaubt ist, kann sich der Benutzer als Anwendungsbenutzer anmelden. Bei der Registrierung erhält er eine einzige, voreingestellte Benutzerrolle.',
+ 'reg_default_role' => 'Standard-Benutzerrolle nach Registrierung',
+ 'reg_enable_external_warning' => 'Die obige Option wird ignoriert, während eine externe LDAP oder SAML Authentifizierung aktiv ist. Benutzerkonten für nicht existierende Mitglieder werden automatisch erzeugt, wenn die Authentifizierung gegen das verwendete externe System erfolgreich ist.',
+ 'reg_email_confirmation' => 'Bestätigung per E-Mail',
+ 'reg_email_confirmation_toggle' => 'Bestätigung per E-Mail erforderlich',
+ 'reg_confirm_email_desc' => 'Falls die Einschränkung für Domains genutzt wird, ist die Bestätigung per E-Mail zwingend erforderlich und der untenstehende Wert wird ignoriert.',
+ 'reg_confirm_restrict_domain' => 'Registrierung auf bestimmte Domains einschränken',
+ 'reg_confirm_restrict_domain_desc' => 'Fügen Sie eine durch Komma getrennte Liste von Domains hinzu, auf die die Registrierung eingeschränkt werden soll. Benutzern wird eine E-Mail gesendet, um ihre E-Mail-Adresse zu bestätigen, bevor diese die Anwendung nutzen können.
+Hinweis: Benutzer können ihre E-Mail-Adresse nach erfolgreicher Registrierung ändern.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Keine Einschränkung gesetzt',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Wählen Sie die Standard-Sortierregel aus, die auf neue Bücher angewendet werden soll. Dies wirkt sich nicht auf bestehende Bücher aus und kann pro Buch überschrieben werden.',
+ 'sorting_rules' => 'Sortierregeln',
+ 'sorting_rules_desc' => 'Dies sind vordefinierte Sortieraktionen, die auf Inhalte im System angewendet werden können.',
+ 'sort_rule_assigned_to_x_books' => ':count Buch zugewiesen|:count Büchern zugewiesen',
+ 'sort_rule_create' => 'Sortierregel erstellen',
+ 'sort_rule_edit' => 'Sortierregel bearbeiten',
+ 'sort_rule_delete' => 'Sortierregel löschen',
+ 'sort_rule_delete_desc' => 'Diese Sortierregel aus dem System entfernen. Bücher mit dieser Sortierung werden auf manuelle Sortierung zurückgesetzt.',
+ 'sort_rule_delete_warn_books' => 'Diese Sortierregel wird derzeit in :count Bücher(n) verwendet. Sind Sie sicher, dass Sie dies löschen möchten?',
+ 'sort_rule_delete_warn_default' => 'Diese Sortierregel wird derzeit als Standard für Bücher verwendet. Sind Sie sicher, dass Sie dies löschen möchten?',
+ 'sort_rule_details' => 'Sortierregel-Details',
+ 'sort_rule_details_desc' => 'Legen Sie einen Namen für diese Sortierregel fest, der in Listen erscheint, wenn Benutzer eine Sortierung auswählen.',
+ 'sort_rule_operations' => 'Sortierungs-Aktionen',
+ 'sort_rule_operations_desc' => 'Konfigurieren Sie die durchzuführenden Sortieraktionen durch Verschieben von der Liste der verfügbaren Aktionen. Bei der Verwendung werden die Aktionen von oben nach unten angewendet. Alle hier vorgenommenen Änderungen werden beim Speichern auf alle zugewiesenen Bücher angewendet.',
+ 'sort_rule_available_operations' => 'Verfügbare Aktionen',
+ 'sort_rule_available_operations_empty' => 'Keine verbleibenden Aktionen',
+ 'sort_rule_configured_operations' => 'Konfigurierte Aktionen',
+ 'sort_rule_configured_operations_empty' => 'Aktionen aus der Liste "Verfügbare Operationen" ziehen/hinzufügen',
+ 'sort_rule_op_asc' => '(Aufst.)',
+ 'sort_rule_op_desc' => '(Abst.)',
+ 'sort_rule_op_name' => 'Name - Alphabetisch',
+ 'sort_rule_op_name_numeric' => 'Name - Numerisch',
+ 'sort_rule_op_created_date' => 'Erstellungsdatum',
+ 'sort_rule_op_updated_date' => 'Aktualisierungsdatum',
+ 'sort_rule_op_chapters_first' => 'Kapitel zuerst',
+ 'sort_rule_op_chapters_last' => 'Kapitel zuletzt',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Wartung',
+ 'maint_image_cleanup' => 'Bilder bereinigen',
+ 'maint_image_cleanup_desc' => 'Überprüft Seiten- und Versionsinhalte auf ungenutzte und mehrfach vorhandene Bilder. Erstellen Sie vor dem Start ein Backup Ihrer Datenbank und Bilder.',
+ 'maint_delete_images_only_in_revisions' => 'Lösche auch Bilder, die nur in alten Seitenüberarbeitungen vorhanden sind',
+ 'maint_image_cleanup_run' => 'Reinigung starten',
+ 'maint_image_cleanup_warning' => ':count eventuell unbenutze Bilder wurden gefunden. Möchten Sie diese Bilder löschen?',
+ 'maint_image_cleanup_success' => ':count eventuell unbenutze Bilder wurden gefunden und gelöscht.',
+ 'maint_image_cleanup_nothing_found' => 'Keine unbenutzen Bilder gefunden. Nichts zu löschen!',
+ 'maint_send_test_email' => 'Eine Test-E-Mail versenden',
+ 'maint_send_test_email_desc' => 'Dies sendet eine Test-E-Mail an Ihre in Ihrem Profil angegebene E-Mail-Adresse.',
+ 'maint_send_test_email_run' => 'Test-E-Mail senden',
+ 'maint_send_test_email_success' => 'E-Mail wurde an :address gesendet',
+ 'maint_send_test_email_mail_subject' => 'Test-E-Mail',
+ 'maint_send_test_email_mail_greeting' => 'E-Mail-Versand scheint zu funktionieren!',
+ 'maint_send_test_email_mail_text' => 'Glückwunsch! Da Sie diese E-Mail Benachrichtigung erhalten haben, scheinen Ihre E-Mail-Einstellungen korrekt konfiguriert zu sein.',
+ 'maint_recycle_bin_desc' => 'Gelöschte Regale, Bücher, Kapitel & Seiten werden in den Papierkorb verschoben, so dass sie wiederhergestellt oder dauerhaft gelöscht werden können. Ältere Gegenstände im Papierkorb können, in Abhängigkeit von der Systemkonfiguration, nach einer Weile automatisch entfernt werden.',
+ 'maint_recycle_bin_open' => 'Papierkorb öffnen',
+ 'maint_regen_references' => 'Referenzen neu generieren',
+ 'maint_regen_references_desc' => 'Diese Aktion wird den Referenzindex innerhalb der Datenbank neu erstellen. Dies wird normalerweise automatisch ausgeführt, aber diese Aktion kann nützlich sein, um alte Inhalte oder Inhalte zu indizieren, die mittels inoffizieller Methoden hinzugefügt wurden.',
+ 'maint_regen_references_success' => 'Referenz-Index wurde neu generiert!',
+ 'maint_timeout_command_note' => 'Hinweis: Die Ausführung dieser Aktion kann einige Zeit in Anspruch nehmen, was in einigen Webumgebungen zu Timeout-Problemen führen kann. Alternativ kann diese Aktion auch mit einem Terminalbefehl ausgeführt werden.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Papierkorb',
+ 'recycle_bin_desc' => 'Hier können Sie gelöschte Elemente wiederherstellen oder sie dauerhaft aus dem System entfernen. Diese Liste ist nicht gefiltert, im Gegensatz zu ähnlichen Aktivitätslisten im System, wo Berechtigungsfilter angewendet werden.',
+ 'recycle_bin_deleted_item' => 'Gelöschtes Element',
+ 'recycle_bin_deleted_parent' => 'Übergeordnet',
+ 'recycle_bin_deleted_by' => 'Gelöscht von',
+ 'recycle_bin_deleted_at' => 'Löschzeitpunkt',
+ 'recycle_bin_permanently_delete' => 'Dauerhaft löschen',
+ 'recycle_bin_restore' => 'Wiederherstellen',
+ 'recycle_bin_contents_empty' => 'Der Papierkorb ist derzeit leer',
+ 'recycle_bin_empty' => 'Papierkorb leeren',
+ 'recycle_bin_empty_confirm' => 'Dies wird alle Gegenstände im Papierkorb dauerhaft entfernen, einschließlich der Inhalte, die darin enthalten sind. Sind Sie sicher, dass Sie den Papierkorb leeren möchten?',
+ 'recycle_bin_destroy_confirm' => 'Diese Aktion löscht dieses Element dauerhaft aus dem System, zusammen mit allen unten aufgeführten untergeordneten Elementen, und es ist nicht möglich, diesen Inhalt wiederherzustellen. Sind Sie sicher, dass Sie dieses Element dauerhaft löschen möchten?',
+ 'recycle_bin_destroy_list' => 'Zu löschende Elemente',
+ 'recycle_bin_restore_list' => 'Zu wiederherzustellende Elemente',
+ 'recycle_bin_restore_confirm' => 'Mit dieser Aktion wird das gelöschte Element einschließlich aller untergeordneten Elemente an seinen ursprünglichen Ort wiederherstellen. Wenn der ursprüngliche Ort gelöscht wurde und sich nun im Papierkorb befindet, muss auch das übergeordnete Element wiederhergestellt werden.',
+ 'recycle_bin_restore_deleted_parent' => 'Das übergeordnete Elements wurde ebenfalls gelöscht. Dieses Element wird weiterhin als gelöscht zählen, bis auch das übergeordnete Element wiederhergestellt wurde.',
+ 'recycle_bin_restore_parent' => 'Übergeordneter Eintrag wiederherstellen',
+ 'recycle_bin_destroy_notification' => ':count Elemente wurden aus dem Papierkorb gelöscht.',
+ 'recycle_bin_restore_notification' => ':count Elemente wurden aus dem Papierkorb wiederhergestellt.',
+
+ // Audit Log
+ 'audit' => 'Audit-Protokoll',
+ 'audit_desc' => 'Dieses Audit-Protokoll zeigt eine Liste der Aktivitäten an, welche vom System protokolliert werden. Im Gegensatz zu den anderen Aktivitätslisten im System, bei denen Berechtigungen angewendet werden, ist diese Liste ungefiltert.',
+ 'audit_event_filter' => 'Ereignisfilter',
+ 'audit_event_filter_no_filter' => 'Kein Filter',
+ 'audit_deleted_item' => 'Gelöschtes Objekt',
+ 'audit_deleted_item_name' => 'Name: :name',
+ 'audit_table_user' => 'Benutzer',
+ 'audit_table_event' => 'Ereignis',
+ 'audit_table_related' => 'Verknüpftes Element oder Detail',
+ 'audit_table_ip' => 'IP-Adresse',
+ 'audit_table_date' => 'Aktivitätsdatum',
+ 'audit_date_from' => 'Zeitraum von',
+ 'audit_date_to' => 'Zeitraum bis',
+
+ // Role Settings
+ 'roles' => 'Rollen',
+ 'role_user_roles' => 'Benutzer-Rollen',
+ 'roles_index_desc' => 'Rollen werden verwendet, um Benutzer zu gruppieren System-Berechtigung für ihre Mitglieder zuzuweisen. Wenn ein Benutzer Mitglied mehrerer Rollen ist, stapeln die gewährten Berechtigungen und der Benutzer wird alle Fähigkeiten erben.',
+ 'roles_x_users_assigned' => ':count Benutzer zugewiesen|:count Benutzer zugewiesen',
+ 'roles_x_permissions_provided' => ':count Berechtigung|:count Berechtigungen',
+ 'roles_assigned_users' => 'Zugewiesene Benutzer',
+ 'roles_permissions_provided' => 'Genutzte Berechtigungen',
+ 'role_create' => 'Neue Rolle anlegen',
+ 'role_delete' => 'Rolle löschen',
+ 'role_delete_confirm' => 'Sie möchten die Rolle ":roleName" löschen.',
+ 'role_delete_users_assigned' => 'Diese Rolle ist :userCount Benutzern zugeordnet. Sie können unten eine neue Rolle auswählen, die Sie diesen Benutzern zuordnen möchten.',
+ 'role_delete_no_migration' => "Den Benutzern keine andere Rolle zuordnen",
+ 'role_delete_sure' => 'Sind Sie sicher, dass Sie diese Rolle löschen möchten?',
+ 'role_edit' => 'Rolle bearbeiten',
+ 'role_details' => 'Rollendetails',
+ 'role_name' => 'Rollenname',
+ 'role_desc' => 'Kurzbeschreibung der Rolle',
+ 'role_mfa_enforced' => 'Benötigt Mehrfach-Faktor-Authentifizierung',
+ 'role_external_auth_id' => 'Externe Authentifizierungs-IDs',
+ 'role_system' => 'System-Berechtigungen',
+ 'role_manage_users' => 'Benutzer verwalten',
+ 'role_manage_roles' => 'Rollen und Rollen-Berechtigungen verwalten',
+ 'role_manage_entity_permissions' => 'Alle Buch-, Kapitel- und Seiten-Berechtigungen verwalten',
+ 'role_manage_own_entity_permissions' => 'Nur Berechtigungen eigener Bücher, Kapitel und Seiten verwalten',
+ 'role_manage_page_templates' => 'Seitenvorlagen verwalten',
+ 'role_access_api' => 'Systemzugriffs-API',
+ 'role_manage_settings' => 'Globaleinstellungen verwalten',
+ 'role_export_content' => 'Inhalt exportieren',
+ 'role_import_content' => 'Inhalt importieren',
+ 'role_editor_change' => 'Seiten-Editor ändern',
+ 'role_notifications' => 'Empfangen und Verwalten von Benachrichtigungen',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Berechtigungen',
+ 'roles_system_warning' => 'Beachten Sie, dass der Zugriff auf eine der oben genannten drei Berechtigungen einem Benutzer erlauben kann, seine eigenen Berechtigungen oder die Rechte anderer im System zu ändern. Weisen Sie nur Rollen, mit diesen Berechtigungen, vertrauenswürdigen Benutzern zu.',
+ 'role_asset_desc' => 'Diese Berechtigungen gelten für den Standard-Zugriff innerhalb des Systems. Berechtigungen für Bücher, Kapitel und Seiten überschreiben diese Berechtigungenen.',
+ 'role_asset_admins' => 'Administratoren erhalten automatisch Zugriff auf alle Inhalte, aber diese Optionen können Oberflächenoptionen ein- oder ausblenden.',
+ 'role_asset_image_view_note' => 'Das bezieht sich auf die Sichtbarkeit innerhalb des Bildmanagers. Der tatsächliche Zugriff auf hochgeladene Bilddateien hängt von der Speicheroption des Systems für Bilder ab.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Alle',
+ 'role_own' => 'Eigene',
+ 'role_controlled_by_asset' => 'Berechtigungen werden vom Uploadziel bestimmt',
+ 'role_save' => 'Rolle speichern',
+ 'role_users' => 'Dieser Rolle zugeordnete Benutzer',
+ 'role_users_none' => 'Bisher sind dieser Rolle keine Benutzer zugeordnet',
+
+ // Users
+ 'users' => 'Benutzer',
+ 'users_index_desc' => 'Erstellen und Verwalten Sie individuelle Benutzerkonten innerhalb des Systems. Benutzerkonten werden zur Anmeldung und Besitz von Inhalten und Aktivitäten verwendet. Zugriffsberechtigungen sind in erster Linie rollenbasiert, aber Besitz von Benutzerinhalten kann unter anderem auch Berechtigungen beeinflussen.',
+ 'user_profile' => 'Benutzerprofil',
+ 'users_add_new' => 'Benutzer hinzufügen',
+ 'users_search' => 'Benutzer suchen',
+ 'users_latest_activity' => 'Neueste Aktivitäten',
+ 'users_details' => 'Benutzerdetails',
+ 'users_details_desc' => 'Legen Sie für diesen Benutzer einen Anzeigenamen und eine E-Mail-Adresse fest. Die E-Mail-Adresse wird bei der Anmeldung verwendet.',
+ 'users_details_desc_no_email' => 'Legen Sie für diesen Benutzer einen Anzeigenamen fest, damit andere ihn erkennen können.',
+ 'users_role' => 'Benutzerrollen',
+ 'users_role_desc' => 'Wählen Sie aus, welchen Rollen dieser Benutzer zugeordnet werden soll. Wenn ein Benutzer mehreren Rollen zugeordnet ist, werden die Berechtigungen dieser Rollen gestapelt und er erhält alle Fähigkeiten der zugewiesenen Rollen.',
+ 'users_password' => 'Benutzerpasswort',
+ 'users_password_desc' => 'Legen Sie ein Passwort fest, mit dem Sie sich anmelden möchten. Diese muss mindestens 8 Zeichen lang sein.',
+ 'users_send_invite_text' => 'Sie können diesem Benutzer eine Einladungs-E-Mail senden, die es ihm erlaubt, sein eigenes Passwort zu setzen, andernfalls können Sie sein Passwort selbst setzen.',
+ 'users_send_invite_option' => 'Benutzer-Einladungs-E-Mail senden',
+ 'users_external_auth_id' => 'Externe Authentifizierungs-ID',
+ 'users_external_auth_id_desc' => 'Wenn ein externes Authentifizierungssystem verwendet wird (z. B. SAML2, OIDC oder LDAP) ist dies die ID, die diesen BookStack-Benutzer mit dem Authentifizierungs-Systemkonto verknüpft. Sie können dieses Feld ignorieren, wenn Sie die Standard-E-Mail-basierte Authentifizierung verwenden.',
+ 'users_password_warning' => 'Füllen Sie die untenstehenden Felder nur aus, wenn Sie das Passwort für diesen Benutzer ändern möchten.',
+ 'users_system_public' => 'Dieser Benutzer repräsentiert alle unangemeldeten Benutzer, die diese Seite betrachten. Er kann nicht zum Anmelden benutzt werden, sondern wird automatisch zugeordnet.',
+ 'users_delete' => 'Benutzer löschen',
+ 'users_delete_named' => 'Benutzer ":userName" löschen',
+ 'users_delete_warning' => 'Der Benutzer ":userName" wird aus dem System gelöscht.',
+ 'users_delete_confirm' => 'Sind Sie sicher, dass Sie diesen Benutzer löschen möchten?',
+ 'users_migrate_ownership' => 'Besitz migrieren',
+ 'users_migrate_ownership_desc' => 'Wählen Sie hier einen Benutzer, wenn Sie möchten, dass ein anderer Benutzer der Besitzer aller Einträge wird, die diesem Benutzer derzeit gehören.',
+ 'users_none_selected' => 'Kein Benutzer ausgewählt',
+ 'users_edit' => 'Benutzer bearbeiten',
+ 'users_edit_profile' => 'Profil bearbeiten',
+ 'users_avatar' => 'Benutzer-Bild',
+ 'users_avatar_desc' => 'Das Bild sollte eine Auflösung von 256x256px haben.',
+ 'users_preferred_language' => 'Bevorzugte Sprache',
+ 'users_preferred_language_desc' => 'Diese Option ändert die Sprache, die für die Benutzeroberfläche der Anwendung verwendet wird. Dies hat keinen Einfluss auf von Benutzern erstellte Inhalte.',
+ 'users_social_accounts' => 'Social-Media Konten',
+ 'users_social_accounts_desc' => 'Zeigt den Status der verbundenen sozialen Konten für diesen Benutzer an. Social Accounts können zusätzlich zum primären Authentifizierungssystem für den Systemzugriff verwendet werden.',
+ 'users_social_accounts_info' => 'Hier können Sie andere Social-Media-Konten für eine schnellere und einfachere Anmeldung verknüpfen. Wenn Sie ein Social-Media Konto lösen, bleibt der Zugriff erhalten. Entfernen Sie in diesem Falle die Berechtigung in Ihren Profil-Einstellungen des verknüpften Social-Media-Kontos.',
+ 'users_social_connect' => 'Social-Media-Konto verknüpfen',
+ 'users_social_disconnect' => 'Social-Media-Konto löschen',
+ 'users_social_status_connected' => 'Verbunden',
+ 'users_social_status_disconnected' => 'Getrennt',
+ 'users_social_connected' => ':socialAccount-Konto wurde erfolgreich mit dem Profil verknüpft.',
+ 'users_social_disconnected' => ':socialAccount-Konto wurde erfolgreich vom Profil gelöst.',
+ 'users_api_tokens' => 'API-Token',
+ 'users_api_tokens_desc' => 'Erstellen und verwalten Sie die Zugangs-Tokens zur Authentifizierung mit der BookStack REST API. Berechtigungen für die API werden über den Benutzer verwaltet, dem das Token gehört.',
+ 'users_api_tokens_none' => 'Für diesen Benutzer wurden keine API-Token erstellt',
+ 'users_api_tokens_create' => 'Token erstellen',
+ 'users_api_tokens_expires' => 'Endet',
+ 'users_api_tokens_docs' => 'API Dokumentation',
+ 'users_mfa' => 'Multi-Faktor-Authentifizierung',
+ 'users_mfa_desc' => 'Richten Sie Multi-Faktor-Authentifizierung als zusätzliche Sicherheitsstufe für Ihr Benutzerkonto ein.',
+ 'users_mfa_x_methods' => ':count Methode konfiguriert|:count Methoden konfiguriert',
+ 'users_mfa_configure' => 'Methoden konfigurieren',
+
+ // API Tokens
+ 'user_api_token_create' => 'Neuen API-Token erstellen',
+ 'user_api_token_name' => 'Name',
+ 'user_api_token_name_desc' => 'Geben Sie Ihrem Token einen aussagekräftigen Namen als spätere Erinnerung an seinen Verwendungszweck.',
+ 'user_api_token_expiry' => 'Ablaufdatum',
+ 'user_api_token_expiry_desc' => 'Legen Sie ein Datum fest, an dem dieser Token abläuft. Nach diesem Datum funktionieren Anfragen, die mit diesem Token gestellt werden, nicht mehr. Wenn Sie dieses Feld leer lassen, wird ein Ablaufdatum von 100 Jahren in der Zukunft festgelegt.',
+ 'user_api_token_create_secret_message' => 'Unmittelbar nach der Erstellung dieses Tokens wird eine "Token ID" & ein "Token Kennwort" generiert und angezeigt. Das Kennwort wird nur ein einziges Mal angezeigt. Stellen Sie also sicher, dass Sie den Inhalt an einen sicheren Ort kopieren, bevor Sie fortfahren.',
+ 'user_api_token' => 'API-Token',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'Dies ist ein nicht editierbarer, vom System generierter Identifikator für diesen Token, welcher bei API-Anfragen angegeben werden muss.',
+ 'user_api_token_secret' => 'Token Kennwort',
+ 'user_api_token_secret_desc' => 'Dies ist ein systemgeneriertes Kennwort für diesen Token, das bei API-Anfragen zur Verfügung gestellt werden muss. Es wird nur dieses eine Mal angezeigt, deshalb kopieren Sie diesen Wert an einen sicheren und geschützten Ort.',
+ 'user_api_token_created' => 'Token erstellt :timeAgo',
+ 'user_api_token_updated' => 'Token aktualisiert :timeAgo',
+ 'user_api_token_delete' => 'Lösche Token',
+ 'user_api_token_delete_warning' => 'Dies löscht den API-Token mit dem Namen \':tokenName\' vollständig aus dem System.',
+ 'user_api_token_delete_confirm' => 'Sind Sie sicher, dass Sie diesen API-Token löschen möchten?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks sind eine Möglichkeit, Daten an externe URLs zu senden, wenn bestimmte Aktionen und Ereignisse im System auftreten, was eine ereignisbasierte Integration mit externen Plattformen wie Messaging- oder Benachrichtigungssystemen ermöglicht.',
+ 'webhooks_x_trigger_events' => ':count Auslöserereignis|:count Auslöserereignisse',
+ 'webhooks_create' => 'Neuen Webhook erstellen',
+ 'webhooks_none_created' => 'Es wurden noch keine Webhooks erstellt.',
+ 'webhooks_edit' => 'Webhook bearbeiten',
+ 'webhooks_save' => 'Webhook speichern',
+ 'webhooks_details' => 'Webhook-Details',
+ 'webhooks_details_desc' => 'Geben Sie einen benutzerfreundlichen Namen und einen POST-Endpunkt als Ort an, an den die Webhook-Daten gesendet werden sollen.',
+ 'webhooks_events' => 'Webhook Ereignisse',
+ 'webhooks_events_desc' => 'Wählen Sie alle Ereignisse, die diesen Webhook auslösen sollen.',
+ 'webhooks_events_warning' => 'Beachten Sie, dass diese Ereignisse für alle ausgewählten Ereignisse ausgelöst werden, auch wenn benutzerdefinierte Berechtigungen angewendet werden. Stellen Sie sicher, dass die Verwendung dieses Webhook keine vertraulichen Inhalte enthüllt.',
+ 'webhooks_events_all' => 'Alle System-Ereignisse',
+ 'webhooks_name' => 'Webhook-Name',
+ 'webhooks_timeout' => 'Webhook Request Timeout (Sekunden)',
+ 'webhooks_endpoint' => 'Webhook Endpunkt',
+ 'webhooks_active' => 'Webhook aktiv',
+ 'webhook_events_table_header' => 'Ereignisse',
+ 'webhooks_delete' => 'Webhook löschen',
+ 'webhooks_delete_warning' => 'Dies wird diesen Webhook mit dem Namen \':webhookName\' vollständig aus dem System löschen.',
+ 'webhooks_delete_confirm' => 'Sind Sie sicher, dass Sie diesen Webhook löschen möchten?',
+ 'webhooks_format_example' => 'Webhook Format Beispiel',
+ 'webhooks_format_example_desc' => 'Webhook Daten werden als POST-Anfrage an den konfigurierten Endpunkt als JSON im folgenden Format gesendet. Die Eigenschaften "related_item" und "url" sind optional und hängen vom Typ des ausgelösten Ereignisses ab.',
+ 'webhooks_status' => 'Webhook-Status',
+ 'webhooks_last_called' => 'Zuletzt aufgerufen:',
+ 'webhooks_last_errored' => 'Letzter Fehler:',
+ 'webhooks_last_error_message' => 'Letzte Fehlermeldung:',
+
+ // Licensing
+ 'licenses' => 'Lizenzen',
+ 'licenses_desc' => 'Diese Seite beschreibt Lizenzinformationen für BookStack zusätzlich zu den Projekten und Bibliotheken, die in BookStack verwendet werden. Viele aufgelistete Projekte dürfen nur in einem Entwicklungskontext verwendet werden.',
+ 'licenses_bookstack' => 'BookStack-Lizenz',
+ 'licenses_php' => 'PHP-Bibliothekslizenzen',
+ 'licenses_js' => 'JavaScript-Bibliothekslizenzen',
+ 'licenses_other' => 'Andere Lizenzen',
+ 'license_details' => 'Lizenzdetails',
+
+ //! If editing translations files directly please ignore this in all
+ //! languages apart from en. Content will be auto-copied from en.
+ //!////////////////////////////////
+ 'language_select' => [
+ 'en' => 'Englisch',
+ 'ar' => 'Arabisch',
+ 'bg' => 'Bulgarisch',
+ 'bs' => 'Bosnisch',
+ 'ca' => 'Katalanisch',
+ 'cs' => 'Tschechisch',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dänisch',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Spanisch',
+ 'es_AR' => 'Spanisch Argentinisch',
+ 'et' => 'Estnisch',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Französisch',
+ 'he' => 'Hebräisch',
+ 'hr' => 'Kroatisch',
+ 'hu' => 'Ungarisch',
+ 'id' => 'Bahasa-Indonesisch',
+ 'it' => 'Italienisch',
+ 'ja' => 'Japanisch',
+ 'ko' => 'Koreanisch',
+ 'lt' => 'Litauisch',
+ 'lv' => 'Lettisch',
+ 'nb' => 'Norwegisch (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Niederländisch',
+ 'pl' => 'Polnisch',
+ 'pt' => 'Portugiesisch',
+ 'pt_BR' => 'Portugiesisch (Brasilien)',
+ 'ro' => 'Română',
+ 'ru' => 'Russisch',
+ 'sk' => 'Slowenisch',
+ 'sl' => 'Slowenisch',
+ 'sv' => 'Schwedisch',
+ 'tr' => 'Türkisch',
+ 'uk' => 'Ukrainisch',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Vietnamesisch',
+ 'zh_CN' => 'Vereinfachtes Chinesisch',
+ 'zh_TW' => 'Traditionelles Chinesisch',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/de/validation.php b/lang/de/validation.php
new file mode 100644
index 00000000000..21e850bbf9c
--- /dev/null
+++ b/lang/de/validation.php
@@ -0,0 +1,123 @@
+ ':attribute muss akzeptiert werden.',
+ 'active_url' => ':attribute ist keine gültige URL.',
+ 'after' => ':attribute muss ein Datum nach :date sein.',
+ 'alpha' => ':attribute kann nur Buchstaben enthalten.',
+ 'alpha_dash' => ':attribute kann nur Buchstaben, Zahlen und Bindestriche enthalten.',
+ 'alpha_num' => ':attribute kann nur Buchstaben und Zahlen enthalten.',
+ 'array' => ':attribute muss ein Array sein.',
+ 'backup_codes' => 'Der angegebene Code ist ungültig oder wurde bereits verwendet.',
+ 'before' => ':attribute muss ein Datum vor :date sein.',
+ 'between' => [
+ 'numeric' => ':attribute muss zwischen :min und :max liegen.',
+ 'file' => ':attribute muss zwischen :min und :max Kilobytes groß sein.',
+ 'string' => ':attribute muss zwischen :min und :max Zeichen lang sein.',
+ 'array' => ':attribute muss zwischen :min und :max Elemente enthalten.',
+ ],
+ 'boolean' => ':attribute Feld muss wahr oder falsch sein.',
+ 'confirmed' => ':attribute stimmt nicht überein.',
+ 'date' => ':attribute ist kein gültiges Datum.',
+ 'date_format' => ':attribute entspricht nicht dem Format :format.',
+ 'different' => ':attribute und :other müssen unterschiedlich sein.',
+ 'digits' => ':attribute muss :digits Stellen haben.',
+ 'digits_between' => ':attribute muss zwischen :min und :max Stellen haben.',
+ 'email' => ':attribute muss eine gültige E-Mail-Adresse sein.',
+ 'ends_with' => ':attribute muss mit einem der folgenden Werte: :values enden',
+ 'file' => ':attribute muss als gültige Datei angegeben werden.',
+ 'filled' => ':attribute ist erforderlich.',
+ 'gt' => [
+ 'numeric' => ':attribute muss größer als :value sein.',
+ 'file' => ':attribute muss mindestens :value Kilobytes groß sein.',
+ 'string' => ':attribute muss mehr als :value Zeichen haben.',
+ 'array' => ':attribute muss mindestens :value Elemente haben.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute muss größer-gleich :value sein.',
+ 'file' => ':attribute muss mindestens :value Kilobytes groß sein.',
+ 'string' => ':attribute muss mindestens :value Zeichen enthalten.',
+ 'array' => ':attribute muss :value oder mehr Elemente haben.',
+ ],
+ 'exists' => ':attribute ist ungültig.',
+ 'image' => ':attribute muss ein Bild sein.',
+ 'image_extension' => ':attribute muss eine gültige und unterstützte Bild-Dateiendung haben.',
+ 'in' => ':attribute ist ungültig.',
+ 'integer' => ':attribute muss eine Zahl sein.',
+ 'ip' => ':attribute muss eine gültige IP-Adresse sein.',
+ 'ipv4' => ':attribute muss eine gültige IPv4-Adresse sein.',
+ 'ipv6' => ':attribute muss eine gültige IPv6-Adresse sein.',
+ 'json' => 'Das Attribut muss eine gültige JSON-Zeichenfolge sein.',
+ 'lt' => [
+ 'numeric' => ':attribute muss kleiner als :value sein.',
+ 'file' => ':attribute muss kleiner als :value Kilobytes sein.',
+ 'string' => ':attribute muss weniger als :value Zeichen haben.',
+ 'array' => ':attribute muss weniger als :value Elemente haben.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute muss kleiner oder gleich :value sein.',
+ 'file' => ':attribute muss kleiner oder gleich :value Kilobytes sein.',
+ 'string' => ':attribute darf höchstens :value Zeichen besitzen.',
+ 'array' => ':attribute darf höchstens :value Elemente haben.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute darf nicht größer als :max sein.',
+ 'file' => ':attribute darf nicht größer als :max Kilobyte sein.',
+ 'string' => ':attribute darf nicht länger als :max Zeichen sein.',
+ 'array' => ':attribute darf nicht mehr als :max Elemente enthalten.',
+ ],
+ 'mimes' => ':attribute muss eine Datei vom Typ: :values sein.',
+ 'min' => [
+ 'numeric' => ':attribute muss mindestens :min sein',
+ 'file' => ':attribute muss mindestens :min Kilobyte groß sein.',
+ 'string' => ':attribute muss mindestens :min Zeichen lang sein.',
+ 'array' => ':attribute muss mindesten :min Elemente enthalten.',
+ ],
+ 'not_in' => 'Das ausgewählte :attribute ist ungültig.',
+ 'not_regex' => ':attribute ist kein gültiges Format.',
+ 'numeric' => ':attribute muss eine Zahl sein.',
+ 'regex' => ':attribute ist in einem ungültigen Format.',
+ 'required' => ':attribute ist erforderlich.',
+ 'required_if' => ':attribute ist erforderlich, wenn :other :value ist.',
+ 'required_with' => ':attribute ist erforderlich, wenn :values vorhanden ist.',
+ 'required_with_all' => ':attribute ist erforderlich, wenn :values vorhanden sind.',
+ 'required_without' => ':attribute ist erforderlich, wenn :values nicht vorhanden ist.',
+ 'required_without_all' => ':attribute ist erforderlich, wenn :values nicht vorhanden sind.',
+ 'same' => ':attribute und :other müssen übereinstimmen.',
+ 'safe_url' => 'Der angegebene Link ist möglicherweise nicht sicher.',
+ 'size' => [
+ 'numeric' => ':attribute muss :size sein.',
+ 'file' => ':attribute muss :size Kilobytes groß sein.',
+ 'string' => ':attribute muss :size Zeichen lang sein.',
+ 'array' => ':attribute muss :size Elemente enthalten.',
+ ],
+ 'string' => ':attribute muss eine Zeichenkette sein.',
+ 'timezone' => ':attribute muss eine gültige Zeitzone sein.',
+ 'totp' => 'Der angegebene Code ist ungültig oder abgelaufen.',
+ 'unique' => ':attribute wird bereits verwendet.',
+ 'url' => ':attribute ist kein gültiges Format.',
+ 'uploaded' => 'Die Datei konnte nicht hochgeladen werden. Der Server akzeptiert möglicherweise keine Dateien dieser Größe.',
+
+ 'zip_file' => ':attribute muss eine Datei innerhalb des ZIP referenzieren.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => ':attribute muss eine Datei des Typs :validType referenzieren, gefunden :foundType.',
+ 'zip_model_expected' => 'Datenobjekt erwartet, aber ":type" gefunden.',
+ 'zip_unique' => ':attribute muss für den Objekttyp innerhalb des ZIP eindeutig sein.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Passwortbestätigung erforderlich',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/de_informal/activities.php b/lang/de_informal/activities.php
new file mode 100644
index 00000000000..990bfa0bc56
--- /dev/null
+++ b/lang/de_informal/activities.php
@@ -0,0 +1,140 @@
+ 'erstellte Seite',
+ 'page_create_notification' => 'Seite erfolgreich erstellt',
+ 'page_update' => 'aktualisierte Seite',
+ 'page_update_notification' => 'Seite erfolgreich aktualisiert',
+ 'page_delete' => 'löschte Seite',
+ 'page_delete_notification' => 'Seite erfolgreich gelöscht',
+ 'page_restore' => 'stellte Seite wieder her',
+ 'page_restore_notification' => 'Seite erfolgreich wiederhergestellt',
+ 'page_move' => 'verschob Seite',
+ 'page_move_notification' => 'Seite erfolgreich verschoben',
+
+ // Chapters
+ 'chapter_create' => 'erstellte Kapitel',
+ 'chapter_create_notification' => 'Kapitel erfolgreich erstellt',
+ 'chapter_update' => 'aktualisierte Kapitel',
+ 'chapter_update_notification' => 'Kapitel erfolgreich aktualisiert',
+ 'chapter_delete' => 'löschte Kapitel',
+ 'chapter_delete_notification' => 'Kapitel erfolgreich gelöscht',
+ 'chapter_move' => 'verschob Kapitel',
+ 'chapter_move_notification' => 'Kapitel erfolgreich verschoben',
+
+ // Books
+ 'book_create' => 'erstellte Buch',
+ 'book_create_notification' => 'Buch erfolgreich erstellt',
+ 'book_create_from_chapter' => 'wandelte Kapitel zu Buch um',
+ 'book_create_from_chapter_notification' => 'Kapitel erfolgreich in ein Buch umgewandelt',
+ 'book_update' => 'aktualisierte Buch',
+ 'book_update_notification' => 'Buch erfolgreich aktualisiert',
+ 'book_delete' => 'löschte Buch',
+ 'book_delete_notification' => 'Buch erfolgreich gelöscht',
+ 'book_sort' => 'sortierte Buch',
+ 'book_sort_notification' => 'Buch erfolgreich umsortiert',
+
+ // Bookshelves
+ 'bookshelf_create' => 'erstellte Regal',
+ 'bookshelf_create_notification' => 'Regal erfolgreich erstellt',
+ 'bookshelf_create_from_book' => 'wandelte Buch zu Regal um',
+ 'bookshelf_create_from_book_notification' => 'Buch erfolgreich zu einem Regal umgewandelt',
+ 'bookshelf_update' => 'aktualisierte Regal',
+ 'bookshelf_update_notification' => 'Regal erfolgreich aktualisiert',
+ 'bookshelf_delete' => 'löschte Regal',
+ 'bookshelf_delete_notification' => 'Regal erfolgreich gelöscht',
+
+ // Revisions
+ 'revision_restore' => 'stellte Revision wieder her',
+ 'revision_delete' => 'Revision gelöscht',
+ 'revision_delete_notification' => 'Revision erfolgreich gelöscht',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" wurde zu deinen Favoriten hinzugefügt',
+ 'favourite_remove_notification' => '":name" wurde aus deinen Favoriten entfernt',
+
+ // Watching
+ 'watch_update_level_notification' => 'Beobachtungseinstellungen erfolgreich aktualisiert',
+
+ // Auth
+ 'auth_login' => 'hat sich eingeloggt',
+ 'auth_register' => 'hat sich als neuer Benutzer registriert',
+ 'auth_password_reset_request' => 'hat eine Rücksetzung des Benutzerpassworts beantragt',
+ 'auth_password_reset_update' => 'Benutzerpasswort zurückgesetzt',
+ 'mfa_setup_method' => 'hat MFA-Methode konfiguriert',
+ 'mfa_setup_method_notification' => 'Multi-Faktor-Methode erfolgreich konfiguriert',
+ 'mfa_remove_method' => 'hat MFA-Methode entfernt',
+ 'mfa_remove_method_notification' => 'Multi-Faktor-Methode erfolgreich entfernt',
+
+ // Settings
+ 'settings_update' => 'hat Einstellungen aktualisiert',
+ 'settings_update_notification' => 'Einstellungen erfolgreich aktualisiert',
+ 'maintenance_action_run' => 'hat Wartungsarbeiten ausgeführt',
+
+ // Webhooks
+ 'webhook_create' => 'erstellter Webhook',
+ 'webhook_create_notification' => 'Webhook erfolgreich eingerichtet',
+ 'webhook_update' => 'aktualisierter Webhook',
+ 'webhook_update_notification' => 'Webhook erfolgreich aktualisiert',
+ 'webhook_delete' => 'gelöschter Webhook',
+ 'webhook_delete_notification' => 'Webhook erfolgreich gelöscht',
+
+ // Imports
+ 'import_create' => 'erstellter Import',
+ 'import_create_notification' => 'Import erfolgreich hochgeladen',
+ 'import_run' => 'aktualisierter Import',
+ 'import_run_notification' => 'Inhalt erfolgreich importiert',
+ 'import_delete' => 'gelöschter Import',
+ 'import_delete_notification' => 'Import erfolgreich gelöscht',
+
+ // Users
+ 'user_create' => 'hat Benutzer erzeugt:',
+ 'user_create_notification' => 'Benutzer erfolgreich erstellt',
+ 'user_update' => 'hat Benutzer aktualisiert:',
+ 'user_update_notification' => 'Benutzer erfolgreich aktualisiert',
+ 'user_delete' => 'hat Benutzer gelöscht: ',
+ 'user_delete_notification' => 'Benutzer erfolgreich entfernt',
+
+ // API Tokens
+ 'api_token_create' => 'API Token wurde erstellt',
+ 'api_token_create_notification' => 'API-Token erfolgreich erstellt',
+ 'api_token_update' => 'API Token wurde aktualisiert',
+ 'api_token_update_notification' => 'API-Token erfolgreich aktualisiert',
+ 'api_token_delete' => 'API Token gelöscht',
+ 'api_token_delete_notification' => 'API-Token erfolgreich gelöscht',
+
+ // Roles
+ 'role_create' => 'hat Rolle erzeugt:',
+ 'role_create_notification' => 'Rolle erfolgreich erstellt',
+ 'role_update' => 'hat Rolle aktualisiert:',
+ 'role_update_notification' => 'Rolle erfolgreich aktualisiert',
+ 'role_delete' => 'hat Rolle gelöscht:',
+ 'role_delete_notification' => 'Rolle erfolgreich gelöscht',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'hat den Papierkorb geleert',
+ 'recycle_bin_restore' => 'aus dem Papierkorb wiederhergestellt',
+ 'recycle_bin_destroy' => 'aus dem Papierkorb gelöscht',
+
+ // Comments
+ 'commented_on' => 'kommentiert',
+ 'comment_create' => 'Kommentar hinzugefügt',
+ 'comment_update' => 'Kommentar aktualisiert',
+ 'comment_delete' => 'Kommentar gelöscht',
+
+ // Sort Rules
+ 'sort_rule_create' => 'hat eine Sortierregel erstellt',
+ 'sort_rule_create_notification' => 'Sortierregel erfolgreich angelegt',
+ 'sort_rule_update' => 'hat eine Sortierregel aktualisiert',
+ 'sort_rule_update_notification' => 'Sortierregel erfolgreich aktualisiert',
+ 'sort_rule_delete' => 'hat eine Sortierregel gelöscht',
+ 'sort_rule_delete_notification' => 'Sortierregel erfolgreich gelöscht',
+
+ // Other
+ 'permissions_update' => 'aktualisierte Berechtigungen',
+];
diff --git a/lang/de_informal/auth.php b/lang/de_informal/auth.php
new file mode 100644
index 00000000000..17dcdbcb26f
--- /dev/null
+++ b/lang/de_informal/auth.php
@@ -0,0 +1,117 @@
+ 'Die eingegebenen Anmeldedaten sind ungültig.',
+ 'throttle' => 'Zu viele Anmeldeversuche. Bitte versuche es in :seconds Sekunden erneut.',
+
+ // Login & Register
+ 'sign_up' => 'Registrieren',
+ 'log_in' => 'Anmelden',
+ 'log_in_with' => 'Anmelden mit :socialDriver',
+ 'sign_up_with' => 'Registrieren mit :socialDriver',
+ 'logout' => 'Abmelden',
+
+ 'name' => 'Name',
+ 'username' => 'Benutzername',
+ 'email' => 'E-Mail',
+ 'password' => 'Passwort',
+ 'password_confirm' => 'Passwort bestätigen',
+ 'password_hint' => 'Muss mindestens 8 Zeichen lang sein',
+ 'forgot_password' => 'Passwort vergessen?',
+ 'remember_me' => 'Angemeldet bleiben',
+ 'ldap_email_hint' => 'Bitte gib eine E-Mail-Adresse ein, um diese mit dem Account zu nutzen.',
+ 'create_account' => 'Account registrieren',
+ 'already_have_account' => 'Bereits ein Konto erstellt?',
+ 'dont_have_account' => 'Noch kein Konto erstellt?',
+ 'social_login' => 'Mit Sozialem Netzwerk anmelden',
+ 'social_registration' => 'Mit Sozialem Netzwerk registrieren',
+ 'social_registration_text' => 'Mit einem dieser Dienste registrieren oder anmelden',
+
+ 'register_thanks' => 'Vielen Dank für deine Registrierung!',
+ 'register_confirm' => 'Bitte prüfe deinen Posteingang und bestätige die Registrierung, um :appName nutzen zu können.',
+ 'registrations_disabled' => 'Eine Registrierung ist momentan nicht möglich',
+ 'registration_email_domain_invalid' => 'Du kannst dich mit dieser E-Mail nicht registrieren.',
+ 'register_success' => 'Vielen Dank für deine Registrierung! Du bist jetzt registriert und eingeloggt.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Versuche Anmeldung',
+ 'auto_init_starting_desc' => 'Wir kontaktieren dein Authentifizierungssystem, um den Anmeldevorgang zu starten. Wenn nach 5 Sekunden kein Fortschritt zu sehen ist, kannst du versuchen, auf den unten stehenden Link zu klicken.',
+ 'auto_init_start_link' => 'Mit der Authentifizierung fortfahren',
+
+ // Password Reset
+ 'reset_password' => 'Passwort vergessen',
+ 'reset_password_send_instructions' => 'Bitte gib Deine E-Mail-Adresse ein. Danach erhältst Du eine E-Mail mit einem Link zum Zurücksetzen deines Passwortes.',
+ 'reset_password_send_button' => 'Passwort zurücksetzen',
+ 'reset_password_sent' => 'Ein Link zum Zurücksetzen des Passworts wird an :email gesendet, wenn diese E-Mail-Adresse im System gefunden wird.',
+ 'reset_password_success' => 'Dein Passwort wurde erfolgreich zurückgesetzt.',
+ 'email_reset_subject' => 'Passwort zurücksetzen für :appName',
+ 'email_reset_text' => 'Du erhältst diese E-Mail, weil jemand versucht hat, dein Passwort zurückzusetzen.',
+ 'email_reset_not_requested' => 'Wenn du das Zurücksetzen des Passworts nicht angefordert hast, ist keine weitere Aktion erforderlich.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Bestätige Deine E-Mail-Adresse für :appName',
+ 'email_confirm_greeting' => 'Danke, dass Du dich für :appName registrierst hast!',
+ 'email_confirm_text' => 'Bitte bestätige Deine E-Mail-Adresse, indem Du auf die Schaltfläche klickst:',
+ 'email_confirm_action' => 'E-Mail-Adresse bestätigen',
+ 'email_confirm_send_error' => 'Leider konnte die für die Registrierung notwendige E-Mail zur Bestätigung deiner E-Mail-Adresse nicht versandt werden. Bitte kontaktiere deinen Systemadministrator!',
+ 'email_confirm_success' => 'Deine E-Mail Adresse wurde bestätigt! Du solltest nun in der Lage sein, dich mit deiner E-Mail-Adresse anzumelden.',
+ 'email_confirm_resent' => 'Bestätigungs-E-Mail wurde erneut versendet, bitte überprüfe deinen Posteingang.',
+ 'email_confirm_thanks' => 'Vielen Dank für das Bestätigen!',
+ 'email_confirm_thanks_desc' => 'Bitte warte einen Augenblick, während deine Bestätigung bearbeitet wird. Wenn Du nach 3 Sekunden nicht weitergeleitet wirst, drücke unten den "Weiter" Link, um fortzufahren.',
+
+ 'email_not_confirmed' => 'E-Mail-Adresse ist nicht bestätigt',
+ 'email_not_confirmed_text' => 'Deine E-Mail-Adresse ist bisher nicht bestätigt.',
+ 'email_not_confirmed_click_link' => 'Bitte klicke auf den Link in der E-Mail, die du nach der Registrierung erhalten hast.',
+ 'email_not_confirmed_resend' => 'Wenn Du die E-Mail nicht erhalten hast, kannst Du die Nachricht erneut anfordern. Fülle hierzu bitte das folgende Formular aus:',
+ 'email_not_confirmed_resend_button' => 'Bestätigungs-E-Mail erneut senden',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Du wurdest eingeladen :appName beizutreten!',
+ 'user_invite_email_greeting' => 'Ein Konto wurde für dich auf :appName erstellt.',
+ 'user_invite_email_text' => 'Klicke auf die Schaltfläche unten, um ein Passwort festzulegen und Zugriff zu erhalten:',
+ 'user_invite_email_action' => 'Konto-Passwort festlegen',
+ 'user_invite_page_welcome' => 'Willkommen bei :appName!',
+ 'user_invite_page_text' => 'Um die Anmeldung abzuschließen und Zugriff auf :appName zu bekommen, muss noch ein Passwort festgelegt werden. Dieses wird in Zukunft für die Anmeldung benötigt.',
+ 'user_invite_page_confirm_button' => 'Passwort bestätigen',
+ 'user_invite_success_login' => 'Passwort gesetzt, du solltest nun in der Lage sein, dich mit deinem Passwort an :appName anzumelden!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Multi-Faktor-Authentifizierung einrichten',
+ 'mfa_setup_desc' => 'Richte Multi-Faktor-Authentifizierung als zusätzliche Sicherheitsstufe für dein Benutzerkonto ein.',
+ 'mfa_setup_configured' => 'Bereits konfiguriert',
+ 'mfa_setup_reconfigure' => 'Umkonfigurieren',
+ 'mfa_setup_remove_confirmation' => 'Bist du sicher, dass du diese Multi-Faktor-Authentifizierungsmethode entfernen möchtest?',
+ 'mfa_setup_action' => 'Einrichtung',
+ 'mfa_backup_codes_usage_limit_warning' => 'Du hast weniger als 5 Backup-Codes übrig. Bitte erstelle und speichere einen neuen Satz, bevor Du keine Codes mehr hast, um zu verhindern, dass du von deinem Konto ausgesperrt wirst.',
+ 'mfa_option_totp_title' => 'Mobile App',
+ 'mfa_option_totp_desc' => 'Um Mehrfach-Faktor-Authentifizierung nutzen zu können, benötigst du eine mobile Anwendung, die TOTP unterstützt, wie Google Authenticator, Authy oder Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Backup Code',
+ 'mfa_option_backup_codes_desc' => 'Erzeugt eine Reihe von einmalig nutzbaren Backup-Codes, welche Du bei der Anmeldung eingibst, um deine Identität zu bestätigen. Achte darauf diese an einem sicheren Ort aufzubewahren.',
+ 'mfa_gen_confirm_and_enable' => 'Bestätigen und aktivieren',
+ 'mfa_gen_backup_codes_title' => 'Backup-Codes einrichten',
+ 'mfa_gen_backup_codes_desc' => 'Speichere die folgende Liste der Codes an einem sicheren Ort. Wenn du auf das System zugreifst, kannst du einen der Codes als zweiten Authentifizierungsmechanismus verwenden.',
+ 'mfa_gen_backup_codes_download' => 'Codes herunterladen',
+ 'mfa_gen_backup_codes_usage_warning' => 'Jeder Code kann nur einmal verwendet werden',
+ 'mfa_gen_totp_title' => 'Mobile App einrichten',
+ 'mfa_gen_totp_desc' => 'Um Mehrfach-Faktor-Authentifizierung nutzen zu können, benötigst du eine mobile Anwendung, die TOTP unterstützt, wie Google Authenticator, Authy oder Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Scanne den QR-Code unten mit deiner bevorzugten Authentifizierungs-App, um zu beginnen.',
+ 'mfa_gen_totp_verify_setup' => 'Setup überprüfen',
+ 'mfa_gen_totp_verify_setup_desc' => 'Überprüfe, dass alles funktioniert, indem du einen Code aus deiner Authentifizierungs-App in das Eingabefeld unten eingibst:',
+ 'mfa_gen_totp_provide_code_here' => 'Gib hier den von der App generierten Code ein',
+ 'mfa_verify_access' => 'Zugriff überprüfen',
+ 'mfa_verify_access_desc' => 'Dein Benutzerkonto erfordert, dass du deine Identität über eine zusätzliche Verifikationsebene bestätigst, bevor du Zugriff erhältst. Verifiziere diese mit einer deiner konfigurierten Methoden, um fortzufahren.',
+ 'mfa_verify_no_methods' => 'Keine Methoden konfiguriert',
+ 'mfa_verify_no_methods_desc' => 'Es konnten keine Multi-Faktor-Authentifizierungsmethoden für dein Konto gefunden werden. Du musst mindestens eine Methode einrichten, bevor du Zugriff erhältst.',
+ 'mfa_verify_use_totp' => 'Mit einer mobilen App verifizieren',
+ 'mfa_verify_use_backup_codes' => 'Mit einem Backup-Code verifizieren',
+ 'mfa_verify_backup_code' => 'Backup-Code',
+ 'mfa_verify_backup_code_desc' => 'Gib einen deiner verbleibenden Backup-Codes unten ein:',
+ 'mfa_verify_backup_code_enter_here' => 'Backup-Code hier eingeben',
+ 'mfa_verify_totp_desc' => 'Gib den Code ein, der mit deiner mobilen App generiert wurde:',
+ 'mfa_setup_login_notification' => 'Multi-Faktor-Methode konfiguriert. Bitte melde dich jetzt erneut mit der konfigurierten Methode an.',
+];
diff --git a/lang/de_informal/common.php b/lang/de_informal/common.php
new file mode 100644
index 00000000000..d07fa056fd5
--- /dev/null
+++ b/lang/de_informal/common.php
@@ -0,0 +1,115 @@
+ 'Abbrechen',
+ 'close' => 'Schließen',
+ 'confirm' => 'Bestätigen',
+ 'back' => 'Zurück',
+ 'save' => 'Speichern',
+ 'continue' => 'Weiter',
+ 'select' => 'Auswählen',
+ 'toggle_all' => 'Alle umschalten',
+ 'more' => 'Mehr',
+
+ // Form Labels
+ 'name' => 'Name',
+ 'description' => 'Beschreibung',
+ 'role' => 'Rolle',
+ 'cover_image' => 'Titelbild',
+ 'cover_image_description' => 'Dieses Bild sollte ungefähr 440 x 250 Pixel groß sein, kann jedoch je nach Bedarf flexibel skaliert und zugeschnitten werden, um es an die Benutzeroberfläche in verschiedenen Szenarien anzupassen, sodass die tatsächlichen Abmessungen für die Anzeige abweichen können.',
+
+ // Actions
+ 'actions' => 'Aktionen',
+ 'view' => 'Anzeigen',
+ 'view_all' => 'Alle anzeigen',
+ 'new' => 'Neu',
+ 'create' => 'Anlegen',
+ 'update' => 'Aktualisieren',
+ 'edit' => 'Bearbeiten',
+ 'archive' => 'Archivieren',
+ 'unarchive' => 'Nicht mehr archivieren',
+ 'sort' => 'Sortieren',
+ 'move' => 'Verschieben',
+ 'copy' => 'Kopieren',
+ 'reply' => 'Antworten',
+ 'delete' => 'Löschen',
+ 'delete_confirm' => 'Löschen bestätigen',
+ 'search' => 'Suchen',
+ 'search_clear' => 'Suche löschen',
+ 'reset' => 'Zurücksetzen',
+ 'remove' => 'Entfernen',
+ 'add' => 'Hinzufügen',
+ 'configure' => 'Konfigurieren',
+ 'manage' => 'Verwalten',
+ 'fullscreen' => 'Vollbild',
+ 'favourite' => 'Favoriten',
+ 'unfavourite' => 'Kein Favorit',
+ 'next' => 'Nächste',
+ 'previous' => 'Vorheriges',
+ 'filter_active' => 'Gesetzte Filter:',
+ 'filter_clear' => 'Filter löschen',
+ 'download' => 'Herunterladen',
+ 'open_in_tab' => 'In Tab öffnen',
+ 'open' => 'Öffnen',
+
+ // Sort Options
+ 'sort_options' => 'Sortieroptionen',
+ 'sort_direction_toggle' => 'Sortierreihenfolge umkehren',
+ 'sort_ascending' => 'Aufsteigend sortieren',
+ 'sort_descending' => 'Absteigend sortieren',
+ 'sort_name' => 'Name',
+ 'sort_default' => 'Standard',
+ 'sort_created_at' => 'Erstellungsdatum',
+ 'sort_updated_at' => 'Aktualisierungsdatum',
+
+ // Misc
+ 'deleted_user' => 'Gelöschter Benutzer',
+ 'no_activity' => 'Keine Aktivitäten zum Anzeigen',
+ 'no_items' => 'Keine Einträge gefunden.',
+ 'back_to_top' => 'nach oben',
+ 'skip_to_main_content' => 'Direkt zum Hauptinhalt',
+ 'toggle_details' => 'Details zeigen/verstecken',
+ 'toggle_thumbnails' => 'Thumbnails zeigen/verstecken',
+ 'details' => 'Details',
+ 'grid_view' => 'Gitteransicht',
+ 'list_view' => 'Listenansicht',
+ 'default' => 'Voreinstellung',
+ 'breadcrumb' => 'Brotkrumen',
+ 'status' => 'Status',
+ 'status_active' => 'Aktiv',
+ 'status_inactive' => 'Inaktiv',
+ 'never' => 'Niemals',
+ 'none' => 'Keine',
+
+ // Header
+ 'homepage' => 'Startseite',
+ 'header_menu_expand' => 'Header-Menü erweitern',
+ 'profile_menu' => 'Profilmenü',
+ 'view_profile' => 'Profil ansehen',
+ 'edit_profile' => 'Profil bearbeiten',
+ 'dark_mode' => 'Dunkler Modus',
+ 'light_mode' => 'Heller Modus',
+ 'global_search' => 'Globale Suche',
+
+ // Layout tabs
+ 'tab_info' => 'Info',
+ 'tab_info_label' => 'Tab: Sekundäre Informationen anzeigen',
+ 'tab_content' => 'Inhalt',
+ 'tab_content_label' => 'Tab: Hauptinhalt anzeigen',
+
+ // Email Content
+ 'email_action_help' => 'Sollte es beim Anklicken der Schaltfläche ":actionText" Probleme geben, öffne die folgende URL in Deinem Browser:',
+ 'email_rights' => 'Alle Rechte vorbehalten',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Datenschutzerklärung',
+ 'terms_of_service' => 'Allgemeine Geschäftsbedingungen',
+
+ // OpenSearch
+ 'opensearch_description' => 'Suche :appName',
+];
diff --git a/lang/de_informal/components.php b/lang/de_informal/components.php
new file mode 100644
index 00000000000..02047c60a46
--- /dev/null
+++ b/lang/de_informal/components.php
@@ -0,0 +1,46 @@
+ 'Bild auswählen',
+ 'image_list' => 'Bilderliste',
+ 'image_details' => 'Bilddetails',
+ 'image_upload' => 'Bild hochladen',
+ 'image_intro' => 'Hier kannst du die zuvor hochgeladenen Bilder auswählen und verwalten.',
+ 'image_intro_upload' => 'Lade ein neues Bild hoch, indem du eine Bilddatei in dieses Fenster ziehst oder auf die Schaltfläche "Bild hochladen" oben klickst.',
+ 'image_all' => 'Alle',
+ 'image_all_title' => 'Alle Bilder anzeigen',
+ 'image_book_title' => 'Zeige alle Bilder, die in dieses Buch hochgeladen wurden',
+ 'image_page_title' => 'Zeige alle Bilder, die auf diese Seite hochgeladen wurden',
+ 'image_search_hint' => 'Nach Bildnamen suchen',
+ 'image_uploaded' => 'Hochgeladen am :uploadedDate',
+ 'image_uploaded_by' => 'Hochgeladen von :userName',
+ 'image_uploaded_to' => 'Hochgeladen auf :pageLink',
+ 'image_updated' => 'Aktualisiert am :updateDate',
+ 'image_load_more' => 'Mehr',
+ 'image_image_name' => 'Bildname',
+ 'image_delete_used' => 'Dieses Bild wird auf den folgenden Seiten benutzt.',
+ 'image_delete_confirm_text' => 'Bist Du sicher, dass Du diese Seite löschen möchtest?',
+ 'image_select_image' => 'Bild auswählen',
+ 'image_dropzone' => 'Ziehe Bilder hierher oder klicke hier, um ein Bild auszuwählen',
+ 'image_dropzone_drop' => 'Ziehe Dateien hierher, um sie hochzuladen',
+ 'images_deleted' => 'Bilder gelöscht',
+ 'image_preview' => 'Bildvorschau',
+ 'image_upload_success' => 'Bild erfolgreich hochgeladen',
+ 'image_update_success' => 'Bilddetails erfolgreich aktualisiert',
+ 'image_delete_success' => 'Bild erfolgreich gelöscht',
+ 'image_replace' => 'Bild ersetzen',
+ 'image_replace_success' => 'Bild erfolgreich aktualisiert',
+ 'image_rebuild_thumbs' => 'Größenvariationen neu generieren',
+ 'image_rebuild_thumbs_success' => 'Bildgrößenvariationen erfolgreich neu erstellt!',
+
+ // Code Editor
+ 'code_editor' => 'Code editieren',
+ 'code_language' => 'Code Sprache',
+ 'code_content' => 'Code Inhalt',
+ 'code_session_history' => 'Sitzungsverlauf',
+ 'code_save' => 'Code speichern',
+];
diff --git a/lang/de_informal/editor.php b/lang/de_informal/editor.php
new file mode 100644
index 00000000000..30c38271cfa
--- /dev/null
+++ b/lang/de_informal/editor.php
@@ -0,0 +1,182 @@
+ 'Allgemein',
+ 'advanced' => 'Erweitert',
+ 'none' => 'Keine',
+ 'cancel' => 'Abbrechen',
+ 'save' => 'Speichern',
+ 'close' => 'Schließen',
+ 'apply' => 'Übernehmen',
+ 'undo' => 'Rückgängig machen',
+ 'redo' => 'Wiederholen',
+ 'left' => 'Links',
+ 'center' => 'Zentriert',
+ 'right' => 'Rechts',
+ 'top' => 'Oben',
+ 'middle' => 'Mittig',
+ 'bottom' => 'Unten',
+ 'width' => 'Breite',
+ 'height' => 'Höhe',
+ 'More' => 'Mehr',
+ 'select' => 'Auswählen...',
+
+ // Toolbar
+ 'formats' => 'Formate',
+ 'header_large' => 'Große Überschrift',
+ 'header_medium' => 'Mittlere Überschrift',
+ 'header_small' => 'Kleine Überschrift',
+ 'header_tiny' => 'Sehr kleine Überschrift',
+ 'paragraph' => 'Absatz',
+ 'blockquote' => 'Blockzitat',
+ 'inline_code' => 'Inline-Code',
+ 'callouts' => 'Anmerkungen',
+ 'callout_information' => 'Information',
+ 'callout_success' => 'Erfolg',
+ 'callout_warning' => 'Warnung',
+ 'callout_danger' => 'Gefahr',
+ 'bold' => 'Fett',
+ 'italic' => 'Kursiv',
+ 'underline' => 'Unterstrichen',
+ 'strikethrough' => 'Durchgestrichen',
+ 'superscript' => 'Hochgestellt',
+ 'subscript' => 'Tiefgestellt',
+ 'text_color' => 'Textfarbe',
+ 'highlight_color' => 'Markierungsfarbe',
+ 'custom_color' => 'Benutzerdefinierte Farbe',
+ 'remove_color' => 'Farbe entfernen',
+ 'background_color' => 'Hintergrundfarbe',
+ 'align_left' => 'Linksbündig',
+ 'align_center' => 'Zentriert',
+ 'align_right' => 'Rechtsbündig',
+ 'align_justify' => 'Blocksatz',
+ 'list_bullet' => 'Aufzählung',
+ 'list_numbered' => 'Nummerierte Aufzählung',
+ 'list_task' => 'Aufgabenliste',
+ 'indent_increase' => 'Einzug vergrößern',
+ 'indent_decrease' => 'Einzug verkleinern',
+ 'table' => 'Tabelle',
+ 'insert_image' => 'Bild einfügen',
+ 'insert_image_title' => 'Bild einfügen/bearbeiten',
+ 'insert_link' => 'Link einfügen/bearbeiten',
+ 'insert_link_title' => 'Link einfügen/bearbeiten',
+ 'insert_horizontal_line' => 'Horizontale Linie einfügen',
+ 'insert_code_block' => 'Codeblock einfügen',
+ 'edit_code_block' => 'Codeblock bearbeiten',
+ 'insert_drawing' => 'Zeichnung einfügen/bearbeiten',
+ 'drawing_manager' => 'Zeichnungsmanager',
+ 'insert_media' => 'Medien einfügen/bearbeiten',
+ 'insert_media_title' => 'Medien einfügen/bearbeiten',
+ 'clear_formatting' => 'Formatierung löschen',
+ 'source_code' => 'Quellcode',
+ 'source_code_title' => 'Quellcode',
+ 'fullscreen' => 'Vollbild',
+ 'image_options' => 'Bildoptionen',
+
+ // Tables
+ 'table_properties' => 'Tabelleneigenschaften',
+ 'table_properties_title' => 'Tabelleneigenschaften',
+ 'delete_table' => 'Tabelle löschen',
+ 'table_clear_formatting' => 'Tabellenformatierung entfernen',
+ 'resize_to_contents' => 'Größe an Inhalt anpassen',
+ 'row_header' => 'Zeilenüberschrift',
+ 'insert_row_before' => 'Zeile oberhalb einfügen',
+ 'insert_row_after' => 'Zeile unterhalb einfügen',
+ 'delete_row' => 'Zeile löschen',
+ 'insert_column_before' => 'Spalte davor einfügen',
+ 'insert_column_after' => 'Spalte danach einfügen',
+ 'delete_column' => 'Spalte löschen',
+ 'table_cell' => 'Zelle',
+ 'table_row' => 'Zeile',
+ 'table_column' => 'Spalte',
+ 'cell_properties' => 'Zelleneigenschaften',
+ 'cell_properties_title' => 'Zelleneigenschaften',
+ 'cell_type' => 'Zellentyp',
+ 'cell_type_cell' => 'Zelle',
+ 'cell_scope' => 'Bereich',
+ 'cell_type_header' => 'Überschriftszelle',
+ 'merge_cells' => 'Zellen verbinden',
+ 'split_cell' => 'Zellen teilen',
+ 'table_row_group' => 'Zeilengruppe',
+ 'table_column_group' => 'Spaltengruppe',
+ 'horizontal_align' => 'Horizontal ausrichten',
+ 'vertical_align' => 'Vertikal ausrichten',
+ 'border_width' => 'Rahmenbreite',
+ 'border_style' => 'Rahmenstil',
+ 'border_color' => 'Rahmenfarbe',
+ 'row_properties' => 'Zeileneigenschaften',
+ 'row_properties_title' => 'Zeileneigenschaften',
+ 'cut_row' => 'Zeile ausschneiden',
+ 'copy_row' => 'Zeile kopieren',
+ 'paste_row_before' => 'Zeile davor einfügen',
+ 'paste_row_after' => 'Zeile danach einfügen',
+ 'row_type' => 'Zeilentyp',
+ 'row_type_header' => 'Kopfzeile',
+ 'row_type_body' => 'Hauptteil',
+ 'row_type_footer' => 'Fußzeile',
+ 'alignment' => 'Ausrichtung',
+ 'cut_column' => 'Spalte ausschneiden',
+ 'copy_column' => 'Spalte kopieren',
+ 'paste_column_before' => 'Spalte davor einfügen',
+ 'paste_column_after' => 'Spalte danach einfügen',
+ 'cell_padding' => 'Zellenabstand',
+ 'cell_spacing' => 'Zellenaußenabstand',
+ 'caption' => 'Überschrift',
+ 'show_caption' => 'Überschrift anzeigen',
+ 'constrain' => 'Proportionen festsetzen',
+ 'cell_border_solid' => 'Voll',
+ 'cell_border_dotted' => 'Gepunktet',
+ 'cell_border_dashed' => 'Gestrichelt',
+ 'cell_border_double' => 'Doppelt',
+ 'cell_border_groove' => 'Rille',
+ 'cell_border_ridge' => 'Erhaben',
+ 'cell_border_inset' => 'Vertiefte Fläche',
+ 'cell_border_outset' => 'Erhabene Fläche',
+ 'cell_border_none' => 'Keiner',
+ 'cell_border_hidden' => 'Versteckt',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Quelle',
+ 'alt_desc' => 'Alternative Beschreibung',
+ 'embed' => 'Einbetten',
+ 'paste_embed' => 'Füge deinen Einbettungscode unten ein:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Anzuzeigender Text',
+ 'title' => 'Titel',
+ 'browse_links' => 'Links durchsuchen',
+ 'open_link' => 'Link öffnen',
+ 'open_link_in' => 'Link öffnen in...',
+ 'open_link_current' => 'Aktuellem Fenster',
+ 'open_link_new' => 'Neuem Fenster',
+ 'remove_link' => 'Link entfernen',
+ 'insert_collapsible' => 'Einklappbaren Block einfügen',
+ 'collapsible_unwrap' => 'Entfernen',
+ 'edit_label' => 'Beschriftung bearbeiten',
+ 'toggle_open_closed' => 'Öffnen/Schließen',
+ 'collapsible_edit' => 'Einklappbaren Block bearbeiten',
+ 'toggle_label' => 'Beschriftung',
+
+ // About view
+ 'about' => 'Über den Editor',
+ 'about_title' => 'Über den WYSIWYG-Editor',
+ 'editor_license' => 'Editorlizenz & Copyright',
+ 'editor_lexical_license' => 'Dieser Editor wurde mithilfe von :lexicalLink erstellt, der unter der MIT-Lizenz bereitgestellt wird.',
+ 'editor_lexical_license_link' => 'Vollständige Lizenzdetails findest du hier.',
+ 'editor_tiny_license' => 'Dieser Editor wurde mit :tinyLink erstellt, das unter der MIT-Lizenz zur Verfügung gestellt wird.',
+ 'editor_tiny_license_link' => 'Die Copyright- und Lizenzdetails von TinyMCE findest du hier.',
+ 'save_continue' => 'Seite speichern & fortfahren',
+ 'callouts_cycle' => '(Drücke weiter, um durch die Typen zu schalten)',
+ 'link_selector' => 'Inhalt verlinken',
+ 'shortcuts' => 'Kürzel',
+ 'shortcut' => 'Kürzel',
+ 'shortcuts_intro' => 'Die folgenden Kürzel sind im Editor verfügbar:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Beschreibung',
+];
diff --git a/lang/de_informal/entities.php b/lang/de_informal/entities.php
new file mode 100644
index 00000000000..a3e6e5f369c
--- /dev/null
+++ b/lang/de_informal/entities.php
@@ -0,0 +1,476 @@
+ 'Kürzlich angelegt',
+ 'recently_created_pages' => 'Kürzlich angelegte Seiten',
+ 'recently_updated_pages' => 'Kürzlich aktualisierte Seiten',
+ 'recently_created_chapters' => 'Kürzlich angelegte Kapitel',
+ 'recently_created_books' => 'Kürzlich angelegte Bücher',
+ 'recently_created_shelves' => 'Kürzlich angelegte Regale',
+ 'recently_update' => 'Kürzlich aktualisiert',
+ 'recently_viewed' => 'Kürzlich angesehen',
+ 'recent_activity' => 'Kürzliche Aktivität',
+ 'create_now' => 'Jetzt anlegen',
+ 'revisions' => 'Versionen',
+ 'meta_revision' => 'Version #:revisionCount',
+ 'meta_created' => 'Erstellt: :timeLength',
+ 'meta_created_name' => 'Erstellt: :timeLength von :user',
+ 'meta_updated' => 'Zuletzt aktualisiert: :timeLength',
+ 'meta_updated_name' => 'Zuletzt aktualisiert: :timeLength von :user',
+ 'meta_owned_name' => 'Im Besitz von :user',
+ 'meta_reference_count' => 'Referenziert von :count Element|Referenziert von :count Elementen',
+ 'entity_select' => 'Eintrag auswählen',
+ 'entity_select_lack_permission' => 'Du hast nicht die benötigte Berechtigung, um dieses Element auszuwählen',
+ 'images' => 'Bilder',
+ 'my_recent_drafts' => 'Meine kürzlichen Entwürfe',
+ 'my_recently_viewed' => 'Kürzlich von mir angesehen',
+ '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.',
+ 'export' => 'Exportieren',
+ 'export_html' => 'HTML-Datei',
+ 'export_pdf' => 'PDF-Datei',
+ 'export_text' => 'Textdatei',
+ 'export_md' => 'Markdown-Datei',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Standard-Seitenvorlage',
+ 'default_template_explain' => 'Bestimme eine Seitenvorlage, die als Standardinhalt für alle Seiten verwendet wird, die innerhalb dieses Elements erstellt werden. Beachte, dass dies nur dann verwendet wird, wenn der Ersteller der Seite Lesezugriff auf die ausgewählte Vorlagen-Seite hat.',
+ 'default_template_select' => 'Wähle eine Seitenvorlage',
+ 'import' => 'Importieren',
+ 'import_validate' => 'Import validieren',
+ 'import_desc' => 'Importiere Bücher, Kapitel & Seiten mit einem ZIP-Export von der gleichen oder einer anderen Instanz. Wähle eine ZIP-Datei, um fortzufahren. Nachdem die Datei hochgeladen und bestätigt wurde, kannst Du den Import in der nächsten Ansicht konfigurieren und bestätigen.',
+ 'import_zip_select' => 'ZIP-Datei zum Hochladen auswählen',
+ 'import_zip_validation_errors' => 'Fehler bei der Validierung der angegebenen ZIP-Datei:',
+ 'import_pending' => 'Ausstehende Importe',
+ 'import_pending_none' => 'Es wurden keine Importe gestartet.',
+ 'import_continue' => 'Import fortsetzen',
+ 'import_continue_desc' => 'Überprüfe den Inhalt, der aus der hochgeladenen ZIP-Datei importiert werden soll. Führe den Import aus, um dessen Inhalt zu diesem System hinzuzufügen. Die hochgeladene ZIP-Importdatei wird bei erfolgreichem Import automatisch gelöscht.',
+ 'import_details' => 'Importdetails',
+ 'import_run' => 'Import ausführen',
+ 'import_size' => 'Größe des importierten ZIP: :size',
+ 'import_uploaded_at' => 'Hochgeladen :relativeTime',
+ 'import_uploaded_by' => 'Hochgeladen von',
+ 'import_location' => 'Import Zielort',
+ 'import_location_desc' => 'Wähle einen Zielort für deinen importierten Inhalt. Du benötigst die entsprechenden Berechtigungen, um innerhalb des gewünschten Zielortes Inhalte zu erstellen.',
+ 'import_delete_confirm' => 'Bist Du sicher, dass Du diesen Import löschen möchtest?',
+ 'import_delete_desc' => 'Dies löscht die hochgeladene ZIP-Datei und kann nicht rückgängig gemacht werden.',
+ 'import_errors' => 'Importfehler',
+ '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' => 'Navigiere in Büchern',
+ 'breadcrumb_siblings_for_bookshelf' => 'Navigate siblings for shelf',
+
+ // Permissions and restrictions
+ 'permissions' => 'Berechtigungen',
+ 'permissions_desc' => 'Lege hier Berechtigungen fest, um die Standardberechtigungen von Benutzerrollen zu überschreiben.',
+ 'permissions_book_cascade' => 'In Büchern festgelegte Berechtigungen werden automatisch in untergeordnete Kapitel und Seiten kaskadiert, es sei denn, sie haben eigene Berechtigungen definiert.',
+ 'permissions_chapter_cascade' => 'In Kapiteln festgelegte Berechtigungen werden automatisch in untergeordnete Seiten kaskadiert, es sei denn, sie haben eigene Berechtigungen definiert.',
+ 'permissions_save' => 'Berechtigungen speichern',
+ 'permissions_owner' => 'Besitzer',
+ 'permissions_role_everyone_else' => 'Alle anderen',
+ 'permissions_role_everyone_else_desc' => 'Berechtigungen für alle Rollen setzen, die nicht explizit überschrieben wurden.',
+ 'permissions_role_override' => 'Berechtigungen für Rolle überschreiben',
+ 'permissions_inherit_defaults' => 'Standardeinstellungen vererben',
+
+ // Search
+ 'search_results' => 'Suchergebnisse',
+ 'search_total_results_found' => ':count Ergebnis gefunden|:count Ergebnisse gesamt',
+ 'search_clear' => 'Filter löschen',
+ 'search_no_pages' => 'Keine Seiten gefunden',
+ 'search_for_term' => 'Nach :term suchen',
+ 'search_more' => 'Mehr Ergebnisse',
+ 'search_advanced' => 'Erweiterte Suche',
+ 'search_terms' => 'Suchbegriffe',
+ 'search_content_type' => 'Inhaltstyp',
+ 'search_exact_matches' => 'Exakte Treffer',
+ 'search_tags' => 'Schlagwort-Suchen',
+ 'search_options' => 'Optionen',
+ 'search_viewed_by_me' => 'Schon von mir angesehen',
+ 'search_not_viewed_by_me' => 'Noch nicht von mir angesehen',
+ 'search_permissions_set' => 'Berechtigungen gesetzt',
+ 'search_created_by_me' => 'Von mir erstellt',
+ 'search_updated_by_me' => 'Von mir aktualisiert',
+ 'search_owned_by_me' => 'Besitzt von mir',
+ 'search_date_options' => 'Datumsoptionen',
+ 'search_updated_before' => 'Aktualisiert vor',
+ 'search_updated_after' => 'Aktualisiert nach',
+ 'search_created_before' => 'Erstellt vor',
+ 'search_created_after' => 'Erstellt nach',
+ 'search_set_date' => 'Datum auswählen',
+ 'search_update' => 'Suche aktualisieren',
+
+ // Shelves
+ 'shelf' => 'Regal',
+ 'shelves' => 'Regale',
+ 'x_shelves' => ':count Regal|:count Regale',
+ 'shelves_empty' => 'Es wurden noch keine Regale angelegt',
+ 'shelves_create' => 'Erzeuge ein Regal',
+ 'shelves_popular' => 'Beliebte Regale',
+ 'shelves_new' => 'Kürzlich erstellte Regale',
+ 'shelves_new_action' => 'Neues Regal',
+ 'shelves_popular_empty' => 'Die beliebtesten Regale werden hier angezeigt.',
+ 'shelves_new_empty' => 'Die neusten Regale werden hier angezeigt.',
+ 'shelves_save' => 'Regal speichern',
+ 'shelves_books' => 'Bücher in diesem Regal',
+ 'shelves_add_books' => 'Buch zu diesem Regal hinzufügen',
+ 'shelves_drag_books' => 'Ziehe die Bücher nach unten, um sie zu diesem Regal hinzuzufügen',
+ 'shelves_empty_contents' => 'Diesem Regal sind keine Bücher zugewiesen',
+ 'shelves_edit_and_assign' => 'Regal bearbeiten um Bücher hinzuzufügen',
+ 'shelves_edit_named' => 'Regal :name bearbeiten',
+ 'shelves_edit' => 'Regal bearbeiten',
+ 'shelves_delete' => 'Regal löschen',
+ 'shelves_delete_named' => 'Regal :name löschen',
+ 'shelves_delete_explain' => "Dadurch wird das Regal mit dem Namen ':name' gelöscht. Die darin enthaltenen Bücher werden nicht gelöscht.",
+ 'shelves_delete_confirmation' => 'Bist du dir sicher, dass du dieses Regal löschen möchtest?',
+ 'shelves_permissions' => 'Regalberechtigungen',
+ 'shelves_permissions_updated' => 'Regalberechtigungen aktualisiert',
+ 'shelves_permissions_active' => 'Regalberechtigungen aktiv',
+ 'shelves_permissions_cascade_warning' => 'Berechtigungen für Regale werden nicht automatisch auf die enthaltenen Bücher übertragen. Das liegt daran, dass ein Buch in mehreren Regalen vorhanden sein kann. Berechtigungen können jedoch auf untergeordnete Bücher kopiert werden, indem du die unten stehende Option verwendest.',
+ 'shelves_permissions_create' => '"Regal erstellen"-Berechtigungen werden nur zum Kopieren von Berechtigungen für untergeordnete Bücher mit der folgenden Aktion verwendet. Sie kontrollieren nicht die Fähigkeit, Bücher zu erstellen.',
+ 'shelves_copy_permissions_to_books' => 'Kopiere die Berechtigungen zum Buch',
+ 'shelves_copy_permissions' => 'Berechtigungen kopieren',
+ 'shelves_copy_permissions_explain' => 'Dadurch werden die aktuellen Berechtigungseinstellungen dieses Regals auf alle darin enthaltenen Bücher angewendet. Vergewissere dich vor der Aktivierung, dass alle Änderungen an den Berechtigungen für dieses Regal gespeichert wurden.',
+ 'shelves_copy_permission_success' => 'Regalberechtigungen auf :count Bücher kopiert',
+
+ // Books
+ 'book' => 'Buch',
+ 'books' => 'Bücher',
+ 'x_books' => ':count Buch|:count Bücher',
+ 'books_empty' => 'Es wurden noch keine Bücher angelegt',
+ 'books_popular' => 'Beliebte Bücher',
+ 'books_recent' => 'Kürzlich angesehene Bücher',
+ 'books_new' => 'Neue Bücher',
+ 'books_new_action' => 'Neues Buch',
+ 'books_popular_empty' => 'Die beliebtesten Bücher werden hier angezeigt.',
+ 'books_new_empty' => 'Die neusten Bücher werden hier angezeigt.',
+ 'books_create' => 'Neues Buch erstellen',
+ 'books_delete' => 'Buch löschen',
+ 'books_delete_named' => 'Buch ":bookName" löschen',
+ 'books_delete_explain' => 'Das Buch ":bookName" wird gelöscht und alle zugehörigen Kapitel und Seiten entfernt.',
+ 'books_delete_confirmation' => 'Bist Du sicher, dass du dieses Buch löschen möchtest?',
+ 'books_edit' => 'Buch bearbeiten',
+ 'books_edit_named' => 'Buch ":bookName" bearbeiten',
+ 'books_form_book_name' => 'Name des Buches',
+ 'books_save' => 'Buch speichern',
+ 'books_permissions' => 'Buch-Berechtigungen',
+ 'books_permissions_updated' => 'Buch-Berechtigungen aktualisiert',
+ 'books_empty_contents' => 'Es sind noch keine Seiten oder Kapitel zu diesem Buch hinzugefügt worden.',
+ 'books_empty_create_page' => 'Neue Seite anlegen',
+ 'books_empty_sort_current_book' => 'Aktuelles Buch sortieren',
+ 'books_empty_add_chapter' => 'Neues Kapitel hinzufügen',
+ 'books_permissions_active' => 'Buch-Berechtigungen aktiv',
+ 'books_search_this' => 'Dieses Buch durchsuchen',
+ 'books_navigation' => 'Buchnavigation',
+ 'books_sort' => 'Buchinhalte sortieren',
+ 'books_sort_desc' => 'Kapitel und Seiten innerhalb eines Buches verschieben, um dessen Inhalt zu reorganisieren. Andere Bücher können hinzugefügt werden, was das Verschieben von Kapiteln und Seiten zwischen Büchern erleichtert. Optional kann eine automatische Sortierregel erstellt werden, um den Inhalt dieses Buches nach Änderungen automatisch zu sortieren.',
+ 'books_sort_auto_sort' => 'Auto-Sortieroption',
+ 'books_sort_auto_sort_active' => 'Automatische Sortierung aktiv: :sortName',
+ 'books_sort_named' => 'Buch ":bookName" sortieren',
+ 'books_sort_name' => 'Sortieren nach Namen',
+ 'books_sort_created' => 'Sortieren nach Erstellungsdatum',
+ 'books_sort_updated' => 'Sortieren nach Aktualisierungsdatum',
+ 'books_sort_chapters_first' => 'Kapitel zuerst',
+ 'books_sort_chapters_last' => 'Kapitel zuletzt',
+ 'books_sort_show_other' => 'Andere Bücher anzeigen',
+ 'books_sort_save' => 'Neue Reihenfolge speichern',
+ 'books_sort_show_other_desc' => 'Füge hier weitere Bücher hinzu, um sie in die Sortierung einzubinden und ermögliche so eine einfache und übergreifende Neuordnung.',
+ 'books_sort_move_up' => 'Nach oben bewegen',
+ 'books_sort_move_down' => 'Nach unten bewegen',
+ 'books_sort_move_prev_book' => 'Zum vorherigen Buch verschieben',
+ 'books_sort_move_next_book' => 'Zum nächsten Buch verschieben',
+ 'books_sort_move_prev_chapter' => 'Ins vorherige Kapitel verschieben',
+ 'books_sort_move_next_chapter' => 'Ins nächste Kapitel verschieben',
+ 'books_sort_move_book_start' => 'Zum Buchbeginn verschieben',
+ 'books_sort_move_book_end' => 'Zum Buchende verschieben',
+ 'books_sort_move_before_chapter' => 'Vor Kapitel verschieben',
+ 'books_sort_move_after_chapter' => 'Nach Kapitel verschieben',
+ 'books_copy' => 'Buch kopieren',
+ 'books_copy_success' => 'Buch erfolgreich kopiert',
+
+ // Chapters
+ 'chapter' => 'Kapitel',
+ 'chapters' => 'Kapitel',
+ 'x_chapters' => ':count Kapitel',
+ 'chapters_popular' => 'Beliebte Kapitel',
+ 'chapters_new' => 'Neues Kapitel',
+ 'chapters_create' => 'Neues Kapitel anlegen',
+ 'chapters_delete' => 'Kapitel entfernen',
+ 'chapters_delete_named' => 'Kapitel ":chapterName" entfernen',
+ 'chapters_delete_explain' => 'Hiermit löscht du das Kapitel mit dem Namen \':chapterName\'. Alle Seiten, die innerhalb dieses Kapitels existieren, werden ebenfalls gelöscht.',
+ 'chapters_delete_confirm' => 'Bist du sicher, dass du dieses Kapitel löschen möchtest?',
+ 'chapters_edit' => 'Kapitel bearbeiten',
+ 'chapters_edit_named' => 'Kapitel ":chapterName" bearbeiten',
+ 'chapters_save' => 'Kapitel speichern',
+ 'chapters_move' => 'Kapitel verschieben',
+ 'chapters_move_named' => 'Kapitel ":chapterName" verschieben',
+ 'chapters_copy' => 'Kapitel kopieren',
+ 'chapters_copy_success' => 'Kapitel erfolgreich kopiert',
+ 'chapters_permissions' => 'Kapitel-Berechtigungen',
+ 'chapters_empty' => 'Aktuell sind keine Kapitel diesem Buch hinzugefügt worden.',
+ 'chapters_permissions_active' => 'Kapitel-Berechtigungen aktiv',
+ 'chapters_permissions_success' => 'Kapitel-Berechtigungenen aktualisisert',
+ 'chapters_search_this' => 'Dieses Kapitel durchsuchen',
+ 'chapter_sort_book' => 'Buch sortieren',
+
+ // Pages
+ 'page' => 'Seite',
+ 'pages' => 'Seiten',
+ 'x_pages' => ':count Seite|:count Seiten',
+ 'pages_popular' => 'Beliebte Seiten',
+ 'pages_new' => 'Neue Seite',
+ 'pages_attachments' => 'Anhänge',
+ 'pages_navigation' => 'Seitennavigation',
+ 'pages_delete' => 'Seite löschen',
+ 'pages_delete_named' => 'Seite ":pageName" löschen',
+ 'pages_delete_draft_named' => 'Seitenentwurf von ":pageName" löschen',
+ 'pages_delete_draft' => 'Seitenentwurf löschen',
+ 'pages_delete_success' => 'Seite gelöscht',
+ 'pages_delete_draft_success' => 'Seitenentwurf gelöscht',
+ 'pages_delete_warning_template' => 'Diese Seite wird aktiv als Standardvorlage für Bücher oder Kapitel verwendet. In diesen Büchern oder Kapiteln wird nach dem Löschen dieser Seite keine Standardvorlage mehr zugewiesen sein.',
+ 'pages_delete_confirm' => 'Bist du sicher, dass du diese Seite löschen möchtest?',
+ 'pages_delete_draft_confirm' => 'Bist du sicher, dass du diesen Seitenentwurf löschen möchtest?',
+ 'pages_editing_named' => 'Seite ":pageName" bearbeiten',
+ 'pages_edit_draft_options' => 'Entwurfsoptionen',
+ 'pages_edit_save_draft' => 'Entwurf speichern',
+ 'pages_edit_draft' => 'Seitenentwurf bearbeiten',
+ 'pages_editing_draft' => 'Seitenentwurf bearbeiten',
+ 'pages_editing_page' => 'Seite bearbeiten',
+ 'pages_edit_draft_save_at' => 'Entwurf gesichert um ',
+ 'pages_edit_delete_draft' => 'Entwurf löschen',
+ 'pages_edit_delete_draft_confirm' => 'Bist du sicher, dass du deinen Entwurf löschen möchtest? Alle deine Änderungen seit dem letzten vollständigen Speichern gehen verloren und der Editor wird mit dem letzten Speicherzustand aktualisiert, der kein Entwurf ist.',
+ 'pages_edit_discard_draft' => 'Entwurf verwerfen',
+ 'pages_edit_switch_to_markdown' => 'Zum Markdown-Editor wechseln',
+ 'pages_edit_switch_to_markdown_clean' => '(Gesäuberter Inhalt)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stabiler Inhalt)',
+ 'pages_edit_switch_to_wysiwyg' => 'Zum WYSIWYG-Editor wechseln',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Zum neuen WYSIWYG wechseln',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(Im Beta-Test)',
+ 'pages_edit_set_changelog' => 'Änderungsprotokoll hinzufügen',
+ 'pages_edit_enter_changelog_desc' => 'Bitte gib eine kurze Zusammenfassung deiner Änderungen ein',
+ 'pages_edit_enter_changelog' => 'Änderungsprotokoll eingeben',
+ 'pages_editor_switch_title' => 'Editor wechseln',
+ 'pages_editor_switch_are_you_sure' => 'Bist du dir sicher, dass du den Editor für diese Seite ändern willst?',
+ 'pages_editor_switch_consider_following' => 'Beachte beim Wechsel des Editors folgendes:',
+ 'pages_editor_switch_consideration_a' => 'Nach dem Speichern wird der neue Editor von allen zukünftigen Bearbeitern verwendet, auch von denen, die den Editortyp nicht selbst ändern können.',
+ 'pages_editor_switch_consideration_b' => 'Dies kann unter Umständen zu einem Verlust von Details und Syntax führen.',
+ 'pages_editor_switch_consideration_c' => 'Tag- oder Changelog-Änderungen, die seit dem letzten Speichern vorgenommen wurden, bleiben bei dieser Änderung nicht erhalten.',
+ 'pages_save' => 'Seite speichern',
+ 'pages_title' => 'Seitentitel',
+ 'pages_name' => 'Seitenname',
+ 'pages_md_editor' => 'Redakteur',
+ 'pages_md_preview' => 'Vorschau',
+ 'pages_md_insert_image' => 'Bild einfügen',
+ 'pages_md_insert_link' => 'Link zu einem Objekt einfügen',
+ 'pages_md_insert_drawing' => 'Zeichnung einfügen',
+ 'pages_md_show_preview' => 'Vorschau anzeigen',
+ 'pages_md_sync_scroll' => 'Vorschau synchronisieren',
+ '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',
+ 'pages_move' => 'Seite verschieben',
+ 'pages_copy' => 'Seite kopieren',
+ 'pages_copy_desination' => 'Ziel',
+ 'pages_copy_success' => 'Seite erfolgreich kopiert',
+ 'pages_permissions' => 'Seiten Berechtigungen',
+ 'pages_permissions_success' => 'Seiten Berechtigungen aktualisiert',
+ 'pages_revision' => 'Version',
+ 'pages_revisions' => 'Seitenversionen',
+ 'pages_revisions_desc' => 'Alle vorherhigen Revisionen dieser Seite sind unten aufgelistet. Du kannst zurückschauen, vergleichen und alte Seitenversionen wiederherstellen, wenn die Berechtigungen dies erlauben. Der vollständige Verlauf der Seite kann hier möglicherweise nicht vollständig wiedergegeben werden, da je nach Systemkonfiguration alte Revisionen automatisch gelöscht werden könnten.',
+ 'pages_revisions_named' => 'Seitenversionen von ":pageName"',
+ 'pages_revision_named' => 'Seitenversion von ":pageName"',
+ 'pages_revision_restored_from' => 'Wiederhergestellt von #:id; :summary',
+ 'pages_revisions_created_by' => 'Erstellt von',
+ 'pages_revisions_date' => 'Versionsdatum',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revisionsnummer',
+ 'pages_revisions_numbered' => 'Revision #:id',
+ 'pages_revisions_numbered_changes' => 'Revision #:id Änderungen',
+ 'pages_revisions_editor' => 'Editortyp',
+ 'pages_revisions_changelog' => 'Änderungsprotokoll',
+ 'pages_revisions_changes' => 'Änderungen',
+ 'pages_revisions_current' => 'Aktuelle Version',
+ 'pages_revisions_preview' => 'Vorschau',
+ 'pages_revisions_restore' => 'Wiederherstellen',
+ 'pages_revisions_none' => 'Diese Seite hat keine älteren Versionen.',
+ 'pages_copy_link' => 'Link kopieren',
+ 'pages_edit_content_link' => 'Im Editor zum Abschnitt springen',
+ 'pages_pointer_enter_mode' => 'Abschnittsauswahlmodus aktivieren',
+ 'pages_pointer_label' => 'Abschnittsoptionen der Seite',
+ 'pages_pointer_permalink' => 'Seitenabschnitt-Permalink',
+ 'pages_pointer_include_tag' => 'Seitenabschnitts-Include-Tag',
+ 'pages_pointer_toggle_link' => 'Permalink-Modus, Drücken, um Include-Tag anzuzeigen',
+ 'pages_pointer_toggle_include' => 'Include-Tag-Modus, Drücken, um Permalink anzuzeigen',
+ 'pages_permissions_active' => 'Seiten-Berechtigungen aktiv',
+ 'pages_initial_revision' => 'Erste Veröffentlichung',
+ 'pages_references_update_revision' => 'Automatische Systemaktualisierung interner Links',
+ 'pages_initial_name' => 'Neue Seite',
+ 'pages_editing_draft_notification' => 'Du bearbeitest momenten einen Entwurf, der zuletzt :timeDiff gespeichert wurde.',
+ 'pages_draft_edited_notification' => 'Diese Seite wurde seit diesem Zeitpunkt verändert. Wir empfehlen diesen Entwurf zu verwerfen.',
+ 'pages_draft_page_changed_since_creation' => 'Diese Seite wurde seit der Erstellung dieses Entwurfs aktualisiert. Es wird empfohlen, diesen Entwurf zu verwerfen oder darauf zu achten, dass keine Seitenänderungen überschrieben werden.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count Benutzer bearbeiten derzeit diese Seite.',
+ 'start_b' => ':userName bearbeitet jetzt diese Seite.',
+ 'time_a' => 'seit die Seiten zuletzt aktualisiert wurden.',
+ 'time_b' => 'in den letzten :minCount Minuten',
+ 'message' => ':start :time. Achte darauf, keine Änderungen von anderen Benutzern zu überschreiben!',
+ ],
+ 'pages_draft_discarded' => 'Entwurf verworfen! Der aktuelle Seiteninhalt wurde geladen',
+ 'pages_draft_deleted' => 'Entwurf gelöscht. Der aktuelle Seiteninhalt wurde geladen',
+ 'pages_specific' => 'Spezifische Seite',
+ 'pages_is_template' => 'Seitenvorlage',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Seitenleiste umschalten',
+ 'page_tags' => 'Seiten-Schlagwörter',
+ 'chapter_tags' => 'Kapitel-Schlagwörter',
+ 'book_tags' => 'Buch-Schlagwörter',
+ 'shelf_tags' => 'Regal-Schlagwörter',
+ 'tag' => 'Schlagwort',
+ 'tags' => 'Schlagwörter',
+ 'tags_index_desc' => 'Tags können auf Inhalte im System angewendet werden, um eine flexible Form der Kategorisierung anzuwenden. Tags können sowohl einen Schlüssel als auch einen Wert haben, wobei der Wert optional ist. Einmal angewendet, können Inhalte unter Verwendung des Tag-Namens und Wertes abgefragt werden.',
+ 'tag_name' => 'Schlagwortname',
+ 'tag_value' => 'Inhalt (Optional)',
+ 'tags_explain' => "Füge Schlagwörter hinzu, um ihren Inhalt zu kategorisieren.\nDu kannst einen erklärenden Inhalt hinzufügen, um eine genauere Unterteilung vorzunehmen.",
+ 'tags_add' => 'Weiteres Schlagwort hinzufügen',
+ 'tags_remove' => 'Diesen Tag entfernen',
+ 'tags_usages' => 'Gesamte Tagnutzung',
+ 'tags_assigned_pages' => 'Seiten zugewiesen',
+ 'tags_assigned_chapters' => 'Kapiteln zugewiesen',
+ 'tags_assigned_books' => 'Büchern zugewiesen',
+ 'tags_assigned_shelves' => 'Regalen zugewiesen',
+ 'tags_x_unique_values' => ':count eindeutige Werte',
+ 'tags_all_values' => 'Alle Werte',
+ 'tags_view_tags' => 'Tags anzeigen',
+ 'tags_view_existing_tags' => 'Vorhandene Tags anzeigen',
+ 'tags_list_empty_hint' => 'Tags können über die Seitenleiste des Seiteneditors oder bei der Bearbeitung der Details eines Buches, Kapitels oder Regals vergeben werden.',
+ 'attachments' => 'Anhänge',
+ 'attachments_explain' => 'Du kannst auf deiner Seite Dateien hochladen oder Links hinzufügen. Diese werden in der Seitenleiste angezeigt.',
+ 'attachments_explain_instant_save' => 'Änderungen werden direkt gespeichert.',
+ 'attachments_upload' => 'Datei hochladen',
+ 'attachments_link' => 'Link hinzufügen',
+ 'attachments_upload_drop' => 'Alternativ kannst du eine Datei per Drag & Drop hier als Anhang hochladen.',
+ 'attachments_set_link' => 'Link setzen',
+ 'attachments_delete' => 'Bist du sicher, dass du diesen Anhang löschen möchtest?',
+ 'attachments_dropzone' => 'Ziehe Dateien hierher, um sie hochzuladen',
+ 'attachments_no_files' => 'Es wurden bisher keine Dateien hochgeladen.',
+ 'attachments_explain_link' => 'Wenn du keine Datei hochladen möchtest, kannst du stattdessen einen Link hinzufügen. Dieser Link kann auf eine andere Seite oder eine Datei im Internet verweisen.',
+ 'attachments_link_name' => 'Link-Name',
+ 'attachment_link' => 'Link zum Anhang',
+ 'attachments_link_url' => 'Link zu einer Datei',
+ 'attachments_link_url_hint' => 'URL einer Seite oder Datei',
+ 'attach' => 'Hinzufügen',
+ 'attachments_insert_link' => 'Anhangslink zur Seite hinzufügen',
+ 'attachments_edit_file' => 'Datei bearbeiten',
+ 'attachments_edit_file_name' => 'Dateiname',
+ 'attachments_edit_drop_upload' => 'Ziehe Dateien hierher, um diese hochzuladen und zu überschreiben',
+ 'attachments_order_updated' => 'Reihenfolge der Anhänge aktualisiert',
+ 'attachments_updated_success' => 'Anhangdetails aktualisiert',
+ 'attachments_deleted' => 'Anhang gelöscht',
+ 'attachments_file_uploaded' => 'Datei erfolgreich hochgeladen',
+ 'attachments_file_updated' => 'Datei erfolgreich aktualisiert',
+ 'attachments_link_attached' => 'Link erfolgreich der Seite hinzugefügt',
+ 'templates' => 'Vorlagen',
+ 'templates_set_as_template' => 'Seite ist eine Vorlage',
+ 'templates_explain_set_as_template' => 'Du kannst diese Seite als Vorlage festlegen, damit deren Inhalt beim Erstellen anderer Seiten verwendet werden kann. Andere Benutzer können diese Vorlage verwenden, wenn diese die Zugriffsrechte für diese Seite haben.',
+ 'templates_replace_content' => 'Seiteninhalt ersetzen',
+ 'templates_append_content' => 'An Seiteninhalt anhängen',
+ 'templates_prepend_content' => 'Seiteninhalt voranstellen',
+
+ // Profile View
+ 'profile_user_for_x' => 'Benutzer seit :time',
+ 'profile_created_content' => 'Erstellte Inhalte',
+ 'profile_not_created_pages' => ':userName hat noch keine Seiten erstellt.',
+ 'profile_not_created_chapters' => ':userName hat noch keine Kapitel erstellt.',
+ 'profile_not_created_books' => ':userName hat noch keine Bücher erstellt.',
+ 'profile_not_created_shelves' => ':userName hat noch keine Regale erstellt.',
+
+ // Comments
+ 'comment' => 'Kommentar',
+ 'comments' => 'Kommentare',
+ 'comment_add' => 'Kommentieren',
+ 'comment_none' => 'Keine Kommentare vorhanden',
+ 'comment_placeholder' => 'Gib hier deine Kommentare ein',
+ 'comment_thread_count' => ':count Thema|:count Themen',
+ 'comment_archived_count' => ':count archiviert',
+ 'comment_archived_threads' => 'Archivierte Themen',
+ 'comment_save' => 'Kommentar speichern',
+ 'comment_new' => 'Neuer Kommentar',
+ 'comment_created' => ':createDiff kommentiert',
+ 'comment_updated' => ':updateDiff aktualisiert von :username',
+ 'comment_updated_indicator' => 'Aktualisiert',
+ 'comment_deleted_success' => 'Kommentar gelöscht',
+ 'comment_created_success' => 'Kommentar hinzugefügt',
+ 'comment_updated_success' => 'Kommentar aktualisiert',
+ 'comment_archive_success' => 'Kommentar archiviert',
+ 'comment_unarchive_success' => 'Kommentar nicht mehr archiviert',
+ 'comment_view' => 'Kommentar ansehen',
+ 'comment_jump_to_thread' => 'Zum Thema springen',
+ 'comment_delete_confirm' => 'Möchtst du diesen Kommentar wirklich löschen?',
+ 'comment_in_reply_to' => 'Antwort auf :commentId',
+ 'comment_reference' => 'Referenz',
+ 'comment_reference_outdated' => '(Veraltet)',
+ 'comment_editor_explain' => 'Hier sind die Kommentare, die auf dieser Seite hinterlassen wurden. Kommentare können hinzugefügt und verwaltet werden, wenn die gespeicherte Seite angezeigt wird.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Bist du sicher, dass du diese Revision löschen möchtest?',
+ 'revision_restore_confirm' => 'Bist du sicher, dass du diese Revision wiederherstellen willst? Der aktuelle Seiteninhalt wird ersetzt.',
+ 'revision_cannot_delete_latest' => 'Die letzte Version kann nicht gelöscht werden.',
+
+ // Copy view
+ 'copy_consider' => 'Bitte beachte beim Kopieren von Inhalten die folgenden Punkte.',
+ 'copy_consider_permissions' => 'Benutzerdefinierte Berechtigungseinstellungen werden nicht kopiert.',
+ 'copy_consider_owner' => 'Du wirst Besitzer der gesamten kopierten Inhalte.',
+ 'copy_consider_images' => 'Bilder auf der Seite werden nicht dupliziert und die originalen Bilder werden die Beziehung zur ursprünglichen Seite, auf der sie hochgeladen wurden, behalten.',
+ 'copy_consider_attachments' => 'Seitenanhänge werden nicht kopiert.',
+ 'copy_consider_access' => 'Ein Wechsel des Standorts, des Eigentümers oder der Berechtigungen kann dazu führen, dass diese Inhalte für diejenigen zugänglich sind, die zuvor keinen Zugang hatten.',
+
+ // Conversions
+ 'convert_to_shelf' => 'In Regal umwandeln',
+ 'convert_to_shelf_contents_desc' => 'Du kannst dieses Buch in ein neues Regal mit demselben Inhalt umwandeln. Die in diesem Buch enthaltenen Kapitel werden in neue Bücher umgewandelt. Wenn dieses Buch Seiten enthält, die nicht in einem Kapitel enthalten sind, wird das Buch umbenannt und enthält diese Seiten, und das Buch wird Teil des neuen Regals.',
+ 'convert_to_shelf_permissions_desc' => 'Alle Berechtigungen, die für dieses Buch festgelegt wurden, werden in das neue Regal und in alle neuen untergeordneten Bücher kopiert, für die keine eigenen Berechtigungen festgelegt wurden. Beachte, dass Berechtigungen für Regale nicht automatisch auf den Inhalt übertragen werden, wie es bei Büchern der Fall ist.',
+ 'convert_book' => 'Buch umwandeln',
+ 'convert_book_confirm' => 'Bist du dir sicher, dass du dieses Buch umwandelt möchtest?',
+ 'convert_undo_warning' => 'Das kann nicht so einfach rückgängig gemacht werden.',
+ 'convert_to_book' => 'In Buch umwandeln',
+ 'convert_to_book_desc' => 'Du kannst dieses Kapitel in ein neues Buch mit demselben Inhalt umwandeln. Alle Berechtigungen, die für dieses Kapitel festgelegt wurden, werden in das neue Buch kopiert, aber alle geerbten Berechtigungen aus dem übergeordneten Buch werden nicht kopiert, was zu einer Änderung der Zugriffskontrolle führen könnte.',
+ 'convert_chapter' => 'Kapitel konvertieren',
+ 'convert_chapter_confirm' => 'Bist du dir sicher, dass du dieses Kapitel konvertieren möchtest?',
+
+ // References
+ 'references' => 'Verweise',
+ 'references_none' => 'Es gibt keine nachverfolgten Referenzen zu diesem Element.',
+ 'references_to_desc' => 'Unten sind alle bekannten Inhalte im System aufgelistet, die auf diesen Eintrag verweisen.',
+
+ // Watch Options
+ 'watch' => 'Beobachten',
+ 'watch_title_default' => 'Standardeinstellungen',
+ 'watch_desc_default' => 'Rückgängig machen auf Standard-Benachrichtigungseinstellungen.',
+ 'watch_title_ignore' => 'Ignorieren',
+ 'watch_desc_ignore' => 'Ignorieren aller Benachrichtigungen, auch die von den Einstellungen auf Benutzerebene.',
+ 'watch_title_new' => 'Neue Seiten',
+ 'watch_desc_new' => 'Benachrichtigen, wenn eine neue Seite in diesem Element erstellt wird.',
+ 'watch_title_updates' => 'Alle Seitenupdates',
+ 'watch_desc_updates' => 'Bei allen neuen Seiten und Seitenänderungen benachrichtigen.',
+ 'watch_desc_updates_page' => 'Bei allen Seitenänderungen benachrichtigen.',
+ 'watch_title_comments' => 'Alle Seitenupdates & Kommentare',
+ 'watch_desc_comments' => 'Benachrichtigung bei allen neuen Seiten, Seitenänderungen und neuen Kommentaren.',
+ 'watch_desc_comments_page' => 'Benachrichtigung bei Seitenänderungen und neuen Kommentaren.',
+ 'watch_change_default' => 'Standard-Benachrichtigungseinstellungen ändern',
+ 'watch_detail_ignore' => 'Benachrichtigungen ignorieren',
+ 'watch_detail_new' => 'Beobachten von neuen Seiten',
+ 'watch_detail_updates' => 'Beobachtung neuer Seiten und Aktualisierungen',
+ 'watch_detail_comments' => 'Beobachtung neuer Seiten, Aktualisierungen und Kommentare',
+ 'watch_detail_parent_book' => 'Beobachten über übergeordnetes Buch',
+ 'watch_detail_parent_book_ignore' => 'Ignorieren über übergeordnetes Buch',
+ 'watch_detail_parent_chapter' => 'Beobachten über übergeordnetes Kapitel',
+ 'watch_detail_parent_chapter_ignore' => 'Ignorieren über übergeordnetes Kapitel',
+];
diff --git a/lang/de_informal/errors.php b/lang/de_informal/errors.php
new file mode 100644
index 00000000000..a3be19a028d
--- /dev/null
+++ b/lang/de_informal/errors.php
@@ -0,0 +1,135 @@
+ 'Du hast keine Berechtigung, auf diese Seite zuzugreifen.',
+ 'permissionJson' => 'Du hast keine Berechtigung, die angeforderte Aktion auszuführen.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Ein Benutzer mit der E-Mail-Adresse :email ist bereits mit anderen Anmeldedaten registriert.',
+ 'auth_pre_register_theme_prevention' => 'Das Benutzerkonto kann mit den bereitgestellten Informationen nicht erstellen werden',
+ 'email_already_confirmed' => 'Die E-Mail-Adresse ist bereits bestätigt. Bitte melde dich an.',
+ 'email_confirmation_invalid' => 'Der Bestätigungslink ist nicht gültig oder wurde bereits verwendet. Bitte registriere dich erneut.',
+ 'email_confirmation_expired' => 'Der Bestätigungslink ist abgelaufen. Es wurde eine neue Bestätigungs-E-Mail gesendet.',
+ 'email_confirmation_awaiting' => 'Die E-Mail-Adresse für das verwendete Konto muss bestätigt werden',
+ 'ldap_fail_anonymous' => 'Anonymer LDAP-Zugriff ist fehlgeschlagen',
+ 'ldap_fail_authed' => 'LDAP-Zugriff mit DN und Passwort ist fehlgeschlagen',
+ 'ldap_extension_not_installed' => 'LDAP-PHP-Erweiterung ist nicht installiert',
+ 'ldap_cannot_connect' => 'Die Verbindung zum LDAP-Server ist fehlgeschlagen. Beim initialen Verbindungsaufbau trat ein Fehler auf',
+ 'saml_already_logged_in' => 'Du bist bereits angemeldet',
+ 'saml_no_email_address' => 'Es konnte keine E-Mail-Adresse für diesen Benutzer in den vom externen Authentifizierungssystem zur Verfügung gestellten Daten gefunden werden',
+ 'saml_invalid_response_id' => 'Die Anfrage vom externen Authentifizierungssystem wird von einem von dieser Anwendung gestarteten Prozess nicht erkannt. Das Zurückblättern nach einem Login könnte dieses Problem verursachen.',
+ 'saml_fail_authed' => 'Anmeldung mit :system fehlgeschlagen, System konnte keine erfolgreiche Autorisierung bereitstellen',
+ 'oidc_already_logged_in' => 'Bereits angemeldet',
+ 'oidc_no_email_address' => 'Es konnte keine E-Mail-Adresse für diesen Benutzer in den vom externen Authentifizierungssystem bereitgestellten Daten gefunden werden',
+ 'oidc_fail_authed' => 'Anmeldung mit :system fehlgeschlagen, System hat keine erfolgreiche Autorisierung geliefert',
+ 'social_no_action_defined' => 'Es ist keine Aktion definiert',
+ 'social_login_bad_response' => "Fehler bei :socialAccount Login: \n:error",
+ 'social_account_in_use' => 'Dieses :socialAccount-Konto wird bereits verwendet. Bitte melde dich mit dem :socialAccount-Konto an.',
+ 'social_account_email_in_use' => 'Die E-Mail-Adresse ":email" ist bereits registriert. Wenn du bereits registriert bist, kannst du Dein :socialAccount-Konto in Deinen Profil-Einstellungen verknüpfen.',
+ 'social_account_existing' => 'Dieses :socialAccount-Konto ist bereits mit deinem Profil verknüpft.',
+ 'social_account_already_used_existing' => 'Dieses :socialAccount-Konto wird bereits von einem anderen Benutzer verwendet.',
+ 'social_account_not_used' => 'Dieses :socialAccount-Konto ist bisher keinem Benutzer zugeordnet. Du kannst das in deinen Profil-Einstellungen tun.',
+ 'social_account_register_instructions' => 'Wenn du bisher kein Social-Media Konto besitzt, kannst du ein solches Konto mit der :socialAccount Option anlegen.',
+ 'social_driver_not_found' => 'Treiber für Social-Media-Konten nicht gefunden',
+ 'social_driver_not_configured' => 'Dein :socialAccount-Konto ist nicht korrekt konfiguriert.',
+ 'invite_token_expired' => 'Dieser Einladungslink ist abgelaufen. Du kannst stattdessen versuchen, dein Passwort zurückzusetzen.',
+ 'login_user_not_found' => 'Ein Benutzer für diese Aktion konnte nicht gefunden werden.',
+
+ // System
+ 'path_not_writable' => 'Die Datei kann nicht in den angegebenen Pfad :filePath hochgeladen werden. Stelle sicher, dass dieser Ordner auf dem Server beschreibbar ist.',
+ 'cannot_get_image_from_url' => 'Bild konnte nicht von der URL :url geladen werden.',
+ 'cannot_create_thumbs' => 'Der Server kann keine Vorschau-Bilder erzeugen. Bitte prüfe, ob die GD PHP-Erweiterung installiert ist.',
+ 'server_upload_limit' => 'Der Server verbietet das Hochladen von Dateien mit dieser Dateigröße. Bitte versuche es mit einer kleineren Datei.',
+ 'server_post_limit' => 'Der Server kann die angegebene Datenmenge nicht empfangen. Versuche es erneut mit weniger Daten oder einer kleineren Datei.',
+ 'uploaded' => 'Der Server verbietet das Hochladen von Dateien mit dieser Dateigröße. Bitte versuche es mit einer kleineren Datei.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Beim Hochladen des Bildes trat ein Fehler auf.',
+ 'image_upload_type_error' => 'Der Bildtyp der hochgeladenen Datei ist ungültig.',
+ 'image_upload_replace_type' => 'Bild-Ersetzungen müssen vom gleichen Typ sein',
+ 'image_upload_memory_limit' => 'Bildupload und/oder Thumbnailerstellung konnten aufgrund von Systemressourcenbeschränkungen nicht verarbeitet werden.',
+ 'image_thumbnail_memory_limit' => 'Fehler beim Erstellen der Thumbnails aufgrund von Systemressourcenbeschränkungen.',
+ 'image_gallery_thumbnail_memory_limit' => 'Fehler beim Erstellen der Galerie Thumbnails aufgrund von Systemressourcenbeschränkungen.',
+ 'drawing_data_not_found' => 'Zeichnungsdaten konnten nicht geladen werden. Die Zeichnungsdatei existiert möglicherweise nicht mehr oder du hast nicht die Berechtigung, darauf zuzugreifen.',
+
+ // Attachments
+ 'attachment_not_found' => 'Anhang konnte nicht gefunden werden.',
+ 'attachment_upload_error' => 'Beim Hochladen des Anhangs trat ein Fehler auf',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Fehler beim Speichern des Entwurfs. Stelle sicher, dass du mit dem Internet verbunden bist, bevor du den Entwurf dieser Seite speicherst.',
+ 'page_draft_delete_fail' => 'Fehler beim Löschen des Seitenentwurfs und beim Abrufen des gespeicherten Inhalts der aktuellen Seite',
+ 'page_custom_home_deletion' => 'Eine als Startseite gesetzte Seite kann nicht gelöscht werden.',
+
+ // Entities
+ 'entity_not_found' => 'Eintrag nicht gefunden',
+ 'bookshelf_not_found' => 'Regal nicht gefunden',
+ 'book_not_found' => 'Buch nicht gefunden',
+ 'page_not_found' => 'Seite nicht gefunden',
+ 'chapter_not_found' => 'Kapitel nicht gefunden',
+ 'selected_book_not_found' => 'Das gewählte Buch wurde nicht gefunden.',
+ 'selected_book_chapter_not_found' => 'Das gewählte Buch oder Kapitel wurde nicht gefunden.',
+ 'guests_cannot_save_drafts' => 'Gäste können keine Entwürfe speichern',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Du kannst den einzigen Administrator nicht löschen.',
+ 'users_cannot_delete_guest' => 'Du kannst den Gast-Benutzer nicht löschen',
+ 'users_could_not_send_invite' => 'Benutzer konnte nicht erstellt werden, da die Einladungs-E-Mail nicht gesendet werden konnte',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Diese Rolle kann nicht bearbeitet werden.',
+ 'role_system_cannot_be_deleted' => 'Dies ist eine Systemrolle und kann nicht gelöscht werden',
+ 'role_registration_default_cannot_delete' => 'Diese Rolle kann nicht gelöscht werden, solange sie als Standardrolle für neue Registrierungen gesetzt ist',
+ 'role_cannot_remove_only_admin' => 'Dieser Benutzer ist der einzige Benutzer, welchem die Administratorrolle zugeordnet ist. Ordne die Administratorrolle einem anderen Benutzer zu, bevor du versuchst, sie hier zu entfernen.',
+
+ // Comments
+ 'comment_list' => 'Beim Abrufen der Kommentare ist ein Fehler aufgetreten.',
+ 'cannot_add_comment_to_draft' => 'Du kannst keine Kommentare zu einem Entwurf hinzufügen.',
+ 'comment_add' => 'Beim Hinzufügen des Kommentars ist ein Fehler aufgetreten.',
+ 'comment_delete' => 'Beim Löschen des Kommentars ist ein Fehler aufgetreten.',
+ 'empty_comment' => 'Kann keinen leeren Kommentar hinzufügen',
+
+ // Error pages
+ '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' => 'Bild nicht gefunden',
+ 'image_not_found_subtitle' => 'Sorry. Die Bilddatei, nach der du suchst, konnte nicht gefunden werden.',
+ 'image_not_found_details' => 'Wenn du erwartet hast, dass dieses Bild existiert, wurde es möglicherweise gelöscht.',
+ 'return_home' => 'Zurück zur Startseite',
+ 'error_occurred' => 'Es ist ein Fehler aufgetreten',
+ 'app_down' => ':appName befindet sich aktuell im Wartungsmodus.',
+ 'back_soon' => 'Wir werden so schnell wie möglich wieder online sein.',
+
+ // Import
+ 'import_zip_cant_read' => 'ZIP-Datei konnte nicht gelesen werden.',
+ 'import_zip_cant_decode_data' => 'Konnte Inhalt der data.json im ZIP nicht finden und dekodieren.',
+ 'import_zip_no_data' => 'ZIP-Datei hat kein erwartetes Buch, Kapitel oder Seiteninhalt.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'ZIP Import konnte aufgrund folgender Fehler nicht validiert werden:',
+ 'import_zip_failed_notification' => 'Importieren der ZIP-Datei fehlgeschlagen.',
+ 'import_perms_books' => 'Dir fehlt die erforderliche Berechtigung, um Bücher zu erstellen.',
+ 'import_perms_chapters' => 'Dir fehlt die erforderliche Berechtigung, um Kapitel zu erstellen.',
+ 'import_perms_pages' => 'Dir fehlt die erforderliche Berechtigung, um Seiten zu erstellen.',
+ 'import_perms_images' => 'Dir fehlt die erforderliche Berechtigung, um Bilder zu erstellen.',
+ 'import_perms_attachments' => 'Dir fehlt die erforderliche Berechtigung, um Anhänge zu erstellen.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Kein Autorisierungs-Token für die Anfrage gefunden',
+ 'api_bad_authorization_format' => 'Ein Autorisierungs-Token wurde auf die Anfrage gefunden, aber das Format schien falsch zu sein',
+ 'api_user_token_not_found' => 'Es wurde kein passender API-Token für den angegebenen Autorisierungs-Token gefunden',
+ 'api_incorrect_token_secret' => 'Das für den API-Token angegebene geheime Token ist falsch',
+ 'api_user_no_api_permission' => 'Der Besitzer des verwendeten API-Token hat keine Berechtigung für API-Aufrufe',
+ 'api_user_token_expired' => 'Das verwendete Autorisierungs-Token ist abgelaufen',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Fehler beim Senden einer Test E-Mail:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'Die URL stimmt nicht mit den konfigurierten erlaubten SSR-Hosts überein',
+];
diff --git a/lang/de_informal/notifications.php b/lang/de_informal/notifications.php
new file mode 100644
index 00000000000..99c270ec1be
--- /dev/null
+++ b/lang/de_informal/notifications.php
@@ -0,0 +1,29 @@
+ 'Neuer Kommentar auf Seite: :pageName',
+ 'new_comment_intro' => 'Ein Benutzer hat eine Seite in :appName kommentiert:',
+ 'new_page_subject' => 'Neue Seite: :pageName',
+ 'new_page_intro' => 'Es wurde eine neue Seite in :appName erstellt:',
+ 'updated_page_subject' => 'Aktualisierte Seite: :pageName',
+ 'updated_page_intro' => 'Eine Seite wurde in :appName aktualisiert:',
+ 'updated_page_debounce' => 'Um eine Flut von Benachrichtigungen zu vermeiden, wirst du für eine gewisse Zeit keine Benachrichtigungen für weitere Bearbeitungen dieser Seite durch denselben Bearbeiter erhalten.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Seitenname:',
+ 'detail_page_path' => 'Seitenpfad:',
+ 'detail_commenter' => 'Kommentator:',
+ 'detail_comment' => 'Kommentar:',
+ 'detail_created_by' => 'Erstellt von:',
+ 'detail_updated_by' => 'Aktualisiert von:',
+
+ 'action_view_comment' => 'Kommentar anzeigen',
+ 'action_view_page' => 'Seite anzeigen',
+
+ 'footer_reason' => 'Diese Benachrichtigung wurde an dich gesendet, weil :link diese Art von Aktivität für dieses Element abdeckt.',
+ 'footer_reason_link' => 'deine Benachrichtigungseinstellungen',
+];
diff --git a/resources/lang/de_informal/pagination.php b/lang/de_informal/pagination.php
similarity index 100%
rename from resources/lang/de_informal/pagination.php
rename to lang/de_informal/pagination.php
diff --git a/lang/de_informal/passwords.php b/lang/de_informal/passwords.php
new file mode 100644
index 00000000000..862382379fd
--- /dev/null
+++ b/lang/de_informal/passwords.php
@@ -0,0 +1,15 @@
+ 'Passwörter müssen aus mindestens acht Zeichen bestehen und mit der eingegebenen Wiederholung übereinstimmen.',
+ 'user' => "Es wurde kein Benutzer mit dieser E-Mail-Adresse gefunden.",
+ 'token' => 'Der Token zum Zurücksetzen des Passworts ist für diese E-Mail-Adresse ungültig.',
+ 'sent' => 'Wir haben dir einen Link zum Zurücksetzen des Passwortes per E-Mail geschickt!',
+ 'reset' => 'Dein Passwort wurde zurückgesetzt!',
+
+];
diff --git a/lang/de_informal/preferences.php b/lang/de_informal/preferences.php
new file mode 100644
index 00000000000..bfb57b2f492
--- /dev/null
+++ b/lang/de_informal/preferences.php
@@ -0,0 +1,52 @@
+ 'Mein Account',
+
+ 'shortcuts' => 'Kürzel',
+ 'shortcuts_interface' => 'UI Shortcut Einstellungen',
+ 'shortcuts_toggle_desc' => 'Hier kannst du Tastaturkürzel für die Systemoberfläche für Navigation und Aktionen aktivieren oder deaktivieren.',
+ 'shortcuts_customize_desc' => 'Unten kannst du alle Tastenkürzel anpassen. Drücke einfach die gewünschte Tastenkombination, nachdem du die Eingabe für eine Tastenkombination ausgewählt hast.',
+ 'shortcuts_toggle_label' => 'Tastaturkürzel aktiviert',
+ 'shortcuts_section_navigation' => 'Navigation',
+ 'shortcuts_section_actions' => 'Häufige Aktionen',
+ 'shortcuts_save' => 'Tastenkürzel speichern',
+ 'shortcuts_overlay_desc' => 'Hinweis: Wenn Tastenkürzel aktiviert sind, ist ein Hilfefähnchen durch Drücken von "?" verfügbar, welches die verfügbaren Tastenkürzel für Aktionen hervorhebt, die aktuell auf dem Bildschirm sichtbar sind.',
+ 'shortcuts_update_success' => 'Tastenkürzel Einstellungen wurden aktualisiert!',
+ 'shortcuts_overview_desc' => 'Verwalten von Tastenkombinationen, die zur Navigation der Benutzeroberfläche verwendet werden können.',
+
+ 'notifications' => 'Benachrichtigungseinstellungen',
+ 'notifications_desc' => 'Lege fest, welche E-Mail-Benachrichtigungen du erhältst, wenn bestimmte Aktivitäten im System durchgeführt werden.',
+ 'notifications_opt_own_page_changes' => 'Benachrichtigung bei Änderungen an eigenen Seiten',
+ 'notifications_opt_own_page_comments' => 'Benachrichtigung bei Kommentaren an eigenen Seiten',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Bei Antworten auf meine Kommentare benachrichtigen',
+ 'notifications_save' => 'Einstellungen speichern',
+ 'notifications_update_success' => 'Benachrichtigungseinstellungen wurden aktualisiert!',
+ 'notifications_watched' => 'Beobachtete und ignorierte Elemente',
+ 'notifications_watched_desc' => 'Nachfolgend finden Sie die Elemente, für die benutzerdefinierten Überwachungspräferenzen gelten. Um deine Einstellungen für diese Elemente zu aktualisieren, sieh dir das Element an und suche dann die Überwachungsoptionen in der Seitenleiste.',
+
+ 'auth' => 'Zugang & Sicherheit',
+ 'auth_change_password' => 'Passwort ändern',
+ 'auth_change_password_desc' => 'Ändere das Passwort, mit dem du dich bei der Anwendung anmeldest. Dieses muss mindestens 8 Zeichen lang sein.',
+ 'auth_change_password_success' => 'Das Passwort wurde aktualisiert!',
+
+ 'profile' => 'Profildetails',
+ 'profile_desc' => 'Verwalte die Details deines Kontos, welches dich gegenüber anderen Benutzern repräsentiert, zusätzlich zu den Details, die für die Kommunikation und die Personalisierung des Systems genutzt werden.',
+ 'profile_view_public' => 'Öffentliches Profil anzeigen',
+ 'profile_name_desc' => 'Konfiguriere deinen Anzeigenamen, der durch die Aktivität, die du ausführst, und die dir gehörenden Inhalte für andere Benutzer sichtbar ist.',
+ 'profile_email_desc' => 'Diese E-Mail wird für Benachrichtigungen und, je nach aktiver Systemauthentifizierung, den Systemzugriff verwendet.',
+ 'profile_email_no_permission' => 'Leider hast du nicht die Berechtigung, deine E-Mail-Adresse zu ändern. Wenn du diese ändern möchtest, wende dich bitte an deinen Administrator.',
+ 'profile_avatar_desc' => 'Wähle ein Bild aus, das anderen im System angezeigt wird, um dich zu repräsentieren. Idealerweise sollte dieses Bild quadratisch und etwa 256px breit und hoch sein.',
+ 'profile_admin_options' => 'Administratoroptionen',
+ 'profile_admin_options_desc' => 'Weitere Administrator-Optionen, wie zum Beispiel die Verwaltung von Rollenzuweisungen, findest du in deinem Benutzerkonto im Bereich "Einstellungen > Benutzer" der Anwendung.',
+
+ 'delete_account' => 'Konto löschen',
+ 'delete_my_account' => 'Mein Konto löschen',
+ 'delete_my_account_desc' => 'Dadurch wird dein Benutzerkonto vollständig vom System gelöscht. Du kannst dieses Konto nicht wiederherstellen oder diese Aktion rückgängig machen. Inhalte, die du erstellt hast, wie erstellte Seiten und hochgeladene Bilder, bleiben erhalten.',
+ 'delete_my_account_warning' => 'Bist du sicher, dass du dein Benutzerkonto löschen möchten?',
+];
diff --git a/lang/de_informal/settings.php b/lang/de_informal/settings.php
new file mode 100644
index 00000000000..fa175187b80
--- /dev/null
+++ b/lang/de_informal/settings.php
@@ -0,0 +1,375 @@
+ 'Einstellungen',
+ 'settings_save' => 'Einstellungen speichern',
+ 'system_version' => 'Systemversion',
+ 'categories' => 'Kategorien',
+
+ // App Settings
+ 'app_customization' => 'Personalisierung',
+ 'app_features_security' => 'Funktionen & Sicherheit',
+ 'app_name' => 'Anwendungsname',
+ 'app_name_desc' => 'Dieser Name wird im Header und in E-Mails angezeigt.',
+ 'app_name_header' => 'Anwendungsname im Header anzeigen?',
+ 'app_public_access' => 'Öffentlicher Zugriff',
+ 'app_public_access_desc' => 'Wenn du diese Option aktivierst, können Besucher, die nicht angemeldet sind, auf Inhalte in deiner BookStack-Instanz zugreifen.',
+ 'app_public_access_desc_guest' => 'Der Zugang für öffentliche Besucher kann über den Benutzer "Guest" gesteuert werden.',
+ 'app_public_access_toggle' => 'Öffentlichen Zugriff erlauben',
+ 'app_public_viewing' => 'Öffentliche Ansicht erlauben?',
+ 'app_secure_images' => 'Erhöhte Sicherheit für hochgeladene Bilder aktivieren?',
+ 'app_secure_images_toggle' => 'Höhere Sicherheit für Bild-Uploads aktivieren',
+ 'app_secure_images_desc' => 'Aus Leistungsgründen sind alle Bilder öffentlich sichtbar. Diese Option fügt zufällige, schwer zu erratende, Zeichenketten zu Bild-URLs hinzu. Stelle sicher, dass Verzeichnisindizes deaktiviert sind, um einen einfachen Zugriff zu verhindern.',
+ 'app_default_editor' => 'Standard Seiteneditor',
+ 'app_default_editor_desc' => 'Wähle aus, welcher Editor bei der Bearbeitung neuer Seiten standardmäßig verwendet werden soll. Dies kann auf Seitenebene außer Kraft gesetzt werden, sofern die Berechtigungen dies zulassen.',
+ 'app_custom_html' => 'Benutzerdefinierter HTML-Head-Inhalt',
+ 'app_custom_html_desc' => 'Jeder Inhalt, der hier hinzugefügt wird, wird am Ende der -Sektion jeder Seite eingefügt. Diese kann praktisch sein, um CSS-Styles anzupassen oder Analytics-Code hinzuzufügen.',
+ 'app_custom_html_disabled_notice' => 'Benutzerdefinierte HTML-Kopfzeileninhalte sind auf dieser Einstellungsseite deaktiviert, um sicherzustellen, dass alle Änderungen rückgängig gemacht werden können.',
+ 'app_logo' => 'Anwendungslogo',
+ 'app_logo_desc' => 'Dies wird unter anderem in der Kopfzeile der Anwendung verwendet. Dieses Bild sollte 86px hoch sein. Große Bilder werden herunterskaliert.',
+ 'app_icon' => 'Anwendungssymbol',
+ 'app_icon_desc' => 'Dieses Symbol wird für Browser-Registerkarten und Verknüpfungssymbole verwendet. Dies sollte ein 256px quadratisches PNG-Bild sein.',
+ 'app_homepage' => 'Startseite der Anwendung',
+ 'app_homepage_desc' => 'Wähle eine Seite als Startseite aus, die statt der Standardansicht angezeigt werden soll. Seitenberechtigungen werden für die ausgewählten Seiten ignoriert.',
+ 'app_homepage_select' => 'Wähle eine Seite aus',
+ 'app_footer_links' => 'Fußzeilen-Links',
+ 'app_footer_links_desc' => 'Füge Links hinzu, die innerhalb der Seitenfußzeile angezeigt werden. Diese werden am unteren Ende der meisten Seiten angezeigt, einschließlich derjenigen, die keinen Login benötigen. Du kannst die Bezeichnung "trans::" verwenden, um systemdefinierte Übersetzungen zu verwenden. Beispiel: Mit "trans::common.privacy_policy" wird der übersetzte Text "Privacy Policy" bereitgestellt, und "trans::common.terms_of_service" liefert den übersetzten Text "Terms of Service".',
+ 'app_footer_links_label' => 'Link-Label',
+ 'app_footer_links_url' => 'Link-URL',
+ 'app_footer_links_add' => 'Fußzeilenlink hinzufügen',
+ 'app_disable_comments' => 'Kommentare deaktivieren',
+ 'app_disable_comments_toggle' => 'Kommentare deaktivieren',
+ 'app_disable_comments_desc' => 'Deaktiviert Kommentare über alle Seiten in der Anwendung. Vorhandene Kommentare werden nicht angezeigt.',
+
+ // Color settings
+ 'color_scheme' => 'Farbschema der Anwendung',
+ 'color_scheme_desc' => 'Lege die Farben, die in der Benutzeroberfläche verwendet werden, fest. Farben können separat für dunkle und helle Modi konfiguriert werden, um am besten zum Farbschema zu passen und die Lesbarkeit zu gewährleisten.',
+ 'ui_colors_desc' => 'Lege die primäre Farbe und die Standard-Linkfarbe der Anwendung fest. Die primäre Farbe wird hauptsächlich für Kopfzeilen, Buttons und Interface-Dekorationen verwendet. Die Standard-Linkfarbe wird für textbasierte Links und Aktionen sowohl innerhalb des geschriebenen Inhalts als auch in der Benutzeroberfläche verwendet.',
+ 'app_color' => 'Primäre Farbe',
+ 'link_color' => 'Standard-Linkfarbe',
+ 'content_colors_desc' => 'Lege Farben für alle Elemente in der Seitenorganisationshierarchie fest. Die Auswahl von Farben mit einer ähnlichen Helligkeit wie die Standardfarben wird zur Lesbarkeit empfohlen.',
+ 'bookshelf_color' => 'Regalfarbe',
+ 'book_color' => 'Buchfarbe',
+ 'chapter_color' => 'Kapitelfarbe',
+ 'page_color' => 'Seitenfarbe',
+ 'page_draft_color' => 'Seitenentwurfsfarbe',
+
+ // Registration Settings
+ 'reg_settings' => 'Registrierungseinstellungen',
+ 'reg_enable' => 'Registrierung erlauben?',
+ 'reg_enable_toggle' => 'Registrierung erlauben',
+ 'reg_enable_desc' => 'Wenn die Registrierung erlaubt ist, kann sich der Benutzer als Anwendungsbenutzer anmelden. Bei der Registrierung erhält er eine einzige, voreingestellte Benutzerrolle.',
+ 'reg_default_role' => 'Standard-Benutzerrolle nach Registrierung',
+ 'reg_enable_external_warning' => 'Die obige Option wird ignoriert, während eine externe LDAP oder SAML Authentifizierung aktiv ist. Benutzerkonten für nicht existierende Mitglieder werden automatisch erzeugt, wenn die Authentifizierung gegen das verwendete externe System erfolgreich ist.',
+ 'reg_email_confirmation' => 'Bestätigung per E-Mail',
+ 'reg_email_confirmation_toggle' => 'Bestätigung per E-Mail erforderlich',
+ 'reg_confirm_email_desc' => 'Falls die Einschränkung für Domains genutzt wird, ist die Bestätigung per E-Mail zwingend erforderlich und der untenstehende Wert wird ignoriert.',
+ 'reg_confirm_restrict_domain' => 'Registrierung auf bestimmte Domains einschränken',
+ 'reg_confirm_restrict_domain_desc' => 'Füge eine durch Komma getrennte Liste von Domains hinzu, auf die die Registrierung eingeschränkt werden soll. Benutzern wird eine E-Mail gesendet, um ihre E-Mail Adresse zu bestätigen, bevor sie diese Anwendung nutzen können.
+Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung ändern.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Keine Einschränkung gesetzt',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Wähle die Standard-Sortierregel aus, die auf neue Bücher angewendet werden soll. Dies wirkt sich nicht auf bestehende Bücher aus und kann pro Buch überschrieben werden.',
+ 'sorting_rules' => 'Sortierregeln',
+ 'sorting_rules_desc' => 'Dies sind vordefinierte Sortieraktionen, die auf Inhalte im System angewendet werden können.',
+ 'sort_rule_assigned_to_x_books' => ':count Buch zugewiesen|:count Büchern zugewiesen',
+ 'sort_rule_create' => 'Sortierregel erstellen',
+ 'sort_rule_edit' => 'Sortierregel bearbeiten',
+ 'sort_rule_delete' => 'Sortierregel löschen',
+ 'sort_rule_delete_desc' => 'Diese Sortierregel aus dem System entfernen. Bücher mit dieser Sortierung werden auf manuelle Sortierung zurückgesetzt.',
+ 'sort_rule_delete_warn_books' => 'Diese Sortierregel wird derzeit in :count Bücher(n) verwendet. Bist du sicher, dass du dies löschen möchtest?',
+ 'sort_rule_delete_warn_default' => 'Diese Sortierregel wird derzeit als Standard für Bücher verwendet. Bist du sicher, dass du dies löschen möchtest?',
+ 'sort_rule_details' => 'Sortierregel-Details',
+ 'sort_rule_details_desc' => 'Lege einen Namen für diese Sortierregel fest, der in Listen erscheint, wenn Benutzer eine Sortierung auswählen.',
+ 'sort_rule_operations' => 'Sortierungs-Aktionen',
+ 'sort_rule_operations_desc' => 'Konfiguriere die durchzuführenden Sortieraktionen durch Verschieben von der Liste der verfügbaren Aktionen. Bei der Verwendung werden die Aktionen von oben nach unten angewendet. Alle hier vorgenommenen Änderungen werden beim Speichern auf alle zugewiesenen Bücher angewendet.',
+ 'sort_rule_available_operations' => 'Verfügbare Aktionen',
+ 'sort_rule_available_operations_empty' => 'Keine verbleibenden Aktionen',
+ 'sort_rule_configured_operations' => 'Konfigurierte Aktionen',
+ 'sort_rule_configured_operations_empty' => 'Aktionen aus der Liste "Verfügbare Operationen" ziehen/hinzufügen',
+ 'sort_rule_op_asc' => '(Aufst.)',
+ 'sort_rule_op_desc' => '(Abst.)',
+ 'sort_rule_op_name' => 'Name - Alphabetisch',
+ 'sort_rule_op_name_numeric' => 'Name - Numerisch',
+ 'sort_rule_op_created_date' => 'Erstellungsdatum',
+ 'sort_rule_op_updated_date' => 'Aktualisierungsdatum',
+ 'sort_rule_op_chapters_first' => 'Kapitel zuerst',
+ 'sort_rule_op_chapters_last' => 'Kapitel zuletzt',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Wartung',
+ 'maint_image_cleanup' => 'Bilder bereinigen',
+ 'maint_image_cleanup_desc' => 'Überprüft Seiten- und Versionsinhalte auf ungenutzte und mehrfach vorhandene Bilder. Erstelle vor dem Start ein Backup Deiner Datenbank und Bilder.',
+ 'maint_delete_images_only_in_revisions' => 'Lösche auch Bilder, die nur in alten Seitenüberarbeitungen vorhanden sind',
+ 'maint_image_cleanup_run' => 'Reinigung starten',
+ 'maint_image_cleanup_warning' => ':count eventuell unbenutze Bilder wurden gefunden. Möchtest du diese Bilder löschen?',
+ 'maint_image_cleanup_success' => ':count eventuell unbenutze Bilder wurden gefunden und gelöscht.',
+ 'maint_image_cleanup_nothing_found' => 'Keine unbenutzen Bilder gefunden. Nichts zu löschen!',
+ 'maint_send_test_email' => 'Eine Test-E-Mail versenden',
+ 'maint_send_test_email_desc' => 'Dies sendet eine Test-E-Mail an die in deinem Profil angegebene E-Mail-Adresse.',
+ 'maint_send_test_email_run' => 'Test-E-Mail senden',
+ 'maint_send_test_email_success' => 'E-Mail wurde an :address gesendet',
+ 'maint_send_test_email_mail_subject' => 'Test-E-Mail',
+ 'maint_send_test_email_mail_greeting' => 'E-Mail-Versand scheint zu funktionieren!',
+ 'maint_send_test_email_mail_text' => 'Glückwunsch! Da du diese E-Mail Benachrichtigung erhalten hast, scheinen deine E-Mail-Einstellungen korrekt konfiguriert zu sein.',
+ 'maint_recycle_bin_desc' => 'Gelöschte Regale, Bücher, Kapitel & Seiten werden in den Papierkorb verschoben, so dass sie wiederhergestellt oder dauerhaft gelöscht werden können. Ältere Einträge im Papierkorb können, in Abhängigkeit von der Systemkonfiguration, nach einer Weile automatisch entfernt werden.',
+ 'maint_recycle_bin_open' => 'Papierkorb öffnen',
+ 'maint_regen_references' => 'Verweise neu generieren',
+ 'maint_regen_references_desc' => 'Diese Aktion wird den Verweisindex innerhalb der Datenbank neu erstellen. Dies wird normalerweise automatisch ausgeführt, aber diese Aktion kann nützlich sein, um alte Inhalte oder Inhalte zu indizieren, die mittels inoffizieller Methoden hinzugefügt wurden.',
+ 'maint_regen_references_success' => 'Verweisindex wurde neu generiert!',
+ 'maint_timeout_command_note' => 'Hinweis: Die Ausführung dieser Aktion kann einige Zeit in Anspruch nehmen, was in einigen Webumgebungen zu Timeout-Problemen führen kann. Alternativ kann diese Aktion auch mit einem Terminalbefehl ausgeführt werden.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Papierkorb',
+ 'recycle_bin_desc' => 'Hier kannst du gelöschte Einträge wiederherstellen oder sie dauerhaft aus dem System entfernen. Diese Liste ist nicht gefiltert, im Gegensatz zu ähnlichen Aktivitätslisten im System, wo Berechtigungsfilter angewendet werden.',
+ 'recycle_bin_deleted_item' => 'Gelöschter Eintrag',
+ 'recycle_bin_deleted_parent' => 'Übergeordnet',
+ 'recycle_bin_deleted_by' => 'Gelöscht von',
+ 'recycle_bin_deleted_at' => 'Löschzeitpunkt',
+ 'recycle_bin_permanently_delete' => 'Dauerhaft löschen',
+ 'recycle_bin_restore' => 'Wiederherstellen',
+ 'recycle_bin_contents_empty' => 'Der Papierkorb ist derzeit leer',
+ 'recycle_bin_empty' => 'Papierkorb leeren',
+ 'recycle_bin_empty_confirm' => 'Dies wird alle Einträge im Papierkorb dauerhaft entfernen, einschließlich der Inhalte, die darin enthalten sind. Bist du sicher, dass du den Papierkorb leeren möchtest?',
+ 'recycle_bin_destroy_confirm' => 'Dieser Schritt löscht permanent das Element, gemeinsam mit allen untergeordneten Elementen, aus dem System. Dieser Schritt kann nicht rückgängig gemacht werden. Sind Sie sicher, dass Sie eine dauerhafte Löschung durchführen wollen?',
+ 'recycle_bin_destroy_list' => 'Zu löschende Einträge',
+ 'recycle_bin_restore_list' => 'Wiederherzustellende Einträge',
+ 'recycle_bin_restore_confirm' => 'Mit dieser Aktion wird der gelöschte Eintrag einschließlich aller untergeordneten Einträge an seinem ursprünglichen Ort wiederhergestellt. Wenn der ursprüngliche Ort gelöscht wurde und sich nun im Papierkorb befindet, muss auch der übergeordnete Eintrag wiederhergestellt werden.',
+ 'recycle_bin_restore_deleted_parent' => 'Der übergeordnete Eintrag wurde ebenfalls gelöscht. Dieser Eintrag wird weiterhin als gelöscht zählen, bis auch der übergeordnete Eintrag wiederhergestellt wurde.',
+ 'recycle_bin_restore_parent' => 'Übergeordneter Eintrag wiederherstellen',
+ 'recycle_bin_destroy_notification' => ':count Einträge wurden aus dem Papierkorb gelöscht.',
+ 'recycle_bin_restore_notification' => ':count Einträge wurden aus dem Papierkorb wiederhergestellt.',
+
+ // Audit Log
+ 'audit' => 'Änderungsprotokoll',
+ 'audit_desc' => 'Dieses Audit-Protokoll zeigt eine Liste der Aktivitäten an, welche vom System protokolliert werden. Im Gegensatz zu den anderen Aktivitätslisten im System, bei denen Berechtigungen angewendet werden, ist diese Liste ungefiltert.',
+ 'audit_event_filter' => 'Ereignisfilter',
+ 'audit_event_filter_no_filter' => 'Kein Filter',
+ 'audit_deleted_item' => 'Gelöschtes Element',
+ 'audit_deleted_item_name' => 'Name: :name',
+ 'audit_table_user' => 'Benutzer',
+ 'audit_table_event' => 'Ereignis',
+ 'audit_table_related' => 'Verknüpfter Eintrag oder Detail',
+ 'audit_table_ip' => 'IP-Adresse',
+ 'audit_table_date' => 'Aktivitätsdatum',
+ 'audit_date_from' => 'Zeitraum von',
+ 'audit_date_to' => 'Zeitraum bis',
+
+ // Role Settings
+ 'roles' => 'Rollen',
+ 'role_user_roles' => 'Benutzer-Rollen',
+ 'roles_index_desc' => 'Rollen werden verwendet, um Benutzer zu gruppieren und System-Berechtigungen für ihre Mitglieder zuzuweisen. Wenn ein Benutzer Mitglied mehrerer Rollen ist, stapeln die gewährten Berechtigungen und der Benutzer wird alle Fähigkeiten erben.',
+ 'roles_x_users_assigned' => ':count Benutzer zugewiesen|:count Benutzer zugewiesen',
+ 'roles_x_permissions_provided' => ':count Berechtigung|:count Berechtigungen',
+ 'roles_assigned_users' => 'Zugewiesene Benutzer',
+ 'roles_permissions_provided' => 'Genutzte Berechtigungen',
+ 'role_create' => 'Neue Rolle anlegen',
+ 'role_delete' => 'Rolle löschen',
+ 'role_delete_confirm' => 'Dies wird die Rolle ":roleName" löschen.',
+ 'role_delete_users_assigned' => 'Diese Rolle ist :userCount Benutzern zugeordnet. Du kannst unten eine neue Rolle auswählen, die du diesen Benutzern zuordnen möchtest.',
+ 'role_delete_no_migration' => "Den Benutzern keine andere Rolle zuordnen",
+ 'role_delete_sure' => 'Bist du sicher, dass du diese Rolle löschen möchtest?',
+ 'role_edit' => 'Rolle bearbeiten',
+ 'role_details' => 'Rollendetails',
+ 'role_name' => 'Rollenname',
+ 'role_desc' => 'Kurzbeschreibung der Rolle',
+ 'role_mfa_enforced' => 'Benötigt Mehrfach-Faktor-Authentifizierung',
+ 'role_external_auth_id' => 'Externe Authentifizierungs-IDs',
+ 'role_system' => 'System-Berechtigungen',
+ 'role_manage_users' => 'Benutzer verwalten',
+ 'role_manage_roles' => 'Rollen und Rollen-Berechtigungen verwalten',
+ 'role_manage_entity_permissions' => 'Alle Buch-, Kapitel- und Seiten-Berechtigungen verwalten',
+ 'role_manage_own_entity_permissions' => 'Nur Berechtigungen eigener Bücher, Kapitel und Seiten verwalten',
+ 'role_manage_page_templates' => 'Seitenvorlagen verwalten',
+ 'role_access_api' => 'Systemzugriffs-API',
+ 'role_manage_settings' => 'Globaleinstellungen verwalten',
+ 'role_export_content' => 'Inhalt exportieren',
+ 'role_import_content' => 'Inhalt importieren',
+ 'role_editor_change' => 'Seiteneditor ändern',
+ 'role_notifications' => 'Empfangen und Verwalten von Benachrichtigungen',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Berechtigungen',
+ 'roles_system_warning' => 'Beachte, dass der Zugriff auf eine der oben genannten drei Berechtigungen einem Benutzer erlauben kann, seine eigenen Berechtigungen oder die Rechte anderer im System zu ändern. Weise nur Rollen mit diesen Berechtigungen vertrauenswürdigen Benutzern zu.',
+ 'role_asset_desc' => 'Diese Berechtigungen gelten für den Standard-Zugriff innerhalb des Systems. Berechtigungen für Bücher, Kapitel und Seiten überschreiben diese Berechtigungen.',
+ 'role_asset_admins' => 'Administratoren erhalten automatisch Zugriff auf alle Inhalte, aber diese Optionen können Oberflächenoptionen ein- oder ausblenden.',
+ 'role_asset_image_view_note' => 'Das bezieht sich auf die Sichtbarkeit innerhalb des Bildmanagers. Der tatsächliche Zugriff auf hochgeladene Bilddateien hängt von der Speicheroption des Systems für Bilder ab.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Alle',
+ 'role_own' => 'Eigene',
+ 'role_controlled_by_asset' => 'Berechtigungen werden vom Uploadziel bestimmt',
+ 'role_save' => 'Rolle speichern',
+ 'role_users' => 'Dieser Rolle zugeordnete Benutzer',
+ 'role_users_none' => 'Bisher sind dieser Rolle keine Benutzer zugeordnet',
+
+ // Users
+ 'users' => 'Benutzer',
+ 'users_index_desc' => 'Erstelle und Verwalte individuelle Benutzerkonten innerhalb des Systems. Benutzerkonten werden zur Anmeldung und der Zuordnung von Inhalten und Aktivitäten verwendet. Zugriffsberechtigungen sind in erster Linie rollenbasiert, aber der Besitz von Benutzerinhalten kann unter anderem auch Berechtigungen beeinflussen.',
+ 'user_profile' => 'Benutzerprofil',
+ 'users_add_new' => 'Benutzer hinzufügen',
+ 'users_search' => 'Benutzer suchen',
+ 'users_latest_activity' => 'Neueste Aktivitäten',
+ 'users_details' => 'Benutzerdetails',
+ 'users_details_desc' => 'Lege für diesen Benutzer einen Anzeigenamen und eine E-Mail-Adresse fest. Die E-Mail-Adresse wird bei der Anmeldung verwendet.',
+ 'users_details_desc_no_email' => 'Lege für diesen Benutzer einen Anzeigenamen fest, damit andere ihn erkennen können.',
+ 'users_role' => 'Benutzerrollen',
+ 'users_role_desc' => 'Wählen Sie aus, welchen Rollen dieser Benutzer zugeordnet werden soll. Wenn ein Benutzer mehreren Rollen zugeordnet ist, werden die Berechtigungen dieser Rollen gestapelt und er erhält alle Fähigkeiten der zugewiesenen Rollen.',
+ 'users_password' => 'Benutzerpasswort',
+ 'users_password_desc' => 'Lege ein Passwort fest, mit dem du dich anmelden möchtest. Diese muss mindestens 8 Zeichen lang sein.',
+ 'users_send_invite_text' => 'Du kannst diesem Benutzer eine Einladungs-E-Mail senden, die es ihm erlaubt, sein eigenes Passwort zu setzen, andernfalls kannst du sein Passwort selbst setzen.',
+ 'users_send_invite_option' => 'Benutzer-Einladungs-E-Mail senden',
+ 'users_external_auth_id' => 'Externe Authentifizierungs-ID',
+ 'users_external_auth_id_desc' => 'Wenn ein externes Authentifizierungssystem verwendet wird (z. B. SAML2, OIDC oder LDAP) ist dies die ID, die diesen BookStack-Benutzer mit dem Authentifizierungs-Systemkonto verknüpft. Du kannst dieses Feld ignorieren, wenn du die Standard-E-Mail-basierte Authentifizierung verwenden.',
+ 'users_password_warning' => 'Fülle die untenstehenden Felder nur aus, wenn du das Passwort für diesen Benutzer ändern möchten.',
+ 'users_system_public' => 'Dieser Benutzer repräsentiert alle unangemeldeten Benutzer, die diese Seite betrachten. Er kann nicht zum Anmelden benutzt werden, sondern wird automatisch zugeordnet.',
+ 'users_delete' => 'Benutzer löschen',
+ 'users_delete_named' => 'Benutzer ":userName" löschen',
+ 'users_delete_warning' => 'Der Benutzer ":userName" wird aus dem System gelöscht.',
+ 'users_delete_confirm' => 'Bist du sicher, dass du diesen Benutzer löschen möchtest?',
+ 'users_migrate_ownership' => 'Besitz migrieren',
+ 'users_migrate_ownership_desc' => 'Wähle hier einen Benutzer, wenn du möchtest, dass ein anderer Benutzer der Besitzer aller Einträge wird, die diesem Benutzer derzeit gehören.',
+ 'users_none_selected' => 'Kein Benutzer ausgewählt',
+ 'users_edit' => 'Benutzer bearbeiten',
+ 'users_edit_profile' => 'Profil bearbeiten',
+ 'users_avatar' => 'Benutzer-Bild',
+ 'users_avatar_desc' => 'Das Bild sollte eine Auflösung von 256x256px haben.',
+ 'users_preferred_language' => 'Bevorzugte Sprache',
+ 'users_preferred_language_desc' => 'Diese Option ändert die Sprache, die für die Benutzeroberfläche der Anwendung verwendet wird. Dies hat keinen Einfluss auf von Benutzern erstellte Inhalte.',
+ 'users_social_accounts' => 'Social-Media Konten',
+ 'users_social_accounts_desc' => 'Zeigt den Status der verbundenen sozialen Konten für diesen Benutzer an. Social Accounts können zusätzlich zum primären Authentifizierungssystem für den Systemzugriff verwendet werden.',
+ 'users_social_accounts_info' => 'Hier kannst Du andere Social-Media-Konten für eine schnellere und einfachere Anmeldung verknüpfen. Wenn Du ein Social-Media Konto löschst, bleibt der Zugriff erhalten. Entferne in diesem Falle die Berechtigung in Deinen Profil-Einstellungen des verknüpften Social-Media-Kontos.',
+ 'users_social_connect' => 'Social-Media-Konto verknüpfen',
+ 'users_social_disconnect' => 'Social-Media-Konto lösen',
+ 'users_social_status_connected' => 'Verbunden',
+ 'users_social_status_disconnected' => 'Getrennt',
+ 'users_social_connected' => ':socialAccount-Konto wurde erfolgreich mit dem Profil verknüpft.',
+ 'users_social_disconnected' => ':socialAccount-Konto wurde erfolgreich vom Profil gelöst.',
+ 'users_api_tokens' => 'API-Token',
+ 'users_api_tokens_desc' => 'Erstelle und verwalte die Zugangs-Tokens zur Authentifizierung mit der BookStack REST API. Berechtigungen für die API werden über den Benutzer verwaltet, dem das Token gehört.',
+ 'users_api_tokens_none' => 'Für diesen Benutzer wurden kein API-Token erstellt',
+ 'users_api_tokens_create' => 'Token erstellen',
+ 'users_api_tokens_expires' => 'Endet',
+ 'users_api_tokens_docs' => 'API Dokumentation',
+ 'users_mfa' => 'Multi-Faktor-Authentifizierung',
+ 'users_mfa_desc' => 'Richte Multi-Faktor-Authentifizierung als zusätzliche Sicherheitsstufe für dein Benutzerkonto ein.',
+ 'users_mfa_x_methods' => ':count Methode konfiguriert|:count Methoden konfiguriert',
+ 'users_mfa_configure' => 'Methoden konfigurieren',
+
+ // API Tokens
+ 'user_api_token_create' => 'Neuen API-Token erstellen',
+ 'user_api_token_name' => 'Name',
+ 'user_api_token_name_desc' => 'Gebe deinem Token einen aussagekräftigen Namen als spätere Erinnerung an seinen Verwendungszweck.',
+ 'user_api_token_expiry' => 'Ablaufdatum',
+ 'user_api_token_expiry_desc' => 'Lege ein Datum fest, zu dem dieser Token abläuft. Nach diesem Datum funktionieren Anfragen, die mit diesem Token gestellt werden, nicht mehr. Wenn du dieses Feld leer lässt, wird ein Ablaufdatum von 100 Jahren in der Zukunft festgelegt.',
+ 'user_api_token_create_secret_message' => 'Unmittelbar nach der Erstellung dieses Tokens wird eine "Token ID" & ein "Token Kennwort" generiert und angezeigt. Das Kennwort wird nur ein einziges Mal angezeigt. Stelle also sicher, dass du den Inhalt an einen sicheren Ort kopierst, bevor du fortfährst.',
+ 'user_api_token' => 'API-Token',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'Dies ist ein nicht editierbarer, vom System generierter Identifikator für diesen Token, welcher bei API-Anfragen angegeben werden muss.',
+ 'user_api_token_secret' => 'Token Kennwort',
+ 'user_api_token_secret_desc' => 'Dies ist ein systemgeneriertes Kennwort für diesen Token, das bei API-Anfragen zur Verfügung gestellt werden muss. Es wird nur dieses eine Mal angezeigt, deshalb kopiere diesen an einen sicheren und geschützten Ort.',
+ 'user_api_token_created' => 'Token erstellt :timeAgo',
+ 'user_api_token_updated' => 'Token aktualisiert :timeAgo',
+ 'user_api_token_delete' => 'Lösche Token',
+ 'user_api_token_delete_warning' => 'Dies löscht den API-Token mit dem Namen \':tokenName\' vollständig aus dem System.',
+ 'user_api_token_delete_confirm' => 'Bist du sicher, dass du diesen API-Token löschen möchtest?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks sind eine Möglichkeit, Daten an externe URLs zu senden, wenn bestimmte Aktionen und Ereignisse im System auftreten, was eine ereignisbasierte Integration mit externen Plattformen wie Messaging- oder Benachrichtigungssystemen ermöglicht.',
+ 'webhooks_x_trigger_events' => ':count Auslöserereignis|:count Auslöserereignisse',
+ 'webhooks_create' => 'Neuen Webhook erstellen',
+ 'webhooks_none_created' => 'Es wurden noch keine Webhooks erstellt.',
+ 'webhooks_edit' => 'Webhook bearbeiten',
+ 'webhooks_save' => 'Webhook speichern',
+ 'webhooks_details' => 'Webhook-Details',
+ 'webhooks_details_desc' => 'Gebe einen benutzerfreundlichen Namen und einen POST-Endpunkt als Ziel an, an den die Webhook-Daten gesendet werden sollen.',
+ 'webhooks_events' => 'Webhook Ereignisse',
+ 'webhooks_events_desc' => 'Wähle alle Ereignisse, die diesen Webhook auslösen sollen.',
+ 'webhooks_events_warning' => 'Beachte, dass diese Ereignisse für alle ausgewählten Ereignisse ausgelöst werden, auch wenn benutzerdefinierte Berechtigungen angewendet werden. Stelle sicher, dass die Verwendung dieses Webhooks keine vertraulichen Inhalte enthüllt.',
+ 'webhooks_events_all' => 'Alle System-Ereignisse',
+ 'webhooks_name' => 'Webhook-Name',
+ 'webhooks_timeout' => 'Webhook Request Timeout (Sekunden)',
+ 'webhooks_endpoint' => 'Webhook Endpunkt',
+ 'webhooks_active' => 'Webhook aktiv',
+ 'webhook_events_table_header' => 'Ereignisse',
+ 'webhooks_delete' => 'Webhook löschen',
+ 'webhooks_delete_warning' => 'Dies wird diesen Webhook mit dem Namen \':webhookName\' vollständig aus dem System löschen.',
+ 'webhooks_delete_confirm' => 'Bist du sicher, dass du diesen Webhook löschen möchtest?',
+ 'webhooks_format_example' => 'Webhook Format Beispiel',
+ 'webhooks_format_example_desc' => 'Webhook Daten werden als POST-Anfrage an den konfigurierten Endpunkt als JSON im folgenden Format gesendet. Die Eigenschaften "related_item" und "url" sind optional und hängen vom Typ des ausgelösten Ereignisses ab.',
+ 'webhooks_status' => 'Webhook-Status',
+ 'webhooks_last_called' => 'Zuletzt aufgerufen:',
+ 'webhooks_last_errored' => 'Letzter Fehler:',
+ 'webhooks_last_error_message' => 'Letzte Fehlermeldung:',
+
+ // Licensing
+ 'licenses' => 'Lizenzen',
+ 'licenses_desc' => 'Diese Seite beschreibt Lizenzinformationen für BookStack zusätzlich zu den Projekten und Bibliotheken, die in BookStack verwendet werden. Viele aufgelistete Projekte werden nur in einem Entwicklungskontext verwendet.',
+ 'licenses_bookstack' => 'BookStack-Lizenz',
+ 'licenses_php' => 'PHP-Bibliothekslizenzen',
+ 'licenses_js' => 'JavaScript-Bibliothekslizenzen',
+ 'licenses_other' => 'Andere Lizenzen',
+ 'license_details' => 'Lizenzdetails',
+
+ //! If editing translations files directly please ignore this in all
+ //! languages apart from en. Content will be auto-copied from en.
+ //!////////////////////////////////
+ 'language_select' => [
+ 'en' => 'Englisch',
+ 'ar' => 'Arabisch',
+ 'bg' => 'Bulgarisch',
+ 'bs' => 'Bosnisch',
+ 'ca' => 'Katalanisch',
+ 'cs' => 'Tschechisch',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dänisch',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Spanisch',
+ 'es_AR' => 'Spanisch Argentinisch',
+ 'et' => 'Estnisch',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Französisch',
+ 'he' => 'עברית',
+ 'hr' => 'Kroatisch',
+ 'hu' => 'Ungarisch',
+ 'id' => 'Bahasa-Indonesisch',
+ 'it' => 'Italienisch',
+ 'ja' => 'Japanisch',
+ 'ko' => 'Koreanisch',
+ 'lt' => 'Litauisch',
+ 'lv' => 'Lettisch',
+ 'nb' => 'Norwegisch (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Niederländisch',
+ 'pl' => 'Polnisch',
+ 'pt' => 'Portugiesisch',
+ 'pt_BR' => 'Portugiesisch (Brasilien)',
+ 'ro' => 'Română',
+ 'ru' => 'Russisch',
+ 'sk' => 'Slowenisch',
+ 'sl' => 'Slowenisch',
+ 'sv' => 'Schwedisch',
+ 'tr' => 'Türkisch',
+ 'uk' => 'Ukrainisch',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Vietnamesisch',
+ 'zh_CN' => 'Vereinfachtes Chinesisch',
+ 'zh_TW' => 'Traditionelles Chinesisch',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/de_informal/validation.php b/lang/de_informal/validation.php
new file mode 100644
index 00000000000..d693adecd83
--- /dev/null
+++ b/lang/de_informal/validation.php
@@ -0,0 +1,123 @@
+ ':attribute muss akzeptiert werden.',
+ 'active_url' => ':attribute ist keine gültige URL.',
+ 'after' => ':attribute muss ein Datum nach :date sein.',
+ 'alpha' => ':attribute kann nur Buchstaben enthalten.',
+ 'alpha_dash' => ':attribute kann nur Buchstaben, Zahlen und Bindestriche enthalten.',
+ 'alpha_num' => ':attribute kann nur Buchstaben und Zahlen enthalten.',
+ 'array' => ':attribute muss ein Array sein.',
+ 'backup_codes' => 'Der angegebene Code ist ungültig oder wurde bereits verwendet.',
+ 'before' => ':attribute muss ein Datum vor :date sein.',
+ 'between' => [
+ 'numeric' => ':attribute muss zwischen :min und :max liegen.',
+ 'file' => ':attribute muss zwischen :min und :max Kilobytes groß sein.',
+ 'string' => ':attribute muss zwischen :min und :max Zeichen lang sein.',
+ 'array' => ':attribute muss zwischen :min und :max Elemente enthalten.',
+ ],
+ 'boolean' => ':attribute Feld muss wahr oder falsch sein.',
+ 'confirmed' => ':attribute stimmt nicht überein.',
+ 'date' => ':attribute ist kein gültiges Datum.',
+ 'date_format' => ':attribute entspricht nicht dem Format :format.',
+ 'different' => ':attribute und :other müssen unterschiedlich sein.',
+ 'digits' => ':attribute muss :digits Stellen haben.',
+ 'digits_between' => ':attribute muss zwischen :min und :max Stellen haben.',
+ 'email' => ':attribute muss eine gültige E-Mail-Adresse sein.',
+ 'ends_with' => ':attribute muss mit einem der folgenden Werte: :values enden',
+ 'file' => ':attribute muss als gültige Datei angegeben werden.',
+ 'filled' => ':attribute ist erforderlich.',
+ 'gt' => [
+ 'numeric' => ':attribute muss größer als :value sein.',
+ 'file' => ':attribute muss mindestens größer als :value Kilobytes sein.',
+ 'string' => ':attribute muss mehr als :value Zeichen haben.',
+ 'array' => ':attribute muss mehr als :value Elemente haben.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute muss größer-gleich :value sein.',
+ 'file' => ':attribute muss größer-gleich :value Kilobytes sein.',
+ 'string' => ':attribute muss mindestens :value Zeichen haben.',
+ 'array' => ':attribute muss :value Elemente oder mehr haben.',
+ ],
+ 'exists' => ':attribute ist ungültig.',
+ 'image' => ':attribute muss ein Bild sein.',
+ 'image_extension' => ':attribute muss eine gültige und unterstützte Bild-Dateiendung haben.',
+ 'in' => ':attribute ist ungültig.',
+ 'integer' => ':attribute muss eine Zahl sein.',
+ 'ip' => ':attribute muss eine gültige IP-Adresse sein.',
+ 'ipv4' => ':attribute muss eine gültige IPv4-Adresse sein.',
+ 'ipv6' => ':attribute muss eine gültige IPv6-Adresse sein.',
+ 'json' => ':attribute muss ein gültiger JSON-String sein.',
+ 'lt' => [
+ 'numeric' => ':attribute muss kleiner als :value sein.',
+ 'file' => ':attribute muss kleiner als :value Kilobytes sein.',
+ 'string' => ':attribute muss weniger als :value Zeichen haben.',
+ 'array' => ':attribute muss weniger als :value Elemente haben.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute muss kleiner oder gleich :value sein.',
+ 'file' => ':attribute muss kleiner oder gleich :value Kilobytes sein.',
+ 'string' => ':attribute muss :value oder weniger Zeichen haben.',
+ 'array' => ':attribute darf höchstens :value Elemente haben.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute darf nicht größer als :max sein.',
+ 'file' => ':attribute darf nicht größer als :max Kilobyte sein.',
+ 'string' => ':attribute darf nicht länger als :max Zeichen sein.',
+ 'array' => ':attribute darf nicht mehr als :max Elemente enthalten.',
+ ],
+ 'mimes' => ':attribute muss eine Datei vom Typ: :values sein.',
+ 'min' => [
+ 'numeric' => ':attribute muss mindestens :min sein.',
+ 'file' => ':attribute muss mindestens :min Kilobyte groß sein.',
+ 'string' => ':attribute muss mindestens :min Zeichen lang sein.',
+ 'array' => ':attribute muss mindesten :min Elemente enthalten.',
+ ],
+ 'not_in' => 'Das ausgewählte :attribute ist ungültig.',
+ 'not_regex' => ':attribute ist kein gültiges Format.',
+ 'numeric' => ':attribute muss eine Zahl sein.',
+ 'regex' => ':attribute ist in einem ungültigen Format.',
+ 'required' => ':attribute ist erforderlich.',
+ 'required_if' => ':attribute ist erforderlich, wenn :other :value ist.',
+ 'required_with' => ':attribute ist erforderlich, wenn :values vorhanden ist.',
+ 'required_with_all' => ':attribute ist erforderlich, wenn :values vorhanden sind.',
+ 'required_without' => ':attribute ist erforderlich, wenn :values nicht vorhanden ist.',
+ 'required_without_all' => ':attribute ist erforderlich, wenn :values nicht vorhanden sind.',
+ 'same' => ':attribute und :other müssen übereinstimmen.',
+ 'safe_url' => 'Der angegebene Link ist möglicherweise nicht sicher.',
+ 'size' => [
+ 'numeric' => ':attribute muss :size sein.',
+ 'file' => ':attribute muss :size Kilobytes groß sein.',
+ 'string' => ':attribute muss :size Zeichen lang sein.',
+ 'array' => ':attribute muss :size Elemente enthalten.',
+ ],
+ 'string' => ':attribute muss eine Zeichenkette sein.',
+ 'timezone' => ':attribute muss eine gültige Zeitzone sein.',
+ 'totp' => 'Der angegebene Code ist ungültig oder abgelaufen.',
+ 'unique' => ':attribute wird bereits verwendet.',
+ 'url' => ':attribute ist kein valides Format.',
+ 'uploaded' => 'Die Datei konnte nicht hochgeladen werden. Der Server akzeptiert möglicherweise keine Dateien dieser Größe.',
+
+ 'zip_file' => ':attribute muss auf eine Datei innerhalb des ZIP verweisen.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => ':attribute muss eine Datei des Typs :validType referenzieren, gefunden :foundType.',
+ 'zip_model_expected' => 'Datenobjekt erwartet, aber ":type" gefunden.',
+ 'zip_unique' => ':attribute muss für den Objekttyp innerhalb des ZIP eindeutig sein.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Passwortbestätigung erforderlich',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/el/activities.php b/lang/el/activities.php
new file mode 100644
index 00000000000..226ef254074
--- /dev/null
+++ b/lang/el/activities.php
@@ -0,0 +1,140 @@
+ 'σελίδα που δημιουργήθηκε',
+ 'page_create_notification' => 'Η σελίδα δημιουργήθηκε με επιτυχία',
+ 'page_update' => 'ενημερωμένη σελίδα',
+ 'page_update_notification' => 'Η σελίδα ενημερώθηκε με επιτυχία',
+ 'page_delete' => 'διαγραμμένη σελίδα',
+ 'page_delete_notification' => 'Η σελίδα διαγράφηκε επιτυχώς',
+ 'page_restore' => 'αποκατεστημένη σελίδα',
+ 'page_restore_notification' => 'Η σελίδα αποκαταστάθηκε με επιτυχία',
+ 'page_move' => 'σελίδα που μετακινήθηκε',
+ 'page_move_notification' => 'Η σελίδα μετακινήθηκε με επιτυχία',
+
+ // Chapters
+ 'chapter_create' => 'δημιουργήθηκε κεφάλαιο',
+ 'chapter_create_notification' => 'Το κεφάλαιο δημιουργήθηκε με επιτυχία',
+ 'chapter_update' => 'ενημερωμένο κεφάλαιο',
+ 'chapter_update_notification' => 'Το κεφάλαιο ενημερώθηκε με επιτυχία',
+ 'chapter_delete' => 'διαγραμμένο κεφάλαιο',
+ 'chapter_delete_notification' => 'Το κεφάλαιο διαγράφηκε επιτυχώς',
+ 'chapter_move' => 'το κεφάλαιο μετακινήθηκε',
+ 'chapter_move_notification' => 'Το κεφάλαιο μετακινήθηκε με επιτυχία',
+
+ // Books
+ 'book_create' => 'το βιβλίο δημιουργήθηκε',
+ 'book_create_notification' => 'Το βιβλίο δημιουργήθηκε με επιτυχία',
+ 'book_create_from_chapter' => 'Το κεφάλαιο μετατράπηκε επιτυχώς σε βιβλίο',
+ 'book_create_from_chapter_notification' => 'Το κεφάλαιο μετατράπηκε επιτυχώς σε βιβλίο',
+ 'book_update' => 'ενημερωμένο βιβλίο',
+ 'book_update_notification' => 'Το βιβλίο ενημερώθηκε με επιτυχία',
+ 'book_delete' => 'διαγραμμένο βιβλίο',
+ 'book_delete_notification' => 'Το βιβλίο διαγράφηκε επιτυχώς',
+ 'book_sort' => 'ταξινομημένο βιβλίο',
+ 'book_sort_notification' => 'Το βιβλίο επαναταξινομήθηκε επιτυχώς',
+
+ // Bookshelves
+ 'bookshelf_create' => 'δημιουργήθηκε ράφι',
+ 'bookshelf_create_notification' => 'Το ράφι δημιουργήθηκε με επιτυχία',
+ 'bookshelf_create_from_book' => 'το βιβλίο μετατράπηκε σε ράφι',
+ 'bookshelf_create_from_book_notification' => 'Το βιβλίο μετατράπηκε σε ράφι επιτυχώς',
+ 'bookshelf_update' => 'ενημερωμένο ράφι',
+ 'bookshelf_update_notification' => 'Το ράφι ενημερώθηκε επιτυχώς',
+ 'bookshelf_delete' => 'διαγραμμένο ράφι',
+ 'bookshelf_delete_notification' => 'Το ράφι ενημερώθηκε επιτυχώς',
+
+ // Revisions
+ 'revision_restore' => 'αποκατεστημένη αναθεώρηση',
+ 'revision_delete' => 'διαγραμμένη αναθεώρηση',
+ 'revision_delete_notification' => 'Η αναθεώρηση διαγράφηκε με επιτυχία',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" προστέθηκε στα αγαπημένα σας',
+ 'favourite_remove_notification' => '":name" προστέθηκε στα αγαπημένα σας',
+
+ // Watching
+ 'watch_update_level_notification' => 'Οι προτιμήσεις παρακολούθησης ενημερώθηκαν επιτυχώς',
+
+ // Auth
+ 'auth_login' => 'συνδεδεμένος',
+ 'auth_register' => 'εγγεγραμμένος ως νέος χρήστης',
+ 'auth_password_reset_request' => 'ζητήθηκε επαναφορά κωδικού πρόσβασης χρήστη',
+ 'auth_password_reset_update' => 'επαναφορά κωδικού πρόσβασης χρήστη',
+ 'mfa_setup_method' => 'διαμορφωμένη μέθοδος MFA',
+ 'mfa_setup_method_notification' => 'Η μέθοδος πολλαπλών παραγόντων διαμορφώθηκε επιτυχώς',
+ 'mfa_remove_method' => 'καταργήθηκε η μέθοδος MFA',
+ 'mfa_remove_method_notification' => 'Η μέθοδος πολλαπλών παραγόντων καταργήθηκε με επιτυχία',
+
+ // Settings
+ 'settings_update' => 'ενημερωμένες ρυθμίσεις',
+ 'settings_update_notification' => 'Οι ρυθμίσεις ενημερώθηκαν με επιτυχία',
+ 'maintenance_action_run' => 'έτρεξε δράση συντήρησης',
+
+ // Webhooks
+ 'webhook_create' => 'Το webhook δημιουργήθηκε',
+ 'webhook_create_notification' => 'Το Webhook δημιουργήθηκε με επιτυχία',
+ 'webhook_update' => 'ενημερωμένο webhook',
+ 'webhook_update_notification' => 'Το Webhook ενημερώθηκε με επιτυχία',
+ 'webhook_delete' => 'διαγραμμένο webhook',
+ 'webhook_delete_notification' => 'Το Webhook διαγράφηκε επιτυχώς',
+
+ // Imports
+ 'import_create' => 'δημιουργημένη εισαγωγή',
+ 'import_create_notification' => 'Το εισαγόμενο αρχείο μεταφορτώθηκε επιτυχώς',
+ 'import_run' => 'ενημερωμένη εισαγωγή',
+ 'import_run_notification' => 'Το περιεχόμενο εισήχθη επιτυχώς',
+ 'import_delete' => 'διαγραμμένη εισαγωγή',
+ 'import_delete_notification' => 'Η εισαγωγή διαγράφηκε επιτυχώς',
+
+ // Users
+ 'user_create' => 'δημιουργημένος χρήστης',
+ 'user_create_notification' => 'Ο χρήστης δημιουργήθηκε με επιτυχία',
+ 'user_update' => 'ενημερωμένος χρήστης',
+ 'user_update_notification' => 'Ο Χρήστης ενημερώθηκε με επιτυχία',
+ 'user_delete' => 'διαγραμμένος χρήστης',
+ 'user_delete_notification' => 'Ο Χρήστης αφαιρέθηκε επιτυχώς',
+
+ // API Tokens
+ 'api_token_create' => 'created API token',
+ 'api_token_create_notification' => 'O κωδικός API δημιουργήθηκε με επιτυχία',
+ 'api_token_update' => 'updated API token',
+ 'api_token_update_notification' => 'κωδικός API ενημερώθηκε με επιτυχία',
+ 'api_token_delete' => 'deleted API token',
+ 'api_token_delete_notification' => 'Το διακριτικό API διαγράφηκε με επιτυχία',
+
+ // Roles
+ 'role_create' => 'δημιουργημένος ρόλος',
+ 'role_create_notification' => 'Ο Ρόλος δημιουργήθηκε με επιτυχία',
+ 'role_update' => 'Ενημέρωση ρόλου',
+ 'role_update_notification' => 'Ο Ρόλος ενημερώθηκε με επιτυχία',
+ 'role_delete' => 'διαγραμμένος ρόλος',
+ 'role_delete_notification' => 'Ο Ρόλος διαγράφηκε επιτυχώς',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'αδειασμένος κάδος ανακύκλωσης',
+ 'recycle_bin_restore' => 'αποκαταστάθηκε από τον κάδο ανακύκλωσης',
+ 'recycle_bin_destroy' => 'αφαιρέθηκε από τον κάδο ανακύκλωσης',
+
+ // Comments
+ 'commented_on' => 'σχολίασε',
+ 'comment_create' => 'προστέθηκε σχόλιο',
+ 'comment_update' => 'ενημερώθηκε σχόλιο',
+ 'comment_delete' => 'διαγράφηκε σχόλιο',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'ενημερωμένα δικαιώματα',
+];
diff --git a/lang/el/auth.php b/lang/el/auth.php
new file mode 100644
index 00000000000..0b94ef859dd
--- /dev/null
+++ b/lang/el/auth.php
@@ -0,0 +1,117 @@
+ 'Αυτά τα διαπιστευτήρια δεν ταιριάζουν με τα αρχεία μας.',
+ 'throttle' => 'Πάρα πολλές προσπάθειες σύνδεσης. Δοκιμάστε ξανά σε :δευτερόλεπτα.',
+
+ // Login & Register
+ 'sign_up' => 'Εγγραφείτε',
+ 'log_in' => 'Σύνδεση',
+ 'log_in_with' => 'Συνδεθείτε με το :socialDriver',
+ 'sign_up_with' => 'Εγγραφείτε με το :socialDriver',
+ 'logout' => 'Αποσύνδεση',
+
+ 'name' => 'Όνομα',
+ 'username' => 'Όνομα χρήστη',
+ 'email' => 'Email',
+ 'password' => 'Ο κωδικός σας',
+ 'password_confirm' => 'Επιβεβαιώστε τον κωδικό σας',
+ 'password_hint' => 'Πρέπει να αποτελείται από τουλάχιστον 8 χαρακτήρες',
+ 'forgot_password' => 'Ξεχάσατε τον κωδικό σας;',
+ 'remember_me' => 'Θυμήσου με',
+ 'ldap_email_hint' => 'Εισαγάγετε ένα email για χρήση για αυτόν τον λογαριασμό.',
+ 'create_account' => 'Δημιουργήστε λογαριασμό',
+ 'already_have_account' => 'Έχετε ήδη λογαριασμό;',
+ 'dont_have_account' => 'Δεν έχετε λογαριασμό;',
+ 'social_login' => 'Είσοδος με Social MEdia',
+ 'social_registration' => 'Εγγραφήμε Social MEdia ',
+ 'social_registration_text' => 'Εγγραφείτε και συνδεθείτε χρησιμοποιώντας άλλη υπηρεσία.',
+
+ 'register_thanks' => 'Ευχαριστούμε για την εγγραφή!',
+ 'register_confirm' => 'Ελέγξτε το email σας και κάντε κλικ στο κουμπί επιβεβαίωσης για πρόσβαση στο :appName.',
+ 'registrations_disabled' => 'Οι εγγραφές είναι προς το παρόν απενεργοποιημένες',
+ 'registration_email_domain_invalid' => 'Αυτός ο τομέας ηλεκτρονικού ταχυδρομείου δεν έχει πρόσβαση σε αυτήν την εφαρμογή',
+ 'register_success' => 'Ευχαριστούμε για την εγγραφή! Είστε πλέον εγγεγραμμένοι και συνδεδεμένοι.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Προσπάθεια Σύνδεσης',
+ 'auto_init_starting_desc' => 'We\'re contacting your authentication system to start the login process. If there\'s no progress after 5 seconds you can try clicking the link below.',
+ 'auto_init_start_link' => 'Proceed with authentication',
+
+ // Password Reset
+ 'reset_password' => 'Επαναφορά κωδικού πρόσβασης',
+ 'reset_password_send_instructions' => 'Εισαγάγετε τη διεύθυνση του email σας παρακάτω και θα σας σταλεί ένα μήνυμα με έναν σύνδεσμο επαναφοράς του κωδικού πρόσβασης.',
+ 'reset_password_send_button' => 'Αποστολή Συνδέσμου Επαναφοράς',
+ 'reset_password_sent' => 'Ένας σύνδεσμος επαναφοράς κωδικού πρόσβασης θα αποσταλεί στο :email εάν αυτή η διεύθυνση email βρεθεί στο σύστημα.',
+ 'reset_password_success' => 'Ο κωδικός πρόσβασής σας επαναφέρθηκε με επιτυχία.',
+ 'email_reset_subject' => 'Επαναφέρετε τον κωδικό πρόσβασης :appName',
+ 'email_reset_text' => 'Λαμβάνετε αυτό το μήνυμα ηλεκτρονικού ταχυδρομείου επειδή λάβαμε ένα αίτημα επαναφοράς κωδικού πρόσβασης για τον λογαριασμό σας.',
+ 'email_reset_not_requested' => 'Εάν δεν ζητήσατε επαναφορά του κωδικού πρόσβασης, δεν απαιτείται καμία περαιτέρω ενέργεια.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Επιβεβαιώστε το email σας στο :appName',
+ 'email_confirm_greeting' => 'Ευχαριστούμε για τη συμμετοχή σας στο :appName!',
+ 'email_confirm_text' => 'Επιβεβαιώστε τη διεύθυνση email σας κάνοντας κλικ στο παρακάτω κουμπί:',
+ 'email_confirm_action' => 'Επιβεβαίωση διεύθυνσης ηλεκτρονικού ταχυδρομείου',
+ 'email_confirm_send_error' => 'Απαιτείται επιβεβαίωση μέσω email, αλλά το σύστημα δεν μπόρεσε να στείλει το email. Επικοινωνήστε με τον διαχειριστή για να βεβαιωθείτε ότι το email έχει ρυθμιστεί σωστά.',
+ 'email_confirm_success' => 'Το email σας επιβεβαιώθηκε! Θα πρέπει τώρα να μπορείτε να συνδεθείτε χρησιμοποιώντας αυτήν τη διεύθυνση email.',
+ 'email_confirm_resent' => 'Το email επιβεβαίωσης στάλθηκε εκ νέου. Ελέγξτε τα εισερχόμενά σας.',
+ 'email_confirm_thanks' => 'Ευχαριστούμε για την επιβεβαίωση!',
+ 'email_confirm_thanks_desc' => 'Παρακαλώ περιμένετε λίγο όσο διεκπεραιώνεται η επιβεβαίωσή σας. Εάν δεν ανακατευθυνθείτε μετά από 3 δευτερόλεπτα, πατήστε τον παρακάτω σύνδεσμο "Συνέχεια" για να συνεχίσετε.',
+
+ 'email_not_confirmed' => 'Η διεύθυνση email δεν επιβεβαιώθηκε',
+ 'email_not_confirmed_text' => 'Η διεύθυνση email σας δεν έχει ακόμη επιβεβαιωθεί.',
+ 'email_not_confirmed_click_link' => 'Κάντε κλικ στο σύνδεσμο στο email που στάλθηκε λίγο μετά την εγγραφή σας.',
+ 'email_not_confirmed_resend' => 'Εάν δεν μπορείτε να βρείτε το email, μπορείτε να στείλετε ξανά το email επιβεβαίωσης υποβάλλοντας την παρακάτω φόρμα.',
+ 'email_not_confirmed_resend_button' => 'Ξαναστείλτε μήνυμα επιβεβαίωσης',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Έχετε προσκληθεί να συμμετάσχετε :appName!',
+ 'user_invite_email_greeting' => 'Έχει δημιουργηθεί ένας λογαριασμός για εσάς στο :appName.',
+ 'user_invite_email_text' => 'Κάντε κλικ στο κουμπί παρακάτω για να ορίσετε έναν κωδικό πρόσβασης λογαριασμού και να αποκτήσετε πρόσβαση:',
+ 'user_invite_email_action' => 'Ορισμός κωδικού πρόσβασης λογαριασμού',
+ 'user_invite_page_welcome' => 'Καλωσόρισες στο :appName!',
+ 'user_invite_page_text' => 'Για να οριστικοποιήσετε τον λογαριασμό σας και να αποκτήσετε πρόσβαση, πρέπει να ορίσετε έναν κωδικό πρόσβασης που θα χρησιμοποιείται για να συνδεθείτε στο :appName σε μελλοντικές επισκέψεις.',
+ 'user_invite_page_confirm_button' => 'Επιβεβαίωση Κωδικού',
+ 'user_invite_success_login' => 'Ορίστηκε κωδικός πρόσβασης, θα πρέπει τώρα να μπορείτε να συνδεθείτε χρησιμοποιώντας τον καθορισμένο κωδικό πρόσβασης για να αποκτήσετε πρόσβαση στο :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Ρύθμιση ελέγχου ταυτότητας πολλαπλών παραγόντων',
+ 'mfa_setup_desc' => 'Ρυθμίστε τον έλεγχο ταυτότητας πολλαπλών παραγόντων ως ένα επιπλέον επίπεδο ασφάλειας για τον λογαριασμό χρήστη σας.',
+ 'mfa_setup_configured' => 'Έχει ήδη διαμορφωθεί',
+ 'mfa_setup_reconfigure' => 'Επαναδιαμόρφωση',
+ 'mfa_setup_remove_confirmation' => 'Είστε βέβαιοι ότι θέλετε να καταργήσετε αυτήν τη μέθοδο ελέγχου ταυτότητας πολλαπλών παραγόντων;',
+ 'mfa_setup_action' => 'Ρύθμιση',
+ 'mfa_backup_codes_usage_limit_warning' => 'Έχετε λιγότερους από 5 εφεδρικούς κωδικούς που απομένουν. Δημιουργήστε και αποθηκεύστε ένα νέο σύνολο προτού εξαντληθούν οι κωδικοί για να αποφύγετε τον αποκλεισμό του λογαριασμού σας.',
+ 'mfa_option_totp_title' => 'Εφαρμογή για κινητό',
+ 'mfa_option_totp_desc' => 'Για να χρησιμοποιήσετε τον έλεγχο ταυτότητας πολλαπλών παραγόντων, θα χρειαστείτε μια εφαρμογή για κινητά που υποστηρίζει TOTP, όπως το Google Authenticator, το Authy ή το Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Εφεδρικοί κωδικοί',
+ 'mfa_option_backup_codes_desc' => 'Δημιουργεί ένα σύνολο εφεδρικών κωδικών μίας χρήσης τους οποίους θα εισάγετε κατά τη σύνδεση σας, για να πιστοποιήσετε την ταυτότητά σας. Φροντίστε να τους αποθηκεύσετε σε ασφαλές σημείο.',
+ 'mfa_gen_confirm_and_enable' => 'Επιβεβαίωση και ενεργοποίηση',
+ 'mfa_gen_backup_codes_title' => 'Ρύθμιση εφεδρικών κωδικών',
+ 'mfa_gen_backup_codes_desc' => 'Αποθηκεύστε την παρακάτω λίστα κωδικών σε ασφαλές μέρος. Κατά την πρόσβαση στο σύστημα, θα μπορείτε να χρησιμοποιήσετε έναν από τους κωδικούς ως δεύτερο μηχανισμό ελέγχου ταυτότητας.',
+ 'mfa_gen_backup_codes_download' => 'Λήψη κωδικών',
+ 'mfa_gen_backup_codes_usage_warning' => 'Κάθε κωδικός μπορεί να χρησιμοποιηθεί μόνο μία φορά',
+ 'mfa_gen_totp_title' => 'Ρύθμιση εφαρμογής για κινητά',
+ 'mfa_gen_totp_desc' => 'Για να χρησιμοποιήσετε τον έλεγχο ταυτότητας πολλαπλών παραγόντων, θα χρειαστείτε μια εφαρμογή για κινητά που υποστηρίζει TOTP, όπως το Google Authenticator, το Authy ή το Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Σαρώστε τον παρακάτω κωδικό QR χρησιμοποιώντας την προτιμώμενη εφαρμογή ελέγχου ταυτότητας για να ξεκινήσετε.',
+ 'mfa_gen_totp_verify_setup' => 'Επαληθεύστε τη ρύθμιση',
+ 'mfa_gen_totp_verify_setup_desc' => 'Επαληθεύστε ότι όλα λειτουργούν εισάγοντας έναν κωδικό, που δημιουργήθηκε στην εφαρμογή ελέγχου ταυτότητας, στο παρακάτω πλαίσιο εισαγωγής:',
+ 'mfa_gen_totp_provide_code_here' => 'Εισάγετε τον κώδικα που δημιουργήθηκε από την εφαρμογή σας εδώ',
+ 'mfa_verify_access' => 'Επαλήθευση πρόσβασης',
+ 'mfa_verify_access_desc' => 'Ο λογαριασμός σας απαιτεί να επιβεβαιώσετε την ταυτότητά σας μέσω ενός πρόσθετου επιπέδου επαλήθευσης προτού σας παραχωρηθεί πρόσβαση. Επαληθεύστε χρησιμοποιώντας μία από τις διαμορφωμένες μεθόδους σας για να συνεχίσετε.',
+ 'mfa_verify_no_methods' => 'Δεν έχουν διαμορφωθεί μέθοδοι.',
+ 'mfa_verify_no_methods_desc' => 'Δεν βρέθηκαν μέθοδοι ελέγχου ταυτότητας πολλαπλών παραγόντων για τον λογαριασμό σας. Θα χρειαστεί να ρυθμίσετε τουλάχιστον μία μέθοδο προτού αποκτήσετε πρόσβαση.',
+ 'mfa_verify_use_totp' => 'Επαληθεύστε χρησιμοποιώντας μια εφαρμογή για κινητά',
+ 'mfa_verify_use_backup_codes' => 'Επαληθεύστε χρησιμοποιώντας έναν εφεδρικό κωδικό',
+ 'mfa_verify_backup_code' => 'Εφεδρικός κωδικός',
+ 'mfa_verify_backup_code_desc' => 'Εισαγάγετε έναν από τους υπόλοιπους εφεδρικούς κωδικούς σας παρακάτω:',
+ 'mfa_verify_backup_code_enter_here' => 'Εισαγάγετε τον εφεδρικό κωδικό εδώ:',
+ 'mfa_verify_totp_desc' => 'Εισαγάγετε τον κωδικό, που δημιουργήθηκε χρησιμοποιώντας την εφαρμογή σας για κινητά, παρακάτω:',
+ 'mfa_setup_login_notification' => 'Η μέθοδος πολλαπλών παραγόντων έχει διαμορφωθεί. Συνδεθείτε ξανά χρησιμοποιώντας τη ρυθμισμένη μέθοδο.',
+];
diff --git a/lang/el/common.php b/lang/el/common.php
new file mode 100644
index 00000000000..39c5aad18fd
--- /dev/null
+++ b/lang/el/common.php
@@ -0,0 +1,115 @@
+ 'Ακύρωση',
+ 'close' => 'Κλείσιμο',
+ 'confirm' => 'Οκ',
+ 'back' => 'Πίσω',
+ 'save' => 'Αποθήκευση',
+ 'continue' => 'Συνέχεια',
+ 'select' => 'Επιλογή',
+ 'toggle_all' => 'Εναλλαγή όλων',
+ 'more' => 'Περισσότερα..',
+
+ // Form Labels
+ 'name' => 'Όνομα',
+ 'description' => 'Περιγραφή',
+ 'role' => 'Ρόλος',
+ 'cover_image' => 'Εικόνα εξώφυλλου',
+ 'cover_image_description' => 'Αυτή η εικόνα θα πρέπει να είναι περίπου 440x250px, αν και θα κλιμακωθεί και θα περικοπεί με ευελιξία ώστε να ταιριάζει στη διεπαφή χρήστη σε διαφορετικά σενάρια όπως απαιτείται, επομένως οι πραγματικές διαστάσεις για την εμφάνιση θα διαφέρουν.',
+
+ // Actions
+ 'actions' => 'Ενέργειες',
+ 'view' => 'Προβολή',
+ 'view_all' => 'Προβολή όλων',
+ 'new' => 'Νέο',
+ 'create' => 'Δημιουργία',
+ 'update' => 'Ενημέρωση',
+ 'edit' => 'Επεξεργασία',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Ταξινόμηση',
+ 'move' => 'Μετακίνηση',
+ 'copy' => 'Αντιγραφή',
+ 'reply' => 'Απάντηση',
+ 'delete' => 'Διαγραφή',
+ 'delete_confirm' => 'Επιβεβαίωση Διαγραφής',
+ 'search' => 'Αναζήτηση',
+ 'search_clear' => 'Εκκαθάριση Αναζήτησης',
+ 'reset' => 'Επαναφορά',
+ 'remove' => 'Αφαίρεση',
+ 'add' => 'Προσθήκη',
+ 'configure' => 'Διαμόρφωση',
+ 'manage' => 'Διαχείριση',
+ 'fullscreen' => 'Πλήρης οθόνη',
+ 'favourite' => 'Αγαπημένα',
+ 'unfavourite' => 'Αφαίρεση από Αγαπημένα',
+ 'next' => 'Επόμενη',
+ 'previous' => 'Προηγούμενη',
+ 'filter_active' => 'Ενεργό φίλτρο:',
+ 'filter_clear' => 'Διαγραφή φίλτρου',
+ 'download' => 'Λήψη',
+ 'open_in_tab' => 'Άνοιγμα σε Καρτέλα',
+ 'open' => 'Άνοιγμα',
+
+ // Sort Options
+ 'sort_options' => 'Επιλογές ταξινόμησης',
+ 'sort_direction_toggle' => 'Εναλλαγή κατεύθυνσης ταξινόμησης',
+ 'sort_ascending' => 'Αύξουσα ταξινόμηση',
+ 'sort_descending' => 'Ταξινόμηση Φθίνουσα',
+ 'sort_name' => 'Ονομα',
+ 'sort_default' => 'Προεπιλογή',
+ 'sort_created_at' => 'Δημιουργήθηκε',
+ 'sort_updated_at' => 'Ενημερώθηκε',
+
+ // Misc
+ 'deleted_user' => 'Διαγραμμένος χρήστης',
+ 'no_activity' => 'Δεν υπάρχει δραστηριότητα προς εμφάνιση',
+ 'no_items' => 'Δεν υπάρχουν διαθέσιμα στοιχεία',
+ 'back_to_top' => 'Επιστροφή στην κορυφή',
+ 'skip_to_main_content' => 'Μετάβαση στο κύριο περιεχόμενο',
+ 'toggle_details' => 'Εναλλαγή λεπτομερειών',
+ 'toggle_thumbnails' => 'Εναλλαγή μικρογραφιών',
+ 'details' => 'Λεπτομέριες',
+ 'grid_view' => 'Προβολή σε πλέγμα',
+ 'list_view' => 'Προβολή σε λίστα',
+ 'default' => 'Προκαθορισμένο',
+ 'breadcrumb' => 'Μπάρα πλοήγησης',
+ 'status' => 'Κατάσταση',
+ 'status_active' => 'Ενεργός',
+ 'status_inactive' => 'Αδρανής',
+ 'never' => 'Ποτέ',
+ 'none' => 'Κανένας',
+
+ // Header
+ 'homepage' => 'Αρχική σελίδα',
+ 'header_menu_expand' => 'Αναπτύξτε το Head Menu',
+ 'profile_menu' => 'Μενού Προφίλ',
+ 'view_profile' => 'Προβολή προφίλ',
+ 'edit_profile' => 'Επεξεργασία προφίλ',
+ 'dark_mode' => 'Σκουρόχρωμη εμφάνιση',
+ 'light_mode' => 'Ανοιχτόχρωμη εμφάνιση',
+ 'global_search' => 'Καθολική αναζήτηση',
+
+ // Layout tabs
+ 'tab_info' => 'Πληροφορίες',
+ 'tab_info_label' => 'Καρτέλα: Εμφάνιση δευτερευουσών πληροφοριών',
+ 'tab_content' => 'Περιεχόμενο',
+ 'tab_content_label' => 'Καρτέλα: Εμφάνιση κύριου περιεχομένου',
+
+ // Email Content
+ 'email_action_help' => 'Εάν αντιμετωπίζετε πρόβλημα κάνοντας κλικ στο κουμπί ":actionText", αντιγράψτε και επικολλήστε την παρακάτω διεύθυνση URL στο πρόγραμμα περιήγησής σας στον ιστό:',
+ 'email_rights' => 'Ολα τα πνευματικά δικαιώματα διατηρούνται',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Πολιτική Απορρήτου',
+ 'terms_of_service' => 'Όροι χρήσης',
+
+ // OpenSearch
+ 'opensearch_description' => 'Αναζήτηση :appName',
+];
diff --git a/lang/el/components.php b/lang/el/components.php
new file mode 100644
index 00000000000..9c9d3e8f839
--- /dev/null
+++ b/lang/el/components.php
@@ -0,0 +1,46 @@
+ 'Επιλογή εικόνας',
+ 'image_list' => 'Κατάλογος εικόνων',
+ 'image_details' => 'Λεπτομέρειες εικόνας',
+ 'image_upload' => 'Μεταφόρτωση εικόνας',
+ 'image_intro' => 'Εδώ μπορείτε να επιλέξετε και να διαχειριστείτε εικόνες που έχουν προηγουμένως μεταφορτωθεί στο σύστημα.',
+ 'image_intro_upload' => 'Μεταφορτώστε μια νέα εικόνα σύροντας ένα αρχείο εικόνας σε αυτό το παράθυρο ή χρησιμοποιώντας το κουμπί "Μεταφόρτωση εικόνας" παραπάνω.',
+ 'image_all' => 'Όλες',
+ 'image_all_title' => 'Δείτε όλες τις εικόνες που υπάρχουν στο Server',
+ 'image_book_title' => 'Προβολή εικόνων που έχουν μεταφορτωθεί σε αυτό το βιβλίο',
+ 'image_page_title' => 'Προβολή εικόνων που έχουν δημοσιευτεί σε αυτήν τη σελίδα',
+ 'image_search_hint' => 'Αναζήτηση με όνομα εικόνας',
+ 'image_uploaded' => 'Μεταφορτώθηκε :uploadedDate',
+ 'image_uploaded_by' => 'Μεταφορτώθηκε από :userName',
+ 'image_uploaded_to' => 'Μεταφορτώθηκε στο :pageLink',
+ 'image_updated' => 'Ενημερώθηκε :updateDate',
+ 'image_load_more' => 'Φόρτωσε περισσότερα',
+ 'image_image_name' => 'Όνομα εικόνας',
+ 'image_delete_used' => 'Αυτή η εικόνα χρησιμοποιείται στις παρακάτω σελίδες.',
+ 'image_delete_confirm_text' => 'Είστε σίγουροι ότι θέλετε να διαγράψετε αυτήν την εικόνα;',
+ 'image_select_image' => 'Επιλέξτε Εικόνα',
+ 'image_dropzone' => 'Σύρτε ή κάντε κλικ εδώ για μεταφόρτωση εικόνων',
+ 'image_dropzone_drop' => 'Απόθεση εικόνων εδώ για μεταφόρτωση',
+ 'images_deleted' => 'Οι εικόνες διαγράφηκαν',
+ 'image_preview' => 'Προεπισκόπηση εικόνας',
+ 'image_upload_success' => 'Η εικόνα μεταφορτώθηκε με επιτυχία',
+ 'image_update_success' => 'Τα στοιχεία της εικόνας ενημερώθηκαν με επιτυχία',
+ 'image_delete_success' => 'Η εικόνα διαγράφηκε επιτυχώς',
+ 'image_replace' => 'Αντικατάσταση εικόνας',
+ 'image_replace_success' => 'Το αρχείο εικόνας ενημερώθηκε επιτυχώς',
+ 'image_rebuild_thumbs' => 'Επαναδημιουργία παραλλαγών μεγέθους',
+ 'image_rebuild_thumbs_success' => 'Οι παραλλαγές μεγέθους εικόνας ανακατασκευάστηκαν επιτυχώς!',
+
+ // Code Editor
+ 'code_editor' => 'Επεξεργασία κώδικα',
+ 'code_language' => 'Γλώσσα κώδικα',
+ 'code_content' => 'Περιεχόμενο κώδικα',
+ 'code_session_history' => 'Ιστορικό συνεδρίας',
+ 'code_save' => 'Αποθήκευση Κώδικα',
+];
diff --git a/lang/el/editor.php b/lang/el/editor.php
new file mode 100644
index 00000000000..9952e7fdff4
--- /dev/null
+++ b/lang/el/editor.php
@@ -0,0 +1,182 @@
+ 'Γενικά',
+ 'advanced' => 'Για Προχωρημένους',
+ 'none' => 'None',
+ 'cancel' => 'Ακύρωση',
+ 'save' => 'Αποθήκευση',
+ 'close' => 'Κλείσιμο',
+ 'apply' => 'Apply',
+ 'undo' => 'Αναίρεση',
+ 'redo' => 'Επανάληψη',
+ 'left' => 'Αριστερά',
+ 'center' => 'Κέντρο',
+ 'right' => 'Δεξιά',
+ 'top' => 'Πάνω',
+ 'middle' => 'Κέντρο',
+ 'bottom' => 'Κάτω',
+ 'width' => 'Πλάτος',
+ 'height' => 'Ύψος',
+ 'More' => 'Περισσότερα',
+ 'select' => 'Επιλέξτε...',
+
+ // Toolbar
+ 'formats' => 'Μορφοποίηση',
+ 'header_large' => 'Μεγάλη κεφαλίδα',
+ 'header_medium' => 'Μεσαία κεφαλίδα',
+ 'header_small' => 'Μικρή κεφαλίδα',
+ 'header_tiny' => 'Μικροσκοπική κεφαλίδα',
+ 'paragraph' => 'Παράγραφος',
+ 'blockquote' => 'Μπλοκ κειμένου παράθεσης',
+ 'inline_code' => 'Ενσωματωμένος κωδικός',
+ 'callouts' => 'Επεξηγήσεις',
+ 'callout_information' => 'Πληροφορίες',
+ 'callout_success' => 'Επιτυχία',
+ 'callout_warning' => 'Προειδοποίηση',
+ 'callout_danger' => 'Κίνδυνος',
+ 'bold' => 'Έντονη γραφή',
+ 'italic' => 'Πλάγια γραφή',
+ 'underline' => 'Υπογράμμιση',
+ 'strikethrough' => 'Διακριτή διαγραφή',
+ 'superscript' => 'Εκθέτης',
+ 'subscript' => 'Δείκτης',
+ 'text_color' => 'Χρώμα κειμένου',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Προσαρμογή χρώματος',
+ 'remove_color' => 'Αφαίρεση χρώματος',
+ 'background_color' => 'Χρώμα φόντου',
+ 'align_left' => 'Στοίχιση αριστερά',
+ 'align_center' => 'Στοίχιση κέντρο',
+ 'align_right' => 'Στοίχιση δεξιά',
+ 'align_justify' => 'Πλήρης στοίχιση',
+ 'list_bullet' => 'Λίστα με κουκκίδες',
+ 'list_numbered' => 'Λίστα με αρίθμηση',
+ 'list_task' => 'Λίστα εργασιών',
+ 'indent_increase' => 'Αύξηση Εσοχής',
+ 'indent_decrease' => 'Μείωση εσοχής',
+ 'table' => 'Πίνακας',
+ 'insert_image' => 'Εισαγωγή εικόνας',
+ 'insert_image_title' => 'Εισαγωγή/Επεξεργασία εικόνας',
+ 'insert_link' => 'Εισαγωγή/επεξεργασία συνδέσμου',
+ 'insert_link_title' => 'Εισαγωγή/Επεξεργασία συνδέσμου',
+ 'insert_horizontal_line' => 'Εισαγωγή οριζόντιας γραμμής',
+ 'insert_code_block' => 'Εισαγωγή μπλοκ κώδικα',
+ 'edit_code_block' => 'Επεξεργασία μπλοκ κώδικα',
+ 'insert_drawing' => 'Εισαγωγή/Επεξεργασία σχεδίου',
+ 'drawing_manager' => 'Διαχειριστής σχεδίασης',
+ 'insert_media' => 'Εισαγωγή/Επεξεργασία πολυμέσων',
+ 'insert_media_title' => 'Εισαγωγή/Επεξεργασία πολυμέσων',
+ 'clear_formatting' => 'Διαγραφή μορφοποίησης',
+ 'source_code' => 'Πηγαίος κώδικας',
+ 'source_code_title' => 'Πηγαίος κώδικας',
+ 'fullscreen' => 'Πλήρης οθόνη',
+ 'image_options' => 'Επιλογές εικόνας',
+
+ // Tables
+ 'table_properties' => 'Ιδιότητες πίνακα',
+ 'table_properties_title' => 'Ιδιότητες πίνακα',
+ 'delete_table' => 'Διαγραφή πίνακα',
+ 'table_clear_formatting' => 'Εκκαθάριση μορφοποίησης πίνακα',
+ 'resize_to_contents' => 'Αλλαγή μεγέθους σε περιεχόμενο',
+ 'row_header' => 'Κεφαλίδα γραμμής',
+ 'insert_row_before' => 'Εισαγωγή γραμμής πάνω',
+ 'insert_row_after' => 'Εισαγωγή γραμμής κάτω',
+ 'delete_row' => 'Διαγραφή γραμμής',
+ 'insert_column_before' => 'Εισαγωγή στήλης αριστερά',
+ 'insert_column_after' => 'Εισαγωγή στήλης δεξιά',
+ 'delete_column' => 'Διαγραφή στήλης',
+ 'table_cell' => 'Κελί',
+ 'table_row' => 'Γραμμή',
+ 'table_column' => 'Στήλη',
+ 'cell_properties' => 'Ιδιότητες κελιού',
+ 'cell_properties_title' => 'Ιδιότητες κελιού',
+ 'cell_type' => 'Τύπος κελιού',
+ 'cell_type_cell' => 'Κελί',
+ 'cell_scope' => 'Scope',
+ 'cell_type_header' => 'Κεφαλίδα κελιού',
+ 'merge_cells' => 'Συγχώνευση κελιών',
+ 'split_cell' => 'Διαίρεση κελιού',
+ 'table_row_group' => 'Ομάδα γραμμών',
+ 'table_column_group' => 'Ομάδα στηλών',
+ 'horizontal_align' => 'Οριζόντια στοίχιση',
+ 'vertical_align' => 'Κάθετη στοίχιση',
+ 'border_width' => 'Πάχος περιγράμματος',
+ 'border_style' => 'Στυλ περιγράμματος',
+ 'border_color' => 'Χρώμα περιγράμματος',
+ 'row_properties' => 'Ιδιότητες γραμμής',
+ 'row_properties_title' => 'Ιδιότητες γραμμής',
+ 'cut_row' => 'Αποκοπή γραμμής',
+ 'copy_row' => 'Αντιγραφή γραμμής',
+ 'paste_row_before' => 'Επικόλληση γραμμής πάνω',
+ 'paste_row_after' => 'Επικόλληση γραμμής κάτω',
+ 'row_type' => 'Τύπος γραμμής',
+ 'row_type_header' => 'Κεφαλίδα',
+ 'row_type_body' => 'Σώμα',
+ 'row_type_footer' => 'Υποσέλιδο',
+ 'alignment' => 'Ευθυγράμμιση',
+ 'cut_column' => 'Αποκοπή στήλης',
+ 'copy_column' => 'Αντιγραφή στήλης',
+ 'paste_column_before' => 'Επικόλληση στήλης αριστερά',
+ 'paste_column_after' => 'Επικόλληση στήλης δεξιά',
+ 'cell_padding' => 'Περιθώριο κελιών',
+ 'cell_spacing' => 'Απόσταση κελιών',
+ 'caption' => 'Τίτλος',
+ 'show_caption' => 'Εμφάνιση Τίτλου',
+ 'constrain' => 'Περιορισμός αναλογιών',
+ 'cell_border_solid' => 'Συμπαγής γραμμή',
+ 'cell_border_dotted' => 'Γραμμή με κουκκίδες',
+ 'cell_border_dashed' => 'Διακεκομμένη γραμμή',
+ 'cell_border_double' => 'Διπλή γραμμή',
+ 'cell_border_groove' => 'Groove',
+ 'cell_border_ridge' => 'Κορυφογραμμή',
+ 'cell_border_inset' => 'Inset',
+ 'cell_border_outset' => 'Outset',
+ 'cell_border_none' => 'Χωρίς',
+ 'cell_border_hidden' => '΄Διαφανές',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Source',
+ 'alt_desc' => 'Εναλλακτική περιγραφή',
+ 'embed' => 'Ενσωματωμένο',
+ 'paste_embed' => 'Επικολλήστε τον κώδικα ενσωμάτωσης παρακάτω:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Κείμενο εμφάνισης',
+ 'title' => 'Τίτλος',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Άνοιγμα συνδέσμου',
+ 'open_link_in' => 'Άνοιγμα συνδέσμου σε...',
+ 'open_link_current' => 'Τρέχον παράθυρο',
+ 'open_link_new' => 'Νέο παράθυρο',
+ 'remove_link' => 'Αφαίρεση συνδέσμου',
+ 'insert_collapsible' => 'Εισαγωγή πτυσσόμενου μπλοκ',
+ 'collapsible_unwrap' => 'Μετατροπή πτυσσόμενου μπλοκ σε παράγραφο',
+ 'edit_label' => 'Επεξεργασία ετικέτας',
+ 'toggle_open_closed' => 'Εναλλαγή ανοίγματος/κλεισίματος',
+ 'collapsible_edit' => 'Επεξεργασία πτυσσόμενου μπλοκ',
+ 'toggle_label' => 'Εναλλαγή ετικέτας',
+
+ // About view
+ 'about' => 'Σχετικά',
+ 'about_title' => 'Σχετικά με τον επεξεργαστή WYSIWYG',
+ 'editor_license' => 'Άδεια εκδότη και πνευματικά δικαιώματα',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'Αυτός ο επεξεργαστής έχει δημιουργηθεί χρησιμοποιώντας :tinyLink που παρέχεται με την άδεια MIT.',
+ 'editor_tiny_license_link' => 'Τα πνευματικά δικαιώματα και τα στοιχεία άδειας χρήσης του TinyMCE μπορείτε να τα βρείτε εδώ.',
+ 'save_continue' => 'Αποθήκευση σελίδας & Συνέχεια',
+ 'callouts_cycle' => '(Συνεχίστε να πατάτε για εναλλαγή μεταξύ τύπων)',
+ 'link_selector' => 'Σύνδεσμος προς το περιεχόμενο',
+ 'shortcuts' => 'Συντομεύσεις',
+ 'shortcut' => 'Συντόμευση',
+ 'shortcuts_intro' => 'Οι ακόλουθες συντομεύσεις είναι διαθέσιμες στο πρόγραμμα επεξεργασίας:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Περιγραφή',
+];
diff --git a/lang/el/entities.php b/lang/el/entities.php
new file mode 100644
index 00000000000..3779cd18a61
--- /dev/null
+++ b/lang/el/entities.php
@@ -0,0 +1,476 @@
+ 'Δημιουργήθηκε Πρόσφατα',
+ 'recently_created_pages' => 'Πρόσφατα Δημιουργημένες Σελίδες',
+ 'recently_updated_pages' => 'Πρόσφατες Ενημερώσεις',
+ 'recently_created_chapters' => 'Πρόσφατα Δημιουργημένα Κεφάλαια',
+ 'recently_created_books' => 'Πρόσφατα Δημιουργημένα Βιβλία',
+ 'recently_created_shelves' => 'Πρόσφατα Δημιουργημένα Ράφια',
+ 'recently_update' => 'Ενημερώθηκε πρόσφατα',
+ 'recently_viewed' => 'Πρόσφατα προβεβλημένα',
+ 'recent_activity' => 'Πρόσφατη Δραστηριότητα',
+ 'create_now' => 'Δημιουργία ενός τώρα',
+ 'revisions' => 'Αναθεωρήσεις',
+ 'meta_revision' => 'Αναθεώρηση #:revisionCount',
+ 'meta_created' => 'Δημιουργήθηκε :timeLength',
+ 'meta_created_name' => 'Δημιουργήθηκε :timeLength από :user',
+ 'meta_updated' => 'Ενημερώθηκε :timeLength',
+ 'meta_updated_name' => 'Ενημερώθηκε :timeLength από :user',
+ 'meta_owned_name' => 'Ανήκει στον :user',
+ 'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
+ 'entity_select' => 'Επιλογή Οντότητας',
+ 'entity_select_lack_permission' => 'Δεν έχετε τα απαιτούμενα δικαιώματα για να επιλέξετε αυτό το στοιχείο',
+ 'images' => 'Εικόνες',
+ 'my_recent_drafts' => 'Τα πρόσφατα προσχέδιά μου',
+ 'my_recently_viewed' => 'Είδα πρόσφατα',
+ 'my_most_viewed_favourites' => 'Συχνά Αγαπημένα',
+ 'my_favourites' => 'Τα αγαπημένα μου',
+ 'no_pages_viewed' => 'Δεν έχετε δει καμία σελίδα',
+ 'no_pages_recently_created' => 'Δεν έχουν δημιουργηθεί πρόσφατα σελίδες',
+ 'no_pages_recently_updated' => 'Δεν υπάρχουν πρόσφατα ενημερώσεις σελίδων',
+ 'export' => 'Εξαγωγή',
+ 'export_html' => 'Αρχείο Web',
+ 'export_pdf' => 'Αρχείο PDF',
+ 'export_text' => 'Αρχείο Απλού κειμένου',
+ 'export_md' => 'Αρχείο Markdown',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Δικαιώματα',
+ 'permissions_desc' => 'Ορίστε εδώ δικαιώματα για να παρακάμψετε τα προκαθορισμένα δικαιώματα που παρέχονται από τους ρόλους των χρηστών.',
+ 'permissions_book_cascade' => 'Τα δικαιώματα που έχουν οριστεί στα Βιβλία θα κλιμακώνονται αυτόματα στα θυγατρικά Κεφάλαια και Σελίδες, εκτός εάν έχουν καθοριστεί διαφορετικά σε αυτά.',
+ 'permissions_chapter_cascade' => 'Τα δικαιώματα που έχουν οριστεί στα Κεφάλαια θα κλιμακώνονται αυτόματα στις θυγατρικές Σελίδες, εκτός εάν έχουν καθοριστεί διαφορετικά σε αυτές.',
+ 'permissions_save' => 'Αποθήκευση Δικαιωμάτων',
+ 'permissions_owner' => 'Ιδιοκτήτης / Κάτοχος',
+ 'permissions_role_everyone_else' => 'Όλοι Οι Άλλοι',
+ 'permissions_role_everyone_else_desc' => 'Ορίστε δικαιώματα για όλους τους ρόλους που δεν παραβλέπονται συγκεκριμένα.',
+ 'permissions_role_override' => 'Παράκαμψη δικαιωμάτων για ρόλο',
+ 'permissions_inherit_defaults' => 'Κληρονόμηση προεπιλογών',
+
+ // Search
+ 'search_results' => 'Αποτελέσματα αναζήτησης',
+ 'search_total_results_found' => 'Βρέθηκε :count αποτέλεσμα|Βρέθηκαν συνολικά :count αποτελέσματα',
+ 'search_clear' => 'Καθαρισμός αναζήτησης',
+ 'search_no_pages' => 'Καμία σελίδα δεν ταιριάζει με αυτήν την αναζήτηση',
+ 'search_for_term' => 'Αναζήτηση για :term',
+ 'search_more' => 'Περισσότερα αποτελέσματα',
+ 'search_advanced' => 'Προχωρημένη Αναζήτηση',
+ 'search_terms' => 'Αναζήτηση Όρων',
+ 'search_content_type' => 'Τύπος περιεχομένου',
+ 'search_exact_matches' => 'Ακριβείς αντιστοιχίες',
+ 'search_tags' => 'Αναζητήσεις Ετικετών',
+ 'search_options' => 'Επιλογές',
+ 'search_viewed_by_me' => 'Προβλήθηκε από εμένα',
+ 'search_not_viewed_by_me' => 'Δεν προβλήθηκε από εμένα',
+ 'search_permissions_set' => 'Τα δικαιώματα ορίστηκαν',
+ 'search_created_by_me' => 'Δημιουργήθηκε από εμένα',
+ 'search_updated_by_me' => 'Ενημερώθηκε από εμένα',
+ 'search_owned_by_me' => 'Ανήκει σε μένα',
+ 'search_date_options' => 'Επιλογές Ημερομηνίας',
+ 'search_updated_before' => 'Ενημερώθηκε πριν',
+ 'search_updated_after' => 'Ενημερώθηκε μετά',
+ 'search_created_before' => 'Δημιουργήθηκε πριν',
+ 'search_created_after' => 'Δημιουργήθηκε μετά',
+ 'search_set_date' => 'Ορισμός Ημερομηνίας',
+ 'search_update' => 'Ενημέρωση Αναζήτησης',
+
+ // Shelves
+ 'shelf' => 'Ράφι',
+ 'shelves' => 'Ράφια',
+ 'x_shelves' => ':count Ράφι|:count Ράφια',
+ 'shelves_empty' => 'Δεν έχουν δημιουργηθεί ράφια',
+ 'shelves_create' => 'Δημιουργία νέου ραφιού',
+ 'shelves_popular' => 'Δημοφιλή Ράφια',
+ 'shelves_new' => 'Νέα Ράφια',
+ 'shelves_new_action' => 'Νέο Ράφι',
+ 'shelves_popular_empty' => 'Τα πιο δημοφιλή ράφια θα εμφανιστούν εδώ.',
+ 'shelves_new_empty' => 'Τα πιο πρόσφατα ράφια που δημιουργήθηκαν θα εμφανιστούν εδώ.',
+ 'shelves_save' => 'Αποθήκευση Ραφιού',
+ 'shelves_books' => 'Βιβλία σε αυτό το Ράφι',
+ 'shelves_add_books' => 'Διαθέσιμα Βιβλία, για προσθήκη στο Ράφι',
+ 'shelves_drag_books' => 'Σύρετε εδώ βιβλία της διπλανή λίστας, για να τα προσθέσετε στο Ράφι',
+ 'shelves_empty_contents' => 'Σε αυτό το Ράφι δεν έχουν εκχωρηθεί βιβλία',
+ 'shelves_edit_and_assign' => 'Επεξεργαστείτε το Ράφι για να εκχωρήσετε βιβλία',
+ 'shelves_edit_named' => 'Επεξεργασία Ραφιού :name',
+ 'shelves_edit' => 'Επεξεργασία Ραφιού',
+ 'shelves_delete' => 'Διαγραφή Ραφιού',
+ 'shelves_delete_named' => 'Delete Bookshelf :name',
+ 'shelves_delete_explain' => "This will delete the bookshelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Are you sure you want to delete this bookshelf?',
+ 'shelves_permissions' => 'Bookshelf Permissions',
+ 'shelves_permissions_updated' => 'Bookshelf Permissions Updated',
+ 'shelves_permissions_active' => 'Bookshelf Permissions Active',
+ 'shelves_permissions_cascade_warning' => 'Permissions on bookshelves do not automatically cascade to contained books. This is because a book can exist on multiple shelves. Permissions can however be copied down to child books using the option found below.',
+ 'shelves_permissions_create' => 'Shelf create permissions are only used for copying permissions to child books using the action below. They do not control the ability to create books.',
+ 'shelves_copy_permissions_to_books' => 'Αντιγραφή δικαιωμάτων στα βιβλία',
+ 'shelves_copy_permissions' => 'Αντιγραφή Δικαιωμάτων',
+ 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this bookshelf to all books contained within. Before activating, ensure any changes to the permissions of this bookshelf have been saved.',
+ 'shelves_copy_permission_success' => 'Bookshelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'Βιβλίο',
+ 'books' => 'Βιβλία',
+ 'x_books' => ':count Βιβλίο|:count Βιβλία',
+ 'books_empty' => 'Δεν έχουν δημιουργηθεί βιβλία ακόμα',
+ 'books_popular' => 'Δημοφιλή Βιβλία',
+ 'books_recent' => 'Πρόσφατα Βιβλία',
+ 'books_new' => 'Νέα Βιβλία',
+ 'books_new_action' => 'Νέο βιβλίο',
+ 'books_popular_empty' => 'Τα πιο δημοφιλή εμφανίζονται εδώ.',
+ 'books_new_empty' => 'Θα εμφανιστούν εδώ, αυτά που δημιουργήθηκαν πιο πρόσφατα.',
+ 'books_create' => 'Δημιουργία νέου βιβλίου',
+ 'books_delete' => 'Διαγραφή Βιβλίου',
+ 'books_delete_named' => 'Διαγραφή Βιβλίου :bookname',
+ 'books_delete_explain' => 'Αυτό θα διαγράψει το βιβλίο με το όνομα \':bookName\'. Όλες οι σελίδες και τα κεφάλαια θα αφαιρεθούν.',
+ 'books_delete_confirmation' => 'Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το βιβλίο;',
+ 'books_edit' => 'Επεξεργασία Βιβλίου',
+ 'books_edit_named' => 'Επεξεργασία Βιβλίου :bookname',
+ 'books_form_book_name' => 'Όνομα Βιβλίου',
+ 'books_save' => 'Αποθήκευση Βιβλίου',
+ 'books_permissions' => 'Άδειες Βιβλίου',
+ 'books_permissions_updated' => 'Τα Δικαιώματα Βιβλίου Ενημερώθηκαν',
+ 'books_empty_contents' => 'Δεν έχουν δημιουργηθεί σελίδες ή κεφάλαια για αυτό το βιβλίο.',
+ 'books_empty_create_page' => 'Δημιουργία νέας σελίδας',
+ 'books_empty_sort_current_book' => 'Ταξινόμηση του τρέχοντος βιβλίου',
+ 'books_empty_add_chapter' => 'Προσθήκη κεφαλαίου',
+ 'books_permissions_active' => 'Ενεργά Δικαιώματα ´Βιβλίου',
+ 'books_search_this' => 'Αναζήτηση σε αυτό το βιβλίο',
+ 'books_navigation' => 'Πλοήγηση Βιβλίου',
+ 'books_sort' => 'Ταξινόμηση Περιεχομένων Βιβλίου',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Ταξινόμηση Βιβλίου :bookname',
+ 'books_sort_name' => 'Ταξινόμηση κατά όνομα',
+ 'books_sort_created' => 'Ταξινόμηση κατά ημερομηνία δημιουργίας',
+ 'books_sort_updated' => 'Ταξινόμηση κατά ημερομηνία ενημέρωσης',
+ 'books_sort_chapters_first' => 'Τα Κεφάλαια Πρώτα',
+ 'books_sort_chapters_last' => 'Τελευταία Κεφάλαια',
+ 'books_sort_show_other' => 'Εμφάνιση Άλλων Βιβλίων',
+ 'books_sort_save' => 'Αποθήκευση Νέας Ταξινόμησης',
+ 'books_sort_show_other_desc' => 'Προσθέστε άλλα βιβλία εδώ για να τα συμπεριλάβετε στην ταξινόμηση και να επιτρέψετε την εύκολη αναδιοργάνωση μεταξύ των βιβλίων.',
+ 'books_sort_move_up' => 'Μετακίνηση προς τα Επάνω',
+ 'books_sort_move_down' => 'Μετακίνηση προς τα Κάτω',
+ 'books_sort_move_prev_book' => 'Μετακίνηση στο προηγούμενο Βιβλίο',
+ 'books_sort_move_next_book' => 'Μετακίνηση στο επόμενο Βιβλίο',
+ 'books_sort_move_prev_chapter' => 'Μετακίνηση στο προηγούμενο Κεφάλαιο',
+ 'books_sort_move_next_chapter' => 'Μετακίνηση στο επόμενο Κεφάλαιο',
+ 'books_sort_move_book_start' => 'Μετακίνηση στην Αρχή του Βιβλίου',
+ 'books_sort_move_book_end' => 'Μετακίνηση στο Τέλος του Βιβλίου',
+ 'books_sort_move_before_chapter' => 'Μετακίνηση στο προηγούμενο Κεφάλαιο',
+ 'books_sort_move_after_chapter' => 'Μετακίνηση στο επόμενο Κεφάλαιο',
+ 'books_copy' => 'Αντιγραφή Βιβλίου',
+ 'books_copy_success' => 'Το βιβλίο αντιγράφηκε επιτυχώς',
+
+ // Chapters
+ 'chapter' => 'Κεφάλαιο',
+ 'chapters' => 'Κεφάλαια',
+ 'x_chapters' => ':count Κεφάλαιο|:count Κεφάλαια',
+ 'chapters_popular' => 'Δημοφιλή Κεφάλαια',
+ 'chapters_new' => 'Νέο Κεφάλαιο',
+ 'chapters_create' => 'Δημιουργία Νέου Κεφαλαίου',
+ 'chapters_delete' => 'Διαγραφή Κεφαλαίου',
+ 'chapters_delete_named' => 'Διαγραφή Κεφαλαίου :chapterName',
+ 'chapters_delete_explain' => 'Αυτό θα διαγράψει το κεφάλαιο με το όνομα \':chapterName\'. Όλες οι σελίδες που υπάρχουν μέσα σε αυτό το κεφάλαιο θα διαγραφούν επίσης.',
+ 'chapters_delete_confirm' => 'Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το κεφάλαιο;',
+ 'chapters_edit' => 'Επεξεργασία Κεφαλαίου',
+ 'chapters_edit_named' => 'Επεξεργασία Κεφαλαίου :chapterName',
+ 'chapters_save' => 'Αποθήκευση Κεφαλαίου',
+ 'chapters_move' => 'Μετακίνηση Κεφαλαίου',
+ 'chapters_move_named' => 'Μετακίνηση Κεφαλαίου :chapterName',
+ 'chapters_copy' => 'Αντιγραφή Κεφαλαίου',
+ 'chapters_copy_success' => 'Το κεφάλαιο αντιγράφηκε επιτυχώς',
+ 'chapters_permissions' => 'Δικαιώματα Κεφαλαίου',
+ 'chapters_empty' => 'Καμία σελίδα δεν βρίσκεται σε αυτό το κεφάλαιο.',
+ 'chapters_permissions_active' => 'Ενεργά Δικαιώματα Κεφαλαίου',
+ 'chapters_permissions_success' => 'Τα Δικαιώματα Κεφαλαίου Ενημερώθηκαν',
+ 'chapters_search_this' => 'Αναζήτηση σε αυτό το κεφάλαιο',
+ 'chapter_sort_book' => 'Ταξινόμηση Βιβλίου',
+
+ // Pages
+ 'page' => 'Σελίδα',
+ 'pages' => 'Σελίδες',
+ 'x_pages' => ':count Σελίδα|:count Σελίδες',
+ 'pages_popular' => 'Δημοφιλείς Σελίδες',
+ 'pages_new' => 'Νέα Σελίδα',
+ 'pages_attachments' => 'Συνημμένα',
+ 'pages_navigation' => 'Πλοήγηση στη σελίδα',
+ 'pages_delete' => 'Διαγραφή Σελίδας',
+ 'pages_delete_named' => 'Διαγραφή Σελίδας :pageName',
+ 'pages_delete_draft_named' => 'Διαγραφή Προσχέδιας Σελίδας :pageName',
+ 'pages_delete_draft' => 'Διαγραφή Προσχέδιας Σελίδας',
+ 'pages_delete_success' => 'Η σελίδα διαγράφηκε',
+ 'pages_delete_draft_success' => 'Η προσχέδια (πρόχειρη) σελίδα διαγράφηκε',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτή τη σελίδα;',
+ 'pages_delete_draft_confirm' => 'Θέλετε σίγουρα να διαγράψετε την προσχέδια σελίδα;',
+ 'pages_editing_named' => 'Επεξεργασία Σελίδας :pageName',
+ 'pages_edit_draft_options' => 'Επιλογές Προσχεδίου',
+ 'pages_edit_save_draft' => 'Αποθήκευση Προχείρου (Προσχεδίου)',
+ 'pages_edit_draft' => 'Επεξεργασία Προσχεδίου Σελίδας',
+ 'pages_editing_draft' => 'Επεξεργασία Προσχεδίου',
+ 'pages_editing_page' => 'Επεξεργασία Σελίδας',
+ 'pages_edit_draft_save_at' => 'Το προσχέδιο αποθηκεύτηκε στις ',
+ 'pages_edit_delete_draft' => 'Διαγραφή Προσχεδίου',
+ 'pages_edit_delete_draft_confirm' => 'Are you sure you want to delete your draft page changes? All of your changes, since the last full save, will be lost and the editor will be updated with the latest page non-draft save state.',
+ 'pages_edit_discard_draft' => 'Απόρριψη Προσχεδίου',
+ 'pages_edit_switch_to_markdown' => 'Μετάβαση στον Επεξεργαστή Markdown',
+ 'pages_edit_switch_to_markdown_clean' => '(Καθαρισμός Περιεχομένου)',
+ 'pages_edit_switch_to_markdown_stable' => '(Σταθερό Περιεχόμενο)',
+ 'pages_edit_switch_to_wysiwyg' => 'Εναλλαγή στον επεξεργαστή WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Ορισμός καταγραφής αλλαγών',
+ 'pages_edit_enter_changelog_desc' => 'Εισάγετε μια σύντομη περιγραφή των αλλαγών που κάνατε',
+ 'pages_edit_enter_changelog' => 'Εισαγωγή Αρχείου Καταγραφής Αλλαγών',
+ 'pages_editor_switch_title' => 'Εναλλαγή Επεξεργαστή',
+ 'pages_editor_switch_are_you_sure' => 'Είστε βέβαιοι ότι θέλετε να αλλάξετε τον επεξεργαστή κειμένου για αυτή τη σελίδα;',
+ 'pages_editor_switch_consider_following' => 'Λάβετε υπόψη τα ακόλουθα όταν αλλάζετε συντάκτες:',
+ 'pages_editor_switch_consideration_a' => 'Μόλις αποθηκευτεί, η επιλογή του νέου επεξεργαστή κειμένου θα χρησιμοποιηθεί από τυχόν μελλοντικούς επεξεργαστές, συμπεριλαμβανομένων εκείνων που μπορεί να μην είναι σε θέση να αλλάξουν τον τύπο του επεξεργαστή κειμένου.',
+ 'pages_editor_switch_consideration_b' => 'Αυτό μπορεί να οδηγήσει σε απώλεια λεπτομερειών και κώδικα σε ορισμένες περιπτώσεις.',
+ 'pages_editor_switch_consideration_c' => 'Οι αλλαγές ετικετών ή αρχείων καταγραφής, που έγιναν από την τελευταία αποθήκευση, δεν θα συνεχιστούν σε αυτήν την αλλαγή.',
+ 'pages_save' => 'Αποθήκευση Σελίδας',
+ 'pages_title' => 'Τίτλος Σελίδας',
+ 'pages_name' => 'Όνομα Σελίδας',
+ 'pages_md_editor' => 'Επεξεργαστής',
+ 'pages_md_preview' => 'Προεπισκόπηση',
+ 'pages_md_insert_image' => 'Εισαγωγή Εικόνας',
+ 'pages_md_insert_link' => 'Εισαγωγή/Επεξεργασία συνδέσμου',
+ 'pages_md_insert_drawing' => 'Εισαγωγή Σχεδίου',
+ 'pages_md_show_preview' => 'Εμφάνιση προεπισκόπησης',
+ 'pages_md_sync_scroll' => 'Συγχρονισμός προεπισκόπησης',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Unsaved Drawing Found',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'Η σελίδα δεν είναι σε κεφάλαιο',
+ 'pages_move' => 'Μετακίνηση Σελίδας',
+ 'pages_copy' => 'Αντιγραφή Σελίδας',
+ 'pages_copy_desination' => 'Αντιγραφή Προορισμού',
+ 'pages_copy_success' => 'Η σελίδα αντιγράφηκε επιτυχώς',
+ 'pages_permissions' => 'Δικαιώματα Σελίδας',
+ 'pages_permissions_success' => 'Τα δικαιώματα σελίδας ενημερώθηκαν',
+ 'pages_revision' => 'Αναθεώρηση',
+ 'pages_revisions' => 'Αναθεωρήσεις Σελίδας',
+ 'pages_revisions_desc' => 'Παρακάτω αναφέρονται όλες οι προηγούμενες αναθεωρήσεις αυτής της Σελίδας. Μπορείτε να αναζητήσετε αντίγραφα ασφαλείας, να συγκρίνετε και να επαναφέρετε παλιές εκδόσεις Σελίδας, εάν τα δικαιώματα το επιτρέπουν. Το πλήρες ιστορικό της Σελίδας μπορεί να μην αντανακλάται πλήρως εδώ επειδή, ανάλογα με τη διαμόρφωση του συστήματος, οι παλιές αναθεωρήσεις θα μπορούσαν να διαγραφούν αυτόματα.',
+ 'pages_revisions_named' => 'Αναθεωρήσεις σελίδας για :pageName',
+ 'pages_revision_named' => 'Αναθεώρηση σελίδας για :pageName',
+ 'pages_revision_restored_from' => 'Επαναφορά από #:id; :summary',
+ 'pages_revisions_created_by' => 'Δημιουργήθηκε από',
+ 'pages_revisions_date' => 'Ημερομηνία Αναθεώρησης',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Αριθμός αναθεώρησης',
+ 'pages_revisions_numbered' => 'Αναθεώρηση #',
+ 'pages_revisions_numbered_changes' => 'Αναθεώρηση #:id Αλλαγές',
+ 'pages_revisions_editor' => 'Τύπος Επεξεργαστή',
+ 'pages_revisions_changelog' => 'Αρχείο καταγραφής αλλαγών',
+ 'pages_revisions_changes' => 'Αλλαγές',
+ 'pages_revisions_current' => 'Τρέχουσα Έκδοση',
+ 'pages_revisions_preview' => 'Προεπισκόπηση',
+ 'pages_revisions_restore' => 'Επαναφορά',
+ 'pages_revisions_none' => 'Αυτή η σελίδα δεν έχει αναθεωρήσεις',
+ 'pages_copy_link' => 'Αντιγραφή Συνδέσμου',
+ 'pages_edit_content_link' => 'Jump to section in editor',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Page Section Options',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Ενεργά Δικαιώματα Σελίδας',
+ 'pages_initial_revision' => 'Αρχική δημοσίευση',
+ 'pages_references_update_revision' => 'Αυτόματη ενημέρωση του συστήματος των εσωτερικών συνδέσμων',
+ 'pages_initial_name' => 'Νέα Σελίδα',
+ 'pages_editing_draft_notification' => 'Αυτή τη στιγμή επεξεργάζεστε ένα προσχέδιο που αποθηκεύτηκε για τελευταία φορά :timeDiff.',
+ 'pages_draft_edited_notification' => 'Αυτή η σελίδα έχει ενημερωθεί από εκείνη τη στιγμή. Συνιστάται να απορρίψετε αυτό το προσχέδιο.',
+ 'pages_draft_page_changed_since_creation' => 'Αυτή η σελίδα έχει ενημερωθεί από τότε που δημιουργήθηκε αυτό το προσχέδιο. Συνιστάται να απορρίψετε αυτό το σχέδιο ή να φροντίσετε να μην αντικαταστήσετε τυχόν αλλαγές σελίδας.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count χρήστες έχουν αρχίσει να επεξεργάζονται αυτή τη σελίδα',
+ 'start_b' => ':userName έχει ξεκινήσει την επεξεργασία αυτής της σελίδας',
+ 'time_a' => 'από τότε που η σελίδα ενημερώθηκε τελευταία φορά',
+ 'time_b' => 'τα τελευταία :mint λεπτά',
+ 'message' => ':start :time. Προσέξτε να μην αντικαταστήσετε ο ένας τις ενημερώσεις του άλλου!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'Συγκεκριμένη Σελίδα',
+ 'pages_is_template' => 'Πρότυπο σελίδας',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'Ετικέτες Σελίδας',
+ 'chapter_tags' => 'Ετικέτες Κεφαλαίου',
+ 'book_tags' => 'Ετικέτες Βιβλίου',
+ 'shelf_tags' => 'Ετικέτες Ραφιών',
+ 'tag' => 'Ετικέτα',
+ 'tags' => 'Ετικέτες',
+ 'tags_index_desc' => 'Οι Ετικέτες μπορούν να εφαρμοστούν στο περιεχόμενο μέσα στο σύστημα για να εφαρμοστεί μια ευέλικτη μορφή κατηγοριοποίησης. Οι Ετικέτες μπορούν να έχουν τόσο κλειδί όσο και αξία, με την τιμή να είναι προαιρετική. Μόλις εφαρμοστεί, μπορεί να παρθεί περιεχόμενο χρησιμοποιώντας το όνομα της Ετικέτας και την τιμή.',
+ 'tag_name' => 'Όνομα Ετικέτας',
+ 'tag_value' => 'Τιμή Ετικέτας (Προαιρετικό)',
+ 'tags_explain' => "Προσθέστε μερικές ετικέτες για να κατηγοριοποιήσετε καλύτερα το περιεχόμενό σας. \n Μπορείτε να αντιστοιχίσετε μια τιμή σε μια ετικέτα για πιο αναλυτική οργάνωση.",
+ 'tags_add' => 'Προσθήκη άλλης ετικέτας',
+ 'tags_remove' => 'Αφαίρεση ετικέτας',
+ 'tags_usages' => 'Συνολικές χρήσεις ετικετών',
+ 'tags_assigned_pages' => 'Ανατέθηκε σε σελίδες',
+ 'tags_assigned_chapters' => 'Ανατέθηκε στα κεφάλαια',
+ 'tags_assigned_books' => 'Ανατέθηκε σε Βιβλία',
+ 'tags_assigned_shelves' => 'Ανατέθηκε σε Ράφια',
+ 'tags_x_unique_values' => ':count μοναδικές τιμές',
+ 'tags_all_values' => 'Όλες οι τιμές',
+ 'tags_view_tags' => 'Προβολή Ετικετών',
+ 'tags_view_existing_tags' => 'Δείτε τις υπάρχουσες ετικέτες',
+ 'tags_list_empty_hint' => 'Οι ετικέτες μπορούν να εκχωρηθούν μέσω της πλαϊνής μπάρας συντάκτη σελίδας ή κατά την επεξεργασία των λεπτομερειών ενός βιβλίου, κεφαλαίου ή ράφι.',
+ 'attachments' => 'Συνημμένα',
+ 'attachments_explain' => 'Ανεβάστε μερικά αρχεία ή επισυνάψτε μερικούς συνδέσμους για να εμφανίσετε στη σελίδα σας. Αυτά είναι ορατά στην πλαϊνή μπάρα σελίδας.',
+ 'attachments_explain_instant_save' => 'Οι αλλαγές εδώ αποθηκεύονται αμέσως.',
+ 'attachments_upload' => 'Μεταφόρτωση Αρχείου',
+ 'attachments_link' => 'Επισύναψη Δεσμού',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'Ορισμός Συνδέσμου',
+ 'attachments_delete' => 'Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το συνημμένο;',
+ 'attachments_dropzone' => 'Drop files here to upload',
+ 'attachments_no_files' => 'Δεν έχουν μεταφορτωθεί αρχεία',
+ 'attachments_explain_link' => 'Μπορείτε να επισυνάψετε έναν σύνδεσμο αν προτιμάτε να μην ανεβάσετε ένα αρχείο. Αυτό μπορεί να είναι ένας σύνδεσμος σε άλλη σελίδα ή ένας σύνδεσμος σε ένα αρχείο στο σύννεφο.',
+ 'attachments_link_name' => 'Όνομα Συνδέσμου',
+ 'attachment_link' => 'Σύνδεσμος συνημμένου',
+ 'attachments_link_url' => 'Σύνδεση σε αρχείο',
+ 'attachments_link_url_hint' => 'Url του ιστότοπου ή του αρχείου',
+ 'attach' => 'Επισύναψη',
+ 'attachments_insert_link' => 'Προσθήκη συνημμένου συνδέσμου στη σελίδα',
+ 'attachments_edit_file' => 'Επεξεργασία Αρχείου',
+ 'attachments_edit_file_name' => 'Όνομα Αρχείου',
+ 'attachments_edit_drop_upload' => 'Ρίξτε αρχεία ή κάντε κλικ εδώ για να ανεβάσετε και να αντικαταστήσετε',
+ 'attachments_order_updated' => 'Η παραγγελία συνημμένων ενημερώθηκε',
+ 'attachments_updated_success' => 'Οι λεπτομέρειες συνημμένου ενημερώθηκαν',
+ 'attachments_deleted' => 'Το συνημμένο διαγράφηκε',
+ 'attachments_file_uploaded' => 'Το αρχείο μεταφορτώθηκε επιτυχώς',
+ 'attachments_file_updated' => 'Το αρχείο ενημερώθηκε επιτυχώς',
+ 'attachments_link_attached' => 'Ο σύνδεσμος συνδέθηκε επιτυχώς στη σελίδα',
+ 'templates' => 'Πρότυπα',
+ 'templates_set_as_template' => 'Η σελίδα είναι πρότυπο',
+ 'templates_explain_set_as_template' => 'Μπορείτε να ορίσετε αυτή τη σελίδα ως πρότυπο, έτσι ώστε τα περιεχόμενά της να χρησιμοποιούνται κατά τη δημιουργία άλλων σελίδων. Άλλοι χρήστες θα μπορούν να χρησιμοποιήσουν αυτό το πρότυπο αν έχουν δικαιώματα προβολής για αυτή τη σελίδα.',
+ 'templates_replace_content' => 'Αντικατάσταση περιεχομένου σελίδας',
+ 'templates_append_content' => 'Προσθήκη στο περιεχόμενο της σελίδας',
+ 'templates_prepend_content' => 'Προεπιλογή στο περιεχόμενο της σελίδας',
+
+ // Profile View
+ 'profile_user_for_x' => 'Χρήστης για :time',
+ 'profile_created_content' => 'Δημιουργία Περιεχομένου',
+ 'profile_not_created_pages' => ':userName δεν έχει δημιουργήσει καμία σελίδα',
+ 'profile_not_created_chapters' => ':userName δεν έχει δημιουργήσει κεφάλαια',
+ 'profile_not_created_books' => ':userName δεν έχει δημιουργήσει βιβλία',
+ 'profile_not_created_shelves' => ':userName δεν έχει δημιουργήσει ράφια',
+
+ // Comments
+ 'comment' => 'Σχόλιο',
+ 'comments' => 'Σχόλια',
+ 'comment_add' => 'Προσθήκη Σχολίου',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Αφήστε ένα σχόλιο εδώ',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Αποθήκευση Σχολίου',
+ 'comment_new' => 'Νέο Σχόλιο',
+ 'comment_created' => 'σχολίασε :createDiff',
+ 'comment_updated' => 'Ενημερώθηκε :updateDiff από :username',
+ 'comment_updated_indicator' => 'Updated',
+ 'comment_deleted_success' => 'Σχόλιο διαγράφηκε',
+ 'comment_created_success' => 'Το σχόλιο προστέθηκε',
+ 'comment_updated_success' => 'Το σχόλιο ενημερώθηκε',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το σχόλιο;',
+ 'comment_in_reply_to' => 'Σε απάντηση στο :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Here are the comments that have been left on this page. Comments can be added & managed when viewing the saved page.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτήν την αναθεώρηση;',
+ 'revision_restore_confirm' => 'Είστε βέβαιοι ότι θέλετε να επαναφέρετε αυτή την αναθεώρηση; Τα τρέχοντα περιεχόμενα της σελίδας θα αντικατασταθούν.',
+ 'revision_cannot_delete_latest' => 'Δεν είναι δυνατή η διαγραφή της τελευταίας αναθεώρησης.',
+
+ // Copy view
+ 'copy_consider' => 'Παρακαλώ σκεφτείτε τα παρακάτω κατά την αντιγραφή περιεχομένου.',
+ 'copy_consider_permissions' => 'Οι ρυθμίσεις προσαρμοσμένων δικαιωμάτων δεν θα αντιγραφούν.',
+ 'copy_consider_owner' => 'Θα γίνετε ο ιδιοκτήτης όλου του αντιγραμμένου περιεχομένου.',
+ 'copy_consider_images' => 'Τα αρχεία εικόνας σελίδας δεν θα αναπαραχθούν και οι αρχικές εικόνες θα διατηρήσουν τη σχέση τους με τη σελίδα στην οποία είχαν αρχικά μεταφορτωθεί.',
+ 'copy_consider_attachments' => 'Τα συνημμένα σελίδας δεν θα αντιγραφούν.',
+ 'copy_consider_access' => 'Μια αλλαγή της θέσης, του ιδιοκτήτη ή των δικαιωμάτων μπορεί να έχει ως αποτέλεσμα το περιεχόμενο αυτό να είναι προσβάσιμο σε χρήστες που προηγουμένως δεν είχαν πρόσβαση.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Μετατροπή σε ράφι',
+ 'convert_to_shelf_contents_desc' => 'Μπορείτε να μετατρέψετε αυτό το βιβλίο σε ένα νέο ράφι με το ίδιο περιεχόμενο. Κεφάλαια που περιέχονται σε αυτό το βιβλίο θα μετατραπούν σε νέα βιβλία. Αν αυτό το βιβλίο περιέχει σελίδες που δεν βρίσκονται σε κεφάλαιο, αυτό το βιβλίο θα μετονομαστεί και περιέχει τέτοιες σελίδες, και αυτό το βιβλίο θα γίνει μέρος του νέου ράφι.',
+ 'convert_to_shelf_permissions_desc' => 'Τυχόν δικαιώματα που ορίζονται σε αυτό το βιβλίο θα αντιγραφούν στο νέο ράφι και σε όλα τα νέα θυγατρικά βιβλία στα οποία δεν επιβάλλονται τα δικά τους δικαιώματα. Λάβετε υπόψη ότι τα δικαιώματα στα ράφια δεν μεταφέρονται αυτόματα σε περιεχόμενο εντός, όπως συμβαίνει για τα βιβλία.',
+ 'convert_book' => 'Μετατροπή Βιβλίου',
+ 'convert_book_confirm' => 'Είστε σίγουροι ότι θέλετε να μετατρέψετε αυτό το βιβλίο;',
+ 'convert_undo_warning' => 'Αυτό δεν μπορεί να αναιρεθεί τόσο εύκολα.',
+ 'convert_to_book' => 'Μετατροπή σε βιβλίο',
+ 'convert_to_book_desc' => 'Μπορείτε να μετατρέψετε αυτό το κεφάλαιο σε ένα νέο βιβλίο με το ίδιο περιεχόμενο. Τυχόν δικαιώματα που έχουν οριστεί σε αυτό το κεφάλαιο θα αντιγραφούν στο νέο βιβλίο αλλά τυχόν κληρονομημένα δικαιώματα, από το γονικό βιβλίο, δεν θα αντιγραφούν το οποίο θα μπορούσε να οδηγήσει σε αλλαγή του ελέγχου πρόσβασης.',
+ 'convert_chapter' => 'Μετατροπή Κεφαλαίου',
+ 'convert_chapter_confirm' => 'Είστε βέβαιοι ότι θέλετε να μετατρέψετε αυτό το κεφάλαιο;',
+
+ // References
+ 'references' => 'Αναφορές',
+ 'references_none' => 'Δεν υπάρχουν αναφορές παρακολούθησης σε αυτό το στοιχείο.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Watch',
+ 'watch_title_default' => 'Default Preferences',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignore',
+ 'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
+ 'watch_title_new' => 'New Pages',
+ 'watch_desc_new' => 'Notify when any new page is created within this item.',
+ 'watch_title_updates' => 'All Page Updates',
+ 'watch_desc_updates' => 'Notify upon all new pages and page changes.',
+ 'watch_desc_updates_page' => 'Notify upon all page changes.',
+ 'watch_title_comments' => 'All Page Updates & Comments',
+ 'watch_desc_comments' => 'Notify upon all new pages, page changes and new comments.',
+ 'watch_desc_comments_page' => 'Notify upon page changes and new comments.',
+ 'watch_change_default' => 'Change default notification preferences',
+ 'watch_detail_ignore' => 'Ignoring notifications',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/el/errors.php b/lang/el/errors.php
new file mode 100644
index 00000000000..f03ed2953d7
--- /dev/null
+++ b/lang/el/errors.php
@@ -0,0 +1,135 @@
+ 'Δεν έχετε δικαίωμα πρόσβασης στη ζητούμενη σελίδα.',
+ 'permissionJson' => 'Δεν έχετε άδεια να εκτελέσετε την αιτούμενη ενέργεια.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Ένας χρήστης με email :email υπάρχει ήδη αλλά με διαφορετικά διαπιστευτήρια.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'Το email έχει ήδη επιβεβαιωθεί, Δοκιμάστε να συνδεθείτε.',
+ 'email_confirmation_invalid' => 'Αυτό το διακριτικό επιβεβαίωσης δεν είναι έγκυρο ή έχει ήδη χρησιμοποιηθεί, Παρακαλώ δοκιμάστε να εγγραφείτε ξανά.',
+ 'email_confirmation_expired' => 'Το διακριτικό επιβεβαίωσης έχει λήξει, έχει σταλεί ένα νέο email επιβεβαίωσης.',
+ 'email_confirmation_awaiting' => 'Η διεύθυνση ηλεκτρονικού ταχυδρομείου για το λογαριασμό που χρησιμοποιείται πρέπει να επιβεβαιωθεί',
+ 'ldap_fail_anonymous' => 'Η πρόσβαση LDAP απέτυχε με ανώνυμη σύνδεση',
+ 'ldap_fail_authed' => 'Η πρόσβαση LDAP απέτυχε με τη χρήση δοσμένων λεπτομερειών dn & κωδικού πρόσβασης',
+ 'ldap_extension_not_installed' => 'Η επέκταση LDAP PHP δεν εγκαταστάθηκε',
+ 'ldap_cannot_connect' => 'Αδυναμία σύνδεσης στο διακομιστή ldap, η αρχική σύνδεση απέτυχε',
+ 'saml_already_logged_in' => 'Ήδη συνδεδεμένος',
+ 'saml_no_email_address' => 'Δεν ήταν δυνατή η εύρεση μιας διεύθυνσης ηλεκτρονικού ταχυδρομείου, για αυτόν τον χρήστη, στα δεδομένα που παρέχονται από το εξωτερικό σύστημα ελέγχου ταυτότητας',
+ 'saml_invalid_response_id' => 'Το αίτημα από το εξωτερικό σύστημα ελέγχου ταυτότητας δεν αναγνωρίζεται από μια διαδικασία που ξεκίνησε από αυτή την εφαρμογή. Η πλοήγηση πίσω μετά από μια σύνδεση θα μπορούσε να προκαλέσει αυτό το ζήτημα.',
+ 'saml_fail_authed' => 'Η σύνδεση με τη χρήση :system απέτυχε, το σύστημα δεν παρείχε επιτυχή εξουσιοδότηση',
+ 'oidc_already_logged_in' => 'Ήδη συνδεδεμένος',
+ 'oidc_no_email_address' => 'Δεν ήταν δυνατή η εύρεση μιας διεύθυνσης ηλεκτρονικού ταχυδρομείου, για αυτόν τον χρήστη, στα δεδομένα που παρέχονται από το εξωτερικό σύστημα ελέγχου ταυτότητας',
+ 'oidc_fail_authed' => 'Η σύνδεση με τη χρήση :system απέτυχε, το σύστημα δεν παρείχε επιτυχή εξουσιοδότηση',
+ 'social_no_action_defined' => 'Καμία ενέργεια δεν ορίστηκε',
+ 'social_login_bad_response' => "Παρουσιάστηκε σφάλμα κατά τη διάρκεια :socialAccount login: \n:error",
+ 'social_account_in_use' => 'Αυτός ο λογαριασμός :socialAccount είναι ήδη σε χρήση, Δοκιμάστε να συνδεθείτε μέσω της επιλογής :socialAccount .',
+ 'social_account_email_in_use' => 'Το email :email είναι ήδη σε χρήση. Αν έχετε ήδη ένα λογαριασμό, μπορείτε να συνδέσετε τον :socialAccount λογαριασμό σας από τις ρυθμίσεις του προφίλ σας.',
+ 'social_account_existing' => 'Αυτός ο :socialAccount είναι ήδη συνδεδεμένος στο προφίλ σας.',
+ 'social_account_already_used_existing' => 'Αυτός ο :socialAccount λογαριασμός χρησιμοποιείται ήδη από άλλο χρήστη.',
+ 'social_account_not_used' => 'Αυτός ο :socialAccount λογαριασμός δεν είναι συνδεδεμένος με κανέναν χρήστη. Παρακαλώ επισυνάψτε τον στις ρυθμίσεις του προφίλ σας. ',
+ 'social_account_register_instructions' => 'Εάν δεν έχετε ακόμα λογαριασμό, μπορείτε να καταχωρήσετε ένα λογαριασμό χρησιμοποιώντας την επιλογή :socialAccount .',
+ 'social_driver_not_found' => 'Δεν βρέθηκε κοινωνικός οδηγός',
+ 'social_driver_not_configured' => 'Οι κοινωνικές ρυθμίσεις του :socialAccount δεν έχουν ρυθμιστεί σωστά.',
+ 'invite_token_expired' => 'Αυτός ο σύνδεσμος πρόσκλησης έχει λήξει. Αντ\' αυτού μπορείτε να προσπαθήσετε να επαναφέρετε τον κωδικό πρόσβασής σας.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // System
+ 'path_not_writable' => 'Η διαδρομή αρχείου :filePath δεν μπόρεσε να μεταφορτωθεί. Βεβαιωθείτε ότι είναι εγγράψιμη στο διακομιστή.',
+ 'cannot_get_image_from_url' => 'Αδυναμία λήψης εικόνας από :url',
+ 'cannot_create_thumbs' => 'Ο διακομιστής δεν μπορεί να δημιουργήσει μικρογραφίες. Παρακαλώ ελέγξτε ότι έχετε την επέκταση GD PHP εγκατεστημένη.',
+ 'server_upload_limit' => 'Ο διακομιστής δεν επιτρέπει τη μεταφόρτωση αυτού του μεγέθους. Παρακαλώ δοκιμάστε ένα μικρότερο μέγεθος αρχείου.',
+ 'server_post_limit' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.',
+ 'uploaded' => 'Ο διακομιστής δεν επιτρέπει τη μεταφόρτωση αυτού του μεγέθους. Παρακαλώ δοκιμάστε ένα μικρότερο μέγεθος αρχείου.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Παρουσιάστηκε σφάλμα κατά το ανέβασμα της εικόνας.',
+ 'image_upload_type_error' => 'Ο τύπος εικόνας που μεταφορτώθηκε δεν είναι έγκυρος',
+ 'image_upload_replace_type' => 'Image file replacements must be of the same type',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Δεν ήταν δυνατή η φόρτωση δεδομένων σχεδίασης. Το αρχείο σχεδίασης ενδέχεται να μην υπάρχει πλέον ή ενδέχεται να μην έχετε άδεια πρόσβασης σε αυτά.',
+
+ // Attachments
+ 'attachment_not_found' => 'Το συνημμένο δεν βρέθηκε',
+ 'attachment_upload_error' => 'An error occurred uploading the attachment file',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Αποτυχία αποθήκευσης προσχέδιου. Βεβαιωθείτε ότι έχετε σύνδεση στο διαδίκτυο πριν την αποθήκευση αυτής της σελίδας',
+ 'page_draft_delete_fail' => 'Failed to delete page draft and fetch current page saved content',
+ 'page_custom_home_deletion' => 'Δεν μπορεί να διαγραφεί μια σελίδα ενώ έχει οριστεί ως αρχική σελίδα',
+
+ // Entities
+ 'entity_not_found' => 'Η οντότητα δεν βρέθηκε',
+ 'bookshelf_not_found' => 'Το ράφι δεν βρέθηκε',
+ 'book_not_found' => 'Το βιβλίο δεν βρέθηκε',
+ 'page_not_found' => 'Η σελίδα δεν βρέθηκε',
+ 'chapter_not_found' => 'Το κεφάλαιο δεν βρέθηκε',
+ 'selected_book_not_found' => 'Το επιλεγμένο βιβλίο δεν βρέθηκε',
+ 'selected_book_chapter_not_found' => 'Το επιλεγμένο βιβλίο ή κεφάλαιο δεν βρέθηκε',
+ 'guests_cannot_save_drafts' => 'Οι επισκέπτες δεν μπορούν να αποθηκεύσουν πρόχειρα',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Δεν μπορείτε να διαγράψετε τον μοναδικό διαχειριστή',
+ 'users_cannot_delete_guest' => 'Δεν μπορείτε να διαγράψετε τον επισκέπτη',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Αυτός ο ρόλος δεν μπορεί να επεξεργαστεί',
+ 'role_system_cannot_be_deleted' => 'Αυτός ο ρόλος είναι ρόλος συστήματος και δεν μπορεί να διαγραφεί',
+ 'role_registration_default_cannot_delete' => 'Αυτός ο ρόλος δεν μπορεί να διαγραφεί ενώ έχει οριστεί ως προεπιλεγμένος ρόλος εγγραφής',
+ 'role_cannot_remove_only_admin' => 'Αυτός ο χρήστης είναι ο μόνος χρήστης που έχει ανατεθεί στον ρόλο διαχειριστή. Εκχωρήστε τον ρόλο διαχειριστή σε άλλο χρήστη πριν επιχειρήσετε να τον καταργήσετε εδώ.',
+
+ // Comments
+ 'comment_list' => 'Παρουσιάστηκε σφάλμα κατά την λήψη σχολίων.',
+ 'cannot_add_comment_to_draft' => 'Δεν μπορείτε να προσθέσετε σχόλια σε ένα προσχέδιο.',
+ 'comment_add' => 'Παρουσιάστηκε σφάλμα κατά την προσθήκη / ενημέρωση του σχολίου.',
+ 'comment_delete' => 'Παρουσιάστηκε σφάλμα κατά τη διαγραφή του σχολίου.',
+ 'empty_comment' => 'Αδυναμία προσθήκης ενός κενού σχολίου.',
+
+ // Error pages
+ '404_page_not_found' => 'Η Σελίδα δε βρέθηκε',
+ 'sorry_page_not_found' => 'Λυπούμαστε, Η σελίδα που αναζητάτε δεν βρέθηκε.',
+ 'sorry_page_not_found_permission_warning' => 'Αν περιμένατε να υπάρχει αυτή η σελίδα, ίσως να μην έχετε δικαίωμα να την δείτε.',
+ 'image_not_found' => 'Η Εικόνα δεν βρέθηκε',
+ 'image_not_found_subtitle' => 'Λυπούμαστε, το αρχείο εικόνας που αναζητάτε δεν μπορεί να βρεθεί.',
+ 'image_not_found_details' => 'Αν περιμένατε να υπάρχει αυτή η εικόνα, ίσως να έχει διαγραφεί.',
+ 'return_home' => 'Επιστροφή στην αρχική σελίδα',
+ 'error_occurred' => 'Προέκυψε Ένα Σφάλμα',
+ 'app_down' => ':appName είναι προσωρινά μη διαθέσιμη',
+ 'back_soon' => 'Θα υπάρξει σύντομα υποστήριξη.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Δεν βρέθηκε διακριτικό εξουσιοδότησης κατόπιν αιτήματος',
+ 'api_bad_authorization_format' => 'Ένα διακριτικό εξουσιοδότησης βρέθηκε κατόπιν αιτήματος, αλλά η μορφή εμφανίστηκε εσφαλμένη',
+ 'api_user_token_not_found' => 'Δεν βρέθηκε αντίστοιχο διακριτικό API για το παρεχόμενο διακριτικό εξουσιοδότησης',
+ 'api_incorrect_token_secret' => 'Το μυστικό που παρέχεται για το δεδομένο χρησιμοποιημένο διακριτικό API είναι εσφαλμένο',
+ 'api_user_no_api_permission' => 'Ο ιδιοκτήτης του χρησιμοποιημένου διακριτικού API δεν έχει άδεια για να κάνει κλήσεις API',
+ 'api_user_token_expired' => 'Το διακριτικό εξουσιοδότησης που χρησιμοποιείται έχει λήξει',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Σφάλμα κατά την αποστολή δοκιμαστικού email:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'The URL does not match the configured allowed SSR hosts',
+];
diff --git a/lang/el/notifications.php b/lang/el/notifications.php
new file mode 100644
index 00000000000..e9a9fe15de1
--- /dev/null
+++ b/lang/el/notifications.php
@@ -0,0 +1,29 @@
+ 'Νέο σχόλιο στη σελίδα: :pageName',
+ 'new_comment_intro' => 'Ένας χρήστης έχει σχολιάσει σε μια σελίδα στο :appName:',
+ 'new_page_subject' => 'Νέα σελίδα: :pageName',
+ 'new_page_intro' => 'Μια νέα σελίδα έχει δημιουργηθεί στο :appName:',
+ 'updated_page_subject' => 'Ενημερωμένη σελίδα: :pageName',
+ 'updated_page_intro' => 'Μια σελίδα έχει ενημερωθεί στο :appName:',
+ 'updated_page_debounce' => 'Για να αποτρέψετε μαζικές ειδοποιήσεις, για κάποιο διάστημα δε θα σας αποστέλλονται ειδοποιήσεις για περαιτέρω αλλαγές σε αυτήν τη σελίδα από τον ίδιο συντάκτη.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Όνομα σελίδας:',
+ 'detail_page_path' => 'Διαδρομή σελίδας:',
+ 'detail_commenter' => 'Σχολιαστής:',
+ 'detail_comment' => 'Σχόλιο:',
+ 'detail_created_by' => 'Δημιουργήθηκε από:',
+ 'detail_updated_by' => 'Ενημερώθηκε από:',
+
+ 'action_view_comment' => 'Προβολή σχολίου',
+ 'action_view_page' => 'Προβολή σελίδας',
+
+ 'footer_reason' => 'Αυτή η ειδοποίηση εστάλη σε εσάς επειδή το :link καλύπτει αυτόν τον τύπο δραστηριότητας για αυτό το αντικείμενο.',
+ 'footer_reason_link' => 'προτιμήσεις σας για ειδοποιήσεις',
+];
diff --git a/lang/el/pagination.php b/lang/el/pagination.php
new file mode 100644
index 00000000000..061ad3f11a9
--- /dev/null
+++ b/lang/el/pagination.php
@@ -0,0 +1,12 @@
+ '« Προηγούμενο',
+ 'next' => 'Επόμενο »',
+
+];
diff --git a/lang/el/passwords.php b/lang/el/passwords.php
new file mode 100644
index 00000000000..a56d1d181ca
--- /dev/null
+++ b/lang/el/passwords.php
@@ -0,0 +1,15 @@
+ 'Ο κωδικός πρόσβασης πρέπει να αποτελείται από τουλάχιστον έξι χαρακτήρες και να ταιριάζει με τον κωδικό επιβεβαίωσης.',
+ 'user' => "Δεν μπορούμε να βρόυμε κάποιον χρήστη με αυτή τη διεύθυνση e-mail.",
+ 'token' => 'Το διακριτικό επαναφοράς κωδικού πρόσβασης δεν είναι έγκυρο για αυτή τη διεύθυνση ηλεκτρονικού ταχυδρομείου.',
+ 'sent' => 'Σας έχουμε στείλει e-mail με τον σύνδεσμο επαναφοράς του κωδικού πρόσβασης!',
+ 'reset' => 'Ο κωδικός σας έχει επαναφερθεί!',
+
+];
diff --git a/lang/el/preferences.php b/lang/el/preferences.php
new file mode 100644
index 00000000000..2c2ce8fe95f
--- /dev/null
+++ b/lang/el/preferences.php
@@ -0,0 +1,52 @@
+ 'My Account',
+
+ 'shortcuts' => 'Συντομεύσεις',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Εδώ μπορείτε να ενεργοποιήσετε ή να απενεργοποιήσετε τις συντομεύσεις του συστήματος πληκτρολογίου, που χρησιμοποιούνται για την πλοήγηση και τις ενέργειες.',
+ 'shortcuts_customize_desc' => 'Μπορείτε να προσαρμόσετε κάθε μία από τις παρακάτω συντομεύσεις. Απλά πατήστε το επιθυμητό συνδυασμό πλήκτρων μετά την επιλογή της εισόδου για μια συντόμευση.',
+ 'shortcuts_toggle_label' => 'Ενεργοποίηση συντομεύσεων πληκτρολογίου',
+ 'shortcuts_section_navigation' => 'Πλοήγηση',
+ 'shortcuts_section_actions' => 'Κοινές ενέργειες',
+ 'shortcuts_save' => 'Αποθήκευση Συντομεύσεων',
+ 'shortcuts_overlay_desc' => 'Σημείωση: Όταν οι συντομεύσεις είναι ενεργοποιημένες μια βοηθητική επικάλυψη είναι διαθέσιμη πατώντας "?" που θα τονίσει τις διαθέσιμες συντομεύσεις για ενέργειες που είναι ορατές στην οθόνη.',
+ 'shortcuts_update_success' => 'Οι προτιμήσεις σας αποθηκεύτηκαν!',
+ 'shortcuts_overview_desc' => 'Manage keyboard shortcuts you can use to navigate the system user interface.',
+
+ 'notifications' => 'Notification Preferences',
+ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.',
+ 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own',
+ 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notify upon replies to my comments',
+ 'notifications_save' => 'Save Preferences',
+ 'notifications_update_success' => 'Notification preferences have been updated!',
+ 'notifications_watched' => 'Watched & Ignored Items',
+ 'notifications_watched_desc' => 'Below are the items that have custom watch preferences applied. To update your preferences for these, view the item then find the watch options in the sidebar.',
+
+ 'auth' => 'Access & Security',
+ 'auth_change_password' => 'Change Password',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Password has been updated!',
+
+ 'profile' => 'Profile Details',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'View Public Profile',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Delete Account',
+ 'delete_my_account' => 'Delete My Account',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/el/settings.php b/lang/el/settings.php
new file mode 100644
index 00000000000..6ec5c4fddeb
--- /dev/null
+++ b/lang/el/settings.php
@@ -0,0 +1,374 @@
+ 'Ρυθμίσεις',
+ 'settings_save' => 'Αποθήκευση ρυθμίσεων',
+ 'system_version' => 'Έκδοση εφαρμογής',
+ 'categories' => 'Κατηγορίες',
+
+ // App Settings
+ 'app_customization' => 'Προσαρμογή',
+ 'app_features_security' => 'Χαρακτηριστικά & Ασφάλεια',
+ 'app_name' => 'Όνομα Εφαρμογής',
+ 'app_name_desc' => 'Αυτό το όνομα εμφανίζεται στην κεφαλίδα της ιστοσελίδας και σε τυχόν μηνύματα ηλεκτρονικού ταχυδρομείου που αποστέλλονται από το σύστημα.',
+ 'app_name_header' => 'Εμφάνιση Ονόματος στην κεφαλίδα',
+ 'app_public_access' => 'Δημόσια Πρόσβαση',
+ 'app_public_access_desc' => 'Η ενεργοποίηση αυτής της επιλογής θα επιτρέψει στους επισκέπτες, που δεν είναι συνδεδεμένοι, να έχουν πρόσβαση στο περιεχόμενο της εφαρμογής BookStack.',
+ 'app_public_access_desc_guest' => 'Η πρόσβαση για δημόσιους επισκέπτες μπορεί να ελεγχθεί μέσω του χρήστη "Guest".',
+ 'app_public_access_toggle' => 'Να επιτρέπεται η δημόσια πρόσβαση',
+ 'app_public_viewing' => 'Να επιτρέπεται η δημόσια προβολή;',
+ 'app_secure_images' => 'Μεταφορτώσεις Εικόνων υψηλότερης Ασφάλειας',
+ 'app_secure_images_toggle' => 'Ενεργοποιήστε τις μεταφορτώσεις Εικόνων υψηλότερης Ασφάλειας',
+ 'app_secure_images_desc' => 'Για λόγους απόδοσης, όλες οι εικόνες είναι δημόσιες. Αυτή η επιλογή προσθέτει μια τυχαία συμβολοσειρά μπροστά από τις διευθύνσεις URL εικόνων, δύσκολο να τη μαντέψει κάποιος. Βεβαιωθείτε ότι τα ευρετήρια καταλόγου δεν είναι ενεργοποιημένα για να αποτρέψετε την εύκολη πρόσβαση.',
+ 'app_default_editor' => 'Προεπιλεγμένος Επεξεργαστής σελίδων',
+ 'app_default_editor_desc' => 'Επιλέξτε ποιο πρόγραμμα επεξεργασίας θα χρησιμοποιείται από προεπιλογή κατά την επεξεργασία νέων σελίδων. Αυτό μπορεί να παρακαμφθεί σε επίπεδο σελίδας όπου το επιτρέπουν τα δικαιώματα.',
+ 'app_custom_html' => 'Προσαρμοσμένο περιεχόμενο κεφαλίδας HTML',
+ 'app_custom_html_desc' => 'Οποιοδήποτε περιεχόμενο προστίθεται εδώ θα εισαχθεί στο κάτω μέρος της ενότητας κάθε σελίδας. Αυτό είναι βολικό για την παράκαμψη ή προσθήκη στυλ καθώς και την προσθήκη κώδικα αναλυτικών στοιχείων.',
+ 'app_custom_html_disabled_notice' => 'Το προσαρμοσμένο περιεχόμενο κεφαλίδας HTML είναι απενεργοποιημένο σε αυτήν τη σελίδα ρυθμίσεων, για να διασφαλιστεί ότι τυχόν αλλαγές που θα πραγματοποιηθούν και θα προκαλέσουν δυσλειτουργία στην ιστοσελίδα σας, μπορούν να επαναφερθούν.',
+ 'app_logo' => 'Λογότυπο εφαρμογής',
+ 'app_logo_desc' => 'Αυτό χρησιμοποιείται στη γραμμή κεφαλίδας εφαρμογής, μεταξύ άλλων περιοχών. Αυτή η εικόνα θα πρέπει να είναι 86px σε ύψος. Οι μεγάλες εικόνες θα κλιμακωθούν.',
+ 'app_icon' => 'Εικονίδιο Εφαρμογής',
+ 'app_icon_desc' => 'Αυτό το εικονίδιο χρησιμοποιείται για τις καρτέλες περιηγητή και τα εικονίδια συντομεύσεων. Αυτό πρέπει να είναι μια τετράγωνη εικόνα 256px σε μορφή PNG.',
+ 'app_homepage' => 'Αρχική σελίδα εφαρμογής',
+ 'app_homepage_desc' => 'Επιλέξτε μια προβολή για εμφάνιση στην αρχική σελίδα αντί για την προεπιλεγμένη προβολή. Τα δικαιώματα σελίδων αγνοούνται για επιλεγμένες σελίδες.',
+ 'app_homepage_select' => 'Επιλέξτε μια σελίδα',
+ 'app_footer_links' => 'Σύνδεσμοι υποσέλιδου',
+ 'app_footer_links_desc' => 'Προσθέστε συνδέσμους για εμφάνιση στο υποσέλιδο του ιστότοπου. Αυτά θα εμφανίζονται στο κάτω μέρος των περισσότερων σελίδων, συμπεριλαμβανομένων εκείνων που δεν απαιτούν σύνδεση. Μπορείτε να χρησιμοποιήσετε μια ετικέτα "trans::" για να χρησιμοποιήσετε μεταφράσεις που καθορίζονται από το σύστημα. Για παράδειγμα: Η χρήση του "trans::common.privacy_policy" θα παρέχει το μεταφρασμένο κείμενο "Πολιτική Απορρήτου" και το "trans::common.terms_of_service" θα παρέχει το μεταφρασμένο κείμενο "Όροι Παροχής Υπηρεσιών".',
+ 'app_footer_links_label' => 'Ετικέτα Συνδέσμου',
+ 'app_footer_links_url' => 'URL Σύνδεσης',
+ 'app_footer_links_add' => 'Προσθήκη Συνδέσμου υποσέλιδου',
+ 'app_disable_comments' => 'Απενεργοποίηση Σχολίων',
+ 'app_disable_comments_toggle' => 'Απενεργοποίηση Σχολίων',
+ 'app_disable_comments_desc' => 'Απενεργοποιεί τα σχόλια σε όλες τις σελίδες της εφαρμογής. Τα υπάρχοντα σχόλια δεν εμφανίζονται.',
+
+ // Color settings
+ 'color_scheme' => 'Θέμα Χρωμάτων Εφαρμογής',
+ 'color_scheme_desc' => 'Ορίστε τα χρώματα που θα χρησιμοποιηθούν στο περιβάλλον χρήστη της εφαρμογής. Τα χρώματα μπορούν να ρυθμιστούν ξεχωριστά για τις λειτουργίες Σκούρο ή Λευκό, για να ταιριάζει καλύτερα στο θέμα και να εξασφαλίσει αναγνωσιμότητα.',
+ 'ui_colors_desc' => 'Ορίστε το πρωτεύον χρώμα της εφαρμογής και το προεπιλεγμένο χρώμα συνδέσμου. Το πρωτεύον χρώμα χρησιμοποιείται κυρίως για την κεφαλίδα, τα κουμπιά και τις διακοσμήσεις διεπαφής. Το προεπιλεγμένο χρώμα συνδέσμου χρησιμοποιείται για συνδέσμους και ενέργειες που βασίζονται στο κείμενο, τόσο μέσα στο γραπτό περιεχόμενο όσο και στη διεπαφή της εφαρμογής.',
+ 'app_color' => 'Κυρίως χρώμα',
+ 'link_color' => 'Κυρίως χρώμα Συνδέσμου',
+ 'content_colors_desc' => 'Ορίζει τα χρώματα για όλα τα στοιχεία στην ιεραρχία οργάνωσης της ιστοσελίδας. Συνιστάται η επιλογή χρωμάτων με παρόμοια φωτεινότητα με τα προεπιλεγμένα, για μέγιστη αναγνωσιμότητα.',
+ 'bookshelf_color' => 'Χρώμα Ραφιού',
+ 'book_color' => 'Χρώμα Βιβλίων',
+ 'chapter_color' => 'Χρώμα Κεφαλαίων Βιβλίων',
+ 'page_color' => 'Χρώμα Σελίδων',
+ 'page_draft_color' => 'Χρώμα Πρoσχέδιων Σελίδων (Draft page)',
+
+ // Registration Settings
+ 'reg_settings' => 'Εγγραφή',
+ 'reg_enable' => 'Ενεργοποίηση Εγγραφής',
+ 'reg_enable_toggle' => 'Ενεργοποίηση εγγραφής',
+ 'reg_enable_desc' => 'Όταν ενεργοποιηθεί η εγγραφή, ο χρήστης θα μπορεί να εγγραφεί ως χρήστης της εφαρμογής. Κατά την εγγραφή τους δίνεται ένας μοναδικός, προεπιλεγμένος ρόλος χρήστη.',
+ 'reg_default_role' => 'Προεπιλεγμένος ρόλος χρήστη μετά την εγγραφή',
+ 'reg_enable_external_warning' => 'Η παραπάνω επιλογή αγνοείται όταν ο εξωτερικός έλεγχος ταυτότητας LDAP ή SAML είναι ενεργός. Οι λογαριασμοί χρηστών για μη υπάρχοντα μέλη θα δημιουργηθούν αυτόματα εάν ο έλεγχος ταυτότητας, έναντι του εξωτερικού συστήματος που χρησιμοποιείται, είναι επιτυχής.',
+ 'reg_email_confirmation' => 'Επιβεβαίωση ηλεκτρονικού ταχυδρομείου',
+ 'reg_email_confirmation_toggle' => 'Απαιτείται η επιβεβαίωση μέσω email',
+ 'reg_confirm_email_desc' => 'Εάν χρησιμοποιείται περιορισμός τομέα, τότε θα απαιτείται επιβεβαίωση μέσω email και αυτή η επιλογή θα αγνοηθεί.',
+ 'reg_confirm_restrict_domain' => 'Περιορισμός Τομέα',
+ 'reg_confirm_restrict_domain_desc' => 'Εισαγάγετε μια λίστα διαχωρισμένων με κόμματα τομέων email στους οποίους θέλετε να περιορίσετε την εγγραφή. Θα σταλεί στους χρήστες ένα email για να επιβεβαιώσουν τη διεύθυνσή τους πριν τους επιτραπεί να αλληλεπιδράσουν με την εφαρμογή. Σημειώστε ότι οι χρήστες θα μπορούν να αλλάξουν τις διευθύνσεις email τους μετά την επιτυχή εγγραφή .',
+ 'reg_confirm_restrict_domain_placeholder' => 'Δε έχουν ρυθμιστεί περιορισμοί ακόμα',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Συντήρηση',
+ 'maint_image_cleanup' => 'Εκκαθάριση Εικόνων',
+ 'maint_image_cleanup_desc' => 'Σαρώνει το περιεχόμενο σελίδων και τις αναθεωρήσεις αυτών για να ελέγξει ποιες εικόνες και σχέδια χρησιμοποιούνται αυτήν τη στιγμή και ποιες είναι περιττές. Βεβαιωθείτε ότι έχετε δημιουργήσει ένα πλήρες αντίγραφο της βάση δεδομένων και των εικόνων προτού το εκτελέσετε.',
+ 'maint_delete_images_only_in_revisions' => 'Διαγράψτε επίσης εικόνες που υπάρχουν μόνο σε παλιές αναθεωρήσεις σελίδων',
+ 'maint_image_cleanup_run' => 'Εκτέλεση Εκκαθάρισης',
+ 'maint_image_cleanup_warning' => 'Βρέθηκαν :count δυνητικά αχρησιμοποίητες εικόνες. Είστε βέβαιοι ότι θέλετε να τις διαγράψετε αυτές;',
+ 'maint_image_cleanup_success' => ':count δυνητικά αχρησιμοποίητες εικόνες βρέθηκαν και διαγράφηκαν!',
+ 'maint_image_cleanup_nothing_found' => 'Δεν βρέθηκαν αχρησιμοποίητες εικόνες, τίποτα δεν διαγράφηκε!',
+ 'maint_send_test_email' => 'Στείλτε ένα δοκιμαστικό email',
+ 'maint_send_test_email_desc' => 'Αυτό στέλνει ένα δοκιμαστικό μήνυμα ηλεκτρονικού ταχυδρομείου στη διεύθυνση email σας που προσδιορίζεται στο προφίλ σας.',
+ 'maint_send_test_email_run' => 'Αποστολή δοκιμαστικού email',
+ 'maint_send_test_email_success' => 'Το email στάλθηκε στη διεύθυνση :address',
+ 'maint_send_test_email_mail_subject' => 'Δοκιμαστικό Email',
+ 'maint_send_test_email_mail_greeting' => 'Η παράδοση email φαίνεται να λειτουργεί!',
+ 'maint_send_test_email_mail_text' => 'Συγχαρητήρια! Καθώς λάβατε αυτήν την ειδοποίηση μέσω email, οι ρυθμίσεις email σας φαίνεται να έχουν διαμορφωθεί σωστά.',
+ 'maint_recycle_bin_desc' => 'Τα διαγραμμένα Ράφια και βιβλία, τα διαγραμμένα κεφάλαια και σελίδες αποστέλλονται στον κάδο ανακύκλωσης, έτσι ώστε να μπορούν να αποκατασταθούν ή να διαγραφούν οριστικά. Τα παλαιότερα αντικείμενα στον κάδο ανακύκλωσης ενδέχεται να αφαιρεθούν αυτόματα μετά από λίγο, ανάλογα με τη διαμόρφωση του συστήματος.',
+ 'maint_recycle_bin_open' => 'Άνοιγμα Κάδου Ανακύκλωσης',
+ 'maint_regen_references' => 'Αναδημιουργία Αναφορών',
+ 'maint_regen_references_desc' => 'Αυτή η ενέργεια θα ξαναχτίσει το ευρετήριο αναφοράς διαστοιχείου μέσα στη βάση δεδομένων. Αυτό συνήθως γίνεται αυτόματα αλλά αυτή η ενέργεια μπορεί να είναι χρήσιμη για το παλιό περιεχόμενο ή περιεχόμενο που προστίθεται μέσω ανεπίσημων μεθόδων.',
+ 'maint_regen_references_success' => 'Το ευρετήριο αναφοράς αναδημιουργήθηκε!',
+ 'maint_timeout_command_note' => 'Σημείωση: Αυτή η ενέργεια μπορεί να πάρει χρόνο για να εκτελεστεί, η οποία μπορεί να οδηγήσει σε προβλήματα χρονικού ορίου σε ορισμένα περιβάλλοντα ιστού. Ως εναλλακτική λύση, αυτή η ενέργεια πρέπει να εκτελείται χρησιμοποιώντας μια εντολή τερματικού.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Κάδος Ανακύκλωσης',
+ 'recycle_bin_desc' => 'Εδώ μπορείτε να επαναφέρετε στοιχεία που έχουν διαγραφεί ή να επιλέξετε να τα αφαιρέσετε οριστικά από το σύστημα. Αυτή η λίστα δεν είναι φιλτραρισμένη όπως γίνεται σε παρόμοιες λίστες δραστηριοτήτων στο σύστημα στις οποίες εφαρμόζονται φίλτρα αδειών.',
+ 'recycle_bin_deleted_item' => 'Διαγραμμένο στοιχείο',
+ 'recycle_bin_deleted_parent' => 'Γονικό Στοιχείο',
+ '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_restore_parent' => 'Επαναφορά Γονέα',
+ 'recycle_bin_destroy_notification' => 'Διαγράφηκαν :count συνολικά αντικείμενα από τον κάδο ανακύκλωσης.',
+ 'recycle_bin_restore_notification' => 'Επαναφέρθηκαν :count συνολικά αντικείμενα από τον κάδο ανακύκλωσης.',
+
+ // Audit Log
+ 'audit' => 'Αρχείο Καταγραφής',
+ 'audit_desc' => 'Αυτό το αρχείο καταγραφής ελέγχου ενεργειών, εμφανίζει μια λίστα δραστηριοτήτων που παρακολουθούνται στο σύστημα. Αυτή η λίστα δεν είναι φιλτραρισμένη σε αντίθεση με παρόμοιες λίστες δραστηριοτήτων στο σύστημα όπου εφαρμόζονται φίλτρα αδειών.',
+ '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_ip' => 'Διεύθυνση IP',
+ 'audit_table_date' => 'Ημερομηνία Δραστηριότητας',
+ 'audit_date_from' => 'Εύρος Ημερομηνίας Από',
+ 'audit_date_to' => 'Εύρος Ημερομηνίας Έως',
+
+ // Role Settings
+ 'roles' => 'Ρόλοι',
+ 'role_user_roles' => 'Ρόλοι Χρηστών',
+ 'roles_index_desc' => 'Οι Ρόλοι χρησιμοποιούνται για την ομαδοποίηση των χρηστών και παρέχουν δικαιώματα για το σύστημα στα μέλη τους. Όταν ένας χρήστης είναι μέλος πολλαπλών Ρόλων, ο χρήστης θα κληρονομεί όλες τις ιδιότητες από όλους τους Ρόλους που ανήκει.',
+ 'roles_x_users_assigned' => ':count εκχωρημένος χρήστης|:count εκχωρημένοι χρήστες',
+ 'roles_x_permissions_provided' => ':count άδεια|:count άδειες',
+ 'roles_assigned_users' => 'Εκχωρημένοι χρήστες',
+ 'roles_permissions_provided' => 'Παρεχόμενα Δικαιώματα',
+ 'role_create' => 'Δημιουργία νέου ρόλου',
+ 'role_delete' => 'Διαγραφή Ρόλου',
+ 'role_delete_confirm' => 'Αυτό θα διαγράψει τον ρόλο με το όνομα \':roleName\'.',
+ 'role_delete_users_assigned' => 'Σε αυτόν τον ρόλο έχουν εκχωρηθεί :userCount χρήστες. Εάν θέλετε να μετεγκαταστήσετε τους χρήστες από αυτόν τον ρόλο, επιλέξτε έναν νέο ρόλο παρακάτω.',
+ 'role_delete_no_migration' => "Μην μεταφέρετε χρήστες",
+ 'role_delete_sure' => 'Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτόν τον ρόλο;',
+ 'role_edit' => 'Επεξεργασία Ρόλου',
+ 'role_details' => 'Λεπτομέρειες Ρόλου',
+ 'role_name' => 'Όνομα Ρόλου',
+ 'role_desc' => 'Σύντομη περιγραφή του Ρόλου',
+ 'role_mfa_enforced' => 'Απαιτεί έλεγχο ταυτότητας πολλαπλών παραγόντων',
+ 'role_external_auth_id' => 'Εξωτερικά αναγνωριστικά (IDs) ελέγχου ταυτότητας',
+ 'role_system' => 'Δικαιώματα Συστήματος',
+ 'role_manage_users' => 'Διαχείριση Χρηστών',
+ 'role_manage_roles' => 'Διαχείριση Ρόλων και Δικαιωμάτων ρόλων',
+ 'role_manage_entity_permissions' => 'Διαχειριστείτε όλα τα δικαιώματα βιβλίου, κεφαλαίων και σελίδων',
+ 'role_manage_own_entity_permissions' => 'Διαχειριστείτε τα δικαιώματα στο δικό σας βιβλίο, κεφάλαιο και σελίδες',
+ 'role_manage_page_templates' => 'Διαχείριση προτύπων σελίδων',
+ 'role_access_api' => 'Πρόσβαση στο API του συστήματος',
+ 'role_manage_settings' => 'Διαχειριστείτε τις ρυθμίσεις του ΑΡΙ',
+ 'role_export_content' => 'Εξαγωγή περιεχομένου',
+ 'role_import_content' => 'Εισαγωγή περιεχομένου',
+ 'role_editor_change' => 'Αλλαγή προγράμματος επεξεργασίας σελίδας',
+ 'role_notifications' => 'Λήψη & διαχείριση ειδοποιήσεων',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Δικαιώματα Συστήματος',
+ 'roles_system_warning' => 'Λάβετε υπόψη ότι η πρόσβαση σε οποιοδήποτε από τις τρεις παραπάνω άδειες (δικαιώματα) μπορεί να επιτρέψει σε έναν χρήστη να αλλάξει τα δικά του προνόμια ή τα προνόμια άλλων στο σύστημα. Εκχωρήστε ρόλους με αυτά τα δικαιώματα μόνο σε αξιόπιστους χρήστες.',
+ 'role_asset_desc' => 'Αυτά τα δικαιώματα ελέγχουν την προεπιλεγμένη πρόσβαση στα στοιχεία (άδειες) εντός του συστήματος. Τα δικαιώματα σε Βιβλία, Κεφάλαια και Σελίδες θα παρακάμψουν αυτές τις άδειες.',
+ 'role_asset_admins' => 'Οι διαχειριστές έχουν αυτόματα πρόσβαση σε όλο το περιεχόμενο, αλλά αυτές οι επιλογές ενδέχεται να εμφανίζουν ή να αποκρύπτουν τις επιλογές διεπαφής χρήστη.',
+ 'role_asset_image_view_note' => 'Αυτό σχετίζεται με την ορατότητα εντός του διαχειριστή εικόνων. Η πραγματική πρόσβαση των μεταφορτωμένων αρχείων εικόνας θα εξαρτηθεί από την επιλογή αποθήκευσης εικόνας συστήματος.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Ολα',
+ 'role_own' => 'Τα δικά του',
+ 'role_controlled_by_asset' => 'Ελέγχονται από το στοιχείο στο οποίο ανεβαίνουν (Ράφια, Βιβλία)',
+ 'role_save' => 'Αποθήκευση Ρόλου',
+ 'role_users' => 'Χρήστες σε αυτόν τον Ρόλο',
+ 'role_users_none' => 'Σε κανένα χρήστη δεν έχει ανατεθεί αυτήν τη στιγμή αυτός ο ρόλος.',
+
+ // Users
+ 'users' => 'Χρήστες',
+ 'users_index_desc' => 'Δημιουργία & διαχείριση μεμονωμένων λογαριασμών χρήστη μέσα στο σύστημα. Οι λογαριασμοί χρήστη χρησιμοποιούνται για τη σύνδεση και την απόδοση του περιεχομένου & δραστηριότητα. Τα δικαιώματα πρόσβασης βασίζονται κυρίως σε Ρόλους, αλλά η κυριότητα του περιεχομένου του χρήστη, μεταξύ άλλων παραγόντων, μπορεί επίσης να επηρεάσει τα δικαιώματα & την πρόσβαση.',
+ 'user_profile' => 'Προφίλ Χρήστη',
+ 'users_add_new' => 'Προσθήκη νέου Χρήστη',
+ 'users_search' => 'Αναζήτηση Χρηστών',
+ 'users_latest_activity' => 'Τελευταία Δραστηριότητα',
+ 'users_details' => 'Στοιχεία χρήστη',
+ 'users_details_desc' => 'Ορίστε ένα εμφανιζόμενο όνομα και μια διεύθυνση email για αυτόν τον χρήστη. Η διεύθυνση email θα χρησιμοποιηθεί για τη σύνδεση στην εφαρμογή.',
+ 'users_details_desc_no_email' => 'Ορίστε το όνομα που θα εμφανίζεται για το χρήστη αυτόν, έτσι ώστε να είναι αναγνωρίσιμος από τους υπόλοιπους.',
+ 'users_role' => 'Ρόλοι χρήστη',
+ 'users_role_desc' => 'Επιλέξτε σε ποιους ρόλους θα εκχωρηθεί αυτός ο χρήστης. Εάν ένας χρήστης έχει εκχωρηθεί σε πολλούς ρόλους, τα δικαιώματα από αυτούς τους ρόλους θα στοιβάζονται και θα λαμβάνουν όλες τις ικανότητες των ρόλων που έχουν εκχωρηθεί.',
+ 'users_password' => 'Κωδικός Χρήστη',
+ 'users_password_desc' => 'Ορίστε έναν κωδικό πρόσβασης που θα χρησιμοποιείται για τη σύνδεση στην εφαρμογή. Αυτός πρέπει να είναι τουλάχιστον 8 χαρακτήρες.',
+ 'users_send_invite_text' => 'Μπορείτε να επιλέξετε να στείλετε σε αυτόν τον χρήστη ένα email πρόσκλησης που του επιτρέπει να ορίσει τον δικό του κωδικό πρόσβασης. Σε διαφορετική περίπτωση μπορείτε να ορίσετε τον κωδικό πρόσβασής του εσείς.',
+ 'users_send_invite_option' => 'Αποστολή email πρόσκλησης σε χρήστη',
+ 'users_external_auth_id' => 'Εξωτερικός έλεγχος ταυτότητας',
+ 'users_external_auth_id_desc' => 'Όταν χρησιμοποιείται ένα εξωτερικό σύστημα ελέγχου ταυτότητας (όπως SAML2, OIDC ή LDAP) αυτό είναι το αναγνωριστικό που συνδέει αυτόν τον χρήστη BookStack με τον λογαριασμό συστήματος ελέγχου ταυτότητας. Μπορείτε να αγνοήσετε αυτό το πεδίο αν χρησιμοποιείτε τον προεπιλεγμένο έλεγχο ταυτότητας μέσω email.',
+ 'users_password_warning' => 'Συμπληρώστε τα παρακάτω μόνο αν θέλετε να αλλάξετε τον κωδικό πρόσβασης για αυτόν το χρήστη.',
+ 'users_system_public' => 'Αυτός ο χρήστης αντιπροσωπεύει οποιονδήποτε επισκέπτη που επισκέπτεται τη Βιβλιοθήκη σας. Δεν μπορεί να χρησιμοποιηθεί για τη σύνδεση αλλά εκχωρείται αυτόματα.',
+ 'users_delete' => 'Διαγραφή Χρήστη',
+ 'users_delete_named' => 'Διαγραφή χρήστη :userName',
+ 'users_delete_warning' => 'Αυτό θα διαγράψει πλήρως αυτόν τον χρήστη με το όνομα \':userName\' από το σύστημα.',
+ 'users_delete_confirm' => 'Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτόν τον χρήστη;',
+ 'users_migrate_ownership' => 'Μεταφορά ιδιοκτησίας',
+ 'users_migrate_ownership_desc' => 'Επιλέξτε έναν χρήστη εδώ, εάν θέλετε ένας άλλος χρήστης να γίνει ο κάτοχος όλων των στοιχείων που ανήκουν επί του παρόντος σε αυτόν τον χρήστη.',
+ 'users_none_selected' => 'Δεν έχει επιλεγεί χρήστης',
+ 'users_edit' => 'Επεξεργασία Χρήστη',
+ 'users_edit_profile' => 'Ρυθμίσεις προφίλ',
+ 'users_avatar' => 'Avatar Χρήστη',
+ 'users_avatar_desc' => 'Επιλέξτε μια εικόνα που θα αντιπροσωπεύει αυτόν τον χρήστη. Αυτό θα πρέπει να είναι περίπου 256px τετράγωνο.',
+ 'users_preferred_language' => 'Προτιμώμενη γλώσσα',
+ 'users_preferred_language_desc' => 'Αυτή η επιλογή θα αλλάξει τη γλώσσα που χρησιμοποιείται για τη διεπαφή χρήστη της εφαρμογής. Αυτό δεν θα επηρεάσει οποιοδήποτε περιεχόμενο που δημιουργήθηκε από χρήστες.',
+ 'users_social_accounts' => 'Λογαριασμοί Κοινωνικής δικτύωσης ',
+ 'users_social_accounts_desc' => 'Δείτε την κατάσταση των συνδεδεμένων λογαριασμών κοινωνικών δικτύων για αυτόν το χρήστη. Οι λογαριασμοί κοινωνικών δικτύων, μπορούν να χρησιμοποιηθούν επιπλέον του κύριου συστήματος ελέγχου ταυτότητας, για πρόσβαση στο σύστημα.',
+ 'users_social_accounts_info' => 'Εδώ μπορείτε να συνδέσετε τους άλλους λογαριασμούς σας για ταχύτερη και ευκολότερη σύνδεση. Η αποσύνδεση ενός λογαριασμού εδώ δεν ανακαλεί προηγουμένως εξουσιοδοτημένη πρόσβαση. Ανάκληση πρόσβασης από τις ρυθμίσεις προφίλ σας στον συνδεδεμένο κοινωνικό λογαριασμό.',
+ 'users_social_connect' => 'Σύνδεση λογαριασμού',
+ 'users_social_disconnect' => 'Αποσύνδεση λογαριασμού',
+ 'users_social_status_connected' => 'Συνδεδεμένο',
+ 'users_social_status_disconnected' => 'Αποσυνδεδεμένο',
+ 'users_social_connected' => ':socialΛογαριασμός λογαριασμού συνδέθηκε με επιτυχία στο προφίλ σας.',
+ 'users_social_disconnected' => ':socialΛογαριασμός αποσυνδέθηκε επιτυχώς από το προφίλ σας.',
+ 'users_api_tokens' => 'API Tokens',
+ 'users_api_tokens_desc' => 'Δημιουργία και διαχείριση των διακριτικών πρόσβασης (token) που χρησιμοποιούνται για τον έλεγχο ταυτότητας με το REST API του BookStack. Τα δικαιώματα για το API τα διαχειρίζεται ο χρήστης στον οποίο ανήκει το διακριτικό (token).',
+ 'users_api_tokens_none' => 'Δεν έχουν δημιουργηθεί διακριτικά API για αυτόν το χρήστη',
+ 'users_api_tokens_create' => 'Δημιουργία διακριτικού Api Token',
+ 'users_api_tokens_expires' => 'Λήγει',
+ 'users_api_tokens_docs' => 'Τεκμηρίωση API',
+ 'users_mfa' => 'Έλεγχος Ταυτοτητας Πολλαπλων Παραγοντων',
+ 'users_mfa_desc' => 'Ρυθμίστε τον έλεγχο ταυτότητας πολλαπλών παραγόντων ως ένα επιπλέον επίπεδο ασφάλειας για τον λογαριασμό χρήστη σας.',
+ 'users_mfa_x_methods' => 'Έχει ρυθμιστεί :count μέθοδος|Έχουν ρυθμιστεί :count μέθοδοι',
+ 'users_mfa_configure' => 'Ρύθμιση Μεθόδων',
+
+ // API Tokens
+ 'user_api_token_create' => 'Δημιουργία διακριτικού (API Token)',
+ 'user_api_token_name' => 'Όνομα',
+ 'user_api_token_name_desc' => 'Δώστε στο διακριτικό σας ένα ευανάγνωστο όνομα ως μελλοντική υπενθύμιση του σκοπού του.',
+ 'user_api_token_expiry' => 'Ημερομηνία λήξης',
+ 'user_api_token_expiry_desc' => 'Ορίστε μια ημερομηνία κατά την οποία λήγει αυτό το διακριτικό. Μετά από αυτήν την ημερομηνία, τα αιτήματα που γίνονται με αυτό το διακριτικό δεν θα λειτουργούν πλέον. Αν αφήσετε αυτό το πεδίο κενό, θα οριστεί η λήξη 100 χρόνια στο μέλλον.',
+ 'user_api_token_create_secret_message' => 'Αμέσως μετά τη δημιουργία αυτού του διακριτικού θα δημιουργηθεί και θα εμφανιστεί ένα "Token ID" & "Token Secret". Το μυστικό(Token Secret) θα εμφανιστεί μόνο μία φορά, επομένως φροντίστε να αντιγράψετε την τιμή σε κάποιο ασφαλές μέρος πριν συνεχίσετε.',
+ 'user_api_token' => 'API Token',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'Αυτό είναι ένα μη επεξεργάσιμο αναγνωριστικό που δημιουργείται από το σύστημα για αυτό το διακριτικό, το οποίο θα πρέπει να παρέχεται σε αιτήματα API.',
+ 'user_api_token_secret' => 'Μυστικό Token',
+ 'user_api_token_secret_desc' => 'Αυτό είναι ένα μυστικό που δημιουργείται από το σύστημα για αυτό το διακριτικό και θα πρέπει να παρέχεται σε αιτήματα API. Αυτό θα εμφανιστεί μόνο μία φορά, επομένως αντιγράψτε αυτήν την τιμή σε κάποιο ασφαλές μέρος.',
+ 'user_api_token_created' => 'Το Διακριτικό δημιουργήθηκε :timeAgo',
+ 'user_api_token_updated' => 'Το Διακριτικό ενημερώθηκε :timeAgo',
+ 'user_api_token_delete' => 'Διαγραφή Διακριτικού',
+ 'user_api_token_delete_warning' => 'Αυτό θα διαγράψει πλήρως αυτό το διακριτικό API με το όνομα \':tokenName\' από το σύστημα.',
+ 'user_api_token_delete_confirm' => 'Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το διακριτικό API;',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Τα Webhooks είναι ένας τρόπος αποστολής δεδομένων σε εξωτερικές διευθύνσεις URL όταν ορισμένες ενέργειες και συμβάντα συμβαίνουν στο σύστημα που επιτρέπει την ενσωμάτωση με εξωτερικές πλατφόρμες όπως συστήματα μηνυμάτων ή ειδοποιήσεων.',
+ 'webhooks_x_trigger_events' => ':count συμβάν ενεργοποίησης|:count συμβάντα ενεργοποίησης',
+ 'webhooks_create' => 'Δημιουργία νέου Webhook',
+ 'webhooks_none_created' => 'Δεν έχουν δημιουργηθεί ακόμη webhook.',
+ 'webhooks_edit' => 'Επεξεργασία Webhook',
+ 'webhooks_save' => 'Αποθήκευση Webhook',
+ 'webhooks_details' => 'Λεπτομέρειες Webhook',
+ 'webhooks_details_desc' => 'Παρέχετε ένα φιλικό προς τον χρήστη όνομα και ένα τελικό σημείο POST ως τοποθεσία για την αποστολή των δεδομένων webhook.',
+ 'webhooks_events' => 'Συμβάντα Webhook',
+ 'webhooks_events_desc' => 'Επιλέξτε όλα τα συμβάντα που θα πρέπει να ενεργοποιήσουν αυτό το webhook για κλήση.',
+ 'webhooks_events_warning' => 'Λάβετε υπόψη ότι αυτά τα συμβάντα θα ενεργοποιηθούν για όλα τα επιλεγμένα συμβάντα, ακόμη και αν εφαρμοστούν προσαρμοσμένα δικαιώματα. Βεβαιωθείτε ότι η χρήση αυτού του webhook δεν θα αποκαλύψει εμπιστευτικό περιεχόμενο.',
+ 'webhooks_events_all' => 'Όλα τα συμβάντα του συστήματος',
+ 'webhooks_name' => 'Όνομα Webhook',
+ 'webhooks_timeout' => 'Χρονικό όριο λήξης αιτήματος Webhook (δευτερόλεπτα)',
+ 'webhooks_endpoint' => 'Τελικό Σημείο Webhook',
+ 'webhooks_active' => 'Webhook Ενεργό',
+ 'webhook_events_table_header' => 'Συμβάντα',
+ 'webhooks_delete' => 'Διαγραφή Webhook',
+ 'webhooks_delete_warning' => 'Αυτό θα διαγράψει πλήρως αυτό το webhook, με το όνομα \':webhookName\', από το σύστημα.',
+ 'webhooks_delete_confirm' => 'Είστε βέβαιοι ότι θέλετε να διαγράψετε αυτό το webhook;',
+ 'webhooks_format_example' => 'Παράδειγμα μορφής Webhook',
+ 'webhooks_format_example_desc' => 'Τα δεδομένα Webhook αποστέλλονται ως αίτημα POST στο διαμορφωμένο τελικό σημείο ως JSON ακολουθώντας την παρακάτω μορφή. Οι ιδιότητες "related_item" και "url" είναι προαιρετικές και εξαρτώνται από τον τύπο του συμβάντος που ενεργοποιείται.',
+ 'webhooks_status' => 'Κατάσταση Webhook',
+ 'webhooks_last_called' => 'Τελευταία κλήση:',
+ 'webhooks_last_errored' => 'Τελευταίο σφάλμα:',
+ 'webhooks_last_error_message' => 'Τελευταίο μήνυμα λάθους:',
+
+ // Licensing
+ 'licenses' => 'Άδειες',
+ 'licenses_desc' => 'Αυτή η σελίδα αναφέρει λεπτομερώς τις πληροφορίες άδειας χρήσης για το BookStack επιπρόσθετα στα έργα και τις βιβλιοθήκες που χρησιμοποιούνται εντός του BookStack. Πολλά έργα που αναφέρονται μπορούν να χρησιμοποιηθούν μόνο σε ένα πλαίσιο ανάπτυξης.',
+ 'licenses_bookstack' => 'Άδεια BookStack',
+ 'licenses_php' => 'Άδειες Βιβλιοθήκης PHP',
+ 'licenses_js' => 'Άδειες Βιβλιοθήκης JavaScript',
+ 'licenses_other' => 'Άλλες άδειες',
+ 'license_details' => 'Λεπτομέρειες άδειας',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/el/validation.php b/lang/el/validation.php
new file mode 100644
index 00000000000..4f384efae64
--- /dev/null
+++ b/lang/el/validation.php
@@ -0,0 +1,123 @@
+ 'Το :attribute πρέπει να γίνει δεκτό.',
+ 'active_url' => 'Το :attribute δεν είναι ένα έγκυρο URL.',
+ 'after' => 'Το :attribute πρέπει να είναι μια ημερομηνία μετά τις :date.',
+ 'alpha' => 'Το :attribute μπορεί να περιέχει μόνο γράμματα.',
+ 'alpha_dash' => 'Tο :attribute μπορεί να περιλαμβάνει μόνο γράμματα, αριθμούς, παύλες και κάτω παύλες.',
+ 'alpha_num' => 'Tο :attribute μπορεί να περιλαμβάνει μόνο γράμματα και αριθμούς.',
+ 'array' => 'Το :attribute πρέπει να είναι πίνακας.',
+ 'backup_codes' => 'Ο παρεχόμενος κωδικός δεν είναι έγκυρος ή έχει ήδη χρησιμοποιηθεί.',
+ 'before' => 'Tο :attribute πρέπει να είναι μια ημερομηνία πριν από :date.',
+ 'between' => [
+ 'numeric' => 'Το :attribute πρέπει να είναι μεταξύ :min και :max.',
+ 'file' => 'Το :attribute πρέπει να είναι μεταξύ :min και :max kilobytes.',
+ 'string' => 'Το πεδίο :attribute πρέπει να είναι μεταξύ από :min και :max characters.',
+ 'array' => 'Το πεδίο :attribute πρέπει να είναι μεταξύ :min και :max αντικείμενα.',
+ ],
+ 'boolean' => 'Το πεδίο :attribute πρέπει να είναι σωστό ή λάθος.',
+ 'confirmed' => 'Η επιβεβαίωση του :attribute δεν ταιριάζει.',
+ 'date' => 'Το :attribute δεν έχει έγκυρη ημερομηνία.',
+ 'date_format' => 'Το :attribute δεν ταιριάζει με τη μορφή :format.',
+ 'different' => 'Τα πεδία :attribute και :other πρέπει να είναι διαφορετικά.',
+ 'digits' => 'Το πεδίο :attribute πρέπει να είναι :digits ψηφία.',
+ 'digits_between' => 'To :attribute πρέπει να είναι μεταξύ :min και :max ψηφία.',
+ 'email' => 'Το πεδίο :attribute πρέπει να είναι μία έγκυρη διεύθυνση E-mail.',
+ 'ends_with' => 'Το :attribute πρέπει να τελειώνει με μια απο τις ακόλουθες: :values',
+ 'file' => 'Το :attribute πρέπει να παρέχεται ως έγκυρο αρχείο.',
+ 'filled' => 'Το πεδίο :attribute είναι υποχρεωτικό.',
+ 'gt' => [
+ 'numeric' => 'Το :attribute πρέπει να είναι μεγαλύτερο από :value.',
+ 'file' => 'To :attribute πρέπει να είναι μεγαλύτερο από :value kilobytes.',
+ 'string' => 'Tο :attribute πρέπει να έχει περισσότερους από :value χαρακτήρες.',
+ 'array' => 'Το :attribute πρέπει να περιέχει περισσότερα από :value αντικείμενα.',
+ ],
+ 'gte' => [
+ 'numeric' => 'Το :attribute πρέπει να είναι μεγαλύτερο ή ίσο από :value.',
+ 'file' => 'Το :attribute πρέπει να είναι μεγαλύτερο ή ίσο με :value kilobytes.',
+ 'string' => 'To :attribute πρέπει να είναι μεγαλύτερο ή ίσο από :value χαρακτήρες.',
+ 'array' => 'Tο :attribute πρέπει να έχει :value αντικείμενα ή περισσότερα.',
+ ],
+ 'exists' => 'Το επιλεγμένο :attribute δεν είναι έγκυρο.',
+ 'image' => 'Tο :attribute πρέπει να είναι εικόνα.',
+ 'image_extension' => 'Το πεδίο :attribute πρέπει να έχει μια έγκυρη & υποστηριζόμενη επέκταση εικόνας.',
+ 'in' => 'Το επιλεγμένο :attribute δεν είναι έγκυρο.',
+ 'integer' => 'Tο :attribute πρέπει να είναι ακέραιος αριθμός.',
+ 'ip' => 'Το πεδίο :attribute πρέπει να είναι μία έγκυρη διεύθυνση IP.',
+ 'ipv4' => 'Tο :attribute πρέπει να είναι μια έγκυρη διεύθυνση IPv4.',
+ 'ipv6' => 'Tο :attribute πρέπει να είναι μια έγκυρη διεύθυνση IPv6.',
+ 'json' => 'H :attribute πρεπει να είναι μια έγκυρη συμβολοσειρά JSON.',
+ 'lt' => [
+ 'numeric' => 'Tο :attribute πρέπει να είναι λιγότερο από :value.',
+ 'file' => 'To :attribute πρέπει να είναι μικρότερο από :value kilobytes.',
+ 'string' => 'To :attribute πρέπει να είναι μικρότερο από :value kilobytes.',
+ 'array' => 'Tο :attribute πρέπει να έχει λιγότερα από :value αντικείμενα.',
+ ],
+ 'lte' => [
+ 'numeric' => 'Το :attribute πρέπει να είναι μικρότερο ή ίσο του :value.',
+ 'file' => 'Το :attribute πρέπει να είναι μικρότερο ή ίσο του :value kilobytes.',
+ 'string' => 'Tο :attribute πρέπει να έχει λιγότερους από ή ίδιους :value χαρακτήρες.',
+ 'array' => 'Tο :attribute δεν πρέπει να έχει περισσότερα από :value αντικείμενα.',
+ ],
+ 'max' => [
+ 'numeric' => 'Tο :attribute δεν μπορεί να είναι μεγαλύτερο από :max.',
+ 'file' => 'To :attribute δεν μπορεί να είναι μεγαλύτερο από :max kilobytes.',
+ 'string' => 'Το :attribute δεν μπορεί να είναι μεγαλύτερο από :max χαρακτήρες.',
+ 'array' => 'Tο :attribute δεν μπορεί να έχει περισσότερα από :max αντικείμενα.',
+ ],
+ 'mimes' => 'Το πεδίο :attribute πρέπει να είναι ένα αρχείου τύπου: :values.',
+ 'min' => [
+ 'numeric' => 'To :attribute πρέπει να είναι τουλάχιστον :min.',
+ 'file' => 'Το :attribute πρέπει είναι τουλάχιστον :min kilobytes.',
+ 'string' => 'Το :attribute πρέπει να είναι τουλάχιστον :min χαρακτήρες.',
+ 'array' => 'To :attribute πρέπει να έχει τουλάχιστον :min αντικείμενα.',
+ ],
+ 'not_in' => 'Το επιλεγμένο :attribute δεν είναι έγκυρο.',
+ 'not_regex' => 'Η μορφή του :attribute δεν είναι έγκυρη.',
+ 'numeric' => 'To :attribute πρέπει να είναι αριθμός.',
+ 'regex' => 'Το :attribute έχει μη έγκυρη μορφή.',
+ 'required' => 'Το πεδίο :attribute είναι υποχρεωτικό.',
+ 'required_if' => 'To πεδίο :attribute είναι απαραίτητο εκτός αν :other είναι σε :values.',
+ 'required_with' => 'To πεδίο :attribute είναι απαραίτητο όταν υπάρχουν οι :values.',
+ 'required_with_all' => 'To πεδίο :attribute είναι απαραίτητο όταν υπάρχουν οι :values.',
+ 'required_without' => 'To πεδίο :attribute είναι απαραίτητο όταν δεν υπάρχουν οι :values.',
+ 'required_without_all' => 'To πεδίο :attribute είναι απαραίτητο όταν δεν υπάρχουν καμία από :values.',
+ 'same' => 'Το πεδίο :attribute και :other πρέπει να είναι ίδια.',
+ 'safe_url' => 'Ο παρεχόμενος σύνδεσμος μπορεί να μην είναι ασφαλής.',
+ 'size' => [
+ 'numeric' => 'Το :attribute πρέπει να είναι :size.',
+ 'file' => 'Το :attribute πρέπει να έχει μέγεθος :size kilobytes.',
+ 'string' => 'Το πεδίο :attribute πρέπει να είναι :size χαρακτήρες.',
+ 'array' => 'Το πεδίο :attribute πρέπει να περιέχει :size αντικείμενα.',
+ ],
+ 'string' => 'Το :attribute πρέπει να είναι συμβολοσειρά.',
+ 'timezone' => 'Το πεδίο :attribute πρέπει να είναι μία έγκυρη ζώνη ώρας.',
+ 'totp' => 'Ο παρεχόμενος κωδικός δεν είναι έγκυρος ή έχει λήξει.',
+ 'unique' => 'Το πεδίο :attribute έχει ήδη χρησιμοποιηθεί.',
+ 'url' => 'Η μορφή του :attribute δεν είναι έγκυρη.',
+ 'uploaded' => 'Δεν ήταν δυνατή η αποστολή του αρχείου. Ο διακομιστής ενδέχεται να μην δέχεται αρχεία αυτού του μεγέθους.',
+
+ 'zip_file' => 'Το :attribute πρέπει να παραπέμπει σε ένα αρχείο εντός του ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'Το :attribute πρέπει να αναφέρεται σε αρχείο τύπου :validTypes, βρέθηκε :foundType.',
+ 'zip_model_expected' => 'Αναμενόταν αντικείμενο δεδομένων, αλλά ":type" βρέθηκε.',
+ 'zip_unique' => 'Το :attribute πρέπει να είναι μοναδικό για τον τύπο αντικειμένου εντός του ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Απαιτείται επιβεβαίωση κωδικού πρόσβασης',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/en/activities.php b/lang/en/activities.php
new file mode 100644
index 00000000000..4362fc02958
--- /dev/null
+++ b/lang/en/activities.php
@@ -0,0 +1,140 @@
+ 'created page',
+ 'page_create_notification' => 'Page successfully created',
+ 'page_update' => 'updated page',
+ 'page_update_notification' => 'Page successfully updated',
+ 'page_delete' => 'deleted page',
+ 'page_delete_notification' => 'Page successfully deleted',
+ 'page_restore' => 'restored page',
+ 'page_restore_notification' => 'Page successfully restored',
+ 'page_move' => 'moved page',
+ 'page_move_notification' => 'Page successfully moved',
+
+ // Chapters
+ 'chapter_create' => 'created chapter',
+ 'chapter_create_notification' => 'Chapter successfully created',
+ 'chapter_update' => 'updated chapter',
+ 'chapter_update_notification' => 'Chapter successfully updated',
+ 'chapter_delete' => 'deleted chapter',
+ 'chapter_delete_notification' => 'Chapter successfully deleted',
+ 'chapter_move' => 'moved chapter',
+ 'chapter_move_notification' => 'Chapter successfully moved',
+
+ // Books
+ 'book_create' => 'created book',
+ 'book_create_notification' => 'Book successfully created',
+ 'book_create_from_chapter' => 'converted chapter to book',
+ 'book_create_from_chapter_notification' => 'Chapter successfully converted to a book',
+ 'book_update' => 'updated book',
+ 'book_update_notification' => 'Book successfully updated',
+ 'book_delete' => 'deleted book',
+ 'book_delete_notification' => 'Book successfully deleted',
+ 'book_sort' => 'sorted book',
+ 'book_sort_notification' => 'Book successfully re-sorted',
+
+ // Bookshelves
+ 'bookshelf_create' => 'created shelf',
+ 'bookshelf_create_notification' => 'Shelf successfully created',
+ 'bookshelf_create_from_book' => 'converted book to shelf',
+ 'bookshelf_create_from_book_notification' => 'Book successfully converted to a shelf',
+ 'bookshelf_update' => 'updated shelf',
+ 'bookshelf_update_notification' => 'Shelf successfully updated',
+ 'bookshelf_delete' => 'deleted shelf',
+ 'bookshelf_delete_notification' => 'Shelf successfully deleted',
+
+ // Revisions
+ 'revision_restore' => 'restored revision',
+ 'revision_delete' => 'deleted revision',
+ 'revision_delete_notification' => 'Revision successfully deleted',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" has been added to your favourites',
+ 'favourite_remove_notification' => '":name" has been removed from your favourites',
+
+ // Watching
+ 'watch_update_level_notification' => 'Watch preferences successfully updated',
+
+ // Auth
+ 'auth_login' => 'logged in',
+ 'auth_register' => 'registered as new user',
+ 'auth_password_reset_request' => 'requested user password reset',
+ 'auth_password_reset_update' => 'reset user password',
+ 'mfa_setup_method' => 'configured MFA method',
+ 'mfa_setup_method_notification' => 'Multi-factor method successfully configured',
+ 'mfa_remove_method' => 'removed MFA method',
+ 'mfa_remove_method_notification' => 'Multi-factor method successfully removed',
+
+ // Settings
+ 'settings_update' => 'updated settings',
+ 'settings_update_notification' => 'Settings successfully updated',
+ 'maintenance_action_run' => 'ran maintenance action',
+
+ // Webhooks
+ 'webhook_create' => 'created webhook',
+ 'webhook_create_notification' => 'Webhook successfully created',
+ 'webhook_update' => 'updated webhook',
+ 'webhook_update_notification' => 'Webhook successfully updated',
+ 'webhook_delete' => 'deleted webhook',
+ 'webhook_delete_notification' => 'Webhook successfully deleted',
+
+ // Imports
+ 'import_create' => 'created import',
+ 'import_create_notification' => 'Import successfully uploaded',
+ 'import_run' => 'updated import',
+ 'import_run_notification' => 'Content successfully imported',
+ 'import_delete' => 'deleted import',
+ 'import_delete_notification' => 'Import successfully deleted',
+
+ // Users
+ 'user_create' => 'created user',
+ 'user_create_notification' => 'User successfully created',
+ 'user_update' => 'updated user',
+ 'user_update_notification' => 'User successfully updated',
+ 'user_delete' => 'deleted user',
+ 'user_delete_notification' => 'User successfully removed',
+
+ // API Tokens
+ 'api_token_create' => 'created API token',
+ 'api_token_create_notification' => 'API token successfully created',
+ 'api_token_update' => 'updated API token',
+ 'api_token_update_notification' => 'API token successfully updated',
+ 'api_token_delete' => 'deleted API token',
+ 'api_token_delete_notification' => 'API token successfully deleted',
+
+ // Roles
+ 'role_create' => 'created role',
+ 'role_create_notification' => 'Role successfully created',
+ 'role_update' => 'updated role',
+ 'role_update_notification' => 'Role successfully updated',
+ 'role_delete' => 'deleted role',
+ 'role_delete_notification' => 'Role successfully deleted',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'emptied recycle bin',
+ 'recycle_bin_restore' => 'restored from recycle bin',
+ 'recycle_bin_destroy' => 'removed from recycle bin',
+
+ // Comments
+ 'commented_on' => 'commented on',
+ 'comment_create' => 'added comment',
+ 'comment_update' => 'updated comment',
+ 'comment_delete' => 'deleted comment',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'updated permissions',
+];
diff --git a/lang/en/auth.php b/lang/en/auth.php
new file mode 100644
index 00000000000..57f0cb5c632
--- /dev/null
+++ b/lang/en/auth.php
@@ -0,0 +1,117 @@
+ 'These credentials do not match our records.',
+ 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
+
+ // Login & Register
+ 'sign_up' => 'Sign up',
+ 'log_in' => 'Log in',
+ 'log_in_with' => 'Login with :socialDriver',
+ 'sign_up_with' => 'Sign up with :socialDriver',
+ 'logout' => 'Logout',
+
+ 'name' => 'Name',
+ 'username' => 'Username',
+ 'email' => 'Email',
+ 'password' => 'Password',
+ 'password_confirm' => 'Confirm Password',
+ 'password_hint' => 'Must be at least 8 characters',
+ 'forgot_password' => 'Forgot Password?',
+ 'remember_me' => 'Remember Me',
+ 'ldap_email_hint' => 'Please enter an email to use for this account.',
+ 'create_account' => 'Create Account',
+ 'already_have_account' => 'Already have an account?',
+ 'dont_have_account' => 'Don\'t have an account?',
+ 'social_login' => 'Social Login',
+ 'social_registration' => 'Social Registration',
+ 'social_registration_text' => 'Register and sign in using another service.',
+
+ 'register_thanks' => 'Thanks for registering!',
+ 'register_confirm' => 'Please check your email and click the confirmation button to access :appName.',
+ 'registrations_disabled' => 'Registrations are currently disabled',
+ 'registration_email_domain_invalid' => 'That email domain does not have access to this application',
+ 'register_success' => 'Thanks for signing up! You are now registered and signed in.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Attempting Login',
+ 'auto_init_starting_desc' => 'We\'re contacting your authentication system to start the login process. If there\'s no progress after 5 seconds you can try clicking the link below.',
+ 'auto_init_start_link' => 'Proceed with authentication',
+
+ // Password Reset
+ 'reset_password' => 'Reset Password',
+ 'reset_password_send_instructions' => 'Enter your email below and you will be sent an email with a password reset link.',
+ 'reset_password_send_button' => 'Send Reset Link',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
+ 'reset_password_success' => 'Your password has been successfully reset.',
+ 'email_reset_subject' => 'Reset your :appName password',
+ 'email_reset_text' => 'You are receiving this email because we received a password reset request for your account.',
+ 'email_reset_not_requested' => 'If you did not request a password reset, no further action is required.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Confirm your email on :appName',
+ 'email_confirm_greeting' => 'Thanks for joining :appName!',
+ 'email_confirm_text' => 'Please confirm your email address by clicking the button below:',
+ 'email_confirm_action' => 'Confirm Email',
+ 'email_confirm_send_error' => 'Email confirmation required but the system could not send the email. Contact the admin to ensure email is set up correctly.',
+ 'email_confirm_success' => 'Your email has been confirmed! You should now be able to login using this email address.',
+ 'email_confirm_resent' => 'Confirmation email resent, Please check your inbox.',
+ 'email_confirm_thanks' => 'Thanks for confirming!',
+ 'email_confirm_thanks_desc' => 'Please wait a moment while your confirmation is handled. If you are not redirected after 3 seconds press the "Continue" link below to proceed.',
+
+ 'email_not_confirmed' => 'Email Address Not Confirmed',
+ 'email_not_confirmed_text' => 'Your email address has not yet been confirmed.',
+ 'email_not_confirmed_click_link' => 'Please click the link in the email that was sent shortly after you registered.',
+ 'email_not_confirmed_resend' => 'If you cannot find the email you can re-send the confirmation email by submitting the form below.',
+ 'email_not_confirmed_resend_button' => 'Resend Confirmation Email',
+
+ // User Invite
+ 'user_invite_email_subject' => 'You have been invited to join :appName!',
+ 'user_invite_email_greeting' => 'An account has been created for you on :appName.',
+ 'user_invite_email_text' => 'Click the button below to set an account password and gain access:',
+ 'user_invite_email_action' => 'Set Account Password',
+ 'user_invite_page_welcome' => 'Welcome to :appName!',
+ 'user_invite_page_text' => 'To finalise your account and gain access you need to set a password which will be used to log-in to :appName on future visits.',
+ 'user_invite_page_confirm_button' => 'Confirm Password',
+ 'user_invite_success_login' => 'Password set, you should now be able to login using your set password to access :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Setup Multi-Factor Authentication',
+ 'mfa_setup_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'mfa_setup_configured' => 'Already configured',
+ 'mfa_setup_reconfigure' => 'Reconfigure',
+ 'mfa_setup_remove_confirmation' => 'Are you sure you want to remove this multi-factor authentication method?',
+ 'mfa_setup_action' => 'Setup',
+ 'mfa_backup_codes_usage_limit_warning' => 'You have less than 5 backup codes remaining, Please generate and store a new set before you run out of codes to prevent being locked out of your account.',
+ 'mfa_option_totp_title' => 'Mobile App',
+ 'mfa_option_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Backup Codes',
+ 'mfa_option_backup_codes_desc' => 'Generates a set of one-time-use backup codes which you\'ll enter on login to verify your identity. Make sure to store these in a safe & secure place.',
+ 'mfa_gen_confirm_and_enable' => 'Confirm and Enable',
+ 'mfa_gen_backup_codes_title' => 'Backup Codes Setup',
+ 'mfa_gen_backup_codes_desc' => 'Store the below list of codes in a safe place. When accessing the system you\'ll be able to use one of the codes as a second authentication mechanism.',
+ 'mfa_gen_backup_codes_download' => 'Download Codes',
+ 'mfa_gen_backup_codes_usage_warning' => 'Each code can only be used once',
+ 'mfa_gen_totp_title' => 'Mobile App Setup',
+ 'mfa_gen_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Scan the QR code below using your preferred authentication app to get started.',
+ 'mfa_gen_totp_verify_setup' => 'Verify Setup',
+ 'mfa_gen_totp_verify_setup_desc' => 'Verify that all is working by entering a code, generated within your authentication app, in the input box below:',
+ 'mfa_gen_totp_provide_code_here' => 'Provide your app generated code here',
+ 'mfa_verify_access' => 'Verify Access',
+ 'mfa_verify_access_desc' => 'Your user account requires you to confirm your identity via an additional level of verification before you\'re granted access. Verify using one of your configured methods to continue.',
+ 'mfa_verify_no_methods' => 'No Methods Configured',
+ 'mfa_verify_no_methods_desc' => 'No multi-factor authentication methods could be found for your account. You\'ll need to set up at least one method before you gain access.',
+ 'mfa_verify_use_totp' => 'Verify using a mobile app',
+ 'mfa_verify_use_backup_codes' => 'Verify using a backup code',
+ 'mfa_verify_backup_code' => 'Backup Code',
+ 'mfa_verify_backup_code_desc' => 'Enter one of your remaining backup codes below:',
+ 'mfa_verify_backup_code_enter_here' => 'Enter backup code here',
+ 'mfa_verify_totp_desc' => 'Enter the code, generated using your mobile app, below:',
+ 'mfa_setup_login_notification' => 'Multi-factor method configured, Please now login again using the configured method.',
+];
diff --git a/lang/en/common.php b/lang/en/common.php
new file mode 100644
index 00000000000..06a9e855ce3
--- /dev/null
+++ b/lang/en/common.php
@@ -0,0 +1,115 @@
+ 'Cancel',
+ 'close' => 'Close',
+ 'confirm' => 'Confirm',
+ 'back' => 'Back',
+ 'save' => 'Save',
+ 'continue' => 'Continue',
+ 'select' => 'Select',
+ 'toggle_all' => 'Toggle All',
+ 'more' => 'More',
+
+ // Form Labels
+ 'name' => 'Name',
+ 'description' => 'Description',
+ 'role' => 'Role',
+ 'cover_image' => 'Cover image',
+ 'cover_image_description' => 'This image should be approximately 440x250px although it will be flexibly scaled & cropped to fit the user interface in different scenarios as required, so actual dimensions for display will differ.',
+
+ // Actions
+ 'actions' => 'Actions',
+ 'view' => 'View',
+ 'view_all' => 'View All',
+ 'new' => 'New',
+ 'create' => 'Create',
+ 'update' => 'Update',
+ 'edit' => 'Edit',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Sort',
+ 'move' => 'Move',
+ 'copy' => 'Copy',
+ 'reply' => 'Reply',
+ 'delete' => 'Delete',
+ 'delete_confirm' => 'Confirm Deletion',
+ 'search' => 'Search',
+ 'search_clear' => 'Clear Search',
+ 'reset' => 'Reset',
+ 'remove' => 'Remove',
+ 'add' => 'Add',
+ 'configure' => 'Configure',
+ 'manage' => 'Manage',
+ 'fullscreen' => 'Fullscreen',
+ 'favourite' => 'Favourite',
+ 'unfavourite' => 'Unfavourite',
+ 'next' => 'Next',
+ 'previous' => 'Previous',
+ 'filter_active' => 'Active Filter:',
+ 'filter_clear' => 'Clear Filter',
+ 'download' => 'Download',
+ 'open_in_tab' => 'Open in Tab',
+ 'open' => 'Open',
+
+ // Sort Options
+ 'sort_options' => 'Sort Options',
+ 'sort_direction_toggle' => 'Sort Direction Toggle',
+ 'sort_ascending' => 'Sort Ascending',
+ 'sort_descending' => 'Sort Descending',
+ 'sort_name' => 'Name',
+ 'sort_default' => 'Default',
+ 'sort_created_at' => 'Created Date',
+ 'sort_updated_at' => 'Updated Date',
+
+ // Misc
+ 'deleted_user' => 'Deleted User',
+ 'no_activity' => 'No activity to show',
+ 'no_items' => 'No items available',
+ 'back_to_top' => 'Back to top',
+ 'skip_to_main_content' => 'Skip to main content',
+ 'toggle_details' => 'Toggle Details',
+ 'toggle_thumbnails' => 'Toggle Thumbnails',
+ 'details' => 'Details',
+ 'grid_view' => 'Grid View',
+ 'list_view' => 'List View',
+ 'default' => 'Default',
+ 'breadcrumb' => 'Breadcrumb',
+ 'status' => 'Status',
+ 'status_active' => 'Active',
+ 'status_inactive' => 'Inactive',
+ 'never' => 'Never',
+ 'none' => 'None',
+
+ // Header
+ 'homepage' => 'Homepage',
+ 'header_menu_expand' => 'Expand Header Menu',
+ 'profile_menu' => 'Profile Menu',
+ 'view_profile' => 'View Profile',
+ 'edit_profile' => 'Edit Profile',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
+ 'global_search' => 'Global Search',
+
+ // Layout tabs
+ 'tab_info' => 'Info',
+ 'tab_info_label' => 'Tab: Show Secondary Information',
+ 'tab_content' => 'Content',
+ 'tab_content_label' => 'Tab: Show Primary Content',
+
+ // Email Content
+ 'email_action_help' => 'If you’re having trouble clicking the ":actionText" button, copy and paste the URL below into your web browser:',
+ 'email_rights' => 'All rights reserved',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Privacy Policy',
+ 'terms_of_service' => 'Terms of Service',
+
+ // OpenSearch
+ 'opensearch_description' => 'Search :appName',
+];
diff --git a/lang/en/components.php b/lang/en/components.php
new file mode 100644
index 00000000000..c33b1d0b791
--- /dev/null
+++ b/lang/en/components.php
@@ -0,0 +1,46 @@
+ 'Image Select',
+ 'image_list' => 'Image List',
+ 'image_details' => 'Image Details',
+ 'image_upload' => 'Upload Image',
+ 'image_intro' => 'Here you can select and manage images that have been previously uploaded to the system.',
+ 'image_intro_upload' => 'Upload a new image by dragging an image file into this window, or by using the "Upload Image" button above.',
+ 'image_all' => 'All',
+ 'image_all_title' => 'View all images',
+ 'image_book_title' => 'View images uploaded to this book',
+ 'image_page_title' => 'View images uploaded to this page',
+ 'image_search_hint' => 'Search by image name',
+ 'image_uploaded' => 'Uploaded :uploadedDate',
+ 'image_uploaded_by' => 'Uploaded by :userName',
+ 'image_uploaded_to' => 'Uploaded to :pageLink',
+ 'image_updated' => 'Updated :updateDate',
+ 'image_load_more' => 'Load More',
+ 'image_image_name' => 'Image Name',
+ 'image_delete_used' => 'This image is used in the pages below.',
+ 'image_delete_confirm_text' => 'Are you sure you want to delete this image?',
+ 'image_select_image' => 'Select Image',
+ 'image_dropzone' => 'Drop images or click here to upload',
+ 'image_dropzone_drop' => 'Drop images here to upload',
+ 'images_deleted' => 'Images Deleted',
+ 'image_preview' => 'Image Preview',
+ 'image_upload_success' => 'Image uploaded successfully',
+ 'image_update_success' => 'Image details successfully updated',
+ 'image_delete_success' => 'Image successfully deleted',
+ 'image_replace' => 'Replace Image',
+ 'image_replace_success' => 'Image file successfully updated',
+ 'image_rebuild_thumbs' => 'Regenerate Size Variations',
+ 'image_rebuild_thumbs_success' => 'Image size variations successfully rebuilt!',
+
+ // Code Editor
+ 'code_editor' => 'Edit Code',
+ 'code_language' => 'Code Language',
+ 'code_content' => 'Code Content',
+ 'code_session_history' => 'Session History',
+ 'code_save' => 'Save Code',
+];
diff --git a/lang/en/editor.php b/lang/en/editor.php
new file mode 100644
index 00000000000..0d250e9a7bd
--- /dev/null
+++ b/lang/en/editor.php
@@ -0,0 +1,182 @@
+ 'General',
+ 'advanced' => 'Advanced',
+ 'none' => 'None',
+ 'cancel' => 'Cancel',
+ 'save' => 'Save',
+ 'close' => 'Close',
+ 'apply' => 'Apply',
+ 'undo' => 'Undo',
+ 'redo' => 'Redo',
+ 'left' => 'Left',
+ 'center' => 'Center',
+ 'right' => 'Right',
+ 'top' => 'Top',
+ 'middle' => 'Middle',
+ 'bottom' => 'Bottom',
+ 'width' => 'Width',
+ 'height' => 'Height',
+ 'More' => 'More',
+ 'select' => 'Select...',
+
+ // Toolbar
+ 'formats' => 'Formats',
+ 'header_large' => 'Large Header',
+ 'header_medium' => 'Medium Header',
+ 'header_small' => 'Small Header',
+ 'header_tiny' => 'Tiny Header',
+ 'paragraph' => 'Paragraph',
+ 'blockquote' => 'Blockquote',
+ 'inline_code' => 'Inline code',
+ 'callouts' => 'Callouts',
+ 'callout_information' => 'Information',
+ 'callout_success' => 'Success',
+ 'callout_warning' => 'Warning',
+ 'callout_danger' => 'Danger',
+ 'bold' => 'Bold',
+ 'italic' => 'Italic',
+ 'underline' => 'Underline',
+ 'strikethrough' => 'Strikethrough',
+ 'superscript' => 'Superscript',
+ 'subscript' => 'Subscript',
+ 'text_color' => 'Text color',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Custom color',
+ 'remove_color' => 'Remove color',
+ 'background_color' => 'Background color',
+ 'align_left' => 'Align left',
+ 'align_center' => 'Align center',
+ 'align_right' => 'Align right',
+ 'align_justify' => 'Justify',
+ 'list_bullet' => 'Bullet list',
+ 'list_numbered' => 'Numbered list',
+ 'list_task' => 'Task list',
+ 'indent_increase' => 'Increase indent',
+ 'indent_decrease' => 'Decrease indent',
+ 'table' => 'Table',
+ 'insert_image' => 'Insert image',
+ 'insert_image_title' => 'Insert/Edit Image',
+ 'insert_link' => 'Insert/edit link',
+ 'insert_link_title' => 'Insert/Edit Link',
+ 'insert_horizontal_line' => 'Insert horizontal line',
+ 'insert_code_block' => 'Insert code block',
+ 'edit_code_block' => 'Edit code block',
+ 'insert_drawing' => 'Insert/edit drawing',
+ 'drawing_manager' => 'Drawing manager',
+ 'insert_media' => 'Insert/edit media',
+ 'insert_media_title' => 'Insert/Edit Media',
+ 'clear_formatting' => 'Clear formatting',
+ 'source_code' => 'Source code',
+ 'source_code_title' => 'Source Code',
+ 'fullscreen' => 'Fullscreen',
+ 'image_options' => 'Image options',
+
+ // Tables
+ 'table_properties' => 'Table properties',
+ 'table_properties_title' => 'Table Properties',
+ 'delete_table' => 'Delete table',
+ 'table_clear_formatting' => 'Clear table formatting',
+ 'resize_to_contents' => 'Resize to contents',
+ 'row_header' => 'Row header',
+ 'insert_row_before' => 'Insert row before',
+ 'insert_row_after' => 'Insert row after',
+ 'delete_row' => 'Delete row',
+ 'insert_column_before' => 'Insert column before',
+ 'insert_column_after' => 'Insert column after',
+ 'delete_column' => 'Delete column',
+ 'table_cell' => 'Cell',
+ 'table_row' => 'Row',
+ 'table_column' => 'Column',
+ 'cell_properties' => 'Cell properties',
+ 'cell_properties_title' => 'Cell Properties',
+ 'cell_type' => 'Cell type',
+ 'cell_type_cell' => 'Cell',
+ 'cell_scope' => 'Scope',
+ 'cell_type_header' => 'Header cell',
+ 'merge_cells' => 'Merge cells',
+ 'split_cell' => 'Split cell',
+ 'table_row_group' => 'Row Group',
+ 'table_column_group' => 'Column Group',
+ 'horizontal_align' => 'Horizontal align',
+ 'vertical_align' => 'Vertical align',
+ 'border_width' => 'Border width',
+ 'border_style' => 'Border style',
+ 'border_color' => 'Border color',
+ 'row_properties' => 'Row properties',
+ 'row_properties_title' => 'Row Properties',
+ 'cut_row' => 'Cut row',
+ 'copy_row' => 'Copy row',
+ 'paste_row_before' => 'Paste row before',
+ 'paste_row_after' => 'Paste row after',
+ 'row_type' => 'Row type',
+ 'row_type_header' => 'Header',
+ 'row_type_body' => 'Body',
+ 'row_type_footer' => 'Footer',
+ 'alignment' => 'Alignment',
+ 'cut_column' => 'Cut column',
+ 'copy_column' => 'Copy column',
+ 'paste_column_before' => 'Paste column before',
+ 'paste_column_after' => 'Paste column after',
+ 'cell_padding' => 'Cell padding',
+ 'cell_spacing' => 'Cell spacing',
+ 'caption' => 'Caption',
+ 'show_caption' => 'Show caption',
+ 'constrain' => 'Constrain proportions',
+ 'cell_border_solid' => 'Solid',
+ 'cell_border_dotted' => 'Dotted',
+ 'cell_border_dashed' => 'Dashed',
+ 'cell_border_double' => 'Double',
+ 'cell_border_groove' => 'Groove',
+ 'cell_border_ridge' => 'Ridge',
+ 'cell_border_inset' => 'Inset',
+ 'cell_border_outset' => 'Outset',
+ 'cell_border_none' => 'None',
+ 'cell_border_hidden' => 'Hidden',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Source',
+ 'alt_desc' => 'Alternative description',
+ 'embed' => 'Embed',
+ 'paste_embed' => 'Paste your embed code below:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Text to display',
+ 'title' => 'Title',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Open link',
+ 'open_link_in' => 'Open link in...',
+ 'open_link_current' => 'Current window',
+ 'open_link_new' => 'New window',
+ 'remove_link' => 'Remove link',
+ 'insert_collapsible' => 'Insert collapsible block',
+ 'collapsible_unwrap' => 'Unwrap',
+ 'edit_label' => 'Edit label',
+ 'toggle_open_closed' => 'Toggle open/closed',
+ 'collapsible_edit' => 'Edit collapsible block',
+ 'toggle_label' => 'Toggle label',
+
+ // About view
+ 'about' => 'About the editor',
+ 'about_title' => 'About the WYSIWYG Editor',
+ 'editor_license' => 'Editor License & Copyright',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'This editor is built using :tinyLink which is provided under the MIT license.',
+ 'editor_tiny_license_link' => 'The copyright and license details of TinyMCE can be found here.',
+ 'save_continue' => 'Save Page & Continue',
+ 'callouts_cycle' => '(Keep pressing to toggle through types)',
+ 'link_selector' => 'Link to content',
+ 'shortcuts' => 'Shortcuts',
+ 'shortcut' => 'Shortcut',
+ 'shortcuts_intro' => 'The following shortcuts are available in the editor:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Description',
+];
diff --git a/lang/en/entities.php b/lang/en/entities.php
new file mode 100644
index 00000000000..74c50be3b2f
--- /dev/null
+++ b/lang/en/entities.php
@@ -0,0 +1,476 @@
+ 'Recently Created',
+ 'recently_created_pages' => 'Recently Created Pages',
+ 'recently_updated_pages' => 'Recently Updated Pages',
+ 'recently_created_chapters' => 'Recently Created Chapters',
+ 'recently_created_books' => 'Recently Created Books',
+ 'recently_created_shelves' => 'Recently Created Shelves',
+ 'recently_update' => 'Recently Updated',
+ 'recently_viewed' => 'Recently Viewed',
+ 'recent_activity' => 'Recent Activity',
+ 'create_now' => 'Create one now',
+ 'revisions' => 'Revisions',
+ 'meta_revision' => 'Revision #:revisionCount',
+ 'meta_created' => 'Created :timeLength',
+ 'meta_created_name' => 'Created :timeLength by :user',
+ 'meta_updated' => 'Updated :timeLength',
+ 'meta_updated_name' => 'Updated :timeLength by :user',
+ 'meta_owned_name' => 'Owned by :user',
+ 'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
+ 'entity_select' => 'Entity Select',
+ 'entity_select_lack_permission' => 'You don\'t have the required permissions to select this item',
+ 'images' => 'Images',
+ 'my_recent_drafts' => 'My Recent Drafts',
+ 'my_recently_viewed' => 'My Recently Viewed',
+ 'my_most_viewed_favourites' => 'My Most Viewed Favourites',
+ 'my_favourites' => 'My Favourites',
+ 'no_pages_viewed' => 'You have not viewed any pages',
+ 'no_pages_recently_created' => 'No pages have been recently created',
+ 'no_pages_recently_updated' => 'No pages have been recently updated',
+ 'export' => 'Export',
+ 'export_html' => 'Contained Web File',
+ 'export_pdf' => 'PDF File',
+ 'export_text' => 'Plain Text File',
+ 'export_md' => 'Markdown File',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Permissions',
+ 'permissions_desc' => 'Set permissions here to override the default permissions provided by user roles.',
+ 'permissions_book_cascade' => 'Permissions set on books will automatically cascade to child chapters and pages, unless they have their own permissions defined.',
+ 'permissions_chapter_cascade' => 'Permissions set on chapters will automatically cascade to child pages, unless they have their own permissions defined.',
+ 'permissions_save' => 'Save Permissions',
+ 'permissions_owner' => 'Owner',
+ 'permissions_role_everyone_else' => 'Everyone Else',
+ 'permissions_role_everyone_else_desc' => 'Set permissions for all roles not specifically overridden.',
+ 'permissions_role_override' => 'Override permissions for role',
+ 'permissions_inherit_defaults' => 'Inherit defaults',
+
+ // Search
+ 'search_results' => 'Search Results',
+ 'search_total_results_found' => ':count result found|:count total results found',
+ 'search_clear' => 'Clear Search',
+ 'search_no_pages' => 'No pages matched this search',
+ 'search_for_term' => 'Search for :term',
+ 'search_more' => 'More Results',
+ 'search_advanced' => 'Advanced Search',
+ 'search_terms' => 'Search Terms',
+ 'search_content_type' => 'Content Type',
+ 'search_exact_matches' => 'Exact Matches',
+ 'search_tags' => 'Tag Searches',
+ 'search_options' => 'Options',
+ 'search_viewed_by_me' => 'Viewed by me',
+ 'search_not_viewed_by_me' => 'Not viewed by me',
+ 'search_permissions_set' => 'Permissions set',
+ 'search_created_by_me' => 'Created by me',
+ 'search_updated_by_me' => 'Updated by me',
+ 'search_owned_by_me' => 'Owned by me',
+ 'search_date_options' => 'Date Options',
+ 'search_updated_before' => 'Updated before',
+ 'search_updated_after' => 'Updated after',
+ 'search_created_before' => 'Created before',
+ 'search_created_after' => 'Created after',
+ 'search_set_date' => 'Set Date',
+ 'search_update' => 'Update Search',
+
+ // Shelves
+ 'shelf' => 'Shelf',
+ 'shelves' => 'Shelves',
+ 'x_shelves' => ':count Shelf|:count Shelves',
+ 'shelves_empty' => 'No shelves have been created',
+ 'shelves_create' => 'Create New Shelf',
+ 'shelves_popular' => 'Popular Shelves',
+ 'shelves_new' => 'New Shelves',
+ 'shelves_new_action' => 'New Shelf',
+ 'shelves_popular_empty' => 'The most popular shelves will appear here.',
+ 'shelves_new_empty' => 'The most recently created shelves will appear here.',
+ 'shelves_save' => 'Save Shelf',
+ 'shelves_books' => 'Books on this shelf',
+ 'shelves_add_books' => 'Add books to this shelf',
+ 'shelves_drag_books' => 'Drag books below to add them to this shelf',
+ 'shelves_empty_contents' => 'This shelf has no books assigned to it',
+ 'shelves_edit_and_assign' => 'Edit shelf to assign books',
+ 'shelves_edit_named' => 'Edit Shelf :name',
+ 'shelves_edit' => 'Edit Shelf',
+ 'shelves_delete' => 'Delete Shelf',
+ 'shelves_delete_named' => 'Delete Shelf :name',
+ 'shelves_delete_explain' => "This will delete the shelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Are you sure you want to delete this shelf?',
+ 'shelves_permissions' => 'Shelf Permissions',
+ 'shelves_permissions_updated' => 'Shelf Permissions Updated',
+ 'shelves_permissions_active' => 'Shelf Permissions Active',
+ 'shelves_permissions_cascade_warning' => 'Permissions on shelves do not automatically cascade to contained books. This is because a book can exist on multiple shelves. Permissions can however be copied down to child books using the option found below.',
+ 'shelves_permissions_create' => 'Shelf create permissions are only used for copying permissions to child books using the action below. They do not control the ability to create books.',
+ 'shelves_copy_permissions_to_books' => 'Copy Permissions to Books',
+ 'shelves_copy_permissions' => 'Copy Permissions',
+ 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this shelf to all books contained within. Before activating, ensure any changes to the permissions of this shelf have been saved.',
+ 'shelves_copy_permission_success' => 'Shelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'Book',
+ 'books' => 'Books',
+ 'x_books' => ':count Book|:count Books',
+ 'books_empty' => 'No books have been created',
+ 'books_popular' => 'Popular Books',
+ 'books_recent' => 'Recent Books',
+ 'books_new' => 'New Books',
+ 'books_new_action' => 'New Book',
+ 'books_popular_empty' => 'The most popular books will appear here.',
+ 'books_new_empty' => 'The most recently created books will appear here.',
+ 'books_create' => 'Create New Book',
+ 'books_delete' => 'Delete Book',
+ 'books_delete_named' => 'Delete Book :bookName',
+ 'books_delete_explain' => 'This will delete the book with the name \':bookName\'. All pages and chapters will be removed.',
+ 'books_delete_confirmation' => 'Are you sure you want to delete this book?',
+ 'books_edit' => 'Edit Book',
+ 'books_edit_named' => 'Edit Book :bookName',
+ 'books_form_book_name' => 'Book Name',
+ 'books_save' => 'Save Book',
+ 'books_permissions' => 'Book Permissions',
+ 'books_permissions_updated' => 'Book Permissions Updated',
+ 'books_empty_contents' => 'No pages or chapters have been created for this book.',
+ 'books_empty_create_page' => 'Create a new page',
+ 'books_empty_sort_current_book' => 'Sort the current book',
+ 'books_empty_add_chapter' => 'Add a chapter',
+ 'books_permissions_active' => 'Book Permissions Active',
+ 'books_search_this' => 'Search this book',
+ 'books_navigation' => 'Book Navigation',
+ 'books_sort' => 'Sort Book Contents',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Sort Book :bookName',
+ 'books_sort_name' => 'Sort by Name',
+ 'books_sort_created' => 'Sort by Created Date',
+ 'books_sort_updated' => 'Sort by Updated Date',
+ 'books_sort_chapters_first' => 'Chapters First',
+ 'books_sort_chapters_last' => 'Chapters Last',
+ 'books_sort_show_other' => 'Show Other Books',
+ 'books_sort_save' => 'Save New Order',
+ 'books_sort_show_other_desc' => 'Add other books here to include them in the sort operation, and allow easy cross-book reorganisation.',
+ 'books_sort_move_up' => 'Move Up',
+ 'books_sort_move_down' => 'Move Down',
+ 'books_sort_move_prev_book' => 'Move to Previous Book',
+ 'books_sort_move_next_book' => 'Move to Next Book',
+ 'books_sort_move_prev_chapter' => 'Move Into Previous Chapter',
+ 'books_sort_move_next_chapter' => 'Move Into Next Chapter',
+ 'books_sort_move_book_start' => 'Move to Start of Book',
+ 'books_sort_move_book_end' => 'Move to End of Book',
+ 'books_sort_move_before_chapter' => 'Move to Before Chapter',
+ 'books_sort_move_after_chapter' => 'Move to After Chapter',
+ 'books_copy' => 'Copy Book',
+ 'books_copy_success' => 'Book successfully copied',
+
+ // Chapters
+ 'chapter' => 'Chapter',
+ 'chapters' => 'Chapters',
+ 'x_chapters' => ':count Chapter|:count Chapters',
+ 'chapters_popular' => 'Popular Chapters',
+ 'chapters_new' => 'New Chapter',
+ 'chapters_create' => 'Create New Chapter',
+ 'chapters_delete' => 'Delete Chapter',
+ 'chapters_delete_named' => 'Delete Chapter :chapterName',
+ 'chapters_delete_explain' => 'This will delete the chapter with the name \':chapterName\'. All pages that exist within this chapter will also be deleted.',
+ 'chapters_delete_confirm' => 'Are you sure you want to delete this chapter?',
+ 'chapters_edit' => 'Edit Chapter',
+ 'chapters_edit_named' => 'Edit Chapter :chapterName',
+ 'chapters_save' => 'Save Chapter',
+ 'chapters_move' => 'Move Chapter',
+ 'chapters_move_named' => 'Move Chapter :chapterName',
+ 'chapters_copy' => 'Copy Chapter',
+ 'chapters_copy_success' => 'Chapter successfully copied',
+ 'chapters_permissions' => 'Chapter Permissions',
+ 'chapters_empty' => 'No pages are currently in this chapter.',
+ 'chapters_permissions_active' => 'Chapter Permissions Active',
+ 'chapters_permissions_success' => 'Chapter Permissions Updated',
+ 'chapters_search_this' => 'Search this chapter',
+ 'chapter_sort_book' => 'Sort Book',
+
+ // Pages
+ 'page' => 'Page',
+ 'pages' => 'Pages',
+ 'x_pages' => ':count Page|:count Pages',
+ 'pages_popular' => 'Popular Pages',
+ 'pages_new' => 'New Page',
+ 'pages_attachments' => 'Attachments',
+ 'pages_navigation' => 'Page Navigation',
+ 'pages_delete' => 'Delete Page',
+ 'pages_delete_named' => 'Delete Page :pageName',
+ 'pages_delete_draft_named' => 'Delete Draft Page :pageName',
+ 'pages_delete_draft' => 'Delete Draft Page',
+ 'pages_delete_success' => 'Page deleted',
+ 'pages_delete_draft_success' => 'Draft page deleted',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Are you sure you want to delete this page?',
+ 'pages_delete_draft_confirm' => 'Are you sure you want to delete this draft page?',
+ 'pages_editing_named' => 'Editing Page :pageName',
+ 'pages_edit_draft_options' => 'Draft Options',
+ 'pages_edit_save_draft' => 'Save Draft',
+ 'pages_edit_draft' => 'Edit Page Draft',
+ 'pages_editing_draft' => 'Editing Draft',
+ 'pages_editing_page' => 'Editing Page',
+ 'pages_edit_draft_save_at' => 'Draft saved at ',
+ 'pages_edit_delete_draft' => 'Delete Draft',
+ 'pages_edit_delete_draft_confirm' => 'Are you sure you want to delete your draft page changes? All of your changes, since the last full save, will be lost and the editor will be updated with the latest page non-draft save state.',
+ 'pages_edit_discard_draft' => 'Discard Draft',
+ 'pages_edit_switch_to_markdown' => 'Switch to Markdown Editor',
+ 'pages_edit_switch_to_markdown_clean' => '(Clean Content)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stable Content)',
+ 'pages_edit_switch_to_wysiwyg' => 'Switch to WYSIWYG Editor',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Set Changelog',
+ 'pages_edit_enter_changelog_desc' => 'Enter a brief description of the changes you\'ve made',
+ 'pages_edit_enter_changelog' => 'Enter Changelog',
+ 'pages_editor_switch_title' => 'Switch Editor',
+ 'pages_editor_switch_are_you_sure' => 'Are you sure you want to change the editor for this page?',
+ 'pages_editor_switch_consider_following' => 'Consider the following when changing editors:',
+ 'pages_editor_switch_consideration_a' => 'Once saved, the new editor option will be used by any future editors, including those that may not be able to change editor type themselves.',
+ 'pages_editor_switch_consideration_b' => 'This can potentially lead to a loss of detail and syntax in certain circumstances.',
+ 'pages_editor_switch_consideration_c' => 'Tag or changelog changes, made since last save, won\'t persist across this change.',
+ 'pages_save' => 'Save Page',
+ 'pages_title' => 'Page Title',
+ 'pages_name' => 'Page Name',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Preview',
+ 'pages_md_insert_image' => 'Insert Image',
+ 'pages_md_insert_link' => 'Insert Entity Link',
+ 'pages_md_insert_drawing' => 'Insert Drawing',
+ 'pages_md_show_preview' => 'Show preview',
+ 'pages_md_sync_scroll' => 'Sync preview scroll',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Unsaved Drawing Found',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'Page is not in a chapter',
+ 'pages_move' => 'Move Page',
+ 'pages_copy' => 'Copy Page',
+ 'pages_copy_desination' => 'Copy Destination',
+ 'pages_copy_success' => 'Page successfully copied',
+ 'pages_permissions' => 'Page Permissions',
+ 'pages_permissions_success' => 'Page permissions updated',
+ 'pages_revision' => 'Revision',
+ 'pages_revisions' => 'Page Revisions',
+ 'pages_revisions_desc' => 'Listed below are all the past revisions of this page. You can look back upon, compare, and restore old page versions if permissions allow. The full history of the page may not be fully reflected here since, depending on system configuration, old revisions could be auto-deleted.',
+ 'pages_revisions_named' => 'Page Revisions for :pageName',
+ 'pages_revision_named' => 'Page Revision for :pageName',
+ 'pages_revision_restored_from' => 'Restored from #:id; :summary',
+ 'pages_revisions_created_by' => 'Created By',
+ 'pages_revisions_date' => 'Revision Date',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revision Number',
+ 'pages_revisions_numbered' => 'Revision #:id',
+ 'pages_revisions_numbered_changes' => 'Revision #:id Changes',
+ 'pages_revisions_editor' => 'Editor Type',
+ 'pages_revisions_changelog' => 'Changelog',
+ 'pages_revisions_changes' => 'Changes',
+ 'pages_revisions_current' => 'Current Version',
+ 'pages_revisions_preview' => 'Preview',
+ 'pages_revisions_restore' => 'Restore',
+ 'pages_revisions_none' => 'This page has no revisions',
+ 'pages_copy_link' => 'Copy Link',
+ 'pages_edit_content_link' => 'Jump to section in editor',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Page Section Options',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Page Permissions Active',
+ 'pages_initial_revision' => 'Initial publish',
+ 'pages_references_update_revision' => 'System auto-update of internal links',
+ 'pages_initial_name' => 'New Page',
+ 'pages_editing_draft_notification' => 'You are currently editing a draft that was last saved :timeDiff.',
+ 'pages_draft_edited_notification' => 'This page has been updated by since that time. It is recommended that you discard this draft.',
+ 'pages_draft_page_changed_since_creation' => 'This page has been updated since this draft was created. It is recommended that you discard this draft or take care not to overwrite any page changes.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count users have started editing this page',
+ 'start_b' => ':userName has started editing this page',
+ 'time_a' => 'since the page was last updated',
+ 'time_b' => 'in the last :minCount minutes',
+ 'message' => ':start :time. Take care not to overwrite each other\'s updates!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'Specific Page',
+ 'pages_is_template' => 'Page Template',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'Page Tags',
+ 'chapter_tags' => 'Chapter Tags',
+ 'book_tags' => 'Book Tags',
+ 'shelf_tags' => 'Shelf Tags',
+ 'tag' => 'Tag',
+ 'tags' => 'Tags',
+ 'tags_index_desc' => 'Tags can be applied to content within the system to apply a flexible form of categorization. Tags can have both a key and value, with the value being optional. Once applied, content can then be queried using the tag name and value.',
+ 'tag_name' => 'Tag Name',
+ 'tag_value' => 'Tag Value (Optional)',
+ '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' => 'Add another tag',
+ 'tags_remove' => 'Remove this tag',
+ 'tags_usages' => 'Total tag usages',
+ 'tags_assigned_pages' => 'Assigned to Pages',
+ 'tags_assigned_chapters' => 'Assigned to Chapters',
+ 'tags_assigned_books' => 'Assigned to Books',
+ 'tags_assigned_shelves' => 'Assigned to Shelves',
+ 'tags_x_unique_values' => ':count unique values',
+ 'tags_all_values' => 'All values',
+ 'tags_view_tags' => 'View Tags',
+ 'tags_view_existing_tags' => 'View existing tags',
+ 'tags_list_empty_hint' => 'Tags can be assigned via the page editor sidebar or while editing the details of a book, chapter or shelf.',
+ 'attachments' => 'Attachments',
+ 'attachments_explain' => 'Upload some files or attach some links to display on your page. These are visible in the page sidebar.',
+ 'attachments_explain_instant_save' => 'Changes here are saved instantly.',
+ 'attachments_upload' => 'Upload File',
+ 'attachments_link' => 'Attach Link',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'Set Link',
+ 'attachments_delete' => 'Are you sure you want to delete this attachment?',
+ 'attachments_dropzone' => 'Drop files here to upload',
+ 'attachments_no_files' => 'No files have been uploaded',
+ 'attachments_explain_link' => 'You can attach a link if you\'d prefer not to upload a file. This can be a link to another page or a link to a file in the cloud.',
+ 'attachments_link_name' => 'Link Name',
+ 'attachment_link' => 'Attachment link',
+ 'attachments_link_url' => 'Link to file',
+ 'attachments_link_url_hint' => 'Url of site or file',
+ 'attach' => 'Attach',
+ 'attachments_insert_link' => 'Add Attachment Link to Page',
+ 'attachments_edit_file' => 'Edit File',
+ 'attachments_edit_file_name' => 'File Name',
+ 'attachments_edit_drop_upload' => 'Drop files or click here to upload and overwrite',
+ 'attachments_order_updated' => 'Attachment order updated',
+ 'attachments_updated_success' => 'Attachment details updated',
+ 'attachments_deleted' => 'Attachment deleted',
+ 'attachments_file_uploaded' => 'File successfully uploaded',
+ 'attachments_file_updated' => 'File successfully updated',
+ 'attachments_link_attached' => 'Link successfully attached to page',
+ 'templates' => 'Templates',
+ 'templates_set_as_template' => 'Page is a template',
+ 'templates_explain_set_as_template' => 'You can set this page as a template so its contents be utilized when creating other pages. Other users will be able to use this template if they have view permissions for this page.',
+ 'templates_replace_content' => 'Replace page content',
+ 'templates_append_content' => 'Append to page content',
+ 'templates_prepend_content' => 'Prepend to page content',
+
+ // Profile View
+ 'profile_user_for_x' => 'User for :time',
+ 'profile_created_content' => 'Created Content',
+ 'profile_not_created_pages' => ':userName has not created any pages',
+ 'profile_not_created_chapters' => ':userName has not created any chapters',
+ 'profile_not_created_books' => ':userName has not created any books',
+ 'profile_not_created_shelves' => ':userName has not created any shelves',
+
+ // Comments
+ 'comment' => 'Comment',
+ 'comments' => 'Comments',
+ 'comment_add' => 'Add Comment',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Leave a comment here',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Save Comment',
+ 'comment_new' => 'New Comment',
+ 'comment_created' => 'commented :createDiff',
+ 'comment_updated' => 'Updated :updateDiff by :username',
+ 'comment_updated_indicator' => 'Updated',
+ 'comment_deleted_success' => 'Comment deleted',
+ 'comment_created_success' => 'Comment added',
+ 'comment_updated_success' => 'Comment updated',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Are you sure you want to delete this comment?',
+ 'comment_in_reply_to' => 'In reply to :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Here are the comments that have been left on this page. Comments can be added & managed when viewing the saved page.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Are you sure you want to delete this revision?',
+ 'revision_restore_confirm' => 'Are you sure you want to restore this revision? The current page contents will be replaced.',
+ 'revision_cannot_delete_latest' => 'Cannot delete the latest revision.',
+
+ // Copy view
+ 'copy_consider' => 'Please consider the below when copying content.',
+ 'copy_consider_permissions' => 'Custom permission settings will not be copied.',
+ 'copy_consider_owner' => 'You will become the owner of all copied content.',
+ 'copy_consider_images' => 'Page image files will not be duplicated & the original images will retain their relation to the page they were originally uploaded to.',
+ 'copy_consider_attachments' => 'Page attachments will not be copied.',
+ 'copy_consider_access' => 'A change of location, owner or permissions may result in this content being accessible to those previously without access.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Convert to Shelf',
+ 'convert_to_shelf_contents_desc' => 'You can convert this book to a new shelf with the same contents. Chapters contained within this book will be converted to new books. If this book contains any pages, that are not in a chapter, this book will be renamed and contain such pages, and this book will become part of the new shelf.',
+ 'convert_to_shelf_permissions_desc' => 'Any permissions set on this book will be copied to the new shelf and to all new child books that don\'t have their own permissions enforced. Note that permissions on shelves do not auto-cascade to content within, as they do for books.',
+ 'convert_book' => 'Convert Book',
+ 'convert_book_confirm' => 'Are you sure you want to convert this book?',
+ 'convert_undo_warning' => 'This cannot be as easily undone.',
+ 'convert_to_book' => 'Convert to Book',
+ 'convert_to_book_desc' => 'You can convert this chapter to a new book with the same contents. Any permissions set on this chapter will be copied to the new book but any inherited permissions, from the parent book, will not be copied which could lead to a change of access control.',
+ 'convert_chapter' => 'Convert Chapter',
+ 'convert_chapter_confirm' => 'Are you sure you want to convert this chapter?',
+
+ // References
+ 'references' => 'References',
+ 'references_none' => 'There are no tracked references to this item.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Watch',
+ 'watch_title_default' => 'Default Preferences',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignore',
+ 'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
+ 'watch_title_new' => 'New Pages',
+ 'watch_desc_new' => 'Notify when any new page is created within this item.',
+ 'watch_title_updates' => 'All Page Updates',
+ 'watch_desc_updates' => 'Notify upon all new pages and page changes.',
+ 'watch_desc_updates_page' => 'Notify upon all page changes.',
+ 'watch_title_comments' => 'All Page Updates & Comments',
+ 'watch_desc_comments' => 'Notify upon all new pages, page changes and new comments.',
+ 'watch_desc_comments_page' => 'Notify upon page changes and new comments.',
+ 'watch_change_default' => 'Change default notification preferences',
+ 'watch_detail_ignore' => 'Ignoring notifications',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/en/errors.php b/lang/en/errors.php
new file mode 100644
index 00000000000..20537d59f0c
--- /dev/null
+++ b/lang/en/errors.php
@@ -0,0 +1,135 @@
+ 'You do not have permission to access the requested page.',
+ 'permissionJson' => 'You do not have permission to perform the requested action.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'A user with the email :email already exists but with different credentials.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'Email has already been confirmed, Try logging in.',
+ 'email_confirmation_invalid' => 'This confirmation token is not valid or has already been used, Please try registering again.',
+ 'email_confirmation_expired' => 'The confirmation token has expired, A new confirmation email has been sent.',
+ 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed',
+ 'ldap_fail_anonymous' => 'LDAP access failed using anonymous bind',
+ 'ldap_fail_authed' => 'LDAP access failed using given dn & password details',
+ 'ldap_extension_not_installed' => 'LDAP PHP extension not installed',
+ 'ldap_cannot_connect' => 'Cannot connect to ldap server, Initial connection failed',
+ 'saml_already_logged_in' => 'Already logged in',
+ 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.',
+ 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'oidc_already_logged_in' => 'Already logged in',
+ 'oidc_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'oidc_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'social_no_action_defined' => 'No action defined',
+ 'social_login_bad_response' => "Error received during :socialAccount login: \n:error",
+ 'social_account_in_use' => 'This :socialAccount account is already in use, Try logging in via the :socialAccount option.',
+ 'social_account_email_in_use' => 'The email :email is already in use. If you already have an account you can connect your :socialAccount account from your profile settings.',
+ 'social_account_existing' => 'This :socialAccount is already attached to your profile.',
+ 'social_account_already_used_existing' => 'This :socialAccount account is already used by another user.',
+ 'social_account_not_used' => 'This :socialAccount account is not linked to any users. Please attach it in your profile settings. ',
+ 'social_account_register_instructions' => 'If you do not yet have an account, You can register an account using the :socialAccount option.',
+ 'social_driver_not_found' => 'Social driver not found',
+ 'social_driver_not_configured' => 'Your :socialAccount social settings are not configured correctly.',
+ 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // System
+ 'path_not_writable' => 'File path :filePath could not be uploaded to. Ensure it is writable to the server.',
+ 'cannot_get_image_from_url' => 'Cannot get image from :url',
+ 'cannot_create_thumbs' => 'The server cannot create thumbnails. Please check you have the GD PHP extension installed.',
+ 'server_upload_limit' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+ 'server_post_limit' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.',
+ 'uploaded' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'An error occurred uploading the image',
+ 'image_upload_type_error' => 'The image type being uploaded is invalid',
+ 'image_upload_replace_type' => 'Image file replacements must be of the same type',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Drawing data could not be loaded. The drawing file might no longer exist or you may not have permission to access it.',
+
+ // Attachments
+ 'attachment_not_found' => 'Attachment not found',
+ 'attachment_upload_error' => 'An error occurred uploading the attachment file',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Failed to save draft. Ensure you have internet connection before saving this page',
+ 'page_draft_delete_fail' => 'Failed to delete page draft and fetch current page saved content',
+ 'page_custom_home_deletion' => 'Cannot delete a page while it is set as a homepage',
+
+ // Entities
+ 'entity_not_found' => 'Entity not found',
+ 'bookshelf_not_found' => 'Shelf not found',
+ 'book_not_found' => 'Book not found',
+ 'page_not_found' => 'Page not found',
+ 'chapter_not_found' => 'Chapter not found',
+ 'selected_book_not_found' => 'The selected book was not found',
+ 'selected_book_chapter_not_found' => 'The selected Book or Chapter was not found',
+ 'guests_cannot_save_drafts' => 'Guests cannot save drafts',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'You cannot delete the only admin',
+ 'users_cannot_delete_guest' => 'You cannot delete the guest user',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'This role cannot be edited',
+ 'role_system_cannot_be_deleted' => 'This role is a system role and cannot be deleted',
+ 'role_registration_default_cannot_delete' => 'This role cannot be deleted while set as the default registration role',
+ 'role_cannot_remove_only_admin' => 'This user is the only user assigned to the administrator role. Assign the administrator role to another user before attempting to remove it here.',
+
+ // Comments
+ 'comment_list' => 'An error occurred while fetching the comments.',
+ 'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.',
+ 'comment_add' => 'An error occurred while adding / updating the comment.',
+ 'comment_delete' => 'An error occurred while deleting the comment.',
+ 'empty_comment' => 'Cannot add an empty comment.',
+
+ // Error pages
+ '404_page_not_found' => 'Page Not Found',
+ 'sorry_page_not_found' => 'Sorry, The page you were looking for could not be found.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
+ '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' => 'Return to home',
+ 'error_occurred' => 'An Error Occurred',
+ 'app_down' => ':appName is down right now',
+ 'back_soon' => 'It will be back up soon.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'No authorization token found on the request',
+ 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect',
+ 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token',
+ 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
+ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
+ 'api_user_token_expired' => 'The authorization token used has expired',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'The URL does not match the configured allowed SSR hosts',
+];
diff --git a/lang/en/notifications.php b/lang/en/notifications.php
new file mode 100644
index 00000000000..563ac24e84d
--- /dev/null
+++ b/lang/en/notifications.php
@@ -0,0 +1,29 @@
+ 'New comment on page: :pageName',
+ 'new_comment_intro' => 'A user has commented on a page in :appName:',
+ 'new_page_subject' => 'New page: :pageName',
+ 'new_page_intro' => 'A new page has been created in :appName:',
+ 'updated_page_subject' => 'Updated page: :pageName',
+ 'updated_page_intro' => 'A page has been updated in :appName:',
+ 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Page Name:',
+ 'detail_page_path' => 'Page Path:',
+ 'detail_commenter' => 'Commenter:',
+ 'detail_comment' => 'Comment:',
+ 'detail_created_by' => 'Created By:',
+ 'detail_updated_by' => 'Updated By:',
+
+ 'action_view_comment' => 'View Comment',
+ 'action_view_page' => 'View Page',
+
+ 'footer_reason' => 'This notification was sent to you because :link cover this type of activity for this item.',
+ 'footer_reason_link' => 'your notification preferences',
+];
diff --git a/resources/lang/en/pagination.php b/lang/en/pagination.php
similarity index 100%
rename from resources/lang/en/pagination.php
rename to lang/en/pagination.php
diff --git a/resources/lang/en/passwords.php b/lang/en/passwords.php
similarity index 100%
rename from resources/lang/en/passwords.php
rename to lang/en/passwords.php
diff --git a/lang/en/preferences.php b/lang/en/preferences.php
new file mode 100644
index 00000000000..f4459d738e4
--- /dev/null
+++ b/lang/en/preferences.php
@@ -0,0 +1,52 @@
+ 'My Account',
+
+ 'shortcuts' => 'Shortcuts',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Here you can enable or disable keyboard system interface shortcuts, used for navigation and actions.',
+ 'shortcuts_customize_desc' => 'You can customize each of the shortcuts below. Just press your desired key combination after selecting the input for a shortcut.',
+ 'shortcuts_toggle_label' => 'Keyboard shortcuts enabled',
+ 'shortcuts_section_navigation' => 'Navigation',
+ 'shortcuts_section_actions' => 'Common Actions',
+ 'shortcuts_save' => 'Save Shortcuts',
+ 'shortcuts_overlay_desc' => 'Note: When shortcuts are enabled a helper overlay is available via pressing "?" which will highlight the available shortcuts for actions currently visible on the screen.',
+ 'shortcuts_update_success' => 'Shortcut preferences have been updated!',
+ 'shortcuts_overview_desc' => 'Manage keyboard shortcuts you can use to navigate the system user interface.',
+
+ 'notifications' => 'Notification Preferences',
+ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.',
+ 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own',
+ 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notify upon replies to my comments',
+ 'notifications_save' => 'Save Preferences',
+ 'notifications_update_success' => 'Notification preferences have been updated!',
+ 'notifications_watched' => 'Watched & Ignored Items',
+ 'notifications_watched_desc' => 'Below are the items that have custom watch preferences applied. To update your preferences for these, view the item then find the watch options in the sidebar.',
+
+ 'auth' => 'Access & Security',
+ 'auth_change_password' => 'Change Password',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Password has been updated!',
+
+ 'profile' => 'Profile Details',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'View Public Profile',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Delete Account',
+ 'delete_my_account' => 'Delete My Account',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/en/settings.php b/lang/en/settings.php
new file mode 100644
index 00000000000..c4d1eb136eb
--- /dev/null
+++ b/lang/en/settings.php
@@ -0,0 +1,374 @@
+ 'Settings',
+ 'settings_save' => 'Save Settings',
+ 'system_version' => 'System Version',
+ 'categories' => 'Categories',
+
+ // App Settings
+ 'app_customization' => 'Customization',
+ 'app_features_security' => 'Features & Security',
+ 'app_name' => 'Application Name',
+ 'app_name_desc' => 'This name is shown in the header and in any system-sent emails.',
+ 'app_name_header' => 'Show name in header',
+ 'app_public_access' => 'Public Access',
+ 'app_public_access_desc' => 'Enabling this option will allow visitors, that are not logged-in, to access content in your BookStack instance.',
+ 'app_public_access_desc_guest' => 'Access for public visitors can be controlled through the "Guest" user.',
+ 'app_public_access_toggle' => 'Allow public access',
+ 'app_public_viewing' => 'Allow public viewing?',
+ 'app_secure_images' => 'Higher Security Image Uploads',
+ 'app_secure_images_toggle' => 'Enable higher security image uploads',
+ 'app_secure_images_desc' => 'For performance reasons, all images are public. This option adds a random, hard-to-guess string in front of image urls. Ensure directory indexes are not enabled to prevent easy access.',
+ 'app_default_editor' => 'Default Page Editor',
+ 'app_default_editor_desc' => 'Select which editor will be used by default when editing new pages. This can be overridden at a page level where permissions allow.',
+ 'app_custom_html' => 'Custom HTML Head Content',
+ 'app_custom_html_desc' => 'Any content added here will be inserted into the bottom of the section of every page. This is handy for overriding styles or adding analytics code.',
+ 'app_custom_html_disabled_notice' => 'Custom HTML head content is disabled on this settings page to ensure any breaking changes can be reverted.',
+ 'app_logo' => 'Application Logo',
+ 'app_logo_desc' => 'This is used in the application header bar, among other areas. This image should be 86px in height. Large images will be scaled down.',
+ 'app_icon' => 'Application Icon',
+ 'app_icon_desc' => 'This icon is used for browser tabs and shortcut icons. This should be a 256px square PNG image.',
+ '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::" 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' => 'Disable Comments',
+ 'app_disable_comments_toggle' => 'Disable comments',
+ 'app_disable_comments_desc' => 'Disables comments across all pages in the application. Existing comments are not shown.',
+
+ // Color settings
+ 'color_scheme' => 'Application Color Scheme',
+ 'color_scheme_desc' => 'Set the colors to use in the application user interface. Colors can be configured separately for dark and light modes to best fit the theme and ensure legibility.',
+ 'ui_colors_desc' => 'Set the application primary color and default link color. The primary color is mainly used for the header banner, buttons and interface decorations. The default link color is used for text-based links and actions, both within written content and in the application interface.',
+ 'app_color' => 'Primary Color',
+ 'link_color' => 'Default Link Color',
+ 'content_colors_desc' => 'Set colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'bookshelf_color' => 'Shelf Color',
+ 'book_color' => 'Book Color',
+ 'chapter_color' => 'Chapter Color',
+ 'page_color' => 'Page Color',
+ 'page_draft_color' => 'Page Draft Color',
+
+ // Registration Settings
+ 'reg_settings' => 'Registration',
+ 'reg_enable' => 'Enable Registration',
+ 'reg_enable_toggle' => 'Enable registration',
+ 'reg_enable_desc' => 'When registration is enabled user will be able to sign themselves up as an application user. Upon registration they are given a single, default user role.',
+ 'reg_default_role' => 'Default user role after registration',
+ 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_email_confirmation' => 'Email Confirmation',
+ 'reg_email_confirmation_toggle' => 'Require email confirmation',
+ 'reg_confirm_email_desc' => 'If domain restriction is used then email confirmation will be required and this option will be ignored.',
+ 'reg_confirm_restrict_domain' => 'Domain Restriction',
+ 'reg_confirm_restrict_domain_desc' => 'Enter a comma separated list of email domains you would like to restrict registration to. Users will be sent an email to confirm their address before being allowed to interact with the application. Note that users will be able to change their email addresses after successful registration.',
+ 'reg_confirm_restrict_domain_placeholder' => 'No restriction set',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Maintenance',
+ 'maint_image_cleanup' => 'Cleanup Images',
+ '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' => 'Also delete images that only exist in old page revisions',
+ 'maint_image_cleanup_run' => 'Run Cleanup',
+ 'maint_image_cleanup_warning' => ':count potentially unused images were found. Are you sure you want to delete these images?',
+ 'maint_image_cleanup_success' => ':count potentially unused images found and deleted!',
+ '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_regen_references' => 'Regenerate References',
+ 'maint_regen_references_desc' => 'This action will rebuild the cross-item reference index within the database. This is usually handled automatically but this action can be useful to index old content or content added via unofficial methods.',
+ 'maint_regen_references_success' => 'Reference index has been regenerated!',
+ 'maint_timeout_command_note' => 'Note: This action can take time to run, which can lead to timeout issues in some web environments. As an alternative, this action be performed using a terminal command.',
+
+ // 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_parent' => 'Parent',
+ '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 from the system, along with any child elements listed below, 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_restore_parent' => 'Restore Parent',
+ '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 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_table_related' => 'Related Item or Detail',
+ 'audit_table_ip' => 'IP Address',
+ 'audit_table_date' => 'Activity Date',
+ 'audit_date_from' => 'Date Range From',
+ 'audit_date_to' => 'Date Range To',
+
+ // Role Settings
+ 'roles' => 'Roles',
+ 'role_user_roles' => 'User Roles',
+ 'roles_index_desc' => 'Roles are used to group users & provide system permission to their members. When a user is a member of multiple roles the privileges granted will stack and the user will inherit all abilities.',
+ 'roles_x_users_assigned' => ':count user assigned|:count users assigned',
+ 'roles_x_permissions_provided' => ':count permission|:count permissions',
+ 'roles_assigned_users' => 'Assigned Users',
+ 'roles_permissions_provided' => 'Provided Permissions',
+ 'role_create' => 'Create New Role',
+ '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_edit' => 'Edit Role',
+ 'role_details' => 'Role Details',
+ 'role_name' => 'Role Name',
+ 'role_desc' => 'Short Description of Role',
+ 'role_mfa_enforced' => 'Requires Multi-Factor Authentication',
+ 'role_external_auth_id' => 'External Authentication IDs',
+ 'role_system' => 'System Permissions',
+ 'role_manage_users' => 'Manage users',
+ 'role_manage_roles' => 'Manage roles & role permissions',
+ 'role_manage_entity_permissions' => 'Manage all book, chapter & page permissions',
+ 'role_manage_own_entity_permissions' => 'Manage permissions on own book, chapter & pages',
+ 'role_manage_page_templates' => 'Manage page templates',
+ 'role_access_api' => 'Access system API',
+ 'role_manage_settings' => 'Manage app settings',
+ 'role_export_content' => 'Export content',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Change page editor',
+ 'role_notifications' => 'Receive & manage notifications',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Asset Permissions',
+ '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' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.',
+ 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.',
+ 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'All',
+ 'role_own' => 'Own',
+ 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to',
+ 'role_save' => 'Save Role',
+ 'role_users' => 'Users in this role',
+ 'role_users_none' => 'No users are currently assigned to this role',
+
+ // Users
+ 'users' => 'Users',
+ 'users_index_desc' => 'Create & manage individual user accounts within the system. User accounts are used for login and attribution of content & activity. Access permissions are primarily role-based but user content ownership, among other factors, may also affect permissions & access.',
+ 'user_profile' => 'User Profile',
+ 'users_add_new' => 'Add New User',
+ 'users_search' => 'Search Users',
+ 'users_latest_activity' => 'Latest Activity',
+ 'users_details' => 'User 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',
+ 'users_role_desc' => 'Select which roles this user will be assigned to. If a user is assigned to multiple roles the permissions from those roles will stack and they will receive all abilities of the assigned roles.',
+ 'users_password' => 'User Password',
+ 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 8 characters long.',
+ 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.',
+ 'users_send_invite_option' => 'Send user invite email',
+ 'users_external_auth_id' => 'External Authentication ID',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ '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_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_edit' => 'Edit User',
+ 'users_edit_profile' => 'Edit Profile',
+ 'users_avatar' => 'User Avatar',
+ 'users_avatar_desc' => 'Select an image to represent this user. This should be approx 256px square.',
+ 'users_preferred_language' => 'Preferred Language',
+ 'users_preferred_language_desc' => 'This option will change the language used for the user-interface of the application. This will not affect any user-created content.',
+ 'users_social_accounts' => 'Social Accounts',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not revoke previously authorized access. Revoke access from your profile settings on the connected social account.',
+ 'users_social_connect' => 'Connect Account',
+ 'users_social_disconnect' => 'Disconnect Account',
+ 'users_social_status_connected' => 'Connected',
+ 'users_social_status_disconnected' => 'Disconnected',
+ 'users_social_connected' => ':socialAccount account was successfully attached to your profile.',
+ 'users_social_disconnected' => ':socialAccount account was successfully disconnected from your profile.',
+ 'users_api_tokens' => 'API Tokens',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'No API tokens have been created for this user',
+ 'users_api_tokens_create' => 'Create Token',
+ 'users_api_tokens_expires' => 'Expires',
+ 'users_api_tokens_docs' => 'API Documentation',
+ 'users_mfa' => 'Multi-Factor Authentication',
+ 'users_mfa_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'users_mfa_x_methods' => ':count method configured|:count methods configured',
+ 'users_mfa_configure' => 'Configure Methods',
+
+ // API Tokens
+ 'user_api_token_create' => 'Create API Token',
+ 'user_api_token_name' => 'Name',
+ 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
+ 'user_api_token_expiry' => 'Expiry Date',
+ 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
+ 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
+ 'user_api_token' => 'API Token',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
+ 'user_api_token_secret' => 'Token Secret',
+ 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
+ 'user_api_token_created' => 'Token created :timeAgo',
+ 'user_api_token_updated' => 'Token updated :timeAgo',
+ 'user_api_token_delete' => 'Delete Token',
+ 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
+ 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks are a way to send data to external URLs when certain actions and events occur within the system which allows event-based integration with external platforms such as messaging or notification systems.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'Create New Webhook',
+ 'webhooks_none_created' => 'No webhooks have yet been created.',
+ 'webhooks_edit' => 'Edit Webhook',
+ 'webhooks_save' => 'Save Webhook',
+ 'webhooks_details' => 'Webhook Details',
+ 'webhooks_details_desc' => 'Provide a user friendly name and a POST endpoint as a location for the webhook data to be sent to.',
+ 'webhooks_events' => 'Webhook Events',
+ 'webhooks_events_desc' => 'Select all the events that should trigger this webhook to be called.',
+ 'webhooks_events_warning' => 'Keep in mind that these events will be triggered for all selected events, even if custom permissions are applied. Ensure that use of this webhook won\'t expose confidential content.',
+ 'webhooks_events_all' => 'All system events',
+ 'webhooks_name' => 'Webhook Name',
+ 'webhooks_timeout' => 'Webhook Request Timeout (Seconds)',
+ 'webhooks_endpoint' => 'Webhook Endpoint',
+ 'webhooks_active' => 'Webhook Active',
+ 'webhook_events_table_header' => 'Events',
+ 'webhooks_delete' => 'Delete Webhook',
+ 'webhooks_delete_warning' => 'This will fully delete this webhook, with the name \':webhookName\', from the system.',
+ 'webhooks_delete_confirm' => 'Are you sure you want to delete this webhook?',
+ 'webhooks_format_example' => 'Webhook Format Example',
+ 'webhooks_format_example_desc' => 'Webhook data is sent as a POST request to the configured endpoint as JSON following the format below. The "related_item" and "url" properties are optional and will depend on the type of event triggered.',
+ 'webhooks_status' => 'Webhook Status',
+ 'webhooks_last_called' => 'Last Called:',
+ 'webhooks_last_errored' => 'Last Errored:',
+ 'webhooks_last_error_message' => 'Last Error Message:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/en/validation.php b/lang/en/validation.php
new file mode 100644
index 00000000000..ff028525df3
--- /dev/null
+++ b/lang/en/validation.php
@@ -0,0 +1,123 @@
+ '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.',
+ 'backup_codes' => 'The provided code is not valid or has already been used.',
+ 'before' => 'The :attribute must be a date before :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.',
+ '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',
+ 'file' => 'The :attribute must be provided as a valid file.',
+ 'filled' => 'The :attribute field is required.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ 'array' => 'The :attribute may not have more than :max items.',
+ ],
+ 'mimes' => 'The :attribute must be a file of type: :values.',
+ 'min' => [
+ 'numeric' => 'The :attribute must be at least :min.',
+ 'file' => 'The :attribute must be at least :min kilobytes.',
+ 'string' => 'The :attribute must be at least :min characters.',
+ 'array' => 'The :attribute must have at least :min items.',
+ ],
+ 'not_in' => 'The selected :attribute is invalid.',
+ 'not_regex' => 'The :attribute format is invalid.',
+ 'numeric' => 'The :attribute must be a number.',
+ 'regex' => 'The :attribute format is invalid.',
+ 'required' => 'The :attribute field is required.',
+ 'required_if' => 'The :attribute field is required when :other is :value.',
+ 'required_with' => 'The :attribute field is required when :values is present.',
+ 'required_with_all' => 'The :attribute field is required when :values is present.',
+ 'required_without' => 'The :attribute field is required when :values is not present.',
+ 'required_without_all' => 'The :attribute field is required when none of :values are present.',
+ 'same' => 'The :attribute and :other must match.',
+ 'safe_url' => 'The provided link may not be safe.',
+ 'size' => [
+ 'numeric' => 'The :attribute must be :size.',
+ 'file' => 'The :attribute must be :size kilobytes.',
+ 'string' => 'The :attribute must be :size characters.',
+ 'array' => 'The :attribute must contain :size items.',
+ ],
+ 'string' => 'The :attribute must be a string.',
+ 'timezone' => 'The :attribute must be a valid zone.',
+ 'totp' => 'The provided code is not valid or has expired.',
+ 'unique' => 'The :attribute has already been taken.',
+ 'url' => 'The :attribute format is invalid.',
+ 'uploaded' => 'The file could not be uploaded. The server may not accept files of this size.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Password confirmation required',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/es/activities.php b/lang/es/activities.php
new file mode 100644
index 00000000000..89a11c63a2e
--- /dev/null
+++ b/lang/es/activities.php
@@ -0,0 +1,140 @@
+ 'Página creada',
+ 'page_create_notification' => 'Página creada correctamente',
+ 'page_update' => 'página actualizada',
+ 'page_update_notification' => 'Página actualizada correctamente',
+ 'page_delete' => 'página eliminada',
+ 'page_delete_notification' => 'Página eliminada correctamente',
+ 'page_restore' => 'página restaurada',
+ 'page_restore_notification' => 'Página restaurada correctamente',
+ 'page_move' => 'página movida',
+ 'page_move_notification' => 'Página movida correctamente',
+
+ // Chapters
+ 'chapter_create' => 'capítulo creado',
+ 'chapter_create_notification' => 'Capítulo creado correctamente',
+ 'chapter_update' => 'capítulo actualizado',
+ 'chapter_update_notification' => 'Capítulo actualizado correctamente',
+ 'chapter_delete' => 'capítulo eliminado',
+ 'chapter_delete_notification' => 'Capítulo eliminado correctamente',
+ 'chapter_move' => 'capítulo movido',
+ 'chapter_move_notification' => 'Capítulo movido correctamente',
+
+ // Books
+ 'book_create' => 'libro creado',
+ 'book_create_notification' => 'Libro creado correctamente',
+ 'book_create_from_chapter' => 'convertido capítulo a libro',
+ 'book_create_from_chapter_notification' => 'Capítulo convertido a libro con éxito',
+ 'book_update' => 'libro actualizado',
+ 'book_update_notification' => 'Libro actualizado correctamente',
+ 'book_delete' => 'libro eliminado',
+ 'book_delete_notification' => 'Libro eliminado correctamente',
+ 'book_sort' => 'libro ordenado',
+ 'book_sort_notification' => 'Libro reordenado correctamente',
+
+ // Bookshelves
+ 'bookshelf_create' => 'estante creado',
+ 'bookshelf_create_notification' => 'Estante creado correctamente',
+ 'bookshelf_create_from_book' => 'libro convertido a estante',
+ 'bookshelf_create_from_book_notification' => 'Libro convertido a estante con éxito',
+ 'bookshelf_update' => 'estante actualizado',
+ 'bookshelf_update_notification' => 'Estante actualizado correctamente',
+ 'bookshelf_delete' => 'estante eliminado',
+ 'bookshelf_delete_notification' => 'Estante eliminado correctamente',
+
+ // Revisions
+ 'revision_restore' => 'revisión restaurada',
+ 'revision_delete' => 'revisión eliminada',
+ 'revision_delete_notification' => 'Revisión eliminada correctamente',
+
+ // Favourites
+ 'favourite_add_notification' => '".name" ha sido añadido a sus favoritos',
+ 'favourite_remove_notification' => '".name" ha sido eliminado de sus favoritos',
+
+ // Watching
+ 'watch_update_level_notification' => 'Preferencias de suscripciones actualizadas correctamente',
+
+ // Auth
+ 'auth_login' => 'conectado',
+ 'auth_register' => 'registrado como nuevo usuario',
+ 'auth_password_reset_request' => 'solicitado cambio de contraseña de usuario',
+ 'auth_password_reset_update' => 'restablecer contraseña de usuario',
+ 'mfa_setup_method' => 'método MFA configurado',
+ 'mfa_setup_method_notification' => 'Método de Autenticación en Dos Pasos configurado correctamente',
+ 'mfa_remove_method' => 'método MFA eliminado',
+ 'mfa_remove_method_notification' => 'Método de Autenticación en Dos Pasos eliminado correctamente',
+
+ // Settings
+ 'settings_update' => 'configuración actualizada',
+ 'settings_update_notification' => 'Configuración actualizada correctamente',
+ 'maintenance_action_run' => 'ejecutada acción de mantenimiento',
+
+ // Webhooks
+ 'webhook_create' => 'webhook creado',
+ 'webhook_create_notification' => 'Webhook creado correctamente',
+ 'webhook_update' => 'webhook actualizado',
+ 'webhook_update_notification' => 'Webhook actualizado correctamente',
+ 'webhook_delete' => 'webhook eliminado',
+ 'webhook_delete_notification' => 'Webhook eliminado correctamente',
+
+ // Imports
+ 'import_create' => 'importación creada',
+ 'import_create_notification' => 'Importación cargada correctamente',
+ 'import_run' => 'importación actualizada',
+ 'import_run_notification' => 'Contenido importado correctamente',
+ 'import_delete' => 'importación borrada',
+ 'import_delete_notification' => 'Importación borrada correctamente',
+
+ // Users
+ 'user_create' => 'usuario creado',
+ 'user_create_notification' => 'Usuario creado correctamente',
+ 'user_update' => 'usuario actualizado',
+ 'user_update_notification' => 'Usuario actualizado correctamente',
+ 'user_delete' => 'usuario eliminado',
+ 'user_delete_notification' => 'Usuario eliminado correctamente',
+
+ // API Tokens
+ 'api_token_create' => 'token de API creado',
+ 'api_token_create_notification' => 'Token API creado correctamente',
+ 'api_token_update' => 'token de API actualizado',
+ 'api_token_update_notification' => 'Token API actualizado correctamente',
+ 'api_token_delete' => 'token de API borrado',
+ 'api_token_delete_notification' => 'Token API borrado correctamente',
+
+ // Roles
+ 'role_create' => 'rol creado',
+ 'role_create_notification' => 'Rol creado correctamente',
+ 'role_update' => 'rol actualizado',
+ 'role_update_notification' => 'Rol actualizado correctamente',
+ 'role_delete' => 'rol borrado',
+ 'role_delete_notification' => 'Rol eliminado correctamente',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'papelera de reciclaje vaciada',
+ 'recycle_bin_restore' => 'restaurado de la papelera de reciclaje',
+ 'recycle_bin_destroy' => 'eliminado de la papelera de reciclaje',
+
+ // Comments
+ 'commented_on' => 'comentada el',
+ 'comment_create' => 'comentario añadido',
+ 'comment_update' => 'comentario actualizado',
+ 'comment_delete' => 'comentario borrado',
+
+ // Sort Rules
+ 'sort_rule_create' => 'regla de ordenación creada',
+ 'sort_rule_create_notification' => 'Rol de ordenación creada con éxito',
+ 'sort_rule_update' => 'regla de ordenación actualizada',
+ 'sort_rule_update_notification' => 'Regla de ordenación actualizada correctamente',
+ 'sort_rule_delete' => 'regla de ordenación eliminada',
+ 'sort_rule_delete_notification' => 'Rol de ordenación borrada con éxito',
+
+ // Other
+ 'permissions_update' => 'permisos actualizados',
+];
diff --git a/lang/es/auth.php b/lang/es/auth.php
new file mode 100644
index 00000000000..45d3eb32916
--- /dev/null
+++ b/lang/es/auth.php
@@ -0,0 +1,117 @@
+ 'Estas credenciales no coinciden con nuestros registros.',
+ 'throttle' => 'Demasiados intentos de inicio de sesión. Por favor, inténtalo de nuevo en :seconds segundos.',
+
+ // Login & Register
+ 'sign_up' => 'Registrarse',
+ 'log_in' => 'Acceder',
+ 'log_in_with' => 'Acceder con :socialDriver',
+ 'sign_up_with' => 'Registrarse con :socialDriver',
+ 'logout' => 'Cerrar sesión',
+
+ 'name' => 'Nombre',
+ 'username' => 'Usuario',
+ 'email' => 'Correo electrónico',
+ 'password' => 'Contraseña',
+ 'password_confirm' => 'Confirmar contraseña',
+ 'password_hint' => 'Debe contener al menos 8 caracteres',
+ 'forgot_password' => '¿Contraseña olvidada?',
+ 'remember_me' => 'Recordarme',
+ 'ldap_email_hint' => 'Por favor introduzca un mail para utilizar con esta cuenta.',
+ 'create_account' => 'Crear una cuenta',
+ 'already_have_account' => '¿Ya tienes una cuenta?',
+ 'dont_have_account' => '¿No tienes una cuenta?',
+ 'social_login' => 'Login social',
+ 'social_registration' => 'Registro social',
+ 'social_registration_text' => 'Registrar y entrar utilizando otro servicio.',
+
+ 'register_thanks' => '¡Gracias por registrarse!',
+ 'register_confirm' => 'Por favor compruebe su correo electrónico y haga clic en el botón de confirmación enviado para acceder a :appName.',
+ 'registrations_disabled' => 'Los registros están deshabilitados actualmente',
+ 'registration_email_domain_invalid' => 'Este dominio de correo electrónico no tiene acceso a esta aplicación',
+ 'register_success' => '¡Gracias por registrarse! Ahora se encuentra registrado y logueado.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Intentando iniciar sesión',
+ 'auto_init_starting_desc' => 'Estamos contactando con su sistema de autenticación para comenzar el proceso de inicio de sesión. Si no hay progreso después de 5 segundos puede intentar hacer clic en el enlace de abajo.',
+ 'auto_init_start_link' => 'Continuar con la autenticación',
+
+ // Password Reset
+ 'reset_password' => 'Resetear contraseña',
+ 'reset_password_send_instructions' => 'Introduzca su correo electrónico a continuación y le será enviado un correo con un link para la restauración',
+ 'reset_password_send_button' => 'Enviar enlace de reseteo',
+ 'reset_password_sent' => 'Un enlace para cambiar la contraseña será enviado a su dirección de correo electrónico si existe en nuestro sistema.',
+ 'reset_password_success' => 'Su password ha sido reseteado de manera éxitosa.',
+ 'email_reset_subject' => 'Resetee la contraseña de :appName',
+ 'email_reset_text' => 'Está recibiendo este correo electrónico debido a que recibimos una solicitud de reseteo de contraseña de su cuenta.',
+ 'email_reset_not_requested' => 'Si no ha solicitado un reseteo de la contraseña, no es requerida ninguna acción por su parte.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Confirme su correo electrónico en :appName',
+ 'email_confirm_greeting' => '¡Gracias por unirse a :appName!',
+ 'email_confirm_text' => 'Por favor confirme su dirección de correo electrónico haciendo click en el siguiente botón:',
+ 'email_confirm_action' => 'Confirmar correo electrónico',
+ 'email_confirm_send_error' => 'Confirmation de correo electrónico requerida pero el sistema no pudo enviar el correo. Contacte con el administrador para asegurarse de que el correo electrónico está configurado correctamente.',
+ 'email_confirm_success' => '¡Tu correo electrónico ha sido confirmado! Ahora deberías poder iniciar sesión usando esta dirección de correo electrónico.',
+ 'email_confirm_resent' => 'correo electrónico de confirmación reenviado, compruebe su bandeja de entrada.',
+ 'email_confirm_thanks' => '¡Gracias por confirmar!',
+ 'email_confirm_thanks_desc' => 'Por favor, espere un momento mientras se gestiona su confirmación. Si no es redirigido después de 3 segundos, pulse el enlace "Continuar" para continuar.',
+
+ 'email_not_confirmed' => 'Dirección de Correo Electrónico no confirmada',
+ 'email_not_confirmed_text' => 'Su Cuenta de Correo electrónico todavía no ha sido confirmada.',
+ 'email_not_confirmed_click_link' => 'Por favor siga el enlace en el correo electrónico que ha sido enviado durante el proceso de registro.',
+ 'email_not_confirmed_resend' => 'Si no puede encontrar el correo electrónico, puede solicitar el renvío del correo electrónico de confirmación rellenando el formulario que se muestra a continuación.',
+ 'email_not_confirmed_resend_button' => 'Reenviar Correo Electrónico de confirmación',
+
+ // User Invite
+ 'user_invite_email_subject' => '¡Has sido invitado a unirte a :appName!',
+ 'user_invite_email_greeting' => 'Se ha creado una cuenta para usted en :appName.',
+ 'user_invite_email_text' => 'Haga clic en el botón de abajo para establecer una contraseña de cuenta y obtener acceso:',
+ 'user_invite_email_action' => 'Establecer contraseña de la cuenta',
+ 'user_invite_page_welcome' => '¡Bienvenido a :appName!',
+ 'user_invite_page_text' => 'Para finalizar tu cuenta y obtener acceso necesitas establecer una contraseña que se utilizará para iniciar sesión en :appName en futuras visitas.',
+ 'user_invite_page_confirm_button' => 'Confirmar Contraseña',
+ 'user_invite_success_login' => 'Contraseña guardada, ¡ahora debería ser capaz de iniciar sesión usando su contraseña establecida para acceder a :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Configurar Autenticación en Dos Pasos',
+ 'mfa_setup_desc' => 'La autenticación en dos pasos añade una capa de seguridad adicional a tu cuenta de usuario.',
+ 'mfa_setup_configured' => 'Ya está configurado',
+ 'mfa_setup_reconfigure' => 'Reconfigurar',
+ 'mfa_setup_remove_confirmation' => '¿Está seguro de que desea eliminar este método de autenticación en dos pasos?',
+ 'mfa_setup_action' => 'Configuración',
+ 'mfa_backup_codes_usage_limit_warning' => 'Quedan menos de 5 códigos de respaldo, Por favor, genera y almacena un nuevo conjunto antes de que te quedes sin códigos para evitar que te bloquees fuera de tu cuenta.',
+ 'mfa_option_totp_title' => 'Aplicación para móviles',
+ 'mfa_option_totp_desc' => 'Para utilizar la autenticación en dos pasos necesitarás una aplicación móvil que soporte TOTP como Google Authenticator, Authy o Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Códigos de Respaldo',
+ 'mfa_option_backup_codes_desc' => 'Genera un conjunto de códigos de seguridad de un solo uso que ingresará al iniciar sesión para verificar su identidad. Asegúrese de guardarlos en un lugar seguro.',
+ 'mfa_gen_confirm_and_enable' => 'Confirmar y Activar',
+ 'mfa_gen_backup_codes_title' => 'Configuración de Códigos de Respaldo',
+ 'mfa_gen_backup_codes_desc' => 'Guarda la siguiente lista de códigos en un lugar seguro. Al acceder al sistema podrás usar uno de los códigos como un segundo mecanismo de autenticación.',
+ 'mfa_gen_backup_codes_download' => 'Descargar Códigos',
+ 'mfa_gen_backup_codes_usage_warning' => 'Cada código sólo puede utilizarse una vez',
+ 'mfa_gen_totp_title' => 'Configuración de Aplicación móvil',
+ 'mfa_gen_totp_desc' => 'Para utilizar la autenticación en dos pasos necesitarás una aplicación móvil que soporte TOTP como Google Authenticator, Authy o Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Escanea el código QR mostrado a continuación usando tu aplicación de autenticación preferida para empezar.',
+ 'mfa_gen_totp_verify_setup' => 'Verificar Configuración',
+ 'mfa_gen_totp_verify_setup_desc' => 'Verifica que todo está funcionando introduciendo un código, generado en tu aplicación de autenticación, en el campo de texto a continuación:',
+ 'mfa_gen_totp_provide_code_here' => 'Introduce aquí tu código generado por la aplicación',
+ 'mfa_verify_access' => 'Verificar Acceso',
+ 'mfa_verify_access_desc' => 'Tu cuenta de usuario requiere que confirmes tu identidad a través de un nivel adicional de verificación antes de que te conceda el acceso. Verifica tu identidad usando uno de los métodos configurados para continuar.',
+ 'mfa_verify_no_methods' => 'No hay Métodos Configurados',
+ 'mfa_verify_no_methods_desc' => 'No se han encontrado métodos de autenticación en dos pasos para tu cuenta. Tendrás que configurar al menos un método antes de obtener acceso.',
+ 'mfa_verify_use_totp' => 'Verificar usando una aplicación móvil',
+ 'mfa_verify_use_backup_codes' => 'Verificar usando un código de respaldo',
+ 'mfa_verify_backup_code' => 'Códigos de Respaldo',
+ 'mfa_verify_backup_code_desc' => 'Introduzca uno de sus códigos de respaldo restantes a continuación:',
+ 'mfa_verify_backup_code_enter_here' => 'Introduce el código de respaldo aquí',
+ 'mfa_verify_totp_desc' => 'Introduzca el código, generado con tu aplicación móvil, a continuación:',
+ 'mfa_setup_login_notification' => 'Método de dos factores configurado. Por favor, inicia sesión de nuevo utilizando el método configurado.',
+];
diff --git a/lang/es/common.php b/lang/es/common.php
new file mode 100644
index 00000000000..399d1d862aa
--- /dev/null
+++ b/lang/es/common.php
@@ -0,0 +1,115 @@
+ 'Cancelar',
+ 'close' => 'Cerrar',
+ 'confirm' => 'Confirmar',
+ 'back' => 'Atrás',
+ 'save' => 'Guardar',
+ 'continue' => 'Continuar',
+ 'select' => 'Seleccionar',
+ 'toggle_all' => 'Marcarlos todos',
+ 'more' => 'Más',
+
+ // Form Labels
+ 'name' => 'Nombre',
+ 'description' => 'Descripción',
+ 'role' => 'Rol',
+ 'cover_image' => 'Imagen de portada',
+ 'cover_image_description' => 'Esta imagen debe ser de aproximadamente 440x250px aunque será escalada y recortada para adaptarse a la interfaz de usuario en diferentes escenarios según sea necesario, por lo que las dimensiones en pantalla diferirán.',
+
+ // Actions
+ 'actions' => 'Acciones',
+ 'view' => 'Ver',
+ 'view_all' => 'Ver todos',
+ 'new' => 'Nuevo',
+ 'create' => 'Crear',
+ 'update' => 'Actualizar',
+ 'edit' => 'Editar',
+ 'archive' => 'Archivar',
+ 'unarchive' => 'Desarchivar',
+ 'sort' => 'Ordenar',
+ 'move' => 'Mover',
+ 'copy' => 'Copiar',
+ 'reply' => 'Responder',
+ 'delete' => 'Borrar',
+ 'delete_confirm' => 'Confirmar borrado',
+ 'search' => 'Buscar',
+ 'search_clear' => 'Limpiar búsqueda',
+ 'reset' => 'Resetear',
+ 'remove' => 'Remover',
+ 'add' => 'Añadir',
+ 'configure' => 'Configurar',
+ 'manage' => 'Gestionar',
+ 'fullscreen' => 'Pantalla completa',
+ 'favourite' => 'Añadir a favoritos',
+ 'unfavourite' => 'Eliminar de favoritos',
+ 'next' => 'Siguiente',
+ 'previous' => 'Anterior',
+ 'filter_active' => 'Filtro activo:',
+ 'filter_clear' => 'Limpiar filtro',
+ 'download' => 'Descargar',
+ 'open_in_tab' => 'Abrir en una nueva pestaña',
+ 'open' => 'Abrir',
+
+ // Sort Options
+ 'sort_options' => 'Opciones de ordenación',
+ 'sort_direction_toggle' => 'Cambiar el Orden',
+ 'sort_ascending' => 'Ordenar Ascendentemente',
+ 'sort_descending' => 'Ordenar Descendentemente',
+ 'sort_name' => 'Nombre',
+ 'sort_default' => 'Predeterminada',
+ 'sort_created_at' => 'Fecha de Creación',
+ 'sort_updated_at' => 'Fecha de Modificación',
+
+ // Misc
+ 'deleted_user' => 'Usuario borrado',
+ 'no_activity' => 'Ninguna actividad para mostrar',
+ 'no_items' => 'No hay elementos disponibles',
+ 'back_to_top' => 'Volver arriba',
+ 'skip_to_main_content' => 'Ir al contenido principal',
+ 'toggle_details' => 'Alternar detalles',
+ 'toggle_thumbnails' => 'Alternar miniaturas',
+ 'details' => 'Detalles',
+ 'grid_view' => 'Vista en Cuadrícula',
+ 'list_view' => 'Vista en Lista',
+ 'default' => 'Predeterminada',
+ 'breadcrumb' => 'Rastro de migas de pan',
+ 'status' => 'Estado',
+ 'status_active' => 'Activo',
+ 'status_inactive' => 'Inactive',
+ 'never' => 'Nunca',
+ 'none' => 'Ninguno',
+
+ // Header
+ 'homepage' => 'Página de Inicio',
+ 'header_menu_expand' => 'Expandir el Menú de la Cabecera',
+ 'profile_menu' => 'Menú de Perfil',
+ 'view_profile' => 'Ver Perfil',
+ 'edit_profile' => 'Editar Perfil',
+ 'dark_mode' => 'Modo Oscuro',
+ 'light_mode' => 'Modo Claro',
+ 'global_search' => 'Búsqueda Global',
+
+ // Layout tabs
+ 'tab_info' => 'Información',
+ 'tab_info_label' => 'Pestaña: Mostrar Información Secundaria',
+ 'tab_content' => 'Contenido',
+ 'tab_content_label' => 'Pestaña: Mostrar Contenido Primario',
+
+ // Email Content
+ 'email_action_help' => 'Si está teniendo problemas clicando en el botón ":actionText", copie y pegue la siguiente URL en su navegador web:',
+ 'email_rights' => 'Todos los derechos reservados',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Política de privacidad',
+ 'terms_of_service' => 'Términos de Servicio',
+
+ // OpenSearch
+ 'opensearch_description' => 'Buscar :appName',
+];
diff --git a/lang/es/components.php b/lang/es/components.php
new file mode 100644
index 00000000000..932976e26d5
--- /dev/null
+++ b/lang/es/components.php
@@ -0,0 +1,46 @@
+ 'Seleccionar Imagen',
+ 'image_list' => 'Lista de imágenes',
+ 'image_details' => 'Detalles de la imagen',
+ 'image_upload' => 'Subir imagen',
+ 'image_intro' => 'Aquí puede seleccionar y administrar las imágenes que se han subido previamente al sistema.',
+ 'image_intro_upload' => 'Suba una nueva imagen arrastrando un archivo de imagen en esta ventana, o usando el botón "Subir imagen" de arriba.',
+ 'image_all' => 'Todas',
+ 'image_all_title' => 'Ver todas las imágenes',
+ 'image_book_title' => 'Ver las imágenes subidas a este libro',
+ 'image_page_title' => 'Ver las imágenes subidas a esta página',
+ 'image_search_hint' => 'Buscar por nombre de imagen',
+ 'image_uploaded' => 'Subido el :uploadedDate',
+ 'image_uploaded_by' => 'Subida por :userName',
+ 'image_uploaded_to' => 'Subida a :pageLink',
+ 'image_updated' => 'Actualizado :updateDate',
+ 'image_load_more' => 'Cargar más',
+ 'image_image_name' => 'Nombre de imagen',
+ 'image_delete_used' => 'Esta imagen está siendo utilizada en las páginas mostradas a continuación.',
+ 'image_delete_confirm_text' => '¿Estás seguro de que quieres eliminar esta imagen?',
+ 'image_select_image' => 'Seleccionar Imagen',
+ 'image_dropzone' => 'Arrastre las imágenes o hacer click aquí para Subir',
+ 'image_dropzone_drop' => 'Arrastre las imágenes aquí para subirlas',
+ 'images_deleted' => 'Imágenes borradas',
+ 'image_preview' => 'Previsualización de la imagen',
+ 'image_upload_success' => 'Imagen subida éxitosamente',
+ 'image_update_success' => 'Detalles de la imagen actualizados exitosamente',
+ 'image_delete_success' => 'Imagen borrada exitosamente',
+ 'image_replace' => 'Sustituir imagen',
+ 'image_replace_success' => 'Imagen actualizada correctamente',
+ 'image_rebuild_thumbs' => 'Regenerar distintos tamaños',
+ 'image_rebuild_thumbs_success' => '¡Imágenes de distinto tamaño regeneradas correctamente!',
+
+ // Code Editor
+ 'code_editor' => 'Editar Código',
+ 'code_language' => 'Lenguaje del Código',
+ 'code_content' => 'Contenido del Código',
+ 'code_session_history' => 'Historial de la sesión',
+ 'code_save' => 'Guardar Código',
+];
diff --git a/lang/es/editor.php b/lang/es/editor.php
new file mode 100644
index 00000000000..2df05dede86
--- /dev/null
+++ b/lang/es/editor.php
@@ -0,0 +1,182 @@
+ 'General',
+ 'advanced' => 'Avanzado',
+ 'none' => 'Ninguno',
+ 'cancel' => 'Cancelar',
+ 'save' => 'Guardar',
+ 'close' => 'Cerrar',
+ 'apply' => 'Aplicar',
+ 'undo' => 'Deshacer',
+ 'redo' => 'Rehacer',
+ 'left' => 'Izquierda',
+ 'center' => 'Centro',
+ 'right' => 'Derecha',
+ 'top' => 'Arriba',
+ 'middle' => 'Medio',
+ 'bottom' => 'Abajo',
+ 'width' => 'Anchura',
+ 'height' => 'Altura',
+ 'More' => 'Más',
+ 'select' => 'Seleccionar...',
+
+ // Toolbar
+ 'formats' => 'Formatos',
+ 'header_large' => 'Encabezado grande',
+ 'header_medium' => 'Encabezado medio',
+ 'header_small' => 'Encabezado pequeño',
+ 'header_tiny' => 'Encabezado muy pequeño',
+ 'paragraph' => 'Párrafo',
+ 'blockquote' => 'Cita',
+ 'inline_code' => 'Código en línea',
+ 'callouts' => 'Llamadas',
+ 'callout_information' => 'Información',
+ 'callout_success' => 'Éxito',
+ 'callout_warning' => 'Advertencia',
+ 'callout_danger' => 'Peligro',
+ 'bold' => 'Negrita',
+ 'italic' => 'Cursiva',
+ 'underline' => 'Subrayado',
+ 'strikethrough' => 'Tachado',
+ 'superscript' => 'Superíndice',
+ 'subscript' => 'Subíndice',
+ 'text_color' => 'Color de texto',
+ 'highlight_color' => 'Color de resaltado',
+ 'custom_color' => 'Color personalizado',
+ 'remove_color' => 'Eliminar color',
+ 'background_color' => 'Color de fondo',
+ 'align_left' => 'Alinear a la izquierda',
+ 'align_center' => 'Alinear al centro',
+ 'align_right' => 'Alinear a la derecha',
+ 'align_justify' => 'Justificado',
+ 'list_bullet' => 'Lista sin ordenar',
+ 'list_numbered' => 'Lista ordenada',
+ 'list_task' => 'Lista de tareas',
+ 'indent_increase' => 'Aumentar sangría',
+ 'indent_decrease' => 'Reducir sangría',
+ 'table' => 'Tabla',
+ 'insert_image' => 'Importar imagen',
+ 'insert_image_title' => 'Insertar/Editar imagen',
+ 'insert_link' => 'Insertar/editar enlace',
+ 'insert_link_title' => 'Insertar/Editar enlace',
+ 'insert_horizontal_line' => 'Insertar línea horizontal',
+ 'insert_code_block' => 'Insertar bloque de código',
+ 'edit_code_block' => 'Editar bloque de código',
+ 'insert_drawing' => 'Insertar/editar dibujo',
+ 'drawing_manager' => 'Gestor de dibujo',
+ 'insert_media' => 'Insertar/editar medios',
+ 'insert_media_title' => 'Insertar/Editar medios',
+ 'clear_formatting' => 'Borrar formato',
+ 'source_code' => 'Código fuente',
+ 'source_code_title' => 'Código Fuente',
+ 'fullscreen' => 'Pantalla completa',
+ 'image_options' => 'Opciones de imagen',
+
+ // Tables
+ 'table_properties' => 'Propiedades de tabla',
+ 'table_properties_title' => 'Propiedades de Tabla',
+ 'delete_table' => 'Eliminar tabla',
+ 'table_clear_formatting' => 'Limpiar formato de tabla',
+ 'resize_to_contents' => 'Redimensionar al contenido',
+ 'row_header' => 'Fila de cabecera',
+ 'insert_row_before' => 'Insertar fila arriba',
+ 'insert_row_after' => 'Insertar fila abajo',
+ 'delete_row' => 'Eliminar fila',
+ 'insert_column_before' => 'Insertar columna a la izquierda',
+ 'insert_column_after' => 'Insertar columna a la derecha',
+ 'delete_column' => 'Eliminar columna',
+ 'table_cell' => 'Celda',
+ 'table_row' => 'Fila',
+ 'table_column' => 'Columna',
+ 'cell_properties' => 'Propiedades de la celda',
+ 'cell_properties_title' => 'Propiedades de Celda',
+ 'cell_type' => 'Tipo de celda',
+ 'cell_type_cell' => 'Celda',
+ 'cell_scope' => 'Ámbito',
+ 'cell_type_header' => 'Celda de cabecera',
+ 'merge_cells' => 'Combinar celdas',
+ 'split_cell' => 'Dividir celda',
+ 'table_row_group' => 'Grupo de filas',
+ 'table_column_group' => 'Grupo de columnas',
+ 'horizontal_align' => 'Alineación horizontal',
+ 'vertical_align' => 'Alineación vertical',
+ 'border_width' => 'Ancho del borde',
+ 'border_style' => 'Estilo del borde',
+ 'border_color' => 'Color del borde',
+ 'row_properties' => 'Propiedades de fila',
+ 'row_properties_title' => 'Propiedades de Fila',
+ 'cut_row' => 'Cortar fila',
+ 'copy_row' => 'Copiar fila',
+ 'paste_row_before' => 'Pegar fila arriba',
+ 'paste_row_after' => 'Pegar fila abajo',
+ 'row_type' => 'Tipo de fila',
+ 'row_type_header' => 'Encabezado',
+ 'row_type_body' => 'Cuerpo',
+ 'row_type_footer' => 'Pie',
+ 'alignment' => 'Alineación',
+ 'cut_column' => 'Cortar columna',
+ 'copy_column' => 'Copiar columna',
+ 'paste_column_before' => 'Pegar columna a la izquierda',
+ 'paste_column_after' => 'Pegar columna a la derecha',
+ 'cell_padding' => 'Relleno de la celda',
+ 'cell_spacing' => 'Espaciado entre celdas',
+ 'caption' => 'Leyenda',
+ 'show_caption' => 'Mostrar leyenda',
+ 'constrain' => 'Restringir proporciones',
+ 'cell_border_solid' => 'Sólida',
+ 'cell_border_dotted' => 'Punteada',
+ 'cell_border_dashed' => 'Discontinua',
+ 'cell_border_double' => 'Doble',
+ 'cell_border_groove' => 'Surcos',
+ 'cell_border_ridge' => 'Cresta',
+ 'cell_border_inset' => 'Interno',
+ 'cell_border_outset' => 'Externo',
+ 'cell_border_none' => 'Ninguno',
+ 'cell_border_hidden' => 'Oculto',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Origen',
+ 'alt_desc' => 'Descripción alternativa',
+ 'embed' => 'Incrustar',
+ 'paste_embed' => 'Pegue su código incrustado a continuación:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Texto para mostrar',
+ 'title' => 'Titulo',
+ 'browse_links' => 'Ver enlaces',
+ 'open_link' => 'Abrir enlace',
+ 'open_link_in' => 'Abrir enlace en...',
+ 'open_link_current' => 'Ventana actual',
+ 'open_link_new' => 'Nueva ventana',
+ 'remove_link' => 'Eliminar enlace',
+ 'insert_collapsible' => 'Insertar bloque plegable',
+ 'collapsible_unwrap' => 'Desplegar',
+ 'edit_label' => 'Editar etiqueta',
+ 'toggle_open_closed' => 'Abrir/Cerrar',
+ 'collapsible_edit' => 'Editar bloque plegable',
+ 'toggle_label' => 'Cambiar etiqueta',
+
+ // About view
+ 'about' => 'Acerca del editor',
+ 'about_title' => 'Acerca del editor WYSIWYG',
+ 'editor_license' => 'Licencia del editor y derechos de autor',
+ 'editor_lexical_license' => 'Este editor está construido como una bifurcación de :lexicalLink que se distribuye bajo la licencia MIT.',
+ 'editor_lexical_license_link' => 'Los detalles completos de la licencia se pueden encontrar aquí.',
+ 'editor_tiny_license' => 'Este editor se construye usando :tinyLink que se proporciona bajo la licencia MIT.',
+ 'editor_tiny_license_link' => 'Aquí encontrará los detalles de los derechos de autor y la licencia de TinyMCE.',
+ 'save_continue' => 'Guardar Página y Continuar',
+ 'callouts_cycle' => '(Siga presionando para alternar entre tipos)',
+ 'link_selector' => 'Enlace a contenido',
+ 'shortcuts' => 'Atajos',
+ 'shortcut' => 'Atajo',
+ 'shortcuts_intro' => 'Los siguientes atajos están disponibles en el editor:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Descripción',
+];
diff --git a/lang/es/entities.php b/lang/es/entities.php
new file mode 100644
index 00000000000..e652d4dc006
--- /dev/null
+++ b/lang/es/entities.php
@@ -0,0 +1,476 @@
+ 'Creado Recientemente',
+ 'recently_created_pages' => 'Páginas creadas recientemente',
+ 'recently_updated_pages' => 'Páginas actualizadas recientemente',
+ 'recently_created_chapters' => 'Capítulos recientemente creados',
+ 'recently_created_books' => 'Libros recientemente creados',
+ 'recently_created_shelves' => 'Estantes recientemente creados',
+ 'recently_update' => 'Recientemente actualizado',
+ 'recently_viewed' => 'Recientemente visto',
+ 'recent_activity' => 'Actividad reciente',
+ 'create_now' => 'Crear uno ahora',
+ 'revisions' => 'Revisiones',
+ 'meta_revision' => 'Revisión #:revisionCount',
+ 'meta_created' => 'Creado :timeLength',
+ 'meta_created_name' => 'Creado :timeLength por :user',
+ 'meta_updated' => 'Actualizado :timeLength',
+ 'meta_updated_name' => 'Actualizado :timeLength por :user',
+ 'meta_owned_name' => 'Propiedad de :user',
+ 'meta_reference_count' => 'Referido en :count página | Referido en :count paginas',
+ 'entity_select' => 'Seleccione entidad',
+ 'entity_select_lack_permission' => 'No tiene los permisos necesarios para seleccionar este elemento',
+ 'images' => 'Imágenes',
+ 'my_recent_drafts' => 'Mis borradores recientes',
+ 'my_recently_viewed' => 'Mis visualizaciones recientes',
+ 'my_most_viewed_favourites' => 'Mis favoritos más vistos',
+ 'my_favourites' => 'Mis favoritos',
+ 'no_pages_viewed' => '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',
+ 'export' => 'Exportar',
+ 'export_html' => 'Archivo web',
+ 'export_pdf' => 'Archivo PDF',
+ 'export_text' => 'Archivo de texto',
+ 'export_md' => 'Archivo Markdown',
+ 'export_zip' => 'ZIP portable',
+ 'default_template' => 'Plantilla de página por defecto',
+ 'default_template_explain' => 'Asigne una plantilla de página que se utilizará como contenido predeterminado para todas las páginas creadas en este elemento. Tenga en cuenta que esto sólo se utilizará si el creador de páginas tiene acceso a la plantilla de página elegida.',
+ 'default_template_select' => 'Seleccione una página de plantilla',
+ 'import' => 'Importar',
+ 'import_validate' => 'Validar importación',
+ 'import_desc' => 'Importar libros, capítulos y páginas usando una exportación zip portable de la misma o distinta instancia. Seleccione un archivo ZIP para continuar. Después de que el archivo haya sido subido y validado, podrá configurar y confirmar la importación en la siguiente vista.',
+ 'import_zip_select' => 'Seleccione archivo ZIP a subir',
+ 'import_zip_validation_errors' => 'Se detectaron errores al validar el archivo ZIP proporcionado:',
+ 'import_pending' => 'Importaciones pendientes',
+ 'import_pending_none' => 'No se han iniciado importaciones.',
+ 'import_continue' => 'Continuar importación',
+ 'import_continue_desc' => 'Revise el contenido que debe importarse del archivo ZIP subido. Cuando esté listo, ejecute la importación para añadir su contenido a este sistema. El archivo de importación ZIP subido se eliminará automáticamente al terminar la importación correctamente.',
+ 'import_details' => 'Detalles de la Importación',
+ 'import_run' => 'Ejecutar Importación',
+ 'import_size' => ':size tamaño archivo ZIP',
+ 'import_uploaded_at' => 'Subido :relativeTime',
+ 'import_uploaded_by' => 'Subido por',
+ 'import_location' => 'Ubicación de Importación',
+ 'import_location_desc' => 'Seleccione una ubicación de destino para el contenido importado. Necesitará los permisos pertinentes para crearlo dentro de la ubicación que elija.',
+ 'import_delete_confirm' => '¿Está seguro de que desea eliminar esta importación?',
+ '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 han producido los siguientes errores durante el intento de importación:',
+ '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',
+ 'permissions_desc' => 'Establezca los permisos aquí para anular los permisos por defecto proporcionados por los roles de usuario.',
+ 'permissions_book_cascade' => 'Los permisos establecidos en los libros se aplicarán a sus capítulos y páginas, a menos que tengan sus propios permisos definidos.',
+ 'permissions_chapter_cascade' => 'Los permisos establecidos en los capítulos se aplicarán a sus páginas, a menos que tengan sus propios permisos definidos.',
+ 'permissions_save' => 'Guardar permisos',
+ 'permissions_owner' => 'Propietario',
+ 'permissions_role_everyone_else' => 'Todos los demás',
+ 'permissions_role_everyone_else_desc' => 'Establecer permisos para todos los roles sin permisos específicos asignados.',
+ 'permissions_role_override' => 'Reemplazar permisos para el rol',
+ 'permissions_inherit_defaults' => 'Heredar valores por defecto',
+
+ // Search
+ 'search_results' => 'Resultados de búsqueda',
+ 'search_total_results_found' => 'Se han encontrado :count resultados|Se han encontrado :count resultados en total',
+ 'search_clear' => 'Limpiar resultados',
+ 'search_no_pages' => 'Ninguna página encontrada para la búsqueda',
+ 'search_for_term' => 'Búsqueda por :term',
+ 'search_more' => 'Más Resultados',
+ 'search_advanced' => 'Búsqueda Avanzada',
+ 'search_terms' => 'Términos de búsqueda',
+ 'search_content_type' => 'Tipo de Contenido',
+ 'search_exact_matches' => 'Coincidencias Exactas',
+ 'search_tags' => 'Búsquedas Etiquetadas',
+ 'search_options' => 'Opciones',
+ 'search_viewed_by_me' => 'Vistas por mí',
+ 'search_not_viewed_by_me' => 'No vistas por mí',
+ 'search_permissions_set' => 'Permisos ajustados',
+ 'search_created_by_me' => 'Creadas por mí',
+ 'search_updated_by_me' => 'Actualizadas por mí',
+ 'search_owned_by_me' => 'De mi propiedad',
+ 'search_date_options' => 'Opciones de fecha',
+ 'search_updated_before' => 'Actualizadas antes de',
+ 'search_updated_after' => 'Actualizadas después de',
+ 'search_created_before' => 'Creadas antes de',
+ 'search_created_after' => 'Creadas después de',
+ 'search_set_date' => 'fecha',
+ 'search_update' => 'Actualizar Búsqueda',
+
+ // Shelves
+ 'shelf' => 'Estante',
+ 'shelves' => 'Estantes',
+ 'x_shelves' => ':count estante|:count estantes',
+ 'shelves_empty' => 'No hay estantes creados',
+ 'shelves_create' => 'Crear estante',
+ 'shelves_popular' => 'Estantes populares',
+ 'shelves_new' => 'Estantes nuevos',
+ 'shelves_new_action' => 'Nuevo estante',
+ 'shelves_popular_empty' => 'Los estantes más populares aparecerán aquí.',
+ 'shelves_new_empty' => 'Los libros más recientes aparecerán aquí.',
+ 'shelves_save' => 'Guardar estante',
+ 'shelves_books' => 'Libros en este estante',
+ 'shelves_add_books' => 'Añadir libros a este estante',
+ 'shelves_drag_books' => 'Arrastra los libros a continuación para añadirlos a este estante',
+ 'shelves_empty_contents' => 'Este estante no tiene libros asignados',
+ 'shelves_edit_and_assign' => 'Editar el estante para asignar libros',
+ 'shelves_edit_named' => 'Editar estante :name',
+ 'shelves_edit' => 'Editar estante',
+ 'shelves_delete' => 'Eliminar estante',
+ 'shelves_delete_named' => 'Eliminar estante :name',
+ 'shelves_delete_explain' => "Esto eliminará el estante con el nombre ':name'. Los libros que contenga no se eliminarán.",
+ 'shelves_delete_confirmation' => '¿Está seguro de que desea borrar este estante?',
+ 'shelves_permissions' => 'Permisos del Estante',
+ 'shelves_permissions_updated' => 'Permisos del estante actualizados',
+ 'shelves_permissions_active' => 'Permisos del estante activos',
+ 'shelves_permissions_cascade_warning' => 'Los permisos en los estantes no se aplican automáticamente a los libros que contengan. Esto se debe a que un libro puede existir en múltiples estantes. Sin embargo, los permisos pueden ser aplicados a los libros del estante utilizando la opción a continuación.',
+ 'shelves_permissions_create' => 'Los permisos de creación de estantes sólo se utilizan para copiar los permisos a los libros contenidos utilizando la acción a continuación. No controlan la capacidad de crear libros.',
+ 'shelves_copy_permissions_to_books' => 'Copiar permisos a los libros',
+ 'shelves_copy_permissions' => 'Copiar permisos',
+ 'shelves_copy_permissions_explain' => 'Esto aplicará los permisos de este estante para todos sus libros. Antes de activarlo, asegúrese de que todos los cambios de permisos para este estante han sido guardados.',
+ 'shelves_copy_permission_success' => 'Permisos del estante copiados a :count libros',
+
+ // Books
+ 'book' => 'Libro',
+ 'books' => 'Libros',
+ 'x_books' => ':count Libro|:count Libros',
+ 'books_empty' => 'No hay libros creados',
+ 'books_popular' => 'Libros populares',
+ 'books_recent' => 'Libros recientes',
+ 'books_new' => 'Libros nuevos',
+ 'books_new_action' => 'Nuevo Libro',
+ 'books_popular_empty' => 'Los libros más populares aparecerán aquí.',
+ 'books_new_empty' => 'Los libros más recientes aparecerán aquí.',
+ 'books_create' => 'Crear nuevo libro',
+ 'books_delete' => 'Borrar libro',
+ 'books_delete_named' => 'Borrar libro :bookName',
+ 'books_delete_explain' => 'Esto borrará el libro con el nombre \':bookName\', Todos las páginas y capítulos serán borrados.',
+ 'books_delete_confirmation' => '¿Está seguro de que desea borrar este libro?',
+ 'books_edit' => 'Editar Libro',
+ 'books_edit_named' => 'Editar Libro :bookName',
+ 'books_form_book_name' => 'Nombre de libro',
+ 'books_save' => 'Guardar libro',
+ 'books_permissions' => 'Permisos del libro',
+ 'books_permissions_updated' => 'Permisos del libro actualizados',
+ 'books_empty_contents' => 'Ninguna página o capítulo ha sido creada para este libro.',
+ 'books_empty_create_page' => 'Crear una nueva página',
+ 'books_empty_sort_current_book' => 'Organizar el libro actual',
+ 'books_empty_add_chapter' => 'Agregar un capítulo',
+ 'books_permissions_active' => 'Permisos de libro activos',
+ 'books_search_this' => 'Buscar en este libro',
+ 'books_navigation' => 'Navegación de libro',
+ 'books_sort' => 'Organizar contenido de libro',
+ 'books_sort_desc' => 'Mueve capítulos y páginas dentro de un libro para reorganizar su contenido. Se pueden añadir otros libros que permiten mover fácilmente capítulos y páginas entre libros. Opcionalmente, se puede establecer una regla de ordenación automática para ordenar automáticamente el contenido de este libro cuando haya cambios.',
+ 'books_sort_auto_sort' => 'Opción de ordenación automática',
+ 'books_sort_auto_sort_active' => 'Opción de ordenación activa: sortName',
+ 'books_sort_named' => 'Organizar libro :bookName',
+ 'books_sort_name' => 'Organizar por Nombre',
+ 'books_sort_created' => 'Organizar por Fecha de creación',
+ 'books_sort_updated' => 'Organizar por Fecha de modificación',
+ 'books_sort_chapters_first' => 'Capítulos al inicio',
+ 'books_sort_chapters_last' => 'Capítulos al final ',
+ 'books_sort_show_other' => 'Mostrar otros libros',
+ 'books_sort_save' => 'Guardar nuevo orden',
+ 'books_sort_show_other_desc' => 'Añada otros libros aquí para incluirlos en la ordenación, y permita una fácil reorganización entre libros.',
+ 'books_sort_move_up' => 'Subir',
+ 'books_sort_move_down' => 'Bajar',
+ 'books_sort_move_prev_book' => 'Mover al libro anterior',
+ 'books_sort_move_next_book' => 'Mover al siguiente libro',
+ 'books_sort_move_prev_chapter' => 'Mover al capítulo anterior',
+ 'books_sort_move_next_chapter' => 'Mover al siguiente capítulo',
+ 'books_sort_move_book_start' => 'Mover al inicio del libro',
+ 'books_sort_move_book_end' => 'Mover al final del libro',
+ 'books_sort_move_before_chapter' => 'Mover a antes del capítulo',
+ 'books_sort_move_after_chapter' => 'Mover a después del capítulo',
+ 'books_copy' => 'Copiar Libro',
+ 'books_copy_success' => 'Libro copiado correctamente',
+
+ // Chapters
+ 'chapter' => 'Capítulo',
+ 'chapters' => 'Capítulos',
+ 'x_chapters' => ':count Capítulo|:count Capítulos',
+ 'chapters_popular' => 'Capítulos populares',
+ 'chapters_new' => 'Nuevo capítulo',
+ 'chapters_create' => 'Crear nuevo capítulo',
+ 'chapters_delete' => 'Borrar capítulo',
+ 'chapters_delete_named' => 'Borrar capítulo :chapterName',
+ 'chapters_delete_explain' => 'Esto eliminará el capítulo con el nombre \':chapterName\'. También se eliminarán todas las páginas que existen dentro de este capítulo.',
+ 'chapters_delete_confirm' => '¿Está seguro de borrar este capítulo?',
+ 'chapters_edit' => 'Editar capítulo',
+ 'chapters_edit_named' => 'Editar capítulo :chapterName',
+ 'chapters_save' => 'Guardar capítulo',
+ 'chapters_move' => 'Mover capítulo',
+ 'chapters_move_named' => 'Mover Capítulo :chapterName',
+ 'chapters_copy' => 'Copiar Capítulo',
+ 'chapters_copy_success' => 'Capítulo copiado correctamente',
+ 'chapters_permissions' => 'Permisos de capítulo',
+ 'chapters_empty' => 'No existen páginas en este capítulo.',
+ 'chapters_permissions_active' => 'Permisos de capítulo activos',
+ 'chapters_permissions_success' => 'Permisos de capítulo actualizados',
+ 'chapters_search_this' => 'Buscar este capítulo',
+ 'chapter_sort_book' => 'Organizar Libro',
+
+ // Pages
+ 'page' => 'Página',
+ 'pages' => 'Páginas',
+ 'x_pages' => ':count Página|:count Páginas',
+ 'pages_popular' => 'Páginas populares',
+ 'pages_new' => 'Nueva página',
+ 'pages_attachments' => 'Adjuntos',
+ 'pages_navigation' => 'Navegación de página',
+ 'pages_delete' => 'Borrar página',
+ 'pages_delete_named' => 'Borrar página :pageName',
+ 'pages_delete_draft_named' => 'Borrar borrador de página :pageName',
+ 'pages_delete_draft' => 'Borrar borrador de página',
+ 'pages_delete_success' => 'Página borrada',
+ 'pages_delete_draft_success' => 'Borrador de página borrado',
+ 'pages_delete_warning_template' => 'Esta página está en uso como plantilla de página predeterminada de libro o capítulo. Estos libros o capítulos ya no tendrán una plantilla de página predeterminada asignada después de eliminar esta página.',
+ 'pages_delete_confirm' => '¿Está seguro de borrar esta página?',
+ 'pages_delete_draft_confirm' => '¿Está seguro de que desea borrar este borrador de página?',
+ 'pages_editing_named' => 'Editando página :pageName',
+ 'pages_edit_draft_options' => 'Opciones de Borrador',
+ 'pages_edit_save_draft' => 'Guardar borrador',
+ 'pages_edit_draft' => 'Editar borrador de página',
+ 'pages_editing_draft' => 'Editando borrador',
+ 'pages_editing_page' => 'Editando página',
+ 'pages_edit_draft_save_at' => 'Borrador guardado ',
+ 'pages_edit_delete_draft' => 'Borrar borrador',
+ 'pages_edit_delete_draft_confirm' => '¿Estás seguro de que deseas eliminar tus borradores de la página? Todos tus cambios, desde el último guardado completo, se perderán y el editor se actualizará con el estado de guardado de la última página.',
+ 'pages_edit_discard_draft' => 'Descartar borrador',
+ 'pages_edit_switch_to_markdown' => 'Cambiar a Editor Markdown',
+ 'pages_edit_switch_to_markdown_clean' => '(Limpiar Contenido)',
+ 'pages_edit_switch_to_markdown_stable' => '(Contenido Estable)',
+ 'pages_edit_switch_to_wysiwyg' => 'Cambiar a Editor WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Cambiar a nuevo editor WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(En prueba beta)',
+ 'pages_edit_set_changelog' => 'Ajustar Log de cambios',
+ 'pages_edit_enter_changelog_desc' => 'Introduzca una breve descripción de los cambios que ha realizado',
+ 'pages_edit_enter_changelog' => 'Entrar al Log de cambios',
+ 'pages_editor_switch_title' => 'Cambiar editor',
+ 'pages_editor_switch_are_you_sure' => '¿Está seguro de que desea cambiar el editor de esta página?',
+ 'pages_editor_switch_consider_following' => 'Considere lo siguiente al cambiar de editor:',
+ 'pages_editor_switch_consideration_a' => 'Una vez guardado, el nuevo editor será utilizado por cualquier usuario en el futuro, incluyendo aquellos que no puedan cambiar el tipo de editor por sí mismos.',
+ 'pages_editor_switch_consideration_b' => 'Esto puede llevar a una pérdida de detalle y sintaxis en ciertas circunstancias.',
+ 'pages_editor_switch_consideration_c' => 'Cambios en etiquetas o en el registro de cambios, realizados desde el último guardado, no persistirán a través de este cambio.',
+ 'pages_save' => 'Guardar página',
+ 'pages_title' => 'Título de página',
+ 'pages_name' => 'Nombre de página',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Previsualizar',
+ 'pages_md_insert_image' => 'Insertar Imagen',
+ 'pages_md_insert_link' => 'Insertar link de entidad',
+ 'pages_md_insert_drawing' => 'Insertar Dibujo',
+ 'pages_md_show_preview' => 'Mostrar vista previa',
+ 'pages_md_sync_scroll' => 'Sincronizar desplazamiento de vista previa',
+ 'pages_md_plain_editor' => 'Editor de texto plano',
+ 'pages_drawing_unsaved' => 'Encontrado dibujo sin guardar',
+ 'pages_drawing_unsaved_confirm' => 'Se encontraron datos no guardados del dibujo de un intento de guardado fallido. ¿Desea restaurar y continuar editando el dibujo no guardado?',
+ 'pages_not_in_chapter' => 'La página no está en un capítulo',
+ 'pages_move' => 'Mover página',
+ 'pages_copy' => 'Copiar página',
+ 'pages_copy_desination' => 'Destino de la copia',
+ 'pages_copy_success' => 'Página copiada a correctamente',
+ 'pages_permissions' => 'Permisos de página',
+ 'pages_permissions_success' => 'Permisos de página actualizados',
+ 'pages_revision' => 'Revisión',
+ 'pages_revisions' => 'Revisiones de página',
+ 'pages_revisions_desc' => 'A continuación se listan todas las revisiones pasadas de esta página. Puede volver la vista atrás, comparar y restaurar versiones antiguas de la página si los permisos lo permiten. Es posible que el historial completo de la página no se refleje en esta sección. Dependiendo de la configuración del sistema, las viejas revisiones podrían ser eliminadas automáticamente.',
+ 'pages_revisions_named' => 'Revisiones de página para :pageName',
+ 'pages_revision_named' => 'Revisión de página para :pageName',
+ 'pages_revision_restored_from' => 'Restaurado de #:id; :summary',
+ 'pages_revisions_created_by' => 'Creado por',
+ 'pages_revisions_date' => 'Fecha de revisión',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Número de Revisión',
+ 'pages_revisions_numbered' => 'Revisión #:id',
+ 'pages_revisions_numbered_changes' => 'Revisión #:id Cambios',
+ 'pages_revisions_editor' => 'Tipo de Editor',
+ 'pages_revisions_changelog' => 'Log de cambios',
+ 'pages_revisions_changes' => 'Cambios',
+ 'pages_revisions_current' => 'Versión actual',
+ 'pages_revisions_preview' => 'Previsualizar',
+ 'pages_revisions_restore' => 'Restaurar',
+ 'pages_revisions_none' => 'Esta página no tiene revisiones',
+ 'pages_copy_link' => 'Copiar Enlace',
+ 'pages_edit_content_link' => 'Ir a la sección en el editor',
+ 'pages_pointer_enter_mode' => 'Modo de selección de sección',
+ 'pages_pointer_label' => 'Opciones de sección de página',
+ 'pages_pointer_permalink' => 'Sección de enlace permanente de página',
+ 'pages_pointer_include_tag' => 'Sección de página incluyendo etiqueta',
+ 'pages_pointer_toggle_link' => 'Modo de enlace permanente, presiona para mostrar la etiqueta',
+ 'pages_pointer_toggle_include' => 'Modo de etiqueta, presiona para mostrar enlace permanente',
+ 'pages_permissions_active' => 'Permisos de página activos',
+ 'pages_initial_revision' => 'Publicación inicial',
+ 'pages_references_update_revision' => 'Actualización automática de enlaces internos',
+ 'pages_initial_name' => 'Página nueva',
+ 'pages_editing_draft_notification' => 'Está actualmente editando un borrador que fue guardado por última vez el :timeDiff.',
+ 'pages_draft_edited_notification' => 'Esta página ha sido actualizada desde ese momento. Se recomienda que cancele este borrador.',
+ 'pages_draft_page_changed_since_creation' => 'Esta página ha sido actualizada desde que se creó este borrador. Se recomienda descartar este borrador o tener cuidado de no sobrescribir ningún cambio en la página.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count usuarios han comenzado a editar esta página',
+ 'start_b' => ':userName ha comenzado a editar esta página',
+ 'time_a' => 'desde que la página fue actualizada',
+ 'time_b' => 'en los últimos :minCount minutos',
+ 'message' => ':start :time. ¡Ten cuidado de no sobreescribir los cambios del otro usuario!',
+ ],
+ 'pages_draft_discarded' => '¡Borrador descartado! El editor ha sido actualizado con el contenido de la página actual',
+ 'pages_draft_deleted' => '¡Borrador eliminado! El editor ha sido actualizado con el contenido actual de la página',
+ 'pages_specific' => 'Página específica',
+ 'pages_is_template' => 'Página es plantilla',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Mostrar/ocultar barra lateral',
+ 'page_tags' => 'Etiquetas de Página',
+ 'chapter_tags' => 'Etiquetas de Capítulo',
+ 'book_tags' => 'Etiquetas de Libro',
+ 'shelf_tags' => 'Etiquetas de Estante',
+ 'tag' => 'Etiqueta',
+ 'tags' => 'Etiquetas',
+ 'tags_index_desc' => 'Las etiquetas se pueden aplicar al contenido dentro del sistema para aplicar una forma flexible de categorización. Las etiquetas pueden tener tanto una clave como un valor, siendo el valor opcional. Una vez aplicado, el contenido puede ser consultado usando el nombre y el valor de la etiqueta.',
+ 'tag_name' => 'Nombre de la Etiqueta',
+ 'tag_value' => 'Valor de la etiqueta (Opcional)',
+ 'tags_explain' => "Agrege algunas etiquetas para mejorar la categorización de su contenido. \n Puede asignar un valor a una etiqueta para una organización a mayor detalle.",
+ 'tags_add' => 'Agregar otra etiqueta',
+ 'tags_remove' => 'Eliminar esta etiqueta',
+ 'tags_usages' => 'Uso total de etiquetas',
+ 'tags_assigned_pages' => 'Asignadas a páginas',
+ 'tags_assigned_chapters' => 'Asignadas a capitulos',
+ 'tags_assigned_books' => 'Asignadas a libros',
+ 'tags_assigned_shelves' => 'Asignadas a estantes',
+ 'tags_x_unique_values' => ':count valores únicos',
+ 'tags_all_values' => 'Todos los valores',
+ 'tags_view_tags' => 'Ver etiquetas',
+ 'tags_view_existing_tags' => 'Ver etiquetas existentes',
+ 'tags_list_empty_hint' => 'Las etiquetas se pueden asignar a través de la barra lateral del editor de páginas o mientras se editan los detalles de un libro, capítulo o estante.',
+ 'attachments' => 'Adjuntos',
+ 'attachments_explain' => 'Subir ficheros o agregar enlaces para mostrar en la página. Estos son visibles en la barra lateral de la página.',
+ 'attachments_explain_instant_save' => 'Los cambios son guardados de manera instantánea .',
+ 'attachments_upload' => 'Subir Archivo',
+ 'attachments_link' => 'Adjuntar Enlace',
+ 'attachments_upload_drop' => 'También puedes arrastrar y soltar un archivo aquí para subirlo como un archivo adjunto.',
+ 'attachments_set_link' => 'Ajustar Enlace',
+ 'attachments_delete' => '¿Está seguro de que quiere eliminar este archivo adjunto?',
+ 'attachments_dropzone' => 'Arrastre aquí archivos para subirlos',
+ 'attachments_no_files' => 'No se han subido ficheros',
+ 'attachments_explain_link' => 'Puede agregar un enlace si prefiere no subir un archivo. Puede ser un enlace a otra página o un enlace a un fichero en la nube.',
+ 'attachments_link_name' => 'Nombre del Enlace',
+ 'attachment_link' => 'Enlace adjunto',
+ 'attachments_link_url' => 'Enlace a fichero',
+ 'attachments_link_url_hint' => 'Url del sitio o fichero',
+ 'attach' => 'Adjuntar',
+ 'attachments_insert_link' => 'Añadir enlace al adjunto en la página',
+ 'attachments_edit_file' => 'Editar fichero',
+ 'attachments_edit_file_name' => 'Nombre del fichero',
+ 'attachments_edit_drop_upload' => 'Arrastre a los ficheros o haga click aquí para subir y sobreescribir',
+ 'attachments_order_updated' => 'Orden de adjuntos actualizado',
+ 'attachments_updated_success' => 'Detalles de adjuntos actualizados',
+ 'attachments_deleted' => 'Adjunto borrado',
+ 'attachments_file_uploaded' => 'Fichero subido éxitosamente',
+ 'attachments_file_updated' => 'Fichero actualizado éxitosamente',
+ 'attachments_link_attached' => 'Enlace agregado éxitosamente a la página',
+ 'templates' => 'Plantillas',
+ 'templates_set_as_template' => 'La página es una plantilla',
+ 'templates_explain_set_as_template' => 'Puede ajustar esta página como una plantilla, así su contenido puede emplearse al crear una nueva página. Otros usuarios podrán utilizar esta plantilla si tienen permisos de lectura sobre esta página.',
+ 'templates_replace_content' => 'Reemplazar el contenido de la página',
+ 'templates_append_content' => 'Añadir después del contenido de la página',
+ 'templates_prepend_content' => 'Añadir antes del contenido de la página',
+
+ // Profile View
+ 'profile_user_for_x' => 'Usuario para :time',
+ 'profile_created_content' => 'Contenido creado',
+ 'profile_not_created_pages' => ':userName no ha creado ninguna página',
+ 'profile_not_created_chapters' => ':userName no ha creado ningún capítulo',
+ 'profile_not_created_books' => ':userName no ha creado ningún libro',
+ 'profile_not_created_shelves' => ':userName no ha creado ningún estante',
+
+ // Comments
+ 'comment' => 'Comentario',
+ 'comments' => 'Comentarios',
+ 'comment_add' => 'Añadir Comentario',
+ 'comment_none' => 'No hay comentarios para mostrar',
+ 'comment_placeholder' => 'Introduzca su comentario aquí',
+ 'comment_thread_count' => ':count hilo de comentarios|:count hilos de comentarios',
+ 'comment_archived_count' => ':count Archivados',
+ 'comment_archived_threads' => 'Hilos archivados',
+ 'comment_save' => 'Guardar comentario',
+ 'comment_new' => 'Nuevo Comentario',
+ 'comment_created' => 'comentado :createDiff',
+ 'comment_updated' => 'Actualizado :updateDiff por :username',
+ 'comment_updated_indicator' => 'Actualizado',
+ 'comment_deleted_success' => 'Comentario borrado',
+ 'comment_created_success' => 'Comentario añadido',
+ 'comment_updated_success' => 'Comentario actualizado',
+ 'comment_archive_success' => 'Comentario archivado',
+ 'comment_unarchive_success' => 'Comentario desarchivado',
+ 'comment_view' => 'Ver comentario',
+ 'comment_jump_to_thread' => 'Ir al hilo',
+ 'comment_delete_confirm' => '¿Está seguro de que quiere borrar este comentario?',
+ 'comment_in_reply_to' => 'En respuesta a :commentId',
+ 'comment_reference' => 'Referencia',
+ 'comment_reference_outdated' => '(obsoleto)',
+ 'comment_editor_explain' => 'Estos son los comentarios que se han escrito en esta página. Los comentarios se pueden añadir y administrar cuando se ve la página guardada.',
+
+ // Revision
+ 'revision_delete_confirm' => '¿Está seguro de que desea eliminar esta revisión?',
+ 'revision_restore_confirm' => '¿Está seguro de que desea restaurar esta revisión? El contenido actual de la página será reemplazado.',
+ 'revision_cannot_delete_latest' => 'No se puede eliminar la última revisión.',
+
+ // Copy view
+ 'copy_consider' => 'Por favor, tenga en cuenta lo siguiente al copiar el contenido.',
+ 'copy_consider_permissions' => 'Los ajustes de permisos personalizados no serán copiados.',
+ 'copy_consider_owner' => 'Usted se convertirá en el dueño de todo el contenido copiado.',
+ 'copy_consider_images' => 'Los archivos de imagen de de las páginas no serán duplicados y las imágenes originales conservarán su relación con la página a la que fueron subidos originalmente.',
+ 'copy_consider_attachments' => 'Los archivos adjuntos de la página no serán copiados.',
+ 'copy_consider_access' => 'Un cambio de ubicación, propietario o permisos puede resultar en que este contenido sea accesible para aquellos que anteriormente no tuvieran acceso.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Convertir a Estante',
+ 'convert_to_shelf_contents_desc' => 'Puedes convertir este libro a un nuevo estante con el mismo contenido. Los capítulos contenidos en este libro se convertirán en libros nuevos. Si este libro contiene alguna página, que no esté en un capítulo, este libro será renombrado y contendrá tales páginas, y este libro pasará a formar parte del nuevo estante.',
+ 'convert_to_shelf_permissions_desc' => 'Cualquier permiso establecido en este libro será copiado al nuevo estante y a todos los nuevos libros que no tengan sus propios permisos configurados. Tenga en cuenta que los permisos de los estantes no se aplican automáticamente sobre el contenido en su interior, como lo hacen para los libros.',
+ 'convert_book' => 'Convertir Libro',
+ 'convert_book_confirm' => '¿Está seguro de que desea borrar este libro?',
+ 'convert_undo_warning' => 'Esto no puede revertirse de forma sencilla.',
+ 'convert_to_book' => 'Convertir a Libro',
+ 'convert_to_book_desc' => 'Puede convertir este capítulo en un nuevo libro con el mismo contenido. Cualquier permiso establecido en este capítulo será copiado al nuevo libro pero cualquier permiso heredado, del libro padre, no se copiará lo que podría conducir a un cambio de control de acceso.',
+ 'convert_chapter' => 'Convertir Capítulo',
+ 'convert_chapter_confirm' => '¿Estás seguro de que quieres convertir este capítulo?',
+
+ // References
+ 'references' => 'Referencias',
+ 'references_none' => 'No hay referencias a este elemento.',
+ 'references_to_desc' => 'A continuación se muestran todas las páginas en el sistema que enlazan a este elemento.',
+
+ // Watch Options
+ 'watch' => 'Suscribirme',
+ 'watch_title_default' => 'Preferencias por defecto',
+ 'watch_desc_default' => 'Revertir suscripciones a tus preferencias de notificación por defecto.',
+ 'watch_title_ignore' => 'Ignorar',
+ 'watch_desc_ignore' => 'Ignorar todas las notificaciones, incluyendo las de las preferencias a nivel de usuario.',
+ 'watch_title_new' => 'Nuevas páginas',
+ 'watch_desc_new' => 'Notificar cuando se crea una nueva página dentro de este elemento.',
+ 'watch_title_updates' => 'Todas las actualizaciones de páginas',
+ 'watch_desc_updates' => 'Notificar todos los cambios de páginas y páginas nuevas.',
+ 'watch_desc_updates_page' => 'Notificar todos los cambios en la página.',
+ 'watch_title_comments' => 'Todas las actualizaciones de páginas y comentarios',
+ 'watch_desc_comments' => 'Notificar sobre todas las páginas nuevas, cambios de página y nuevos comentarios.',
+ 'watch_desc_comments_page' => 'Notificar los cambios en las páginas y los nuevos comentarios.',
+ 'watch_change_default' => 'Cambiar preferencias de notificación por defecto',
+ 'watch_detail_ignore' => 'Ignorar notificaciones',
+ 'watch_detail_new' => 'Suscripciones de nuevas páginas',
+ 'watch_detail_updates' => 'Suscripciones de nuevas páginas y actualizaciones de páginas',
+ 'watch_detail_comments' => 'Suscripciones de nuevas páginas, actualizaciones de páginas y comentarios',
+ 'watch_detail_parent_book' => 'Subscripciones por libro contenedor',
+ 'watch_detail_parent_book_ignore' => 'Ignorando a través del libro contenedor',
+ 'watch_detail_parent_chapter' => 'Subscripciones por capítulo superior',
+ 'watch_detail_parent_chapter_ignore' => 'Ignorar por capítulo superior',
+];
diff --git a/lang/es/errors.php b/lang/es/errors.php
new file mode 100644
index 00000000000..25f82a5d872
--- /dev/null
+++ b/lang/es/errors.php
@@ -0,0 +1,135 @@
+ 'No tienes permisos para visualizar la página solicitada.',
+ 'permissionJson' => 'No tienes permisos para ejecutar la acción solicitada.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Un usuario con el correo electrónico :email ya existe pero con credenciales diferentes.',
+ 'auth_pre_register_theme_prevention' => 'La cuenta de usuario no pudo ser registrada con los detalles proporcionados',
+ 'email_already_confirmed' => 'El correo electrónico ya ha sido confirmado, intente acceder a la aplicación.',
+ 'email_confirmation_invalid' => 'Este token de confirmación no es válido o ya ha sido usado, intente registrar uno nuevamente.',
+ 'email_confirmation_expired' => 'El token de confirmación ha expirado, un nuevo email de confirmacón ha sido enviado.',
+ 'email_confirmation_awaiting' => 'La dirección de correo electrónico de la cuenta en uso debe ser confirmada',
+ 'ldap_fail_anonymous' => 'El acceso con LDAP ha fallado usando binding anónimo',
+ 'ldap_fail_authed' => 'El acceso LDAP ha fallado usando el dn & contraseña enviados',
+ 'ldap_extension_not_installed' => 'La extensión LDAP PHP no se encuentra instalada',
+ 'ldap_cannot_connect' => 'No se puede conectar con el servidor ldap, la conexión inicial ha fallado',
+ 'saml_already_logged_in' => 'Ya estás conectado',
+ 'saml_no_email_address' => 'No se pudo encontrar una dirección de correo electrónico, para este usuario, en los datos proporcionados por el sistema de autenticación externo',
+ 'saml_invalid_response_id' => 'La solicitud del sistema de autenticación externo no está reconocida por un proceso iniciado por esta aplicación. Navegar hacia atrás después de un inicio de sesión podría causar este problema.',
+ 'saml_fail_authed' => 'El inicio de sesión con :system falló, el sistema no proporcionó una autorización correcta',
+ 'oidc_already_logged_in' => 'Ya tenías la sesión iniciada',
+ 'oidc_no_email_address' => 'No se pudo encontrar una dirección de correo electrónico, para este usuario, en los datos proporcionados por el sistema de autenticación externo',
+ 'oidc_fail_authed' => 'El inicio de sesión con :system falló, el sistema no proporcionó una autorización correcta',
+ 'social_no_action_defined' => 'Acción no definida',
+ 'social_login_bad_response' => "Se ha recibido un error durante el acceso con :socialAccount error: \n:error",
+ 'social_account_in_use' => 'la cuenta :socialAccount ya se encuentra en uso, intente acceder a través de la opción :socialAccount .',
+ 'social_account_email_in_use' => 'El correo electrónico :email ya se encuentra en uso. Si ya dispone de una cuenta puede acceder a través de su cuenta :socialAccount desde la configuración de perfil.',
+ 'social_account_existing' => 'La cuenta :socialAccount ya se encuentra asignada a su perfil.',
+ 'social_account_already_used_existing' => 'La cuenta :socialAccount ya está siendo usada por otro usuario.',
+ 'social_account_not_used' => 'La cuenta :socialAccount no está asociada a ningún usuario. Por favor adjúntela a su configuración de perfil. ',
+ 'social_account_register_instructions' => 'Si no dispone de una cuenta, puede registrar una cuenta usando la opción de :socialAccount .',
+ 'social_driver_not_found' => 'Driver social no encontrado',
+ 'social_driver_not_configured' => 'Su configuración :socialAccount no es correcta.',
+ 'invite_token_expired' => 'Este enlace de invitación ha expirado. Puede resetear la contraseña de su cuenta como alternativa.',
+ 'login_user_not_found' => 'No se pudo encontrar un usuario para esta acción.',
+
+ // System
+ 'path_not_writable' => 'El fichero no pudo ser subido a la ruta :filePath . Asegúrese de que es escribible por el servidor.',
+ 'cannot_get_image_from_url' => 'No se puede obtener la imagen desde :url',
+ 'cannot_create_thumbs' => 'El servidor no puede crear la miniatura de la imagen. Compruebe que tiene la extensión PHP GD instalada.',
+ 'server_upload_limit' => 'El servidor no permite la subida de ficheros de este tamaño. Intente subir un fichero de menor tamaño.',
+ 'server_post_limit' => 'El servidor no puede recibir la cantidad de datos proporcionados. Inténtelo de nuevo con menos datos o un archivo más pequeño.',
+ 'uploaded' => 'El servidor no permite la subida de ficheros de este tamaño. Intente subir un fichero de menor tamaño.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Ha ocurrido un error al subir la imagen',
+ 'image_upload_type_error' => 'El tipo de imagen que se quiere subir no es válido',
+ 'image_upload_replace_type' => 'Las imágenes para sustituir deben ser del mismo tipo',
+ 'image_upload_memory_limit' => 'No se pudo gestionar la subida de imágenes y/o crear miniaturas debido a los límites de recursos del sistema.',
+ 'image_thumbnail_memory_limit' => 'Error al crear imágenes de distintos tamaños debido a los límites de los recursos del sistema.',
+ 'image_gallery_thumbnail_memory_limit' => 'Error al crear imágenes de previsualización de la galería debido a los límites de los recursos del sistema.',
+ 'drawing_data_not_found' => 'No se han podido cargar los datos del dibujo. Puede que el archivo de dibujo ya no exista o que no tenga permiso para acceder a él.',
+
+ // Attachments
+ 'attachment_not_found' => 'No se encontró el adjunto',
+ 'attachment_upload_error' => 'Ha ocurrido un error al subir el archivo adjunto',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Fallo al guardar borrador. Asegúrese de que tiene conexión a Internet antes de guardar este borrador',
+ 'page_draft_delete_fail' => 'Error al eliminar el borrador de la página y obtener el último contenido guardado',
+ 'page_custom_home_deletion' => 'No se puede borrar una página mientras esté configurada como página de inicio',
+
+ // Entities
+ 'entity_not_found' => 'Entidad no encontrada',
+ 'bookshelf_not_found' => 'Estante no encontrado',
+ 'book_not_found' => 'Libro no encontrado',
+ 'page_not_found' => 'Página no encontrada',
+ 'chapter_not_found' => 'Capítulo no encontrado',
+ 'selected_book_not_found' => 'El libro seleccionado no fue encontrado',
+ 'selected_book_chapter_not_found' => 'El libro o capítulo seleccionado no fue encontrado',
+ 'guests_cannot_save_drafts' => 'Los invitados no pueden guardar borradores',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'No se puede borrar el único administrador',
+ 'users_cannot_delete_guest' => 'No se puede borrar el usuario invitado',
+ 'users_could_not_send_invite' => 'No se pudo crear el usuario porque no se pudo enviar el correo de invitación',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Este rol no puede ser editado',
+ 'role_system_cannot_be_deleted' => 'Este rol es un rol de sistema y no puede ser borrado',
+ 'role_registration_default_cannot_delete' => 'Este rol no puede ser borrado mientras sea el rol por defecto de nuevos registros',
+ 'role_cannot_remove_only_admin' => 'Este usuario es el único usuario asignado al rol de administrador. Asigna primero este rol a otro usuario antes de eliminarlo.',
+
+ // Comments
+ 'comment_list' => 'Se ha producido un error al buscar los comentarios.',
+ 'cannot_add_comment_to_draft' => 'No puedes añadir comentarios a un borrador.',
+ 'comment_add' => 'Se ha producido un error al añadir el comentario.',
+ 'comment_delete' => 'Se ha producido un error al eliminar el comentario.',
+ 'empty_comment' => 'No se puede agregar un comentario vacío.',
+
+ // Error pages
+ '404_page_not_found' => 'Página no encontrada',
+ 'sorry_page_not_found' => 'Lo sentimos, la página a la que intenta acceder no pudo ser encontrada.',
+ 'sorry_page_not_found_permission_warning' => 'Si esperaba que esta página existiera, puede que no tenga permiso para verla.',
+ 'image_not_found' => 'Imagen no encontrada',
+ 'image_not_found_subtitle' => 'Lo sentimos, no se pudo encontrar el archivo de imagen que estaba buscando.',
+ 'image_not_found_details' => 'Si esperaba que esta imagen existiera, podría haber sido eliminada.',
+ 'return_home' => 'Volver a la página de inicio',
+ 'error_occurred' => 'Ha ocurrido un error',
+ 'app_down' => 'La aplicación :appName se encuentra caída en este momento',
+ 'back_soon' => 'Volverá a estar operativa pronto.',
+
+ // Import
+ 'import_zip_cant_read' => 'No se pudo leer el archivo ZIP.',
+ 'import_zip_cant_decode_data' => 'No se pudo encontrar y decodificar el archivo data.json. en el archivo ZIP.',
+ 'import_zip_no_data' => 'Los datos del archivo ZIP no contienen ningún libro, capítulo o contenido de página.',
+ 'import_zip_data_too_large' => 'El contenido del ZIP data.json excede el tamaño máximo de carga configurado.',
+ 'import_validation_failed' => 'Error al validar la importación del ZIP con errores:',
+ 'import_zip_failed_notification' => 'Error al importar archivo ZIP.',
+ 'import_perms_books' => 'Le faltan los permisos necesarios para crear libros.',
+ 'import_perms_chapters' => 'Le faltan los permisos necesarios para crear capítulos.',
+ 'import_perms_pages' => 'Le faltan los permisos necesarios para crear páginas.',
+ 'import_perms_images' => 'Le faltan los permisos necesarios para crear imágenes.',
+ 'import_perms_attachments' => 'Le faltan los permisos necesarios para crear adjuntos.',
+
+ // API errors
+ 'api_no_authorization_found' => 'No se encontró ningún token de autorización en la solicitud',
+ 'api_bad_authorization_format' => 'Se ha encontrado un token de autorización en la solicitud pero el formato era incorrecto',
+ 'api_user_token_not_found' => 'No se ha encontrado un token API que corresponda con el token de autorización proporcionado',
+ 'api_incorrect_token_secret' => 'El secreto proporcionado para el token API usado es incorrecto',
+ 'api_user_no_api_permission' => 'El propietario del token API usado no tiene permiso para hacer llamadas API',
+ 'api_user_token_expired' => 'El token de autorización usado ha caducado',
+ 'api_cookie_auth_only_get' => 'Sólo se permiten peticiones GET cuando se utiliza el API con autenticación basada en cookies',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error al enviar un email de prueba:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'La URL no coincide con los hosts SSR permitidos',
+];
diff --git a/lang/es/notifications.php b/lang/es/notifications.php
new file mode 100644
index 00000000000..38c7708884f
--- /dev/null
+++ b/lang/es/notifications.php
@@ -0,0 +1,29 @@
+ 'Nuevo comentario en la página: :pageName',
+ 'new_comment_intro' => 'Un usuario ha comentado en una página de :appName:',
+ 'new_page_subject' => 'Nueva página: :pageName',
+ 'new_page_intro' => 'Una nueva página ha sido creada en :appName:',
+ 'updated_page_subject' => 'Página actualizada: :pageName',
+ 'updated_page_intro' => 'Una página ha sido actualizada en :appName:',
+ 'updated_page_debounce' => 'Para prevenir notificaciones en masa, durante un tiempo no se enviarán notificaciones para futuras ediciones de esta página por el mismo editor.',
+ 'comment_mention_subject' => 'Ha sido mencionado en un comentario en la página: :pageName',
+ 'comment_mention_intro' => 'Fue mencionado en un comentario en :appName:',
+
+ 'detail_page_name' => 'Nombre de página:',
+ 'detail_page_path' => 'Ruta de la página:',
+ 'detail_commenter' => 'Autor del comentario:',
+ 'detail_comment' => 'Comentario:',
+ 'detail_created_by' => 'Creado por:',
+ 'detail_updated_by' => 'Actualizado por:',
+
+ 'action_view_comment' => 'Ver comentario',
+ 'action_view_page' => 'Ver página',
+
+ 'footer_reason' => 'Esta notificación fue enviada porque :link cubre este tipo de actividad para este artículo.',
+ 'footer_reason_link' => 'sus preferencias de notificación',
+];
diff --git a/resources/lang/es/pagination.php b/lang/es/pagination.php
similarity index 100%
rename from resources/lang/es/pagination.php
rename to lang/es/pagination.php
diff --git a/resources/lang/es/passwords.php b/lang/es/passwords.php
similarity index 100%
rename from resources/lang/es/passwords.php
rename to lang/es/passwords.php
diff --git a/lang/es/preferences.php b/lang/es/preferences.php
new file mode 100644
index 00000000000..0328a572acd
--- /dev/null
+++ b/lang/es/preferences.php
@@ -0,0 +1,52 @@
+ 'Mi cuenta',
+
+ 'shortcuts' => 'Accesos directos',
+ 'shortcuts_interface' => 'Preferencias de acceso directo en la interfaz',
+ 'shortcuts_toggle_desc' => 'Aquí puede activar o desactivar los accesos directos de la interfaz, utilizados para la navegación y las acciones.',
+ 'shortcuts_customize_desc' => 'Puede personalizar cada uno de los accesos directos a continuación. Simplemente pulse la combinación de teclas deseada después de seleccionar la entrada para un acceso directo.',
+ 'shortcuts_toggle_label' => 'Accesos directos habilitados',
+ 'shortcuts_section_navigation' => 'Navegación',
+ 'shortcuts_section_actions' => 'Acciones comunes',
+ 'shortcuts_save' => 'Guardar accesos directos',
+ 'shortcuts_overlay_desc' => 'Nota: Cuando se activan los accesos directos se puede mostrar la ayuda presionando la tecla "?" que resaltará los accesos rápidos disponibles para las acciones actualmente visibles en la pantalla.',
+ 'shortcuts_update_success' => '¡Las preferencias de accesos directos han sido actualizadas!',
+ 'shortcuts_overview_desc' => 'Gestione los atajos de teclado que puede utilizar para navegar por la interfaz de usuario del sistema.',
+
+ 'notifications' => 'Preferencias de notificaciones',
+ 'notifications_desc' => 'Controle las notificaciones por correo electrónico que recibe cuando se realiza cierta actividad dentro del sistema.',
+ 'notifications_opt_own_page_changes' => 'Notificar sobre los cambios en las páginas en las que soy propietario',
+ 'notifications_opt_own_page_comments' => 'Notificar sobre comentarios en las páginas en las que soy propietario',
+ 'notifications_opt_comment_mentions' => 'Notificarme cuando he sido mencionado en un comentario',
+ 'notifications_opt_comment_replies' => 'Notificar sobre respuestas a mis comentarios',
+ 'notifications_save' => 'Guardar preferencias',
+ 'notifications_update_success' => '¡Se han actualizado las preferencias de notificaciones!',
+ 'notifications_watched' => 'Elementos vistos e ignorados',
+ 'notifications_watched_desc' => 'A continuación se muestran los elementos que tienen preferencias personalizadas de monitorización. Para actualizar sus preferencias, vea el elemento y las opciones se mostrarán en la barra lateral.',
+
+ 'auth' => 'Acceso y seguridad',
+ 'auth_change_password' => 'Cambiar contraseña',
+ 'auth_change_password_desc' => 'Cambie la contraseña que utiliza para iniciar sesión en la aplicación. Debe tener al menos 8 caracteres.',
+ 'auth_change_password_success' => '¡La contraseña ha sido actualizada!',
+
+ 'profile' => 'Detalles del perfil',
+ 'profile_desc' => 'Administre los detalles de su cuenta que le representa a otros usuarios, además de los detalles que se utilizan para la comunicación y la personalización del sistema.',
+ 'profile_view_public' => 'Ver perfil público',
+ 'profile_name_desc' => 'Configure el nombre que será visible para otros usuarios del sistema a través de la actividad que realiza, y el contenido que posee.',
+ 'profile_email_desc' => 'Este correo electrónico se utilizará para las notificaciones y, dependiendo de la autenticación activa del sistema, el acceso del sistema.',
+ 'profile_email_no_permission' => 'Lamentablemente no tiene permiso para cambiar su dirección de correo electrónico. Si desea cambiar esto, necesitará pedir a un administrador que lo cambie por usted.',
+ 'profile_avatar_desc' => 'Seleccione una imagen pública que verán los demás en el sistema. Idealmente esta imagen debe ser cuadrada y alrededor de 256px de anchura y altura.',
+ 'profile_admin_options' => 'Opciones de administrador',
+ 'profile_admin_options_desc' => 'Opciones adicionales de administrador, como por ejemplo administrar asignaciones de rol, se pueden encontrar para su cuenta de usuario en el área de "Ajustes > Usuarios" de la aplicación.',
+
+ 'delete_account' => 'Eliminar cuenta',
+ 'delete_my_account' => 'Eliminar mi cuenta',
+ 'delete_my_account_desc' => 'Esto eliminará completamente su cuenta de usuario del sistema. No podrá recuperar esta cuenta o revertir esta acción. El contenido que ha creado, como páginas creadas e imágenes subidas, permanecerá.',
+ 'delete_my_account_warning' => '¿Está seguro de que desea eliminar su cuenta?',
+];
diff --git a/lang/es/settings.php b/lang/es/settings.php
new file mode 100644
index 00000000000..bfd3ce1cfe4
--- /dev/null
+++ b/lang/es/settings.php
@@ -0,0 +1,374 @@
+ 'Ajustes',
+ 'settings_save' => 'Guardar ajustes',
+ 'system_version' => 'Versión de BookStack',
+ 'categories' => 'Categorías',
+
+ // App Settings
+ 'app_customization' => 'Personalización',
+ 'app_features_security' => 'Características y seguridad',
+ 'app_name' => 'Nombre de la aplicación',
+ 'app_name_desc' => 'Este nombre se muestra en la cabecera y en cualquier correo electrónico enviado por el sistema.',
+ 'app_name_header' => 'Mostrar el nombre en la cabecera',
+ 'app_public_access' => 'Acceso público',
+ 'app_public_access_desc' => 'Activar esta opción permitirá a los visitantes que no hayan iniciado sesión, poder ver el contenido de tu BookStack.',
+ 'app_public_access_desc_guest' => 'El acceso público para visitantes puede ser controlado a través del usuario "Guest".',
+ 'app_public_access_toggle' => 'Permitir acceso público',
+ 'app_public_viewing' => '¿Permitir acceso público?',
+ 'app_secure_images' => 'Mayor seguridad para subir imágenes',
+ 'app_secure_images_toggle' => 'Habilitar mayor seguridad en la subida de imágenes',
+ 'app_secure_images_desc' => 'Por razones de rendimiento, todas las imágenes son públicas. Esta opción agrega una cadena de texto larga difícil de adivinar. Asegúrese que los índices de directorio no están habilitados para evitar el acceso fácil a las imágenes.',
+ 'app_default_editor' => 'Editor predeterminado',
+ 'app_default_editor_desc' => 'Seleccione qué editor se utilizará por defecto cuando se editen nuevas páginas. Esto se puede anular a nivel de página si los permisos lo permiten.',
+ 'app_custom_html' => 'Contenido de cabecera HTML personalizado',
+ 'app_custom_html_desc' => 'Cualquier contenido agregado aquí será insertado al final de la sección de cada página. Esto es útil para sobreescribir estilos o agregar código para analíticas web.',
+ 'app_custom_html_disabled_notice' => 'El contenido personalizado para la cabecera está deshabilitado en esta página de ajustes para permitir que cualquier cambio que rompa la funcionalidad pueda ser revertido.',
+ 'app_logo' => 'Logo de la aplicación',
+ 'app_logo_desc' => 'Se utiliza en la cabecera de la aplicación, entre otras áreas. Esta imagen debe ser de 86px de altura. Las imágenes grandes serán reducidas en tamaño.',
+ 'app_icon' => 'Icono de la aplicación',
+ 'app_icon_desc' => 'Se utiliza para las pestañas del navegador y los accesos directos. Debería ser una imagen PNG cuadrada de 256px.',
+ 'app_homepage' => 'Página de inicio',
+ 'app_homepage_desc' => 'Elija la vista que se mostrará en la página de inicio en lugar de la vista predeterminada. Se ignorarán los permisos de la página seleccionada.',
+ 'app_homepage_select' => 'Elija una página',
+ 'app_footer_links' => 'Enlaces de pie de página',
+ 'app_footer_links_desc' => 'Añade enlaces para mostrar dentro del pie de página del sitio. Estos se mostrarán en la parte inferior de la mayoría de las páginas, incluyendo aquellas que no requieren estar registrado. Puede utilizar una etiqueta de "trans::" para utilizar traducciones definidas por el sistema. Por ejemplo: el uso de "trans::common.privacy_policy" proporcionará el texto traducido "Política de privacidad" y "trans::common.terms_of_service" proporcionará el texto traducido "Términos de servicio".',
+ 'app_footer_links_label' => 'Etiqueta del enlace',
+ 'app_footer_links_url' => 'Dirección URL del enlace',
+ 'app_footer_links_add' => 'Añadir enlace al pie de página',
+ 'app_disable_comments' => 'Deshabilitar comentarios',
+ 'app_disable_comments_toggle' => 'Deshabilitar comentarios',
+ 'app_disable_comments_desc' => 'Deshabilita los comentarios en todas las páginas de la aplicación. Los comentarios existentes no se muestran.',
+
+ // Color settings
+ 'color_scheme' => 'Esquema de color de la aplicación',
+ 'color_scheme_desc' => 'Establece los colores a usar en la interfaz de BookStack. Los colores pueden configurarse por separado para que los modos oscuros y claros se ajusten mejor al tema y garanticen la legibilidad.',
+ 'ui_colors_desc' => 'Establece el color principal y el color de los enlaces para BookStack. El color principal se utiliza principalmente para la cabecera, botones y decoraciones de la interfaz. El color de los enlaces se utiliza para enlaces y acciones de texto, tanto dentro del contenido escrito como en la interfaz de Bookstack.',
+ 'app_color' => 'Color principal',
+ 'link_color' => 'Color de enlaces por defecto',
+ 'content_colors_desc' => 'Establece los colores para todos los elementos en la jerarquía de la organización de la página. Se recomienda elegir colores con un brillo similar al predeterminado para mayor legibilidad.',
+ 'bookshelf_color' => 'Color del estante',
+ 'book_color' => 'Color del libro',
+ 'chapter_color' => 'Color del capítulo',
+ 'page_color' => 'Color de la página',
+ 'page_draft_color' => 'Color del borrador de página',
+
+ // Registration Settings
+ 'reg_settings' => 'Registro',
+ 'reg_enable' => 'Habilitar registro',
+ 'reg_enable_toggle' => 'Habilitar registro',
+ 'reg_enable_desc' => 'Cuando se habilita el registro los usuarios podrán registrarse como usuarios de la aplicación. Al registrarse se les asigna un rol único por defecto.',
+ 'reg_default_role' => 'Rol de usuario por defecto después del registro',
+ 'reg_enable_external_warning' => 'La opción anterior no se utiliza mientras la autenticación LDAP o SAML externa esté activa. Las cuentas de usuario para los miembros no existentes se crearán automáticamente si la autenticación en el sistema externo en uso es exitosa.',
+ 'reg_email_confirmation' => 'Confirmación por correo electrónico',
+ 'reg_email_confirmation_toggle' => 'Requerir confirmación por correo electrónico',
+ 'reg_confirm_email_desc' => 'Si se emplea la restricción por dominio, entonces se requerirá la confirmación por correo electrónico y esta opción será ignorada.',
+ 'reg_confirm_restrict_domain' => 'Restricción por dominio',
+ 'reg_confirm_restrict_domain_desc' => 'Introduzca una lista separada por comas de los dominios para cuentas de correo a los que se les permitirá el registro de usuarios. A los usuarios les será enviado un correo electrónico para confirmar la dirección antes de que se le permita interactuar con la aplicación. Tenga en cuenta que los usuarios podrán cambiar sus direcciones de correo electrónico después de registrarse exitosamente.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Ninguna restricción establecida',
+
+ // Sorting Settings
+ 'sorting' => 'Listas y ordenación',
+ 'sorting_book_default' => 'Orden de libros por defecto',
+ 'sorting_book_default_desc' => 'Seleccione la regla de ordenación predeterminada para aplicar a nuevos libros. Esto no afectará a los libros existentes, y puede ser anulado por libro.',
+ 'sorting_rules' => 'Reglas de ordenación',
+ 'sorting_rules_desc' => 'Son operaciones de ordenación predefinidas que se pueden aplicar al contenido en el sistema.',
+ 'sort_rule_assigned_to_x_books' => 'Asignado a :count libro | Asignado a :count libros',
+ 'sort_rule_create' => 'Crear regla de ordenación',
+ 'sort_rule_edit' => 'Editar regla de ordenación',
+ 'sort_rule_delete' => 'Eliminar regla de ordenación',
+ 'sort_rule_delete_desc' => 'Eliminar esta regla de ordenación del sistema. Los Libros que utilicen este tipo se revertirán a la ordenación manual.',
+ 'sort_rule_delete_warn_books' => 'Esta regla de ordenación se utiliza actualmente en :count libro(s). ¿Está seguro que desea eliminarla?',
+ 'sort_rule_delete_warn_default' => 'Esta regla de ordenación se utiliza actualmente como predeterminado para los libros. ¿Está seguro de que desea eliminarla?',
+ 'sort_rule_details' => 'Detalles de la regla de ordenación',
+ 'sort_rule_details_desc' => 'Establezca un nombre para esta regla de ordenación, que aparecerá en las listas cuando los usuarios estén seleccionando un orden.',
+ 'sort_rule_operations' => 'Operaciones de ordenación',
+ 'sort_rule_operations_desc' => 'Configure las acciones de ordenación a realizar moviéndolas de la lista de operaciones disponibles. Al usarse, las operaciones se aplicarán en orden, de arriba a abajo. Cualquier cambio realizado aquí se aplicará a todos los libros asignados al guardar.',
+ 'sort_rule_available_operations' => 'Operaciones disponibles',
+ 'sort_rule_available_operations_empty' => 'No hay operaciones restantes',
+ 'sort_rule_configured_operations' => 'Operaciones configuradas',
+ 'sort_rule_configured_operations_empty' => 'Arrastrar/añadir operaciones desde la lista de "Operaciones disponibles"',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Nombre - Alfabético',
+ 'sort_rule_op_name_numeric' => 'Nombre - Numérico',
+ 'sort_rule_op_created_date' => 'Fecha de creación',
+ 'sort_rule_op_updated_date' => 'Fecha de actualización',
+ 'sort_rule_op_chapters_first' => 'Capítulos al inicio',
+ 'sort_rule_op_chapters_last' => 'Capítulos al final',
+ 'sorting_page_limits' => 'Límites de visualización por página',
+ 'sorting_page_limits_desc' => 'Establecer cuántos elementos a mostrar por página en varias listas dentro del sistema. Normalmente una cantidad más baja rendirá mejor, mientras que una cantidad más alta evita la necesidad de hacer clic a través de varias páginas. Se recomienda utilizar un múltiplo de 6.',
+
+ // Maintenance settings
+ 'maint' => 'Mantenimiento',
+ 'maint_image_cleanup' => 'Limpiar imágenes',
+ 'maint_image_cleanup_desc' => 'Analiza las páginas y sus revisiones para comprobar qué imágenes y dibujos están siendo utilizadas y cuales no son necesarias. Asegúrate de crear una copia completa de la base de datos y de las imágenes antes de lanzar esta opción.',
+ 'maint_delete_images_only_in_revisions' => 'Elimina también imágenes que sólo existen en antiguas revisiones de páginas',
+ 'maint_image_cleanup_run' => 'Lanzar limpieza',
+ 'maint_image_cleanup_warning' => 'Se han encontrado :count imágenes posiblemente no utilizadas . ¿Estás seguro de querer borrar estas imágenes?',
+ 'maint_image_cleanup_success' => '¡Se han encontrado y borrado :count imágenes posiblemente no utilizadas!',
+ 'maint_image_cleanup_nothing_found' => '¡No se han encontrado imágenes sin utilizar, no se han borrado imágenes!',
+ 'maint_send_test_email' => 'Enviar un correo electrónico de prueba',
+ 'maint_send_test_email_desc' => 'Esto envía un correo electrónico de prueba a la dirección de correo electrónico especificada en tu perfil.',
+ 'maint_send_test_email_run' => 'Enviar correo electrónico de prueba',
+ 'maint_send_test_email_success' => 'Correo electrónico enviado a :address',
+ 'maint_send_test_email_mail_subject' => 'Correo electrónico de prueba',
+ 'maint_send_test_email_mail_greeting' => '¡El envío de correos electrónicos parece funcionar!',
+ 'maint_send_test_email_mail_text' => '¡Enhorabuena! Al recibir esta notificación de correo electrónico, tu configuración de correo electrónico parece estar ajustada correctamente.',
+ 'maint_recycle_bin_desc' => 'Los estantes, libros, capítulos y páginas eliminados se envían a la papelera de reciclaje para que puedan ser restauradas o eliminadas permanentemente. Los elementos más antiguos en la papelera de reciclaje pueden ser eliminados automáticamente después de un tiempo dependiendo de la configuración del sistema.',
+ 'maint_recycle_bin_open' => 'Abrir papelera de reciclaje',
+ 'maint_regen_references' => 'Regenerar referencias',
+ 'maint_regen_references_desc' => 'Esta acción reconstruirá el índice de referencia de elementos cruzados dentro de la base de datos. Normalmente se gestiona automáticamente, pero esta acción puede ser útil para indexar el contenido antiguo o añadido mediante métodos no oficiales.',
+ 'maint_regen_references_success' => '¡El índice de referencias ha sido regenerado!',
+ 'maint_timeout_command_note' => 'Nota: Esta acción puede tardar en ejecutarse, lo que puede llevar a problemas de tiempo de espera en algunos entornos web. Como alternativa, esta acción se puede realizar desde una terminal.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Papelera de reciclaje',
+ 'recycle_bin_desc' => 'Aquí puede restaurar elementos que hayan sido eliminados o elegir eliminarlos permanentemente del sistema. Esta lista no está filtrada a diferencia de las listas de actividad similares en el sistema donde se aplican los filtros de permisos.',
+ 'recycle_bin_deleted_item' => 'Elemento eliminado',
+ 'recycle_bin_deleted_parent' => 'Superior',
+ 'recycle_bin_deleted_by' => 'Eliminado por',
+ 'recycle_bin_deleted_at' => 'Fecha de eliminación',
+ 'recycle_bin_permanently_delete' => 'Eliminar permanentemente',
+ 'recycle_bin_restore' => 'Restaurar',
+ 'recycle_bin_contents_empty' => 'La papelera de reciclaje está vacía',
+ 'recycle_bin_empty' => 'Vaciar papelera de reciclaje',
+ 'recycle_bin_empty_confirm' => 'Esto destruirá permanentemente todos los elementos de la papelera de reciclaje, incluyendo el contenido existente en cada elemento. ¿Está seguro de que desea vaciar la papelera de reciclaje?',
+ 'recycle_bin_destroy_confirm' => 'Esta acción eliminará permanentemente este elemento del sistema, junto con los elementos secundarios listados a continuación, y no podrá restaurar este contenido de nuevo. ¿Está seguro de que desea eliminar permanentemente este elemento?',
+ 'recycle_bin_destroy_list' => 'Elementos a eliminar',
+ 'recycle_bin_restore_list' => 'Elementos a restaurar',
+ 'recycle_bin_restore_confirm' => 'Esta acción restaurará el elemento eliminado, incluyendo cualquier elemento secundario, a su ubicación original. Si la ubicación original ha sido eliminada, y ahora está en la papelera de reciclaje, el elemento padre también tendrá que ser restaurado.',
+ 'recycle_bin_restore_deleted_parent' => 'El padre de este elemento también ha sido eliminado. Estos permanecerán eliminados hasta que el padre también sea restaurado.',
+ 'recycle_bin_restore_parent' => 'Restaurar superior',
+ 'recycle_bin_destroy_notification' => 'Eliminados :count artículos de la papelera de reciclaje.',
+ 'recycle_bin_restore_notification' => 'Restaurados :count artículos desde la papelera de reciclaje.',
+
+ // Audit Log
+ 'audit' => 'Registro de auditoría',
+ 'audit_desc' => 'Este registro de auditoría muestra una lista de actividades registradas en el sistema. Esta lista no está filtrada a diferencia de las listas de actividad similares en el sistema donde se aplican los filtros de permisos.',
+ 'audit_event_filter' => 'Filtro de eventos',
+ 'audit_event_filter_no_filter' => 'Sin filtro',
+ 'audit_deleted_item' => 'Elemento eliminado',
+ 'audit_deleted_item_name' => 'Nombre: :name',
+ 'audit_table_user' => 'Usuario',
+ 'audit_table_event' => 'Evento',
+ 'audit_table_related' => 'Elemento o detalle relacionados',
+ 'audit_table_ip' => 'Dirección IP',
+ 'audit_table_date' => 'Fecha de la actividad',
+ 'audit_date_from' => 'Rango de fecha desde',
+ 'audit_date_to' => 'Rango de fecha hasta',
+
+ // Role Settings
+ 'roles' => 'Roles',
+ 'role_user_roles' => 'Roles de usuario',
+ 'roles_index_desc' => 'Los roles se utilizan para agrupar usuarios y proporcionar permisos del sistema a sus miembros. Cuando un usuario es miembro de múltiples roles los privilegios otorgados se acumularán y el usuario heredará todas las habilidades.',
+ 'roles_x_users_assigned' => ':count usuario asignado|:count usuarios asignados',
+ 'roles_x_permissions_provided' => ':count permiso |:count permisos',
+ 'roles_assigned_users' => 'Usuarios asignados',
+ 'roles_permissions_provided' => 'Permisos proporcionados',
+ 'role_create' => 'Crear nuevo rol',
+ 'role_delete' => 'Borrar rol',
+ 'role_delete_confirm' => 'Se borrará el rol con nombre \':roleName\'.',
+ 'role_delete_users_assigned' => 'Este rol tiene :userCount usuarios asignados. Si quisiera migrar los usuarios de este rol, seleccione un nuevo rol a continuación.',
+ 'role_delete_no_migration' => "No migrar usuarios",
+ 'role_delete_sure' => 'Está seguro que desea borrar este rol?',
+ 'role_edit' => 'Editar rol',
+ 'role_details' => 'Detalles de rol',
+ 'role_name' => 'Nombre de rol',
+ 'role_desc' => 'Descripción corta de rol',
+ 'role_mfa_enforced' => 'Requiere autenticación en dos pasos',
+ 'role_external_auth_id' => 'ID externo de autenticación',
+ 'role_system' => 'Permisos de sistema',
+ 'role_manage_users' => 'Gestionar usuarios',
+ 'role_manage_roles' => 'Gestionar roles y permisos de roles',
+ 'role_manage_entity_permissions' => 'Gestionar todos los permisos de libros, capítulos y páginas',
+ 'role_manage_own_entity_permissions' => 'Gestionar permisos en libros, capítulos y páginas propias',
+ 'role_manage_page_templates' => 'Administrar plantillas',
+ 'role_access_api' => 'API de sistema de acceso',
+ 'role_manage_settings' => 'Gestionar ajustes de la aplicación',
+ 'role_export_content' => 'Exportar contenido',
+ 'role_import_content' => 'Importar contenido',
+ 'role_editor_change' => 'Cambiar editor de página',
+ 'role_notifications' => 'Recibir y gestionar notificaciones',
+ 'role_permission_note_users_and_roles' => 'Estos permisos proporcionarán también visibilidad y búsqueda de usuarios y roles en el sistema.',
+ 'role_asset' => 'Permisos de contenido',
+ 'roles_system_warning' => 'Tenga en cuenta que el acceso a cualquiera de los tres permisos anteriores puede permitir a un usuario alterar sus propios privilegios o los privilegios de otros en el sistema. Sólo asignar roles con estos permisos a usuarios de confianza.',
+ 'role_asset_desc' => 'Estos permisos controlan el acceso por defecto a los contenidos del sistema. Los permisos de Libros, Capítulos y Páginas sobreescribiran estos permisos.',
+ 'role_asset_admins' => 'A los administradores se les asigna automáticamente permisos para acceder a todo el contenido pero estas opciones podrían mostrar u ocultar opciones de la interfaz.',
+ 'role_asset_image_view_note' => 'Esto se refiere a la visibilidad dentro del gestor de imágenes. El acceso a los archivos de imagen subidos dependerá de la opción de almacenamiento de imágenes del sistema.',
+ 'role_asset_users_note' => 'Estos permisos proporcionarán también visibilidad y búsqueda de usuarios en el sistema.',
+ 'role_all' => 'Todo',
+ 'role_own' => 'Propio',
+ 'role_controlled_by_asset' => 'Controlado por el contenido al que ha sido subido',
+ 'role_save' => 'Guardar rol',
+ 'role_users' => 'Usuarios en este rol',
+ 'role_users_none' => 'No hay usuarios asignados a este rol',
+
+ // Users
+ 'users' => 'Usuarios',
+ 'users_index_desc' => 'Crear y administrar cuentas de usuario individuales dentro del sistema. Las cuentas de usuario se utilizan para el inicio de sesión y atribución de contenido y actividad. Los permisos de acceso se basan principalmente en roles, pero la propiedad del contenido del usuario, entre otros factores, también puede afectar a los permisos y el acceso.',
+ 'user_profile' => 'Perfil de usuario',
+ 'users_add_new' => 'Agregar nuevo usuario',
+ 'users_search' => 'Buscar usuarios',
+ 'users_latest_activity' => 'Actividad reciente',
+ 'users_details' => 'Detalles de usuario',
+ 'users_details_desc' => 'Ajusta un nombre público y email para este usuario. El email será empleado para acceder a la aplicación.',
+ 'users_details_desc_no_email' => 'Ajusta un nombre público para este usuario para que pueda ser reconocido por otros.',
+ 'users_role' => 'Roles de usuario',
+ 'users_role_desc' => 'Selecciona los roles a los que será asignado este usuario. Si se asignan varios roles los permisos se acumularán y recibirá todas las habilidades de los roles asignados.',
+ 'users_password' => 'Contraseña de usuario',
+ 'users_password_desc' => 'Establezca una contraseña para iniciar sesión en la aplicación. Debe tener al menos 8 caracteres.',
+ 'users_send_invite_text' => 'Puede enviar una invitación a este usuario por correo electrónico que le permitirá ajustar su propia contraseña, o puede usted ajustar su contraseña.',
+ 'users_send_invite_option' => 'Enviar un correo electrónico de invitación',
+ 'users_external_auth_id' => 'ID externo de autenticación',
+ 'users_external_auth_id_desc' => 'Cuando un sistema de autenticación externa está en uso (como SAML2, OIDC o LDAP) este es el ID que vincula este usuario de BookStack a la cuenta del sistema de autenticación. Puede ignorar este campo si utiliza la autenticación por defecto basada en correo electrónico.',
+ 'users_password_warning' => 'Solo debe rellenar este campo si desea cambiar la contraseña pora este usuario.',
+ 'users_system_public' => 'Este usuario representa cualquier usuario invitado que visita la aplicación. No puede utilizarse para acceder pero es asignado automáticamente.',
+ 'users_delete' => 'Borrar usuario',
+ 'users_delete_named' => 'Borrar usuario :userName',
+ 'users_delete_warning' => 'Se borrará completamente el usuario con el nombre \':userName\' del sistema.',
+ 'users_delete_confirm' => '¿Está seguro que desea borrar este usuario?',
+ 'users_migrate_ownership' => 'Cambiar propietario',
+ 'users_migrate_ownership_desc' => 'Seleccione un usuario aquí si desea que otro usuario se convierta en el dueño de todos los elementos que actualmente son propiedad de este usuario.',
+ 'users_none_selected' => 'Usuario no seleccionado',
+ 'users_edit' => 'Editar usuario',
+ 'users_edit_profile' => 'Editar perfil',
+ 'users_avatar' => 'Avatar del usuario',
+ 'users_avatar_desc' => 'Elige una imagen para representar a este usuario. Debe ser aproximadamente de 256px por lado.',
+ 'users_preferred_language' => 'Idioma preferido',
+ 'users_preferred_language_desc' => 'Esta opción cambiará el idioma de la interfaz de usuario en la aplicación. No afectará al contenido creado por los usuarios.',
+ 'users_social_accounts' => 'Cuentas sociales',
+ 'users_social_accounts_desc' => 'Ver el estado de las cuentas sociales conectadas para este usuario. Las cuentas sociales se pueden utilizar adicionalmente al sistema de autenticación primaria para el acceso al sistema.',
+ 'users_social_accounts_info' => 'Aquí puede conectar sus otras cuentas para un acceso rápido y fácil a la aplicación. Desconectando una cuenta aquí no revoca accesos ya autorizados. Revoque el acceso desde los ajustes de perfil en la cuenta social conectada.',
+ 'users_social_connect' => 'Conectar cuenta',
+ 'users_social_disconnect' => 'Desconectar cuenta',
+ 'users_social_status_connected' => 'Conectado',
+ 'users_social_status_disconnected' => 'Desconectado',
+ 'users_social_connected' => 'La cuenta :socialAccount ha sido añadida éxitosamente a su perfil.',
+ 'users_social_disconnected' => 'La cuenta :socialAccount ha sido desconectada éxitosamente de su perfil.',
+ 'users_api_tokens' => 'Tokens API',
+ 'users_api_tokens_desc' => 'Crear y administrar los tokens de acceso utilizados para autenticar con la REST API de BookStack. Los permisos para el API se administran a través del usuario al que pertenece el token.',
+ 'users_api_tokens_none' => 'No se han creado tokens API para este usuario',
+ 'users_api_tokens_create' => 'Crear token',
+ 'users_api_tokens_expires' => 'Expira',
+ 'users_api_tokens_docs' => 'Documentación API',
+ 'users_mfa' => 'Autenticación en dos pasos',
+ 'users_mfa_desc' => 'La autenticación en dos pasos añade una capa de seguridad adicional a tu cuenta.',
+ 'users_mfa_x_methods' => ':count método configurado|:count métodos configurados',
+ 'users_mfa_configure' => 'Configurar métodos',
+
+ // API Tokens
+ 'user_api_token_create' => 'Crear token API',
+ 'user_api_token_name' => 'Nombre',
+ 'user_api_token_name_desc' => 'Dale a tu token un nombre legible como un recordatorio futuro de su propósito.',
+ 'user_api_token_expiry' => 'Fecha de expiración',
+ 'user_api_token_expiry_desc' => 'Establece una fecha en la que este token expira. Después de esta fecha, las solicitudes realizadas usando este token ya no funcionarán. Dejar este campo en blanco fijará un vencimiento de 100 años en el futuro.',
+ 'user_api_token_create_secret_message' => 'Inmediatamente después de crear este token se generarán y mostrarán sus correspondientes "Token ID" y "Token Secret". El "Token Secret" sólo se mostrará una vez, así que asegúrese de copiar el valor a un lugar seguro antes de proceder.',
+ 'user_api_token' => 'Token API',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'Este es un identificador no editable generado por el sistema y único para este token que necesitará ser proporcionado en solicitudes de API.',
+ 'user_api_token_secret' => 'Token secret',
+ 'user_api_token_secret_desc' => 'Esta es una clave no editable generada por el sistema que necesitará ser proporcionada en solicitudes de API. Solo se monstraré esta vez así que guarde su valor en un lugar seguro.',
+ 'user_api_token_created' => 'Token creado :timeAgo',
+ 'user_api_token_updated' => 'Token actualizado :timeAgo',
+ 'user_api_token_delete' => 'Borrar token',
+ 'user_api_token_delete_warning' => 'Esto eliminará completamente este token API con el nombre \':tokenName\' del sistema.',
+ 'user_api_token_delete_confirm' => '¿Está seguro de que desea borrar este API token?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Los Webhooks son una forma de enviar datos a URLs externas cuando ciertas acciones y eventos ocurren dentro del sistema, lo que permite la integración basada en eventos con plataformas externas como mensajería o sistemas de notificación.',
+ 'webhooks_x_trigger_events' => ':count disparador de eventos|:count disparadores de eventos',
+ 'webhooks_create' => 'Crear webhook',
+ 'webhooks_none_created' => 'No hay webhooks creados.',
+ 'webhooks_edit' => 'Editar webhook',
+ 'webhooks_save' => 'Guardar webhook',
+ 'webhooks_details' => 'Detalles del webhook',
+ 'webhooks_details_desc' => 'Proporcione un nombre y un punto final POST como destino para los datos del webhook que se enviarán.',
+ 'webhooks_events' => 'Eventos del webhook',
+ 'webhooks_events_desc' => 'Seleccione todos los eventos que deberían activar este webhook.',
+ 'webhooks_events_warning' => 'Tenga en cuenta que estos eventos se activarán para todos los eventos seleccionados, incluso si se aplican permisos personalizados. Asegúrese de que el uso de este webhook no exponga contenido confidencial.',
+ 'webhooks_events_all' => 'Todos los eventos del sistema',
+ 'webhooks_name' => 'Nombre del webhook',
+ 'webhooks_timeout' => 'Tiempo de espera de webhook (segundos)',
+ 'webhooks_endpoint' => 'Punto final del webhook',
+ 'webhooks_active' => 'Webhook activo',
+ 'webhook_events_table_header' => 'Eventos',
+ 'webhooks_delete' => 'Eliminar webhook',
+ 'webhooks_delete_warning' => 'Esto eliminará completamente este webhook, con el nombre \':webhookName\', del sistema.',
+ 'webhooks_delete_confirm' => '¿Seguro que quieres eliminar este webhook?',
+ 'webhooks_format_example' => 'Ejemplo de formato de webhook',
+ 'webhooks_format_example_desc' => 'Los datos del Webhook se envían como una solicitud POST al punto final configurado como JSON siguiendo el formato mostrado a continuación. Las propiedades "related_item" y "url" son opcionales y dependerán del tipo de evento activado.',
+ 'webhooks_status' => 'Estado del webhook',
+ 'webhooks_last_called' => 'Última ejecución:',
+ 'webhooks_last_errored' => 'Último error:',
+ 'webhooks_last_error_message' => 'Último mensaje de error:',
+
+ // Licensing
+ 'licenses' => 'Licencias',
+ 'licenses_desc' => 'Esta página detalla información sobre la licencia de BookStack además de los proyectos y bibliotecas que se utilizan en BookStack. Muchos proyectos enumerados aquí pueden ser utilizados solo en un contexto de desarrollo.',
+ 'licenses_bookstack' => 'Licencia BookStack',
+ 'licenses_php' => 'Licencias de la biblioteca PHP',
+ 'licenses_js' => 'Licencias de la biblioteca JavaScript',
+ 'licenses_other' => 'Otras Licencias',
+ 'license_details' => 'Datos de la licencia',
+
+ //! If editing translations files directly please ignore this in all
+ //! languages apart from en. Content will be auto-copied from en.
+ //!////////////////////////////////
+ 'language_select' => [
+ 'en' => 'Inglés',
+ 'ar' => 'Árabe',
+ 'bg' => 'Búlgaro',
+ 'bs' => 'Bosnio',
+ 'ca' => 'Català',
+ 'cs' => 'Checo',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Danés',
+ 'de' => 'Alemán (informal)',
+ 'de_informal' => 'Alemán (formal)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Francés',
+ 'he' => 'עברית',
+ 'hr' => 'Croata',
+ 'hu' => 'Húngaro',
+ 'id' => 'Indonesio',
+ 'it' => 'Italiano',
+ 'ja' => 'Japonés',
+ 'ko' => 'Coreano',
+ 'lt' => 'Lituano',
+ 'lv' => 'Letón',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Holanda',
+ 'pl' => 'Polaco',
+ 'pt' => 'Portugués',
+ 'pt_BR' => 'Portugués brasileño',
+ 'ro' => 'Română',
+ 'ru' => 'Ruso',
+ 'sk' => 'Eslovaco',
+ 'sl' => 'Esloveno',
+ 'sv' => 'Sueco',
+ 'tr' => 'Turco',
+ 'uk' => 'Ucraniano',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Vietnamita',
+ 'zh_CN' => 'Chino mandarín',
+ 'zh_TW' => 'Chino tradicional',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/es/validation.php b/lang/es/validation.php
new file mode 100644
index 00000000000..f0042272a24
--- /dev/null
+++ b/lang/es/validation.php
@@ -0,0 +1,123 @@
+ 'El :attribute debe ser aceptado.',
+ 'active_url' => 'El :attribute no es una URL válida.',
+ 'after' => 'El :attribute debe ser una fecha posterior :date.',
+ 'alpha' => 'El :attribute solo puede contener letras.',
+ 'alpha_dash' => 'El :attribute solo puede contener letras, números y guiones.',
+ 'alpha_num' => 'El :attribute solo puede contener letras y números.',
+ 'array' => 'El :attribute debe de ser un array.',
+ 'backup_codes' => 'El código suministrado no es válido o ya ha sido utilizado.',
+ 'before' => 'El :attribute debe ser una fecha anterior a :date.',
+ 'between' => [
+ 'numeric' => 'El :attribute debe estar entre :min y :max.',
+ 'file' => 'El :attribute debe estar entre :min y :max kilobytes.',
+ 'string' => 'El :attribute debe estar entre :min y :max caracteres.',
+ 'array' => 'El :attribute debe estar entre :min y :max items.',
+ ],
+ 'boolean' => 'El campo :attribute debe ser true o false.',
+ 'confirmed' => 'La confirmación de :attribute no concuerda.',
+ 'date' => 'El :attribute no es una fecha válida.',
+ 'date_format' => 'El :attribute no coincide con el formato :format.',
+ 'different' => ':attribute y :other deben ser diferentes.',
+ 'digits' => ':attribute debe ser de :digits dígitos.',
+ 'digits_between' => ':attribute debe ser un valor entre :min y :max dígios.',
+ 'email' => ':attribute debe ser un correo electrónico válido.',
+ 'ends_with' => 'El :attribute debe terminar con uno de los siguientes: :values',
+ 'file' => 'El :attribute debe ser proporcionado como un archivo válido.',
+ 'filled' => 'El campo :attribute es requerido.',
+ 'gt' => [
+ 'numeric' => 'El :attribute debe ser mayor que :value.',
+ 'file' => 'El :attribute debe ser mayor que :value kilobytes.',
+ 'string' => 'El :attribute debe ser mayor que :value caracteres.',
+ 'array' => 'El :attribute debe tener más de :value elementos.',
+ ],
+ 'gte' => [
+ 'numeric' => 'El :attribute debe ser mayor o igual que :value.',
+ 'file' => 'El :attribute debe ser mayor o igual que :value kilobytes.',
+ 'string' => 'El :attribute debe ser mayor o igual que :value caracteres.',
+ 'array' => 'El :attribute debe tener :value o más elementos.',
+ ],
+ 'exists' => 'El :attribute seleccionado es inválido.',
+ 'image' => 'El :attribute debe ser una imagen.',
+ 'image_extension' => 'El :attribute debe tener una extensión de imagen válida y soportada.',
+ 'in' => 'El selected :attribute es inválio.',
+ 'integer' => 'El :attribute debe ser un entero.',
+ 'ip' => 'El :attribute debe ser una dirección IP válida.',
+ 'ipv4' => 'El :attribute debe ser una dirección IPv4 válida.',
+ 'ipv6' => 'El :attribute debe ser una dirección IPv6 válida.',
+ 'json' => 'El :attribute debe ser una cadena JSON válida.',
+ 'lt' => [
+ 'numeric' => 'El :attribute debe ser menor que :value.',
+ 'file' => 'El :attribute debe ser menor que :value kilobytes.',
+ 'string' => 'El :attribute debe ser menor que :value caracteres.',
+ 'array' => 'El :attribute debe tener menos de :value elementos.',
+ ],
+ 'lte' => [
+ 'numeric' => 'El :attribute debe ser menor o igual que :value.',
+ 'file' => 'El :attribute debe ser menor o igual que :value kilobytes.',
+ 'string' => 'El :attribute debe ser menor o igual que :value caracteres.',
+ 'array' => 'El :attribute no debe tener más de :value elementos.',
+ ],
+ 'max' => [
+ 'numeric' => 'El :attribute no puede ser mayor que :max.',
+ 'file' => 'El :attribute no puede ser mayor que :max kilobytes.',
+ 'string' => 'El :attribute no puede ser mayor que :max carácteres.',
+ 'array' => 'El :attribute no puede contener más de :max items.',
+ ],
+ 'mimes' => 'El :attribute debe ser un fichero de tipo: :values.',
+ 'min' => [
+ 'numeric' => 'El :attribute debe ser al menos de :min.',
+ 'file' => 'El :attribute debe ser al menos :min kilobytes.',
+ 'string' => 'El :attribute debe ser al menos :min caracteres.',
+ 'array' => 'El :attribute debe tener como mínimo :min items.',
+ ],
+ 'not_in' => 'El :attribute seleccionado es inválio.',
+ 'not_regex' => 'El formato de :attribute es inválido.',
+ 'numeric' => 'El :attribute debe ser numérico.',
+ 'regex' => 'El formato de :attribute es inválido',
+ 'required' => 'El :attribute es requerido.',
+ 'required_if' => 'El :attribute es requerido cuando :other vale :value.',
+ 'required_with' => 'El campo :attribute es requerido cuando se encuentre entre los valores :values.',
+ 'required_with_all' => 'El campo :attribute es requerido cuando los valores sean :values.',
+ 'required_without' => 'El :attribute es requerido cuando no se encuentre entre los valores :values.',
+ 'required_without_all' => 'El :attribute es requerido cuando ninguno de los valores :values están presentes.',
+ 'same' => 'El :attribute y :other deben coincidir.',
+ 'safe_url' => 'El enlace proporcionado puede no ser seguro.',
+ 'size' => [
+ 'numeric' => ':attribute debe ser :size.',
+ 'file' => ':attribute debe ser :size kilobytes.',
+ 'string' => ':attribute debe ser :size caracteres.',
+ 'array' => ':attribute debe contener :size items.',
+ ],
+ 'string' => 'El atributo :attribute debe ser una cadena de texto.',
+ 'timezone' => 'El atributo :attribute debe ser una zona válida.',
+ 'totp' => 'El código suministrado no es válido o ya ha expirado.',
+ 'unique' => 'El atributo :attribute ya ha sido tomado.',
+ 'url' => 'El atributo :attribute tiene un formato inválido.',
+ 'uploaded' => 'El archivo no ha podido subirse. Es posible que el servidor no acepte archivos de este tamaño.',
+
+ 'zip_file' => 'El :attribute necesita hacer referencia a un archivo dentro del ZIP.',
+ 'zip_file_size' => 'El archivo :attribute no debe exceder :size MB.',
+ 'zip_file_mime' => 'El :attribute necesita hacer referencia a un archivo de tipo :validTypes, encontrado :foundType.',
+ 'zip_model_expected' => 'Se esperaba un objeto de datos, pero se encontró ":type".',
+ 'zip_unique' => 'El :attribute debe ser único para el tipo de objeto dentro del ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Requerida confirmación de contraseña',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/es_AR/activities.php b/lang/es_AR/activities.php
new file mode 100644
index 00000000000..e01fe4e643e
--- /dev/null
+++ b/lang/es_AR/activities.php
@@ -0,0 +1,140 @@
+ 'creó la página',
+ 'page_create_notification' => 'Página creada correctamente',
+ 'page_update' => 'página actualizada',
+ 'page_update_notification' => 'Página actualizada correctamente',
+ 'page_delete' => 'borró la página',
+ 'page_delete_notification' => 'Página eliminada correctamente',
+ 'page_restore' => 'página restaurada',
+ 'page_restore_notification' => 'Página restaurada correctamente',
+ 'page_move' => 'página movida',
+ 'page_move_notification' => 'Página movida correctamente',
+
+ // Chapters
+ 'chapter_create' => 'capítulo creado',
+ 'chapter_create_notification' => 'Capítulo creado correctamente',
+ 'chapter_update' => 'capítulo actualizado',
+ 'chapter_update_notification' => 'Capítulo actualizado correctamente',
+ 'chapter_delete' => 'capítulo borrado',
+ 'chapter_delete_notification' => 'Capítulo eliminado correctamente',
+ 'chapter_move' => 'capítulo movido',
+ 'chapter_move_notification' => 'Capítulo movido correctamente',
+
+ // Books
+ 'book_create' => 'libro creado',
+ 'book_create_notification' => 'Libro creado correctamente',
+ 'book_create_from_chapter' => 'capítulo convertido en libro',
+ 'book_create_from_chapter_notification' => 'Capítulo convertido en libro con éxito',
+ 'book_update' => 'libro actualizado',
+ 'book_update_notification' => 'Libro actualizado correctamente',
+ 'book_delete' => 'libro borrado',
+ 'book_delete_notification' => 'Libro eliminado correctamente',
+ 'book_sort' => 'libro ordenado',
+ 'book_sort_notification' => 'Libro reordenado correctamente',
+
+ // Bookshelves
+ 'bookshelf_create' => 'estante creado',
+ 'bookshelf_create_notification' => 'Estante creado correctamente',
+ 'bookshelf_create_from_book' => 'libro convertido en estante',
+ 'bookshelf_create_from_book_notification' => 'Libro convertido en estante con éxito',
+ 'bookshelf_update' => 'estante actualizado',
+ 'bookshelf_update_notification' => 'Estante actualizado correctamente',
+ 'bookshelf_delete' => 'estante eliminado',
+ 'bookshelf_delete_notification' => 'Estante eliminado correctamente',
+
+ // Revisions
+ 'revision_restore' => 'revisión restaurada',
+ 'revision_delete' => 'revisión eliminada',
+ 'revision_delete_notification' => 'Revisión eliminada correctamente',
+
+ // Favourites
+ 'favourite_add_notification' => '".name" se añadió a sus favoritos',
+ 'favourite_remove_notification' => '".name" se eliminó de sus favoritos',
+
+ // Watching
+ 'watch_update_level_notification' => 'Preferencias de visualización actualizadas con éxito',
+
+ // Auth
+ 'auth_login' => 'sesión iniciada',
+ 'auth_register' => 'registrado como usuario nuevo',
+ 'auth_password_reset_request' => 'cambio de contraseña de usuario solicitado',
+ 'auth_password_reset_update' => 'restablecer contraseña de usuario',
+ 'mfa_setup_method' => 'método MFA configurado',
+ 'mfa_setup_method_notification' => 'Método de autenticación de múltiples factores configurado satisfactoriamente',
+ 'mfa_remove_method' => 'método MFA eliminado',
+ 'mfa_remove_method_notification' => 'Método de autenticación de múltiples factores eliminado satisfactoriamente',
+
+ // Settings
+ 'settings_update' => 'ajustes actualizados',
+ 'settings_update_notification' => 'Configuraciones actualizadas correctamente',
+ 'maintenance_action_run' => 'ejecutar acción de mantenimiento',
+
+ // Webhooks
+ 'webhook_create' => 'webhook creado',
+ 'webhook_create_notification' => 'Webhook creado correctamente',
+ 'webhook_update' => 'webhook actualizado',
+ 'webhook_update_notification' => 'Webhook actualizado correctamente',
+ 'webhook_delete' => 'webhook eliminado',
+ 'webhook_delete_notification' => 'Webhook eliminado correctamente',
+
+ // Imports
+ 'import_create' => 'importación creada',
+ 'import_create_notification' => 'Importación cargada correctamente',
+ 'import_run' => 'importación actualizada',
+ 'import_run_notification' => 'Contenido importado correctamente',
+ 'import_delete' => 'importación borrada',
+ 'import_delete_notification' => 'Importación borrada correctamente',
+
+ // Users
+ 'user_create' => 'usuario creado',
+ 'user_create_notification' => 'Usuario creado correctamente',
+ 'user_update' => 'usuario actualizado',
+ 'user_update_notification' => 'Usuario actualizado con éxito',
+ 'user_delete' => 'usuario eliminado',
+ 'user_delete_notification' => 'El usuario fue eliminado correctamente',
+
+ // API Tokens
+ 'api_token_create' => 'token de API creado',
+ 'api_token_create_notification' => 'Token de API creado correctamente',
+ 'api_token_update' => 'token de API actualizado',
+ 'api_token_update_notification' => 'Token de API actualizado correctamente',
+ 'api_token_delete' => 'API token eliminado',
+ 'api_token_delete_notification' => 'Token de API eliminado correctamente',
+
+ // Roles
+ 'role_create' => 'rol creado',
+ 'role_create_notification' => 'Rol creado correctamente',
+ 'role_update' => 'rol actualizado',
+ 'role_update_notification' => 'Rol actualizado correctamente',
+ 'role_delete' => 'rol eliminado',
+ 'role_delete_notification' => 'Rol eliminado correctamente',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'papelera de reciclaje vaciada',
+ 'recycle_bin_restore' => 'restaurado desde la papelera de reciclaje',
+ 'recycle_bin_destroy' => 'eliminado de la papelera de reciclaje',
+
+ // Comments
+ 'commented_on' => 'comentado',
+ 'comment_create' => 'comentario agregado',
+ 'comment_update' => 'comentario actualizado',
+ 'comment_delete' => 'comentario eliminado',
+
+ // Sort Rules
+ 'sort_rule_create' => 'regla de ordenación creada',
+ 'sort_rule_create_notification' => 'Regla de ordenación creada correctamente',
+ 'sort_rule_update' => 'regla de ordenación actualizada',
+ 'sort_rule_update_notification' => 'Regla de ordenación actualizada correctamente',
+ 'sort_rule_delete' => 'regla de ordenación eliminada',
+ 'sort_rule_delete_notification' => 'Regla de ordenación eliminada correctamente',
+
+ // Other
+ 'permissions_update' => 'permisos actualizados',
+];
diff --git a/lang/es_AR/auth.php b/lang/es_AR/auth.php
new file mode 100644
index 00000000000..7687f709e92
--- /dev/null
+++ b/lang/es_AR/auth.php
@@ -0,0 +1,117 @@
+ 'Estas credenciales no concuerdan con nuestros registros.',
+ 'throttle' => 'Demasiados intentos fallidos de inicio de sesión. Por favor intente nuevamente en :seconds segundos.',
+
+ // Login & Register
+ 'sign_up' => 'Registrarse',
+ 'log_in' => 'Iniciar sesión',
+ 'log_in_with' => 'Acceder con :socialDriver',
+ 'sign_up_with' => 'Registrarse con :socialDriver',
+ 'logout' => 'Salir',
+
+ 'name' => 'Nombre',
+ 'username' => 'Nombre de usuario',
+ 'email' => 'Correo electrónico',
+ 'password' => 'Contraseña',
+ 'password_confirm' => 'Confirmar contraseña',
+ 'password_hint' => 'Debe contener al menos 8 caracteres',
+ 'forgot_password' => '¿Olvidó la contraseña?',
+ 'remember_me' => 'Recordarme',
+ 'ldap_email_hint' => 'Por favor introduzca un correo electrónico para utilizar con esta cuenta.',
+ 'create_account' => 'Crear una cuenta',
+ 'already_have_account' => '¿Ya tiene una cuenta?',
+ 'dont_have_account' => '¿No tiene una cuenta?',
+ 'social_login' => 'Acceso con cuenta Social',
+ 'social_registration' => 'Registro con cuenta Social',
+ 'social_registration_text' => 'Registrar y entrar utilizando otro servicio.',
+
+ 'register_thanks' => '¡Gracias por registrarse!',
+ 'register_confirm' => 'Por favor verifique su correo electrónico y presione en el botón de confirmación enviado para acceder a :appName.',
+ 'registrations_disabled' => 'Los registros están deshabilitados actualmente',
+ 'registration_email_domain_invalid' => 'Este dominio de correo electrónico no tiene acceso a esta aplicación',
+ 'register_success' => '¡Gracias por registrarse! Ahora se encuentra registrado y ha accedido a la aplicación.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Intentando iniciar sesión',
+ 'auto_init_starting_desc' => 'Estamos contactando con su sistema de autenticación para comenzar el proceso de inicio de sesión. Si no hay progreso después de 5 segundos puede intentar hacer clic en el enlace de abajo.',
+ 'auto_init_start_link' => 'Continuar con la autenticación',
+
+ // Password Reset
+ 'reset_password' => 'Restablecer la contraseña',
+ 'reset_password_send_instructions' => 'Introduzca su correo electrónico a continuación y se le enviará un correo electrónico con un enlace para la restauración',
+ 'reset_password_send_button' => 'Enviar enlace de restauración',
+ 'reset_password_sent' => 'Si la dirección de correo electrónico :email existe en el sistema, se enviará un enlace para restablecer la contraseña.',
+ 'reset_password_success' => 'Su contraseña se restableció con éxito.',
+ 'email_reset_subject' => 'Restauración de la contraseña de para la aplicación :appName',
+ 'email_reset_text' => 'Ud. esta recibiendo este correo electrónico debido a que recibimos una solicitud de restauración de la contraseña de su cuenta.',
+ 'email_reset_not_requested' => 'Si ud. no solicitó un cambio de contraseña, no se requiere ninguna acción.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Confirme su correo electrónico en :appName',
+ 'email_confirm_greeting' => '¡Gracias por unirse a :appName!',
+ 'email_confirm_text' => 'Por favor confirme su dirección de correo electrónico presionando en el siguiente botón:',
+ 'email_confirm_action' => 'Confirmar correo electrónico',
+ 'email_confirm_send_error' => 'Se pidió confirmación de correo electrónico pero el sistema no pudo enviar el correo electrónico. Contacte al administrador para asegurarse que el correo electrónico está configurado correctamente.',
+ 'email_confirm_success' => '¡Su correo electrónico ha sido confirmado! Ahora debería poder iniciar sesión usando esta dirección de correo electrónico.',
+ 'email_confirm_resent' => 'Correo electrónico de confirmación reenviado, Por favor verifique su bandeja de entrada.',
+ 'email_confirm_thanks' => '¡Gracias por confirmar!',
+ 'email_confirm_thanks_desc' => 'Por favor, espere un momento mientras se gestiona su confirmación. Si no se lo redirige después de 3 segundos, pulse el enlace "Continuar" para seguir.',
+
+ 'email_not_confirmed' => 'Dirección de correo electrónico no confirmada',
+ 'email_not_confirmed_text' => 'Su cuenta de correo electrónico todavía no ha sido confirmada.',
+ 'email_not_confirmed_click_link' => 'Por favor verifique el correo electrónico con el enlace de confirmación que fue enviado luego de registrarse.',
+ 'email_not_confirmed_resend' => 'Si no puede encontrar el correo electrónico, puede solicitar el renvío del correo electrónico de confirmación rellenando el formulario a continuación.',
+ 'email_not_confirmed_resend_button' => 'Reenviar correo electrónico de confirmación',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Lo invitaron a unirse a :appName!',
+ 'user_invite_email_greeting' => 'Se creó una cuenta para usted en :appName.',
+ 'user_invite_email_text' => 'Presione el botón de abajo para establecer una contraseña y tener acceso access:',
+ 'user_invite_email_action' => 'Establecer la contraseña de la cuenta',
+ 'user_invite_page_welcome' => 'Bienvenido a :appName!',
+ 'user_invite_page_text' => 'Para finalizar la cuenta y tener acceso debe establcer una contraseña que utilizará para ingresar a :appName en visitas futuras.',
+ 'user_invite_page_confirm_button' => 'Confirmar Contraseña',
+ 'user_invite_success_login' => 'Contraseña guardada, ¡ahora debería ser capaz de iniciar sesión usando su contraseña establecida para acceder a :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Configurar autenticación de múltiples factores',
+ 'mfa_setup_desc' => 'Configure la autenticación de múltiples factores como una capa extra de seguridad para su cuenta de usuario.',
+ 'mfa_setup_configured' => 'Ya está configurado',
+ 'mfa_setup_reconfigure' => 'Reconfigurar',
+ 'mfa_setup_remove_confirmation' => '¿Está seguro que desea eliminar este método de autenticación de múltiples factores?',
+ 'mfa_setup_action' => 'Configuración',
+ 'mfa_backup_codes_usage_limit_warning' => 'Quedan menos de 5 códigos de respaldo, Por favor, genere y guarde un nuevo conjunto antes de que se quede sin códigos para evitar que se bloquee su cuenta.',
+ 'mfa_option_totp_title' => 'Aplicación móvil',
+ 'mfa_option_totp_desc' => 'Para utilizar la autenticación en dos pasos necesitará una aplicación móvil que soporte TOTP como Google Authenticator, Authy o Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Códigos de Respaldo',
+ 'mfa_option_backup_codes_desc' => 'Genera un conjunto de códigos de respaldo de un único uso que ingresará al iniciar sesión para verificar su identidad. Asegúrese de guardarlos en un lugar seguro.',
+ 'mfa_gen_confirm_and_enable' => 'Confirmar y Activar',
+ 'mfa_gen_backup_codes_title' => 'Configuración de Códigos de Respaldo',
+ 'mfa_gen_backup_codes_desc' => 'Guarde la siguiente lista de códigos en un lugar seguro. Al acceder al sistema podrá usar uno de los códigos como un segundo mecanismo de autenticación.',
+ 'mfa_gen_backup_codes_download' => 'Descargar Códigos',
+ 'mfa_gen_backup_codes_usage_warning' => 'Cada código puede utilizarse sólo una vez',
+ 'mfa_gen_totp_title' => 'Configuración de Aplicación móvil',
+ 'mfa_gen_totp_desc' => 'Para utilizar la autenticación en dos pasos necesitará una aplicación móvil que soporte TOTP como Google Authenticator, Authy o Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Escanea el código QR mostrado a continuación usando tu aplicación de autenticación preferida para empezar.',
+ 'mfa_gen_totp_verify_setup' => 'Verificar Configuración',
+ 'mfa_gen_totp_verify_setup_desc' => 'Verifica que todo está funcionando introduciendo un código, generado en tu aplicación de autenticación, en el campo de texto a continuación:',
+ 'mfa_gen_totp_provide_code_here' => 'Introduce aquí tu código generado por la aplicación',
+ 'mfa_verify_access' => 'Verificar Acceso',
+ 'mfa_verify_access_desc' => 'Su cuenta de usuario requiere que confirme su identidad a través de un nivel adicional de verificación antes de que se le conceda el acceso. Verifique su identidad usando uno de los métodos configurados para continuar.',
+ 'mfa_verify_no_methods' => 'No hay Métodos Configurados',
+ 'mfa_verify_no_methods_desc' => 'No se han encontrado métodos de autenticación de múltiples factores para su cuenta. Tendrá que configurar al menos un método antes de obtener acceso.',
+ 'mfa_verify_use_totp' => 'Verificar usando una aplicación móvil',
+ 'mfa_verify_use_backup_codes' => 'Verificar usando un código de respaldo',
+ 'mfa_verify_backup_code' => 'Código de Respaldo',
+ 'mfa_verify_backup_code_desc' => 'Introduzca uno de sus códigos de respaldo restantes a continuación:',
+ 'mfa_verify_backup_code_enter_here' => 'Introduzca el código de respaldo aquí',
+ 'mfa_verify_totp_desc' => 'A continuación, introduzca el código generado con su aplicación móvil:',
+ 'mfa_setup_login_notification' => 'Método de dos factores configurado. Por favor, inicie sesión nuevamente utilizando el método configurado.',
+];
diff --git a/lang/es_AR/common.php b/lang/es_AR/common.php
new file mode 100644
index 00000000000..e30adbf69be
--- /dev/null
+++ b/lang/es_AR/common.php
@@ -0,0 +1,115 @@
+ 'Cancelar',
+ 'close' => 'Cerrar',
+ 'confirm' => 'Confirmar',
+ 'back' => 'Atrás',
+ 'save' => 'Guardar',
+ 'continue' => 'Continuar',
+ 'select' => 'Seleccionar',
+ 'toggle_all' => 'Mostrar/Ocultar Todo',
+ 'more' => 'Más',
+
+ // Form Labels
+ 'name' => 'Nombre',
+ 'description' => 'Descripción',
+ 'role' => 'Rol',
+ 'cover_image' => 'Imagen de cubierta',
+ 'cover_image_description' => 'Esta imagen debe ser de 440x250px aproximadamente, aunque será escalada y recortada para adaptarse a la interfaz de usuario en los diferentes escenarios según sea necesario, por lo que las dimensiones en pantalla serán diferentes.',
+
+ // Actions
+ 'actions' => 'Acciones',
+ 'view' => 'Ver',
+ 'view_all' => 'Ver todo',
+ 'new' => 'Nuevo',
+ 'create' => 'Crear',
+ 'update' => 'Actualizar',
+ 'edit' => 'Editar',
+ 'archive' => 'Archivar',
+ 'unarchive' => 'Desarchivar',
+ 'sort' => 'Ordenar',
+ 'move' => 'Mover',
+ 'copy' => 'Copiar',
+ 'reply' => 'Responder',
+ 'delete' => 'Borrar',
+ 'delete_confirm' => 'Confirmar eliminación',
+ 'search' => 'Buscar',
+ 'search_clear' => 'Limpiar búsqueda',
+ 'reset' => 'Restablecer',
+ 'remove' => 'Remover',
+ 'add' => 'Agregar',
+ 'configure' => 'Configurar',
+ 'manage' => 'Administra',
+ 'fullscreen' => 'Pantalla completa',
+ 'favourite' => 'Favoritos',
+ 'unfavourite' => 'Eliminar de favoritos',
+ 'next' => 'Siguiente',
+ 'previous' => 'Anterior',
+ 'filter_active' => 'Filtro activo:',
+ 'filter_clear' => 'Limpiar filtro',
+ 'download' => 'Descargar',
+ 'open_in_tab' => 'Abrir en una pestaña',
+ 'open' => 'Abrir',
+
+ // Sort Options
+ 'sort_options' => 'Opciones de Orden',
+ 'sort_direction_toggle' => 'Cambiar Dirección de Orden',
+ 'sort_ascending' => 'Orden Ascendente',
+ 'sort_descending' => 'Orden Descendente',
+ 'sort_name' => 'Nombre',
+ 'sort_default' => 'Por defecto',
+ 'sort_created_at' => 'Fecha de creación',
+ 'sort_updated_at' => 'Fecha de actualización',
+
+ // Misc
+ 'deleted_user' => 'Usuario borrado',
+ 'no_activity' => 'Ninguna actividad para mostrar',
+ 'no_items' => 'No hay elementos disponibles',
+ 'back_to_top' => 'Volver arriba',
+ 'skip_to_main_content' => 'Ir al contenido principal',
+ 'toggle_details' => 'Mostrar/Ocultar Detalles',
+ 'toggle_thumbnails' => 'Mostrar/Ocultar Miniaturas',
+ 'details' => 'Detalles',
+ 'grid_view' => 'Vista de grilla',
+ 'list_view' => 'Vista de lista',
+ 'default' => 'Por defecto',
+ 'breadcrumb' => 'Miga de Pan',
+ 'status' => 'Estado',
+ 'status_active' => 'Activo',
+ 'status_inactive' => 'Inactivo',
+ 'never' => 'Nunca',
+ 'none' => 'Ninguno',
+
+ // Header
+ 'homepage' => 'Página de Inicio',
+ 'header_menu_expand' => 'Expandir el Menú de Cabecera',
+ 'profile_menu' => 'Menu del Perfil',
+ 'view_profile' => 'Ver Perfil',
+ 'edit_profile' => 'Editar Perfil',
+ 'dark_mode' => 'Modo Oscuro',
+ 'light_mode' => 'Modo Claro',
+ 'global_search' => 'Búsqueda Global',
+
+ // Layout tabs
+ 'tab_info' => 'Información',
+ 'tab_info_label' => 'Pestaña: Mostrar Información Secundaria',
+ 'tab_content' => 'Contenido',
+ 'tab_content_label' => 'Pestaña: Mostrar Contenido Primario',
+
+ // Email Content
+ 'email_action_help' => 'Si está teniendo problemas haga click en el botón ":actionText", copie y pegue la siguiente URL en su navegador web:',
+ 'email_rights' => 'Todos los derechos reservados',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Política de privacidad',
+ 'terms_of_service' => 'Términos de Servicio',
+
+ // OpenSearch
+ 'opensearch_description' => 'Buscar :appName',
+];
diff --git a/lang/es_AR/components.php b/lang/es_AR/components.php
new file mode 100644
index 00000000000..0e2c4c88bae
--- /dev/null
+++ b/lang/es_AR/components.php
@@ -0,0 +1,46 @@
+ 'Seleccionar Imagen',
+ 'image_list' => 'Lista de imágenes',
+ 'image_details' => 'Detalles de la imagen',
+ 'image_upload' => 'Subir imagen',
+ 'image_intro' => 'Aquí puede seleccionar y administrar las imágenes que previamente se subieron al sistema.',
+ 'image_intro_upload' => 'Suba una nueva imagen arrastrando un archivo de imagen a esta ventana, o usando el botón "Subir imagen" de arriba.',
+ 'image_all' => 'Todo',
+ 'image_all_title' => 'Ver todas las imágenes',
+ 'image_book_title' => 'Ver las imágenes subidas a este libro',
+ 'image_page_title' => 'Ver las imágenes subidas a esta página',
+ 'image_search_hint' => 'Buscar por nombre de imagen',
+ 'image_uploaded' => 'Subido el :uploadedDate',
+ 'image_uploaded_by' => 'Subida por :userName',
+ 'image_uploaded_to' => 'Subida a :pageLink',
+ 'image_updated' => 'Actualizada :updateDate',
+ 'image_load_more' => 'Cargar más',
+ 'image_image_name' => 'Nombre de imagen',
+ 'image_delete_used' => 'Esta imagen esta siendo utilizada en las páginas a continuación.',
+ 'image_delete_confirm_text' => '¿Está seguro que quiere eliminar esta imagen?',
+ 'image_select_image' => 'Seleccionar Imagen',
+ 'image_dropzone' => 'Arrastre las imágenes o hacer click aquí para Subir',
+ 'image_dropzone_drop' => 'Arrastre las imágenes aquí para subirlas',
+ 'images_deleted' => 'Imágenes borradas',
+ 'image_preview' => 'Preview de la imagen',
+ 'image_upload_success' => 'Imagen subida éxitosamente',
+ 'image_update_success' => 'Detalles de la imagen actualizados exitosamente',
+ 'image_delete_success' => 'Imagen borrada exitosamente',
+ 'image_replace' => 'Reemplazar imagen',
+ 'image_replace_success' => 'Imagen actualizada correctamente',
+ 'image_rebuild_thumbs' => 'Regenerar Variaciones de Tamaño',
+ 'image_rebuild_thumbs_success' => '¡Imágenes de distinto tamaño regeneradas correctamente!',
+
+ // Code Editor
+ 'code_editor' => 'Editar Código',
+ 'code_language' => 'Lenguaje del Código',
+ 'code_content' => 'Contenido del Código',
+ 'code_session_history' => 'Historial de la sesión',
+ 'code_save' => 'Guardar Código',
+];
diff --git a/lang/es_AR/editor.php b/lang/es_AR/editor.php
new file mode 100644
index 00000000000..94fd55b0998
--- /dev/null
+++ b/lang/es_AR/editor.php
@@ -0,0 +1,182 @@
+ 'General',
+ 'advanced' => 'Avanzado',
+ 'none' => 'Ninguno',
+ 'cancel' => 'Cancelar',
+ 'save' => 'Guardar',
+ 'close' => 'Cerrar',
+ 'apply' => 'Aplicar',
+ 'undo' => 'Deshacer',
+ 'redo' => 'Rehacer',
+ 'left' => 'Izquierda',
+ 'center' => 'Centrar',
+ 'right' => 'Derecha',
+ 'top' => 'Arriba',
+ 'middle' => 'Medio',
+ 'bottom' => 'Abajo',
+ 'width' => 'Ancho',
+ 'height' => 'Altura',
+ 'More' => 'Más',
+ 'select' => 'Seleccionar...',
+
+ // Toolbar
+ 'formats' => 'Formatos',
+ 'header_large' => 'Encabezado grande',
+ 'header_medium' => 'Encabezado mediano',
+ 'header_small' => 'Encabezado chico',
+ 'header_tiny' => 'Encabezado pequeño',
+ 'paragraph' => 'Párrafo',
+ 'blockquote' => 'Cita',
+ 'inline_code' => 'Código en línea',
+ 'callouts' => 'Llamadas',
+ 'callout_information' => 'Información',
+ 'callout_success' => 'Éxito',
+ 'callout_warning' => 'Advertencia',
+ 'callout_danger' => 'Peligro',
+ 'bold' => 'Negrita',
+ 'italic' => 'Cursiva',
+ 'underline' => 'Subrayado',
+ 'strikethrough' => 'Tachado',
+ 'superscript' => 'Superíndice',
+ 'subscript' => 'Subíndice',
+ 'text_color' => 'Color del texto',
+ 'highlight_color' => 'Color de resaltado',
+ 'custom_color' => 'Color personalizado',
+ 'remove_color' => 'Eliminar color',
+ 'background_color' => 'Color de fondo',
+ 'align_left' => 'Alinear a la izquierda',
+ 'align_center' => 'Centrar',
+ 'align_right' => 'Alinear a la derecha',
+ 'align_justify' => 'Justificado',
+ 'list_bullet' => 'Lista de viñetas',
+ 'list_numbered' => 'Lista numerada',
+ 'list_task' => 'Lista de tareas',
+ 'indent_increase' => 'Aumentar sangría',
+ 'indent_decrease' => 'Reducir sangría',
+ 'table' => 'Tabla',
+ 'insert_image' => 'Insertar Imagen',
+ 'insert_image_title' => 'Insertar/Editar imagen',
+ 'insert_link' => 'Insertar/editar enlace',
+ 'insert_link_title' => 'Insertar/Editar Enlace',
+ 'insert_horizontal_line' => 'Insertar línea horizontal',
+ 'insert_code_block' => 'Insertar bloque de código',
+ 'edit_code_block' => 'Editar bloque de código',
+ 'insert_drawing' => 'Insertar/editar dibujo',
+ 'drawing_manager' => 'Gestor de dibujo',
+ 'insert_media' => 'Insertar/editar media',
+ 'insert_media_title' => 'Insertar/Editar Media',
+ 'clear_formatting' => 'Limpiar formato',
+ 'source_code' => 'Código fuente',
+ 'source_code_title' => 'Código Fuente',
+ 'fullscreen' => 'Pantalla completa',
+ 'image_options' => 'Opciones de imagen',
+
+ // Tables
+ 'table_properties' => 'Propiedades de tabla',
+ 'table_properties_title' => 'Propiedades de Tabla',
+ 'delete_table' => 'Eliminar tabla',
+ 'table_clear_formatting' => 'Limpiar el formato de tabla',
+ 'resize_to_contents' => 'Redimensionar al contenido',
+ 'row_header' => 'Cabecera de fila',
+ 'insert_row_before' => 'Insertar fila arriba',
+ 'insert_row_after' => 'Insertar fila abajo',
+ 'delete_row' => 'Eliminar fila',
+ 'insert_column_before' => 'Insertar columna a la izquierda',
+ 'insert_column_after' => 'Insertar columna a la derecha',
+ 'delete_column' => 'Eliminar columna',
+ 'table_cell' => 'Celda',
+ 'table_row' => 'Fila',
+ 'table_column' => 'Columna',
+ 'cell_properties' => 'Propiedades de la celda',
+ 'cell_properties_title' => 'Propiedades de la Celda',
+ 'cell_type' => 'Tipo de celda',
+ 'cell_type_cell' => 'Celda',
+ 'cell_scope' => 'Alcance',
+ 'cell_type_header' => 'Celda de cabecera',
+ 'merge_cells' => 'Combinar celdas',
+ 'split_cell' => 'Dividir celda',
+ 'table_row_group' => 'Grupo de filas',
+ 'table_column_group' => 'Grupo de columnas',
+ 'horizontal_align' => 'Alineación horizontal',
+ 'vertical_align' => 'Alineación vertical',
+ 'border_width' => 'Ancho del borde',
+ 'border_style' => 'Estilo del borde',
+ 'border_color' => 'Color del borde',
+ 'row_properties' => 'Propiedades de fila',
+ 'row_properties_title' => 'Propiedades de Fila',
+ 'cut_row' => 'Cortar fila',
+ 'copy_row' => 'Copiar fila',
+ 'paste_row_before' => 'Pegar fila arriba',
+ 'paste_row_after' => 'Pegar fila abajo',
+ 'row_type' => 'Tipo de fila',
+ 'row_type_header' => 'Encabezado',
+ 'row_type_body' => 'Cuerpo',
+ 'row_type_footer' => 'Pie',
+ 'alignment' => 'Alineación',
+ 'cut_column' => 'Cortar columna',
+ 'copy_column' => 'Copiar columna',
+ 'paste_column_before' => 'Pegar columna a la izquierda',
+ 'paste_column_after' => 'Pegar columna a la derecha',
+ 'cell_padding' => 'Relleno de la celda',
+ 'cell_spacing' => 'Espaciado de celdas',
+ 'caption' => 'Leyenda',
+ 'show_caption' => 'Mostrar leyenda',
+ 'constrain' => 'Restringir proporciones',
+ 'cell_border_solid' => 'Sólida',
+ 'cell_border_dotted' => 'Punteada',
+ 'cell_border_dashed' => 'Discontinua',
+ 'cell_border_double' => 'Doble',
+ 'cell_border_groove' => 'Ranura',
+ 'cell_border_ridge' => 'Reborde',
+ 'cell_border_inset' => 'Recuadro',
+ 'cell_border_outset' => 'Recuadro externo',
+ 'cell_border_none' => 'Ninguno',
+ 'cell_border_hidden' => 'Oculto',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Origen',
+ 'alt_desc' => 'Descripción alternativa',
+ 'embed' => 'Embeber',
+ 'paste_embed' => 'Pegue su código embebido a continuación:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Texto a mostrar',
+ 'title' => 'Título',
+ 'browse_links' => 'Explorar enlaces',
+ 'open_link' => 'Abrir enlace',
+ 'open_link_in' => 'Abrir enlace en...',
+ 'open_link_current' => 'Ventana actual',
+ 'open_link_new' => 'Ventana nueva',
+ 'remove_link' => 'Eliminar enlace',
+ 'insert_collapsible' => 'Insertar bloque desplegable',
+ 'collapsible_unwrap' => 'Desplegar',
+ 'edit_label' => 'Editar etiqueta',
+ 'toggle_open_closed' => 'Alternar Abrir/Cerrar',
+ 'collapsible_edit' => 'Editar bloque desplegable',
+ 'toggle_label' => 'Cambiar etiqueta',
+
+ // About view
+ 'about' => 'Acerca del editor',
+ 'about_title' => 'Acerca del editor WYSIWYG',
+ 'editor_license' => 'Licencia del editor y derechos de autor',
+ 'editor_lexical_license' => 'Este editor está construido como una bifurcación de :lexicalLink que se distribuye bajo la licencia MIT.',
+ 'editor_lexical_license_link' => 'Los detalles completos de la licencia se pueden encontrar aquí.',
+ 'editor_tiny_license' => 'Este editor se construye usando :tinyLink provisto bajo la licencia MIT.',
+ 'editor_tiny_license_link' => 'Aquí se muestran los detalles de los derechos de autor y la licencia de TinyMCE.',
+ 'save_continue' => 'Guardar Página y Continuar',
+ 'callouts_cycle' => '(Siga presionando para alternar entre tipos)',
+ 'link_selector' => 'Enlace a contenido',
+ 'shortcuts' => 'Atajos',
+ 'shortcut' => 'Atajo',
+ 'shortcuts_intro' => 'Los siguientes atajos están disponibles en el editor:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Descripción',
+];
diff --git a/lang/es_AR/entities.php b/lang/es_AR/entities.php
new file mode 100644
index 00000000000..1ae092de1ee
--- /dev/null
+++ b/lang/es_AR/entities.php
@@ -0,0 +1,476 @@
+ 'Creado recientemente',
+ 'recently_created_pages' => 'Páginas creadas recientemente',
+ 'recently_updated_pages' => 'Páginas actualizadas recientemente',
+ 'recently_created_chapters' => 'Capítulos creados recientemente',
+ 'recently_created_books' => 'Libros creados recientemente',
+ 'recently_created_shelves' => 'Estantes creados recientemente',
+ 'recently_update' => 'Actaulizado recientemente',
+ 'recently_viewed' => 'Visto recientemente',
+ 'recent_activity' => 'Actividad reciente',
+ 'create_now' => 'Crear uno ahora',
+ 'revisions' => 'Revisiones',
+ 'meta_revision' => 'Revisión #:revisionCount',
+ 'meta_created' => 'Creado el :timeLength',
+ 'meta_created_name' => 'Creado el :timeLength por :user',
+ 'meta_updated' => 'Actualizado el :timeLength',
+ 'meta_updated_name' => 'Actualizado el :timeLength por :user',
+ 'meta_owned_name' => 'Propiedad de :user',
+ 'meta_reference_count' => 'Referido en :count página | Referido en :count páginas',
+ 'entity_select' => 'Seleccione entidad',
+ 'entity_select_lack_permission' => 'No tiene los permisos necesarios para seleccionar este elemento',
+ 'images' => 'Imágenes',
+ 'my_recent_drafts' => 'Mis borradores recientes',
+ 'my_recently_viewed' => 'Mis visualizaciones recientes',
+ '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',
+ 'export' => 'Exportar',
+ 'export_html' => 'Archivo web contenido',
+ 'export_pdf' => 'Archivo PDF',
+ 'export_text' => 'Archivo de texto plano',
+ 'export_md' => 'Archivo Markdown',
+ 'export_zip' => 'ZIP portable',
+ 'default_template' => 'Plantilla de página predeterminada',
+ 'default_template_explain' => 'Asigne una plantilla de página que se utilizará como contenido predeterminado para todas las páginas creadas en este elemento. Tenga en cuenta que esto sólo se utilizará si el creador de las páginas tiene acceso a la plantilla de página elegida.',
+ 'default_template_select' => 'Seleccione una página de plantilla',
+ 'import' => 'Importar',
+ 'import_validate' => 'Validar importación',
+ 'import_desc' => 'Importar libros, capítulos y páginas usando una exportación zip portable de la misma instancia u otra distinta. Seleccione un archivo ZIP para continuar. Después de que el archivo haya sido subido y validado, podrá configurar y confirmar la importación en la siguiente vista.',
+ 'import_zip_select' => 'Seleccione archivo ZIP a subir',
+ 'import_zip_validation_errors' => 'Se detectaron errores al validar el archivo ZIP proporcionado:',
+ 'import_pending' => 'Importaciones pendientes',
+ 'import_pending_none' => 'No se iniciaron importaciones.',
+ 'import_continue' => 'Continuar la importación',
+ 'import_continue_desc' => 'Revise el contenido que debe importarse del archivo ZIP subido. Cuando esté listo, ejecute la importación para añadir su contenido a este sistema. El archivo de importación ZIP subido se eliminará automáticamente al terminar la importación correctamente.',
+ 'import_details' => 'Detalles de la Importación',
+ 'import_run' => 'Ejecutar la importación',
+ 'import_size' => ':size tamaño del archivo ZIP',
+ 'import_uploaded_at' => 'Subido :relativeTime',
+ 'import_uploaded_by' => 'Subido por',
+ 'import_location' => 'Ubicación de Importación',
+ 'import_location_desc' => 'Seleccione una ubicación de destino para el contenido importado. Necesitará los permisos pertinentes para crearlo dentro de la ubicación que elija.',
+ 'import_delete_confirm' => '¿Está seguro de que desea eliminar esta importación?',
+ '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' => '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',
+ 'permissions_desc' => 'Establezca los permisos aquí para reemplazar los permisos predeterminados proporcionados por los roles de usuario.',
+ 'permissions_book_cascade' => 'Los permisos establecidos en los libros se aplicarán a los capítulos contenidos y las páginas contenidas, a menos que tengan sus propios permisos definidos.',
+ 'permissions_chapter_cascade' => 'Los permisos establecidos en los capítulos se aplicarán a las páginas contenidas, a menos que tengan sus propios permisos definidos.',
+ 'permissions_save' => 'Guardar permisos',
+ 'permissions_owner' => 'Propietario',
+ 'permissions_role_everyone_else' => 'Todos los demás',
+ 'permissions_role_everyone_else_desc' => 'Establecer permisos para todos los roles no específicamente reemplazados.',
+ 'permissions_role_override' => 'Reemplazar permisos para el rol',
+ 'permissions_inherit_defaults' => 'Heredar valores predeterminados',
+
+ // Search
+ 'search_results' => 'Buscar resultados',
+ 'search_total_results_found' => ':count resultados encontrados|:count total de resultados encontrados',
+ 'search_clear' => 'Limpiar resultados',
+ 'search_no_pages' => 'Ninguna página encontrada para la búsqueda',
+ 'search_for_term' => 'Busqueda por :term',
+ 'search_more' => 'Más resultados',
+ 'search_advanced' => 'Búsqueda Avanzada',
+ 'search_terms' => 'Términos de búsqueda',
+ 'search_content_type' => 'Tipo de contenido',
+ 'search_exact_matches' => 'Coincidencias exactas',
+ 'search_tags' => 'Búsquedas de etiquetas',
+ 'search_options' => 'Opciones',
+ 'search_viewed_by_me' => 'Vistos por mí',
+ 'search_not_viewed_by_me' => 'No vistos por mí',
+ 'search_permissions_set' => 'Permisos establecidos',
+ 'search_created_by_me' => 'Creado por mí',
+ 'search_updated_by_me' => 'Actualizado por mí',
+ 'search_owned_by_me' => 'De mi propiedad',
+ 'search_date_options' => 'Opciones de fecha',
+ 'search_updated_before' => 'Actualizado antes de',
+ 'search_updated_after' => 'Actualizado después de',
+ 'search_created_before' => 'Creado antes de',
+ 'search_created_after' => 'Creado después de',
+ 'search_set_date' => 'Esablecer fecha',
+ 'search_update' => 'Actualizar búsqueda',
+
+ // Shelves
+ 'shelf' => 'Estante',
+ 'shelves' => 'Estantes',
+ 'x_shelves' => ':count Estante|:count Estantes',
+ 'shelves_empty' => 'No se crearon estantes',
+ 'shelves_create' => 'Crear un estante nuevo',
+ 'shelves_popular' => 'Estantes Populares',
+ 'shelves_new' => 'Estantes Nuevos',
+ 'shelves_new_action' => 'Estante Nuevo',
+ 'shelves_popular_empty' => 'Los estantes más populares aparecerán aquí.',
+ 'shelves_new_empty' => 'Los estantes mas nuevos aparecerán aquí.',
+ 'shelves_save' => 'Guardar estantes',
+ 'shelves_books' => 'Libros en este estante',
+ 'shelves_add_books' => 'Agregar libros en este estante',
+ 'shelves_drag_books' => 'Arrastre los libros aquí para añadirlos a este estante',
+ 'shelves_empty_contents' => 'Este estante no tiene libros asignados a él',
+ 'shelves_edit_and_assign' => 'Editar el estante para asignar libros',
+ 'shelves_edit_named' => 'Editar Estante :name',
+ 'shelves_edit' => 'Editar Estante',
+ 'shelves_delete' => 'Eliminar Estante',
+ 'shelves_delete_named' => 'Eliminar el Estante :name',
+ 'shelves_delete_explain' => "Esta acción eliminará el estante con el nombre ':name'. Los libros contenidos en él no se eliminarán.",
+ 'shelves_delete_confirmation' => '¿Está seguro que quiere eliminar este estante?',
+ 'shelves_permissions' => 'Permisos del Estante',
+ 'shelves_permissions_updated' => 'Permisos del Estante Actualizados',
+ 'shelves_permissions_active' => 'Permisos Activos del Estante',
+ 'shelves_permissions_cascade_warning' => 'Los permisos en los estantes no se aplican automáticamente a los libros que contengan. Esto se debe a que un libro puede existir en múltiples estantes. Sin embargo, los permisos pueden ser aplicados a los libros del estante utilizando la opción de abajo.',
+ 'shelves_permissions_create' => 'Los permisos de creación de estantes sólo se utilizan para copiar los permisos a los libros contenidos utilizando la acción a continuación. No controlan la capacidad de crear libros.',
+ 'shelves_copy_permissions_to_books' => 'Copiar Permisos a los Libros',
+ 'shelves_copy_permissions' => 'Copiar Permisos',
+ 'shelves_copy_permissions_explain' => 'Esta acción aplicará los permisos del estante a todos los libros dentro del mismo. Antes de activarlo, asegúrese de que todos los cambios de permisos para este estante fueron guardados.',
+ 'shelves_copy_permission_success' => 'Permisos del estante copiados a :count libros',
+
+ // Books
+ 'book' => 'Libro',
+ 'books' => 'Libros',
+ 'x_books' => ':count Libro|:count Libros',
+ 'books_empty' => 'No hay libros creados',
+ 'books_popular' => 'Libros populares',
+ 'books_recent' => 'Libros recientes',
+ 'books_new' => 'Libros nuevos',
+ 'books_new_action' => 'Libro nuevo',
+ 'books_popular_empty' => 'Los libros más populares aparecerán aquí.',
+ 'books_new_empty' => 'Los libros creados más recientemente aparecerán aquí.',
+ 'books_create' => 'Crear nuevo libro',
+ 'books_delete' => 'Borrar libro',
+ 'books_delete_named' => 'Borrar libro :bookName',
+ 'books_delete_explain' => 'Esto borrará el libro con el nombre \':bookName\', Todas las páginas y capítulos serán removidos.',
+ 'books_delete_confirmation' => '¿Está seguro de que desea borrar este libro?',
+ 'books_edit' => 'Editar Libro',
+ 'books_edit_named' => 'Editar Libro :bookName',
+ 'books_form_book_name' => 'Nombre de libro',
+ 'books_save' => 'Guardar libro',
+ 'books_permissions' => 'permisos de libro',
+ 'books_permissions_updated' => 'Permisos de libro actualizados',
+ 'books_empty_contents' => 'Ninguna página o capítulo ha sido creada para este libro.',
+ 'books_empty_create_page' => 'Crear una nueva página',
+ 'books_empty_sort_current_book' => 'Organizar el libro actual',
+ 'books_empty_add_chapter' => 'Agregar un capítulo',
+ 'books_permissions_active' => 'Permisos de libro activados',
+ 'books_search_this' => 'Buscar en este libro',
+ 'books_navigation' => 'Navegación de libro',
+ 'books_sort' => 'Organizar contenido de libro',
+ 'books_sort_desc' => 'Mueve capítulos y páginas dentro de un libro para reorganizar su contenido. Se pueden añadir otros libros que permiten mover fácilmente capítulos y páginas entre libros. Opcionalmente, se puede establecer una regla de ordenación automática para el contenido de este libro cuando haya cambios.',
+ 'books_sort_auto_sort' => 'Opción de ordenación automática',
+ 'books_sort_auto_sort_active' => 'Opción de ordenación activa: sortName',
+ 'books_sort_named' => 'Organizar libro :bookName',
+ 'books_sort_name' => 'Organizar por nombre',
+ 'books_sort_created' => 'Organizar por fecha de creación',
+ 'books_sort_updated' => 'Organizar por fecha de actualización',
+ 'books_sort_chapters_first' => 'Capítulos primero',
+ 'books_sort_chapters_last' => 'Capítulos al final',
+ 'books_sort_show_other' => 'Mostrar otros libros',
+ 'books_sort_save' => 'Guardar nuevo orden',
+ 'books_sort_show_other_desc' => 'Añada aquí otros libros para incluirlos en la ordenación, y permita una fácil reorganización entre libros.',
+ 'books_sort_move_up' => 'Subir',
+ 'books_sort_move_down' => 'Bajar',
+ 'books_sort_move_prev_book' => 'Mover al libro anterior',
+ 'books_sort_move_next_book' => 'Mover al libro siguiente',
+ 'books_sort_move_prev_chapter' => 'Mover al capítulo anterior',
+ 'books_sort_move_next_chapter' => 'Mover al capítulo siguiente',
+ 'books_sort_move_book_start' => 'Mover al inicio del libro',
+ 'books_sort_move_book_end' => 'Mover al final del libro',
+ 'books_sort_move_before_chapter' => 'Mover a antes del capítulo',
+ 'books_sort_move_after_chapter' => 'Mover a después del capítulo',
+ 'books_copy' => 'Copiar Libro',
+ 'books_copy_success' => 'Libro copiado correctamente',
+
+ // Chapters
+ 'chapter' => 'Capítulo',
+ 'chapters' => 'Capítulos',
+ 'x_chapters' => ':count Capítulo|:count Capítulos',
+ 'chapters_popular' => 'Capítulos populares',
+ 'chapters_new' => 'Nuevo capítulo',
+ 'chapters_create' => 'Crear nuevo capítulo',
+ 'chapters_delete' => 'Borrar capítulo',
+ 'chapters_delete_named' => 'Borrar capítulo :chapterName',
+ 'chapters_delete_explain' => 'Esta acción eliminará el capítulo con el nombre \':chapterName\'. Todas las páginas que existen dentro del capítulo también se eliminarán.',
+ 'chapters_delete_confirm' => '¿Está seguro de borrar este capítulo?',
+ 'chapters_edit' => 'Editar capítulo',
+ 'chapters_edit_named' => 'Editar capítulo :chapterName',
+ 'chapters_save' => 'Guardar capítulo',
+ 'chapters_move' => 'Mover capítulo',
+ 'chapters_move_named' => 'Mover Capítulo :chapterName',
+ 'chapters_copy' => 'Copiar Capítulo',
+ 'chapters_copy_success' => 'Capítulo copiado correctamente',
+ 'chapters_permissions' => 'Permisos de capítulo',
+ 'chapters_empty' => 'No existen páginas en este capítulo.',
+ 'chapters_permissions_active' => 'Permisos de capítulo activado',
+ 'chapters_permissions_success' => 'Permisos de capítulo actualizados',
+ 'chapters_search_this' => 'Buscar en este capítulo',
+ 'chapter_sort_book' => 'Organizar Libro',
+
+ // Pages
+ 'page' => 'Página',
+ 'pages' => 'Páginas',
+ 'x_pages' => ':count Página|:count Páginas',
+ 'pages_popular' => 'Páginas populares',
+ 'pages_new' => 'Nueva página',
+ 'pages_attachments' => 'Adjuntos',
+ 'pages_navigation' => 'Navegación de página',
+ 'pages_delete' => 'Borrar página',
+ 'pages_delete_named' => 'Borrar página :pageName',
+ 'pages_delete_draft_named' => 'Borrar borrador de página :pageName',
+ 'pages_delete_draft' => 'Borrar borrador de página',
+ 'pages_delete_success' => 'Página borrada',
+ 'pages_delete_draft_success' => 'Borrador de página borrado',
+ 'pages_delete_warning_template' => 'Esta página está en uso como plantilla de página predeterminada de libro o capítulo. Estos libros o capítulos ya no tendrán una plantilla de página predeterminada asignada después de eliminar esta página.',
+ 'pages_delete_confirm' => '¿Está seguro de borrar esta página?',
+ 'pages_delete_draft_confirm' => 'Está seguro de que desea borrar este borrador de página?',
+ 'pages_editing_named' => 'Editando página :pageName',
+ 'pages_edit_draft_options' => 'Opciones de borrador',
+ 'pages_edit_save_draft' => 'Guardar borrador',
+ 'pages_edit_draft' => 'Editar borrador de página',
+ 'pages_editing_draft' => 'Editando borrador',
+ 'pages_editing_page' => 'Editando página',
+ 'pages_edit_draft_save_at' => 'Borrador guardado el ',
+ 'pages_edit_delete_draft' => 'Borrar borrador',
+ 'pages_edit_delete_draft_confirm' => '¡Está seguro que quiere eliminar los cambios realizados en el borrador? Se perderán todos los cambios hechos desde el último guardado completo y el editor se actualizará con el último estado de la página que se haya guardado.',
+ 'pages_edit_discard_draft' => 'Descartar borrador',
+ 'pages_edit_switch_to_markdown' => 'Cambiar a Editor Markdown',
+ 'pages_edit_switch_to_markdown_clean' => '(Limpiar Contenido)',
+ 'pages_edit_switch_to_markdown_stable' => '(Contenido Estable)',
+ 'pages_edit_switch_to_wysiwyg' => 'Cambiar a Editor WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Cambiar a nuevo editor WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(En prueba beta)',
+ 'pages_edit_set_changelog' => 'Establecer cambios de registro',
+ 'pages_edit_enter_changelog_desc' => 'Introduzca una breve descripción de los cambios que ha realizado',
+ 'pages_edit_enter_changelog' => 'Entrar en cambio de registro',
+ 'pages_editor_switch_title' => 'Cambiar editor',
+ 'pages_editor_switch_are_you_sure' => '¿Está seguro de que desea cambiar el editor en esta página?',
+ 'pages_editor_switch_consider_following' => 'Considere lo siguiente cuando cambie de editor:',
+ 'pages_editor_switch_consideration_a' => 'Una vez guardado, el nuevo editor será utilizado por todos los usuarios nuevos, incluyendo aquellos que quizás no tengan permisos para cambiar su editor.',
+ 'pages_editor_switch_consideration_b' => 'Esto puede llevar a una pérdida de detalle y sintaxis en ciertas circunstancias.',
+ 'pages_editor_switch_consideration_c' => 'Cambios en la etiqueta o en el registro de cambios, realizados desde la última vez que se guardan, no persistirán a través de este cambio.',
+ 'pages_save' => 'Guardar página',
+ 'pages_title' => 'Título de página',
+ 'pages_name' => 'Nombre de página',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Previsualizar',
+ 'pages_md_insert_image' => 'Insertar Imagen',
+ 'pages_md_insert_link' => 'Insertar link de entidad',
+ 'pages_md_insert_drawing' => 'Insertar Dibujo',
+ 'pages_md_show_preview' => 'Mostrar vista previa',
+ 'pages_md_sync_scroll' => 'Sincronizar desplazamiento de vista previa',
+ 'pages_md_plain_editor' => 'Editor de texto plano',
+ 'pages_drawing_unsaved' => 'Encontrado dibujo sin guardar',
+ 'pages_drawing_unsaved_confirm' => 'Se encontraron datos del dibujo no guardados durante un intento de guardado fallido anterior. ¿Desea restaurar y continuar editando el dibujo no guardado?',
+ 'pages_not_in_chapter' => 'La página no esá en el capítulo',
+ 'pages_move' => 'Mover página',
+ 'pages_copy' => 'Copiar página',
+ 'pages_copy_desination' => 'Destino de la copia',
+ 'pages_copy_success' => 'Página copiada con éxito',
+ 'pages_permissions' => 'Permisos de página',
+ 'pages_permissions_success' => 'Permisos de página actualizados',
+ 'pages_revision' => 'Revisión',
+ 'pages_revisions' => 'Revisiones de página',
+ 'pages_revisions_desc' => 'A continuación se listan todas las revisiones anteriores de esta página. Puede volver la vista atrás, comparar y restaurar versiones antiguas de la página si los permisos lo permiten. Es posible que el historial completo de la página no se refleje en esta sección. Dependiendo de la configuración del sistema, las revisiones viejas podrían eliminarse automáticamente.',
+ 'pages_revisions_named' => 'Revisiones de página para :pageName',
+ 'pages_revision_named' => 'Revisión de ágina para :pageName',
+ 'pages_revision_restored_from' => 'Restaurado desde #:id; :summary',
+ 'pages_revisions_created_by' => 'Creado por',
+ 'pages_revisions_date' => 'Fecha de revisión',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Número de Revisión',
+ 'pages_revisions_numbered' => 'Revisión #:id',
+ 'pages_revisions_numbered_changes' => 'Cambios de Revisión #:id',
+ 'pages_revisions_editor' => 'Tipo de Editor',
+ 'pages_revisions_changelog' => 'Registro de cambios',
+ 'pages_revisions_changes' => 'Cambios',
+ 'pages_revisions_current' => 'Versión actual',
+ 'pages_revisions_preview' => 'Previsualizar',
+ 'pages_revisions_restore' => 'Restaurar',
+ 'pages_revisions_none' => 'Esta página no tiene revisiones',
+ 'pages_copy_link' => 'Copiar enlace',
+ 'pages_edit_content_link' => 'Ir a la sección en el editor',
+ 'pages_pointer_enter_mode' => 'Modo de selección de sección',
+ 'pages_pointer_label' => 'Opciones de sección de página',
+ 'pages_pointer_permalink' => 'Sección de enlace permanente de página',
+ 'pages_pointer_include_tag' => 'Incluir Etiqueta a Sección de Página',
+ 'pages_pointer_toggle_link' => 'Modo de enlace permanente, presiona para mostrar la etiqueta',
+ 'pages_pointer_toggle_include' => 'Modo de etiqueta, presiona para mostrar enlace permanente',
+ 'pages_permissions_active' => 'Permisos de página activos',
+ 'pages_initial_revision' => 'Publicación inicial',
+ 'pages_references_update_revision' => 'Actualización automática de enlaces internos',
+ 'pages_initial_name' => 'Página nueva',
+ 'pages_editing_draft_notification' => 'Usted está actualmente editando un borrador que fue guardado por última vez el :timeDiff.',
+ 'pages_draft_edited_notification' => 'Esta página ha sido actualizada desde aquel momento. Se recomienda que cancele este borrador.',
+ 'pages_draft_page_changed_since_creation' => 'Esta página fue actualizada desde que se creó este borrador. Se recomienda descartar este borrador o tener cuidado de no sobrescribir ningún cambio en la página.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count usuarios han comenzado a editar esta página',
+ 'start_b' => ':userName ha comenzado a editar esta página',
+ 'time_a' => 'desde que las página fue actualizada',
+ 'time_b' => 'en los últimos :minCount minutos',
+ 'message' => ':start :time. Ten cuidado de no sobreescribir los cambios del otro usuario',
+ ],
+ 'pages_draft_discarded' => '¡Borrador descartado! El editor se actualizó con el contenido actual de la página',
+ 'pages_draft_deleted' => '¡Borrador eliminado! El editor se actualizó con el contenido actual de la página',
+ 'pages_specific' => 'Página Específica',
+ 'pages_is_template' => 'Plantilla de Página',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Mostrar/ocultar barra lateral',
+ 'page_tags' => 'Etiquetas de página',
+ 'chapter_tags' => 'Etiquetas de capítulo',
+ 'book_tags' => 'Etiquetas de libro',
+ 'shelf_tags' => 'Etiquetas de Estante',
+ 'tag' => 'Etiqueta',
+ 'tags' => 'Etiquetas',
+ 'tags_index_desc' => 'Las etiquetas se pueden aplicar al contenido dentro del sistema para lograr una forma flexible de categorización. Las etiquetas pueden tener tanto una clave como un valor, siendo el valor opcional. Una vez aplicado, el contenido puede ser consultado usando el nombre y el valor de la etiqueta.',
+ 'tag_name' => 'Nombre de etiqueta',
+ 'tag_value' => 'Valor de la etiqueta (Opcional)',
+ 'tags_explain' => "Agregar algunas etiquetas para mejorar la categorización de su contenido. \n Se puede asignar un valor a una etiqueta para una organizacón con mayor detalle.",
+ 'tags_add' => 'Agregar otra etiqueta',
+ 'tags_remove' => 'Eliminar esta etiqueta',
+ 'tags_usages' => 'Uso total de etiquetas',
+ 'tags_assigned_pages' => 'Asignadas a páginas',
+ 'tags_assigned_chapters' => 'Asignadas a capítulos',
+ 'tags_assigned_books' => 'Asignadas a libros',
+ 'tags_assigned_shelves' => 'Asignadas a estantes',
+ 'tags_x_unique_values' => ':count valores únicos',
+ 'tags_all_values' => 'Todos los valores',
+ 'tags_view_tags' => 'Ver etiquetas',
+ 'tags_view_existing_tags' => 'Ver etiquetas existentes',
+ 'tags_list_empty_hint' => 'Las etiquetas se pueden asignar a través de la barra lateral del editor de páginas o mientras se editan los detalles de un libro, capítulo o estante.',
+ 'attachments' => 'Adjuntos',
+ 'attachments_explain' => 'Subir archivos o agregar enlaces para mostrar en la página. Estos son visibles en la barra lateral de la página.',
+ 'attachments_explain_instant_save' => 'Los cambios se guardan de manera instantánea.',
+ 'attachments_upload' => 'Archivo adjuntado',
+ 'attachments_link' => 'Adjuntar enlace',
+ 'attachments_upload_drop' => 'También puedes arrastrar y soltar un archivo aquí para subirlo como un archivo adjunto.',
+ 'attachments_set_link' => 'Establecer enlace',
+ 'attachments_delete' => '¿Está seguro que desea eliminar el archivo adjunto?',
+ 'attachments_dropzone' => 'Arrastre aquí archivos para subirlos',
+ 'attachments_no_files' => 'No se adjuntó ningún archivo',
+ 'attachments_explain_link' => 'Usted puede agregar un enlace o si lo prefiere puede agregar un archivo. Esto puede ser un enlace a otra página o un enlace a un archivo en la nube.',
+ 'attachments_link_name' => 'Nombre del enlace',
+ 'attachment_link' => 'Enlace adjunto',
+ 'attachments_link_url' => 'Enlace a archivo',
+ 'attachments_link_url_hint' => 'URL del sitio o archivo',
+ 'attach' => 'Adjuntar',
+ 'attachments_insert_link' => 'Agregar el Enlace del adjunto a la Página',
+ 'attachments_edit_file' => 'Editar archivo',
+ 'attachments_edit_file_name' => 'Nombre del archivo',
+ 'attachments_edit_drop_upload' => 'Arrastre los archivos o presione aquí para subir o sobreescribir',
+ 'attachments_order_updated' => 'Orden de adjuntos actualizado',
+ 'attachments_updated_success' => 'Detalles de adjuntos actualizados',
+ 'attachments_deleted' => 'Adjunto borrado',
+ 'attachments_file_uploaded' => 'Archivo subido exitosamente',
+ 'attachments_file_updated' => 'Archivo actualizado exitosamente',
+ 'attachments_link_attached' => 'Enlace agregado exitosamente a la página',
+ 'templates' => 'Plantillas',
+ 'templates_set_as_template' => 'La Página es una plantilla',
+ 'templates_explain_set_as_template' => 'Puede establecer esta página como plantilla para que el contenido pueda utilizarse al crear otras páginas. Otros usuarios podrán utilizar esta plantilla si tienen permisos para ver de esta página.',
+ 'templates_replace_content' => 'Reemplazar el contenido de la página',
+ 'templates_append_content' => 'Incorporar al fina del contenido de la página',
+ 'templates_prepend_content' => 'Incorporar al principio del contenido de la página',
+
+ // Profile View
+ 'profile_user_for_x' => 'Usuario para :time',
+ 'profile_created_content' => 'Contenido creado',
+ 'profile_not_created_pages' => ':userName no ha creado páginas',
+ 'profile_not_created_chapters' => ':userName no ha creado capítulos',
+ 'profile_not_created_books' => ':userName no ha creado libros',
+ 'profile_not_created_shelves' => ':userName no ha creado estantes',
+
+ // Comments
+ 'comment' => 'Comentario',
+ 'comments' => 'Comentarios',
+ 'comment_add' => 'Agregar comentario',
+ 'comment_none' => 'No hay comentarios para mostrar',
+ 'comment_placeholder' => 'DEjar un comentario aquí',
+ 'comment_thread_count' => ':count Hilo de Comentarios|:count Hilos de Comentarios',
+ 'comment_archived_count' => ':count Archivados',
+ 'comment_archived_threads' => 'Hilos Archivados',
+ 'comment_save' => 'Guardar comentario',
+ 'comment_new' => 'Nuevo comentario',
+ 'comment_created' => 'comentado :createDiff',
+ 'comment_updated' => 'Actualizado :updateDiff por :username',
+ 'comment_updated_indicator' => 'Actualizado',
+ 'comment_deleted_success' => 'Comentario borrado',
+ 'comment_created_success' => 'Comentario agregado',
+ 'comment_updated_success' => 'Comentario actualizado',
+ 'comment_archive_success' => 'Comentario archivado',
+ 'comment_unarchive_success' => 'Comentario no archivado',
+ 'comment_view' => 'Ver comentario',
+ 'comment_jump_to_thread' => 'Ir al hilo',
+ 'comment_delete_confirm' => '¿Está seguro que quiere borrar este comentario?',
+ 'comment_in_reply_to' => 'En respuesta a :commentId',
+ 'comment_reference' => 'Referencia',
+ 'comment_reference_outdated' => '(Obsoleto)',
+ 'comment_editor_explain' => 'Estos son los comentarios que se escribieron en esta página. Los comentarios se pueden añadir y administrar cuando se visualiza la página guardada.',
+
+ // Revision
+ 'revision_delete_confirm' => '¿Está seguro de que quiere eliminar esta revisión?',
+ 'revision_restore_confirm' => '¿Está seguro de que quiere restaurar esta revisión? Se reemplazará el contenido de la página actual.',
+ 'revision_cannot_delete_latest' => 'No se puede eliminar la última revisión.',
+
+ // Copy view
+ 'copy_consider' => 'Por favor, tenga en cuenta lo siguiente al copiar el contenido.',
+ 'copy_consider_permissions' => 'Los ajustes de permisos personalizados no serán copiados.',
+ 'copy_consider_owner' => 'Usted se convertirá en el dueño de todo el contenido copiado.',
+ 'copy_consider_images' => 'Los archivos de imagen de la página no serán duplicados y las imágenes originales conservarán su relación con la página a la que fueron subidos originalmente.',
+ 'copy_consider_attachments' => 'Los archivos adjuntos de la página no serán copiados.',
+ 'copy_consider_access' => 'Un cambio de ubicación, propietario o permisos puede resultar en que este contenido sea accesible para aquellos que anteriormente no tuvieran acceso.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Convertir a Estante',
+ 'convert_to_shelf_contents_desc' => 'Puedes convertir este libro a un nuevo estante con el mismo contenido. Los capítulos contenidos en este libro se convertirán en libros nuevos. Si este libro contiene alguna página, que no esté en un capítulo, este libro será renombrado y contendrá tales páginas, y este libro pasará a formar parte del nuevo estante.',
+ 'convert_to_shelf_permissions_desc' => 'Cualquier permiso establecido en este libro será copiado al nuevo estante y a todos los nuevos libros que no tengan sus propios permisos configurados. Tenga en cuenta que los permisos de los estantes no se aplican automáticamente sobre el contenido en su interior, como lo hacen para los libros.',
+ 'convert_book' => 'Convertir Libro',
+ 'convert_book_confirm' => '¿Está seguro de que desea convertir este libro?',
+ 'convert_undo_warning' => 'Esto no se puede deshacer de forma sencilla.',
+ 'convert_to_book' => 'Convertir a Libro',
+ 'convert_to_book_desc' => 'Puede convertir este capítulo en un nuevo libro con el mismo contenido. Cualquier permiso establecido en este capítulo será copiado al nuevo libro pero cualquier permiso heredado, del libro padre, no se copiará lo que podría derivar en un cambio en el control de acceso.',
+ 'convert_chapter' => 'Convertir Capítulo',
+ 'convert_chapter_confirm' => '¿Está seguro de que quiere convertir este capítulo?',
+
+ // References
+ 'references' => 'Referencias',
+ 'references_none' => 'No hay referencias a este elemento.',
+ 'references_to_desc' => 'A continuación se muestra todo el contenido conocido en el sistema que enlaza a este elemento.',
+
+ // Watch Options
+ 'watch' => 'Suscribirme',
+ 'watch_title_default' => 'Preferencias Predeterminadas',
+ 'watch_desc_default' => 'Revertir las suscripciones a solo tus preferencias de notificación predeterminadas.',
+ 'watch_title_ignore' => 'Ignorar',
+ 'watch_desc_ignore' => 'Ignorar todas las notificaciones, incluyendo las de preferencias a nivel de usuario.',
+ 'watch_title_new' => 'Páginas Nuevas',
+ 'watch_desc_new' => 'Notificar cuando se crea una nueva página dentro de este elemento.',
+ 'watch_title_updates' => 'Todas las actualizaciones de página',
+ 'watch_desc_updates' => 'Notificar todas las páginas nuevas y todos los cambios de página.',
+ 'watch_desc_updates_page' => 'Notificar todos los cambios de página.',
+ 'watch_title_comments' => 'Todas las actualizaciones y comentarios de página',
+ 'watch_desc_comments' => 'Notificar todas las páginas nuevas, todos los cambios de página y todos los nuevos comentarios.',
+ 'watch_desc_comments_page' => 'Notificar los cambios en las páginas y los nuevos comentarios.',
+ 'watch_change_default' => 'Cambiar preferencias de notificación predeterminadas',
+ 'watch_detail_ignore' => 'Ignorando notificaciones',
+ 'watch_detail_new' => 'Suscripciones de nuevas páginas',
+ 'watch_detail_updates' => 'Suscripciones de nuevas páginas y actualizaciones de páginas',
+ 'watch_detail_comments' => 'Suscripciones de nuevas páginas, actualizaciones de páginas y comentarios',
+ 'watch_detail_parent_book' => 'Subscripciones por libro contenedor',
+ 'watch_detail_parent_book_ignore' => 'Ignorando a través del libro contenedor',
+ 'watch_detail_parent_chapter' => 'Subscripciones por capítulo contenedor',
+ 'watch_detail_parent_chapter_ignore' => 'Ignorar por capítulo contenedor',
+];
diff --git a/lang/es_AR/errors.php b/lang/es_AR/errors.php
new file mode 100644
index 00000000000..6f6b25bcf98
--- /dev/null
+++ b/lang/es_AR/errors.php
@@ -0,0 +1,135 @@
+ 'Ud. no tiene permisos para visualizar la página solicitada.',
+ 'permissionJson' => 'Ud. no tiene permisos para ejecutar la acción solicitada.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Un usuario con el email :email ya existe pero con credenciales diferentes.',
+ 'auth_pre_register_theme_prevention' => 'La cuenta de usuario no pudo ser registrada con los detalles proporcionados',
+ 'email_already_confirmed' => 'El email ya ha sido confirmado, Intente loguearse en la aplicación.',
+ 'email_confirmation_invalid' => 'Este token de confirmación no e válido o ya ha sido usado,Intente registrar uno nuevamente.',
+ 'email_confirmation_expired' => 'El token de confirmación ha expirado, Un nuevo email de confirmacón ha sido enviado.',
+ 'email_confirmation_awaiting' => 'La dirección de correo electrónico de la cuenta en uso debe ser confirmada',
+ 'ldap_fail_anonymous' => 'El acceso con LDAP ha fallado usando binding anónimo',
+ 'ldap_fail_authed' => 'El acceso LDAP usando el dn & password detallados',
+ 'ldap_extension_not_installed' => 'La extensión LDAP PHP no se encuentra instalada',
+ 'ldap_cannot_connect' => 'No se puede conectar con el servidor ldap, la conexión inicial ha fallado',
+ 'saml_already_logged_in' => 'Ya estás conectado',
+ 'saml_no_email_address' => 'No se pudo encontrar una dirección de correo electrónico, para este usuario, en los datos proporcionados por el sistema de autenticación externo',
+ 'saml_invalid_response_id' => 'La solicitud del sistema de autenticación externo no está reconocida por un proceso iniciado por esta aplicación. Navegar hacia atrás después de un inicio de sesión podría causar este problema.',
+ 'saml_fail_authed' => 'El inicio de sesión con :system falló, el sistema no proporcionó una autorización correcta',
+ 'oidc_already_logged_in' => 'Ya está conectado',
+ 'oidc_no_email_address' => 'No se pudo encontrar una dirección de correo electrónico para este usuario en los datos proporcionados por el sistema de autenticación externo',
+ 'oidc_fail_authed' => 'El inicio de sesión con :system falló, el sistema no proporcionó una autorización correcta',
+ 'social_no_action_defined' => 'Acción no definida',
+ 'social_login_bad_response' => "SE recibió un Error durante el acceso con :socialAccount : \n:error",
+ 'social_account_in_use' => 'la cuenta :socialAccount ya se encuentra en uso, intente loguearse a través de la opcón :socialAccount .',
+ 'social_account_email_in_use' => 'El email :email ya se encuentra en uso. Si ud. ya dispone de una cuenta puede loguearse a través de su cuenta :socialAccount desde la configuración de perfil.',
+ 'social_account_existing' => 'La cuenta :socialAccount ya se encuentra asignada a su perfil.',
+ 'social_account_already_used_existing' => 'La cuenta :socialAccount ya se encuentra usada por otro usuario.',
+ 'social_account_not_used' => 'La cuenta :socialAccount no está asociada a ningún usuario. Por favor adjuntela a su configuración de perfil. ',
+ 'social_account_register_instructions' => 'Si no dispone de una cuenta, puede registrar una cuenta usando la opción de :socialAccount .',
+ 'social_driver_not_found' => 'Driver social no encontrado',
+ 'social_driver_not_configured' => 'Su configuración :socialAccount no es correcta.',
+ 'invite_token_expired' => 'El enace de la esta invitación expiró. Puede intentar restablecer la contraseña de su cuenta',
+ 'login_user_not_found' => 'No se pudo encontrar un usuario para esta acción.',
+
+ // System
+ 'path_not_writable' => 'La ruta :filePath no pudo ser cargada. Asegurese de que es escribible por el servidor.',
+ 'cannot_get_image_from_url' => 'No se puede obtener la imagen desde :url',
+ 'cannot_create_thumbs' => 'El servidor no puede crear la imagen miniatura. Por favor chequee que tiene la extensión GD instalada.',
+ 'server_upload_limit' => 'El servidor no permite la subida de ficheros de este tamañ. Por favor intente con un fichero de menor tamañ.',
+ 'server_post_limit' => 'El servidor no puede recibir la cantidad de datos proporcionados. Inténtelo de nuevo con menos datos o un archivo más pequeño.',
+ 'uploaded' => 'El servidor no permite subir archivos de este tamaño. Por favor intente un tamaño menor.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Ha ocurrido un error al subir la imagen',
+ 'image_upload_type_error' => 'El tipo de imagen subida es inválido.',
+ 'image_upload_replace_type' => 'Los reemplazos de archivos de imágenes deben ser del mismo tipo',
+ 'image_upload_memory_limit' => 'No se pudo gestionar la subida de imágenes y/o crear miniaturas debido a los límites de recursos del sistema.',
+ 'image_thumbnail_memory_limit' => 'Error al crear imágenes de distintos tamaños debido a los límites de los recursos del sistema.',
+ 'image_gallery_thumbnail_memory_limit' => 'Error al crear imágenes de previsualización de la galería debido a los límites de los recursos del sistema.',
+ 'drawing_data_not_found' => 'No se pudieron cargar los datos del dibujo. Es probable que el archivo de dibujo ya no exista o que no tenga permiso para acceder a él.',
+
+ // Attachments
+ 'attachment_not_found' => 'No se encuentra el objeto adjunto',
+ 'attachment_upload_error' => 'Ocurrió un error al subir el archivo adjunto',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Fallo al guardar borrador. Asegurese de que tiene conexión a Internet antes de guardar este borrador',
+ 'page_draft_delete_fail' => 'Error al eliminar el borrador de la página y obtener el último contenido guardado',
+ 'page_custom_home_deletion' => 'No se puede eliminar una página cuando está configurada como página de inicio',
+
+ // Entities
+ 'entity_not_found' => 'Entidad no encontrada',
+ 'bookshelf_not_found' => 'Estante no encontrado',
+ 'book_not_found' => 'Libro no encontrado',
+ 'page_not_found' => 'Página no encontrada',
+ 'chapter_not_found' => 'Capítulo no encontrado',
+ 'selected_book_not_found' => 'El libro seleccionado no fue encontrado',
+ 'selected_book_chapter_not_found' => 'El libro o capítulo seleccionado no fue encontrado',
+ 'guests_cannot_save_drafts' => 'Los invitados no pueden guardar los borradores',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'No se puede borrar el único administrador',
+ 'users_cannot_delete_guest' => 'No se puede borrar el usuario invitado',
+ 'users_could_not_send_invite' => 'No se creó el usuario porque no se pudo enviar el correo de invitación',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Este rol no puede ser editado',
+ 'role_system_cannot_be_deleted' => 'Este rol es un rol de sistema y no puede ser borrado',
+ 'role_registration_default_cannot_delete' => 'Este rol no puede ser borrado mientras sea el rol por defecto de registro',
+ 'role_cannot_remove_only_admin' => 'Este usuario es el único asignado al rol de administrador. Asigne el rol de administrador a otro usuario antes de intentar eliminarlo.',
+
+ // Comments
+ 'comment_list' => 'Se produjo un error al obtener los comentarios.',
+ 'cannot_add_comment_to_draft' => 'No puede gregar comentarios a un borrador.',
+ 'comment_add' => 'Se produjo un error al agregar o actualizar el comentario.',
+ 'comment_delete' => 'Se produjo un error al borrar el comentario.',
+ 'empty_comment' => 'No se puede agregar un comentario vacío.',
+
+ // Error pages
+ '404_page_not_found' => 'Página no encontrada',
+ 'sorry_page_not_found' => 'Lo sentimos, la página que intenta acceder no pudo ser encontrada.',
+ 'sorry_page_not_found_permission_warning' => 'Si esperaba que esta página existiera, puede que no tenga permiso para verla.',
+ 'image_not_found' => 'No se encuentra la imagen',
+ 'image_not_found_subtitle' => 'Lo siento, no se pudo encontrar la imagen que busca.',
+ 'image_not_found_details' => 'Si esperaba que esta imagen exista es probable que se haya eliminado.',
+ 'return_home' => 'Volver al home',
+ 'error_occurred' => 'Ha ocurrido un error',
+ 'app_down' => 'La aplicación :appName se encuentra caída en este momento',
+ 'back_soon' => 'Volverá a estar operativa en corto tiempo.',
+
+ // Import
+ 'import_zip_cant_read' => 'No se pudo leer el archivo ZIP.',
+ 'import_zip_cant_decode_data' => 'No se pudo encontrar ni decodificar el contenido del archivo ZIP data.json.',
+ 'import_zip_no_data' => 'Los datos del archivo ZIP no tienen un libro, un capítulo o contenido de página en su contenido.',
+ 'import_zip_data_too_large' => 'El contenido del ZIP data.json excede el tamaño máximo de carga configurado.',
+ 'import_validation_failed' => 'Error al validar la importación del ZIP con los errores:',
+ 'import_zip_failed_notification' => 'Error al importar archivo ZIP.',
+ 'import_perms_books' => 'Le faltan los permisos necesarios para crear libros.',
+ 'import_perms_chapters' => 'Le faltan los permisos necesarios para crear capítulos.',
+ 'import_perms_pages' => 'Le faltan los permisos necesarios para crear páginas.',
+ 'import_perms_images' => 'Le faltan los permisos necesarios para crear imágenes.',
+ 'import_perms_attachments' => 'Le faltan los permisos necesarios para crear adjuntos.',
+
+ // API errors
+ 'api_no_authorization_found' => 'No se encontró ningún token de autorización en la solicitud',
+ 'api_bad_authorization_format' => 'Se ha encontrado un token de autorización en la solicitud pero el formato era incorrecto',
+ 'api_user_token_not_found' => 'No se ha encontrado un token API que corresponda con el token de autorización proporcionado',
+ 'api_incorrect_token_secret' => 'El secreto proporcionado para el token API usado es incorrecto',
+ 'api_user_no_api_permission' => 'El propietario del token API usado no tiene permiso para hacer llamadas API',
+ 'api_user_token_expired' => 'El token de autorización usado ha caducado',
+ 'api_cookie_auth_only_get' => 'Sólo se permiten peticiones GET cuando se utiliza el API con autenticación basada en cookies',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error al enviar un email de prueba:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'La URL no coincide con los hosts SSR configurados como permitidos',
+];
diff --git a/lang/es_AR/notifications.php b/lang/es_AR/notifications.php
new file mode 100644
index 00000000000..af9f5332b36
--- /dev/null
+++ b/lang/es_AR/notifications.php
@@ -0,0 +1,29 @@
+ 'Nuevo comentario en la página: :pageName',
+ 'new_comment_intro' => 'Un usuario comentó en una página de :appName:',
+ 'new_page_subject' => 'Página nueva: :pageName',
+ 'new_page_intro' => 'Se creó una nueva página en :appName:',
+ 'updated_page_subject' => 'Página actualizada: :pageName',
+ 'updated_page_intro' => 'Se actualizó una página en :appName:',
+ 'updated_page_debounce' => 'Para evitar una avalancha de notificaciones, durante un tiempo no se enviarán notificaciones sobre más ediciones de esta página por el mismo editor.',
+ 'comment_mention_subject' => 'Ha sido mencionado en un comentario en la página: :pageName',
+ 'comment_mention_intro' => 'Fue mencionado en un comentario en :appName:',
+
+ 'detail_page_name' => 'Nombre de la página:',
+ 'detail_page_path' => 'Ruta de la página:',
+ 'detail_commenter' => 'Comentarista:',
+ 'detail_comment' => 'Comentario:',
+ 'detail_created_by' => 'Creado por:',
+ 'detail_updated_by' => 'Actualizado por:',
+
+ 'action_view_comment' => 'Ver comentario',
+ 'action_view_page' => 'Ver página',
+
+ 'footer_reason' => 'Esta notificación le fue enviada porque :link cubre este tipo de actividad para este elemento.',
+ 'footer_reason_link' => 'nuestras preferencias de notificación',
+];
diff --git a/resources/lang/es_AR/pagination.php b/lang/es_AR/pagination.php
similarity index 100%
rename from resources/lang/es_AR/pagination.php
rename to lang/es_AR/pagination.php
diff --git a/resources/lang/es_AR/passwords.php b/lang/es_AR/passwords.php
similarity index 100%
rename from resources/lang/es_AR/passwords.php
rename to lang/es_AR/passwords.php
diff --git a/lang/es_AR/preferences.php b/lang/es_AR/preferences.php
new file mode 100644
index 00000000000..deca55466b4
--- /dev/null
+++ b/lang/es_AR/preferences.php
@@ -0,0 +1,52 @@
+ 'Mi cuenta',
+
+ 'shortcuts' => 'Atajos',
+ 'shortcuts_interface' => 'Preferencias de atajos en la interfaz',
+ 'shortcuts_toggle_desc' => 'Aquí puede activar o desactivar los accesos rápidos de la interfaz, utilizados para la navegación y las acciones.',
+ 'shortcuts_customize_desc' => 'Puede personalizar cada uno de los atajos a continuación. Simplemente pulse la combinación de teclas deseada después de seleccionar la entrada para un atajo.',
+ 'shortcuts_toggle_label' => 'Atajos de teclado habilitados',
+ 'shortcuts_section_navigation' => 'Navegación',
+ 'shortcuts_section_actions' => 'Acciones comunes',
+ 'shortcuts_save' => 'Guardar atajos',
+ 'shortcuts_overlay_desc' => 'Nota: Cuando se activan los atajos de teclado se puede visualizar la ayuda presionando la tecla "?", que resaltará los atajos disponibles para las acciones visibles actualmente en la pantalla.',
+ 'shortcuts_update_success' => '¡Se actualizaron las preferencias de atajos de teclado!',
+ 'shortcuts_overview_desc' => 'Gestione los atajos de teclado que puede utilizar para navegar por la interfaz de usuario del sistema.',
+
+ 'notifications' => 'Preferencias de notificaciones',
+ 'notifications_desc' => 'Controle las notificaciones por correo electrónico que recibe cuando se realiza cierta actividad dentro del sistema.',
+ 'notifications_opt_own_page_changes' => 'Notificar sobre los cambios en las páginas de las que soy propietario',
+ 'notifications_opt_own_page_comments' => 'Notificar sobre comentarios en las páginas de las que soy propietario',
+ 'notifications_opt_comment_mentions' => 'Notificarme cuando he sido mencionado en un comentario',
+ 'notifications_opt_comment_replies' => 'Notificar sobre respuestas a mis comentarios',
+ 'notifications_save' => 'Guardar preferencias',
+ 'notifications_update_success' => '¡Se actualizaron las preferencias de notificaciones!',
+ 'notifications_watched' => 'Elementos vigilados e ignorados',
+ 'notifications_watched_desc' => 'A continuación se muestran los elementos que tienen preferencias personalizadas de monitorización. Para actualizar sus preferencias, vea el artículo y las opciones se mostrarán en la barra lateral.',
+
+ 'auth' => 'Acceso y seguridad',
+ 'auth_change_password' => 'Cambiar contraseña',
+ 'auth_change_password_desc' => 'Cambie la contraseña que utiliza para iniciar sesión en la aplicación. Debe tener al menos 8 caracteres.',
+ 'auth_change_password_success' => '¡Se actualizó la contraseña!',
+
+ 'profile' => 'Detalles del perfil',
+ 'profile_desc' => 'Administre los detalles de su cuenta que lo representan ante otros usuarios, además de los detalles que se utilizan para la comunicación y la personalización del sistema.',
+ 'profile_view_public' => 'Ver Perfil Público',
+ 'profile_name_desc' => 'Configure el nombre que será visible para otros usuarios del sistema a través de la actividad que realiza, y el contenido que posee.',
+ 'profile_email_desc' => 'Este correo electrónico se utilizará para las notificaciones y, dependiendo de la autenticación activa del sistema, para el acceso al sistema.',
+ 'profile_email_no_permission' => 'Lamentablemente no tiene permiso para cambiar su dirección de correo electrónico. Si desea cambiar esto, necesitará pedir a un administrador que lo cambie por usted.',
+ 'profile_avatar_desc' => 'Seleccione una imagen que se utilizará para representarlo ante los demás en el sistema. Idealmente esta imagen debe ser cuadrada y alrededor de 256px de ancho y alto.',
+ 'profile_admin_options' => 'Opciones de Administrador',
+ 'profile_admin_options_desc' => 'Opciones adicionales de nivel de administrador, como aquellas para administrar asignaciones de rol, se pueden encontrar para su cuenta de usuario en el área de "Ajustes > Usuarios" de la aplicación.',
+
+ 'delete_account' => 'Eliminar Cuenta',
+ 'delete_my_account' => 'Eliminar Mi Cuenta',
+ 'delete_my_account_desc' => 'Esto eliminará completamente su cuenta de usuario del sistema. No podrá recuperar esta cuenta o revertir esta acción. El contenido que ha creado, como páginas creadas e imágenes subidas, permanecerá.',
+ 'delete_my_account_warning' => '¿Está seguro de que desea eliminar su cuenta?',
+];
diff --git a/lang/es_AR/settings.php b/lang/es_AR/settings.php
new file mode 100644
index 00000000000..90f43a6f268
--- /dev/null
+++ b/lang/es_AR/settings.php
@@ -0,0 +1,375 @@
+ 'Ajustes',
+ 'settings_save' => 'Guardar ajustes',
+ 'system_version' => 'Versión del Sistema',
+ 'categories' => 'Categorías',
+
+ // App Settings
+ 'app_customization' => 'Personalización',
+ 'app_features_security' => 'Características y Seguridad',
+ 'app_name' => 'Nombre de aplicación',
+ 'app_name_desc' => 'Este nombre se muestra en la cabecera y en cualquier correo electrónico de la aplicación',
+ 'app_name_header' => '¿Mostrar el nombre de la aplicación en la cabecera?',
+ 'app_public_access' => 'Acceso Público',
+ 'app_public_access_desc' => 'Habilitar esta opción permitirá a los visitantes, que no estén autenticados, acceder al contenido en la instancia de BookStack.',
+ 'app_public_access_desc_guest' => 'El acceso de visitantes públicos se puede controlar mediante el usuario "Guest/Invitado".',
+ 'app_public_access_toggle' => 'Permitir el acceso público',
+ 'app_public_viewing' => '¿Permitir vista pública?',
+ 'app_secure_images' => '¿Habilitar mayor seguridad para subir imágenes?',
+ 'app_secure_images_toggle' => 'Habilitar seguridad alta para subir imágenes',
+ 'app_secure_images_desc' => 'Por razones de rendimiento, todas las imágenes son públicas. Esta opción agrega una cadena larga difícil de adivinar, asegúrese que los índices de directorios no están habilitados para prevenir el acceso fácil a las imágenes.',
+ 'app_default_editor' => 'Editor de Página por defecto',
+ 'app_default_editor_desc' => 'Seleccione qué editor se utilizará por defecto cuando se editen nuevas páginas. Esta acción se puede anular al nivel de página si los permisos lo permiten.',
+ 'app_custom_html' => 'Contenido de cabecera HTML personalizable',
+ 'app_custom_html_desc' => 'Cualquier contenido agregado aquí será agregado al final de la sección de cada página. Esto es útil para sobreescribir estilos o agregar código para analíticas.',
+ 'app_custom_html_disabled_notice' => 'El contenido personailzado para la cabecera HTML está deshabilitado en esta configuración para garantizar que cualquier cambio importante se pueda revertir.',
+ 'app_logo' => 'Logo de la aplicación',
+ 'app_logo_desc' => 'Esto se utiliza en la cabecera de la aplicación, entre otras áreas. La imagen debe ser de 86px de altura. Se reducirá el tamaño de las imágenes grandes.',
+ 'app_icon' => 'Icono de la aplicación',
+ 'app_icon_desc' => 'Este ícono se utiliza para las pestañas del navegador y los accesos directos. Debería ser una imagen cuadrada de 256px en formato PNG.',
+ 'app_homepage' => 'Página de inicio de la Aplicación',
+ 'app_homepage_desc' => 'Seleccione una página de inicio para mostrar en lugar de la vista por defecto. Se ignoran los permisos de página para las páginas seleccionadas.',
+ 'app_homepage_select' => 'Seleccione una página',
+ 'app_footer_links' => 'Enlaces de pie de página',
+ 'app_footer_links_desc' => 'Añade enlaces para mostrar dentro del pie de página del sitio. Estos se mostrarán en la parte inferior de la mayoría de las páginas, incluyendo aquellas que no requieren estar registrado. Puede utilizar una etiqueta de "trans::" para utilizar traducciones definidas por el sistema. Por ejemplo: el uso de "trans::common.privacy_policy" proporcionará el texto traducido "Política de privacidad" y "trans::common.terms_of_service" proporcionará el texto traducido "Términos de servicio".',
+ 'app_footer_links_label' => 'Etiqueta del enlace',
+ 'app_footer_links_url' => 'Dirección URL del enlace',
+ 'app_footer_links_add' => 'Añadir enlace al pie de página',
+ 'app_disable_comments' => 'Deshabilitar comentarios',
+ 'app_disable_comments_toggle' => 'Deshabilitar comentarios',
+ 'app_disable_comments_desc' => 'Deshabilitar comentarios en todas las páginas de la aplicación. Los comentarios existentes no se muestran.',
+
+ // Color settings
+ 'color_scheme' => 'Esquema de color de la aplicación',
+ 'color_scheme_desc' => 'Establece los colores a usar en la interfaz de la aplicación. Los colores pueden configurar por separado para que los modos oscuros y claros se ajusten mejor al tema y garanticen la legibilidad.',
+ 'ui_colors_desc' => 'Establece el color principal y el color por defecto de los enlaces de la aplicación. El color principal se usa principalmente para la cabecera, botones y decoraciones de la interfaz. El color por defecto de los enlaces se utiliza para enlaces y acciones de texto, tanto dentro del contenido escrito como en la interfaz de la aplicación.',
+ 'app_color' => 'Color principal',
+ 'link_color' => 'Color por defecto de los enlaces',
+ 'content_colors_desc' => 'Establece los colores para todos los elementos en la jerarquía de organización de la página. Se recomienda elegir colores con un brillo similar al predeterminado para mayor legibilidad.',
+ 'bookshelf_color' => 'Color del estante',
+ 'book_color' => 'Color del libro',
+ 'chapter_color' => 'Color del capítulo',
+ 'page_color' => 'Color de la página',
+ 'page_draft_color' => 'Color del borrador de página',
+
+ // Registration Settings
+ 'reg_settings' => 'Ajustes de registro',
+ 'reg_enable' => 'Habilitar Registro',
+ 'reg_enable_toggle' => 'Habilitar registro',
+ 'reg_enable_desc' => 'Cuando se habilita el registro, el usuario podrá crear su usuario en la aplicación. Con el regsitro, se le otorga un rol de usuario único y por defecto.',
+ 'reg_default_role' => 'Rol de usuario por defecto despúes del registro',
+ 'reg_enable_external_warning' => 'La opción anterior no se utiliza mientras la autenticación LDAP o SAML externa esté activa. Las cuentas de usuario para los miembros no existentes se crearán automáticamente si la autenticación en el sistema externo en uso es exitosa.',
+ 'reg_email_confirmation' => 'Confirmación de correo electrónico',
+ 'reg_email_confirmation_toggle' => 'Requerir confirmación de correo electrónico',
+ 'reg_confirm_email_desc' => 'Si se utiliza la restricción por dominio, entonces se requerirá la confirmación por correo electrónico y se ignorará el valor a continuación.',
+ 'reg_confirm_restrict_domain' => 'Restringir registro al dominio',
+ 'reg_confirm_restrict_domain_desc' => 'Introduzca una lista separada por comas de los correos electrónicos del dominio a los que les gustaría restringir el registro por dominio. A los usuarios les será enviado un correo elctrónico para confirmar la dirección antes de que se le permita interactuar con la aplicación. Note que a los usuarios se les permitirá cambiar sus direcciones de correo electrónico luego de un registro éxioso.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Ninguna restricción establecida',
+
+ // Sorting Settings
+ 'sorting' => 'Listas y ordenación',
+ 'sorting_book_default' => 'Orden de libros por defecto',
+ 'sorting_book_default_desc' => 'Seleccione la regla de ordenación predeterminada para aplicar a nuevos libros. Esto no afectará a los libros existentes, y puede ser anulado por libro.',
+ 'sorting_rules' => 'Reglas de Ordenación',
+ 'sorting_rules_desc' => 'Son operaciones de ordenación predefinidas que se pueden aplicar al contenido en el sistema.',
+ 'sort_rule_assigned_to_x_books' => 'Asignado a :count libro | Asignado a :count libros',
+ 'sort_rule_create' => 'Crear regla de ordenación',
+ 'sort_rule_edit' => 'Editar regla de ordenación',
+ 'sort_rule_delete' => 'Eliminar regla de ordenación',
+ 'sort_rule_delete_desc' => 'Eliminar esta regla de ordenación del sistema. Los Libros que utilicen este tipo se revertirán a la ordenación manual.',
+ 'sort_rule_delete_warn_books' => 'Esta regla de ordenación se utiliza actualmente en :count libro(s). ¿Está seguro que desea eliminarla?',
+ 'sort_rule_delete_warn_default' => 'Esta regla de ordenación se utiliza actualmente como predeterminada para los libros. ¿Está seguro de que desea eliminarla?',
+ 'sort_rule_details' => 'Detalles de la regla de ordenación',
+ 'sort_rule_details_desc' => 'Establezca un nombre para esta regla de ordenación, que aparecerá en las listas cuando los usuarios estén seleccionando un orden.',
+ 'sort_rule_operations' => 'Operaciones de ordenación',
+ 'sort_rule_operations_desc' => 'Configure las acciones de ordenación a realizar moviéndolas de la lista de operaciones disponibles. Al usarse, las operaciones se aplicarán en orden, de arriba a abajo. Cualquier cambio realizado aquí se aplicará a todos los libros asignados al guardar.',
+ 'sort_rule_available_operations' => 'Operaciones disponibles',
+ 'sort_rule_available_operations_empty' => 'No hay operaciones pendientes',
+ 'sort_rule_configured_operations' => 'Operaciones configuradas',
+ 'sort_rule_configured_operations_empty' => 'Arrastrar/añadir operaciones desde la lista de "Operaciones disponibles"',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Nombre - Alfabético',
+ 'sort_rule_op_name_numeric' => 'Nombre - Numérico',
+ 'sort_rule_op_created_date' => 'Fecha de creación',
+ 'sort_rule_op_updated_date' => 'Fecha de actualización',
+ 'sort_rule_op_chapters_first' => 'Capítulos al inicio',
+ 'sort_rule_op_chapters_last' => 'Capítulos al final',
+ 'sorting_page_limits' => 'Límites de visualización por página',
+ 'sorting_page_limits_desc' => 'Establecer cuántos elementos a mostrar por página en varias listas dentro del sistema. Normalmente una cantidad más baja rendirá mejor, mientras que una cantidad más alta evita la necesidad de hacer clic a través de varias páginas. Se recomienda utilizar un múltiplo de 6.',
+
+ // Maintenance settings
+ 'maint' => 'Mantenimiento',
+ 'maint_image_cleanup' => 'Limpiar imágenes',
+ 'maint_image_cleanup_desc' => 'Analizar contenido de páginas y revisiones para detectar cuáles imágenes y dibujos están en uso y cuáles son redundantes. Asegúrese de crear un respaldo completo de imágenes y base de datos antes de ejecutar esta tarea.',
+ 'maint_delete_images_only_in_revisions' => 'También elimina imágenes que sólo existen en antiguas revisiones de páginas',
+ 'maint_image_cleanup_run' => 'Ejecutar limpieza',
+ 'maint_image_cleanup_warning' => 'Se encontraron :count imágenes pontencialmente sin uso. Está seguro de que quiere eliminarlas?',
+ 'maint_image_cleanup_success' => 'Se encontraron y se eliminaron :count imágenes pontencialmente sin uso!',
+ 'maint_image_cleanup_nothing_found' => 'No se encotraron imágenes sin usar, Nada eliminado!',
+ 'maint_send_test_email' => 'Enviar un correo electrónico de prueba',
+ 'maint_send_test_email_desc' => 'Esto envía un correo electrónico de prueba a la dirección de correo electrónico especificada en tu perfil.',
+ 'maint_send_test_email_run' => 'Enviar correo electrónico de prueba',
+ 'maint_send_test_email_success' => 'Correo electrónico enviado a :address',
+ 'maint_send_test_email_mail_subject' => 'Probar correo electrónico',
+ 'maint_send_test_email_mail_greeting' => '¡El envío de correos electrónicos parece funcionar!',
+ 'maint_send_test_email_mail_text' => '¡Enhorabuena! Al recibir esta notificación de correo electrónico, tu configuración de correo electrónico parece estar ajustada correctamente.',
+ 'maint_recycle_bin_desc' => 'Los estantes, libros, capítulos y páginas eliminados se envían a la papelera de reciclaje para que puedan ser restauradas o eliminadas permanentemente. Los elementos más antiguos en la papelera de reciclaje pueden ser eliminados automáticamente después de un tiempo dependiendo de la configuración del sistema.',
+ 'maint_recycle_bin_open' => 'Abrir papelera de reciclaje',
+ 'maint_regen_references' => 'Regenerar Referencias',
+ 'maint_regen_references_desc' => 'Esta acción reconstruirá el índice de referencia de elementos cruzados dentro de la base de datos. Normalmente se gestiona automáticamente, pero esta acción puede ser útil para indexar el contenido viejo o añadido mediante métodos no oficiales.',
+ 'maint_regen_references_success' => '¡El índice de referencias fue regenerado!',
+ 'maint_timeout_command_note' => 'Nota: Esta acción puede tardar en ejecutarse, lo que puede derivar en problemas de tiempo de espera en algunos entornos web. Como alternativa, esta acción se puede realizar usando un comando de terminal.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Papelera de Reciclaje',
+ 'recycle_bin_desc' => 'Aquí puede restaurar elementos que hayan sido eliminados o elegir eliminarlos permanentemente del sistema. Esta lista no está filtrada a diferencia de las listas de actividad similares en el sistema donde se aplican los filtros de permisos.',
+ 'recycle_bin_deleted_item' => 'Elemento Eliminado',
+ 'recycle_bin_deleted_parent' => 'Padre',
+ 'recycle_bin_deleted_by' => 'Eliminado por',
+ 'recycle_bin_deleted_at' => 'Fecha de eliminación',
+ 'recycle_bin_permanently_delete' => 'Eliminar permanentemente',
+ 'recycle_bin_restore' => 'Restaurar',
+ 'recycle_bin_contents_empty' => 'La papelera de reciclaje está vacía',
+ 'recycle_bin_empty' => 'Vaciar Papelera de reciclaje',
+ 'recycle_bin_empty_confirm' => 'Esto destruirá permanentemente todos los elementos de la papelera de reciclaje, incluyendo el contenido existente en cada elemento. ¿Está seguro de que desea vaciar la papelera de reciclaje?',
+ 'recycle_bin_destroy_confirm' => 'Esta acción eliminará permanentemente este elemento del sistema, junto con los elementos secundarios listados a continuación, y no podrá restaurar este contenido de nuevo. ¿Está seguro de que desea eliminar permanentemente este elemento?',
+ 'recycle_bin_destroy_list' => 'Elementos a destruir',
+ 'recycle_bin_restore_list' => 'Elementos a restaurar',
+ 'recycle_bin_restore_confirm' => 'Esta acción restaurará el elemento eliminado, incluyendo cualquier elemento secundario, a su ubicación original. Si la ubicación original ha sido eliminada, y ahora está en la papelera de reciclaje, el elemento padre también tendrá que ser restaurado.',
+ 'recycle_bin_restore_deleted_parent' => 'El padre de este elemento también ha sido eliminado. Estos permanecerán eliminados hasta que el padre también sea restaurado.',
+ 'recycle_bin_restore_parent' => 'Restaurar Padre',
+ 'recycle_bin_destroy_notification' => 'Eliminados :count elementos de la papelera de reciclaje.',
+ 'recycle_bin_restore_notification' => 'Restaurados :count elementos desde la papelera de reciclaje.',
+
+ // Audit Log
+ 'audit' => 'Registro de Auditoría',
+ 'audit_desc' => 'Este registro de auditoría muestra una lista de actividades rastreadas en el sistema. Esta lista no tiene filtrado a diferencia de listas de actividad similares en el sistema en los que se aplican filtros de permisos.',
+ 'audit_event_filter' => 'Filtro de Eventos',
+ 'audit_event_filter_no_filter' => 'Sin Filtro',
+ 'audit_deleted_item' => 'Elemento borrado',
+ 'audit_deleted_item_name' => 'Nombre: :name',
+ 'audit_table_user' => 'Usuario',
+ 'audit_table_event' => 'Evento',
+ 'audit_table_related' => 'Elemento o detalle relacionados',
+ 'audit_table_ip' => 'Dirección IP',
+ 'audit_table_date' => 'Fecha de la Actividad',
+ 'audit_date_from' => 'Inicio del Rango de Fecha',
+ 'audit_date_to' => 'Final del Rango de Fecha',
+
+ // Role Settings
+ 'roles' => 'Roles',
+ 'role_user_roles' => 'Roles de usuario',
+ 'roles_index_desc' => 'Los roles se utilizan para agrupar usuarios y proporcionar permisos del sistema a sus miembros. Cuando un usuario es miembro de múltiples roles los privilegios otorgados se acumularán y el usuario heredará todas las habilidades.',
+ 'roles_x_users_assigned' => ':count usuario asignado|:count usuarios asignados',
+ 'roles_x_permissions_provided' => ':count permiso |:count permisos',
+ 'roles_assigned_users' => 'Usuarios Asignados',
+ 'roles_permissions_provided' => 'Permisos Proporcionados',
+ 'role_create' => 'Crear nuevo rol',
+ 'role_delete' => 'Borrar rol',
+ 'role_delete_confirm' => 'Se borrará el rol con nombre \':roleName\'.',
+ 'role_delete_users_assigned' => 'Este rol tiene :userCount usuarios asignados. Si ud. quisiera migrar los usuarios de este rol, seleccione un nuevo rol a continuación.',
+ 'role_delete_no_migration' => "No migrar usuarios",
+ 'role_delete_sure' => '¿Está seguro que desea borrar este rol?',
+ 'role_edit' => 'Editar rol',
+ 'role_details' => 'Detalles de rol',
+ 'role_name' => 'Nombre de rol',
+ 'role_desc' => 'Descripción corta de rol',
+ 'role_mfa_enforced' => 'Requiere autenticación de múltiples factores',
+ 'role_external_auth_id' => 'IDs de Autenticación Externa',
+ 'role_system' => 'Permisos de sistema',
+ 'role_manage_users' => 'Gestionar usuarios',
+ 'role_manage_roles' => 'Gestionar roles y permisos de roles',
+ 'role_manage_entity_permissions' => 'Gestionar todos los permisos de libros, capítulos y páginas',
+ 'role_manage_own_entity_permissions' => 'Gestionar permisos en libro
+ s propios, capítulos y páginas',
+ 'role_manage_page_templates' => 'Gestionar las plantillas de páginas',
+ 'role_access_api' => 'API de sistema de acceso',
+ 'role_manage_settings' => 'Gestionar ajustes de activos',
+ 'role_export_content' => 'Exportar contenido',
+ 'role_import_content' => 'Importar contenido',
+ 'role_editor_change' => 'Cambiar editor de página',
+ 'role_notifications' => 'Recibir y gestionar notificaciones',
+ 'role_permission_note_users_and_roles' => 'Estos permisos proporcionarán también visibilidad y búsqueda de usuarios y roles en el sistema.',
+ 'role_asset' => 'Permisos de activos',
+ 'roles_system_warning' => 'Tenga en cuenta que el acceso a cualquiera de los tres permisos anteriores puede permitir a un usuario modificar sus propios privilegios o los privilegios de otros usuarios en el sistema. Asignar roles con estos permisos sólo a usuarios de comfianza.',
+ 'role_asset_desc' => 'Estos permisos controlan el acceso por defecto a los activos del sistema. Permisos definidos en Libros, Capítulos y Páginas ignorarán estos permisos.',
+ 'role_asset_admins' => 'Los administradores reciben automáticamente acceso a todo el contenido pero estas opciones pueden mostrar u ocultar opciones de UI.',
+ 'role_asset_image_view_note' => 'Esto se refiere a la visibilidad dentro del gestor de imágenes. El acceso real a los archivos de imágenes subidos, dependerá de la opción de almacenamiento de imágenes del sistema.',
+ 'role_asset_users_note' => 'Estos permisos proporcionarán también visibilidad y búsqueda de usuarios en el sistema.',
+ 'role_all' => 'Todo',
+ 'role_own' => 'Propio',
+ 'role_controlled_by_asset' => 'Controlado por el activo al que ha sido subido',
+ 'role_save' => 'Guardar rol',
+ 'role_users' => 'Usuarios en este rol',
+ 'role_users_none' => 'No hay usuarios asignados a este rol',
+
+ // Users
+ 'users' => 'Usuarios',
+ 'users_index_desc' => 'Crear y administrar cuentas de usuario individuales dentro del sistema. Las cuentas de usuario se utilizan para el inicio de sesión y atribución de contenido y actividad. Los permisos de acceso se basan principalmente en roles, pero la propiedad del contenido del usuario, entre otros factores, también puede afectar a los permisos y el acceso.',
+ 'user_profile' => 'Perfil de usuario',
+ 'users_add_new' => 'Agregar nuevo usuario',
+ 'users_search' => 'Buscar usuarios',
+ 'users_latest_activity' => 'Actividad Reciente',
+ 'users_details' => 'Detalles del usuario',
+ 'users_details_desc' => 'Asigne un nombre de visualización y una dirección de correo electrónico para este usuario. La dirección de correo electrónico se usará pra ingresar a la aplicación.',
+ 'users_details_desc_no_email' => 'Asigne un nombre de visualización a este usuario para que los demás puedan reconocerlo.',
+ 'users_role' => 'Roles de usuario',
+ 'users_role_desc' => 'Selecciona los roles a los que será asignado este usuario. Si se asignan varios roles los permisos se acumularán y recibirá todas las habilidades de los roles asignados.',
+ 'users_password' => 'Contraseña de Usuario',
+ 'users_password_desc' => 'Establezca una contraseña para iniciar sesión en la aplicación. Debe tener al menos 8 caracteres.',
+ 'users_send_invite_text' => 'Puede optar por enviar a este usuario un correo electrónico de invitación que les permita establecer su propia contraseña; de lo contrario, puede establecerla contraseña usted mismo.',
+ 'users_send_invite_option' => 'Enviar correo electrónico de invitación al usuario.',
+ 'users_external_auth_id' => 'ID externo de autenticación',
+ 'users_external_auth_id_desc' => 'Cuando se usa un sistema de autenticación externa (como SAML2, OIDC o LDAP) este es el ID que vincula este usuario de BookStack a la cuenta del sistema de autenticación. Puede ignorar este campo si utiliza la autenticación por defecto basada en correo electrónico.',
+ 'users_password_warning' => 'Solo complete lo siguiente si desea cambiar la contraseña para este usuario.',
+ 'users_system_public' => 'Este usuario representa cualquier usuario invitado que visita la aplicación. No puede utilizarse para hacer login sino que es asignado automáticamente.',
+ 'users_delete' => 'Borrar usuario',
+ 'users_delete_named' => 'Borrar usuario :userName',
+ 'users_delete_warning' => 'Se borrará completamente el usuario con el nombre \':userName\' del sistema.',
+ 'users_delete_confirm' => '¿Está seguro que desea borrar este usuario?',
+ 'users_migrate_ownership' => 'Cambiar Propietario',
+ 'users_migrate_ownership_desc' => 'Seleccione un usuario aquí si desea que otro usuario se convierta en el dueño de todos los elementos que actualmente son propiedad de este usuario.',
+ 'users_none_selected' => 'No hay usuario seleccionado',
+ 'users_edit' => 'Editar Usuario',
+ 'users_edit_profile' => 'Editar perfil',
+ 'users_avatar' => 'Avatar del usuario',
+ 'users_avatar_desc' => 'Esta imagen debe ser de aproximadamente 256px por lado.',
+ 'users_preferred_language' => 'Lenguaje preferido',
+ 'users_preferred_language_desc' => 'Esta opción cambiará el idioma de la interfaz de usuario en la aplicación. No afectará al contenido creado por los usuarios.',
+ 'users_social_accounts' => 'Cuentas sociales',
+ 'users_social_accounts_desc' => 'Vea el estado de las cuentas sociales conectadas para este usuario. Las cuentas sociales se pueden usar además del sistema de autenticación principal para el acceso al sistema.',
+ 'users_social_accounts_info' => 'Aquí puede conectar sus otras cuentas para un acceso rápido y más fácil. Desconectando una cuenta aquí no revoca accesos ya autorizados. Revoque el acceso desde los ajustes de perfil en la cuenta social conectada.',
+ 'users_social_connect' => 'Conectar cuenta',
+ 'users_social_disconnect' => 'Desconectar cuenta',
+ 'users_social_status_connected' => 'Conectado',
+ 'users_social_status_disconnected' => 'Desconectado',
+ 'users_social_connected' => 'La cuenta :socialAccount ha sido exitosamente añadida a su perfil.',
+ 'users_social_disconnected' => 'La cuenta :socialAccount ha sido desconectada exitosamente de su perfil.',
+ 'users_api_tokens' => 'Tokens API',
+ 'users_api_tokens_desc' => 'Cree y administre los tokens de acceso utilizados para autenticarse con la API REST de BookStack. Los permisos para la API se gestionan a través del usuario al que pertenece el token.',
+ 'users_api_tokens_none' => 'No se han creado tokens API para este usuario',
+ 'users_api_tokens_create' => 'Crear token',
+ 'users_api_tokens_expires' => 'Expira',
+ 'users_api_tokens_docs' => 'Documentación API',
+ 'users_mfa' => 'Autenticación de múltiples factores',
+ 'users_mfa_desc' => 'Configure la autenticación de múltiples factores como una capa extra de seguridad para su cuenta de usuario.',
+ 'users_mfa_x_methods' => ':count método configurado|:count métodos configurados',
+ 'users_mfa_configure' => 'Configurar Métodos',
+
+ // API Tokens
+ 'user_api_token_create' => 'Crear token API',
+ 'user_api_token_name' => 'Nombre',
+ 'user_api_token_name_desc' => 'Dale a tu token un nombre legible como un recordatorio futuro de su propósito.',
+ 'user_api_token_expiry' => 'Fecha de expiración',
+ 'user_api_token_expiry_desc' => 'Establece una fecha en la que este token expira. Después de esta fecha, las solicitudes realizadas usando este token ya no funcionarán. Dejar este campo en blanco fijará un vencimiento de 100 años en el futuro.',
+ 'user_api_token_create_secret_message' => 'Luego de crear este token, inmediatamente se generará y mostrará el "Token ID" y el "Token Secret" correspondientes. El "Token Secret" se mostrará por única vez, asegúrese de copiar el valor a un lugar seguro antes de continuar.',
+ 'user_api_token' => 'Token API',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'Este es un identificador no editable generado por el sistema y único para este token que necesitará ser proporcionado en solicitudes de API.',
+ 'user_api_token_secret' => 'Clave de Token',
+ 'user_api_token_secret_desc' => 'Esta es una clave no editable generada por el sistema que necesitará ser proporcionada en solicitudes de API. Solo se monstraré esta vez así que guarde su valor en un lugar seguro.',
+ 'user_api_token_created' => 'Token creado :timeAgo',
+ 'user_api_token_updated' => 'Token actualizado :timeAgo',
+ 'user_api_token_delete' => 'Borrar token',
+ 'user_api_token_delete_warning' => 'Esto eliminará completamente este token API con el nombre \':tokenName\' del sistema.',
+ 'user_api_token_delete_confirm' => '¿Está seguro de que desea borrar este API token?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Los Webhooks son una forma de enviar datos a URLs externas cuando ciertas acciones y eventos ocurren dentro del sistema, lo que permite la integración basada en eventos con plataformas externas como mensajería o sistemas de notificación.',
+ 'webhooks_x_trigger_events' => ':count evento disparador|:count eventos disparadores',
+ 'webhooks_create' => 'Crear nuevo Webhook',
+ 'webhooks_none_created' => 'No hay webhooks creados.',
+ 'webhooks_edit' => 'Editar Webhook',
+ 'webhooks_save' => 'Guardar Webhook',
+ 'webhooks_details' => 'Detalles del Webhook',
+ 'webhooks_details_desc' => 'Proporcione un nombre y un punto final de POST como destino para enviar los datos del webhook.',
+ 'webhooks_events' => 'Eventos del Webhook',
+ 'webhooks_events_desc' => 'Seleccione todos los eventos que deberían activar este webhook.',
+ 'webhooks_events_warning' => 'Tenga en cuenta que estos eventos se activarán para todos los eventos seleccionados, incluso si se aplican permisos personalizados. Asegúrese de que el uso de este webhook no exponga contenido confidencial.',
+ 'webhooks_events_all' => 'Todos los eventos del sistema',
+ 'webhooks_name' => 'Nombre del Webhook',
+ 'webhooks_timeout' => 'Tiempo de Espera de Solicitud del Webhook (Segundos)',
+ 'webhooks_endpoint' => 'Punto final del Webhook',
+ 'webhooks_active' => 'Webhook Activo',
+ 'webhook_events_table_header' => 'Eventos',
+ 'webhooks_delete' => 'Eliminar Webhook',
+ 'webhooks_delete_warning' => 'Esto eliminará completamente del sistema este webhook con el nombre \':webhookName\'.',
+ 'webhooks_delete_confirm' => '¿Está seguro que quiere eliminar este webhook?',
+ 'webhooks_format_example' => 'Ejemplo de Formato de Webhook',
+ 'webhooks_format_example_desc' => 'Los datos del Webhook, en formato JSON, se envían como una solicitud POST al punto final siguiendo el formato mostrado a continuación. Las propiedades "related_item" y "url" son opcionales y dependerán del tipo de evento activado.',
+ 'webhooks_status' => 'Estado del Webhook',
+ 'webhooks_last_called' => 'Última Ejecución:',
+ 'webhooks_last_errored' => 'Último error:',
+ 'webhooks_last_error_message' => 'Último mensaje de error:',
+
+ // Licensing
+ 'licenses' => 'Licencias',
+ 'licenses_desc' => 'Esta página detalla información sobre la licencia de BookStack además de los proyectos y bibliotecas que se utilizan en BookStack. Muchos proyectos enumerados aquí pueden ser utilizados solo en un contexto de desarrollo.',
+ 'licenses_bookstack' => 'Licencia BookStack',
+ 'licenses_php' => 'Licencias de Bibliotecas PHP',
+ 'licenses_js' => 'Licencias de Bibliotecas JavaScript',
+ 'licenses_other' => 'Otras Licencias',
+ 'license_details' => 'Detalles de la licencia',
+
+ //! If editing translations files directly please ignore this in all
+ //! languages apart from en. Content will be auto-copied from en.
+ //!////////////////////////////////
+ 'language_select' => [
+ 'en' => 'Inglés',
+ 'ar' => 'Árabe',
+ 'bg' => 'Búlgaro',
+ 'bs' => 'Bosnio',
+ 'ca' => 'Català',
+ 'cs' => 'Checo',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Danés',
+ 'de' => 'Alemán (informal)',
+ 'de_informal' => 'Alemán (formal)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Francés',
+ 'he' => 'עברית',
+ 'hr' => 'Croata',
+ 'hu' => 'Húngaro',
+ 'id' => 'Indonesio',
+ 'it' => 'Italiano',
+ 'ja' => 'Japonés',
+ 'ko' => 'Coreano',
+ 'lt' => 'Lituano',
+ 'lv' => 'Letón',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Holanda',
+ 'pl' => 'Polaco',
+ 'pt' => 'Portugués',
+ 'pt_BR' => 'Portugués brasileño',
+ 'ro' => 'Română',
+ 'ru' => 'Ruso',
+ 'sk' => 'Eslovaco',
+ 'sl' => 'Esloveno',
+ 'sv' => 'Sueco',
+ 'tr' => 'Turco',
+ 'uk' => 'Ucraniano',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Vietnamita',
+ 'zh_CN' => 'Chino mandarín',
+ 'zh_TW' => 'Chino tradicional',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/es_AR/validation.php b/lang/es_AR/validation.php
new file mode 100644
index 00000000000..9516401b91d
--- /dev/null
+++ b/lang/es_AR/validation.php
@@ -0,0 +1,123 @@
+ 'El :attribute debe ser aceptado.',
+ 'active_url' => 'El :attribute no es una URl válida.',
+ 'after' => 'El :attribute debe ser una fecha posterior :date.',
+ 'alpha' => 'El :attribute solo puede contener letras.',
+ 'alpha_dash' => 'El :attribute solo puede contener letras, números y guiones.',
+ 'alpha_num' => 'El :attribute solo puede contener letras y número.',
+ 'array' => 'El :attribute debe de ser un array.',
+ 'backup_codes' => 'El código suministrado no es válido o ya fue utilizado.',
+ 'before' => 'El :attribute debe ser una fecha anterior a :date.',
+ 'between' => [
+ 'numeric' => 'El :attribute debe estar entre :min y :max.',
+ 'file' => 'El :attribute debe estar entre :min y :max kilobytes.',
+ 'string' => 'El :attribute debe estar entre :min y :max carácteres.',
+ 'array' => 'El :attribute debe estar entre :min y :max items.',
+ ],
+ 'boolean' => 'El campo :attribute debe ser true o false.',
+ 'confirmed' => 'La confirmación de :attribute no concuerda.',
+ 'date' => 'El :attribute no es una fecha válida.',
+ 'date_format' => 'El :attribute no coincide con el formato :format.',
+ 'different' => ':attribute y :other deben ser diferentes.',
+ 'digits' => ':attribute debe ser de :digits dígitos.',
+ 'digits_between' => ':attribute debe ser un valor entre :min y :max dígios.',
+ 'email' => ':attribute debe ser una dirección álida.',
+ 'ends_with' => 'El :attribute debe terminar con uno de los siguientes: :values',
+ 'file' => 'El :attribute debe ser proporcionado como un archivo válido.',
+ 'filled' => 'El campo :attribute es requerido.',
+ 'gt' => [
+ 'numeric' => 'El :attribute debe ser mayor que :value.',
+ 'file' => 'El :attribute debe ser mayor que :value kilobytes.',
+ 'string' => 'El :attribute debe ser mayor que :value caracteres.',
+ 'array' => 'El :attribute debe tener más de :value objetos.',
+ ],
+ 'gte' => [
+ 'numeric' => 'El :attribute debe ser mayor o igual a :value.',
+ 'file' => 'El :attribute debe ser mayor o igual a :value kilobytes.',
+ 'string' => 'El :attribute debe ser mayor o igual a :value caracteres.',
+ 'array' => 'El :attribute debe tener :value objetos o más.',
+ ],
+ 'exists' => 'El :attribute seleccionado es inválido.',
+ 'image' => 'El :attribute debe ser una imagen.',
+ 'image_extension' => 'El :attribute debe tener una extensión de imagen válida y soportada.',
+ 'in' => 'El selected :attribute es inválio.',
+ 'integer' => 'El :attribute debe ser un entero.',
+ 'ip' => 'El :attribute debe ser una dirección IP álida.',
+ 'ipv4' => 'El :attribute debe ser una dirección IPv4 válida.',
+ 'ipv6' => 'El :attribute debe ser una dirección IPv6 válida.',
+ 'json' => 'El :attribute debe ser una cadena JSON válida.',
+ 'lt' => [
+ 'numeric' => 'El :attribute debe ser menor que :value.',
+ 'file' => 'El :attribute debe ser menor que :value kilobytes.',
+ 'string' => 'El :attribute debe ser menor que :value caracteres.',
+ 'array' => 'El :attribute debe tener menos de :value objetos.',
+ ],
+ 'lte' => [
+ 'numeric' => 'El :attribute debe ser menor o igual a :value.',
+ 'file' => 'El :attribute debe ser menor o igual a :value kilobytes.',
+ 'string' => 'El :attribute debe ser menor o igual a :value caracteres.',
+ 'array' => 'El :attribute no debe tener más de :value objetos.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute no puede ser mayor que :max.',
+ 'file' => ':attribute no puede ser mayor que :max kilobytes.',
+ 'string' => ':attribute no puede ser mayor que :max carácteres.',
+ 'array' => ':attribute no puede contener más de :max items.',
+ ],
+ 'mimes' => ':attribute debe ser un fichero de tipo: :values.',
+ 'min' => [
+ 'numeric' => ':attribute debe ser al menos de :min.',
+ 'file' => ':attribute debe ser al menos :min kilobytes.',
+ 'string' => ':attribute debe ser al menos :min caracteres.',
+ 'array' => ':attribute debe tener como mínimo :min items.',
+ ],
+ 'not_in' => ':attribute seleccionado es inválido.',
+ 'not_regex' => 'El formato de :attribute es inválido.',
+ 'numeric' => ':attribute debe ser numérico.',
+ 'regex' => ':attribute con formato inválido',
+ 'required' => ':attribute es requerido.',
+ 'required_if' => ':attribute es requerido cuando :other vale :value.',
+ 'required_with' => 'El campo :attribute es requerido cuando se encuentre entre los valores :values.',
+ 'required_with_all' => 'El campo :attribute es requerido cuando los valores sean :values.',
+ 'required_without' => ':attribute es requerido cuando no se encuentre entre los valores :values.',
+ 'required_without_all' => ':attribute es requerido cuando ninguno de los valores :values están presentes.',
+ 'same' => ':attribute y :other deben coincidir.',
+ 'safe_url' => 'El enlace provisto puede ser inseguro.',
+ 'size' => [
+ 'numeric' => ':attribute debe ser :size.',
+ 'file' => ':attribute debe ser :size kilobytes.',
+ 'string' => ':attribute debe ser :size caracteres.',
+ 'array' => ':attribute debe contener :size items.',
+ ],
+ 'string' => 'El atributo :attribute debe ser una cadena.',
+ 'timezone' => 'El atributo :attribute debe ser una zona válida.',
+ 'totp' => 'El código suministrado no es válido o ya expiró.',
+ 'unique' => 'El atributo :attribute ya ha sido tomado.',
+ 'url' => 'El atributo :attribute tiene un formato inválido.',
+ 'uploaded' => 'El archivo no se pudo subir. Puede ser que el servidor no acepte archivos de este tamaño.',
+
+ 'zip_file' => 'El :attribute necesita hacer referencia a un archivo dentro del ZIP.',
+ 'zip_file_size' => 'El archivo :attribute no debe exceder :size MB.',
+ 'zip_file_mime' => 'El :attribute necesita hacer referencia a un archivo de tipo :validTypes, encontrado :foundType.',
+ 'zip_model_expected' => 'Se esperaba un objeto de datos, pero se encontró ":type".',
+ 'zip_unique' => 'El :attribute debe ser único para el tipo de objeto dentro del ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Confirmación de Password requerida',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/et/activities.php b/lang/et/activities.php
new file mode 100644
index 00000000000..3a86dcd8623
--- /dev/null
+++ b/lang/et/activities.php
@@ -0,0 +1,140 @@
+ 'lisas lehe',
+ 'page_create_notification' => 'Leht on lisatud',
+ 'page_update' => 'muutis lehte',
+ 'page_update_notification' => 'Leht on muudetud',
+ 'page_delete' => 'kustutas lehe',
+ 'page_delete_notification' => 'Leht on kustutatud',
+ 'page_restore' => 'taastas lehe',
+ 'page_restore_notification' => 'Leht on taastatud',
+ 'page_move' => 'liigutas lehte',
+ 'page_move_notification' => 'Leht on liigutatud',
+
+ // Chapters
+ 'chapter_create' => 'lisas peatüki',
+ 'chapter_create_notification' => 'Peatükk on lisatud',
+ 'chapter_update' => 'muutis peatükki',
+ 'chapter_update_notification' => 'Peatükk on muudetud',
+ 'chapter_delete' => 'kustutas peatüki',
+ 'chapter_delete_notification' => 'Peatükk on kustutatud',
+ 'chapter_move' => 'liigutas peatükki',
+ 'chapter_move_notification' => 'Peatükk on liigutatud',
+
+ // Books
+ 'book_create' => 'lisas raamatu',
+ 'book_create_notification' => 'Raamat on lisatud',
+ 'book_create_from_chapter' => 'muutis peatüki raamatuks',
+ 'book_create_from_chapter_notification' => 'Peatükk on muudetud raamatuks',
+ 'book_update' => 'muutis raamatut',
+ 'book_update_notification' => 'Raamat on muudetud',
+ 'book_delete' => 'kustutas raamatu',
+ 'book_delete_notification' => 'Raamat on kustutatud',
+ 'book_sort' => 'sorteeris raamatut',
+ 'book_sort_notification' => 'Raamat on sorteeritud',
+
+ // Bookshelves
+ 'bookshelf_create' => 'lisas riiuli',
+ 'bookshelf_create_notification' => 'Riiul on lisatud',
+ 'bookshelf_create_from_book' => 'muutis raamatu riiuliks',
+ 'bookshelf_create_from_book_notification' => 'Raamat on muudetud riiuliks',
+ 'bookshelf_update' => 'muutis riiulit',
+ 'bookshelf_update_notification' => 'Riiul on muudetud',
+ 'bookshelf_delete' => 'kustutas riiuli',
+ 'bookshelf_delete_notification' => 'Riiul on kustutatud',
+
+ // Revisions
+ 'revision_restore' => 'taastas redaktsiooni',
+ 'revision_delete' => 'kustutas redaktsiooni',
+ 'revision_delete_notification' => 'Redaktsioon on kustutatud',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" lisati su lemmikute hulka',
+ 'favourite_remove_notification' => '":name" eemaldati su lemmikute hulgast',
+
+ // Watching
+ 'watch_update_level_notification' => 'Jälgimise eelistused edukalt salvestatud',
+
+ // Auth
+ 'auth_login' => 'logis sisse',
+ 'auth_register' => 'registreerus uue kasutajana',
+ 'auth_password_reset_request' => 'soovis parooli lähtestamist',
+ 'auth_password_reset_update' => 'lähtestas kasutaja parooli',
+ 'mfa_setup_method' => 'seadistas mitmeastmelise autentimise meetodi',
+ 'mfa_setup_method_notification' => 'Mitmeastmeline autentimine seadistatud',
+ 'mfa_remove_method' => 'eemaldas mitmeastmelise autentimise meetodi',
+ 'mfa_remove_method_notification' => 'Mitmeastmeline autentimine eemaldatud',
+
+ // Settings
+ 'settings_update' => 'uuendas seadeid',
+ 'settings_update_notification' => 'Seaded uuendatud',
+ 'maintenance_action_run' => 'käivitas hooldustegevuse',
+
+ // Webhooks
+ 'webhook_create' => 'lisas veebihaagi',
+ 'webhook_create_notification' => 'Veebihaak on lisatud',
+ 'webhook_update' => 'muutis veebihaaki',
+ 'webhook_update_notification' => 'Veebihaak on muudetud',
+ 'webhook_delete' => 'kustutas veebihaagi',
+ 'webhook_delete_notification' => 'Veebihaak on kustutatud',
+
+ // Imports
+ 'import_create' => 'lisas impordi',
+ 'import_create_notification' => 'Import on üles laaditud',
+ 'import_run' => 'muutis importi',
+ 'import_run_notification' => 'Sisu on imporditud',
+ 'import_delete' => 'kustutas impordi',
+ 'import_delete_notification' => 'Import on kustutatud',
+
+ // Users
+ 'user_create' => 'lisas kasutaja',
+ 'user_create_notification' => 'Kasutaja on lisatud',
+ 'user_update' => 'muutis kasutajat',
+ 'user_update_notification' => 'Kasutaja on muudetud',
+ 'user_delete' => 'kustutas kasutaja',
+ 'user_delete_notification' => 'Kasutaja on kustutatud',
+
+ // API Tokens
+ 'api_token_create' => 'lisas API tunnuse',
+ 'api_token_create_notification' => 'API tunnus on lisatud',
+ 'api_token_update' => 'muutis API tunnust',
+ 'api_token_update_notification' => 'API tunnus on muudetud',
+ 'api_token_delete' => 'kustutas API tunnuse',
+ 'api_token_delete_notification' => 'API tunnus on kustutatud',
+
+ // Roles
+ 'role_create' => 'lisas rolli',
+ 'role_create_notification' => 'Roll on lisatud',
+ 'role_update' => 'muutis rolli',
+ 'role_update_notification' => 'Roll on muudetud',
+ 'role_delete' => 'kustutas rolli',
+ 'role_delete_notification' => 'Roll on kustutatud',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'tühjendas prügikasti',
+ 'recycle_bin_restore' => 'taastas prügikastist',
+ 'recycle_bin_destroy' => 'eemaldas prügikastist',
+
+ // Comments
+ 'commented_on' => 'kommenteeris lehte',
+ 'comment_create' => 'lisas kommentaari',
+ 'comment_update' => 'muutis kommentaari',
+ 'comment_delete' => 'kustutas kommentaari',
+
+ // Sort Rules
+ 'sort_rule_create' => 'lisas sorteerimisreegli',
+ 'sort_rule_create_notification' => 'Sorteerimisreegel on lisatud',
+ 'sort_rule_update' => 'muutis sorteerimisreeglit',
+ 'sort_rule_update_notification' => 'Sorteerimisreegel on muudetud',
+ 'sort_rule_delete' => 'kustutas sorteerimisreegli',
+ 'sort_rule_delete_notification' => 'Sorteerimisreegel on kustutatud',
+
+ // Other
+ 'permissions_update' => 'muutis õiguseid',
+];
diff --git a/lang/et/auth.php b/lang/et/auth.php
new file mode 100644
index 00000000000..014a9f858eb
--- /dev/null
+++ b/lang/et/auth.php
@@ -0,0 +1,117 @@
+ 'Kasutajanimi ja parool ei klapi.',
+ 'throttle' => 'Liiga palju sisselogimiskatseid. Proovi uuesti :seconds sekundi pärast.',
+
+ // Login & Register
+ 'sign_up' => 'Registreeru',
+ 'log_in' => 'Logi sisse',
+ 'log_in_with' => 'Logi sisse :socialDriver abil',
+ 'sign_up_with' => 'Registreeru :socialDriver abil',
+ 'logout' => 'Logi välja',
+
+ 'name' => 'Nimi',
+ 'username' => 'Kasutajanimi',
+ 'email' => 'E-post',
+ 'password' => 'Parool',
+ 'password_confirm' => 'Kinnita parool',
+ 'password_hint' => 'Peab olema vähemalt 8 tähemärki pikk',
+ 'forgot_password' => 'Unustasid parooli?',
+ 'remember_me' => 'Jäta mind meelde',
+ 'ldap_email_hint' => 'Sisesta kasutajakonto e-posti aadress.',
+ 'create_account' => 'Loo konto',
+ 'already_have_account' => 'Kasutajakonto juba olemas?',
+ 'dont_have_account' => 'Sul ei ole veel kontot?',
+ 'social_login' => 'Sisene läbi sotsiaalmeedia',
+ 'social_registration' => 'Registreeru läbi sotsiaalmeedia',
+ 'social_registration_text' => 'Registreeru ja logi sisse välise teenuse kaudu.',
+
+ 'register_thanks' => 'Aitäh, et registreerusid!',
+ 'register_confirm' => 'Vaata oma postkasti ja klõpsa kinnitusnupul, et rakendusele :appName ligi pääseda.',
+ 'registrations_disabled' => 'Registreerumine on hetkel keelatud',
+ 'registration_email_domain_invalid' => 'Sellel e-posti domeenil ei ole rakendusele ligipääsu',
+ 'register_success' => 'Aitäh, et registreerusid! Oled nüüd sisse logitud.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Sisselogimiskatse',
+ 'auto_init_starting_desc' => 'Sisselogimise protsessi alustamiseks autentimissüsteemiga ühendumine. Kui 5 sekundi jooksul edasiminekut ei ole, proovi alloleval lingil klikkida.',
+ 'auto_init_start_link' => 'Jätka autentimisega',
+
+ // Password Reset
+ 'reset_password' => 'Lähtesta parool',
+ 'reset_password_send_instructions' => 'Siseta oma e-posti aadress ning sulle saadetakse link parooli lähtestamiseks.',
+ 'reset_password_send_button' => 'Saada lähtestamise link',
+ 'reset_password_sent' => 'Kui süsteemis leidub e-posti aadress :email, saadetakse sinna link parooli lähtestamiseks.',
+ 'reset_password_success' => 'Sinu parool on edukalt lähtestatud.',
+ 'email_reset_subject' => 'Lähtesta oma :appName parool',
+ 'email_reset_text' => 'Said selle e-kirja, sest meile laekus soov sinu konto parooli lähtestamiseks.',
+ 'email_reset_not_requested' => 'Kui sa ei soovinud parooli lähtestada, ei pea sa rohkem midagi tegema.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Kinnita oma :appName konto e-posti aadress',
+ 'email_confirm_greeting' => 'Aitäh, et liitusid rakendusega :appName!',
+ 'email_confirm_text' => 'Palun kinnita oma e-posti aadress, klõpsates alloleval nupul:',
+ 'email_confirm_action' => 'Kinnita e-posti aadress',
+ 'email_confirm_send_error' => 'E-posti aadressi kinnitamine on vajalik, aga e-kirja saatmine ebaõnnestus. Võta ühendust administraatoriga.',
+ 'email_confirm_success' => 'E-posti aadress on kinnitatud! Nüüd saad selle aadressiga sisse logida.',
+ 'email_confirm_resent' => 'Kinnituskiri on saadetud, vaata oma postkasti.',
+ 'email_confirm_thanks' => 'Aitäh, et kinnitasid!',
+ 'email_confirm_thanks_desc' => 'Palun oota hetke, kuni kinnitust töödeldakse. Kui sind 3 sekundi jooksul ümber ei suunata, klõpsa jätkamiseks allpool "Jätka" linki.',
+
+ 'email_not_confirmed' => 'E-posti aadress ei ole kinnitatud',
+ 'email_not_confirmed_text' => 'Sinu e-posti aadress ei ole veel kinnitatud.',
+ 'email_not_confirmed_click_link' => 'Klõpsa lingil e-kirjas, mis saadeti sulle pärast registreerumist.',
+ 'email_not_confirmed_resend' => 'Kui sa ei leia e-kirja, siis saad alloleva vormi abil selle uuesti saata.',
+ 'email_not_confirmed_resend_button' => 'Saada kinnituskiri uuesti',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Sind on kutsutud liituma rakendusega :appName!',
+ 'user_invite_email_greeting' => 'Sulle on loodud kasutajakonto rakenduses :appName.',
+ 'user_invite_email_text' => 'Vajuta allolevale nupule, et seada parool ja ligipääs saada:',
+ 'user_invite_email_action' => 'Sea konto parool',
+ 'user_invite_page_welcome' => 'Tere tulemast rakendusse :appName!',
+ 'user_invite_page_text' => 'Registreerumise lõpetamiseks ja ligipääsu saamiseks pead seadma parooli, millega edaspidi rakendusse sisse logid.',
+ 'user_invite_page_confirm_button' => 'Kinnita parool',
+ 'user_invite_success_login' => 'Parool seatud, nüüd on sul selle parooli abil ligipääs rakendusele :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Seadista mitmeastmeline autentimine',
+ 'mfa_setup_desc' => 'Seadista mitmeastmeline autentimine, et oma kasutajakonto turvalisust tõsta.',
+ 'mfa_setup_configured' => 'Juba seadistatud',
+ 'mfa_setup_reconfigure' => 'Seadista ümber',
+ 'mfa_setup_remove_confirmation' => 'Kas oled kindel, et soovid selle mitmeastmelise autentimise meetodi eemaldada?',
+ 'mfa_setup_action' => 'Seadista',
+ 'mfa_backup_codes_usage_limit_warning' => 'Sul on vähem kui 5 varukoodi järel. Genereeri ja hoiusta uus komplekt enne, kui nad otsa saavad, et vältida oma kasutajakontole ligipääsu kaotamist.',
+ 'mfa_option_totp_title' => 'Mobiilirakendus',
+ 'mfa_option_totp_desc' => 'Mitmeastmelise autentimise kasutamiseks on sul vaja TOTP-toega mobiilirakendust, nagu Google Authenticator, Authy või Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Varukoodid',
+ 'mfa_option_backup_codes_desc' => 'Genereerib komplekti ühekordseid tagavarakoode, mille abil saad sisselogimisel oma isikut tuvastada. Hoia neid kindlas ja turvalises kohas.',
+ 'mfa_gen_confirm_and_enable' => 'Kinnita ja lülita sisse',
+ 'mfa_gen_backup_codes_title' => 'Varukoodide seadistamine',
+ 'mfa_gen_backup_codes_desc' => 'Hoiusta allolevad koodid turvalises kohas. Saad neid kasutada sisselogimisel sekundaarse autentimismeetodina.',
+ 'mfa_gen_backup_codes_download' => 'Laadi koodid alla',
+ 'mfa_gen_backup_codes_usage_warning' => 'Igat koodi saab ainult ühe korra kasutada',
+ 'mfa_gen_totp_title' => 'Mobiilirakenduse seadistamine',
+ 'mfa_gen_totp_desc' => 'Mitmeastmelise autentimise kasutamiseks on sul vaja TOTP-toega mobiilirakendust, nagu Google Authenticator, Authy või Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Alustamiseks skaneeri allolevat QR-koodi oma eelistatud rakendusega.',
+ 'mfa_gen_totp_verify_setup' => 'Kontrolli seadistust',
+ 'mfa_gen_totp_verify_setup_desc' => 'Veendu, et kõik toimib korrektselt, sisestades oma rakenduse genereeritud koodi allolevasse tekstikasti:',
+ 'mfa_gen_totp_provide_code_here' => 'Sisesta rakenduse genereeritud kood siia',
+ 'mfa_verify_access' => 'Kinnita ligipääs',
+ 'mfa_verify_access_desc' => 'Sinu konto nõuab ligipääsuks täiendava kinnitusmeetodi abil oma isiku tuvastamist. Jätkamiseks vali üks järgnevatest meetoditest.',
+ 'mfa_verify_no_methods' => 'Ühtegi meetodit pole seadistatud',
+ 'mfa_verify_no_methods_desc' => 'Sinu kontole pole lisatud ühtegi mitmeastmelise autentimise meetodit. Ligipääsu saamiseks pead seadistama vähemalt ühe meetodi.',
+ 'mfa_verify_use_totp' => 'Tuvasta mobiilirakendusega',
+ 'mfa_verify_use_backup_codes' => 'Tuvasta varukoodiga',
+ 'mfa_verify_backup_code' => 'Varukood',
+ 'mfa_verify_backup_code_desc' => 'Sisesta allpool üks oma järelejäänud varukoodidest:',
+ 'mfa_verify_backup_code_enter_here' => 'Sisesta varukood siia',
+ 'mfa_verify_totp_desc' => 'Sisesta oma mobiilirakenduse poolt genereeritud kood allpool:',
+ 'mfa_setup_login_notification' => 'Mitmeastmeline autentimine seadistatud. Logi nüüd uuesti sisse, kasutades seadistatud meetodit.',
+];
diff --git a/lang/et/common.php b/lang/et/common.php
new file mode 100644
index 00000000000..580cdf133c4
--- /dev/null
+++ b/lang/et/common.php
@@ -0,0 +1,115 @@
+ 'Tühista',
+ 'close' => 'Sulge',
+ 'confirm' => 'Kinnita',
+ 'back' => 'Tagasi',
+ 'save' => 'Salvesta',
+ 'continue' => 'Jätka',
+ 'select' => 'Vali',
+ 'toggle_all' => 'Vaheta kõik',
+ 'more' => 'Rohkem',
+
+ // Form Labels
+ 'name' => 'Pealkiri',
+ 'description' => 'Kirjeldus',
+ 'role' => 'Roll',
+ 'cover_image' => 'Kaanepilt',
+ 'cover_image_description' => 'See pildifail peaks olema umbes 440x250px, ehkki seda skaleeritakse ja lõigatakse vastavalt vajadusele, et see mahuks erinevatesse kasutajaliidestesse, seega tegelikud kuvamõõdud võivad erineda.',
+
+ // Actions
+ 'actions' => 'Tegevused',
+ 'view' => 'Vaata',
+ 'view_all' => 'Vaata kõiki',
+ 'new' => 'Uus',
+ 'create' => 'Lisa',
+ 'update' => 'Uuenda',
+ 'edit' => 'Muuda',
+ 'archive' => 'Arhiveeri',
+ 'unarchive' => 'Taasta arhiivist',
+ 'sort' => 'Sorteeri',
+ 'move' => 'Liiguta',
+ 'copy' => 'Kopeeri',
+ 'reply' => 'Vasta',
+ 'delete' => 'Kustuta',
+ 'delete_confirm' => 'Kinnita kustutamine',
+ 'search' => 'Otsi',
+ 'search_clear' => 'Tühjenda otsing',
+ 'reset' => 'Taasta',
+ 'remove' => 'Eemalda',
+ 'add' => 'Lisa',
+ 'configure' => 'Seadista',
+ 'manage' => 'Halda',
+ 'fullscreen' => 'Täisekraan',
+ 'favourite' => 'Lemmik',
+ 'unfavourite' => 'Eemalda lemmik',
+ 'next' => 'Järgmine',
+ 'previous' => 'Eelmine',
+ 'filter_active' => 'Aktiivne filter:',
+ 'filter_clear' => 'Tühjenda filter',
+ 'download' => 'Laadi alla',
+ 'open_in_tab' => 'Ava vahelehel',
+ 'open' => 'Ava',
+
+ // Sort Options
+ 'sort_options' => 'Sorteerimise valikud',
+ 'sort_direction_toggle' => 'Sorteerimise suund',
+ 'sort_ascending' => 'Sorteeri kasvavalt',
+ 'sort_descending' => 'Sorteeri kahanevalt',
+ 'sort_name' => 'Pealkiri',
+ 'sort_default' => 'Vaikimisi',
+ 'sort_created_at' => 'Loomise aeg',
+ 'sort_updated_at' => 'Muutmise aeg',
+
+ // Misc
+ 'deleted_user' => 'Kustutatud kasutaja',
+ 'no_activity' => 'Pole tegevusi, mida näidata',
+ 'no_items' => 'Ühtegi elementi pole',
+ 'back_to_top' => 'Tagasi üles',
+ 'skip_to_main_content' => 'Otse põhisisu juurde',
+ 'toggle_details' => 'Näita detaile',
+ 'toggle_thumbnails' => 'Näita eelvaateid',
+ 'details' => 'Detailid',
+ 'grid_view' => 'Tabelivaade',
+ 'list_view' => 'Loendivaade',
+ 'default' => 'Vaikimisi',
+ 'breadcrumb' => 'Jäljerida',
+ 'status' => 'Staatus',
+ 'status_active' => 'Aktiivne',
+ 'status_inactive' => 'Mitteaktiivne',
+ 'never' => 'Mitte kunagi',
+ 'none' => 'Puudub',
+
+ // Header
+ 'homepage' => 'Avaleht',
+ 'header_menu_expand' => 'Laienda päisemenüü',
+ 'profile_menu' => 'Profiilimenüü',
+ 'view_profile' => 'Vaata profiili',
+ 'edit_profile' => 'Muuda profiili',
+ 'dark_mode' => 'Tume režiim',
+ 'light_mode' => 'Hele režiim',
+ 'global_search' => 'Globaalne otsing',
+
+ // Layout tabs
+ 'tab_info' => 'Info',
+ 'tab_info_label' => 'Sakk: Näita sekundaarset infot',
+ 'tab_content' => 'Sisu',
+ 'tab_content_label' => 'Sakk: Näita primaarset sisu',
+
+ // Email Content
+ 'email_action_help' => 'Kui sul on probleeme ":actionText" nupu vajutamisega, kopeeri allolev URL oma veebilehitsejasse:',
+ 'email_rights' => 'Kõik õigused kaitstud',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Privaatsus',
+ 'terms_of_service' => 'Kasutustingimused',
+
+ // OpenSearch
+ 'opensearch_description' => 'Otsi :appName',
+];
diff --git a/lang/et/components.php b/lang/et/components.php
new file mode 100644
index 00000000000..47adba2c53d
--- /dev/null
+++ b/lang/et/components.php
@@ -0,0 +1,46 @@
+ 'Pildifaili valik',
+ 'image_list' => 'Pildifailide nimekiri',
+ 'image_details' => 'Pildi andmed',
+ 'image_upload' => 'Laadi pilt üles',
+ 'image_intro' => 'Siin saad valida ja hallata pilte, mis on eelnevalt süsteemi üles laaditud.',
+ 'image_intro_upload' => 'Laadi uus pilt üles pildifaili sellesse aknasse lohistades või ülal "Laadi pilt üles" nupu abil.',
+ 'image_all' => 'Kõik',
+ 'image_all_title' => 'Vaata kõiki pildifaile',
+ 'image_book_title' => 'Vaata sellesse raamatusse laaditud pildifaile',
+ 'image_page_title' => 'Vaata sellele lehele laaditud pildifaile',
+ 'image_search_hint' => 'Otsi pildifaili nime järgi',
+ 'image_uploaded' => 'Üles laaditud :uploadedDate',
+ 'image_uploaded_by' => 'Lisatud :userName poolt',
+ 'image_uploaded_to' => 'Lisatud lehele :pageLink',
+ 'image_updated' => 'Lisatud :updateDate',
+ 'image_load_more' => 'Lae rohkem',
+ 'image_image_name' => 'Pildifaili nimi',
+ 'image_delete_used' => 'Seda pildifaili kasutavad järgmised lehed.',
+ 'image_delete_confirm_text' => 'Kas oled kindel, et soovid selle pildifaili kustutada?',
+ 'image_select_image' => 'Vali pildifail',
+ 'image_dropzone' => 'Üleslaadimiseks lohista pildid või klõpsa siin',
+ 'image_dropzone_drop' => 'Üleslaadimiseks lohista pildid siia',
+ 'images_deleted' => 'Pildifailid kustutatud',
+ 'image_preview' => 'Pildi eelvaade',
+ 'image_upload_success' => 'Pildifail üles laaditud',
+ 'image_update_success' => 'Pildifaili andmed muudetud',
+ 'image_delete_success' => 'Pildifail kustutatud',
+ 'image_replace' => 'Asenda pilt',
+ 'image_replace_success' => 'Pildifail on uuendatud',
+ 'image_rebuild_thumbs' => 'Taastekita eelvaated',
+ 'image_rebuild_thumbs_success' => 'Pildi eelvaated edukalt taastekitatud!',
+
+ // Code Editor
+ 'code_editor' => 'Muuda koodi',
+ 'code_language' => 'Koodi keel',
+ 'code_content' => 'Koodi sisu',
+ 'code_session_history' => 'Sessiooni ajalugu',
+ 'code_save' => 'Salvesta kood',
+];
diff --git a/lang/et/editor.php b/lang/et/editor.php
new file mode 100644
index 00000000000..66561c3c858
--- /dev/null
+++ b/lang/et/editor.php
@@ -0,0 +1,182 @@
+ 'Üldine',
+ 'advanced' => 'Lisavalikud',
+ 'none' => 'Puudub',
+ 'cancel' => 'Tühista',
+ 'save' => 'Salvesta',
+ 'close' => 'Sulge',
+ 'apply' => 'Rakenda',
+ 'undo' => 'Võta tagasi',
+ 'redo' => 'Korda',
+ 'left' => 'Vasakul',
+ 'center' => 'Keskel',
+ 'right' => 'Paremal',
+ 'top' => 'Ülal',
+ 'middle' => 'Keskel',
+ 'bottom' => 'All',
+ 'width' => 'Laius',
+ 'height' => 'Kõrgus',
+ 'More' => 'Rohkem',
+ 'select' => 'Vali...',
+
+ // Toolbar
+ 'formats' => 'Vormindamine',
+ 'header_large' => 'Suur pealkiri',
+ 'header_medium' => 'Keskmine pealkiri',
+ 'header_small' => 'Väike pealkiri',
+ 'header_tiny' => 'Tilluke pealkiri',
+ 'paragraph' => 'Paragrahv',
+ 'blockquote' => 'Tsitaat',
+ 'inline_code' => 'Tekstisisene kood',
+ 'callouts' => 'Teated',
+ 'callout_information' => 'Info',
+ 'callout_success' => 'Edu',
+ 'callout_warning' => 'Hoiatus',
+ 'callout_danger' => 'Oht',
+ 'bold' => 'Rasvane kiri',
+ 'italic' => 'Kaldkiri',
+ 'underline' => 'Allajoonitud',
+ 'strikethrough' => 'Läbikriipsutus',
+ 'superscript' => 'Ülaindeks',
+ 'subscript' => 'Alaindeks',
+ 'text_color' => 'Teksti värv',
+ 'highlight_color' => 'Esiletõstuvärv',
+ 'custom_color' => 'Kohandatud värv',
+ 'remove_color' => 'Eemalda värv',
+ 'background_color' => 'Taustavärv',
+ 'align_left' => 'Joonda vasakule',
+ 'align_center' => 'Joonda keskele',
+ 'align_right' => 'Joonda paremale',
+ 'align_justify' => 'Rööpjoondus',
+ 'list_bullet' => 'Punktloetelu',
+ 'list_numbered' => 'Numbriline loetelu',
+ 'list_task' => 'Ülesannete nimekiri',
+ 'indent_increase' => 'Suurenda taanet',
+ 'indent_decrease' => 'Vähenda taanet',
+ 'table' => 'Tabel',
+ 'insert_image' => 'Sisesta pilt',
+ 'insert_image_title' => 'Sisesta/Muuda pilti',
+ 'insert_link' => 'Sisesta/muuda linki',
+ 'insert_link_title' => 'Sisesta/muuda linki',
+ 'insert_horizontal_line' => 'Sisesta vahejoon',
+ 'insert_code_block' => 'Sisesta koodiplokk',
+ 'edit_code_block' => 'Muuda koodiplokki',
+ 'insert_drawing' => 'Sisesta/muuda joonist',
+ 'drawing_manager' => 'Jooniste haldur',
+ 'insert_media' => 'Sisesta/muuda meediat',
+ 'insert_media_title' => 'Sisesta/muuda meediat',
+ 'clear_formatting' => 'Eemalda vormindus',
+ 'source_code' => 'Lähtekood',
+ 'source_code_title' => 'Lähtekood',
+ 'fullscreen' => 'Täisekraan',
+ 'image_options' => 'Pildi valikud',
+
+ // Tables
+ 'table_properties' => 'Tabeli omadused',
+ 'table_properties_title' => 'Tabeli omadused',
+ 'delete_table' => 'Kustuta tabel',
+ 'table_clear_formatting' => 'Eemalda tabeli vormindus',
+ 'resize_to_contents' => 'Muuda suurus sisule vastavaks',
+ 'row_header' => 'Päiserida',
+ 'insert_row_before' => 'Sisesta rida enne',
+ 'insert_row_after' => 'Sisesta rida pärast',
+ 'delete_row' => 'Kustuta rida',
+ 'insert_column_before' => 'Sisesta veerg enne',
+ 'insert_column_after' => 'Sisesta veerg pärast',
+ 'delete_column' => 'Kustuta veerg',
+ 'table_cell' => 'Lahter',
+ 'table_row' => 'Rida',
+ 'table_column' => 'Veerg',
+ 'cell_properties' => 'Lahtri omadused',
+ 'cell_properties_title' => 'Lahtri omadused',
+ 'cell_type' => 'Lahtri tüüp',
+ 'cell_type_cell' => 'Lahter',
+ 'cell_scope' => 'Ulatus',
+ 'cell_type_header' => 'Päiselahter',
+ 'merge_cells' => 'Ühenda lahtrid',
+ 'split_cell' => 'Eralda lahtrid',
+ 'table_row_group' => 'Rea grupp',
+ 'table_column_group' => 'Veeru grupp',
+ 'horizontal_align' => 'Horisontaalne joondus',
+ 'vertical_align' => 'Vertikaalne joondus',
+ 'border_width' => 'Raami laius',
+ 'border_style' => 'Raami stiil',
+ 'border_color' => 'Raami värv',
+ 'row_properties' => 'Rea omadused',
+ 'row_properties_title' => 'Rea omadused',
+ 'cut_row' => 'Lõika rida',
+ 'copy_row' => 'Kopeeri rida',
+ 'paste_row_before' => 'Kleebi rida enne',
+ 'paste_row_after' => 'Kleebi rida pärast',
+ 'row_type' => 'Rea tüüp',
+ 'row_type_header' => 'Päis',
+ 'row_type_body' => 'Sisu',
+ 'row_type_footer' => 'Jalus',
+ 'alignment' => 'Joondus',
+ 'cut_column' => 'Lõika veerg',
+ 'copy_column' => 'Kopeeri veerg',
+ 'paste_column_before' => 'Kleebi veerg enne',
+ 'paste_column_after' => 'Kleebi veerg pärast',
+ 'cell_padding' => 'Lahtrite polsterdus',
+ 'cell_spacing' => 'Lahtrite vahe',
+ 'caption' => 'Tiitel',
+ 'show_caption' => 'Näita tiitlit',
+ 'constrain' => 'Piira proportsioone',
+ 'cell_border_solid' => 'Pidevjoon',
+ 'cell_border_dotted' => 'Punktiirjoon',
+ 'cell_border_dashed' => 'Katkendjoon',
+ 'cell_border_double' => 'Topeltjoon',
+ 'cell_border_groove' => 'Vagu',
+ 'cell_border_ridge' => 'Hari',
+ 'cell_border_inset' => 'Süvistatud',
+ 'cell_border_outset' => 'Tõstetud',
+ 'cell_border_none' => 'Puudub',
+ 'cell_border_hidden' => 'Peidetud',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Allikas',
+ 'alt_desc' => 'Alternatiivne kirjeldus',
+ 'embed' => 'Manusta',
+ 'paste_embed' => 'Sisesta manustamiskood:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Kuvatav tekst',
+ 'title' => 'Pealkiri',
+ 'browse_links' => 'Sirve linke',
+ 'open_link' => 'Ava link',
+ 'open_link_in' => 'Ava link...',
+ 'open_link_current' => 'Samas aknas',
+ 'open_link_new' => 'Uues aknas',
+ 'remove_link' => 'Eemalda link',
+ 'insert_collapsible' => 'Lisa kokkupandav plokk',
+ 'collapsible_unwrap' => 'Paki lahti',
+ 'edit_label' => 'Muuda silti',
+ 'toggle_open_closed' => 'Avatud/suletud',
+ 'collapsible_edit' => 'Muuda kokkupandavat plokki',
+ 'toggle_label' => 'Näita silti',
+
+ // About view
+ 'about' => 'Redaktori info',
+ 'about_title' => 'Info WYSIWYG redaktori kohta',
+ 'editor_license' => 'Redaktori litsents ja autoriõigused',
+ 'editor_lexical_license' => 'See redaktor on loodud :lexicalLink põhjal, mis on saadaval MIT litsentsi alusel.',
+ 'editor_lexical_license_link' => 'Täielikud litsentsitingimused on leitavad siin.',
+ 'editor_tiny_license' => 'See redaktor on loodud :tinyLink abil, mis on saadaval MIT litsentsi alusel.',
+ 'editor_tiny_license_link' => 'TinyMCE autoriõigused ja litsents on saadaval siin.',
+ 'save_continue' => 'Salvesta leht ja jätka',
+ 'callouts_cycle' => '(Vajuta, et tüüpide vahel valida)',
+ 'link_selector' => 'Link sisule',
+ 'shortcuts' => 'Otseteed',
+ 'shortcut' => 'Otsetee',
+ 'shortcuts_intro' => 'Redaktoris on saadaval järgmised otseteed:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Kirjeldus',
+];
diff --git a/lang/et/entities.php b/lang/et/entities.php
new file mode 100644
index 00000000000..323985b2d4a
--- /dev/null
+++ b/lang/et/entities.php
@@ -0,0 +1,476 @@
+ 'Hiljuti lisatud',
+ 'recently_created_pages' => 'Hiljuti lisatud lehed',
+ 'recently_updated_pages' => 'Hiljuti muudetud lehed',
+ 'recently_created_chapters' => 'Hiljuti lisatud peatükid',
+ 'recently_created_books' => 'Hiljuti lisatud raamatud',
+ 'recently_created_shelves' => 'Hiljuti lisatud riiulid',
+ 'recently_update' => 'Hiljuti muudetud',
+ 'recently_viewed' => 'Viimati vaadatud',
+ 'recent_activity' => 'Hiljutised tegevused',
+ 'create_now' => 'Lisa uus',
+ 'revisions' => 'Redaktsioonid',
+ 'meta_revision' => 'Redaktsioon #:revisionCount',
+ 'meta_created' => 'Lisatud :timeLength',
+ 'meta_created_name' => 'Lisatud :timeLength kasutaja :user poolt',
+ 'meta_updated' => 'Muudetud :timeLength',
+ 'meta_updated_name' => 'Muudetud :timeLength kasutaja :user poolt',
+ 'meta_owned_name' => 'Kuulub kasutajale :user',
+ 'meta_reference_count' => 'Viidatud :count objekti poolt|Viidatud :count objekti poolt',
+ 'entity_select' => 'Objekti valik',
+ 'entity_select_lack_permission' => 'Sul pole õiguseid selle objekti valimiseks',
+ 'images' => 'Pildid',
+ 'my_recent_drafts' => 'Minu hiljutised mustandid',
+ 'my_recently_viewed' => 'Minu viimati vaadatud',
+ 'my_most_viewed_favourites' => 'Minu enim vaadatud lemmikud',
+ 'my_favourites' => 'Minu lemmikud',
+ 'no_pages_viewed' => 'Sa pole veel ühtegi lehte vaadanud',
+ 'no_pages_recently_created' => 'Hiljuti pole ühtegi lehte lisatud',
+ 'no_pages_recently_updated' => 'Hiljuti pole ühtegi lehte muudetud',
+ 'export' => 'Ekspordi',
+ 'export_html' => 'HTML-fail',
+ 'export_pdf' => 'PDF fail',
+ 'export_text' => 'Tekstifail',
+ 'export_md' => 'Markdown fail',
+ 'export_zip' => 'Portatiivne ZIP',
+ 'default_template' => 'Vaikimisi lehe mall',
+ 'default_template_explain' => 'Vali lehe mall, mida kasutatakse kõigi selle objekti sees loodud lehtede vaikimisi sisuna. Pea meeles, et seda kasutatakse ainult siis, kui lehe loojal on valitud malli vaatamise õigus.',
+ 'default_template_select' => 'Vali mall',
+ 'import' => 'Import',
+ 'import_validate' => 'Valideeri import',
+ 'import_desc' => 'Impordi raamatud, peatükid ja lehed portatiivse ZIP-formaadi abil samast või erinevast instantsist. Jätkamiseks vali ZIP-fail. Pärast faili üleslaadimist ja valideerimist saad importimise seadistada ja kinnitada.',
+ 'import_zip_select' => 'Vali ZIP-fail üleslaadimiseks',
+ 'import_zip_validation_errors' => 'Valitud ZIP-faili valideerimisel tekkisid vead:',
+ 'import_pending' => 'Ootel impordid',
+ 'import_pending_none' => 'Ühtegi importi pole alustatud.',
+ 'import_continue' => 'Jätka importimist',
+ 'import_continue_desc' => 'Vaata üle sisu, mida üleslaaditud ZIP-failist importida. Kui oled valmis, käivita import, et sisu süsteemi lisada. Eduka impordi korral kustutatakse üleslaaditud ZIP-fail automaatselt.',
+ 'import_details' => 'Importimise andmed',
+ 'import_run' => 'Käivita import',
+ 'import_size' => ':size Imporditud ZIP-faili maht',
+ 'import_uploaded_at' => 'Üleslaaditud :relativeTime',
+ 'import_uploaded_by' => 'Üles laadis',
+ 'import_location' => 'Importimise asukoht',
+ 'import_location_desc' => 'Vali imporditud sisu jaoks sihtkoht. Sul on vaja valitud asukohas sisu lisamiseks vajalikke õiguseid.',
+ 'import_delete_confirm' => 'Kas oled kindel, et soovid selle impordi kustutada?',
+ 'import_delete_desc' => 'See kustutab üleslaaditud ZIP-faili, ja seda ei saa tagasi võtta.',
+ 'import_errors' => 'Importimise vead',
+ 'import_errors_desc' => 'Importimisel esinesid järgmised vead:',
+ 'breadcrumb_siblings_for_page' => 'Sirvi teisi lehti',
+ 'breadcrumb_siblings_for_chapter' => 'Sirvi teisi peatükke',
+ 'breadcrumb_siblings_for_book' => 'Sirvi teisi raamatuid',
+ 'breadcrumb_siblings_for_bookshelf' => 'Sirvi teisi riiuleid',
+
+ // Permissions and restrictions
+ 'permissions' => 'Õigused',
+ 'permissions_desc' => 'Sea siin õigused, et kirjutada üle rollide vaikimisi õigused.',
+ 'permissions_book_cascade' => 'Raamatutele seatud õigused rakenduvad automaatselt peatükkidele ja lehtedele, kui neile pole seatud oma õiguseid.',
+ 'permissions_chapter_cascade' => 'Peatükkidele seatud õigused rakenduvad automaatselt lehtedele, kui neile pole seatud oma õiguseid.',
+ 'permissions_save' => 'Salvesta õigused',
+ 'permissions_owner' => 'Omanik',
+ 'permissions_role_everyone_else' => 'Kõik muud',
+ 'permissions_role_everyone_else_desc' => 'Sea õigused kõigile rollidele, mida pole üle kirjutatud.',
+ 'permissions_role_override' => 'Kirjuta rolli õigused üle',
+ 'permissions_inherit_defaults' => 'Päri vaikimisi seaded',
+
+ // Search
+ 'search_results' => 'Otsingutulemused',
+ 'search_total_results_found' => 'leitud :count vaste|leitud :count vastet',
+ 'search_clear' => 'Tühjenda otsing',
+ 'search_no_pages' => 'Otsing ei leidnud ühtegi lehte',
+ 'search_for_term' => 'Otsi terminit :term',
+ 'search_more' => 'Rohkem tulemusi',
+ 'search_advanced' => 'Täpsem otsing',
+ 'search_terms' => 'Otsinguterminid',
+ 'search_content_type' => 'Sisu tüüp',
+ 'search_exact_matches' => 'Täpsed vasted',
+ 'search_tags' => 'Sildi otsing',
+ 'search_options' => 'Valikud',
+ 'search_viewed_by_me' => 'Minu vaadatud',
+ 'search_not_viewed_by_me' => 'Minu vaatamata',
+ 'search_permissions_set' => 'Õigused seatud',
+ 'search_created_by_me' => 'Minu lisatud',
+ 'search_updated_by_me' => 'Minu muudetud',
+ 'search_owned_by_me' => 'Minu omad',
+ 'search_date_options' => 'Kuupäeva valikud',
+ 'search_updated_before' => 'Muudetud enne kui',
+ 'search_updated_after' => 'Muudetud hiljem kui',
+ 'search_created_before' => 'Lisatud enne kui',
+ 'search_created_after' => 'Lisatud hiljem kui',
+ 'search_set_date' => 'Vali kuupäev',
+ 'search_update' => 'Värskenda otsingutulemusi',
+
+ // Shelves
+ 'shelf' => 'Riiul',
+ 'shelves' => 'Riiulid',
+ 'x_shelves' => ':count riiul|:count riiulit',
+ 'shelves_empty' => 'Ühtegi riiulit pole lisatud',
+ 'shelves_create' => 'Lisa uus riiul',
+ 'shelves_popular' => 'Populaarsed riiulid',
+ 'shelves_new' => 'Uued riiulid',
+ 'shelves_new_action' => 'Uus riiul',
+ 'shelves_popular_empty' => 'Siia tulevad kõige populaarsemad riiulid.',
+ 'shelves_new_empty' => 'Siia tulevad hiljuti lisatud riiulid.',
+ 'shelves_save' => 'Salvesta riiul',
+ 'shelves_books' => 'Raamatud sellel riiulil',
+ 'shelves_add_books' => 'Lisa sellele riiulile raamatuid',
+ 'shelves_drag_books' => 'Lohista raamatuid siia, et neid sellele riiulile lisada',
+ 'shelves_empty_contents' => 'Sellel riiulil ei ole ühtegi raamatut',
+ 'shelves_edit_and_assign' => 'Muuda riiulit, et siia raamatuid lisada',
+ 'shelves_edit_named' => 'Muuda riiulit :name',
+ 'shelves_edit' => 'Muuda riiulit',
+ 'shelves_delete' => 'Kustuta riiul',
+ 'shelves_delete_named' => 'Kustuta riiul :name',
+ 'shelves_delete_explain' => "See kustutab riiuli nimega ':name'. Raamatuid, mis on sellel riiulil, ei kustutata.",
+ 'shelves_delete_confirmation' => 'Kas oled kindel, et soovid selle riiuli kustutada?',
+ 'shelves_permissions' => 'Riiuli õigused',
+ 'shelves_permissions_updated' => 'Riiuli õigused muudetud',
+ 'shelves_permissions_active' => 'Riiuli õigused on aktiivsed',
+ 'shelves_permissions_cascade_warning' => 'Riiuli õigused ei rakendu automaatselt sellel olevatele raamatutele, kuna raamat võib olla korraga mitmel riiulil. Alloleva valiku abil saab aga riiuli õigused kopeerida raamatutele.',
+ 'shelves_permissions_create' => 'Riiuli lisamise õiguseid kasutatakse ainult alloleva tegevuse kaudu õiguste raamatutele kopeerimiseks. Need ei piira raamatute lisamist.',
+ 'shelves_copy_permissions_to_books' => 'Kopeeri õigused raamatutele',
+ 'shelves_copy_permissions' => 'Kopeeri õigused',
+ 'shelves_copy_permissions_explain' => 'See rakendab riiuli praegused õigused kõigile sellel olevatele raamatutele. Enne jätkamist veendu, et riiuli õiguste muudatused oleks salvestatud.',
+ 'shelves_copy_permission_success' => 'Riiuli õigused kopeeritud :count raamatule',
+
+ // Books
+ 'book' => 'Raamat',
+ 'books' => 'Raamatud',
+ 'x_books' => ':count raamat|:count raamatut',
+ 'books_empty' => 'Ühtegi raamatut pole lisatud',
+ 'books_popular' => 'Populaarsed raamatud',
+ 'books_recent' => 'Hiljutised raamatud',
+ 'books_new' => 'Uued raamatud',
+ 'books_new_action' => 'Uus raamat',
+ 'books_popular_empty' => 'Siia tulevad kõige populaarsemad raamatud.',
+ 'books_new_empty' => 'Siia tulevad hiljuti lisatud raamatud.',
+ 'books_create' => 'Lisa uus raamat',
+ 'books_delete' => 'Kustuta raamat',
+ 'books_delete_named' => 'Kustuta raamat :bookName',
+ 'books_delete_explain' => 'See kustutab raamatu nimega \':bookName\'. Kõik lehed ja peatükid kustutatakse samuti.',
+ 'books_delete_confirmation' => 'Kas oled kindel, et soovid selle raamatu kustutada?',
+ 'books_edit' => 'Muuda raamatut',
+ 'books_edit_named' => 'Muuda raamatut :bookName',
+ 'books_form_book_name' => 'Raamatu pealkiri',
+ 'books_save' => 'Salvesta raamat',
+ 'books_permissions' => 'Raamatu õigused',
+ 'books_permissions_updated' => 'Raamatu õigused muudetud',
+ 'books_empty_contents' => 'Ühtegi lehte ega peatükki pole lisatud.',
+ 'books_empty_create_page' => 'Lisa uus leht',
+ 'books_empty_sort_current_book' => 'Sorteeri raamat',
+ 'books_empty_add_chapter' => 'Lisa uus peatükk',
+ 'books_permissions_active' => 'Raamatu õigused on aktiivsed',
+ 'books_search_this' => 'Otsi sellest raamatust',
+ 'books_navigation' => 'Raamatu sisukord',
+ 'books_sort' => 'Sorteeri raamatu sisu',
+ 'books_sort_desc' => 'Liiguta raamatu sees peatükke ja lehti, et selle sisu ümber organiseerida. Saad lisada teisi raamatuid, mis võimaldab peatükke ja lehti lihtsasti raamatute vahel liigutada. Lisaks saad määrata automaatse sorteerimise reegli, et selle raamatu sisu muudatuste puhul automaatselt järjestada.',
+ 'books_sort_auto_sort' => 'Automaatne sorteerimine',
+ 'books_sort_auto_sort_active' => 'Automaatne sorteerimine aktiivne: :sortName',
+ 'books_sort_named' => 'Sorteeri raamat :bookName',
+ 'books_sort_name' => 'Sorteeri nime järgi',
+ 'books_sort_created' => 'Sorteeri loomisaja järgi',
+ 'books_sort_updated' => 'Sorteeri muutmisaja järgi',
+ 'books_sort_chapters_first' => 'Peatükid eespool',
+ 'books_sort_chapters_last' => 'Peatükid tagapool',
+ 'books_sort_show_other' => 'Näita teisi raamatuid',
+ 'books_sort_save' => 'Salvesta uus järjekord',
+ 'books_sort_show_other_desc' => 'Lisa siia teisi raamatuid, et neid järjestamisel kasutada ja võimaldada raamatutevahelist organiseerimist.',
+ 'books_sort_move_up' => 'Liiguta üles',
+ 'books_sort_move_down' => 'Liiguta alla',
+ 'books_sort_move_prev_book' => 'Liiguta eelmisesse raamatusse',
+ 'books_sort_move_next_book' => 'Liiguta järgmisesse raamatusse',
+ 'books_sort_move_prev_chapter' => 'Liiguta eelmisesse peatükki',
+ 'books_sort_move_next_chapter' => 'Liiguta järgmisesse peatükki',
+ 'books_sort_move_book_start' => 'Liiguta raamatu algusesse',
+ 'books_sort_move_book_end' => 'Liiguta raamatu lõppu',
+ 'books_sort_move_before_chapter' => 'Liiguta peatüki ette',
+ 'books_sort_move_after_chapter' => 'Liiguta peatüki järele',
+ 'books_copy' => 'Kopeeri raamat',
+ 'books_copy_success' => 'Raamat on kopeeritud',
+
+ // Chapters
+ 'chapter' => 'Peatükk',
+ 'chapters' => 'Peatükid',
+ 'x_chapters' => ':count peatükk|:count peatükki',
+ 'chapters_popular' => 'Populaarsed peatükid',
+ 'chapters_new' => 'Uus peatükk',
+ 'chapters_create' => 'Lisa uus peatükk',
+ 'chapters_delete' => 'Kustuta peatükk',
+ 'chapters_delete_named' => 'Kustuta peatükk :chapterName',
+ 'chapters_delete_explain' => 'See kustutab peatüki nimega \':chapterName\'. Kõik lehed selles peatükis kustutatakse samuti.',
+ 'chapters_delete_confirm' => 'Kas oled kindel, et soovid selle peatüki kustutada?',
+ 'chapters_edit' => 'Muuda peatükki',
+ 'chapters_edit_named' => 'Muuda peatükki :chapterName',
+ 'chapters_save' => 'Salvesta peatükk',
+ 'chapters_move' => 'Liiguta peatükk',
+ 'chapters_move_named' => 'Liiguta peatükk :chapterName',
+ 'chapters_copy' => 'Kopeeri peatükk',
+ 'chapters_copy_success' => 'Peatükk on kopeeritud',
+ 'chapters_permissions' => 'Peatüki õigused',
+ 'chapters_empty' => 'Selles peatükis ei ole lehti.',
+ 'chapters_permissions_active' => 'Peatüki õigused on aktiivsed',
+ 'chapters_permissions_success' => 'Peatüki õigused muudetud',
+ 'chapters_search_this' => 'Otsi sellest peatükist',
+ 'chapter_sort_book' => 'Sorteeri raamat',
+
+ // Pages
+ 'page' => 'Leht',
+ 'pages' => 'Lehed',
+ 'x_pages' => ':count leht|:count lehte',
+ 'pages_popular' => 'Populaarsed lehed',
+ 'pages_new' => 'Uus leht',
+ 'pages_attachments' => 'Manused',
+ 'pages_navigation' => 'Lehe sisukord',
+ 'pages_delete' => 'Kustuta leht',
+ 'pages_delete_named' => 'Kustuta leht :pageName',
+ 'pages_delete_draft_named' => 'Kustuta mustand :pageName',
+ 'pages_delete_draft' => 'Kustuta mustand',
+ 'pages_delete_success' => 'Leht kustutatud',
+ 'pages_delete_draft_success' => 'Mustand kustutatud',
+ 'pages_delete_warning_template' => 'See leht on valitud raamatu või peatüki lehe malliks. Pärast selle lehe kustutamist ei ole vastavatel raamatutel või peatükkidel enam vaikimisi lehe malli.',
+ 'pages_delete_confirm' => 'Kas oled kindel, et soovid selle lehe kustutada?',
+ 'pages_delete_draft_confirm' => 'Kas oled kindel, et soovid selle mustandi kustutada?',
+ 'pages_editing_named' => 'Lehe :pageName muutmine',
+ 'pages_edit_draft_options' => 'Mustandi valikud',
+ 'pages_edit_save_draft' => 'Salvesta mustand',
+ 'pages_edit_draft' => 'Muuda mustandit',
+ 'pages_editing_draft' => 'Mustandi muutmine',
+ 'pages_editing_page' => 'Lehe muutmine',
+ 'pages_edit_draft_save_at' => 'Mustand salvestatud ',
+ 'pages_edit_delete_draft' => 'Kustuta mustand',
+ 'pages_edit_delete_draft_confirm' => 'Kas oled kindel, et soovid mustandi muudatused kustutada? Kõik viimasest salvestamisest saadik tehtud muudatused kaovad ning redaktorisse laetakse viimati salvestatud seis.',
+ 'pages_edit_discard_draft' => 'Loobu mustandist',
+ 'pages_edit_switch_to_markdown' => 'Kasuta Markdown redaktorit',
+ 'pages_edit_switch_to_markdown_clean' => '(Puhas sisu)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stabiilne sisu)',
+ 'pages_edit_switch_to_wysiwyg' => 'Kasuta WYSIWYG redaktorit',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Kasuta uut tekstiredaktorit',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(beetatestimisel)',
+ 'pages_edit_set_changelog' => 'Muudatuste logi',
+ 'pages_edit_enter_changelog_desc' => 'Sisesta tehtud muudatuste lühikirjeldus',
+ 'pages_edit_enter_changelog' => 'Salvesta muudatuste logi',
+ 'pages_editor_switch_title' => 'Vaheta redaktorit',
+ 'pages_editor_switch_are_you_sure' => 'Kas oled kindel, et soovid selle lehe redaktorit muuta?',
+ 'pages_editor_switch_consider_following' => 'Redaktori muutmisel pea meeles järgnevat:',
+ 'pages_editor_switch_consideration_a' => 'Pärast salvestamist kasutatakse valitud redaktorit ka tulevikus, sh. olukordades, kus ei pruugi olla võimalik redaktori tüüpi muuta.',
+ 'pages_editor_switch_consideration_b' => 'See võib teatud olukordades põhjustada detailide ja süntaksi kaotsiminekut.',
+ 'pages_editor_switch_consideration_c' => 'Viimasest salvestamisest saadik tehtud siltide ja muudatuste logi muudatused ei jää alles.',
+ 'pages_save' => 'Salvesta leht',
+ 'pages_title' => 'Lehe pealkiri',
+ 'pages_name' => 'Lehe nimetus',
+ 'pages_md_editor' => 'Redaktor',
+ 'pages_md_preview' => 'Eelvaade',
+ 'pages_md_insert_image' => 'Lisa pilt',
+ 'pages_md_insert_link' => 'Lisa viide',
+ 'pages_md_insert_drawing' => 'Lisa joonis',
+ 'pages_md_show_preview' => 'Näita eelvaadet',
+ 'pages_md_sync_scroll' => 'Sünkrooni eelvaate kerimine',
+ 'pages_md_plain_editor' => 'Lihttekstiredaktor',
+ 'pages_drawing_unsaved' => 'Leiti salvestamata joonis',
+ 'pages_drawing_unsaved_confirm' => 'Varasemast ebaõnnestunud salvestuskatsest leiti salvestamata joonis. Kas soovid salvestamata joonise taastada ja selle muutmist jätkata?',
+ 'pages_not_in_chapter' => 'Leht ei kuulu peatüki alla',
+ 'pages_move' => 'Liiguta leht',
+ 'pages_copy' => 'Kopeeri leht',
+ 'pages_copy_desination' => 'Kopeerimise sihtpunkt',
+ 'pages_copy_success' => 'Leht on kopeeritud',
+ 'pages_permissions' => 'Lehe õigused',
+ 'pages_permissions_success' => 'Lehe õigused muudetud',
+ 'pages_revision' => 'Redaktsioon',
+ 'pages_revisions' => 'Lehe redaktsioonid',
+ 'pages_revisions_desc' => 'Allpool on toodud kõik selle lehe eelmised redaktsioonid. Kui õigused lubavad, saad sa vanu redaktsioone vaadata, võrrelda ja taastada. Siin ei pruugi kajastuda lehe täielik ajalugu, kuna sõltuvalt süsteemi seadistusest võidakse vanu redaktsioone automaatselt kustutada.',
+ 'pages_revisions_named' => 'Lehe :pageName redaktsioonid',
+ 'pages_revision_named' => 'Lehe :pageName redaktsioon',
+ 'pages_revision_restored_from' => 'Taastatud redaktsioonist #:id; :summary',
+ 'pages_revisions_created_by' => 'Autor',
+ 'pages_revisions_date' => 'Redaktsiooni aeg',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Redaktsiooni number',
+ 'pages_revisions_numbered' => 'Redaktsioon #:id',
+ 'pages_revisions_numbered_changes' => 'Redaktsiooni #:id muudatused',
+ 'pages_revisions_editor' => 'Redaktori tüüp',
+ 'pages_revisions_changelog' => 'Muudatuste ajalugu',
+ 'pages_revisions_changes' => 'Muudatused',
+ 'pages_revisions_current' => 'Praegune versioon',
+ 'pages_revisions_preview' => 'Eelvaade',
+ 'pages_revisions_restore' => 'Taasta',
+ 'pages_revisions_none' => 'Sellel lehel ei ole redaktsioone',
+ 'pages_copy_link' => 'Kopeeri link',
+ 'pages_edit_content_link' => 'Hüppa redaktoris sektsioonini',
+ 'pages_pointer_enter_mode' => 'Ava sektsiooni valiku režiim',
+ 'pages_pointer_label' => 'Lehe sektsiooni valikud',
+ 'pages_pointer_permalink' => 'Lehe sektsiooni permalink',
+ 'pages_pointer_include_tag' => 'Lehe sektsiooni viitesilt',
+ 'pages_pointer_toggle_link' => 'Permalingi režiim, vajuta viitesildi kuvamiseks',
+ 'pages_pointer_toggle_include' => 'Viitesildi režiim, vajuta permalingi kuvamiseks',
+ 'pages_permissions_active' => 'Lehe õigused on aktiivsed',
+ 'pages_initial_revision' => 'Esimene redaktsioon',
+ 'pages_references_update_revision' => 'Seesmiste linkide automaatne uuendamine',
+ 'pages_initial_name' => 'Uus leht',
+ 'pages_editing_draft_notification' => 'Sa muudad mustandit, mis salvestati viimati :timeDiff.',
+ 'pages_draft_edited_notification' => 'Seda lehte on sellest ajast saadid uuendatud. Soovitame mustandist loobuda.',
+ 'pages_draft_page_changed_since_creation' => 'Seda lehte on pärast mustandi loomist muudetud. Soovitame mustandi ära visata või olla hoolikas, et mitte lehe muudatusi üle kirjutada.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count kasutajat on selle lehe muutmist alustanud',
+ 'start_b' => ':userName alustas selle lehe muutmist',
+ 'time_a' => 'lehe viimasest muutmisest alates',
+ 'time_b' => 'viimase :minCount minuti jooksul',
+ 'message' => ':start :time. Ärge teineteise muudatusi üle kirjutage!',
+ ],
+ 'pages_draft_discarded' => 'Mustand ära visatud! Redaktorisse laeti lehe värske sisu',
+ 'pages_draft_deleted' => 'Mustand kustutatud! Redaktorisse laeti lehe värske sisu',
+ 'pages_specific' => 'Spetsiifiline leht',
+ 'pages_is_template' => 'Lehe mall',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Kuva/peida külgriba',
+ 'page_tags' => 'Lehe sildid',
+ 'chapter_tags' => 'Peatüki sildid',
+ 'book_tags' => 'Raamatu sildid',
+ 'shelf_tags' => 'Riiuli sildid',
+ 'tag' => 'Silt',
+ 'tags' => 'Sildid',
+ 'tags_index_desc' => 'Silte saab kasutada süsteemis oleva sisu paindlikuks kategoriseerimiseks. Siltidel saab olla nii võti kui väärtus, millest viimane on valikuline. Pärast määramist saab sisu otsida sildi nime ja väärtuse kaudu.',
+ 'tag_name' => 'Sildi nimi',
+ 'tag_value' => 'Sildi väärtus (valikuline)',
+ 'tags_explain' => "Lisa silte, et sisu paremini organiseerida.\nVeel täpsemaks organiseerimiseks saad siltidele väärtuseid määrata.",
+ 'tags_add' => 'Lisa veel üks silt',
+ 'tags_remove' => 'Eemalda see silt',
+ 'tags_usages' => 'Siltide kasutus',
+ 'tags_assigned_pages' => 'Lisatud lehtedele',
+ 'tags_assigned_chapters' => 'Lisatud peatükkidele',
+ 'tags_assigned_books' => 'Lisatud raamatutele',
+ 'tags_assigned_shelves' => 'Lisatud riiulitele',
+ 'tags_x_unique_values' => ':count unikaalset',
+ 'tags_all_values' => 'Kõik väärtused',
+ 'tags_view_tags' => 'Vaata silte',
+ 'tags_view_existing_tags' => 'Vaata olemasolevaid silte',
+ 'tags_list_empty_hint' => 'Silte saab lisada lehe redaktori külgmenüü kaudu või raamatu, peatüki või riiuli andmeid muutes.',
+ 'attachments' => 'Manused',
+ 'attachments_explain' => 'Laadi üles faile või lisa linke, mida lehel kuvada. Need on nähtavad külgmenüüs.',
+ 'attachments_explain_instant_save' => 'Muudatused salvestatakse koheselt.',
+ 'attachments_upload' => 'Laadi fail üles',
+ 'attachments_link' => 'Lisa link',
+ 'attachments_upload_drop' => 'Saad ka faile siia lohistada, et neid manusena üles laadida.',
+ 'attachments_set_link' => 'Määra link',
+ 'attachments_delete' => 'Kas oled kindel, et soovid selle manuse kustutada?',
+ 'attachments_dropzone' => 'Lohista failid üleslaadimiseks siia',
+ 'attachments_no_files' => 'Üleslaaditud faile ei ole',
+ 'attachments_explain_link' => 'Faili üleslaadimise asemel saad lingi lisada. See võib viidata teisele lehele või failile kuskil pilves.',
+ 'attachments_link_name' => 'Lingi nimi',
+ 'attachment_link' => 'Manuse link',
+ 'attachments_link_url' => 'Link failile',
+ 'attachments_link_url_hint' => 'Lehekülje või faili URL',
+ 'attach' => 'Lisa',
+ 'attachments_insert_link' => 'Lisa manuse link lehele',
+ 'attachments_edit_file' => 'Muuda faili',
+ 'attachments_edit_file_name' => 'Faili nimi',
+ 'attachments_edit_drop_upload' => 'Manuse üle kirjutamiseks lohista failid või klõpsa siin',
+ 'attachments_order_updated' => 'Manuste järjekord muudetud',
+ 'attachments_updated_success' => 'Manuse andmed muudetud',
+ 'attachments_deleted' => 'Manus kustutatud',
+ 'attachments_file_uploaded' => 'Fail on üles laaditud',
+ 'attachments_file_updated' => 'Fail on muudetud',
+ 'attachments_link_attached' => 'Link on lehele lisatud',
+ 'templates' => 'Mallid',
+ 'templates_set_as_template' => 'Leht on mall',
+ 'templates_explain_set_as_template' => 'Sa saad määrata selle lehe malliks, nii et selle sisu saab kasutada uute lehtede lisamisel. Kui teistel kasutajatel on selle lehe vaatamiseks õigus, saavad ka nemad seda mallina kasutada.',
+ 'templates_replace_content' => 'Asenda lehe sisu',
+ 'templates_append_content' => 'Lisa lehe sisu järele',
+ 'templates_prepend_content' => 'Lisa lehe sisu ette',
+
+ // Profile View
+ 'profile_user_for_x' => 'Kasutaja olnud :time',
+ 'profile_created_content' => 'Lisatud sisu',
+ 'profile_not_created_pages' => ':userName ei ole ühtegi lehte lisanud',
+ 'profile_not_created_chapters' => ':userName ei ole ühtegi peatükki lisanud',
+ 'profile_not_created_books' => ':userName ei ole ühtegi raamatut lisanud',
+ 'profile_not_created_shelves' => ':userName ei ole ühtegi riiulit lisanud',
+
+ // Comments
+ 'comment' => 'Kommentaar',
+ 'comments' => 'Kommentaarid',
+ 'comment_add' => 'Lisa kommentaar',
+ 'comment_none' => 'Pole kommentaare, mida kuvada',
+ 'comment_placeholder' => 'Jäta siia kommentaar',
+ 'comment_thread_count' => ':count kommentaarilõim|:count kommentaarilõime',
+ 'comment_archived_count' => ':count arhiveeritud',
+ 'comment_archived_threads' => 'Arhiveeritud lõimed',
+ 'comment_save' => 'Salvesta kommentaar',
+ 'comment_new' => 'Uus kommentaar',
+ 'comment_created' => 'kommenteeris :createDiff',
+ 'comment_updated' => 'Muudetud :updateDiff :username poolt',
+ 'comment_updated_indicator' => 'Uuendatud',
+ 'comment_deleted_success' => 'Kommentaar kustutatud',
+ 'comment_created_success' => 'Kommentaar lisatud',
+ 'comment_updated_success' => 'Kommentaar muudetud',
+ 'comment_archive_success' => 'Kommentaar arhiveeritud',
+ 'comment_unarchive_success' => 'Kommentaar arhiivist taastatud',
+ 'comment_view' => 'Vaata kommentaari',
+ 'comment_jump_to_thread' => 'Hüppa lõime juurde',
+ 'comment_delete_confirm' => 'Kas oled kindel, et soovid selle kommentaari kustutada?',
+ 'comment_in_reply_to' => 'Vastus kommentaarile :commentId',
+ 'comment_reference' => 'Viide',
+ 'comment_reference_outdated' => '(Aegunud)',
+ 'comment_editor_explain' => 'Siin on lehele jäetud kommentaarid. Kommentaare saab lisada ja hallata salvestatud lehte vaadates.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Kas oled kindel, et soovid selle redaktsiooni kustutada?',
+ 'revision_restore_confirm' => 'Kas oled kindel, et soovid selle redaktsiooni taastada? Lehe praegune sisu asendatakse.',
+ 'revision_cannot_delete_latest' => 'Kõige viimast redaktsiooni ei saa kustutada.',
+
+ // Copy view
+ 'copy_consider' => 'Sisu kopeerimisel pea järgnevat meeles.',
+ 'copy_consider_permissions' => 'Kohandatud õiguseid ei kopeerita.',
+ 'copy_consider_owner' => 'Sind määratakse kopeeritud sisu omanikuks.',
+ 'copy_consider_images' => 'Lehel olevaid pildifaile ei dubleerita. Pildid säilitavad viite lehele, millele nad algselt lisati.',
+ 'copy_consider_attachments' => 'Lehe manuseid ei kopeerita.',
+ 'copy_consider_access' => 'Asukoha, omaniku või õiguste muudatused võivad teha sisu kättesaadavaks neile, kellel varem sellele ligipääs puudus.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Muuda riiuliks',
+ 'convert_to_shelf_contents_desc' => 'Saad muuta selle raamatu uueks, sama sisuga riiuliks. Raamatu peatükid muudetakse uuteks raamatuteks. Kui raamat sisaldab lehti, mis ei kuulu ühegi peatüki alla, nimetatakse see raamat ümber ning see saab uue riiuli osana sisaldama neid lehti.',
+ 'convert_to_shelf_permissions_desc' => 'Raamatule määratud õigused kopeeritakse uuele riiulile ja kõigile uutele raamatutele, millel ei ole endal määratud õiguseid. Pane tähele, et riiulitele määratud õigused ei rakendu automaatselt sisule, nagu raamatute puhul.',
+ 'convert_book' => 'Muuda raamat',
+ 'convert_book_confirm' => 'Kas oled kindel, et soovid selle raamatu muuta?',
+ 'convert_undo_warning' => 'Seda ei saa lihtsasti tagasi võtta.',
+ 'convert_to_book' => 'Muuda raamatuks',
+ 'convert_to_book_desc' => 'Saad muuta selle peatüki uueks, sama sisuga raamatuks. Peatükile määratud õigused kopeeritakse uuele raamatule, aga olemasolevalt raamatult pärit õiguseid ei kopeerita, mis võib põhjustada muudatusi ligipääsudes.',
+ 'convert_chapter' => 'Muud peatükk',
+ 'convert_chapter_confirm' => 'Kas oled kindel, et soovid selle peatüki muuta?',
+
+ // References
+ 'references' => 'Viited',
+ 'references_none' => 'Sellele objektile ei ole viiteid.',
+ 'references_to_desc' => 'Allpool on kogu teadaolev sisu süsteemis, mis sellele objektile viitab.',
+
+ // Watch Options
+ 'watch' => 'Jälgi',
+ 'watch_title_default' => 'Vaikimisi eelistused',
+ 'watch_desc_default' => 'Lähtesta jälgimine vaikimisi eelistustele.',
+ 'watch_title_ignore' => 'Ignoreeri',
+ 'watch_desc_ignore' => 'Ignoreeri kõiki teavitusi, ka kasutaja tasemel määratud eelistusi.',
+ 'watch_title_new' => 'Uued lehed',
+ 'watch_desc_new' => 'Teavita, kui sellesse objekti lisatakse uus leht.',
+ 'watch_title_updates' => 'Kõik lehed',
+ 'watch_desc_updates' => 'Teavita kõigist uutest lehtedest ja lehtede muudatustest.',
+ 'watch_desc_updates_page' => 'Teavita kõigist lehtede muudatustest.',
+ 'watch_title_comments' => 'Kõik lehed ja kommentaarid',
+ 'watch_desc_comments' => 'Teavita kõigist uutest lehtedest, lehtede muudatustest ja uutest kommentaaridest.',
+ 'watch_desc_comments_page' => 'Teavita lehtede muudatustest ja uutest kommentaaridest.',
+ 'watch_change_default' => 'Muuda vaikimisi teavituste eelistusi',
+ 'watch_detail_ignore' => 'Teavitusi ignoreeritakse',
+ 'watch_detail_new' => 'Jälgitakse uusi lehti',
+ 'watch_detail_updates' => 'Jälgitakse uusi lehti ja muudatusi',
+ 'watch_detail_comments' => 'Jälgitakse uusi lehti, muudatusi ja kommentaare',
+ 'watch_detail_parent_book' => 'Jälgitakse raamatu kaudu',
+ 'watch_detail_parent_book_ignore' => 'Ignoreeritakse raamatu kaudu',
+ 'watch_detail_parent_chapter' => 'Jälgitakse peatüki kaudu',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoreeritakse peatüki kaudu',
+];
diff --git a/lang/et/errors.php b/lang/et/errors.php
new file mode 100644
index 00000000000..78a9d8c47fb
--- /dev/null
+++ b/lang/et/errors.php
@@ -0,0 +1,135 @@
+ 'Sul puudub õigus selle lehe vaatamiseks.',
+ 'permissionJson' => 'Sul puudub õigus selle tegevuse teostamiseks.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'See e-posti aadress on juba seotud teise kasutajaga.',
+ 'auth_pre_register_theme_prevention' => 'Etteantud detailidega kasutajakontot ei õnnestunud registreerida',
+ 'email_already_confirmed' => 'E-posti aadress on juba kinnitatud. Proovi sisse logida.',
+ 'email_confirmation_invalid' => 'Kinnituslink ei ole kehtiv või on seda juba kasutatud. Proovi uuesti registreeruda.',
+ 'email_confirmation_expired' => 'Kinnituslink on aegunud. Sulle saadeti aadressi kinnitamiseks uus e-kiri.',
+ 'email_confirmation_awaiting' => 'Selle kasutajakonto e-posti aadress vajab kinnitamist',
+ 'ldap_fail_anonymous' => 'LDAP anonüümne ligipääs ebaõnnestus',
+ 'ldap_fail_authed' => 'LDAP ligipääs antud nime ja parooliga ebaõnnestus',
+ 'ldap_extension_not_installed' => 'PHP LDAP laiendus ei ole paigaldatud',
+ 'ldap_cannot_connect' => 'Ühendus LDAP serveriga ebaõnnestus',
+ 'saml_already_logged_in' => 'Juba sisse logitud',
+ 'saml_no_email_address' => 'Selle kasutaja e-posti aadressi ei õnnestunud välisest autentimissüsteemist leida',
+ 'saml_invalid_response_id' => 'Välisest autentimissüsteemist tulnud päringut ei algatatud sellest rakendusest. Seda viga võib põhjustada pärast sisselogimist tagasi liikumine.',
+ 'saml_fail_authed' => 'Sisenemine :system kaudu ebaõnnestus, süsteem ei andnud volitust',
+ 'oidc_already_logged_in' => 'Juba sisse logitud',
+ 'oidc_no_email_address' => 'Selle kasutaja e-posti aadressi ei õnnestunud välisest autentimissüsteemist leida',
+ 'oidc_fail_authed' => 'Sisenemine :system kaudu ebaõnnestus, süsteem ei andnud volitust',
+ 'social_no_action_defined' => 'Tegevus on defineerimata',
+ 'social_login_bad_response' => ":socialAccount kaudu sisselogimisel tekkis viga: \n:error",
+ 'social_account_in_use' => 'See :socialAccount konto on juba kasutusel, proovi :socialAccount kaudu sisse logida.',
+ 'social_account_email_in_use' => 'E-posti aadress :email on juba kasutusel. Kui sul on juba kasutajakonto, saad oma :socialAccount konto siduda profiili seadetes.',
+ 'social_account_existing' => 'See :socialAccount konto on juba seotud su profiiliga.',
+ 'social_account_already_used_existing' => 'See :socialAccount konto on juba seotud teise kasutajaga.',
+ 'social_account_not_used' => 'See :socialAccount konto ei ole seotud ühegi kasutajaga. Seosta see oma profiili seadetes. ',
+ 'social_account_register_instructions' => 'Kui sul pole veel kasutajakontot, saad selle registreerida :socialAccount kaudu.',
+ 'social_driver_not_found' => 'Sotsiaalmeedia kontode draiverit ei leitud',
+ 'social_driver_not_configured' => 'Sinu :socialAccount konto seaded ei ole korrektsed.',
+ 'invite_token_expired' => 'Link on aegunud. Võid selle asemel proovida oma konto parooli lähtestada.',
+ 'login_user_not_found' => 'Selle tegevuse jaoks ei leitud kasutajat.',
+
+ // System
+ 'path_not_writable' => 'Faili asukohaga :filePath ei õnnestunud üles laadida. Veendu, et serveril on kirjutusõigused.',
+ 'cannot_get_image_from_url' => 'Ei suutnud laadida pilti aadressilt :url',
+ 'cannot_create_thumbs' => 'Server ei saa piltide eelvaateid tekitada. Veendu, et PHP GD laiendus on paigaldatud.',
+ 'server_upload_limit' => 'Server ei luba nii suurte failide üleslaadimist. Proovi väiksema failiga.',
+ 'server_post_limit' => 'Server ei saa etteantud andmemahtu vastu võtta. Proovi uuesti väiksema failiga.',
+ 'uploaded' => 'Server ei luba nii suurte failide üleslaadimist. Proovi väiksema failiga.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Pildi üleslaadimisel tekkis viga',
+ 'image_upload_type_error' => 'Pildifaili tüüp ei ole korrektne',
+ 'image_upload_replace_type' => 'Pildifaili asendused peavad olema sama tüüpi',
+ 'image_upload_memory_limit' => 'Pildi üleslaadimine ja/või eelvaadete tekitamine ebaõnnestus süsteemsete ressursipiirangute tõttu.',
+ 'image_thumbnail_memory_limit' => 'Pildi eelvaadete tekitamine ebaõnnestus süsteemsete ressursipiirangute tõttu.',
+ 'image_gallery_thumbnail_memory_limit' => 'Galerii eelvaadete tekitamine ebaõnnestus süsteemsete ressursipiirangute tõttu.',
+ 'drawing_data_not_found' => 'Joonise andmeid ei õnnestunud laadida. Joonist ei pruugi enam eksisteerida, või sul puuduvad õigused selle vaatamiseks.',
+
+ // Attachments
+ 'attachment_not_found' => 'Manust ei leitud',
+ 'attachment_upload_error' => 'Manuse faili üleslaadimisel tekkis viga',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Mustandi salvestamine ebaõnnestus. Kontrolli oma internetiühendust',
+ 'page_draft_delete_fail' => 'Mustandi kustutamine ja lehe salvestatud seisu laadimine ebaõnnestus',
+ 'page_custom_home_deletion' => 'Ei saa kustutada lehte, mis on määratud avaleheks',
+
+ // Entities
+ 'entity_not_found' => 'Objekti ei leitud',
+ 'bookshelf_not_found' => 'Riiulit ei leitud',
+ 'book_not_found' => 'Raamatut ei leitud',
+ 'page_not_found' => 'Lehte ei leitud',
+ 'chapter_not_found' => 'Peatükki ei leitud',
+ 'selected_book_not_found' => 'Valitud raamatut ei leitud',
+ 'selected_book_chapter_not_found' => 'Valitud raamatut või peatükki ei leitud',
+ 'guests_cannot_save_drafts' => 'Külalised ei saa mustandeid salvestada',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Ainsat administraatorit ei saa kustutada',
+ 'users_cannot_delete_guest' => 'Külaliskasutajat ei saa kustutada',
+ 'users_could_not_send_invite' => 'Kasutajat ei õnnestunud luua, kuna kutse e-kirja saatmine ebaõnnestus',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Seda rolli ei saa muuta',
+ 'role_system_cannot_be_deleted' => 'See roll on süsteemne ja seda ei saa kustutada',
+ 'role_registration_default_cannot_delete' => 'Seda rolli ei saa kustutada, kuna see on seatud uute kasutajate vaikimisi rolliks',
+ 'role_cannot_remove_only_admin' => 'See kasutaja on ainus, kellel on administraatori roll. Enne kustutamist lisa administraatori roll mõnele teisele kasutajale.',
+
+ // Comments
+ 'comment_list' => 'Kommentaaride pärimisel tekkis viga.',
+ 'cannot_add_comment_to_draft' => 'Mustandile ei saa kommentaare lisada.',
+ 'comment_add' => 'Kommentaari lisamisel / muutmisel tekkis viga.',
+ 'comment_delete' => 'Kommentaari kustutamisel tekkis viga.',
+ 'empty_comment' => 'Tühja kommentaari ei saa lisada.',
+
+ // Error pages
+ '404_page_not_found' => 'Lehekülge ei leitud',
+ 'sorry_page_not_found' => 'Vabandust, soovitud lehekülge ei leitud.',
+ 'sorry_page_not_found_permission_warning' => 'Kui see lehekülg peaks kindlalt olemas olema, ei pruugi sul olla õigust selle vaatamiseks.',
+ 'image_not_found' => 'Pildifaili ei leitud',
+ 'image_not_found_subtitle' => 'Vabandust, soovitud pildifaili ei leitud.',
+ 'image_not_found_details' => 'Kui sa eeldasid, et see pildifail on olemas, võib see olla kustutatud.',
+ 'return_home' => 'Tagasi avalehele',
+ 'error_occurred' => 'Tekkis viga',
+ 'app_down' => ':appName on hetkel maas',
+ 'back_soon' => 'See on varsti tagasi.',
+
+ // Import
+ 'import_zip_cant_read' => 'ZIP-faili lugemine ebaõnnestus.',
+ 'import_zip_cant_decode_data' => 'ZIP-failist ei leitud data.json sisu.',
+ 'import_zip_no_data' => 'ZIP-failist ei leitud raamatute, peatükkide või lehtede sisu.',
+ 'import_zip_data_too_large' => 'ZIP-faili data.json sisu ületab rakenduses seadistatud maksimaalse failisuuruse.',
+ 'import_validation_failed' => 'Imporditud ZIP-faili valideerimine ebaõnnestus vigadega:',
+ 'import_zip_failed_notification' => 'ZIP-faili importimine ebaõnnestus.',
+ 'import_perms_books' => 'Sul puuduvad õigused raamatute lisamiseks.',
+ 'import_perms_chapters' => 'Sul puuduvad õigused peatükkide lisamiseks.',
+ 'import_perms_pages' => 'Sul puuduvad õigused lehtede lisamiseks.',
+ 'import_perms_images' => 'Sul puuduvad õigused piltide lisamiseks.',
+ 'import_perms_attachments' => 'Sul puuduvad õigused manuste lisamiseks.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Päringust ei leitud volitustunnust',
+ 'api_bad_authorization_format' => 'Päringust leiti volitustunnus, aga see ei olnud korrektses formaadis',
+ 'api_user_token_not_found' => 'Volitustunnusele vastavat API tunnust ei leitud',
+ 'api_incorrect_token_secret' => 'API tunnusele lisatud salajane võti ei ole korrektne',
+ 'api_user_no_api_permission' => 'Selle API tunnuse omanikul ei ole õigust API päringuid teha',
+ 'api_user_token_expired' => 'Volitustunnus on aegunud',
+ 'api_cookie_auth_only_get' => 'Küpsistega autentimisel on API kasutamisel lubatud ainult GET päringud',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Test e-kirja saatmisel tekkis viga:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'URL ei klapi ühegi lubatud SSR hostiga',
+];
diff --git a/lang/et/notifications.php b/lang/et/notifications.php
new file mode 100644
index 00000000000..2843d5799b4
--- /dev/null
+++ b/lang/et/notifications.php
@@ -0,0 +1,29 @@
+ 'Uus kommentaar lehel: :pageName',
+ 'new_comment_intro' => 'Rakenduses :appName kommenteeriti lehte:',
+ 'new_page_subject' => 'Uus leht: :pageName',
+ 'new_page_intro' => 'Rakenduses :appName lisati uus leht:',
+ 'updated_page_subject' => 'Muudetud leht: :pageName',
+ 'updated_page_intro' => 'Rakenduses :appName muudeti lehte:',
+ 'updated_page_debounce' => 'Et vältida liigseid teavitusi, ei saadeta sulle mõnda aega teavitusi selle lehe muutmiste kohta sama kasutaja poolt.',
+ 'comment_mention_subject' => 'Sind mainiti kommentaaris lehel: :pageName',
+ 'comment_mention_intro' => 'Sind mainiti kommentaaris rakenduses :appName:',
+
+ 'detail_page_name' => 'Lehe nimetus:',
+ 'detail_page_path' => 'Lehe asukoht:',
+ 'detail_commenter' => 'Kommenteerija:',
+ 'detail_comment' => 'Kommentaar:',
+ 'detail_created_by' => 'Autor:',
+ 'detail_updated_by' => 'Muutja:',
+
+ 'action_view_comment' => 'Vaata kommentaari',
+ 'action_view_page' => 'Vaata lehte',
+
+ 'footer_reason' => 'See teavitus saadeti sulle, sest :link sisaldavad selle objekti kohta sellist tegevust.',
+ 'footer_reason_link' => 'sinu teavituste eelistused',
+];
diff --git a/lang/et/pagination.php b/lang/et/pagination.php
new file mode 100644
index 00000000000..c32b7f379b6
--- /dev/null
+++ b/lang/et/pagination.php
@@ -0,0 +1,12 @@
+ '« Eelmine',
+ 'next' => 'Järgmine »',
+
+];
diff --git a/lang/et/passwords.php b/lang/et/passwords.php
new file mode 100644
index 00000000000..8559d60b2de
--- /dev/null
+++ b/lang/et/passwords.php
@@ -0,0 +1,15 @@
+ 'Paroolides peab olema vähemalt kaheksa tähemärki ja nad peavad omavahel ühtima.',
+ 'user' => "Sellise e-posti aadressiga kasutajat ei leitud.",
+ 'token' => 'Parooli lähtestamise link ei kehti selle e-posti aadressiga.',
+ 'sent' => 'Parooli lähtestamise link saadeti e-postiga!',
+ 'reset' => 'Parool on lähtestatud!',
+
+];
diff --git a/lang/et/preferences.php b/lang/et/preferences.php
new file mode 100644
index 00000000000..a4003463c3c
--- /dev/null
+++ b/lang/et/preferences.php
@@ -0,0 +1,52 @@
+ 'Minu konto',
+
+ 'shortcuts' => 'Kiirklahvid',
+ 'shortcuts_interface' => 'Kasutajaliidese eelistused',
+ 'shortcuts_toggle_desc' => 'Siit saad sisse ja välja lülitada navigeerimiseks ja tegevusteks kasutatavad kiirklahvid.',
+ 'shortcuts_customize_desc' => 'Allpool saad iga kiirklahvi kohandada. Pärast kiirklahvile vastava tekstivälja valimist vajuta lihtsalt soovitud klahvikombinatsiooni.',
+ 'shortcuts_toggle_label' => 'Kiirklahvid sisse lülitatud',
+ 'shortcuts_section_navigation' => 'Navigatsioon',
+ 'shortcuts_section_actions' => 'Sagedased tegevused',
+ 'shortcuts_save' => 'Salvesta kiirklahvid',
+ 'shortcuts_overlay_desc' => 'Märkus: Kui kiirklahvid on sisse lülitatud, saab "?" vajutades kuvada abiinfo, mis märgib ära kõigi hetkel ekraanil nähtavate tegevuste kiirklahvid.',
+ 'shortcuts_update_success' => 'Kiirklahvide eelistused on salvestatud!',
+ 'shortcuts_overview_desc' => 'Halda klaviatuuri kiirklahve süsteemi kasutajaliideses navigeerimiseks.',
+
+ 'notifications' => 'Teavituste eelistused',
+ 'notifications_desc' => 'Halda e-posti teavitusi, mis saadetakse teatud tegevuste puhul.',
+ 'notifications_opt_own_page_changes' => 'Teavita muudatustest minu lehtedel',
+ 'notifications_opt_own_page_comments' => 'Teavita kommentaaridest minu lehtedel',
+ 'notifications_opt_comment_mentions' => 'Teavita mind, kui mind kommentaaris mainitakse',
+ 'notifications_opt_comment_replies' => 'Teavita vastustest minu kommentaaridele',
+ 'notifications_save' => 'Salvesta eelistused',
+ 'notifications_update_success' => 'Teavituste eelistused on salvestatud!',
+ 'notifications_watched' => 'Jälgitud ja ignoreeritud objektid',
+ 'notifications_watched_desc' => 'Allpool on objektid, millele on määratud kohaldatud jälgimise eelistused. Eelistuste muutmiseks ava vastav objekt ning leia jälgimise valikud külgmenüüs.',
+
+ 'auth' => 'Ligipääs ja turvalisus',
+ 'auth_change_password' => 'Muuda parool',
+ 'auth_change_password_desc' => 'Muuda parooli, millega rakendusse sisse logid. See peab olema vähemalt 8 tähemärki.',
+ 'auth_change_password_success' => 'Parool on muudetud!',
+
+ 'profile' => 'Profiili detailid',
+ 'profile_desc' => 'Halda oma konto andmeid, mis sind teistele kasutajatele esindab, lisaks andmetele, mida kasutatakse suhtluseks ja süsteemi kohaldamiseks.',
+ 'profile_view_public' => 'Vaata avalikku profiili',
+ 'profile_name_desc' => 'Seadista oma avalik nimi, mis on nähtav teistele kasutajatele sinu tehtud tegevuste ja sulle kuuluva sisu kaudu.',
+ 'profile_email_desc' => 'Seda e-posti aadressi kasutatakse teavituste saatmiseks ning, sõltuvalt aktiivsest autentimismeetodist, süsteemile ligipääsemiseks.',
+ 'profile_email_no_permission' => 'Kahjuks ei ole sul luba oma e-posti aadressi muuta. Kui soovid seda muuta, pead administraatoriga ühendust võtma.',
+ 'profile_avatar_desc' => 'Vali pilt, mis sind süsteemis teistele kasutajatele esindab. Ideaalis peaks see pilt olema ruudukujuline ning 256px kõrge ja lai.',
+ 'profile_admin_options' => 'Administraatori valikud',
+ 'profile_admin_options_desc' => 'Täiendavad administraatori-taseme valikud, näiteks rollide haldamiseks, on rakenduse "Seaded > Kasutajad" all sinu kasutajakonto vaates.',
+
+ 'delete_account' => 'Kustuta konto',
+ 'delete_my_account' => 'Kustuta minu konto',
+ 'delete_my_account_desc' => 'See kustutab su kasutajakonto süsteemist. Sa ei saa kontot taastada ega seda tegevust tagasi võtta. Sinu loodud sisu, näiteks lisatud lehed ja üleslaaditud pildid, jäävad alles.',
+ 'delete_my_account_warning' => 'Kas oled kindel, et soovid oma konto kustutada?',
+];
diff --git a/lang/et/settings.php b/lang/et/settings.php
new file mode 100644
index 00000000000..bc5a7794e87
--- /dev/null
+++ b/lang/et/settings.php
@@ -0,0 +1,374 @@
+ 'Seaded',
+ 'settings_save' => 'Salvesta seaded',
+ 'system_version' => 'Süsteemi versioon',
+ 'categories' => 'Kategooriad',
+
+ // App Settings
+ 'app_customization' => 'Kohandamine',
+ 'app_features_security' => 'Funktsioonid ja turvalisus',
+ 'app_name' => 'Rakenduse nimi',
+ 'app_name_desc' => 'Seda nime näidatakse päises ja kõigis süsteemsetes e-kirjades.',
+ 'app_name_header' => 'Näita nime päises',
+ 'app_public_access' => 'Avalik ligipääs',
+ 'app_public_access_desc' => 'Selle sisselülitamine võimaldab külalistel ilma sisselogimata ligipääsu su BookStack\'i sisule.',
+ 'app_public_access_desc_guest' => 'Sisselogimata kasutajate ligipääsu saab seadistada "Külaline" kasutaja kaudu.',
+ 'app_public_access_toggle' => 'Luba avalik ligipääs',
+ 'app_public_viewing' => 'Luba avalik ligipääs?',
+ 'app_secure_images' => 'Turvalisem piltide üleslaadimine',
+ 'app_secure_images_toggle' => 'Lülita sisse turvalisem piltide üleslaadimine',
+ 'app_secure_images_desc' => 'Jõudluse kaalutlustel on kõik pildifailid avalikult kättesaadavad. See valik lisab pildifailide URL-ide ette juhugenereeritud, raskesti arvatava stringi. Ligipääsu piiramiseks veendu, et kataloogide indekseerimine ei oleks lubatud.',
+ 'app_default_editor' => 'Vaikimisi lehe redaktor',
+ 'app_default_editor_desc' => 'Vali, millist redaktorit vaikimisi uute lehtede jaoks kasutada. Seda valikut saab õiguste olemasolul iga lehe jaoks eraldi muuta.',
+ 'app_custom_html' => 'Kohandatud HTML päise sisu',
+ 'app_custom_html_desc' => 'Siia lisatud sisu lisatakse iga lehe sektsiooni lõppu. See võimaldab stiile üle laadida või lisada analüütika koodi.',
+ 'app_custom_html_disabled_notice' => 'Kohandatud HTML päise sisu on sellel lehel välja lülitatud, et probleemseid muudatusi saaks tagasi võtta.',
+ 'app_logo' => 'Rakenduse logo',
+ 'app_logo_desc' => 'Seda kasutatakse muuhulgas rakenduse päises. Pildifail peaks olema 86px kõrge. Suuremad pildid tehakse väiksemaks.',
+ 'app_icon' => 'Rakenduse ikoon',
+ 'app_icon_desc' => 'Seda ikooni kasutatakse brauseri sakkidel ja järjehoidjate ikoonidena. See peaks olema 256px ruudukujuline PNG.',
+ 'app_homepage' => 'Rakenduse avaleht',
+ 'app_homepage_desc' => 'Vali leht, mida näidata avalehel vaikimisi vaate asemel. Valitud lehele ei rakendata ligipääsuõiguseid.',
+ 'app_homepage_select' => 'Vali leht',
+ 'app_footer_links' => 'Lingid jaluses',
+ 'app_footer_links_desc' => 'Lisa rakenduse jalusesse linke. Neid näidatakse enamike lehtede jaluses, kaasa arvatud need, mis ei vaja sisselogimist. Võid kasutada märgendit "trans::", et kasutada süsteemseid tõlkeid. Näiteks "trans::common.privacy_policy" tekitab tõlgitud teksti "Privaatsus" ning "trans::common.terms_of_service" tekitab tõlgitud teksti "Kasutustingimused".',
+ 'app_footer_links_label' => 'Lingi tekst',
+ 'app_footer_links_url' => 'Lingi URL',
+ 'app_footer_links_add' => 'Lisa link',
+ 'app_disable_comments' => 'Keela kommentaarid',
+ 'app_disable_comments_toggle' => 'Keela kommentaarid',
+ 'app_disable_comments_desc' => 'Keelab kommentaarid kogu rakenduses. Olemasolevaid kommentaare ei näidata.',
+
+ // Color settings
+ 'color_scheme' => 'Rakenduse värvid',
+ 'color_scheme_desc' => 'Määra rakenduse kasutajaliidese värvid. Tumeda ja heleda režiimi värve saab sobivuse ja loetavuse huvides eraldi seadistada.',
+ 'ui_colors_desc' => 'Määra rakenduse põhivärv ja vaikimisi linkide värv. Põhivärvi kasutatakse peamiselt päise, nuppude ning kasutajaliidese dekoratsioonide jaoks. Vaikimisi linkide värvi kasutatakse tekstipõhiste linkide ja tegevuste jaoks, nii kirjalikus sisus kui rakenduse kasutajaliideses.',
+ 'app_color' => 'Põhivärv',
+ 'link_color' => 'Vaikimisi linkide värv',
+ 'content_colors_desc' => 'Määra värvid erinevatele sisuelementidele. Loetavuse huvides on soovituslik valida värvid, mille heledus on sarnane vaikimisi värvidele.',
+ 'bookshelf_color' => 'Riiuli värv',
+ 'book_color' => 'Raamatu värv',
+ 'chapter_color' => 'Peatüki värv',
+ 'page_color' => 'Lehe värv',
+ 'page_draft_color' => 'Mustandi värv',
+
+ // Registration Settings
+ 'reg_settings' => 'Registreerumine',
+ 'reg_enable' => 'Luba registreerumine',
+ 'reg_enable_toggle' => 'Luba registreerumine',
+ 'reg_enable_desc' => 'Kui registreerumine on lubatud, saavad kasutajad ise endale rakenduse konto tekitada, ning neile antakse vaikimisi roll.',
+ 'reg_default_role' => 'Vaikimisi roll uutele kasutajatele',
+ 'reg_enable_external_warning' => 'Ülalolevat valikut ignoreeritakse, kui väline LDAP või SAML autentimine on aktiivne. Kui autentimine välise süsteemi vastu on edukas, genereeritakse puuduvad kasutajadkontod automaatselt.',
+ 'reg_email_confirmation' => 'E-posti aadressi kinnitus',
+ 'reg_email_confirmation_toggle' => 'Nõua e-posti aadressi kinnitamist',
+ 'reg_confirm_email_desc' => 'Kui domeeni piirang on kasutusel, siis on e-posti aadressi kinnitamine nõutud ja seda seadet ignoreeritakse.',
+ 'reg_confirm_restrict_domain' => 'Domeeni piirang',
+ 'reg_confirm_restrict_domain_desc' => 'Sisesta komaga eraldatud nimekiri e-posti domeenidest, millega soovid registreerumist piirata. Kasutajale saadetakse aadressi kinnitamiseks e-kiri, enne kui neil lubatakse rakendust kasutada. Pane tähele, et kasutajad saavad pärast edukat registreerumist oma e-posti aadressi muuta.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Piirangut ei ole',
+
+ // Sorting Settings
+ 'sorting' => 'Loendid ja järjestamine',
+ 'sorting_book_default' => 'Vaikimisi raamatute sorteerimise reegel',
+ 'sorting_book_default_desc' => 'Vali vaikimisi uutele raamatutele rakenduv sorteerimisreegel. See ei mõjuta olemasolevaid raamatuid ning seda saab raamatupõhiselt muuta.',
+ 'sorting_rules' => 'Sorteerimisreeglid',
+ 'sorting_rules_desc' => 'Need on eeldefineeritud sorteerimistoimingud, mida saab süsteemis olevale sisule rakendada.',
+ 'sort_rule_assigned_to_x_books' => 'Määratud :count raamatule|Määratud :count raamatule',
+ 'sort_rule_create' => 'Lisa sorteerimisreegel',
+ 'sort_rule_edit' => 'Muuda sorteerimisreeglit',
+ 'sort_rule_delete' => 'Kustuta sorteerimisreegel',
+ 'sort_rule_delete_desc' => 'Eemalda sorteerimisreegel süsteemist. Seda reeglit kasutavad raamatud jäävad käsitsi sorteerituks.',
+ 'sort_rule_delete_warn_books' => 'Seda reeglit kasutab hetkel :count raamat(ut). Kas oled kindel, et soovid selle kustutada?',
+ 'sort_rule_delete_warn_default' => 'See reegel on hetkel raamatute vaikimisi sorteerimisreegel. Kas oled kindel, et soovid selle kustutada?',
+ 'sort_rule_details' => 'Sorteerimisreegli andmed',
+ 'sort_rule_details_desc' => 'Määra sorteerimisreegli nimi, mida kasutatakse reegli valimise loendites.',
+ 'sort_rule_operations' => 'Sorteerimistoimingud',
+ 'sort_rule_operations_desc' => 'Seadista sorteerimistoimingud, liigutades neid saadaval toimingute loendist. Toimingud rakendatakse järjest, ülevalt alla. Siin tehtud muudatused rakenduvad salvestamisel kõigile määratud raamatutele.',
+ 'sort_rule_available_operations' => 'Saadaval toimingud',
+ 'sort_rule_available_operations_empty' => 'Rohkem toiminguid pole',
+ 'sort_rule_configured_operations' => 'Seadistatud toimingud',
+ 'sort_rule_configured_operations_empty' => 'Lisa toiminguid "Saadaval toimingud" loendist',
+ 'sort_rule_op_asc' => '(kasvavalt)',
+ 'sort_rule_op_desc' => '(kahanevalt)',
+ 'sort_rule_op_name' => 'Nimi - tähestikuline',
+ 'sort_rule_op_name_numeric' => 'Nimi - numbriline',
+ 'sort_rule_op_created_date' => 'Loomise aeg',
+ 'sort_rule_op_updated_date' => 'Muutmise aeg',
+ 'sort_rule_op_chapters_first' => 'Peatükid eespool',
+ 'sort_rule_op_chapters_last' => 'Peatükid tagapool',
+ 'sorting_page_limits' => 'Leheküljepõhised kuvalimiidid',
+ 'sorting_page_limits_desc' => 'Vali, mitu objekti erinevates nimekirjades ühel lehel kuvada. Madalam väärtus tähendab reeglina paremat jõudlust, samas kui kõrgem väärtus väldib vajadust mitmeid lehti läbi klikkida. Soovituslik on kasutada 6-ga jaguvat väärtust.',
+
+ // Maintenance settings
+ 'maint' => 'Hooldus',
+ 'maint_image_cleanup' => 'Pildifailide koristus',
+ 'maint_image_cleanup_desc' => 'Kontrollib lehtede ja redaktsioonide sisu, et leida pilte ja jooniseid, mis enam kasutusel ei ole. Enne selle käivitamist tee andmebaasist ja pildifailidest täielik varukoopia.',
+ 'maint_delete_images_only_in_revisions' => 'Kustuta ka pildifailid, mis on kasutusel ainult vanades redaktsioonides',
+ 'maint_image_cleanup_run' => 'Käivita koristus',
+ 'maint_image_cleanup_warning' => 'Leiti :count potentsiaalselt kasutamata pildifaili. Kas oled kindel, et soovid need kustutada?',
+ 'maint_image_cleanup_success' => 'Leiti ja kustutati :count potentsiaalselt kasutamata pildifaili!',
+ 'maint_image_cleanup_nothing_found' => 'Kasutamata pildifaile ei leitud, pole midagi kustutada!',
+ 'maint_send_test_email' => 'Saada testimiseks e-kiri',
+ 'maint_send_test_email_desc' => 'See saadab testimiseks e-kirja su profiilis märgitud aadressile.',
+ 'maint_send_test_email_run' => 'Saada test e-kiri',
+ 'maint_send_test_email_success' => 'E-kiri saadetud aadressile :address',
+ 'maint_send_test_email_mail_subject' => 'Test e-kiri',
+ 'maint_send_test_email_mail_greeting' => 'E-kirjade saatmine tundub toimivat!',
+ 'maint_send_test_email_mail_text' => 'Hea töö! Kui sa selle e-kirja kätte said, on su e-posti seaded õigesti määratud.',
+ 'maint_recycle_bin_desc' => 'Kustutatud riiulid, raamatud, peatükid ja lehed saadetakse prügikasti, et neid saaks taastada või lõplikult kustutada. Vanemad objektid võidakse teatud aja järel automaatselt prügikastist kustutada.',
+ 'maint_recycle_bin_open' => 'Ava prügikast',
+ 'maint_regen_references' => 'Genereeri viited uuesti',
+ 'maint_regen_references_desc' => 'See tegevus taastekitab andmebaasis objektidevahelised viited. Enamasti tehakse seda automaatselt, aga antud tegevus võimaldab indekseerida vanemat sisu või sisu, mis lisati mitteametlike meetodite abil.',
+ 'maint_regen_references_success' => 'Viiteindeks genereeritud!',
+ 'maint_timeout_command_note' => 'Märkus: See tegevus võib aega võtta, mis võib teatud veebikeskkondades põhjustada aegumise vigu. Alternatiivina võib seda tegevust käivitada käsurealt.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Prügikast',
+ 'recycle_bin_desc' => 'Siin saad taastada kustutatud objekte, või neid süsteemist lõplikult eemaldada. Nimekiri on filtreerimata, mitte nagu mujal tegevusloendites, kus rakenduvad õigused.',
+ 'recycle_bin_deleted_item' => 'Kustutatud objekt',
+ 'recycle_bin_deleted_parent' => 'Ülemobjekt',
+ 'recycle_bin_deleted_by' => 'Kustutaja',
+ 'recycle_bin_deleted_at' => 'Kustutamise aeg',
+ 'recycle_bin_permanently_delete' => 'Kustuta lõplikult',
+ 'recycle_bin_restore' => 'Taasta',
+ 'recycle_bin_contents_empty' => 'Prügikast on hetkel tühi',
+ 'recycle_bin_empty' => 'Tühjenda prügikast',
+ 'recycle_bin_empty_confirm' => 'See kustutab lõplikult kõik objektid prügikastis, kaasa arvatud nende sisu. Kas oled kindel, et soovid prügikasti tühjendada?',
+ 'recycle_bin_destroy_confirm' => 'See kustutab lõplikult süsteemist valitud objekti koos loetletud alamobjektidega, ja seda sisu ei ole enam võimalik taastada. Kas oled kindel, et soovid selle objekti kustutada?',
+ 'recycle_bin_destroy_list' => 'Kustutatavad objektid',
+ 'recycle_bin_restore_list' => 'Taastatavad objektid',
+ 'recycle_bin_restore_confirm' => 'See taastab valitud objekti koos kõigi alamobjektidega nende algsesse asukohta. Kui see asukoht on ka vahepeal kustutatud ja on nüüd prügikastis, tuleb ka see taastada.',
+ 'recycle_bin_restore_deleted_parent' => 'Selle objekti ülemobjekt on ka kustutatud. Taastada ei saa enne, kui ülemobjekt on taastatud.',
+ 'recycle_bin_restore_parent' => 'Taasta ülemobjekt',
+ 'recycle_bin_destroy_notification' => 'Prügikastist kustutati :count objekti.',
+ 'recycle_bin_restore_notification' => 'Prügikastist taastati :count objekti.',
+
+ // Audit Log
+ 'audit' => 'Auditilogi',
+ 'audit_desc' => 'Auditilogi kuvab nimekirja tegevustest, mida süsteem jälgib. See nimekiri on filtreerimata, erinevalt muudest loenditest süsteemis, kus rakenduvad õigused.',
+ 'audit_event_filter' => 'Sündmuse filter',
+ 'audit_event_filter_no_filter' => 'Ilma filtrita',
+ 'audit_deleted_item' => 'Kustutatud objekt',
+ 'audit_deleted_item_name' => 'Nimi: :name',
+ 'audit_table_user' => 'Kasutaja',
+ 'audit_table_event' => 'Sündmus',
+ 'audit_table_related' => 'Seotud objekt või detail',
+ 'audit_table_ip' => 'IP-aadress',
+ 'audit_table_date' => 'Tegevuse aeg',
+ 'audit_date_from' => 'Kuupäev alates',
+ 'audit_date_to' => 'Kuupäev kuni',
+
+ // Role Settings
+ 'roles' => 'Rollid',
+ 'role_user_roles' => 'Kasutaja rollid',
+ 'roles_index_desc' => 'Rolle saab kasutada kasutajate grupeerimiseks ja liikmetele süsteemsete õiguste andmiseks. Kui kasutaja on mitme rolli liige, siis õigused kombineeritakse ning kasutaja saab kõik õigused.',
+ 'roles_x_users_assigned' => ':count kasutaja|:count kasutajat',
+ 'roles_x_permissions_provided' => ':count õigus|:count õigust',
+ 'roles_assigned_users' => 'Määratud kasutajad',
+ 'roles_permissions_provided' => 'Antud õigused',
+ 'role_create' => 'Lisa uus roll',
+ 'role_delete' => 'Kustuta roll',
+ 'role_delete_confirm' => 'See kustutab rolli nimega \':roleName\'.',
+ 'role_delete_users_assigned' => 'Selle rolliga on seotud :userCount kasutajat. Kui soovid neile selle asemel uue rolli määrata, siis vali see allpool.',
+ 'role_delete_no_migration' => "Ära määra uut rolli",
+ 'role_delete_sure' => 'Kas oled kindel, et soovid selle rolli kustutada?',
+ 'role_edit' => 'Muuda rolli',
+ 'role_details' => 'Rolli detailid',
+ 'role_name' => 'Rolli nimi',
+ 'role_desc' => 'Rolli lühike kirjeldus',
+ 'role_mfa_enforced' => 'Vajab mitmeastmelist autentimist',
+ 'role_external_auth_id' => 'Välise autentimise ID-d',
+ 'role_system' => 'Süsteemsed õigused',
+ 'role_manage_users' => 'Kasutajate haldamine',
+ 'role_manage_roles' => 'Rollide ja õiguste haldamine',
+ 'role_manage_entity_permissions' => 'Kõigi raamatute, peatükkide ja lehtede õiguste haldamine',
+ 'role_manage_own_entity_permissions' => 'Oma raamatute, peatükkide ja lehtede õiguste haldamine',
+ 'role_manage_page_templates' => 'Mallide haldamine',
+ 'role_access_api' => 'Süsteemi API ligipääs',
+ 'role_manage_settings' => 'Rakenduse seadete haldamine',
+ 'role_export_content' => 'Sisu eksport',
+ 'role_import_content' => 'Imporditud sisu',
+ 'role_editor_change' => 'Lehe redaktori muutmine',
+ 'role_notifications' => 'Võta vastu ja halda teavitusi',
+ 'role_permission_note_users_and_roles' => 'Need õigused lubavad ka süsteemis olevaid kasutajaid ja rolle vaadata ja otsida.',
+ 'role_asset' => 'Sisu õigused',
+ 'roles_system_warning' => 'Pane tähele, et ülalolevad kolm õigust võimaldavad kasutajal enda või teiste kasutajate õiguseid muuta. Määra nende õigustega roll ainult usaldusväärsetele kasutajatele.',
+ 'role_asset_desc' => 'Need load kontrollivad vaikimisi ligipääsu süsteemis olevale sisule. Raamatute, peatükkide ja lehtede õigused rakenduvad esmajärjekorras.',
+ 'role_asset_admins' => 'Administraatoritel on automaatselt ligipääs kogu sisule, aga need valikud võivad peida või näidata kasutajaliidese elemente.',
+ 'role_asset_image_view_note' => 'See käib nähtavuse kohta pildifailide halduris. Tegelik ligipääs üleslaaditud pildifailidele sõltub süsteemsest piltide salvestamise valikust.',
+ 'role_asset_users_note' => 'Need õigused lubavad ka süsteemis olevaid kasutajaid vaadata ja otsida.',
+ 'role_all' => 'Kõik',
+ 'role_own' => 'Enda omad',
+ 'role_controlled_by_asset' => 'Õigused määratud seotud objekti kaudu',
+ 'role_save' => 'Salvesta roll',
+ 'role_users' => 'Selle rolliga kasutajad',
+ 'role_users_none' => 'Seda rolli ei ole hetkel ühelgi kasutajal',
+
+ // Users
+ 'users' => 'Kasutajad',
+ 'users_index_desc' => 'Loo ja halda süsteemi kasutajakontosid. Kontosid kasutatakse sisselogimiseks ning sisu ja tegevuse omistamiseks. Ligipääsuload on enamasti rollipõhised, aga sisu omandus ja muud faktorid võivad samuti mõjutada õiguseid ja ligipääsu.',
+ 'user_profile' => 'Kasutajaprofiil',
+ 'users_add_new' => 'Lisa uus kasutaja',
+ 'users_search' => 'Otsi kasutajaid',
+ 'users_latest_activity' => 'Viimane tegevus',
+ 'users_details' => 'Kasutaja andmed',
+ 'users_details_desc' => 'Määra kasutajale nimi ja e-posti aadress. E-posti aadressi kasutatakse rakendusse sisse logimiseks.',
+ 'users_details_desc_no_email' => 'Määra kasutajale nimi, mille järgi teised ta ära tunnevad.',
+ 'users_role' => 'Kasutaja rollid',
+ 'users_role_desc' => 'Vali, millised rollid sellel kasutajal on. Kui talle on valitud mitu rolli, siis nende õigused kombineeritakse ja kasutaja saab kõigi rollide õigused.',
+ 'users_password' => 'Kasutaja parool',
+ 'users_password_desc' => 'Määra parool, millega rakendusse sisse logida. See peab olema vähemalt 8 tähemärki.',
+ 'users_send_invite_text' => 'Sa võid kasutajale saata e-postiga kutse, mis võimaldab neil ise parooli seada. Vastasel juhul määra parool ise.',
+ 'users_send_invite_option' => 'Saada e-postiga kutse',
+ 'users_external_auth_id' => 'Välise autentimise ID',
+ 'users_external_auth_id_desc' => 'Kui kasutusel on väline autentimissüsteem (nagu SAML2, OIDC või LDAP), siis see ID ühendab selle BookStack kasutaja autentimissüsteemi kasutajakontoga. Kui kasutad vaikimisi e-posti põhist autentimist, võid seda välja ignoreerida.',
+ 'users_password_warning' => 'Täida allolevad väljad ainult siis, kui soovid selle kasutaja parooli muuta.',
+ 'users_system_public' => 'See kasutaja tähistab kõiki külalisi, kes su rakendust vaatavad. Selle kontoga ei saa sisse logida, see määratakse automaatselt.',
+ 'users_delete' => 'Kustuta kasutaja',
+ 'users_delete_named' => 'Kustuta kasutaja :userName',
+ 'users_delete_warning' => 'See kustutab kasutaja nimega \':userName\' süsteemist täielikult.',
+ 'users_delete_confirm' => 'Kas oled kindel, et soovid selle kasutaja kustutada?',
+ 'users_migrate_ownership' => 'Teisalda omandus',
+ 'users_migrate_ownership_desc' => 'Vali siin kasutaja, kui soovid talle üle viia kõik selle kasutaja objektid.',
+ 'users_none_selected' => 'Kasutaja valimata',
+ 'users_edit' => 'Muuda kasutajat',
+ 'users_edit_profile' => 'Muuda profiili',
+ 'users_avatar' => 'Kasutaja profiilipilt',
+ 'users_avatar_desc' => 'Vali sellele kasutajale profiilipilt. See peaks olema umbes 256x256 pikslit.',
+ 'users_preferred_language' => 'Eelistatud keel',
+ 'users_preferred_language_desc' => 'See valik muudab rakenduse kasutajaliidese keelt. Kasutajate loodud sisu see ei mõjuta.',
+ 'users_social_accounts' => 'Sotsiaalmeedia kontod',
+ 'users_social_accounts_desc' => 'Vaata selle kasutaja ühendatud sotsiaalmeedia kontode seisundit. Sotsiaalmeedia kontosid saab kasutada süsteemile ligipääsemiseks, lisaks primaarsele autentimissüsteemile.',
+ 'users_social_accounts_info' => 'Siin saad seostada teised kontod, millega kiiremini ja lihtsamini sisse logida. Siit konto eemaldamine ei tühista varem lubatud ligipääsu. Ligipääsu saad tühistada ühendatud konto profiili seadetest.',
+ 'users_social_connect' => 'Lisa konto',
+ 'users_social_disconnect' => 'Eemalda konto',
+ 'users_social_status_connected' => 'Ühendatud',
+ 'users_social_status_disconnected' => 'Ühendus katkestatud',
+ 'users_social_connected' => ':socialAccount konto lisati su profiilile.',
+ 'users_social_disconnected' => ':socialAccount konto eemaldati su profiililt.',
+ 'users_api_tokens' => 'API tunnused',
+ 'users_api_tokens_desc' => 'Lisa ja halda BookStack REST API-ga autentimiseks mõeldud ligipääsutunnuseid. API kasutamise õigused on määratud ksautaja kaudu, kellele ligipääsutunnus kuulub.',
+ 'users_api_tokens_none' => 'Sellel kasutajal pole API tunnuseid',
+ 'users_api_tokens_create' => 'Lisa tunnus',
+ 'users_api_tokens_expires' => 'Aegub',
+ 'users_api_tokens_docs' => 'API dokumentatsioon',
+ 'users_mfa' => 'Mitmeastmeline autentimine',
+ 'users_mfa_desc' => 'Seadista mitmeastmeline autentimine, et oma kasutajakonto turvalisust tõsta.',
+ 'users_mfa_x_methods' => ':count meetod seadistatud|:count meetodit seadistatud',
+ 'users_mfa_configure' => 'Seadista meetodid',
+
+ // API Tokens
+ 'user_api_token_create' => 'Lisa API tunnus',
+ 'user_api_token_name' => 'Nimi',
+ 'user_api_token_name_desc' => 'Anna oma tunnusele inimloetav nimi, et selle eesmärk paremini meeles püsiks.',
+ 'user_api_token_expiry' => 'Kehtiv kuni',
+ 'user_api_token_expiry_desc' => 'Määra kuupäev, millal see tunnus aegub. Pärast seda kuupäeva ei saa selle tunnusega enam päringuid teha. Välja tühjaks jätmine määrab aegumiskuupäeva 100 aastat tulevikku.',
+ 'user_api_token_create_secret_message' => 'Kohe pärast selle tunnuse loomist genereeritakse ja kuvatakse tunnuse ID ja salajane võti. Võtit kuvatakse ainult ühe korra, seega kopeeri selle väärtus enne jätkamist turvalisse kohta.',
+ 'user_api_token' => 'API tunnus',
+ 'user_api_token_id' => 'Tunnuse ID',
+ 'user_api_token_id_desc' => 'See on API tunnuse süsteemne mittemuudetav identifikaator, mis tuleb API päringutele kaasa panna.',
+ 'user_api_token_secret' => 'Tunnuse võti',
+ 'user_api_token_secret_desc' => 'See on API tunnuse salajane võti, mis tuleb API päringutele kaasa panna. Seda kuvatakse ainult ühe korra, seega kopeeri see turvalisse kohta.',
+ 'user_api_token_created' => 'Tunnus lisatud :timeAgo',
+ 'user_api_token_updated' => 'Tunnus muudetud :timeAgo',
+ 'user_api_token_delete' => 'Kustuta tunnus',
+ 'user_api_token_delete_warning' => 'See kustutab API tunnuse nimega \':tokenName\' süsteemist.',
+ 'user_api_token_delete_confirm' => 'Kas oled kindel, et soovid selle API tunnuse kustutada?',
+
+ // Webhooks
+ 'webhooks' => 'Veebihaagid',
+ 'webhooks_index_desc' => 'Veebihaakide abil saab teatud süsteemis toimunud tegevuste ja sündmuste puhul saata andmeid välistele URL-idele, mis võimaldab integreerida väliseid platvorme, nagu sõnumi- või teavitussüsteemid.',
+ 'webhooks_x_trigger_events' => ':count sündmus|:count sündmust',
+ 'webhooks_create' => 'Lisa uus veebihaak',
+ 'webhooks_none_created' => 'Ühtegi veebihaaki pole lisatud.',
+ 'webhooks_edit' => 'Muuda veebihaaki',
+ 'webhooks_save' => 'Salvesta veebihaak',
+ 'webhooks_details' => 'Veebihaagi seaded',
+ 'webhooks_details_desc' => 'Sisesta kasutajasõbralik nimi ja POST lõpp-punkt, kuhu veebihaagi andmeid saadetakse.',
+ 'webhooks_events' => 'Veebihaagi sündmused',
+ 'webhooks_events_desc' => 'Vali kõik sündmused, mille peale seda veebihaaki peaks käivitama.',
+ 'webhooks_events_warning' => 'Pea meeles, et veebihaak käivitatakse kõigi valitud sündmuste peale, isegi kui on seatud kohandatud õigused. Hoolitse selle eest, et veebihaak ei teeks avalikuks konfidentsiaalset sisu.',
+ 'webhooks_events_all' => 'Kõik süsteemsed sündmused',
+ 'webhooks_name' => 'Veebihaagi nimi',
+ 'webhooks_timeout' => 'Veebihaagi päringu aegumine (sekundit)',
+ 'webhooks_endpoint' => 'Veebihaagi lõpp-punkt',
+ 'webhooks_active' => 'Veebihaak aktiivne',
+ 'webhook_events_table_header' => 'Sündmused',
+ 'webhooks_delete' => 'Kustuta veebihaak',
+ 'webhooks_delete_warning' => 'See kustutab veebihaagi nimega \':webhookName\' süsteemist.',
+ 'webhooks_delete_confirm' => 'Kas oled kindel, et soovid selle veebihaagi kustutada?',
+ 'webhooks_format_example' => 'Veebihaagi formaadi näidis',
+ 'webhooks_format_example_desc' => 'Veebihaagi andmed saadetakse POST-päringuga seadistatud lõpp-punktile allpool toodud JSON-formaadis. Omadused "related_item" ja "url" on valikulised ja sõltuvad sündmusest, mis veebihaagi käivitas.',
+ 'webhooks_status' => 'Veebihaagi staatus',
+ 'webhooks_last_called' => 'Viimati käivitatud:',
+ 'webhooks_last_errored' => 'Viimati ebaõnnestunud:',
+ 'webhooks_last_error_message' => 'Viimane veateade:',
+
+ // Licensing
+ 'licenses' => 'Litsentsid',
+ 'licenses_desc' => 'See leht koondab litsentsiinfot BookStack\'i ja selles kasutatud projektide ja teekide kohta. Paljusid loetletud teekidest võidakse kasutada ainult arenduse kontekstis.',
+ 'licenses_bookstack' => 'BookStack\'i litsents',
+ 'licenses_php' => 'PHP teekide litsentsid',
+ 'licenses_js' => 'JavaScript teekide litsentsid',
+ 'licenses_other' => 'Muud litsentsid',
+ 'license_details' => 'Litsentsi detailid',
+
+ //! 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 (inglise keel)',
+ 'ar' => 'العربية (araabia keel)',
+ 'bg' => 'Bǎlgarski (bulgaaria keel)',
+ 'bs' => 'Bosanski (bosnia keel)',
+ 'ca' => 'Català (katalaani keel)',
+ 'cs' => 'Česky (tšehhi keel)',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk (taani keel)',
+ 'de' => 'Deutsch (saksa keel)',
+ 'de_informal' => 'Deutsch (Du) (mitteformaalne saksa keel)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español (hispaania keel)',
+ 'es_AR' => 'Español Argentina (Argentiina hispaania keel)',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français (prantsuse keel)',
+ 'he' => 'עברית (heebrea keel)',
+ 'hr' => 'Hrvatski (horvaadi keel)',
+ 'hu' => 'Magyar (ungari keel)',
+ 'id' => 'Bahasa Indonesia (indoneesia keel)',
+ 'it' => 'Italiano (itaalia keel)',
+ 'ja' => '日本語 (jaapani keel)',
+ 'ko' => '한국어 (korea keel)',
+ 'lt' => 'Lietuvių Kalba (leedu keel)',
+ 'lv' => 'Latviešu Valoda (läti keel)',
+ 'nb' => 'Norsk (Bokmål) (norra keel)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands (hollandi keel)',
+ 'pl' => 'Polski (poola keel)',
+ 'pt' => 'Português (portugali keel)',
+ 'pt_BR' => 'Português do Brasil (Brasiilia portugali keel)',
+ 'ro' => 'Română',
+ 'ru' => 'Русский (vene keel)',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Sloveenia',
+ 'sv' => 'Rootsi',
+ 'tr' => 'Türgi',
+ 'uk' => 'Ukraina',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Vietnami',
+ 'zh_CN' => 'Hiina (lihtsustatud)',
+ 'zh_TW' => 'Hiina (traditsiooniline)',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/et/validation.php b/lang/et/validation.php
new file mode 100644
index 00000000000..e9a7234c9da
--- /dev/null
+++ b/lang/et/validation.php
@@ -0,0 +1,123 @@
+ ':attribute peab olema aktsepteeritud.',
+ 'active_url' => ':attribute ei ole kehtiv URL.',
+ 'after' => ':attribute peab olema kuupäev pärast :date.',
+ 'alpha' => ':attribute võib sisaldada ainult tähti.',
+ 'alpha_dash' => ':attribute võib sisaldada ainult tähti, numbreid, sidekriipse ja alakriipse.',
+ 'alpha_num' => ':attribute võib sisaldada ainult tähti ja numbreid.',
+ 'array' => ':attribute peab olema massiiv.',
+ 'backup_codes' => 'Kood ei ole korrektne või on seda juba kasutatud.',
+ 'before' => ':attribute peab olema kuupäev enne :date.',
+ 'between' => [
+ 'numeric' => ':attribute peab jääma vahemikku :min ja :max.',
+ 'file' => ':attribute peab olema :min ja :max kilobaidi vahel.',
+ 'string' => ':attribute peab olema :min ja :max tähemärgi vahel.',
+ 'array' => ':attribute peab olema :min ja :max elemendi vahel.',
+ ],
+ 'boolean' => ':attribute peab olema tõene või väär.',
+ 'confirmed' => ':attribute kinnitus ei kattu.',
+ 'date' => ':attribute ei ole kehtiv kuupäev.',
+ 'date_format' => ':attribute ei ühti formaadiga :format.',
+ 'different' => ':attribute ja :other peavad olema erinevad.',
+ 'digits' => ':attribute peab olema :digits-kohaline arv.',
+ 'digits_between' => ':attribute peab olema :min ja :max numbri vahel.',
+ 'email' => ':attribute peab olema kehtiv e-posti aadress.',
+ 'ends_with' => ':attribute lõpus peab olema üks järgmistest väärtustest: :values',
+ 'file' => ':attribute peab olema sobiv fail.',
+ 'filled' => ':attribute väli on kohustuslik.',
+ 'gt' => [
+ 'numeric' => ':attribute peab olema suurem kui :value.',
+ 'file' => ':attribute peab olema suurem kui :value kilobaiti.',
+ 'string' => ':attribute peab sisaldama rohkem kui :value tähemärki.',
+ 'array' => ':attribute peab sisaldama rohkem kui :value elementi.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute peab olema suurem kui või võrdne :value.',
+ 'file' => ':attribute peab olema :value kilobaiti või rohkem.',
+ 'string' => ':attribute peab sisaldama :value või rohkem tähemärki.',
+ 'array' => ':attribute peab sisaldama :value või rohkem elementi.',
+ ],
+ 'exists' => 'Valitud :attribute on vigane.',
+ 'image' => ':attribute peab olema pildifail.',
+ 'image_extension' => ':attribute peab olema lubatud ja toetatud pildiformaadis.',
+ 'in' => 'Valitud :attribute on vigane.',
+ 'integer' => ':attribute peab olema täisarv.',
+ 'ip' => ':attribute peab olema kehtiv IP-aadress.',
+ 'ipv4' => ':attribute peab olema kehtiv IPv4 aadress.',
+ 'ipv6' => ':attribute peab olema kehtiv IPv6 aadress.',
+ 'json' => ':attribute peab olema kehtiv JSON-vormingus tekst.',
+ 'lt' => [
+ 'numeric' => ':attribute peab olema väiksem kui :value.',
+ 'file' => ':attribute peab olema väiksem kui :value kilobaiti.',
+ 'string' => ':attribute peab sisaldama vähem kui :value tähemärki.',
+ 'array' => ':attribute peab sisaldama vähem kui :value elementi.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute peab olema :value või vähem.',
+ 'file' => ':attribute peab olema :value kilobaiti või vähem.',
+ 'string' => ':attribute peab sisaldama :value või vähem tähemärki.',
+ 'array' => ':attribute ei tohi sisaldada rohkem kui :value elementi.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute ei tohi olla suurem kui :max.',
+ 'file' => ':attribute ei tohi olla suurem kui :max kilobaiti.',
+ 'string' => ':attribute ei tohi sisaldada rohkem kui :max tähemärki.',
+ 'array' => ':attribute ei tohi sisaldada rohkem kui :max elementi.',
+ ],
+ 'mimes' => ':attribute peab olema seda tüüpi fail: :values.',
+ 'min' => [
+ 'numeric' => ':attribute peab olema vähemalt :min.',
+ 'file' => ':attribute peab olema vähemalt :min kilobaiti.',
+ 'string' => ':attribute peab sisaldama vähemalt :min tähemärki.',
+ 'array' => ':attribute peab sisaldama vähemalt :min elementi.',
+ ],
+ 'not_in' => 'Valitud :attribute on vigane.',
+ 'not_regex' => ':attribute on vigases formaadis.',
+ 'numeric' => ':attribute peab olema arv.',
+ 'regex' => ':attribute on vigases formaadis.',
+ 'required' => ':attribute on kohustuslik.',
+ 'required_if' => ':attribute on kohustuslik, kui :other on :value.',
+ 'required_with' => ':attribute on kohustuslik, kui :values on olemas.',
+ 'required_with_all' => ':attribute on kohustuslik, kui :values on olemas.',
+ 'required_without' => ':attribute on kohustuslik, kui :values ei ole olemas.',
+ 'required_without_all' => ':attribute on kohustuslik, kui :values on valimata.',
+ 'same' => ':attribute ja :other peavad klappima.',
+ 'safe_url' => 'Link ei pruugi olla turvaline.',
+ 'size' => [
+ 'numeric' => ':attribute peab olema :size.',
+ 'file' => ':attribute peab olema :size kilobaiti.',
+ 'string' => ':attribute peab sisaldama :size tähemärki.',
+ 'array' => ':attribute peab sisaldama :size elemente.',
+ ],
+ 'string' => ':attribute peab olema string.',
+ 'timezone' => ':attribute peab olema kehtiv ajavöönd.',
+ 'totp' => 'Kood ei ole korrektne või on aegunud.',
+ 'unique' => ':attribute on juba võetud.',
+ 'url' => ':attribute on vigases formaadis.',
+ 'uploaded' => 'Faili üleslaadimine ebaõnnestus. Server ei pruugi sellise suurusega faile vastu võtta.',
+
+ 'zip_file' => ':attribute peab viitama failile ZIP-arhiivi sees.',
+ 'zip_file_size' => 'Fail :attribute ei tohi olla suurem kui :size MB.',
+ 'zip_file_mime' => ':attribute peab viitama :validTypes tüüpi failile, leiti :foundType.',
+ 'zip_model_expected' => 'Oodatud andmete asemel leiti ":type".',
+ 'zip_unique' => ':attribute peab olema ZIP-arhiivi piires objekti tüübile unikaalne.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Parooli kinnitus on nõutud',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/eu/activities.php b/lang/eu/activities.php
new file mode 100644
index 00000000000..847014efe74
--- /dev/null
+++ b/lang/eu/activities.php
@@ -0,0 +1,140 @@
+ 'sortu orria',
+ 'page_create_notification' => 'Orria ongi sortu da',
+ 'page_update' => 'eguneratu orrialdea',
+ 'page_update_notification' => 'Orria egoki egunerauta',
+ 'page_delete' => 'ezabatu orrialdea',
+ 'page_delete_notification' => 'Ondo ezabatu da',
+ 'page_restore' => 'leheneratu orria',
+ 'page_restore_notification' => 'Dokumentua behar bezala leheneratuta',
+ 'page_move' => 'mugitu orrialdea',
+ 'page_move_notification' => 'Page successfully moved',
+
+ // Chapters
+ 'chapter_create' => 'kapitulua sortu',
+ 'chapter_create_notification' => 'Kapitulua egoki sortuta',
+ 'chapter_update' => 'eguneratu kapitulua',
+ 'chapter_update_notification' => 'Kapitulua egoki eguneratuta',
+ 'chapter_delete' => 'kapitulua ezabatu',
+ 'chapter_delete_notification' => 'Kapitulua egoki ezabatua',
+ 'chapter_move' => 'kapitulua mugituta',
+ 'chapter_move_notification' => 'Chapter successfully moved',
+
+ // Books
+ 'book_create' => 'liburua sortuta',
+ 'book_create_notification' => 'Liburua ongi sortu da',
+ 'book_create_from_chapter' => 'bihurtu kapitulua liburu',
+ 'book_create_from_chapter_notification' => 'Kapitulua ongi bilakatu da liburu',
+ 'book_update' => 'liburua eguneratuta',
+ 'book_update_notification' => 'Liburua egoki eguneratua',
+ 'book_delete' => 'liburua ezabatua',
+ 'book_delete_notification' => 'Liburua egoki ezabatua',
+ 'book_sort' => 'liburua sailkatua',
+ 'book_sort_notification' => 'Liburua ongi bersailaktu da',
+
+ // Bookshelves
+ 'bookshelf_create' => 'apalategia sortuta',
+ 'bookshelf_create_notification' => 'Apalategia egoki sortuta',
+ 'bookshelf_create_from_book' => 'liburua apalategi bihurtuta',
+ 'bookshelf_create_from_book_notification' => 'Kapitulua ongi bilakatu da liburu',
+ 'bookshelf_update' => 'apalategia eguneratuta',
+ 'bookshelf_update_notification' => 'Erabiltzailea egoki eguneratua',
+ 'bookshelf_delete' => 'apalategia ezabatua',
+ 'bookshelf_delete_notification' => 'Apalategia egoki ezabatua',
+
+ // Revisions
+ 'revision_restore' => 'restored revision',
+ 'revision_delete' => 'deleted revision',
+ 'revision_delete_notification' => 'Revision successfully deleted',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" zure gogoetara gehitua izan da',
+ 'favourite_remove_notification' => '":name" zure gogokoetatik ezabatua izan da',
+
+ // Watching
+ 'watch_update_level_notification' => 'Watch preferences successfully updated',
+
+ // Auth
+ 'auth_login' => 'logged in',
+ 'auth_register' => 'registered as new user',
+ 'auth_password_reset_request' => 'requested user password reset',
+ 'auth_password_reset_update' => 'reset user password',
+ 'mfa_setup_method' => 'configured MFA method',
+ 'mfa_setup_method_notification' => 'Multi-factor method successfully configured',
+ 'mfa_remove_method' => 'removed MFA method',
+ 'mfa_remove_method_notification' => 'Multi-factor method successfully removed',
+
+ // Settings
+ 'settings_update' => 'updated settings',
+ 'settings_update_notification' => 'Settings successfully updated',
+ 'maintenance_action_run' => 'ran maintenance action',
+
+ // Webhooks
+ 'webhook_create' => 'sortu webhook',
+ 'webhook_create_notification' => 'Webhook egoki sortua',
+ 'webhook_update' => 'webhook eguneratua',
+ 'webhook_update_notification' => 'Webhook egoki eguneratua',
+ 'webhook_delete' => 'webhook ezabatua',
+ 'webhook_delete_notification' => 'Webhook egoki ezabatua',
+
+ // Imports
+ 'import_create' => 'created import',
+ 'import_create_notification' => 'Import successfully uploaded',
+ 'import_run' => 'updated import',
+ 'import_run_notification' => 'Content successfully imported',
+ 'import_delete' => 'deleted import',
+ 'import_delete_notification' => 'Import successfully deleted',
+
+ // Users
+ 'user_create' => 'created user',
+ 'user_create_notification' => 'User successfully created',
+ 'user_update' => 'updated user',
+ 'user_update_notification' => 'Erabiltzailea egoki eguneratua',
+ 'user_delete' => 'deleted user',
+ 'user_delete_notification' => 'Erabiltzailea egoki ezabatua',
+
+ // API Tokens
+ 'api_token_create' => 'created API token',
+ 'api_token_create_notification' => 'API token successfully created',
+ 'api_token_update' => 'updated API token',
+ 'api_token_update_notification' => 'API token successfully updated',
+ 'api_token_delete' => 'deleted API token',
+ 'api_token_delete_notification' => 'API token successfully deleted',
+
+ // Roles
+ 'role_create' => 'created role',
+ 'role_create_notification' => 'Role successfully created',
+ 'role_update' => 'updated role',
+ 'role_update_notification' => 'Role successfully updated',
+ 'role_delete' => 'deleted role',
+ 'role_delete_notification' => 'Role successfully deleted',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'emptied recycle bin',
+ 'recycle_bin_restore' => 'restored from recycle bin',
+ 'recycle_bin_destroy' => 'removed from recycle bin',
+
+ // Comments
+ 'commented_on' => 'iruzkinak',
+ 'comment_create' => 'added comment',
+ 'comment_update' => 'updated comment',
+ 'comment_delete' => 'deleted comment',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'eguneratu baimenak',
+];
diff --git a/lang/eu/auth.php b/lang/eu/auth.php
new file mode 100644
index 00000000000..35cbafd721b
--- /dev/null
+++ b/lang/eu/auth.php
@@ -0,0 +1,117 @@
+ 'Kredentzial hauek ez dira egokiak.',
+ 'throttle' => 'Login saiakera kopurua pasa duzu. Mesedez, saiatu berriz :seconds segundu barru.',
+
+ // Login & Register
+ 'sign_up' => 'Izena eman',
+ 'log_in' => 'Saioa hasi',
+ 'log_in_with' => ':socialDriver bidez hasi saioa',
+ 'sign_up_with' => ':socialDriver bidez izena eman',
+ 'logout' => 'Logout',
+
+ 'name' => 'Izena',
+ 'username' => 'Erabiltzaile izena',
+ 'email' => 'Eposta',
+ 'password' => 'Pasahitza',
+ 'password_confirm' => 'Berretsi pasahitza',
+ 'password_hint' => 'Gutxienez 8 karaktere izan behar ditu',
+ 'forgot_password' => 'Pasahitza ahaztu duzu?',
+ 'remember_me' => 'Gogoratu',
+ 'ldap_email_hint' => 'Mesedez, email bat sartu kontu hau erabiltzeko.',
+ 'create_account' => 'Sortu kontua',
+ 'already_have_account' => 'Dagoeneko kontu bat al duzu?',
+ 'dont_have_account' => 'Ez duzu konturik?',
+ 'social_login' => 'Kanpoko logina',
+ 'social_registration' => 'Erregistroa kanpotik',
+ 'social_registration_text' => 'Erregistratu eta saioa hasi beste zerbitzu batekin.',
+
+ 'register_thanks' => 'Mila esker erregistroagatik!',
+ 'register_confirm' => 'Mesedez, begiratu posta elektronikoari eta klik egin baieztapen botoia :appName sartzeko.',
+ 'registrations_disabled' => 'Erregistroa ez dago gaituta',
+ 'registration_email_domain_invalid' => 'Posta elektronikoko domeinu hori ez dago eskuragarri aplikazio honetarako',
+ 'register_success' => 'Eskerrik asko izen emateagatik! Orain izena emanda eta saioa hasita zaude.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Attempting Login',
+ 'auto_init_starting_desc' => 'We\'re contacting your authentication system to start the login process. If there\'s no progress after 5 seconds you can try clicking the link below.',
+ 'auto_init_start_link' => 'Proceed with authentication',
+
+ // Password Reset
+ 'reset_password' => 'Pasahitza berrezarri',
+ 'reset_password_send_instructions' => 'Sartu zure posta elektronikoa eta posta elektroniko bat bidaliko dizute pasahitza berritzeko esteka batekin.',
+ 'reset_password_send_button' => 'Bidali Reset Link',
+ 'reset_password_sent' => 'Posta elektronikora bidaliko da posta elektronikoko :email helbide hori sisteman aurkitzen bada.',
+ 'reset_password_success' => 'Zure pasahitza egoki berrezarri da.',
+ 'email_reset_subject' => 'Berrezarri zure :appName pasahitza',
+ 'email_reset_text' => 'E-mail hau jasotzen ari zara, zure konturako pasahitz eskaera jaso dugulako.',
+ 'email_reset_not_requested' => 'Zuk ez baduzu pasahitza berresartzea eskatu, ez duzu ezer egin beharrik.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Baieztatu zure emaila hemen :appName',
+ 'email_confirm_greeting' => 'Eskerrik asko :appName proiektuan batzeagatik!',
+ 'email_confirm_text' => 'Mesedez, baieztatu zure email helbidea beheko botoi hau kilkatuz:',
+ 'email_confirm_action' => 'Berrespen e-maila',
+ 'email_confirm_send_error' => 'Posta elektronikoaren baieztapenak behar da, baina sistemak ezin izan du posta elektronikoa bidali. Administratzailearekin harremanetan jarri email ezarpenak ongi dauden baieztatzeko.',
+ 'email_confirm_success' => 'Zure posta elektronikoa baieztatu da! Helbide elektroniko hau erabili dezakezu saioa hasteko.',
+ 'email_confirm_resent' => 'Eragiketa baieztatzeko email bat bidali dizugu. Mesedez, begiratu zure posta elektronikoa.',
+ 'email_confirm_thanks' => 'Thanks for confirming!',
+ 'email_confirm_thanks_desc' => 'Please wait a moment while your confirmation is handled. If you are not redirected after 3 seconds press the "Continue" link below to proceed.',
+
+ 'email_not_confirmed' => 'Email helbidea ez da baieztatu',
+ 'email_not_confirmed_text' => 'Your email address has not yet been confirmed.',
+ 'email_not_confirmed_click_link' => 'Please click the link in the email that was sent shortly after you registered.',
+ 'email_not_confirmed_resend' => 'If you cannot find the email you can re-send the confirmation email by submitting the form below.',
+ 'email_not_confirmed_resend_button' => 'Birbidali baieztapen mezua',
+
+ // User Invite
+ 'user_invite_email_subject' => ':appName sartzera gonbidatu zaituzte!',
+ 'user_invite_email_greeting' => 'An account has been created for you on :appName.',
+ 'user_invite_email_text' => 'Click the button below to set an account password and gain access:',
+ 'user_invite_email_action' => 'Kontuko pasahitzam jarri',
+ 'user_invite_page_welcome' => 'Ongi etorri :appName -era!',
+ 'user_invite_page_text' => 'To finalise your account and gain access you need to set a password which will be used to log-in to :appName on future visits.',
+ 'user_invite_page_confirm_button' => 'Berretsi pasahitza',
+ 'user_invite_success_login' => 'Password set, you should now be able to login using your set password to access :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Setup Multi-Factor Authentication',
+ 'mfa_setup_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'mfa_setup_configured' => 'Dagoeneko konfiguratuta',
+ 'mfa_setup_reconfigure' => 'Berrezarri',
+ 'mfa_setup_remove_confirmation' => 'Are you sure you want to remove this multi-factor authentication method?',
+ 'mfa_setup_action' => 'Konfigurazioa',
+ 'mfa_backup_codes_usage_limit_warning' => 'You have less than 5 backup codes remaining, Please generate and store a new set before you run out of codes to prevent being locked out of your account.',
+ 'mfa_option_totp_title' => 'Aplikazio mugikorra',
+ 'mfa_option_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Backup Codes',
+ 'mfa_option_backup_codes_desc' => 'Generates a set of one-time-use backup codes which you\'ll enter on login to verify your identity. Make sure to store these in a safe & secure place.',
+ 'mfa_gen_confirm_and_enable' => 'Baieztatu eta gaitu',
+ 'mfa_gen_backup_codes_title' => 'Backup Codes Setup',
+ 'mfa_gen_backup_codes_desc' => 'Store the below list of codes in a safe place. When accessing the system you\'ll be able to use one of the codes as a second authentication mechanism.',
+ 'mfa_gen_backup_codes_download' => 'Download Codes',
+ 'mfa_gen_backup_codes_usage_warning' => 'Each code can only be used once',
+ 'mfa_gen_totp_title' => 'Mobile App Setup',
+ 'mfa_gen_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Scan the QR code below using your preferred authentication app to get started.',
+ 'mfa_gen_totp_verify_setup' => 'Verify Setup',
+ 'mfa_gen_totp_verify_setup_desc' => 'Verify that all is working by entering a code, generated within your authentication app, in the input box below:',
+ 'mfa_gen_totp_provide_code_here' => 'Provide your app generated code here',
+ 'mfa_verify_access' => 'Verify Access',
+ 'mfa_verify_access_desc' => 'Your user account requires you to confirm your identity via an additional level of verification before you\'re granted access. Verify using one of your configured methods to continue.',
+ 'mfa_verify_no_methods' => 'No Methods Configured',
+ 'mfa_verify_no_methods_desc' => 'No multi-factor authentication methods could be found for your account. You\'ll need to set up at least one method before you gain access.',
+ 'mfa_verify_use_totp' => 'Verify using a mobile app',
+ 'mfa_verify_use_backup_codes' => 'Verify using a backup code',
+ 'mfa_verify_backup_code' => 'Backup Code',
+ 'mfa_verify_backup_code_desc' => 'Enter one of your remaining backup codes below:',
+ 'mfa_verify_backup_code_enter_here' => 'Enter backup code here',
+ 'mfa_verify_totp_desc' => 'Enter the code, generated using your mobile app, below:',
+ 'mfa_setup_login_notification' => 'Multi-factor method configured, Please now login again using the configured method.',
+];
diff --git a/lang/eu/common.php b/lang/eu/common.php
new file mode 100644
index 00000000000..f3696825e57
--- /dev/null
+++ b/lang/eu/common.php
@@ -0,0 +1,115 @@
+ 'Ezeztatu',
+ 'close' => 'Close',
+ 'confirm' => 'Berretsi',
+ 'back' => 'Itzuli',
+ 'save' => 'Gorde',
+ 'continue' => 'Jarraitu',
+ 'select' => 'Aukeratu',
+ 'toggle_all' => 'Txandakatu denak',
+ 'more' => 'Gehiago',
+
+ // Form Labels
+ 'name' => 'Izena',
+ 'description' => 'Deskribapena',
+ 'role' => 'Rola',
+ 'cover_image' => 'Azaleko irudia',
+ 'cover_image_description' => 'This image should be approximately 440x250px although it will be flexibly scaled & cropped to fit the user interface in different scenarios as required, so actual dimensions for display will differ.',
+
+ // Actions
+ 'actions' => 'Ekintzak',
+ 'view' => 'Ikusi',
+ 'view_all' => 'Ikusi denak',
+ 'new' => 'New',
+ 'create' => 'Sortu',
+ 'update' => 'Eguneratu',
+ 'edit' => 'Editatu',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Ordenatu',
+ 'move' => 'Mugitu',
+ 'copy' => 'Kopiatu',
+ 'reply' => 'Erantzun',
+ 'delete' => 'Ezabatu',
+ 'delete_confirm' => 'Ezabatzea baieztatu',
+ 'search' => 'Bilatu',
+ 'search_clear' => 'Bilaketa testua garbitu',
+ 'reset' => 'Berrezarri',
+ 'remove' => 'Ezabatu',
+ 'add' => 'Gehitu',
+ 'configure' => 'Konfiguratu',
+ 'manage' => 'Manage',
+ 'fullscreen' => 'Pantaila osoa',
+ 'favourite' => 'Gogokoa',
+ 'unfavourite' => 'Desatsegina',
+ 'next' => 'Hurrengoa',
+ 'previous' => 'Aurrekoa',
+ 'filter_active' => 'Iragazki aktiboa:',
+ 'filter_clear' => 'Iragazkia garbitu',
+ 'download' => 'Download',
+ 'open_in_tab' => 'Open in Tab',
+ 'open' => 'Open',
+
+ // Sort Options
+ 'sort_options' => 'Ordenatzeko aukerak',
+ 'sort_direction_toggle' => 'Ordenatzeko aukerak erakutsi',
+ 'sort_ascending' => 'Ordenatu (behetik gorantz)',
+ 'sort_descending' => 'Ordenatu (goitik beherantz)',
+ 'sort_name' => 'Izena',
+ 'sort_default' => 'Lehenetsia',
+ 'sort_created_at' => 'Sorrera data',
+ 'sort_updated_at' => 'Eguneratze data',
+
+ // Misc
+ 'deleted_user' => 'Erabiltzailea ezabatu',
+ 'no_activity' => 'Ekintzarik ez erakusteko',
+ 'no_items' => 'Ez dago elementurik eskuragarri',
+ 'back_to_top' => 'Itzuli gora',
+ 'skip_to_main_content' => 'Joan eduki nagusira',
+ 'toggle_details' => 'Ireki xehetasunak',
+ 'toggle_thumbnails' => 'Ireki azaleko irudia',
+ 'details' => 'Xehetasunak',
+ 'grid_view' => 'Lauki sare modua',
+ 'list_view' => 'Zerrenda Ikuspegia',
+ 'default' => 'Lehenetsia',
+ 'breadcrumb' => 'Nabigazioko aztarnak',
+ 'status' => 'Egoera',
+ 'status_active' => 'Aktiboa',
+ 'status_inactive' => 'Inaktibo',
+ 'never' => 'Inoiz ez',
+ 'none' => 'Bat ere ez',
+
+ // Header
+ 'homepage' => 'Homepage',
+ 'header_menu_expand' => 'Zabaldu goiburuko menua',
+ 'profile_menu' => 'Perfileko menua',
+ 'view_profile' => 'Ikusi profila',
+ 'edit_profile' => 'Editatu profila',
+ 'dark_mode' => 'Modu iluna',
+ 'light_mode' => 'Modu argia',
+ 'global_search' => 'Global Search',
+
+ // Layout tabs
+ 'tab_info' => 'Info',
+ 'tab_info_label' => 'Tab: Erakutsi bigarren mailako informazioa',
+ 'tab_content' => 'Edukia',
+ 'tab_content_label' => 'Tab: Erakutsi eduki nagusia',
+
+ // Email Content
+ 'email_action_help' => 'Arazoak badituzu ":actionText" botoiarekin, kopiatu eta itsatsi URL hau nabigatzailean:',
+ 'email_rights' => 'Eskubide guztiak erreserbatuta',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Pribatutasun politika',
+ 'terms_of_service' => 'Zerbitzu-baldintzak',
+
+ // OpenSearch
+ 'opensearch_description' => 'Search :appName',
+];
diff --git a/lang/eu/components.php b/lang/eu/components.php
new file mode 100644
index 00000000000..d853eb483e1
--- /dev/null
+++ b/lang/eu/components.php
@@ -0,0 +1,46 @@
+ 'Irudia aukeratu',
+ 'image_list' => 'Image List',
+ 'image_details' => 'Image Details',
+ 'image_upload' => 'Upload Image',
+ 'image_intro' => 'Here you can select and manage images that have been previously uploaded to the system.',
+ 'image_intro_upload' => 'Upload a new image by dragging an image file into this window, or by using the "Upload Image" button above.',
+ 'image_all' => 'Guztiak',
+ 'image_all_title' => 'Irudi guztiak ikusi',
+ 'image_book_title' => 'Liburu honetan igotako irudiak ikusi',
+ 'image_page_title' => 'Orrialde honetan igotako irudiak ikusi',
+ 'image_search_hint' => 'Izenarekin bilatu',
+ 'image_uploaded' => 'Igoera data :uploadedDate',
+ 'image_uploaded_by' => 'Uploaded by :userName',
+ 'image_uploaded_to' => 'Uploaded to :pageLink',
+ 'image_updated' => 'Updated :updateDate',
+ 'image_load_more' => 'Kargatu gehiago',
+ 'image_image_name' => 'Irudiaren izena',
+ 'image_delete_used' => 'Irudi hau honako orrialdetan erabili da.',
+ 'image_delete_confirm_text' => 'Ziur irudi hau ezabatu nahi duzula?',
+ 'image_select_image' => 'Irudia aukeratu',
+ 'image_dropzone' => 'Irudiak bota edo klikatu hemen igotzeko',
+ 'image_dropzone_drop' => 'Drop images here to upload',
+ 'images_deleted' => 'Ezabatutako irudiak',
+ 'image_preview' => 'Irudiaren aurrebista',
+ 'image_upload_success' => 'Irudia zuzen eguneratu da',
+ 'image_update_success' => 'Irudiaren xehetasunak egioki eguneratu dira',
+ 'image_delete_success' => 'Irudia ondo ezabatu da',
+ 'image_replace' => 'Replace Image',
+ 'image_replace_success' => 'Image file successfully updated',
+ 'image_rebuild_thumbs' => 'Regenerate Size Variations',
+ 'image_rebuild_thumbs_success' => 'Image size variations successfully rebuilt!',
+
+ // Code Editor
+ 'code_editor' => 'Kodea editatu',
+ 'code_language' => 'Kode hizkuntza',
+ 'code_content' => 'Kode edukia',
+ 'code_session_history' => 'Saioaren historia',
+ 'code_save' => 'Kodea gorde',
+];
diff --git a/lang/eu/editor.php b/lang/eu/editor.php
new file mode 100644
index 00000000000..3ec398cb7d5
--- /dev/null
+++ b/lang/eu/editor.php
@@ -0,0 +1,182 @@
+ 'Orokorra',
+ 'advanced' => 'Aurreratua',
+ 'none' => 'Bat ere ez',
+ 'cancel' => 'Ezeztatu',
+ 'save' => 'Gorde',
+ 'close' => 'Itxi',
+ 'apply' => 'Apply',
+ 'undo' => 'Desegin',
+ 'redo' => 'Berregin',
+ 'left' => 'Ezkerra',
+ 'center' => 'Erdian',
+ 'right' => 'Eskubi',
+ 'top' => 'Goi',
+ 'middle' => 'Erdia',
+ 'bottom' => 'Behean',
+ 'width' => 'Zabalera',
+ 'height' => 'Altuera',
+ 'More' => 'Gehiago',
+ 'select' => 'Aukeratu...',
+
+ // Toolbar
+ 'formats' => 'Formatuak',
+ 'header_large' => 'Goiburu luzea',
+ 'header_medium' => 'Goiburu ertaina',
+ 'header_small' => 'Goiburu txikia',
+ 'header_tiny' => 'Tiny goiburua',
+ 'paragraph' => 'Paragrafoa',
+ 'blockquote' => 'Aipu blokea',
+ 'inline_code' => 'Kodea',
+ 'callouts' => 'Legendak',
+ 'callout_information' => 'Informazioa',
+ 'callout_success' => 'Eginda',
+ 'callout_warning' => 'Kontuz',
+ 'callout_danger' => 'Arriskua',
+ 'bold' => 'Lodia',
+ 'italic' => 'Etzana',
+ 'underline' => 'Azpimarratua',
+ 'strikethrough' => 'Marratua',
+ 'superscript' => 'Gain-eskripta',
+ 'subscript' => 'Azpi-script',
+ 'text_color' => 'Testuaren kolorea',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Kolore pertsonalizatua',
+ 'remove_color' => 'Kolorea ezabatu',
+ 'background_color' => 'Atzeko planoaren kolorea',
+ 'align_left' => 'Lerrokatu ezkerrean',
+ 'align_center' => 'Lerrokatu erdian',
+ 'align_right' => 'Lerrokatu eskuinean',
+ 'align_justify' => 'Justifikatuta',
+ 'list_bullet' => 'Buletdun zerrenda',
+ 'list_numbered' => 'Zenbakitutako zerrenda',
+ 'list_task' => 'Zereginen zerrenda',
+ 'indent_increase' => 'Handitu koska',
+ 'indent_decrease' => 'Txikitu koska',
+ 'table' => 'Taula',
+ 'insert_image' => 'Irudia txertatu',
+ 'insert_image_title' => 'Aldatu/Txertatu irudia',
+ 'insert_link' => 'Txertatu/aldatu esteka',
+ 'insert_link_title' => 'Txertatu/Aldatu esteka',
+ 'insert_horizontal_line' => 'Txertatu linea horizontala',
+ 'insert_code_block' => 'Txertatu kode-blokea',
+ 'edit_code_block' => 'Edit code block',
+ 'insert_drawing' => 'Txertatu marrazki berria',
+ 'drawing_manager' => 'Marrazki kudeaketa',
+ 'insert_media' => 'Txertatu/aldatu media',
+ 'insert_media_title' => 'Aldatu/Txertatu irudia',
+ 'clear_formatting' => 'Garbitu formatua',
+ 'source_code' => 'Iturburu kodea',
+ 'source_code_title' => 'Iturburu kodea',
+ 'fullscreen' => 'Pantaila osoa',
+ 'image_options' => 'Irudiaren aukerak',
+
+ // Tables
+ 'table_properties' => 'Taularen propietateak',
+ 'table_properties_title' => 'Taularen propietateak',
+ 'delete_table' => 'Ezabatu taula',
+ 'table_clear_formatting' => 'Clear table formatting',
+ 'resize_to_contents' => 'Resize to contents',
+ 'row_header' => 'Row header',
+ 'insert_row_before' => 'Insert row before',
+ 'insert_row_after' => 'Insert row after',
+ 'delete_row' => 'Delete row',
+ 'insert_column_before' => 'Insert column before',
+ 'insert_column_after' => 'Insert column after',
+ 'delete_column' => 'Delete column',
+ 'table_cell' => 'Cell',
+ 'table_row' => 'Row',
+ 'table_column' => 'Column',
+ 'cell_properties' => 'Cell properties',
+ 'cell_properties_title' => 'Cell Properties',
+ 'cell_type' => 'Cell type',
+ 'cell_type_cell' => 'Cell',
+ 'cell_scope' => 'Scope',
+ 'cell_type_header' => 'Header cell',
+ 'merge_cells' => 'Merge cells',
+ 'split_cell' => 'Split cell',
+ 'table_row_group' => 'Row Group',
+ 'table_column_group' => 'Column Group',
+ 'horizontal_align' => 'Horizontal align',
+ 'vertical_align' => 'Vertical align',
+ 'border_width' => 'Border width',
+ 'border_style' => 'Border style',
+ 'border_color' => 'Border color',
+ 'row_properties' => 'Row properties',
+ 'row_properties_title' => 'Row Properties',
+ 'cut_row' => 'Cut row',
+ 'copy_row' => 'Copy row',
+ 'paste_row_before' => 'Paste row before',
+ 'paste_row_after' => 'Paste row after',
+ 'row_type' => 'Row type',
+ 'row_type_header' => 'Header',
+ 'row_type_body' => 'Body',
+ 'row_type_footer' => 'Footer',
+ 'alignment' => 'Alignment',
+ 'cut_column' => 'Cut column',
+ 'copy_column' => 'Copy column',
+ 'paste_column_before' => 'Paste column before',
+ 'paste_column_after' => 'Paste column after',
+ 'cell_padding' => 'Cell padding',
+ 'cell_spacing' => 'Cell spacing',
+ 'caption' => 'Caption',
+ 'show_caption' => 'Show caption',
+ 'constrain' => 'Constrain proportions',
+ 'cell_border_solid' => 'Solid',
+ 'cell_border_dotted' => 'Dotted',
+ 'cell_border_dashed' => 'Dashed',
+ 'cell_border_double' => 'Double',
+ 'cell_border_groove' => 'Groove',
+ 'cell_border_ridge' => 'Ridge',
+ 'cell_border_inset' => 'Inset',
+ 'cell_border_outset' => 'Outset',
+ 'cell_border_none' => 'None',
+ 'cell_border_hidden' => 'Hidden',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Source',
+ 'alt_desc' => 'Alternative description',
+ 'embed' => 'Embed',
+ 'paste_embed' => 'Paste your embed code below:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Text to display',
+ 'title' => 'Title',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Open link',
+ 'open_link_in' => 'Open link in...',
+ 'open_link_current' => 'Current window',
+ 'open_link_new' => 'New window',
+ 'remove_link' => 'Remove link',
+ 'insert_collapsible' => 'Insert collapsible block',
+ 'collapsible_unwrap' => 'Unwrap',
+ 'edit_label' => 'Edit label',
+ 'toggle_open_closed' => 'Toggle open/closed',
+ 'collapsible_edit' => 'Edit collapsible block',
+ 'toggle_label' => 'Toggle label',
+
+ // About view
+ 'about' => 'About the editor',
+ 'about_title' => 'About the WYSIWYG Editor',
+ 'editor_license' => 'Editor License & Copyright',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'This editor is built using :tinyLink which is provided under the MIT license.',
+ 'editor_tiny_license_link' => 'The copyright and license details of TinyMCE can be found here.',
+ 'save_continue' => 'Save Page & Continue',
+ 'callouts_cycle' => '(Keep pressing to toggle through types)',
+ 'link_selector' => 'Link to content',
+ 'shortcuts' => 'Shortcuts',
+ 'shortcut' => 'Shortcut',
+ 'shortcuts_intro' => 'The following shortcuts are available in the editor:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Description',
+];
diff --git a/lang/eu/entities.php b/lang/eu/entities.php
new file mode 100644
index 00000000000..cc51012d50f
--- /dev/null
+++ b/lang/eu/entities.php
@@ -0,0 +1,476 @@
+ 'Duela gutxi sortuak',
+ 'recently_created_pages' => 'Berriki sortutako Orrialdeak',
+ 'recently_updated_pages' => 'Berriki aldatutako Orrialdeak',
+ 'recently_created_chapters' => 'Berriki sortutako Kapituluak',
+ 'recently_created_books' => 'Berriki sortutako Liburuak',
+ 'recently_created_shelves' => 'Berriki sortutako Apalak',
+ 'recently_update' => 'Azken eguneraketak',
+ 'recently_viewed' => 'Oraintsu ikusiak',
+ 'recent_activity' => 'Duela gutxiko Jarduera',
+ 'create_now' => 'Sortu bat orain',
+ 'revisions' => 'Berrikuspenak',
+ 'meta_revision' => '#:revisionCount Berrikuspen',
+ 'meta_created' => 'Sortua :timeLength',
+ 'meta_created_name' => ':timeLength sortua. Erabiltzailea :user',
+ 'meta_updated' => 'Aldatua :timeLength',
+ 'meta_updated_name' => ':timeLength aldatuta. Erabiltzailea :user',
+ 'meta_owned_name' => ':user da jabea',
+ 'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
+ 'entity_select' => 'Aukeratutako entitatea',
+ 'entity_select_lack_permission' => 'You don\'t have the required permissions to select this item',
+ 'images' => 'Irudiak',
+ 'my_recent_drafts' => 'Nire azken zirriborroak',
+ 'my_recently_viewed' => 'Nik Ikusitako azkenak',
+ 'my_most_viewed_favourites' => 'Nire gehien ikusitako gogokoak',
+ 'my_favourites' => 'Nire Gogokoenak',
+ 'no_pages_viewed' => 'Ez daukazu ikusiriko orririk',
+ 'no_pages_recently_created' => 'Ez da orrialderik sortu azkenaldian',
+ 'no_pages_recently_updated' => 'Ez da orrialderik aldatu azkenaldian',
+ 'export' => 'Esportatu',
+ 'export_html' => 'Daukan web artxiboa',
+ 'export_pdf' => 'PDF fitxategia',
+ 'export_text' => 'Testu lauko fitxategiak',
+ 'export_md' => 'Markdown fitxategia',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Baimenak',
+ 'permissions_desc' => 'Ezarri baimenak hemen, erabiltzaileen rolek ematen dituzten baimenak gainidazteko.',
+ 'permissions_book_cascade' => 'Permissions set on books will automatically cascade to child chapters and pages, unless they have their own permissions defined.',
+ 'permissions_chapter_cascade' => 'Permissions set on chapters will automatically cascade to child pages, unless they have their own permissions defined.',
+ 'permissions_save' => 'Gorde baimenak',
+ 'permissions_owner' => 'Jabea',
+ 'permissions_role_everyone_else' => 'Everyone Else',
+ 'permissions_role_everyone_else_desc' => 'Set permissions for all roles not specifically overridden.',
+ 'permissions_role_override' => 'Gainidatzi baimenak rol honi',
+ 'permissions_inherit_defaults' => 'Inherit defaults',
+
+ // Search
+ 'search_results' => 'Bilaketaren emaitzak',
+ 'search_total_results_found' => ':count emaitza aurkitu dira|:count emaitza aurkitu dira guztira',
+ 'search_clear' => 'Bilaketa testua garbitu',
+ 'search_no_pages' => 'Ez da orririk aurkitu zure bilaketan',
+ 'search_for_term' => 'Bilatu honen arabera :term',
+ 'search_more' => 'Emaitza gehiago',
+ 'search_advanced' => 'Bilaketa aurreratua',
+ 'search_terms' => 'Bilaketa-hitza',
+ 'search_content_type' => 'Eduki Mota',
+ 'search_exact_matches' => 'Bat etortze zehatza',
+ 'search_tags' => 'Etiketa bilaketak',
+ 'search_options' => 'Aukerak',
+ 'search_viewed_by_me' => 'Nik ikusiak',
+ 'search_not_viewed_by_me' => 'Nik ikusi ez ditudanak',
+ 'search_permissions_set' => 'Baimenak',
+ 'search_created_by_me' => 'Nik sortuak',
+ 'search_updated_by_me' => 'Nik eguneratuak',
+ 'search_owned_by_me' => 'Nire jabetazkoak',
+ 'search_date_options' => 'Data aukerak',
+ 'search_updated_before' => 'Aurretik eguneratuak',
+ 'search_updated_after' => 'Ondoren eguneratuak',
+ 'search_created_before' => 'Aurretik sortuak',
+ 'search_created_after' => 'Ondoren sortuak',
+ 'search_set_date' => 'Data finkatu',
+ 'search_update' => 'Eguneratu bilaketa',
+
+ // Shelves
+ 'shelf' => 'Apalategia',
+ 'shelves' => 'Apalategiak',
+ 'x_shelves' => ':count Apalategi|:count Apalategi',
+ 'shelves_empty' => 'Ez da inolako apalategirik sortu',
+ 'shelves_create' => 'Apalategi berria sortu',
+ 'shelves_popular' => 'Apalategi esanguratsuak',
+ 'shelves_new' => 'Apalategi berriak',
+ 'shelves_new_action' => 'Apalategi berria',
+ 'shelves_popular_empty' => 'Apalategi ikusienak hemen agertuko dira.',
+ 'shelves_new_empty' => 'Berriki sorturiko apalategiak hemen agertuko dira.',
+ 'shelves_save' => 'Gorde apalategia',
+ 'shelves_books' => 'Apalategi honetako liburuak',
+ 'shelves_add_books' => 'Gehitu liburuak apalategi honetara',
+ 'shelves_drag_books' => 'Drag books below to add them to this shelf',
+ 'shelves_empty_contents' => 'Apalategi honek ez dauka libururik',
+ 'shelves_edit_and_assign' => 'Apalategia editatu liburuak gehitzeko',
+ 'shelves_edit_named' => 'Edit Shelf :name',
+ 'shelves_edit' => 'Edit Shelf',
+ 'shelves_delete' => 'Delete Shelf',
+ 'shelves_delete_named' => 'Delete Shelf :name',
+ 'shelves_delete_explain' => "This will delete the shelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Are you sure you want to delete this shelf?',
+ 'shelves_permissions' => 'Apalategi baimenak',
+ 'shelves_permissions_updated' => 'Apalategi baimenak eguneratuta',
+ 'shelves_permissions_active' => 'Apalategi baimenak aktibatuta',
+ 'shelves_permissions_cascade_warning' => 'Apaletako baimenak ez dira automatikoki hauen barneko liburuetan gordeko. Liburu bat apalategi askotan egon daitekeelako. Hala ere, baimenak apalategiko liburutara kopiatu daitezke, behean agertzen den aukera erabiliz.',
+ 'shelves_permissions_create' => 'Shelf create permissions are only used for copying permissions to child books using the action below. They do not control the ability to create books.',
+ 'shelves_copy_permissions_to_books' => 'Kopiatu baimenak liburura',
+ 'shelves_copy_permissions' => 'Gorde baimenak',
+ 'shelves_copy_permissions_explain' => 'Honek apalategi honen egungo baimen-konfigurazioa aplikatuko die barruan dauden liburu guztiei. Aktibatu aurretik, ziurtatu apaletan aldaketak gorde direla.',
+ 'shelves_copy_permission_success' => 'Shelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'Liburua',
+ 'books' => 'Liburuak',
+ 'x_books' => ':count Liburu|:count Liburu',
+ 'books_empty' => 'Ez da orrialderik sortu',
+ 'books_popular' => 'Liburu ikusienak',
+ 'books_recent' => 'Azken liburuak',
+ 'books_new' => 'Liburu berriak',
+ 'books_new_action' => 'Liburu berria',
+ 'books_popular_empty' => 'Apalategi ikusienak hemen agertuko dira.',
+ 'books_new_empty' => 'Berriki sorturiko apalategiak hemen agertuko dira.',
+ 'books_create' => 'Liburu berria sortu',
+ 'books_delete' => 'Liburua ezabatu',
+ 'books_delete_named' => ':bookName liburua ezabatuta',
+ 'books_delete_explain' => 'Honek \':bookName\' liburua ezabatuko du. bere orrialde eta kapitulu guztiak ezabatuak izango dira.',
+ 'books_delete_confirmation' => 'Ziur zaude liburu hau ezabatu nahi duzula?',
+ 'books_edit' => 'Editatu liburua',
+ 'books_edit_named' => 'Editatu :bookName liburua',
+ 'books_form_book_name' => 'Liburu izena',
+ 'books_save' => 'Gorde Liburua',
+ 'books_permissions' => 'Liburu baimenak',
+ 'books_permissions_updated' => 'Liburu baimenak eguneratuta',
+ 'books_empty_contents' => 'Ez da orri edo kapitulurik sortu liburu honentzat.',
+ 'books_empty_create_page' => 'Sortu orrialde berria',
+ 'books_empty_sort_current_book' => 'Ordenatu uneko liburu hau',
+ 'books_empty_add_chapter' => 'Kapitulu berria gehitu',
+ 'books_permissions_active' => 'Liburu baimenak aktibatuta',
+ 'books_search_this' => 'Bilatu liburu hau',
+ 'books_navigation' => 'Liburu nabigazioa',
+ 'books_sort' => 'Ordenatu liburu edukiak',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Ordenatu :bookName liburua',
+ 'books_sort_name' => 'Ordenatu izenaren arabera',
+ 'books_sort_created' => 'Ordenatu argitaratze-dataren arabera',
+ 'books_sort_updated' => 'Ordenatu aldaketa-dataren arabera',
+ 'books_sort_chapters_first' => 'Lehen kapitulua',
+ 'books_sort_chapters_last' => 'Azken kapitulua',
+ 'books_sort_show_other' => 'Erakutsi beste liburuak',
+ 'books_sort_save' => 'Gorde agindu berria',
+ 'books_sort_show_other_desc' => 'Add other books here to include them in the sort operation, and allow easy cross-book reorganisation.',
+ 'books_sort_move_up' => 'Move Up',
+ 'books_sort_move_down' => 'Move Down',
+ 'books_sort_move_prev_book' => 'Move to Previous Book',
+ 'books_sort_move_next_book' => 'Move to Next Book',
+ 'books_sort_move_prev_chapter' => 'Move Into Previous Chapter',
+ 'books_sort_move_next_chapter' => 'Move Into Next Chapter',
+ 'books_sort_move_book_start' => 'Move to Start of Book',
+ 'books_sort_move_book_end' => 'Move to End of Book',
+ 'books_sort_move_before_chapter' => 'Move to Before Chapter',
+ 'books_sort_move_after_chapter' => 'Move to After Chapter',
+ 'books_copy' => 'Kopiatu liburua',
+ 'books_copy_success' => 'Ondo kopiatu da',
+
+ // Chapters
+ 'chapter' => 'Kapitulua',
+ 'chapters' => 'Kapituluak',
+ 'x_chapters' => ':count Kapitulu|:count Kapitulu',
+ 'chapters_popular' => 'Kapitulu ikusienak',
+ 'chapters_new' => 'Kapitulu berria',
+ 'chapters_create' => 'Sortu kapitulu berria',
+ 'chapters_delete' => 'Kapitulua ezabatu',
+ 'chapters_delete_named' => ':chapterName kapitulua ezabatu',
+ 'chapters_delete_explain' => 'This will delete the chapter with the name \':chapterName\'. All pages that exist within this chapter will also be deleted.',
+ 'chapters_delete_confirm' => 'Ziur kapitulu hau ezabatu nahi duzula?',
+ 'chapters_edit' => 'Kapitulua aldatu',
+ 'chapters_edit_named' => ':chapterName kapitulua editatu',
+ 'chapters_save' => 'Kapitulua gorde',
+ 'chapters_move' => 'Kapitulua mugitu',
+ 'chapters_move_named' => ':chapterName kapitulua mugitu',
+ 'chapters_copy' => 'Kapitulua kopiatu',
+ 'chapters_copy_success' => 'Kapitulua egoki kopiatua',
+ 'chapters_permissions' => 'Kapitulu baimenak',
+ 'chapters_empty' => 'Ez dago orrialderik kapitulu honetan.',
+ 'chapters_permissions_active' => 'Liburu baimenak altan',
+ 'chapters_permissions_success' => 'Liburu baimenak eguneratuta',
+ 'chapters_search_this' => 'Kapitulu hau bilatu',
+ 'chapter_sort_book' => 'Sort Book',
+
+ // Pages
+ 'page' => 'Orria',
+ 'pages' => 'Orriak',
+ 'x_pages' => 'orrialde:count|:count orrialde',
+ 'pages_popular' => 'Orrialde ikusienak',
+ 'pages_new' => 'Orrialde berria',
+ 'pages_attachments' => 'Eranskinak',
+ 'pages_navigation' => 'Nabigazio orrialdea',
+ 'pages_delete' => 'Ezabatu orria',
+ 'pages_delete_named' => ':pageName Orria ezabatu',
+ 'pages_delete_draft_named' => 'Delete Draft Page :pageName',
+ 'pages_delete_draft' => 'Delete Draft Page',
+ 'pages_delete_success' => 'Orria ezabatua',
+ 'pages_delete_draft_success' => 'Draft page deleted',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Ziur al zaude orri hau ezabatu nahi duzula?',
+ 'pages_delete_draft_confirm' => 'Are you sure you want to delete this draft page?',
+ 'pages_editing_named' => 'Editing Page :pageName',
+ 'pages_edit_draft_options' => 'Draft Options',
+ 'pages_edit_save_draft' => 'Gorde zirriborroa',
+ 'pages_edit_draft' => 'Edit Page Draft',
+ 'pages_editing_draft' => 'Editatu zirriborroa',
+ 'pages_editing_page' => 'Editatu orrialdea',
+ 'pages_edit_draft_save_at' => 'Draft saved at ',
+ 'pages_edit_delete_draft' => 'Ezabatu zirriborroa',
+ 'pages_edit_delete_draft_confirm' => 'Are you sure you want to delete your draft page changes? All of your changes, since the last full save, will be lost and the editor will be updated with the latest page non-draft save state.',
+ 'pages_edit_discard_draft' => 'Baztertu zirriborroa',
+ 'pages_edit_switch_to_markdown' => 'Switch to Markdown Editor',
+ 'pages_edit_switch_to_markdown_clean' => '(Clean Content)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stable Content)',
+ 'pages_edit_switch_to_wysiwyg' => 'Switch to WYSIWYG Editor',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Set Changelog',
+ 'pages_edit_enter_changelog_desc' => 'Enter a brief description of the changes you\'ve made',
+ 'pages_edit_enter_changelog' => 'Enter Changelog',
+ 'pages_editor_switch_title' => 'Switch Editor',
+ 'pages_editor_switch_are_you_sure' => 'Are you sure you want to change the editor for this page?',
+ 'pages_editor_switch_consider_following' => 'Consider the following when changing editors:',
+ 'pages_editor_switch_consideration_a' => 'Once saved, the new editor option will be used by any future editors, including those that may not be able to change editor type themselves.',
+ 'pages_editor_switch_consideration_b' => 'This can potentially lead to a loss of detail and syntax in certain circumstances.',
+ 'pages_editor_switch_consideration_c' => 'Tag or changelog changes, made since last save, won\'t persist across this change.',
+ 'pages_save' => 'Gorde orrialdea',
+ 'pages_title' => 'Orrialdearen titulua',
+ 'pages_name' => 'Orrialdearen izena',
+ 'pages_md_editor' => 'Editorea',
+ 'pages_md_preview' => 'Aurrebista',
+ 'pages_md_insert_image' => 'Txertatu irudia',
+ 'pages_md_insert_link' => 'Insert Entity Link',
+ 'pages_md_insert_drawing' => 'Txertatu marrazki berria',
+ 'pages_md_show_preview' => 'Show preview',
+ 'pages_md_sync_scroll' => 'Sync preview scroll',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Unsaved Drawing Found',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'Page is not in a chapter',
+ 'pages_move' => 'Move Page',
+ 'pages_copy' => 'Copy Page',
+ 'pages_copy_desination' => 'Copy Destination',
+ 'pages_copy_success' => 'Page successfully copied',
+ 'pages_permissions' => 'Page Permissions',
+ 'pages_permissions_success' => 'Page permissions updated',
+ 'pages_revision' => 'Revision',
+ 'pages_revisions' => 'Page Revisions',
+ 'pages_revisions_desc' => 'Listed below are all the past revisions of this page. You can look back upon, compare, and restore old page versions if permissions allow. The full history of the page may not be fully reflected here since, depending on system configuration, old revisions could be auto-deleted.',
+ 'pages_revisions_named' => 'Page Revisions for :pageName',
+ 'pages_revision_named' => 'Page Revision for :pageName',
+ 'pages_revision_restored_from' => 'Restored from #:id; :summary',
+ 'pages_revisions_created_by' => 'Sortzailea',
+ 'pages_revisions_date' => 'Berrikuspen data',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revision Number',
+ 'pages_revisions_numbered' => 'Revision #:id',
+ 'pages_revisions_numbered_changes' => 'Revision #:id Changes',
+ 'pages_revisions_editor' => 'Editor Type',
+ 'pages_revisions_changelog' => 'Aldaketen erregistroa',
+ 'pages_revisions_changes' => 'Aldaketak',
+ 'pages_revisions_current' => 'Uneko bertsioa',
+ 'pages_revisions_preview' => 'Aurrebista',
+ 'pages_revisions_restore' => 'Berreskuratu',
+ 'pages_revisions_none' => 'This page has no revisions',
+ 'pages_copy_link' => 'Copy Link',
+ 'pages_edit_content_link' => 'Jump to section in editor',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Page Section Options',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Page Permissions Active',
+ 'pages_initial_revision' => 'Initial publish',
+ 'pages_references_update_revision' => 'System auto-update of internal links',
+ 'pages_initial_name' => 'Orrialde berria',
+ 'pages_editing_draft_notification' => 'You are currently editing a draft that was last saved :timeDiff.',
+ 'pages_draft_edited_notification' => 'This page has been updated by since that time. It is recommended that you discard this draft.',
+ 'pages_draft_page_changed_since_creation' => 'This page has been updated since this draft was created. It is recommended that you discard this draft or take care not to overwrite any page changes.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count users have started editing this page',
+ 'start_b' => ':userName has started editing this page',
+ 'time_a' => 'since the page was last updated',
+ 'time_b' => 'in the last :minCount minutes',
+ 'message' => ':start :time. Take care not to overwrite each other\'s updates!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'Specific Page',
+ 'pages_is_template' => 'Orrialde txantiloia',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'Orrialde etiketak',
+ 'chapter_tags' => 'Kapitulu etiketak',
+ 'book_tags' => 'Liburu etiketak',
+ 'shelf_tags' => 'Apalategi etiketak',
+ 'tag' => 'Etiketa',
+ 'tags' => 'Etiketak',
+ 'tags_index_desc' => 'Tags can be applied to content within the system to apply a flexible form of categorization. Tags can have both a key and value, with the value being optional. Once applied, content can then be queried using the tag name and value.',
+ 'tag_name' => 'Etiketa izena',
+ 'tag_value' => 'Tag Value (Optional)',
+ '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' => 'Beste bat gehitu',
+ 'tags_remove' => 'Remove this tag',
+ 'tags_usages' => 'Total tag usages',
+ 'tags_assigned_pages' => 'Assigned to Pages',
+ 'tags_assigned_chapters' => 'Assigned to Chapters',
+ 'tags_assigned_books' => 'Assigned to Books',
+ 'tags_assigned_shelves' => 'Assigned to Shelves',
+ 'tags_x_unique_values' => ':count unique values',
+ 'tags_all_values' => 'Balio guztiak',
+ 'tags_view_tags' => 'View Tags',
+ 'tags_view_existing_tags' => 'View existing tags',
+ 'tags_list_empty_hint' => 'Tags can be assigned via the page editor sidebar or while editing the details of a book, chapter or shelf.',
+ 'attachments' => 'Eranskinak',
+ 'attachments_explain' => 'Upload some files or attach some links to display on your page. These are visible in the page sidebar.',
+ 'attachments_explain_instant_save' => 'Changes here are saved instantly.',
+ 'attachments_upload' => 'Kargatu artxiboak',
+ 'attachments_link' => 'Attach Link',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'Set Link',
+ 'attachments_delete' => 'Are you sure you want to delete this attachment?',
+ 'attachments_dropzone' => 'Drop files here to upload',
+ 'attachments_no_files' => 'Ez da igo fitxategirik',
+ 'attachments_explain_link' => 'You can attach a link if you\'d prefer not to upload a file. This can be a link to another page or a link to a file in the cloud.',
+ 'attachments_link_name' => 'Loturaren izena',
+ 'attachment_link' => 'Attachment link',
+ 'attachments_link_url' => 'Fitxategiarentzako esteka',
+ 'attachments_link_url_hint' => 'Url of site or file',
+ 'attach' => 'Attach',
+ 'attachments_insert_link' => 'Add Attachment Link to Page',
+ 'attachments_edit_file' => 'Edit File',
+ 'attachments_edit_file_name' => 'Fitxategi izena',
+ 'attachments_edit_drop_upload' => 'Drop files or click here to upload and overwrite',
+ 'attachments_order_updated' => 'Attachment order updated',
+ 'attachments_updated_success' => 'Attachment details updated',
+ 'attachments_deleted' => 'Attachment deleted',
+ 'attachments_file_uploaded' => 'File successfully uploaded',
+ 'attachments_file_updated' => 'File successfully updated',
+ 'attachments_link_attached' => 'Link successfully attached to page',
+ 'templates' => 'Templates',
+ 'templates_set_as_template' => 'Page is a template',
+ 'templates_explain_set_as_template' => 'You can set this page as a template so its contents be utilized when creating other pages. Other users will be able to use this template if they have view permissions for this page.',
+ 'templates_replace_content' => 'Replace page content',
+ 'templates_append_content' => 'Append to page content',
+ 'templates_prepend_content' => 'Prepend to page content',
+
+ // Profile View
+ 'profile_user_for_x' => 'User for :time',
+ 'profile_created_content' => 'Created Content',
+ 'profile_not_created_pages' => ':userName has not created any pages',
+ 'profile_not_created_chapters' => ':userName has not created any chapters',
+ 'profile_not_created_books' => ':userName has not created any books',
+ 'profile_not_created_shelves' => ':userName has not created any shelves',
+
+ // Comments
+ 'comment' => 'Iruzkina',
+ 'comments' => 'Iruzkinak',
+ 'comment_add' => 'Iruzkina gehitu',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Utzi iruzkin bat hemen',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Iruzkina gorde',
+ 'comment_new' => 'Iruzkin berria',
+ 'comment_created' => 'commented :createDiff',
+ 'comment_updated' => 'Updated :updateDiff by :username',
+ 'comment_updated_indicator' => 'Updated',
+ 'comment_deleted_success' => 'Comment deleted',
+ 'comment_created_success' => 'Iruzkina gehituta',
+ 'comment_updated_success' => 'Iruzkina gehituta',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Ziur zaude iruzkin hau ezabatu nahi duzula?',
+ 'comment_in_reply_to' => 'In reply to :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Here are the comments that have been left on this page. Comments can be added & managed when viewing the saved page.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Ziur zaude hau ezabatu nahi duzula?',
+ 'revision_restore_confirm' => 'Are you sure you want to restore this revision? The current page contents will be replaced.',
+ 'revision_cannot_delete_latest' => 'Cannot delete the latest revision.',
+
+ // Copy view
+ 'copy_consider' => 'Please consider the below when copying content.',
+ 'copy_consider_permissions' => 'Custom permission settings will not be copied.',
+ 'copy_consider_owner' => 'You will become the owner of all copied content.',
+ 'copy_consider_images' => 'Page image files will not be duplicated & the original images will retain their relation to the page they were originally uploaded to.',
+ 'copy_consider_attachments' => 'Page attachments will not be copied.',
+ 'copy_consider_access' => 'A change of location, owner or permissions may result in this content being accessible to those previously without access.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Apalategi bihurtu',
+ 'convert_to_shelf_contents_desc' => 'Liburu hau apalategi berri baten bihur dezakezu eduki berarekin. Liburu honetako kapituluak liburu berri bihurtuko dira. Liburu honek kapitulu batean ez dagoen orriren bat baldin badu, liburu honi izena aldatuko zaio eta orri horiek izango ditu, eta liburu hau apal berriaren parte bihurtuko da.',
+ 'convert_to_shelf_permissions_desc' => 'Liburu honetan ezarritako baimen guztiak apalategi berrira igaroko dira eta baimen propiorik ez duten haur-liburu berrietara kopiatuko dira. Kontuan izan apaletako baimenek ez dutela barruan askiesten, liburuek bezala.',
+ 'convert_book' => 'Convert Book',
+ 'convert_book_confirm' => 'Are you sure you want to convert this book?',
+ 'convert_undo_warning' => 'This cannot be as easily undone.',
+ 'convert_to_book' => 'Convert to Book',
+ 'convert_to_book_desc' => 'You can convert this chapter to a new book with the same contents. Any permissions set on this chapter will be copied to the new book but any inherited permissions, from the parent book, will not be copied which could lead to a change of access control.',
+ 'convert_chapter' => 'Convert Chapter',
+ 'convert_chapter_confirm' => 'Are you sure you want to convert this chapter?',
+
+ // References
+ 'references' => 'References',
+ 'references_none' => 'There are no tracked references to this item.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Watch',
+ 'watch_title_default' => 'Default Preferences',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignore',
+ 'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
+ 'watch_title_new' => 'New Pages',
+ 'watch_desc_new' => 'Notify when any new page is created within this item.',
+ 'watch_title_updates' => 'All Page Updates',
+ 'watch_desc_updates' => 'Notify upon all new pages and page changes.',
+ 'watch_desc_updates_page' => 'Notify upon all page changes.',
+ 'watch_title_comments' => 'All Page Updates & Comments',
+ 'watch_desc_comments' => 'Notify upon all new pages, page changes and new comments.',
+ 'watch_desc_comments_page' => 'Notify upon page changes and new comments.',
+ 'watch_change_default' => 'Change default notification preferences',
+ 'watch_detail_ignore' => 'Ignoring notifications',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/eu/errors.php b/lang/eu/errors.php
new file mode 100644
index 00000000000..5b011368ae6
--- /dev/null
+++ b/lang/eu/errors.php
@@ -0,0 +1,135 @@
+ 'Ez duzu baimenik eskatutako baliabidean sartzeko.',
+ 'permissionJson' => 'Ez duzu baimenik ekintza hau egiteko.',
+
+ // Auth
+ 'error_user_exists_different_creds' => ':email kontuakin erabiltzaile bat badago, baina kredentzial ezberdinekin.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'Email kontua berretsita dago, saiatu saioa hasten.',
+ 'email_confirmation_invalid' => 'Berrezpen token hau ez da baliozkoa eta iada erabiltzen da, mesedez, saiatu berriz erregistroa burutzen.',
+ 'email_confirmation_expired' => 'Berrezpen tokena iraungi da, berrezpen email berri bnat bidali da.',
+ 'email_confirmation_awaiting' => 'Erabiltzen ari den kontuko emaiala berreztea falta da',
+ 'ldap_fail_anonymous' => 'LDAP sarrerak akatsa eman du lotura anonimoa erabiliz',
+ 'ldap_fail_authed' => 'LDAP sarrera akatsa eman du dn eta pasahitz hauekin',
+ 'ldap_extension_not_installed' => 'PHP LDAP extentsioa ez dago instalatuta',
+ 'ldap_cannot_connect' => 'Ezin izan da ldap zerbitzarira konektatu, hasierako konexioak huts egin du',
+ 'saml_already_logged_in' => 'Saioa aurretik hasita dago',
+ 'saml_no_email_address' => 'Ezin izan dugu posta helbiderik aurkitu erabiltzaile honentzat, kanpoko autentifikazio zerbitzuak bidalitako datuetan',
+ 'saml_invalid_response_id' => 'Kanpoko egiazkotasun-sistemaren eskaria ez du onartzen aplikazio honek abiarazitako prozesu batek. Loginean atzera egitea izan daiteke arrazoia.',
+ 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'oidc_already_logged_in' => 'Dagoeneko saioa hasita',
+ 'oidc_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'oidc_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'social_no_action_defined' => 'No action defined',
+ 'social_login_bad_response' => "Error received during :socialAccount login: \n:error",
+ 'social_account_in_use' => 'This :socialAccount account is already in use, Try logging in via the :socialAccount option.',
+ 'social_account_email_in_use' => 'The email :email is already in use. If you already have an account you can connect your :socialAccount account from your profile settings.',
+ 'social_account_existing' => 'This :socialAccount is already attached to your profile.',
+ 'social_account_already_used_existing' => 'This :socialAccount account is already used by another user.',
+ 'social_account_not_used' => 'This :socialAccount account is not linked to any users. Please attach it in your profile settings. ',
+ 'social_account_register_instructions' => 'If you do not yet have an account, You can register an account using the :socialAccount option.',
+ 'social_driver_not_found' => 'Social driver not found',
+ 'social_driver_not_configured' => 'Your :socialAccount social settings are not configured correctly.',
+ 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // System
+ 'path_not_writable' => 'File path :filePath could not be uploaded to. Ensure it is writable to the server.',
+ 'cannot_get_image_from_url' => 'Cannot get image from :url',
+ 'cannot_create_thumbs' => 'The server cannot create thumbnails. Please check you have the GD PHP extension installed.',
+ 'server_upload_limit' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+ 'server_post_limit' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.',
+ 'uploaded' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Errorea gertatu da irudia igotzerakoan',
+ 'image_upload_type_error' => 'The image type being uploaded is invalid',
+ 'image_upload_replace_type' => 'Image file replacements must be of the same type',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Drawing data could not be loaded. The drawing file might no longer exist or you may not have permission to access it.',
+
+ // Attachments
+ 'attachment_not_found' => 'Atxikia ez da aurkitu',
+ 'attachment_upload_error' => 'An error occurred uploading the attachment file',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Failed to save draft. Ensure you have internet connection before saving this page',
+ 'page_draft_delete_fail' => 'Failed to delete page draft and fetch current page saved content',
+ 'page_custom_home_deletion' => 'Cannot delete a page while it is set as a homepage',
+
+ // Entities
+ 'entity_not_found' => 'Entity not found',
+ 'bookshelf_not_found' => 'Shelf not found',
+ 'book_not_found' => 'Book not found',
+ 'page_not_found' => 'Page not found',
+ 'chapter_not_found' => 'Chapter not found',
+ 'selected_book_not_found' => 'The selected book was not found',
+ 'selected_book_chapter_not_found' => 'The selected Book or Chapter was not found',
+ 'guests_cannot_save_drafts' => 'Guests cannot save drafts',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'You cannot delete the only admin',
+ 'users_cannot_delete_guest' => 'You cannot delete the guest user',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'This role cannot be edited',
+ 'role_system_cannot_be_deleted' => 'This role is a system role and cannot be deleted',
+ 'role_registration_default_cannot_delete' => 'This role cannot be deleted while set as the default registration role',
+ 'role_cannot_remove_only_admin' => 'This user is the only user assigned to the administrator role. Assign the administrator role to another user before attempting to remove it here.',
+
+ // Comments
+ 'comment_list' => 'An error occurred while fetching the comments.',
+ 'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.',
+ 'comment_add' => 'An error occurred while adding / updating the comment.',
+ 'comment_delete' => 'An error occurred while deleting the comment.',
+ 'empty_comment' => 'Cannot add an empty comment.',
+
+ // Error pages
+ '404_page_not_found' => 'Ez da orrialdea aurkitu',
+ 'sorry_page_not_found' => 'Sorry, The page you were looking for could not be found.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
+ 'image_not_found' => 'Irudia Ez da Aurkitu',
+ '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' => 'Itzuli hasierara',
+ 'error_occurred' => 'Akats bat gertatu da',
+ 'app_down' => ':appName is down right now',
+ 'back_soon' => 'It will be back up soon.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'No authorization token found on the request',
+ 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect',
+ 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token',
+ 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
+ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
+ 'api_user_token_expired' => 'The authorization token used has expired',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'The URL does not match the configured allowed SSR hosts',
+];
diff --git a/lang/eu/notifications.php b/lang/eu/notifications.php
new file mode 100644
index 00000000000..563ac24e84d
--- /dev/null
+++ b/lang/eu/notifications.php
@@ -0,0 +1,29 @@
+ 'New comment on page: :pageName',
+ 'new_comment_intro' => 'A user has commented on a page in :appName:',
+ 'new_page_subject' => 'New page: :pageName',
+ 'new_page_intro' => 'A new page has been created in :appName:',
+ 'updated_page_subject' => 'Updated page: :pageName',
+ 'updated_page_intro' => 'A page has been updated in :appName:',
+ 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Page Name:',
+ 'detail_page_path' => 'Page Path:',
+ 'detail_commenter' => 'Commenter:',
+ 'detail_comment' => 'Comment:',
+ 'detail_created_by' => 'Created By:',
+ 'detail_updated_by' => 'Updated By:',
+
+ 'action_view_comment' => 'View Comment',
+ 'action_view_page' => 'View Page',
+
+ 'footer_reason' => 'This notification was sent to you because :link cover this type of activity for this item.',
+ 'footer_reason_link' => 'your notification preferences',
+];
diff --git a/lang/eu/pagination.php b/lang/eu/pagination.php
new file mode 100644
index 00000000000..7b10d178cbb
--- /dev/null
+++ b/lang/eu/pagination.php
@@ -0,0 +1,12 @@
+ '« Aurrekoa',
+ 'next' => 'Hurrengoa »',
+
+];
diff --git a/lang/eu/passwords.php b/lang/eu/passwords.php
new file mode 100644
index 00000000000..6b574a58b04
--- /dev/null
+++ b/lang/eu/passwords.php
@@ -0,0 +1,15 @@
+ 'Pasahitzak gutxienez sei karaktere izan behar ditu eta baldintzak bete behar ditu.',
+ 'user' => "Ezin izan dugu erabiltzailerik topatu posta-helbide honekin.",
+ 'token' => 'Pasahitza berritzeko token hau ez da baliagarria email helbide honentzat.',
+ 'sent' => 'Zure pasahitza berrezartzeko esteka email bidez bidali dizugu!',
+ 'reset' => 'Zure pasahitza berrezarri da!',
+
+];
diff --git a/lang/eu/preferences.php b/lang/eu/preferences.php
new file mode 100644
index 00000000000..3818932d4ea
--- /dev/null
+++ b/lang/eu/preferences.php
@@ -0,0 +1,52 @@
+ 'My Account',
+
+ 'shortcuts' => 'Lastertekla',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Hemen, nabigaziorako eta ekintzetarako erabiltzen diren teklatu-sistemako lasterbideak gaitu edo desgaitu daitezke.',
+ 'shortcuts_customize_desc' => 'Beheko lasterbide bakoitza pertsonalizatu dezakezu. Sakatu nahi duzun tekla konbinazioa lasterbide baterako sarrera aukeratu ondoren.',
+ 'shortcuts_toggle_label' => 'Teklatu-lasterbideak aktibatuta',
+ 'shortcuts_section_navigation' => 'Nabigazioa',
+ 'shortcuts_section_actions' => 'Ohiko ekintzak',
+ 'shortcuts_save' => 'Gorde lasterbideak',
+ 'shortcuts_overlay_desc' => 'Oharra: Lasterbideak gaituta daudenean, "?" sakagailuaren bidez laguntzaileen gainjartze bat egongo da, eta horrek pantailan gaur egun ikus daitezkeen ekintzetarako dauden lasterbideak nabarmenduko ditu.',
+ 'shortcuts_update_success' => 'Zure lehentasunak gorde dira!',
+ 'shortcuts_overview_desc' => 'Manage keyboard shortcuts you can use to navigate the system user interface.',
+
+ 'notifications' => 'Notification Preferences',
+ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.',
+ 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own',
+ 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notify upon replies to my comments',
+ 'notifications_save' => 'Save Preferences',
+ 'notifications_update_success' => 'Notification preferences have been updated!',
+ 'notifications_watched' => 'Watched & Ignored Items',
+ 'notifications_watched_desc' => 'Below are the items that have custom watch preferences applied. To update your preferences for these, view the item then find the watch options in the sidebar.',
+
+ 'auth' => 'Access & Security',
+ 'auth_change_password' => 'Change Password',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Password has been updated!',
+
+ 'profile' => 'Profile Details',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'View Public Profile',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Delete Account',
+ 'delete_my_account' => 'Delete My Account',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/eu/settings.php b/lang/eu/settings.php
new file mode 100644
index 00000000000..0f764dccbd2
--- /dev/null
+++ b/lang/eu/settings.php
@@ -0,0 +1,374 @@
+ 'Ezarpenak',
+ 'settings_save' => 'Gorde aldaketak',
+ 'system_version' => 'Sistema bertsioa',
+ 'categories' => 'Kategoriak',
+
+ // App Settings
+ 'app_customization' => 'Pertsonalizazioa',
+ 'app_features_security' => 'Ezaugarriak eta Segurtasuna',
+ 'app_name' => 'Aplikazioaren izena',
+ 'app_name_desc' => 'Izen hau goiburuan eta bidaltzen diren emailetan agertuko da.',
+ 'app_name_header' => 'Erakutsi izena goiburuan',
+ 'app_public_access' => 'Sarbide publikoa',
+ 'app_public_access_desc' => 'Aukera honen bitartez, bisitariek, saioa hasita ez dutenek, edukiak eskuratu ahal izango dituzte zure BookStacken instantzian.',
+ 'app_public_access_desc_guest' => 'Bisitarien sarrera "Guest" erabiltzeile bidez kontrola daiteke.',
+ 'app_public_access_toggle' => 'Baimendu sarbide publikoa',
+ 'app_public_viewing' => 'Publikoki ikustea baimendu?',
+ 'app_secure_images' => 'Goi Segurtasuneko irudiak',
+ 'app_secure_images_toggle' => 'Goi Segurtasuneko irudiak aktibatu',
+ 'app_secure_images_desc' => 'Antzezpen arrazoiengatik, irudi guztiak publikoak dira. Aukera honek ausazko lokarri bat gehitzen du irudiaren aurrean. Segurtasun-indizeek ezin dute sarrera erraza eragotzi.',
+ 'app_default_editor' => 'Default Page Editor',
+ 'app_default_editor_desc' => 'Select which editor will be used by default when editing new pages. This can be overridden at a page level where permissions allow.',
+ 'app_custom_html' => 'HTML pertsonalizatuko goiburu edukia',
+ 'app_custom_html_desc' => 'Hemen sarturiko edozein eduki eremuko behekaldean sartuko da orrialde guztietan. Honek estiloak gainditzeko edo analitika-kodea gehitzeko balio du.',
+ 'app_custom_html_disabled_notice' => 'HTML edukiera desgaituta dago konfigurazio-orri honetan, edozein aldaketa eten daitekeela bermatzeko.',
+ 'app_logo' => 'Aplikazioaren logoa',
+ 'app_logo_desc' => 'This is used in the application header bar, among other areas. This image should be 86px in height. Large images will be scaled down.',
+ 'app_icon' => 'Application Icon',
+ 'app_icon_desc' => 'This icon is used for browser tabs and shortcut icons. This should be a 256px square PNG image.',
+ 'app_homepage' => 'Aplikazioko hasiera orria',
+ 'app_homepage_desc' => 'Aukeratu hasierako orriko bista, defektuzkoa beharrean. Orrialde baimenak ez dira kontutan hartuko aukeratutako orrialdeentzat.',
+ 'app_homepage_select' => 'Aukeratu Orria',
+ 'app_footer_links' => 'Beheko aldeko estekak',
+ '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::" 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' => 'Loturaren etiketa',
+ 'app_footer_links_url' => 'Estekaren URLa',
+ 'app_footer_links_add' => 'Gehitu oineko esteka',
+ 'app_disable_comments' => 'Ezgaitu Iruzkinak',
+ 'app_disable_comments_toggle' => 'Ezgaitu iruzkinak',
+ 'app_disable_comments_desc' => 'Disables comments across all pages in the application. Existing comments are not shown.',
+
+ // Color settings
+ 'color_scheme' => 'Application Color Scheme',
+ 'color_scheme_desc' => 'Set the colors to use in the application user interface. Colors can be configured separately for dark and light modes to best fit the theme and ensure legibility.',
+ 'ui_colors_desc' => 'Set the application primary color and default link color. The primary color is mainly used for the header banner, buttons and interface decorations. The default link color is used for text-based links and actions, both within written content and in the application interface.',
+ 'app_color' => 'Primary Color',
+ 'link_color' => 'Default Link Color',
+ 'content_colors_desc' => 'Set colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'bookshelf_color' => 'Apal kolorea',
+ 'book_color' => 'Liburu kolorea',
+ 'chapter_color' => 'Kapitulu kolorea',
+ 'page_color' => 'Orrialde kolorea',
+ 'page_draft_color' => 'Zirriborro orrien kolorea',
+
+ // Registration Settings
+ 'reg_settings' => 'Izen-ematea',
+ 'reg_enable' => 'Baimendu izen ematea',
+ 'reg_enable_toggle' => 'Baimendu izen ematea',
+ 'reg_enable_desc' => 'When registration is enabled user will be able to sign themselves up as an application user. Upon registration they are given a single, default user role.',
+ 'reg_default_role' => 'Default user role after registration',
+ 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_email_confirmation' => 'Email baieztapena',
+ 'reg_email_confirmation_toggle' => 'Emain baieztapena behar du',
+ 'reg_confirm_email_desc' => 'If domain restriction is used then email confirmation will be required and this option will be ignored.',
+ 'reg_confirm_restrict_domain' => 'Domeinu mugaketa',
+ 'reg_confirm_restrict_domain_desc' => 'Enter a comma separated list of email domains you would like to restrict registration to. Users will be sent an email to confirm their address before being allowed to interact with the application. Note that users will be able to change their email addresses after successful registration.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Mugarik gabe',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Mantentze-lanak',
+ 'maint_image_cleanup' => 'Garbitu irudiak',
+ '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' => 'Also delete images that only exist in old page revisions',
+ 'maint_image_cleanup_run' => 'Exekutatu garbiketa',
+ 'maint_image_cleanup_warning' => ':count potentially unused images were found. Are you sure you want to delete these images?',
+ 'maint_image_cleanup_success' => ':count potentially unused images found and deleted!',
+ 'maint_image_cleanup_nothing_found' => 'Ez da erabili gabeko irudirik aurkitu, ez da ezer ezabatuko!',
+ 'maint_send_test_email' => 'Frogako mezua bidali',
+ 'maint_send_test_email_desc' => 'This sends a test email to your email address specified in your profile.',
+ 'maint_send_test_email_run' => 'Frogako mezua bidali',
+ 'maint_send_test_email_success' => 'Emaila bidali da :address helbidera',
+ 'maint_send_test_email_mail_subject' => 'Email test-a',
+ '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' => 'Ireki zakarrontzia',
+ 'maint_regen_references' => 'Regenerate References',
+ 'maint_regen_references_desc' => 'This action will rebuild the cross-item reference index within the database. This is usually handled automatically but this action can be useful to index old content or content added via unofficial methods.',
+ 'maint_regen_references_success' => 'Reference index has been regenerated!',
+ 'maint_timeout_command_note' => 'Note: This action can take time to run, which can lead to timeout issues in some web environments. As an alternative, this action be performed using a terminal command.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Zakarrontzia',
+ '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' => 'Ezabatutako edukiak',
+ 'recycle_bin_deleted_parent' => 'Nagusia',
+ 'recycle_bin_deleted_by' => 'Nork ezabatua',
+ 'recycle_bin_deleted_at' => 'Ezabatutako unea',
+ 'recycle_bin_permanently_delete' => 'Ezabatu betiko',
+ 'recycle_bin_restore' => 'Berreskuratu',
+ 'recycle_bin_contents_empty' => 'Zakarrontzia hutsik dago',
+ 'recycle_bin_empty' => 'Hustu Zakarrontzia',
+ '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 from the system, along with any child elements listed below, and you will not be able to restore this content. Are you sure you want to permanently delete this item?',
+ 'recycle_bin_destroy_list' => 'Ezabatuko diren elementuak',
+ 'recycle_bin_restore_list' => 'Berrezarriko diren elementuak',
+ '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_restore_parent' => 'Aita berrezarri',
+ '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' => 'Auditoretza erregistroak',
+ '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' => 'Gertakari filtroa',
+ 'audit_event_filter_no_filter' => 'Filtrorik ez',
+ 'audit_deleted_item' => 'Ezabatutako edukiak',
+ 'audit_deleted_item_name' => 'Izena :name',
+ 'audit_table_user' => 'Erabiltzailea',
+ 'audit_table_event' => 'Gertaera',
+ 'audit_table_related' => 'Related Item or Detail',
+ 'audit_table_ip' => 'IP helbidea',
+ 'audit_table_date' => 'Azken aktibitate data',
+ 'audit_date_from' => 'Data tartea',
+ 'audit_date_to' => 'Data tartea',
+
+ // Role Settings
+ 'roles' => 'Rolak',
+ 'role_user_roles' => 'Erabiltzailearen rola',
+ 'roles_index_desc' => 'Roles are used to group users & provide system permission to their members. When a user is a member of multiple roles the privileges granted will stack and the user will inherit all abilities.',
+ 'roles_x_users_assigned' => ':count user assigned|:count users assigned',
+ 'roles_x_permissions_provided' => ':count permission|:count permissions',
+ 'roles_assigned_users' => 'Assigned Users',
+ 'roles_permissions_provided' => 'Provided Permissions',
+ 'role_create' => 'Rol berria sortu',
+ 'role_delete' => 'Ezabatu Rol-a',
+ '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' => "Ez migratu erabiltzaileak",
+ 'role_delete_sure' => 'Ziur zaude rol hau ezabatu nahi duzula?',
+ 'role_edit' => 'Editatu rola',
+ 'role_details' => 'Ireki xehetasunak',
+ 'role_name' => 'Rol izena',
+ 'role_desc' => 'Short Description of Role',
+ 'role_mfa_enforced' => 'Requires Multi-Factor Authentication',
+ 'role_external_auth_id' => 'External Authentication IDs',
+ 'role_system' => 'System Permissions',
+ 'role_manage_users' => 'Erabiltzaileak kudeatu',
+ 'role_manage_roles' => 'Manage roles & role permissions',
+ 'role_manage_entity_permissions' => 'Manage all book, chapter & page permissions',
+ 'role_manage_own_entity_permissions' => 'Manage permissions on own book, chapter & pages',
+ 'role_manage_page_templates' => 'Kudeatu orrien txantiloiak',
+ 'role_access_api' => 'Sistemako APIra sarrera',
+ 'role_manage_settings' => 'Kudeatu aplikazio ezarpenak',
+ 'role_export_content' => 'Exportatu edukia',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Change page editor',
+ 'role_notifications' => 'Receive & manage notifications',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Fitxategi baimenak',
+ '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' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.',
+ 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.',
+ 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Guztiak',
+ 'role_own' => 'Norberarenak',
+ 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to',
+ 'role_save' => 'Gorde rol-a',
+ 'role_users' => 'Rol honetako erabiltzaileak',
+ 'role_users_none' => 'No users are currently assigned to this role',
+
+ // Users
+ 'users' => 'Erabiltzaileak',
+ 'users_index_desc' => 'Create & manage individual user accounts within the system. User accounts are used for login and attribution of content & activity. Access permissions are primarily role-based but user content ownership, among other factors, may also affect permissions & access.',
+ 'user_profile' => 'Erabiltzailearen profila',
+ 'users_add_new' => 'Erabiltzaile berri bat gehitu',
+ 'users_search' => 'Erabiltzaileak bilatu',
+ 'users_latest_activity' => 'Duela gutxiko Jarduera',
+ 'users_details' => 'Erabiltzaile xehetasunak',
+ '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' => 'Erabiltzailearen rola',
+ 'users_role_desc' => 'Select which roles this user will be assigned to. If a user is assigned to multiple roles the permissions from those roles will stack and they will receive all abilities of the assigned roles.',
+ 'users_password' => 'Erabiltzaile pasahitza',
+ 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 8 characters long.',
+ 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.',
+ 'users_send_invite_option' => 'Erabiltzailea gonbidatzeko emaila bidali',
+ 'users_external_auth_id' => 'Kanpo autentikazioa IDa',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ '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' => 'Ezabatu erabiltzailea',
+ 'users_delete_named' => ':userName erabiltzailea ezabatu',
+ '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_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' => 'Erabiltzailerik ez duzu aukeratu',
+ 'users_edit' => 'Erabiltzaile editatu',
+ 'users_edit_profile' => 'Editatu profila',
+ 'users_avatar' => 'Erabiltzaile avatarra',
+ 'users_avatar_desc' => 'Select an image to represent this user. This should be approx 256px square.',
+ 'users_preferred_language' => 'Hobetsitako hizkuntza',
+ 'users_preferred_language_desc' => 'This option will change the language used for the user-interface of the application. This will not affect any user-created content.',
+ 'users_social_accounts' => 'Social Accounts',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not revoke previously authorized access. Revoke access from your profile settings on the connected social account.',
+ 'users_social_connect' => 'Kontua Konektatu',
+ 'users_social_disconnect' => 'Deskonektatu kontua',
+ 'users_social_status_connected' => 'Connected',
+ 'users_social_status_disconnected' => 'Disconnected',
+ 'users_social_connected' => ':socialAccount account was successfully attached to your profile.',
+ 'users_social_disconnected' => ':socialAccount account was successfully disconnected from your profile.',
+ 'users_api_tokens' => 'API tokenak',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'No API tokens have been created for this user',
+ 'users_api_tokens_create' => 'Sortu Tokena',
+ 'users_api_tokens_expires' => 'Iraungita',
+ 'users_api_tokens_docs' => 'API dokumentazioa',
+ 'users_mfa' => 'Multi-Factor Authentication',
+ 'users_mfa_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'users_mfa_x_methods' => ':count method configured|:count methods configured',
+ 'users_mfa_configure' => 'Configure Methods',
+
+ // API Tokens
+ 'user_api_token_create' => 'Sortu Tokena',
+ 'user_api_token_name' => 'Izena',
+ 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
+ 'user_api_token_expiry' => 'Iraungitze data',
+ 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
+ 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
+ 'user_api_token' => 'API Token',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
+ 'user_api_token_secret' => 'Token Secret',
+ 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
+ 'user_api_token_created' => 'Token created :timeAgo',
+ 'user_api_token_updated' => 'Token updated :timeAgo',
+ 'user_api_token_delete' => 'Delete Token',
+ 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
+ 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks are a way to send data to external URLs when certain actions and events occur within the system which allows event-based integration with external platforms such as messaging or notification systems.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'Create New Webhook',
+ 'webhooks_none_created' => 'No webhooks have yet been created.',
+ 'webhooks_edit' => 'Edit Webhook',
+ 'webhooks_save' => 'Save Webhook',
+ 'webhooks_details' => 'Webhook Details',
+ 'webhooks_details_desc' => 'Provide a user friendly name and a POST endpoint as a location for the webhook data to be sent to.',
+ 'webhooks_events' => 'Webhook Events',
+ 'webhooks_events_desc' => 'Select all the events that should trigger this webhook to be called.',
+ 'webhooks_events_warning' => 'Keep in mind that these events will be triggered for all selected events, even if custom permissions are applied. Ensure that use of this webhook won\'t expose confidential content.',
+ 'webhooks_events_all' => 'All system events',
+ 'webhooks_name' => 'Webhook Name',
+ 'webhooks_timeout' => 'Webhook Request Timeout (Seconds)',
+ 'webhooks_endpoint' => 'Webhook Endpoint',
+ 'webhooks_active' => 'Webhook Active',
+ 'webhook_events_table_header' => 'Gertaerak',
+ 'webhooks_delete' => 'Delete Webhook',
+ 'webhooks_delete_warning' => 'This will fully delete this webhook, with the name \':webhookName\', from the system.',
+ 'webhooks_delete_confirm' => 'Ziur zaude hau ezabatu nahi duzula?',
+ 'webhooks_format_example' => 'Webhook Format Example',
+ 'webhooks_format_example_desc' => 'Webhook data is sent as a POST request to the configured endpoint as JSON following the format below. The "related_item" and "url" properties are optional and will depend on the type of event triggered.',
+ 'webhooks_status' => 'Webhook Status',
+ 'webhooks_last_called' => 'Last Called:',
+ 'webhooks_last_errored' => 'Last Errored:',
+ 'webhooks_last_error_message' => 'Last Error Message:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/eu/validation.php b/lang/eu/validation.php
new file mode 100644
index 00000000000..6dddd52975f
--- /dev/null
+++ b/lang/eu/validation.php
@@ -0,0 +1,123 @@
+ ':attribute onartua izan behar du.',
+ 'active_url' => ':attribute ez da baliozko URLa.',
+ 'after' => ':attribute :date baino zaharragoa izan behar da.',
+ 'alpha' => ':attribute eremuak hizkiak solik izan ditzake.',
+ 'alpha_dash' => ':attribute eremuak letrak, zenbakiak, laburpenak eta azpizenbakiak bakarrik eduki ditzake.',
+ 'alpha_num' => ':attribute eremuak hizki eta zenbakiak solik izan ditzake.',
+ 'array' => ':attribute array bat izan behar da.',
+ 'backup_codes' => 'Kode hau ez da baliagarria edo iada erabilia izan da.',
+ 'before' => ':attribute :date baino berriagoa izan behar da.',
+ 'between' => [
+ 'numeric' => ':min eta :max bitartean egon behar da :attribute.',
+ 'file' => ':min eta :max kilobytes tartean egon behar da :attribute.',
+ 'string' => ':min eta :max karaktere tartean egon behar da :attribute.',
+ 'array' => ':min eta :max item tartean egon behar da :attribute.',
+ ],
+ 'boolean' => ':attribute true edo false izan behar da.',
+ 'confirmed' => ':attribute berrezpena ez da aurkitu.',
+ 'date' => ':attribute ez da baliozko data.',
+ 'date_format' => ':attribute ez da :format formatuan aurkitu.',
+ 'different' => ':attribute eta :other ezberdinak izan behar dira.',
+ 'digits' => ':attribute :digits digitu behar ditu.',
+ 'digits_between' => ':min eta :max digitu tartean egon behar da :attribute.',
+ 'email' => ':attribute baliozko email helbide bat izan behar da.',
+ 'ends_with' => ':attribute ondorengo balio hauetako batekin bukatu behar da :values',
+ 'file' => 'The :attribute must be provided as a valid file.',
+ 'filled' => ':attribute eremua beharrezkoa da.',
+ '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.',
+ '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.',
+ 'array' => 'The :attribute must have :value items or more.',
+ ],
+ 'exists' => 'The selected :attribute is invalid.',
+ 'image' => ':attribute irudi bat izan behar da.',
+ 'image_extension' => 'The :attribute must have a valid & supported image extension.',
+ 'in' => 'The selected :attribute is invalid.',
+ 'integer' => ':attribute zenbaki oso bat izan behar da.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ 'array' => 'The :attribute may not have more than :max items.',
+ ],
+ 'mimes' => 'The :attribute must be a file of type: :values.',
+ 'min' => [
+ 'numeric' => 'The :attribute must be at least :min.',
+ 'file' => 'The :attribute must be at least :min kilobytes.',
+ 'string' => 'The :attribute must be at least :min characters.',
+ 'array' => 'The :attribute must have at least :min items.',
+ ],
+ 'not_in' => 'The selected :attribute is invalid.',
+ 'not_regex' => ':attribute formatua baliogabea da.',
+ 'numeric' => ':attribute zenbaki bat izan behar da.',
+ 'regex' => ':attribute formatua baliogabea da.',
+ 'required' => ':attribute eremua beharrezkoa da.',
+ 'required_if' => 'The :attribute field is required when :other is :value.',
+ 'required_with' => 'The :attribute field is required when :values is present.',
+ 'required_with_all' => 'The :attribute field is required when :values is present.',
+ 'required_without' => 'The :attribute field is required when :values is not present.',
+ 'required_without_all' => 'The :attribute field is required when none of :values are present.',
+ 'same' => 'The :attribute and :other must match.',
+ 'safe_url' => 'The provided link may not be safe.',
+ 'size' => [
+ 'numeric' => 'The :attribute must be :size.',
+ 'file' => 'The :attribute must be :size kilobytes.',
+ 'string' => 'The :attribute must be :size characters.',
+ 'array' => 'The :attribute must contain :size items.',
+ ],
+ 'string' => ':attribute textua izan behar da.',
+ 'timezone' => 'The :attribute must be a valid zone.',
+ 'totp' => 'The provided code is not valid or has expired.',
+ 'unique' => 'The :attribute has already been taken.',
+ 'url' => 'The :attribute format is invalid.',
+ 'uploaded' => 'The file could not be uploaded. The server may not accept files of this size.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Baieztatu zure pasahitza',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/fa/activities.php b/lang/fa/activities.php
new file mode 100644
index 00000000000..07eb78f3709
--- /dev/null
+++ b/lang/fa/activities.php
@@ -0,0 +1,140 @@
+ 'صفحه ایجاد شد',
+ 'page_create_notification' => 'صفحه با موفقیت ایجاد شد',
+ 'page_update' => 'به روزرسانی صفحه',
+ 'page_update_notification' => 'صفحه با موفقیت به روزرسانی شد',
+ 'page_delete' => 'حذف صفحه',
+ 'page_delete_notification' => 'صفحه با موفقیت حذف شد',
+ 'page_restore' => 'بازیابی صفحه',
+ 'page_restore_notification' => 'صفحه با موفقیت بازیابی شد',
+ 'page_move' => 'انتقال صفحه',
+ 'page_move_notification' => 'صفحه با موفقیت جابهجا شد',
+
+ // Chapters
+ 'chapter_create' => 'ایجاد فصل',
+ 'chapter_create_notification' => 'فصل با موفقیت ایجاد شد',
+ 'chapter_update' => 'به روزرسانی فصل',
+ 'chapter_update_notification' => 'فصل با موفقیت به روزرسانی شد',
+ 'chapter_delete' => 'حذف فصل',
+ 'chapter_delete_notification' => 'فصل با موفقیت حذف شد',
+ 'chapter_move' => 'انتقال فصل',
+ 'chapter_move_notification' => 'فصل با موفقیت جابهجا شد',
+
+ // Books
+ 'book_create' => 'ایجاد کتاب',
+ 'book_create_notification' => 'کتاب با موفقیت ایجاد شد',
+ 'book_create_from_chapter' => 'تبدیل فصل به کتاب',
+ 'book_create_from_chapter_notification' => 'کتاب با موفقیت به یک قفسه تبدیل شد',
+ 'book_update' => 'به روزرسانی کتاب',
+ 'book_update_notification' => 'کتاب با موفقیت به روزرسانی شد',
+ 'book_delete' => 'حذف کتاب',
+ 'book_delete_notification' => 'کتاب با موفقیت حذف شد',
+ 'book_sort' => 'مرتب سازی کتاب',
+ 'book_sort_notification' => 'کتاب با موفقیت مرتب سازی شد',
+
+ // Bookshelves
+ 'bookshelf_create' => 'ایجاد قفسه',
+ 'bookshelf_create_notification' => 'قفسه کتاب با موفقیت ایجاد شد',
+ 'bookshelf_create_from_book' => 'تبدیل کتاب به قفسه',
+ 'bookshelf_create_from_book_notification' => 'کتاب با موفقیت به یک قفسه تبدیل شد',
+ 'bookshelf_update' => 'به روزرسانی قفسه',
+ 'bookshelf_update_notification' => 'قفسه با موفقیت به روزرسانی شد',
+ 'bookshelf_delete' => 'قفسه حذف شده',
+ 'bookshelf_delete_notification' => 'قفسه کتاب با موفقیت حذف شد',
+
+ // Revisions
+ 'revision_restore' => 'نسخه بازیابی شده',
+ 'revision_delete' => 'نسخه حذف شده',
+ 'revision_delete_notification' => 'نسخه مورد نظر با موفقیت حذف شد',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" به علاقه مندی های شما اضافه شد',
+ 'favourite_remove_notification' => '":name" از علاقه مندی های شما حذف شد',
+
+ // Watching
+ 'watch_update_level_notification' => 'تنظیمات نظارت با موفقیت بروز شد',
+
+ // Auth
+ 'auth_login' => 'وارد شده',
+ 'auth_register' => 'ثبت نام شده بعنوان کاربر جدید',
+ 'auth_password_reset_request' => 'بازیابی درخواست شده رمز عبور کاربر',
+ 'auth_password_reset_update' => 'بازیابی رمز عبور کاربر',
+ 'mfa_setup_method' => 'متد MFA پیکربندی شده',
+ 'mfa_setup_method_notification' => 'روش چند فاکتوری با موفقیت پیکربندی شد',
+ 'mfa_remove_method' => 'روش MFA حذف شده',
+ 'mfa_remove_method_notification' => 'روش چند فاکتوری با موفقیت حذف شد',
+
+ // Settings
+ 'settings_update' => 'تنظیمات بروز شده',
+ 'settings_update_notification' => 'تنظیمات با موفقیت به روز شد',
+ 'maintenance_action_run' => 'فعالیت نگهداری اجرا شده',
+
+ // Webhooks
+ 'webhook_create' => 'ایجاد وب هوک',
+ 'webhook_create_notification' => 'وب هوک با موفقیت ایجاد شد',
+ 'webhook_update' => 'به روزرسانی وب هوک',
+ 'webhook_update_notification' => 'وب هوک با موفقیت بروزرسانی شد',
+ 'webhook_delete' => 'حذف وب هوک',
+ 'webhook_delete_notification' => 'وب هوک با موفقیت حذف شد',
+
+ // Imports
+ 'import_create' => 'ورودی ایجاد شد',
+ 'import_create_notification' => 'فایل با موفقیت آپلود شد',
+ 'import_run' => 'آیتم واردشده بروزرسانی شد',
+ 'import_run_notification' => 'محتوا با موفقیت انتقال یافت',
+ 'import_delete' => 'آیتم ورودی حدف شده',
+ 'import_delete_notification' => 'آیتم واردشده با موفقیت حذف شد',
+
+ // Users
+ 'user_create' => 'کاربر ایجاد شده',
+ 'user_create_notification' => 'کاربر با موفقیت به ایجاد شد',
+ 'user_update' => 'کاربر بروز شده',
+ 'user_update_notification' => 'کاربر با موفقیت به روز شد',
+ 'user_delete' => 'کاربر حذف شده',
+ 'user_delete_notification' => 'کاربر با موفقیت حذف شد',
+
+ // API Tokens
+ 'api_token_create' => 'ایجاد توکن API',
+ 'api_token_create_notification' => 'توکن api با موفقیت ایجاد شد',
+ 'api_token_update' => 'توکن api بروز شده',
+ 'api_token_update_notification' => 'توکن API با موفقیت بروزرسانی شد',
+ 'api_token_delete' => 'توکن api حذف شده',
+ 'api_token_delete_notification' => 'توکن API با موفقیت حذف شد',
+
+ // Roles
+ 'role_create' => 'نقش ایجاد شده',
+ 'role_create_notification' => 'نقش با موفقیت ایجاد شد',
+ 'role_update' => 'نقش بروز شده',
+ 'role_update_notification' => 'نقش با موفقیت به روز شد',
+ 'role_delete' => 'نقش حذف شده',
+ 'role_delete_notification' => 'نقش با موفقیت حذف شد',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'سطل زباله خالی',
+ 'recycle_bin_restore' => 'از سطل بازیافت، بازآوری شده است',
+ 'recycle_bin_destroy' => 'از سطل بازیافت حذف شده است',
+
+ // Comments
+ 'commented_on' => 'ثبت دیدگاه',
+ 'comment_create' => 'نظر اضافه شده',
+ 'comment_update' => 'نظر به روز شده',
+ 'comment_delete' => 'نظر حذف شده',
+
+ // Sort Rules
+ 'sort_rule_create' => 'قانون مرتبسازی ایجاد شد',
+ 'sort_rule_create_notification' => 'قانون مرتبسازی با موفقیت ایجاد شد',
+ 'sort_rule_update' => 'قانون مرتبسازی بهروزرسانی شد',
+ 'sort_rule_update_notification' => 'قانون مرتبسازی با موفقیت بهروزرسانی شد',
+ 'sort_rule_delete' => 'قانون مرتبسازی حذف شد',
+ 'sort_rule_delete_notification' => 'قانون مرتبسازی با موفقیت حذف شد',
+
+ // Other
+ 'permissions_update' => 'به روزرسانی مجوزها',
+];
diff --git a/lang/fa/auth.php b/lang/fa/auth.php
new file mode 100644
index 00000000000..c92f5f22b8a
--- /dev/null
+++ b/lang/fa/auth.php
@@ -0,0 +1,117 @@
+ 'مشخصات وارد شده با اطلاعات ما سازگار نیست.',
+ 'throttle' => 'دفعات تلاش شما برای ورود بیش از حد مجاز است. لطفا پس از :seconds ثانیه مجددا تلاش فرمایید.',
+
+ // Login & Register
+ 'sign_up' => 'ثبت نام',
+ 'log_in' => 'ورود',
+ 'log_in_with' => 'ورود با :socialDriver',
+ 'sign_up_with' => 'ثبت نام با :socialDriver',
+ 'logout' => 'خروج',
+
+ 'name' => 'نام',
+ 'username' => 'نام کاربری',
+ 'email' => 'پست الکترونیک',
+ 'password' => 'کلمه عبور',
+ 'password_confirm' => 'تایید کلمه عبور',
+ 'password_hint' => 'باید بیش از 8 کاراکتر باشد',
+ 'forgot_password' => 'کلمه عبور خود را فراموش کرده اید؟',
+ 'remember_me' => 'مرا به خاطر بسپار',
+ 'ldap_email_hint' => 'لطفا برای استفاده از این حساب کاربری پست الکترونیک وارد نمایید.',
+ 'create_account' => 'ایجاد حساب کاربری',
+ 'already_have_account' => 'قبلا ثبت نام نموده اید؟',
+ 'dont_have_account' => 'حساب کاربری ندارید؟',
+ 'social_login' => 'ورود از طریق شبکه اجتماعی',
+ 'social_registration' => 'ثبت نام از طریق شبکه اجتماعی',
+ 'social_registration_text' => 'با استفاده از سرویس دیگری ثبت نام نموده و وارد سیستم شوید.',
+
+ 'register_thanks' => 'از ثبت نام شما متشکریم!',
+ 'register_confirm' => 'لطفا پست الکترونیک خود را بررسی نموده و برای دسترسی به:appName دکمه تایید را کلیک نمایید.',
+ 'registrations_disabled' => 'ثبت نام در حال حاضر غیر فعال است',
+ 'registration_email_domain_invalid' => 'دامنه پست الکترونیک به این برنامه دسترسی ندارد',
+ 'register_success' => 'از ثبت نام شما سپاسگزاریم! شما اکنون ثبت نام کرده و وارد سیستم شده اید.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'تلاش برای ورود',
+ 'auto_init_starting_desc' => 'برای شروع فرآیند ورود به سیستم با سیستم احراز هویت شما تماس می گیریم. اگر بعد از 5 ثانیه پیشرفتی حاصل نشد، می توانید روی لینک زیر کلیک کنید.',
+ 'auto_init_start_link' => 'احراز هویت را ادامه دهید',
+
+ // Password Reset
+ 'reset_password' => 'بازنشانی کلمه عبور',
+ 'reset_password_send_instructions' => 'پست الکترونیک خود را در کادر زیر وارد نموده تا یک پیام حاوی لینک بازنشانی کلمه عبور دریافت نمایید.',
+ 'reset_password_send_button' => 'ارسال لینک بازنشانی',
+ 'reset_password_sent' => 'در صورت موجود بودن پست الکترونیک، یک لینک بازنشانی کلمه عبور برای شما ارسال خواهد شد.',
+ 'reset_password_success' => 'کلمه عبور شما با موفقیت بازنشانی شد.',
+ 'email_reset_subject' => 'بازنشانی کلمه عبور :appName',
+ 'email_reset_text' => 'شما این پیام را به علت درخواست بازنشانی کلمه عبور دریافت می نمایید.',
+ 'email_reset_not_requested' => 'در صورتی که درخواست بازنشانی کلمه عبور از سمت شما نمی باشد، نیاز به انجام هیچ فعالیتی ندارید.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'پست الکترونیک خود را در:appName تایید نمایید',
+ 'email_confirm_greeting' => 'برای پیوستن به :appName متشکریم!',
+ 'email_confirm_text' => 'لطفا با کلیک بر روی دکمه زیر پست الکترونیک خود را تایید نمایید:',
+ 'email_confirm_action' => 'تایید پست الکترونیک',
+ 'email_confirm_send_error' => 'تایید پست الکترونیک الزامی می باشد، اما سیستم قادر به ارسال پیام نمی باشد.',
+ 'email_confirm_success' => 'ایمیل شما تایید شد! اکنون باید بتوانید با استفاده از این آدرس ایمیل وارد شوید.',
+ 'email_confirm_resent' => 'پیام تایید پست الکترونیک مجدد ارسال گردید، لطفا صندوق ورودی خود را بررسی نمایید.',
+ 'email_confirm_thanks' => 'تشکر بابت تایید!',
+ 'email_confirm_thanks_desc' => 'لطفاً یک لحظه صبر کنید تا تأیید شما بررسی شود. اگر بعد از 3 ثانیه هدایت نشدید، بر روی لینک "ادامه" کلیک کنید تا ادامه دهید.',
+
+ 'email_not_confirmed' => 'پست الکترونیک تایید نشده است',
+ 'email_not_confirmed_text' => 'پست الکترونیک شما هنوز تایید نشده است.',
+ 'email_not_confirmed_click_link' => 'لطفا بر روی لینک موجود در پیامی که بلافاصله پس از ثبت نام ارسال شده است کلیک نمایید.',
+ 'email_not_confirmed_resend' => 'در صورتی که نمی توانید پیام را پیدا کنید، می توانید با ارسال فرم زیر، پیام تایید را مجدد دریافت نمایید.',
+ 'email_not_confirmed_resend_button' => 'ارسال مجدد تایید پست الکترونیک',
+
+ // User Invite
+ 'user_invite_email_subject' => 'از شما برای پیوستن به :appName دعوت شده است!',
+ 'user_invite_email_greeting' => 'حساب کاربری برای شما در :appName ایجاد شده است.',
+ 'user_invite_email_text' => 'برای تنظیم کلمه عبور و دسترسی به حساب کاربری بر روی دکمه زیر کلیک نمایید:',
+ 'user_invite_email_action' => 'تنظیم کلمه عبور حسابکاربری',
+ 'user_invite_page_welcome' => 'به :appName خوش آمدید!',
+ 'user_invite_page_text' => 'برای نهایی کردن حساب کاربری خود در :appName و دسترسی به آن، می بایست یک کلمه عبور تنظیم نمایید.',
+ 'user_invite_page_confirm_button' => 'تایید کلمه عبور',
+ 'user_invite_success_login' => 'رمز عبور تنظیم شده است، اکنون باید بتوانید با استفاده از رمز عبور تعیین شده خود وارد شوید تا به :appName دسترسی پیدا کنید!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'تنظیم احراز هویت چند مرحلهای',
+ 'mfa_setup_desc' => 'تنظیم احراز هویت چند مرحله ای یک لایه امنیتی دیگر به حساب شما اضافه میکند.',
+ 'mfa_setup_configured' => 'هم اکنون تنظیم شده است.',
+ 'mfa_setup_reconfigure' => 'تنظیم مجدد',
+ 'mfa_setup_remove_confirmation' => 'از حذف احراز هویت چند مرحله ای اطمینان دارید؟',
+ 'mfa_setup_action' => 'تنظیم',
+ 'mfa_backup_codes_usage_limit_warning' => 'کمتر از 5 کد پشتیبان باقی مانده است، لطفاً قبل از تمام شدن کدها یک مجموعه جدید ایجاد و ذخیره کنید تا از قفل شدن حساب خود جلوگیری کنید.',
+ 'mfa_option_totp_title' => 'برنامه ی موبایل',
+ 'mfa_option_totp_desc' => 'برای استفاده از احراز هویت چند عاملی به یک برنامه موبایلی نیاز دارید که از TOTP پشتیبانی کند، مانند Google Authenticator، Authy یا Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'کدهای پشتیبان',
+ 'mfa_option_backup_codes_desc' => 'این فرایند مجموعهای از کدهای پشتیبان یکبار مصرف تولید میکند که هنگام ورود به سامانه جهت تأیید هویت باید از آنها استفاده کنید. توصیه میشود این کدها را در محلّی امن و محفوظ نگهداری نمایید.',
+ 'mfa_gen_confirm_and_enable' => 'تایید و فعال کنید',
+ 'mfa_gen_backup_codes_title' => 'راه اندازی کدهای پشتیبان',
+ 'mfa_gen_backup_codes_desc' => 'لیست کدهای زیر را در مکانی امن ذخیره کنید. هنگام دسترسی به سیستم، می توانید از یکی از کدها به عنوان مکانیزم احراز هویت دوم استفاده کنید.',
+ 'mfa_gen_backup_codes_download' => 'دانلود کدها',
+ 'mfa_gen_backup_codes_usage_warning' => 'هر کد فقط یک بار قابل استفاده است',
+ 'mfa_gen_totp_title' => 'راه اندازی اپلیکیشن موبایل',
+ 'mfa_gen_totp_desc' => 'برای استفاده از احراز هویت چند عاملی به یک برنامه موبایلی نیاز دارید که از TOTP پشتیبانی کند، مانند Google Authenticator، Authy یا Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'برای شروع، کد QR زیر را با استفاده از برنامه احراز هویت ترجیحی خود اسکن کنید.',
+ 'mfa_gen_totp_verify_setup' => 'تأیید تنظیمات',
+ 'mfa_gen_totp_verify_setup_desc' => 'با وارد کردن کدی که در برنامه احراز هویت شما ایجاد شده است، در کادر ورودی زیر، مطمئن شوید که همه کار می کنند:',
+ 'mfa_gen_totp_provide_code_here' => 'کد تولید شده برنامه خود را در اینجا ارائه دهید',
+ 'mfa_verify_access' => 'تأیید دسترسی',
+ 'mfa_verify_access_desc' => 'قبل از اینکه به شما اجازه دسترسی داده شود، حساب کاربری شما از شما می خواهد که هویت خود را از طریق یک سطح تأیید اضافی تأیید کنید. برای ادامه، با استفاده از یکی از روش های پیکربندی شده خود، تأیید کنید.',
+ 'mfa_verify_no_methods' => 'هیچ روشی پیکربندی نشده است',
+ 'mfa_verify_no_methods_desc' => 'هیچ روش احراز هویت چند عاملی برای حساب شما یافت نشد. قبل از دسترسی، باید حداقل یک روش را تنظیم کنید.',
+ 'mfa_verify_use_totp' => 'با استفاده از یک برنامه تلفن همراه تأیید کنید',
+ 'mfa_verify_use_backup_codes' => 'با استفاده از یک کد پشتیبان تأیید کنید',
+ 'mfa_verify_backup_code' => 'کد پشتیبان',
+ 'mfa_verify_backup_code_desc' => 'یکی از کدهای پشتیبان باقی مانده خود را در زیر وارد کنید:',
+ 'mfa_verify_backup_code_enter_here' => 'کد پشتیبان را در اینجا وارد کنید',
+ 'mfa_verify_totp_desc' => 'کد ایجاد شده با استفاده از برنامه تلفن همراه خود را در زیر وارد کنید:',
+ 'mfa_setup_login_notification' => 'روش چند عاملی پیکربندی شد، لطفاً اکنون دوباره با استفاده از روش پیکربندی شده وارد شوید.',
+];
diff --git a/lang/fa/common.php b/lang/fa/common.php
new file mode 100644
index 00000000000..49667a47c42
--- /dev/null
+++ b/lang/fa/common.php
@@ -0,0 +1,115 @@
+ 'لغو',
+ 'close' => 'خروج',
+ 'confirm' => 'تایید',
+ 'back' => 'بازگشت',
+ 'save' => 'ذخیره',
+ 'continue' => 'ادامه',
+ 'select' => 'انتخاب',
+ 'toggle_all' => 'معکوس کردن همه',
+ 'more' => 'بیشتر',
+
+ // Form Labels
+ 'name' => 'نام',
+ 'description' => 'توضیحات',
+ 'role' => 'نقش',
+ 'cover_image' => 'تصویر روی جلد',
+ 'cover_image_description' => 'تصویر باید حدودا 250*440 پیکسل باشد اما از آنجا که متناسب با رابط کاربری کوچک و بزرگ شده و بریده میشود، پس ابعاد نمایش داده شده متفاوت خواهند بود.',
+
+ // Actions
+ 'actions' => 'عملیات',
+ 'view' => 'نمایش',
+ 'view_all' => 'نمایش همه',
+ 'new' => 'جدید',
+ 'create' => 'ایجاد',
+ 'update' => 'بهروز رسانی',
+ 'edit' => 'ويرايش',
+ 'archive' => 'انتقال به بایگانی',
+ 'unarchive' => 'فعّالسازی دوباره (خروج از بایگانی)',
+ 'sort' => 'مرتب سازی',
+ 'move' => 'جابجایی',
+ 'copy' => 'کپی',
+ 'reply' => 'پاسخ',
+ 'delete' => 'حذف',
+ 'delete_confirm' => 'تأیید حذف',
+ 'search' => 'جستجو',
+ 'search_clear' => 'پاک کردن جستجو',
+ 'reset' => 'بازنشانی',
+ 'remove' => 'حذف',
+ 'add' => 'ﺍﻓﺰﻭﺩﻥ',
+ 'configure' => 'پیکربندی کنید',
+ 'manage' => 'مدیریت تنظیمات',
+ 'fullscreen' => 'تمام صفحه',
+ 'favourite' => 'علاقهمندی',
+ 'unfavourite' => 'حذف از علاقهمندی',
+ 'next' => 'بعدی',
+ 'previous' => 'قبلى',
+ 'filter_active' => 'فیلتر فعال:',
+ 'filter_clear' => 'پاک کردن فیلتر',
+ 'download' => 'دانلود',
+ 'open_in_tab' => 'باز کردن در تب جدید',
+ 'open' => 'بازکردن',
+
+ // Sort Options
+ 'sort_options' => 'گزینههای مرتب سازی',
+ 'sort_direction_toggle' => 'معکوس کردن جهت مرتب سازی',
+ 'sort_ascending' => 'مرتبسازی صعودی',
+ 'sort_descending' => 'مرتبسازی نزولی',
+ 'sort_name' => 'نام',
+ 'sort_default' => 'پیشفرض',
+ 'sort_created_at' => 'تاریخ ایجاد',
+ 'sort_updated_at' => 'تاریخ بروزرسانی',
+
+ // Misc
+ 'deleted_user' => 'کاربر حذف شده',
+ 'no_activity' => 'بایگانی برای نمایش وجود ندارد',
+ 'no_items' => 'هیچ موردی در دسترس نیست',
+ 'back_to_top' => 'بازگشت به بالا',
+ 'skip_to_main_content' => 'رفتن به محتوای اصلی',
+ 'toggle_details' => 'معکوس کردن اطلاعات',
+ 'toggle_thumbnails' => 'معکوس کردن ریزعکسها',
+ 'details' => 'جزییات',
+ 'grid_view' => 'نمایش شبکهای',
+ 'list_view' => 'نمای لیست',
+ 'default' => 'پیشفرض',
+ 'breadcrumb' => 'مسیر جاری',
+ 'status' => 'وضعیت',
+ 'status_active' => 'فعال',
+ 'status_inactive' => 'غیر فعال',
+ 'never' => 'هرگز',
+ 'none' => 'هیچکدام',
+
+ // Header
+ 'homepage' => 'صفحه اصلی',
+ 'header_menu_expand' => 'گسترش منو',
+ 'profile_menu' => 'منو پروفایل',
+ 'view_profile' => 'مشاهده پروفایل',
+ 'edit_profile' => 'ویرایش پروفایل',
+ 'dark_mode' => 'حالت تاریک',
+ 'light_mode' => 'حالت روشن',
+ 'global_search' => 'جستجوی سراسری',
+
+ // Layout tabs
+ 'tab_info' => 'اطلاعات',
+ 'tab_info_label' => 'زبانه: نمایش اطلاعات ثانویه',
+ 'tab_content' => 'محتوا',
+ 'tab_content_label' => 'زبانه: نمایش محتوای اصلی',
+
+ // Email Content
+ 'email_action_help' => 'اگر با دکمه بالا مشکلی دارید ، ادرس وبسایت *URLزیر را در مرورگر وب خود کپی و پیست کنید:',
+ 'email_rights' => 'تمام حقوق محفوظ است',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'سیاست حفظ حریم خصوصی',
+ 'terms_of_service' => 'شرایط خدمات',
+
+ // OpenSearch
+ 'opensearch_description' => 'جستوجو در :appName',
+];
diff --git a/lang/fa/components.php b/lang/fa/components.php
new file mode 100644
index 00000000000..18a01dc5d52
--- /dev/null
+++ b/lang/fa/components.php
@@ -0,0 +1,46 @@
+ 'انتخاب تصویر',
+ 'image_list' => 'لیست تصاویر',
+ 'image_details' => 'جزئیات تصویر',
+ 'image_upload' => 'بارگذاری تصویر',
+ 'image_intro' => 'در اینجا می توانید تصاویری که قبلاً در سیستم آپلود شده اند را انتخاب و مدیریت کنید.',
+ 'image_intro_upload' => 'با کشیدن یک فایل تصویری به این پنجره یا با استفاده از دکمه "بارگذاری تصویر" در بالا، یک تصویر جدید آپلود کنید.',
+ 'image_all' => 'همه',
+ 'image_all_title' => 'نمایش تمام تصاویر',
+ 'image_book_title' => 'تصاویر بارگذاری شده در این کتاب را مشاهده کنید',
+ 'image_page_title' => 'تصاویر بارگذاری شده در این صفحه را مشاهده کنید',
+ 'image_search_hint' => 'جستجو بر اساس نام تصویر',
+ 'image_uploaded' => 'بارگذاری شده :uploadedDate',
+ 'image_uploaded_by' => 'بارگذاری شده توسط:userName',
+ 'image_uploaded_to' => 'بارگذاری شده در صفحه :pageLink',
+ 'image_updated' => 'بهروزرسانی شده در:updateDate',
+ 'image_load_more' => 'بارگذاری بیشتر',
+ 'image_image_name' => 'نام تصویر',
+ 'image_delete_used' => 'این تصویر در صفحات زیر استفاده شده است.',
+ 'image_delete_confirm_text' => 'آیا مطمئن هستید که میخواهید این عکس را پاک کنید؟',
+ 'image_select_image' => 'انتخاب تصویر',
+ 'image_dropzone' => 'تصاویر را رها کنید یا برای بارگذاری اینجا را کلیک کنید',
+ 'image_dropzone_drop' => 'تصویر را برای بارگذاری به اینجا بکشید و رها کنید',
+ 'images_deleted' => 'تصاویر حذف شده',
+ 'image_preview' => 'پیش نمایش تصویر',
+ 'image_upload_success' => 'تصویر با موفقیت بارگذاری شد',
+ 'image_update_success' => 'جزئیات تصویر با موفقیت به روز شد',
+ 'image_delete_success' => 'تصویر با موفقیت حذف شد',
+ 'image_replace' => 'جایگزینی تصویر',
+ 'image_replace_success' => 'تصویر با موفقیت به روز شد',
+ 'image_rebuild_thumbs' => 'بازتولید اندازههای گوناگونی از تصویر',
+ 'image_rebuild_thumbs_success' => 'اندازههای گوناگونی از تصویر با موفقیت بازتولید شدند.',
+
+ // Code Editor
+ 'code_editor' => 'ویرایش کد',
+ 'code_language' => 'زبان کد',
+ 'code_content' => 'محتوی کد',
+ 'code_session_history' => 'تاریخچه جلسات',
+ 'code_save' => 'ذخیره کد',
+];
diff --git a/lang/fa/editor.php b/lang/fa/editor.php
new file mode 100644
index 00000000000..8a05571b845
--- /dev/null
+++ b/lang/fa/editor.php
@@ -0,0 +1,182 @@
+ 'عمومی',
+ 'advanced' => 'پیشرفته',
+ 'none' => 'هیچ کدام',
+ 'cancel' => 'لغو',
+ 'save' => 'ذخیره',
+ 'close' => 'بستن',
+ 'apply' => 'اعمال',
+ 'undo' => 'برگشت',
+ 'redo' => 'از نو',
+ 'left' => 'چپ',
+ 'center' => 'مرکز',
+ 'right' => 'راست',
+ 'top' => 'بالا',
+ 'middle' => 'میانه',
+ 'bottom' => 'پایین',
+ 'width' => 'عرض',
+ 'height' => 'ارتفاع',
+ 'More' => 'بیشتر',
+ 'select' => 'انتخاب...',
+
+ // Toolbar
+ 'formats' => 'الگو',
+ 'header_large' => 'عنوان بزرگ',
+ 'header_medium' => 'عنوان متوسط',
+ 'header_small' => 'عنوان کوچک',
+ 'header_tiny' => 'هدر کوچک',
+ 'paragraph' => 'پاراگراف',
+ 'blockquote' => 'نقل قول',
+ 'inline_code' => 'کد درون خطی',
+ 'callouts' => 'قالب پیام و هشدار',
+ 'callout_information' => 'اطلاعات',
+ 'callout_success' => 'موفق',
+ 'callout_warning' => 'هشدار',
+ 'callout_danger' => 'خطر',
+ 'bold' => 'توپر',
+ 'italic' => 'ایتالیک',
+ 'underline' => 'زیرخط',
+ 'strikethrough' => 'خط خورده',
+ 'superscript' => 'بالانویسی',
+ 'subscript' => 'پایین نویسی',
+ 'text_color' => 'رنگ متن',
+ 'highlight_color' => 'رنگ هایلایت',
+ 'custom_color' => 'رنگ دلخواه',
+ 'remove_color' => 'حذف رنگ',
+ 'background_color' => 'رنگ زمینه',
+ 'align_left' => 'چپ چین',
+ 'align_center' => 'وسط چین',
+ 'align_right' => 'راست چین',
+ 'align_justify' => 'همتراز',
+ 'list_bullet' => 'لیست نشانه دار',
+ 'list_numbered' => 'لیست عددی',
+ 'list_task' => 'لیست کار',
+ 'indent_increase' => 'افزایش تورفتگی',
+ 'indent_decrease' => 'کاهش تورفتگی',
+ 'table' => 'جدول',
+ 'insert_image' => 'افزودن تصویر',
+ 'insert_image_title' => 'افزودن/ویرایش تصویر',
+ 'insert_link' => 'افزودن/ویرایش پیوند',
+ 'insert_link_title' => 'افزودن/ویرایش پیوند',
+ 'insert_horizontal_line' => 'افزودن خط افقی',
+ 'insert_code_block' => 'افزودن بلوک کد',
+ 'edit_code_block' => 'code block را ویرایش کنید',
+ 'insert_drawing' => 'افزودن/ویرایش طرح',
+ 'drawing_manager' => 'مدیریت طراحی',
+ 'insert_media' => 'افزودن/ویرایش رسانه',
+ 'insert_media_title' => 'افزودن/ویرایش رسانه',
+ 'clear_formatting' => 'حذف قالب بندی',
+ 'source_code' => 'کد منبع',
+ 'source_code_title' => 'کد منبع',
+ 'fullscreen' => 'تمام صفحه',
+ 'image_options' => 'تنظیمات تصویر',
+
+ // Tables
+ 'table_properties' => 'تنظیمات جدول',
+ 'table_properties_title' => 'تنظیمات جدول',
+ 'delete_table' => 'حذف جدول',
+ 'table_clear_formatting' => 'حذف قالببندی جدول',
+ 'resize_to_contents' => 'تغییر اندازه بر اساس محتوا',
+ 'row_header' => 'عنوان سطر',
+ 'insert_row_before' => 'افزودن سطر به قبل',
+ 'insert_row_after' => 'افزودن سطر به بعد',
+ 'delete_row' => 'حذف سطر',
+ 'insert_column_before' => 'افزودن ستون به قبل',
+ 'insert_column_after' => 'افزودن ستون به بعد',
+ 'delete_column' => 'حذف ستون',
+ 'table_cell' => 'سلول',
+ 'table_row' => 'سطر',
+ 'table_column' => 'ستون',
+ 'cell_properties' => 'تنظیمات سلول',
+ 'cell_properties_title' => 'تنظیمات سلول',
+ 'cell_type' => 'نوع سلول',
+ 'cell_type_cell' => 'سلول',
+ 'cell_scope' => 'محدوده',
+ 'cell_type_header' => 'بالای سلول',
+ 'merge_cells' => 'ادغام سلول ها',
+ 'split_cell' => 'جداسازی سلول ها',
+ 'table_row_group' => 'گروه بندی سطر',
+ 'table_column_group' => 'گروه بندی ستون',
+ 'horizontal_align' => 'تراز افقی',
+ 'vertical_align' => 'تراز عمودی',
+ 'border_width' => 'پهنای حاشیه',
+ 'border_style' => 'سبک حاشیه',
+ 'border_color' => 'رنگ حاشیه',
+ 'row_properties' => 'تنظیمات سطر',
+ 'row_properties_title' => 'تنظیمات سطر',
+ 'cut_row' => 'برش سطر',
+ 'copy_row' => 'کپی سطر',
+ 'paste_row_before' => 'چسباندن سطر به قبل',
+ 'paste_row_after' => 'چسباندن سطر به بعد',
+ 'row_type' => 'نوع سطر',
+ 'row_type_header' => 'سربرگ',
+ 'row_type_body' => 'بدنه',
+ 'row_type_footer' => 'پانوشت',
+ 'alignment' => 'ترازبندی',
+ 'cut_column' => 'برش ستون',
+ 'copy_column' => 'کپی ستون',
+ 'paste_column_before' => 'چسباندن ستون به قبل',
+ 'paste_column_after' => 'چسباندن ستون به بعد',
+ 'cell_padding' => 'حاشیه سلول',
+ 'cell_spacing' => 'فاصله سلول',
+ 'caption' => 'عنوان',
+ 'show_caption' => 'مشاهده عنوان',
+ 'constrain' => 'محدودسازی نسبت ها',
+ 'cell_border_solid' => 'یکپارچه',
+ 'cell_border_dotted' => 'نقطه چین',
+ 'cell_border_dashed' => 'خط چین',
+ 'cell_border_double' => 'دوتایی',
+ 'cell_border_groove' => 'شیار',
+ 'cell_border_ridge' => 'لبه',
+ 'cell_border_inset' => 'داخل',
+ 'cell_border_outset' => 'خارج',
+ 'cell_border_none' => 'هیچ کدام',
+ 'cell_border_hidden' => 'مخفی',
+
+ // Images, links, details/summary & embed
+ 'source' => 'منبع',
+ 'alt_desc' => 'توضیحات جایگزین',
+ 'embed' => 'درج',
+ 'paste_embed' => 'کد درج را در زیر وارد نمایید:',
+ 'url' => 'آدرس',
+ 'text_to_display' => 'متن جهت نمایش',
+ 'title' => 'عنوان',
+ 'browse_links' => 'مرور پیوندها',
+ 'open_link' => 'بازکردن لینک',
+ 'open_link_in' => 'باز کردن لینک در ...',
+ 'open_link_current' => 'پنجره کنونی',
+ 'open_link_new' => 'پنجره جدید',
+ 'remove_link' => 'حذف لینک',
+ 'insert_collapsible' => 'درج بلوک جمع شونده',
+ 'collapsible_unwrap' => 'باز کردن',
+ 'edit_label' => 'ویرایش برچسب',
+ 'toggle_open_closed' => 'بستن/بازکردن',
+ 'collapsible_edit' => 'ویرایش بلوک جمع شونده',
+ 'toggle_label' => 'تغییر برچسب',
+
+ // About view
+ 'about' => 'درباره ویرایشگر',
+ 'about_title' => 'درباره ویرایشگر WYSIWYG',
+ 'editor_license' => 'مجوز و حق کپی رایت ویرایشگر',
+ 'editor_lexical_license' => 'این ویرایشگر بر پایهی نسخهای مشتقشده از «:lexicalLink» ساخته شده است که تحت مجوز MIT منتشر میشود.',
+ 'editor_lexical_license_link' => 'جزئیات کامل مجوز را میتوانید اینجا مشاهده کنید.',
+ 'editor_tiny_license' => 'این ویرایشگر توسط :tinyLink و تحت مجوز MIT ساخته شده است.',
+ 'editor_tiny_license_link' => 'جزئیات کپی رایت و مجوز TinyMCE را می توانید در اینجا پیدا کنید.',
+ 'save_continue' => 'ذخیره صفحه و ادامه',
+ 'callouts_cycle' => '(جهت تغییر نوع ها چندین بار فشار دهید)',
+ 'link_selector' => 'پیوند به محتوا',
+ 'shortcuts' => 'کلیدهای میانبر',
+ 'shortcut' => 'میانبر',
+ 'shortcuts_intro' => 'میانبرهای قابل استفاده در این ویرایشگر:',
+ 'windows_linux' => '(ویندوز/لینوکس)',
+ 'mac' => '(مک)',
+ 'description' => 'توضیحات',
+];
diff --git a/lang/fa/entities.php b/lang/fa/entities.php
new file mode 100644
index 00000000000..d7c0cc1c067
--- /dev/null
+++ b/lang/fa/entities.php
@@ -0,0 +1,476 @@
+ 'تازه ایجاد شده',
+ 'recently_created_pages' => 'صفحههای تازه ایجاد شده',
+ 'recently_updated_pages' => 'صفحههای تازه بهروزرسانیشده',
+ 'recently_created_chapters' => 'فصلهای تازه ایجاد شده',
+ 'recently_created_books' => 'کتاب های اخیرا ایجاد شده',
+ 'recently_created_shelves' => 'قفسه کتاب های اخیرا ایجاد شده',
+ 'recently_update' => 'اخیرا به روز شده',
+ 'recently_viewed' => 'اخیرا مشاهده شده',
+ 'recent_activity' => 'فعالیتهای اخیر',
+ 'create_now' => 'اکنون یکی ایجاد کنید',
+ 'revisions' => 'بازبینیها',
+ 'meta_revision' => 'بازبینی #:revisionCount',
+ 'meta_created' => 'ایجاد شده :timeLength',
+ 'meta_created_name' => 'ایجاد شده :timeLength توسط :user',
+ 'meta_updated' => 'به روزرسانی شده :timeLength',
+ 'meta_updated_name' => 'به روزرسانی شده :timeLength توسط :user',
+ 'meta_owned_name' => 'متعلق به :user',
+ 'meta_reference_count' => 'در 1 صفحه به آن ارجاع داده شده|در :count صفحه به آن ارجاع داده شده',
+ 'entity_select' => 'انتخاب موجودیت',
+ 'entity_select_lack_permission' => 'شما مجوزهای لازم برای انتخاب این مورد را ندارید',
+ 'images' => 'عکسها',
+ 'my_recent_drafts' => 'پیش نویس های اخیر من',
+ 'my_recently_viewed' => 'بازدیدهای اخیر من',
+ 'my_most_viewed_favourites' => 'محبوب ترین موارد مورد علاقه من',
+ 'my_favourites' => 'مورد علاقه من',
+ 'no_pages_viewed' => 'شما هیچ صفحه ای را مشاهده نکرده اید',
+ 'no_pages_recently_created' => 'اخیرا هیچ صفحه ای ایجاد نشده است',
+ 'no_pages_recently_updated' => 'اخیرا هیچ صفحه ای به روزرسانی نشده است',
+ 'export' => 'خروجی',
+ 'export_html' => 'فایل وب موجود است',
+ 'export_pdf' => 'فایل PDF',
+ 'export_text' => 'پرونده متنی ساده',
+ 'export_md' => 'راهنما مارکدون',
+ 'export_zip' => 'فایل فشردهی زیپ',
+ 'default_template' => 'قالب پیشفرض صفحه',
+ 'default_template_explain' => 'قالبی برای صفحه تعیین کنید که بهعنوان محتوای پیشفرض در تمام صفحاتی که در این مورد ایجاد میشوند، بهکار رود. توجه داشته باشید این قالب تنها در صورتی اعمال میشود که سازندهٔ صفحه به صفحهٔ قالب انتخابشده دسترسی نمایشی داشته باشد.',
+ 'default_template_select' => 'انتخاب صفحهٔ قالب',
+ 'import' => 'وارد کردن',
+ 'import_validate' => 'اعتبارسنجی آیتمهای واردشده',
+ 'import_desc' => 'میتوانید کتابها، فصلها و صفحهها را با استفاده از یک فایل فشردهٔ ZIP وارد کنید که از همین سامانه یا نمونهای دیگر استخراج شده است. برای ادامه، فایل ZIP را انتخاب و بارگذاری کنید. پس از بارگذاری و اعتبارسنجی، در مرحلهٔ بعد میتوانید تنظیمات ورود را انجام داده و آن را تأیید کنید.',
+ 'import_zip_select' => 'انتخاب فایل ZIP برای بارگذاری',
+ 'import_zip_validation_errors' => 'هنگام اعتبارسنجی فایل ZIP ارائهشده، خطاهایی شناسایی شد:',
+ 'import_pending' => 'ورودیهای در انتظار انتقال',
+ 'import_pending_none' => 'هیچ انتقال ورودی آغاز نشده است.',
+ 'import_continue' => 'ادامه فرآیند انتقال ورودی',
+ 'import_continue_desc' => 'محتوای فایل ZIP بارگذاریشده را که قرار است وارد سامانه شود، مرور کنید. پس از اطمینان از صحت آن، انتقال را آغاز نمایید تا محتوا به این سامانه افزوده شود. توجه داشته باشید که پس از انتقال موفق، فایل ZIP بارگذاریشده بهصورت خودکار حذف خواهد شد.',
+ 'import_details' => 'جزئیات انتقال ورودی',
+ 'import_run' => 'شروع فرایند انتقال ورودی',
+ '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' => 'پیمایش صفحات همسطح',
+ '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_save' => 'ذخيره مجوزها',
+ 'permissions_owner' => 'مالک',
+ 'permissions_role_everyone_else' => 'سایر کاربران',
+ 'permissions_role_everyone_else_desc' => 'مجوزها را برای نقشهایی تنظیم کنید که به طور خاص لغو نشدهاند.',
+ 'permissions_role_override' => 'تنظیم مجدد مجوز برای نقش',
+ 'permissions_inherit_defaults' => 'ارث بردن از مجوزهای پیشفرض',
+
+ // Search
+ 'search_results' => 'نتایج جستجو',
+ 'search_total_results_found' => 'نتیجه یافت شد:count | نتایج یافت شده:count',
+ 'search_clear' => 'پاک کردن جستجو',
+ 'search_no_pages' => 'هیچ صفحه ای با این جستجو مطابقت ندارد',
+ 'search_for_term' => 'جستجو برای :term',
+ 'search_more' => 'نتایج بیشتر',
+ 'search_advanced' => 'جستجوی پیشرفته',
+ 'search_terms' => 'عبارات جستجو',
+ 'search_content_type' => 'نوع محتوا',
+ 'search_exact_matches' => 'مطابقت کامل',
+ 'search_tags' => 'جستجو در برچسبها',
+ 'search_options' => 'گزینهها',
+ 'search_viewed_by_me' => 'بازدید شده به وسیله من',
+ 'search_not_viewed_by_me' => 'توسط من مشاهده نشده است',
+ 'search_permissions_set' => 'مجوزها تنظیم شده است',
+ 'search_created_by_me' => 'ایجاد شده توسط من',
+ 'search_updated_by_me' => 'به روز شده توسط من',
+ 'search_owned_by_me' => 'متعلق به من است',
+ 'search_date_options' => 'تنظیمات تاریخ',
+ 'search_updated_before' => 'قبلا به روز شده',
+ 'search_updated_after' => 'پس از به روز رسانی',
+ 'search_created_before' => 'ایجاد شده قبل از',
+ 'search_created_after' => 'ایجاد شده پس از',
+ 'search_set_date' => 'تنظیم تاریخ',
+ 'search_update' => 'جستجو را به روز کنید',
+
+ // Shelves
+ 'shelf' => 'قفسه',
+ 'shelves' => 'قفسهها',
+ 'x_shelves' => ':count قفسه|:count قفسهها',
+ 'shelves_empty' => 'هیچ قفسه ای ایجاد نشده است',
+ 'shelves_create' => 'ایجاد قفسه جدید',
+ 'shelves_popular' => 'قفسههای محبوب',
+ 'shelves_new' => 'قفسههای جدید',
+ 'shelves_new_action' => 'قفسه جدید',
+ 'shelves_popular_empty' => 'محبوب ترین قفسه ها در اینجا ظاهر می شوند.',
+ 'shelves_new_empty' => 'جدیدترین قفسه های ایجاد شده در اینجا ظاهر می شوند.',
+ 'shelves_save' => 'ذخیره قفسه',
+ 'shelves_books' => 'کتابهای موجود در این قفسه',
+ 'shelves_add_books' => 'کتاب ها را به این قفسه اضافه کنید',
+ 'shelves_drag_books' => 'کتابها را به اینجا بکشید تا به این قفسه اضافه شوند',
+ 'shelves_empty_contents' => 'این قفسه هیچ کتابی به آن اختصاص داده نشده است',
+ 'shelves_edit_and_assign' => 'برای اختصاص کتابها، قفسه را ویرایش کنید',
+ 'shelves_edit_named' => 'ویرایش قفسه :name',
+ 'shelves_edit' => 'ویرایش قفسه',
+ 'shelves_delete' => 'حذف قفسه',
+ 'shelves_delete_named' => 'حذف قفسه :name',
+ 'shelves_delete_explain' => "با این کار قفسه کتاب با نام ':name' حذف میشود. کتاب های موجود حذف نمیشوند.",
+ 'shelves_delete_confirmation' => 'آیا مطمئن هستید که میخواهید این قفسه را حذف کنید؟',
+ 'shelves_permissions' => 'مجوزهای قفسه',
+ 'shelves_permissions_updated' => 'مجوزهای کانال بروزرسانی شد',
+ 'shelves_permissions_active' => 'مجوزهای قفسه فعال است',
+ 'shelves_permissions_cascade_warning' => 'مجوزهای موجود در قفسهها به طور خودکار به کتابهای حاوی اطلاق نمیشوند. دلیل آن این است که یک کتاب می تواند در چندین قفسه وجود داشته باشد. با این حال، مجوزها را میتوان با استفاده از گزینه پایین همین صفحه در کتابهای فرزند کپی کرد.',
+ 'shelves_permissions_create' => 'مجوزهای «ایجاد» قفسه فقط برای کپی کردن مجوزها در کتابهای کودک با استفاده از عملکرد زیر استفاده میشوند. آنها توانایی ایجاد کتاب را کنترل نمیکنند.',
+ 'shelves_copy_permissions_to_books' => 'کپی مجوزها در کتابها',
+ 'shelves_copy_permissions' => 'کپی مجوزها',
+ 'shelves_copy_permissions_explain' => 'با این کار تنظیمات مجوز فعلی این قفسه برای همه کتابهای موجود در آن اعمال میشود. قبل از فعال کردن، مطمئن شوید که هر گونه تغییر در مجوزهای این قفسه، ذخیره شده است.',
+ 'shelves_copy_permission_success' => 'مجوزهای قفسه در :count کتاب کپی شد',
+
+ // Books
+ 'book' => 'کتاب',
+ 'books' => 'کتابها',
+ 'x_books' => ':count کتاب|:count کتاب',
+ 'books_empty' => 'هیچ کتابی ایجاد نشده است',
+ 'books_popular' => 'کتاب های محبوب',
+ 'books_recent' => 'کتاب های اخیر',
+ 'books_new' => 'کتاب های جدید',
+ 'books_new_action' => 'کتاب جدید',
+ 'books_popular_empty' => 'محبوب ترین کتاب ها در اینجا ظاهر می شوند.',
+ 'books_new_empty' => 'جدیدترین کتابهای ایجاد شده در اینجا ظاهر میشوند.',
+ 'books_create' => 'ایجاد کتاب جدید',
+ 'books_delete' => 'حذف کتاب',
+ 'books_delete_named' => 'حذف کتاب:bookName',
+ 'books_delete_explain' => 'با این کار کتابی با نام \':bookName\' حذف می شود. تمام صفحات و فصل ها حذف خواهند شد.',
+ 'books_delete_confirmation' => 'آیا مطمئن هستید که می خواهید این کتاب را حذف کنید?',
+ 'books_edit' => 'ویرایش کتاب',
+ 'books_edit_named' => 'ویرایش کتاب:bookName',
+ 'books_form_book_name' => 'نام کتاب',
+ 'books_save' => 'ذخیره کتاب',
+ 'books_permissions' => 'مجوزهای کتاب',
+ 'books_permissions_updated' => 'مجوزهای کتاب به روز شد',
+ 'books_empty_contents' => 'هیچ صفحه یا فصلی برای این کتاب ایجاد نشده است.',
+ 'books_empty_create_page' => 'یک صفحه جدید ایجاد کنید',
+ 'books_empty_sort_current_book' => 'کتاب فعلی را مرتب کنید',
+ 'books_empty_add_chapter' => 'یک فصل اضافه کنید',
+ 'books_permissions_active' => 'مجوزهای کتاب فعال است',
+ 'books_search_this' => 'این کتاب را جستجو کنید',
+ 'books_navigation' => 'ناوبری کتاب',
+ '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_chapters_first' => 'فصل اول',
+ 'books_sort_chapters_last' => 'فصل آخر',
+ 'books_sort_show_other' => 'نمایش کتابهای دیگر',
+ 'books_sort_save' => 'ذخیره سفارش جدید',
+ 'books_sort_show_other_desc' => 'کتابهای دیگری را در اینجا اضافه کنید تا آنها را در عملیات مرتبسازی بگنجانید و به آسانی کتابها را مجددا سازماندهی کنید.',
+ 'books_sort_move_up' => 'انتقال به بالا',
+ 'books_sort_move_down' => 'انتقال به پایین',
+ 'books_sort_move_prev_book' => 'انتقال به کتاب قبلی',
+ 'books_sort_move_next_book' => 'انتقال به کتاب بعدی',
+ 'books_sort_move_prev_chapter' => 'انتقال به داخل فصل قبلی',
+ 'books_sort_move_next_chapter' => 'انتقال به داخل فصل بعدی',
+ 'books_sort_move_book_start' => 'انتقال به ابتدای کتاب',
+ 'books_sort_move_book_end' => 'انتقال به انتهای کتاب',
+ 'books_sort_move_before_chapter' => 'انتقال به قبل فصل',
+ 'books_sort_move_after_chapter' => 'انتقال به بعد فصل',
+ 'books_copy' => 'کپی کتاب',
+ 'books_copy_success' => 'کتاب با موفقیت کپی شد',
+
+ // Chapters
+ 'chapter' => 'فصل',
+ 'chapters' => 'فصل',
+ 'x_chapters' => ':count فصل|:count فصل',
+ 'chapters_popular' => 'فصلهای محبوب',
+ 'chapters_new' => 'فصل جدید',
+ 'chapters_create' => 'ایجاد فصل جدید',
+ 'chapters_delete' => 'حذف فصل',
+ 'chapters_delete_named' => 'حذف فصل :chapterName',
+ 'chapters_delete_explain' => 'با این کار فصلی با نام \':chapterName\' حذف می شود. تمامی صفحاتی که در این فصل وجود دارند نیز حذف خواهند شد.',
+ 'chapters_delete_confirm' => 'آیا مطمئن هستید که می خواهید این فصل را حذف کنید؟',
+ 'chapters_edit' => 'ویرایش فصل',
+ 'chapters_edit_named' => 'ویرایش فصل :chapterName',
+ 'chapters_save' => 'ذخیره فصل',
+ 'chapters_move' => 'انتقال فصل',
+ 'chapters_move_named' => 'انتقال فصل :chapterName',
+ 'chapters_copy' => 'کپی فصل',
+ 'chapters_copy_success' => 'فصل با موفقیت کپی شد',
+ 'chapters_permissions' => 'مجوزهای فصل',
+ 'chapters_empty' => 'در حال حاضر هیچ صفحه ای در این فصل وجود ندارد.',
+ 'chapters_permissions_active' => 'مجوزهای فصل فعال است',
+ 'chapters_permissions_success' => 'مجوزهای فصل به روز شد',
+ 'chapters_search_this' => 'این فصل را جستجو کنید',
+ 'chapter_sort_book' => 'مرتبسازی کتاب',
+
+ // Pages
+ 'page' => 'صفحه',
+ 'pages' => 'صفحات',
+ 'x_pages' => ':count صفحه|:count صفحه',
+ 'pages_popular' => 'صفحات محبوب',
+ 'pages_new' => 'صفحه جدید',
+ 'pages_attachments' => 'پیوستها',
+ 'pages_navigation' => 'پیمایش صفحه',
+ 'pages_delete' => 'حذف صفحه',
+ 'pages_delete_named' => 'حذف صفحه:pageName',
+ 'pages_delete_draft_named' => 'حذف پیش نویس صفحه:pageName',
+ 'pages_delete_draft' => 'حذف صفحه پیش نویس',
+ 'pages_delete_success' => 'صفحه حذف شد',
+ 'pages_delete_draft_success' => 'صفحه پیش نویس حذف شد',
+ 'pages_delete_warning_template' => 'این صفحه هماکنون بهعنوان قالب پیشفرض صفحه برای یک کتاب یا فصل در حال استفاده است. پس از حذف این صفحه، کتابها یا فصلهای مربوط دیگر قالب پیشفرض صفحه نخواهند داشت.',
+ 'pages_delete_confirm' => 'آیا مطمئن هستید که می خواهید این صفحه را حذف کنید؟',
+ 'pages_delete_draft_confirm' => 'آیا مطمئن هستید که می خواهید این صفحه پیش نویس را حذف کنید؟',
+ 'pages_editing_named' => 'ویرایش صفحه :pageName',
+ 'pages_edit_draft_options' => 'تنظیمات پیشنویس',
+ 'pages_edit_save_draft' => 'ذخیره پیش نویس',
+ 'pages_edit_draft' => 'ویرایش پیش نویس صفحه',
+ 'pages_editing_draft' => 'در حال ویرایش پیش نویس',
+ 'pages_editing_page' => 'در حال ویرایش صفحه',
+ 'pages_edit_draft_save_at' => 'پیش نویس ذخیره شده در ',
+ 'pages_edit_delete_draft' => 'حذف پیش نویس',
+ 'pages_edit_delete_draft_confirm' => 'آیا از حذف تغییرات صفحه پیشنویس اطمینان دارید؟ تمامی تغییراتتان، از آخرین ذخیرهسازی کامل، از بین خواهد رفت و ویرایشگر به آخرین وضعیت پیشنویس ذخیره شده بازگردانی خواهد شد.',
+ 'pages_edit_discard_draft' => 'دور انداختن پیش نویس',
+ 'pages_edit_switch_to_markdown' => 'به ویرایشگر Markdown بروید',
+ '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',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(در مرحله آزمایش بتا)',
+ 'pages_edit_set_changelog' => 'تنظیم تغییرات',
+ 'pages_edit_enter_changelog_desc' => 'توضیح مختصری از تغییراتی که ایجاد کرده اید وارد کنید',
+ 'pages_edit_enter_changelog' => 'وارد کردن تغییرات',
+ 'pages_editor_switch_title' => 'ویرایشگر را تغییر دهید',
+ 'pages_editor_switch_are_you_sure' => 'آیا مطمئن هستید که می خواهید ویرایشگر این صفحه را تغییر دهید؟',
+ 'pages_editor_switch_consider_following' => 'هنگام تغییر ویرایشگر موارد زیر را در نظر بگیرید:',
+ 'pages_editor_switch_consideration_a' => 'پس از ذخیره، گزینه ویرایشگر جدید توسط هر ویرایشگر آینده، از جمله ویرایشگرانی که ممکن است خودشان نتوانند نوع ویرایشگر را تغییر دهند، استفاده خواهد شد.',
+ 'pages_editor_switch_consideration_b' => 'این به طور بالقوه می تواند منجر به از دست دادن جزئیات و نحو در شرایط خاص شود.',
+ 'pages_editor_switch_consideration_c' => 'تغییرات برچسبها یا تغییرات ثبت شده از آخرین ذخیرهسازی انجام شده، در این تغییر باقی نمیمانند.',
+ 'pages_save' => 'ذخیره صفحه',
+ 'pages_title' => 'عنوان صفحه',
+ 'pages_name' => 'نام صفحه',
+ 'pages_md_editor' => 'ویرایشگر',
+ 'pages_md_preview' => 'پيش نمايش',
+ 'pages_md_insert_image' => 'درج تصویر',
+ 'pages_md_insert_link' => 'پیوند نهاد را درج کنید',
+ 'pages_md_insert_drawing' => 'درج طرح',
+ 'pages_md_show_preview' => 'دیدن پیش نمایش',
+ 'pages_md_sync_scroll' => 'هماهنگ سازی اسکرول پیش نمایش',
+ 'pages_md_plain_editor' => 'ویرایشگر متن ساده',
+ 'pages_drawing_unsaved' => 'نقاشی ذخیره نشده پیدا شد',
+ 'pages_drawing_unsaved_confirm' => 'نسخهای ذخیرهنشده از طراحیهای قبلی پیدا شد. آیا میخواهید این طراحی ذخیرهنشده را بازیابی کنید و به ویرایش آن ادامه دهید؟',
+ 'pages_not_in_chapter' => 'صفحه در یک فصل نیست',
+ 'pages_move' => 'انتقال صفحه',
+ 'pages_copy' => 'کپی صفحه',
+ 'pages_copy_desination' => 'مقصد را کپی کنید',
+ 'pages_copy_success' => 'صفحه با موفقیت کپی شد',
+ 'pages_permissions' => 'مجوزهای صفحه',
+ 'pages_permissions_success' => 'مجوزهای صفحه به روز شد',
+ 'pages_revision' => 'تجدید نظر',
+ 'pages_revisions' => 'ویرایش های صفحه',
+ 'pages_revisions_desc' => 'لیست زیر تمامی ویرایشهای قبلی این صفحه است. در صورت وجود مجوز دسترسی، میتوانید نسخههای قدیمی صفحه را مشاهده، مقایسه و بازیابی کنید. تاریخچه کامل صفحه ممکن است به طور کامل در اینجا منعکس نشود زیرا بسته به پیکربندی سیستم، ویرایش های قدیمی می توانند به طور خودکار حذف شوند.',
+ 'pages_revisions_named' => 'بازبینی صفحه برای :pageName',
+ 'pages_revision_named' => 'ویرایش صفحه برای :pageName',
+ 'pages_revision_restored_from' => 'بازیابی شده از #:id; :summary',
+ 'pages_revisions_created_by' => 'ایجاد شده توسط',
+ 'pages_revisions_date' => 'تاریخ تجدید نظر',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'شماره ویرایش',
+ 'pages_revisions_numbered' => 'تجدید نظر #:id',
+ 'pages_revisions_numbered_changes' => 'بازبینی #:id تغییرات',
+ 'pages_revisions_editor' => 'نوع ویرایشگر',
+ 'pages_revisions_changelog' => 'لیست تغییرات',
+ 'pages_revisions_changes' => 'تغییرات',
+ 'pages_revisions_current' => 'نسخهی جاری',
+ 'pages_revisions_preview' => 'پيش نمايش',
+ 'pages_revisions_restore' => 'بازگرداندن',
+ 'pages_revisions_none' => 'این صفحه هیچ ویرایشی ندارد',
+ 'pages_copy_link' => 'کپی لینک',
+ 'pages_edit_content_link' => 'پرش به قسمت در ویرایشگر',
+ 'pages_pointer_enter_mode' => 'ورود به حالت انتخاب قسمت',
+ 'pages_pointer_label' => 'گزینههای قسمت صفحه',
+ 'pages_pointer_permalink' => 'لینک ثابت قسمت صفحه',
+ 'pages_pointer_include_tag' => 'افزودن برچسب برای این بخش از صفحه',
+ 'pages_pointer_toggle_link' => 'حالت پیوند دائمی؛ برای مشاهده برچسب افزوده شده، کلیک کنید',
+ 'pages_pointer_toggle_include' => 'حالت افزودن برچسب؛ برای نمایش پیوند دائمی کلیک کنید',
+ 'pages_permissions_active' => 'مجوزهای صفحه فعال است',
+ 'pages_initial_revision' => 'انتشار اولیه',
+ 'pages_references_update_revision' => 'بهروزرسانی خودکار لینکهای داخلی سیستم',
+ 'pages_initial_name' => 'برگهٔ تازه',
+ 'pages_editing_draft_notification' => 'شما در حال ویرایش پیش نویسی هستید که آخرین بار در :timeDiff ذخیره شده است.',
+ 'pages_draft_edited_notification' => 'این صفحه از همان زمان به روز شده است. توصیه می شود از این پیش نویس صرف نظر کنید.',
+ 'pages_draft_page_changed_since_creation' => 'این صفحه از زمان ایجاد این پیش نویس به روز شده است. توصیه میشود که این پیشنویس را کنار بگذارید یا مراقب باشید که تغییرات صفحه را بازنویسی نکنید.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count کاربران شروع به ویرایش این صفحه کرده اند',
+ 'start_b' => ':userName ویرایش این صفحه را شروع کرده است',
+ 'time_a' => 'از آخرین به روز رسانی صفحه',
+ 'time_b' => 'در آخرین دقیقه :minCount',
+ 'message' => ':start :time. مراقب باشید به روز رسانی های یکدیگر را بازنویسی نکنید!',
+ ],
+ 'pages_draft_discarded' => 'پیش نویس حذف شد، ویرایشگر با محتوای صفحه فعلی به روز شده است',
+ 'pages_draft_deleted' => 'پیش نویس حذف شد، ویرایشگر با محتوای صفحه فعلی به روز شده است',
+ 'pages_specific' => 'صفحه خاص',
+ 'pages_is_template' => 'الگوی صفحه',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'نمایش/پنهانسازی نوار کناری',
+ 'page_tags' => 'برچسبهای صفحه',
+ 'chapter_tags' => 'برچسبهای فصل',
+ 'book_tags' => 'برچسب های کتاب',
+ 'shelf_tags' => 'برچسبهای قفسه',
+ 'tag' => 'برچسب',
+ 'tags' => 'برچسبها',
+ 'tags_index_desc' => 'تگ ها را میتوان به محتوای داخل سیستم اعمال کرد تا فرم هماهنگی از طبقهبندی ایجاد شود. تگ ها می توانند شامل یک کلید و یک مقدار باشند، که مقدار آن انتخابی یا قابل خذف است. بعد از ایجاد تگ، محتوا را می توان توسط کلید یا مقدار هر تگ جستجو نمود.',
+ 'tag_name' => 'نام برچسب',
+ 'tag_value' => 'مقدار برچسب (اختیاری)',
+ 'tags_explain' => "برای دسته بندی بهتر مطالب خود چند برچسب اضافه کنید.\nمی توانید برای سازماندهی عمیقتر، یک مقدار به یک برچسب اختصاص دهید.",
+ 'tags_add' => 'یک برچسب دیگر اضافه کنید',
+ 'tags_remove' => 'این برچسب را حذف کنید',
+ 'tags_usages' => 'مجموع استفاده از برچسب',
+ 'tags_assigned_pages' => 'به صفحات اختصاص داده شده است',
+ 'tags_assigned_chapters' => 'اختصاص به فصل',
+ 'tags_assigned_books' => 'به کتاب ها اختصاص داده شده است',
+ 'tags_assigned_shelves' => 'به قفسه ها اختصاص داده شده است',
+ 'tags_x_unique_values' => ':count مقادیر منحصر به فرد',
+ 'tags_all_values' => 'همه ارزش ها',
+ 'tags_view_tags' => 'مشاهده برچسب ها',
+ 'tags_view_existing_tags' => 'مشاهده برچسبهای موجود',
+ 'tags_list_empty_hint' => 'برچسب ها را می توان از طریق نوار کناری ویرایشگر صفحه یا هنگام ویرایش جزئیات یک کتاب، فصل یا قفسه اختصاص داد.',
+ 'attachments' => 'پیوست ها',
+ 'attachments_explain' => 'چند فایل را آپلود کنید یا چند پیوند را برای نمایش در صفحه خود ضمیمه کنید. اینها در نوار کناری صفحه قابل مشاهده هستند.',
+ 'attachments_explain_instant_save' => 'تغییرات در اینجا فورا ذخیره می شوند.',
+ 'attachments_upload' => 'آپلود فایل',
+ 'attachments_link' => 'پیوند را ضمیمه کنید',
+ 'attachments_upload_drop' => 'میتوانید فایلی را در اینجا بکشید و رها کنید تا آن را به عنوان پیوست آپلود کنید.',
+ 'attachments_set_link' => 'پیوند را تنظیم کنید',
+ 'attachments_delete' => 'آیا مطمئن هستید که می خواهید این پیوست را حذف کنید؟',
+ 'attachments_dropzone' => 'فایل را برای بارگذاری به اینجا بکشید و رها کنید',
+ 'attachments_no_files' => 'هیچ فایلی آپلود نشده است',
+ 'attachments_explain_link' => 'اگر ترجیح می دهید فایلی را آپلود نکنید، می توانید پیوندی را پیوست کنید. این می تواند پیوندی به صفحه دیگر یا پیوندی به فایلی در فضای ابری باشد.',
+ 'attachments_link_name' => 'نام پیوند',
+ 'attachment_link' => 'لینک پیوست',
+ 'attachments_link_url' => 'پیوند به فایل',
+ 'attachments_link_url_hint' => 'آدرس سایت یا فایل',
+ 'attach' => 'ضمیمه کنید',
+ 'attachments_insert_link' => 'پیوند پیوست را به صفحه اضافه کنید',
+ 'attachments_edit_file' => 'ویرایش فایل',
+ 'attachments_edit_file_name' => 'نام فایل',
+ 'attachments_edit_drop_upload' => 'فایل ها را رها کنید یا برای آپلود و بازنویسی اینجا کلیک کنید',
+ 'attachments_order_updated' => 'سفارش پیوست به روز شد',
+ 'attachments_updated_success' => 'جزئیات پیوست به روز شد',
+ 'attachments_deleted' => 'پیوست حذف شد',
+ 'attachments_file_uploaded' => 'فایل با موفقیت آپلود شد',
+ 'attachments_file_updated' => 'فایل با موفقیت به روز شد',
+ 'attachments_link_attached' => 'پیوند با موفقیت به صفحه پیوست شد',
+ 'templates' => 'قالب ها',
+ 'templates_set_as_template' => 'صفحه یک الگو است',
+ 'templates_explain_set_as_template' => 'می توانید این صفحه را به عنوان یک الگو تنظیم کنید تا از محتویات آن هنگام ایجاد صفحات دیگر استفاده شود. سایر کاربران در صورت داشتن مجوز مشاهده برای این صفحه می توانند از این الگو استفاده کنند.',
+ 'templates_replace_content' => 'محتوای صفحه را جایگزین کنید',
+ 'templates_append_content' => 'به محتوای صفحه اضافه کنید',
+ 'templates_prepend_content' => 'به محتوای صفحه اضافه کنید',
+
+ // Profile View
+ 'profile_user_for_x' => 'کاربر برای :time',
+ 'profile_created_content' => 'محتوا ایجاد کرد',
+ 'profile_not_created_pages' => ':userName هیچ صفحه ای ایجاد نکرده است',
+ 'profile_not_created_chapters' => ':userName هیچ فصلی ایجاد نکرده است',
+ 'profile_not_created_books' => ':userName هیچ کتابی ایجاد نکرده است',
+ 'profile_not_created_shelves' => ':userName هیچ قفسه ای ایجاد نکرده است',
+
+ // Comments
+ 'comment' => 'اظهار نظر',
+ 'comments' => 'نظرات',
+ 'comment_add' => 'افزودن توضیح',
+ 'comment_none' => 'نظری برای نمایش وجود ندارد',
+ 'comment_placeholder' => 'اینجا نظر بدهید',
+ 'comment_thread_count' => ':count رشته گفتوگو',
+ 'comment_archived_count' => ':count مورد بایگانیشده',
+ 'comment_archived_threads' => 'رشته گفتوگوهای بایگانیشده',
+ 'comment_save' => 'ذخیره نظر',
+ 'comment_new' => 'نظر جدید',
+ 'comment_created' => ':createDiff نظر داد',
+ 'comment_updated' => 'به روز رسانی :updateDiff توسط :username',
+ 'comment_updated_indicator' => 'به روز شده',
+ 'comment_deleted_success' => 'نظر حذف شد',
+ 'comment_created_success' => 'نظر اضافه شد',
+ 'comment_updated_success' => 'نظر به روز شد',
+ 'comment_archive_success' => 'نظر بایگانی شد',
+ 'comment_unarchive_success' => 'نظر از بایگانی خارج شد',
+ 'comment_view' => 'دیدن نظر',
+ 'comment_jump_to_thread' => 'رفتن به رشته گفتوگو',
+ 'comment_delete_confirm' => 'آیا مطمئن هستید که می خواهید این نظر را حذف کنید؟',
+ 'comment_in_reply_to' => 'در پاسخ به :commentId',
+ 'comment_reference' => 'مرجع',
+ 'comment_reference_outdated' => '(نسخه قدیمی)',
+ 'comment_editor_explain' => 'در اینجا نظراتی که در این صفحه گذاشته شده است، مشاهده میشود. نظرات را میتوان در هنگام مشاهده صفحه ذخیره شده، اضافه و مدیریت کرد.',
+
+ // Revision
+ 'revision_delete_confirm' => 'آیا مطمئن هستید که می خواهید این ویرایش را حذف کنید؟',
+ 'revision_restore_confirm' => 'آیا مطمئن هستید که می خواهید این ویرایش را بازیابی کنید؟ محتوای صفحه فعلی جایگزین خواهد شد.',
+ 'revision_cannot_delete_latest' => 'نمی توان آخرین نسخه را حذف کرد.',
+
+ // Copy view
+ 'copy_consider' => 'لطفاً هنگام کپی کردن مطالب به موارد زیر توجه کنید.',
+ 'copy_consider_permissions' => 'تنظیمات مجوز سفارشی کپی نخواهد شد.',
+ 'copy_consider_owner' => 'شما مالک تمام محتوای کپی شده خواهید شد.',
+ 'copy_consider_images' => 'فایل های تصویر صفحه تکراری نخواهند شد و تصاویر اصلی ارتباط خود را با صفحه ای که در ابتدا در آن آپلود شده اند حفظ می کنند.',
+ 'copy_consider_attachments' => 'پیوست های صفحه کپی نمی شود.',
+ 'copy_consider_access' => 'تغییر مکان، مالک یا مجوزها ممکن است منجر به دسترسی به این محتوا برای افرادی شود که قبلاً به آنها دسترسی نداشتند.',
+
+ // Conversions
+ 'convert_to_shelf' => 'تبدیل به قفسه',
+ 'convert_to_shelf_contents_desc' => 'شما می توانید این کتاب را به یک قفسه جدید با همان مطالب تبدیل کنید. فصل های موجود در این کتاب به کتاب های جدید تبدیل می شوند. اگر این کتاب حاوی صفحاتی باشد که در یک فصل نیستند، این کتاب تغییر نام داده و حاوی چنین صفحاتی است و این کتاب بخشی از قفسه جدید خواهد شد.',
+ 'convert_to_shelf_permissions_desc' => 'هر گونه مجوز تنظیم شده در این کتاب در قفسه جدید و همه کتابهای فرزند جدید که مجوزهای خود را ندارند کپی میشود. توجه داشته باشید که مجوزهای موجود در قفسهها مانند کتابها به طور خودکار به محتوای درون آن ها شامل نمی شود.',
+ 'convert_book' => 'تبدیل کتاب',
+ 'convert_book_confirm' => 'آیا از تبدیل این کتاب مطمئن هستید؟',
+ 'convert_undo_warning' => 'برگشت دادن این فرایند به آسانی نخواهد بود.',
+ 'convert_to_book' => 'تبدیل به کتاب',
+ 'convert_to_book_desc' => 'می توانید این فصل را به یک کتاب جدید با همین مطالب تبدیل کنید. هر مجوزی که در این فصل تنظیم شده است در کتاب جدید کپی می شود، اما هر گونه مجوز ارثی، از کتاب والد، کپی نمی شود که می تواند منجر به تغییر کنترل دسترسی شود.',
+ 'convert_chapter' => 'تبدیل فصل',
+ 'convert_chapter_confirm' => 'آیا از تبدیل این فصل مطمئن هستید؟',
+
+ // References
+ 'references' => 'مراجع',
+ 'references_none' => 'هیچ رفرنسی برای این قلم یافت نشد.',
+ 'references_to_desc' => 'در زیر تمام صفحات شناخته شده در سیستم که به این مورد پیوند دارند، نشان داده شده است.',
+
+ // Watch Options
+ 'watch' => 'نظارت',
+ 'watch_title_default' => 'تنظیمات پیشفرض',
+ 'watch_desc_default' => 'نظارت را تنها به تنظیمات پیش فرض اعلان برگردانید.',
+ 'watch_title_ignore' => 'نادیدهگرفتن',
+ 'watch_desc_ignore' => 'همه اعلانها، از جمله اعلانهای مربوط به تنظیمات سطح کاربر را نادیده بگیرید.',
+ 'watch_title_new' => 'صفحات جدید',
+ 'watch_desc_new' => 'هنگامی که صفحه جدیدی در این مورد ایجاد میشود، اطلاع بده.',
+ 'watch_title_updates' => 'همه به روزرسانیهای صفحه',
+ 'watch_desc_updates' => 'تمام صفحات جدید و تغییرات صفحه را اطلاع بده.',
+ 'watch_desc_updates_page' => 'همه تغییرات صفحه را اطلاع بده.',
+ 'watch_title_comments' => 'همه بهروزرسانیها و نظرات',
+ 'watch_desc_comments' => 'در مورد تمام صفحات جدید، تغییرات در صفحات و ثبت نظرات جدید، اطلاع بده.',
+ 'watch_desc_comments_page' => 'در مورد تغییرات در صفحه و ثبت نظرات جدید، اطلاع بده.',
+ 'watch_change_default' => 'تنظیمات پیشفرض اعلانها را تغییر دهید',
+ 'watch_detail_ignore' => 'نادیده گرفتن اعلانها',
+ 'watch_detail_new' => 'نظارت بر صفحات جدید',
+ 'watch_detail_updates' => 'نظارت بر صفحات جدید و بهروزرسانیها',
+ 'watch_detail_comments' => 'نظارت بر صفحات جدید، بهروزرسانیها و نظرات',
+ 'watch_detail_parent_book' => 'نظارت از طریق کتاب والد',
+ 'watch_detail_parent_book_ignore' => 'نادیده گرفتن (نظارت) از طریق کتاب والد',
+ 'watch_detail_parent_chapter' => 'نظارت از طریق فصل والد',
+ 'watch_detail_parent_chapter_ignore' => 'نادیده گرفتن (نظارت) از طریق فصل والد',
+];
diff --git a/lang/fa/errors.php b/lang/fa/errors.php
new file mode 100644
index 00000000000..777d6e69293
--- /dev/null
+++ b/lang/fa/errors.php
@@ -0,0 +1,135 @@
+ 'شما مجوز مشاهده صفحه درخواست شده را ندارید.',
+ 'permissionJson' => 'شما مجاز به انجام این عمل نیستید.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'کاربری با ایمیل :email از قبل وجود دارد اما دارای اطلاعات متفاوتی می باشد.',
+ 'auth_pre_register_theme_prevention' => 'بر اساس اطلاعات ارائه شده، حساب کاربری نمینواند ایجاد بشود',
+ 'email_already_confirmed' => 'ایمیل قبلا تایید شده است، وارد سیستم شوید.',
+ 'email_confirmation_invalid' => 'این کلمه عبور معتبر نمی باشد و یا قبلا استفاده شده است، لطفا دوباره ثبت نام نمایید.',
+ 'email_confirmation_expired' => 'کلمه عبور منقضی شده است، یک ایمیل تایید جدید ارسال شد.',
+ 'email_confirmation_awaiting' => 'آدرس ایمیل حساب مورد استفاده باید تایید شود',
+ 'ldap_fail_anonymous' => 'دسترسی LDAP با استفاده از صحافی ناشناس انجام نشد',
+ 'ldap_fail_authed' => 'دسترسی به LDAP با استفاده از جزئیات داده شده و رمز عبور انجام نشد',
+ 'ldap_extension_not_installed' => 'افزونه PHP LDAP نصب نشده است',
+ 'ldap_cannot_connect' => 'اتصال به سرور LDAP امکانپذیر نیست، اتصال اولیه برقرار نشد',
+ 'saml_already_logged_in' => 'قبلا وارد سیستم شده اید',
+ 'saml_no_email_address' => 'آدرس داده ای برای این کاربر در داده های ارائه شده توسط سیستم احراز هویت خارجی یافت نشد',
+ 'saml_invalid_response_id' => 'درخواست ارسالشده از سامانه احراز هویت خارجی، توسط فرآیند آغازشده از سوی این نرمافزار شناسایی نشد. ممکن است بازگشت به صفحه قبل پس از ورود، موجب ایجاد این مشکل شده باشد.',
+ 'saml_fail_authed' => 'ورود به سیستم :system انجام نشد، سیستم مجوز موفقیت آمیز ارائه نکرد',
+ 'oidc_already_logged_in' => 'قبلا وارد شده اید',
+ 'oidc_no_email_address' => 'آدرس ایمیلی برای این کاربر در داده های ارائه شده توسط سیستم احراز هویت خارجی یافت نشد',
+ 'oidc_fail_authed' => 'ورود به سیستم با استفاده از :system انجام نشد، سیستم مجوز موفقیت آمیز ارائه نکرد',
+ 'social_no_action_defined' => 'عملی تعریف نشده است',
+ 'social_login_bad_response' => "خطای دریافت شده در هنگام ورود به سیستم:\n:error",
+ 'social_account_in_use' => 'این حساب :socialAccount از قبل در حال استفاده است، سعی کنید از طریق گزینه :socialAccount وارد سیستم شوید.',
+ 'social_account_email_in_use' => 'ایمیل :email از قبل در حال استفاده است. اگر از قبل حساب کاربری دارید می توانید از تنظیمات نمایه خود :socialAccount خود را وصل کنید.',
+ 'social_account_existing' => 'این :socialAccount از قبل به نمایه شما پیوست شده است.',
+ 'social_account_already_used_existing' => 'این حساب :socialAccount قبلا توسط کاربر دیگری استفاده شده است.',
+ 'social_account_not_used' => 'این حساب :socialAccount به هیچ کاربری پیوند ندارد. لطفا آن را در تنظیمات نمایه خود ضمیمه کنید. ',
+ 'social_account_register_instructions' => 'اگر هنوز حساب کاربری ندارید ، می توانید با استفاده از گزینه :socialAccount حساب خود را ثبت کنید.',
+ 'social_driver_not_found' => 'درایور شبکه اجتماعی یافت نشد',
+ 'social_driver_not_configured' => 'تنظیمات شبکه اجتماعی :socialAccount به درستی پیکربندی نشده است.',
+ 'invite_token_expired' => 'این پیوند دعوت منقضی شده است. در عوض می توانید سعی کنید رمز عبور حساب خود را بازنشانی کنید.',
+ 'login_user_not_found' => 'کاربری برای این کار پیدا نمیشود.',
+
+ // System
+ 'path_not_writable' => 'مسیر فایل :filePath را نمی توان در آن آپلود کرد. مطمئن شوید که روی سرور قابل نوشتن است.',
+ 'cannot_get_image_from_url' => 'نمی توان تصویر را از :url دریافت کرد',
+ 'cannot_create_thumbs' => 'سرور نمی تواند تصاویر کوچک ایجاد کند. لطفاً بررسی کنید که پسوند GD PHP را نصب کرده اید.',
+ 'server_upload_limit' => 'سرور اجازه آپلود با این حجم را نمی دهد. لطفا فایلی با حجم کمتر را امتحان کنید.',
+ 'server_post_limit' => 'سرور نمیتواند داده مقادیر ارائه شده داده را دریافت کند. با مقدار کمتر و فایل کوچکتر دوباره امتحان کنید.',
+ 'uploaded' => 'سرور اجازه آپلود در این اندازه را نمی دهد. لطفا اندازه فایل کوچکتر را امتحان کنید.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'هنگام آپلود تصویر خطایی روی داد',
+ 'image_upload_type_error' => 'نوع تصویر در حال آپلود نامعتبر است',
+ 'image_upload_replace_type' => 'جایگزینی فایل تصویری باید از یک نوع باشد',
+ 'image_upload_memory_limit' => 'به دلیل محدودیت منابع سامانه، بارگذاری فایل و/یا ایجاد تصاویر کاور (thumbnails) ناموفق بود.',
+ 'image_thumbnail_memory_limit' => 'به دلیل محدودیت منابع سیستم، تصاویر با اندازه گوناگون ایجاد نشدند.',
+ 'image_gallery_thumbnail_memory_limit' => 'به دلیل محدودیت منابع سیستم، تصاویر کوچک گالری ایجاد نشد.',
+ 'drawing_data_not_found' => 'داده های طرح قابل بارگذاری نیستند. ممکن است فایل طرح دیگر وجود نداشته باشد یا شما به آن دسترسی نداشته باشید.',
+
+ // Attachments
+ 'attachment_not_found' => 'پیوست یافت نشد',
+ 'attachment_upload_error' => 'هنگام آپلود فایل خطایی روی داد',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'پیش نویس ذخیره نشد. قبل از ذخیره این صفحه مطمئن شوید که به اینترنت متصل هستید',
+ 'page_draft_delete_fail' => 'حذف پیشنویس و همچنین بازآوری محتوای صفحه فعلی، ناموفق بود',
+ 'page_custom_home_deletion' => 'وقتی صفحه ای به عنوان صفحه اصلی تنظیم شده است، نمی توان آن را حذف کرد',
+
+ // Entities
+ 'entity_not_found' => 'موجودیت یافت نشد',
+ 'bookshelf_not_found' => 'قفسه پیدا نشد',
+ 'book_not_found' => 'کتاب پیدا نشد',
+ 'page_not_found' => 'صفحه یافت نشد',
+ 'chapter_not_found' => 'فصل پیدا نشد',
+ 'selected_book_not_found' => 'کتاب انتخابی یافت نشد',
+ 'selected_book_chapter_not_found' => 'کتاب یا فصل انتخابی یافت نشد',
+ 'guests_cannot_save_drafts' => 'مهمانان نمی توانند پیش نویس ها را ذخیره کنند',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'شما نمی توانید تنها ادمین را حذف کنید',
+ 'users_cannot_delete_guest' => 'شما نمی توانید کاربر مهمان را حذف کنید',
+ 'users_could_not_send_invite' => 'امکان ایجاد کاربر وجود ندارد؛ زیرا ارسال ایمیل دعوت با خطا مواجه شد.',
+
+ // Roles
+ 'role_cannot_be_edited' => 'این نقش قابل ویرایش نیست',
+ 'role_system_cannot_be_deleted' => 'این نقش یک نقش سیستمی است و قابل حذف نیست',
+ 'role_registration_default_cannot_delete' => 'این نقش در حالی که به عنوان نقش پیش فرض ثبت نام تنظیم شده است قابل حذف نیست',
+ 'role_cannot_remove_only_admin' => 'این کاربر تنها کاربری است که به نقش مدیر اختصاص داده شده است. قبل از تلاش برای حذف آن در اینجا، نقش مدیر را به کاربر دیگری اختصاص دهید.',
+
+ // Comments
+ 'comment_list' => 'هنگام واکشی نظرات خطایی روی داد.',
+ 'cannot_add_comment_to_draft' => 'شما نمی توانید نظراتی را به یک پیش نویس اضافه کنید.',
+ 'comment_add' => 'هنگام افزودن/بهروزرسانی نظر خطایی روی داد.',
+ 'comment_delete' => 'هنگام حذف نظر خطایی روی داد.',
+ 'empty_comment' => 'نمی توان یک نظر خالی اضافه کرد.',
+
+ // Error pages
+ '404_page_not_found' => 'صفحه یافت نشد',
+ 'sorry_page_not_found' => 'با عرض پوزش، صفحه مورد نظر شما یافت نشد.',
+ 'sorry_page_not_found_permission_warning' => 'اگر انتظار داشتید این صفحه وجود داشته باشد، ممکن است اجازه مشاهده آن را نداشته باشید.',
+ 'image_not_found' => 'تصویر پیدا نشد',
+ 'image_not_found_subtitle' => 'با عرض پوزش، فایل تصویری که به دنبال آن بودید یافت نشد.',
+ 'image_not_found_details' => 'اگر انتظار داشتید این تصویر وجود داشته باشد، ممکن است حذف شده باشد.',
+ 'return_home' => 'بازگشت به خانه',
+ 'error_occurred' => 'خطایی رخ داد',
+ 'app_down' => ':appName در حال حاضر قطع است',
+ 'back_soon' => 'به زودی پشتیبان خواهد شد.',
+
+ // Import
+ 'import_zip_cant_read' => 'امکان ایجاد کاربر وجود ندارد؛ زیرا ارسال ایمیل دعوت با خطا مواجه شد.',
+ 'import_zip_cant_decode_data' => 'محتوای data.json در فایل ZIP پیدا یا رمزگشایی نشد.',
+ 'import_zip_no_data' => 'دادههای فایل ZIP فاقد محتوای کتاب، فصل یا صفحه مورد انتظار است.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'اعتبارسنجی فایل ZIP واردشده با خطا مواجه شد:',
+ 'import_zip_failed_notification' => ' فایل ZIP وارد نشد.',
+ 'import_perms_books' => 'شما مجوز لازم برای ایجاد کتاب را ندارید.',
+ 'import_perms_chapters' => 'شما مجوز لازم برای ایجاد فصل را ندارید.',
+ 'import_perms_pages' => 'شما مجوز لازم برای ایجاد صفحه را ندارید.',
+ 'import_perms_images' => 'شما مجوز لازم برای ایجاد تصویر را ندارید.',
+ 'import_perms_attachments' => 'شما مجوز لازم برای ایجاد پیوست را ندارید.',
+
+ // API errors
+ 'api_no_authorization_found' => 'هیچ نشانه مجوزی در درخواست یافت نشد',
+ 'api_bad_authorization_format' => 'یک نشانه مجوز در این درخواست یافت شد اما قالب نادرست به نظر میرسید',
+ 'api_user_token_not_found' => 'هیچ نشانه API منطبقی برای کد مجوز ارائه شده یافت نشد',
+ 'api_incorrect_token_secret' => 'راز ارائه شده برای کد API استفاده شده نادرست است',
+ 'api_user_no_api_permission' => 'مالک نشانه API استفاده شده اجازه برقراری تماس های API را ندارد',
+ 'api_user_token_expired' => 'رمز مجوز استفاده شده منقضی شده است',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'خطا در هنگام ارسال ایمیل آزمایشی:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'URL با میزبان های SSR مجاز پیکربندی شده، مطابقت ندارد',
+];
diff --git a/lang/fa/notifications.php b/lang/fa/notifications.php
new file mode 100644
index 00000000000..d216b04fec6
--- /dev/null
+++ b/lang/fa/notifications.php
@@ -0,0 +1,29 @@
+ 'نظر جدید در صفحه: :pageName',
+ 'new_comment_intro' => 'یک کاربر در صفحه نظر ارایه کرده است :appName:',
+ 'new_page_subject' => 'صفحه جدید: :pageName',
+ 'new_page_intro' => 'یک صفحه جدید ایجاد شده است در :appName:',
+ 'updated_page_subject' => 'صفحه جدید: :pageName',
+ 'updated_page_intro' => 'یک صفحه جدید ایجاد شده است در :appName:',
+ 'updated_page_debounce' => 'برای جلوگیری از انبوه اعلانها، برای مدتی اعلان ویرایشهایی که توسط همان ویرایشگر در این صفحه انجام میشود، ارسال نخواهد شد.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'نام صفحه:',
+ 'detail_page_path' => 'نام میسر صفحه:',
+ 'detail_commenter' => 'نظر دهنده:',
+ 'detail_comment' => 'نظر:',
+ 'detail_created_by' => 'ایجاد شده توسط:',
+ 'detail_updated_by' => 'به روزرسانی شده توسط:',
+
+ 'action_view_comment' => 'مشاهده نظر',
+ 'action_view_page' => 'مشاهده صفحه',
+
+ 'footer_reason' => 'این اعلان برای شما ارسال شده است، زیرا پیوند (:link) فعالیتی از این نوع را برای این مورد پوشش میدهد.',
+ 'footer_reason_link' => 'تنظیمات اطلاعرسانی شما',
+];
diff --git a/lang/fa/pagination.php b/lang/fa/pagination.php
new file mode 100644
index 00000000000..22fb0b89e69
--- /dev/null
+++ b/lang/fa/pagination.php
@@ -0,0 +1,12 @@
+ '« قبلی',
+ 'next' => 'بعدی »',
+
+];
diff --git a/lang/fa/passwords.php b/lang/fa/passwords.php
new file mode 100644
index 00000000000..06b8f8b50d6
--- /dev/null
+++ b/lang/fa/passwords.php
@@ -0,0 +1,15 @@
+ 'گذرواژه باید حداقل هشت حرف و با تایید مطابقت داشته باشد.',
+ 'user' => "ما کاربری با این نشانی ایمیل نداریم.",
+ 'token' => 'مشخصهی بازگردانی رمز عبور معتبر نیست.',
+ 'sent' => 'لینک بازگردانی رمز عبور به ایمیل شما ارسال شد!',
+ 'reset' => 'رمز عبور شما بازگردانی شد!',
+
+];
diff --git a/lang/fa/preferences.php b/lang/fa/preferences.php
new file mode 100644
index 00000000000..00d277bdfd5
--- /dev/null
+++ b/lang/fa/preferences.php
@@ -0,0 +1,52 @@
+ 'حساب کاربری من',
+
+ 'shortcuts' => 'میانبرها',
+ 'shortcuts_interface' => 'تنظیمات کلیدهای میانبر رابط کاربری',
+ 'shortcuts_toggle_desc' => 'در اینجا می توانید میانبرهای سیستم را که برای پیمایش و ... استفاده می شود، فعال یا غیرفعال کنید.',
+ 'shortcuts_customize_desc' => 'می توانید هر یک از میانبرهای زیر را سفارشی کنید. کافی است پس از انتخاب ورودی برای میانبر، کلید ترکیبی مورد نظر خود را فشار دهید.',
+ 'shortcuts_toggle_label' => 'میانبرهای صفحه کلید فعال شد',
+ 'shortcuts_section_navigation' => 'ناوبری و پیمایش',
+ 'shortcuts_section_actions' => 'فعالیت/اقدامات مرسوم',
+ 'shortcuts_save' => 'ذخیره کلیدهای میانبر',
+ 'shortcuts_overlay_desc' => 'توجه: هنگامی که میانبرها فعال هستند، یک رابط کمکی با فشار دادن "؟" در دسترس است که میانبرهای موجود برای اقداماتی که در حال حاضر روی صفحه قابل مشاهده است را برجسته میکند.',
+ 'shortcuts_update_success' => 'تنظیمات میانبر به روز شده است!',
+ 'shortcuts_overview_desc' => 'مدیریت میانبرهای صفحه کلید برای پیمایش در رابط کاربری سیستم.',
+
+ 'notifications' => 'تنظیمات اطلاعرسانی',
+ 'notifications_desc' => 'تنظیمات اطلاعیههای ایمیلی هنگام انجام فعالیتهای خاص در سیستم.',
+ 'notifications_opt_own_page_changes' => 'در صورت تغییرات در صفحاتی که متعلق به من است، اطلاع بده',
+ 'notifications_opt_own_page_comments' => 'در صورت ثبت نظر در صفحاتی که متعلق به من است، اطلاع بده',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'پس از درج پاسخ به روی نظراتی که من ثبت کردهام، اطلاع بده',
+ 'notifications_save' => 'ذخیره تنظیمات',
+ 'notifications_update_success' => 'تنظیمات اعلانها به روز شده است!',
+ 'notifications_watched' => 'موارد مشاهده و رد شده',
+ 'notifications_watched_desc' => 'در زیر آیتمهایی وجود دارد که تنظیمات «نظارت» سفارشی بر آنها اعمال شده است. برای بهروزرسانی تنظیمات خود در مورد هر کدام از این آیتمها، روی آن کلیک کنید و سپس گزینهی «نظارت» را در نوار کناری پیدا کنید.',
+
+ 'auth' => 'دسترسی و امنیت',
+ 'auth_change_password' => 'تغییر گذرواژه',
+ 'auth_change_password_desc' => 'گذرواژهای که برای ورود به برنامه استفاده میشود، تنظیم کنید. این عبارت باید حداقل 8 کاراکتر باشد.',
+ 'auth_change_password_success' => 'رمز عبور به روز شد!',
+
+ 'profile' => 'جزئیات پروفایل',
+ 'profile_desc' => 'علاوه بر جزئیاتی که برای ارتباط و شخصیسازی سیستم استفاده میشود، جزییات حساب خود را که نشان دهنده شما برای سایر کاربران است، مدیریت کنید.',
+ 'profile_view_public' => 'مشاهده پروفایل عمومی',
+ 'profile_name_desc' => 'نام نمایشی خود را تنظیم کنید. این نام بسته به فعالیت شما و محتوای متعلق به شما، برای سایر کاربران سیستم قابل مشاهده است.',
+ 'profile_email_desc' => 'این ایمیل برای اعلانها و دسترسی به سیستم استفاده خواهد شد.',
+ 'profile_email_no_permission' => 'متأسفانه شما اجازه تغییر آدرس ایمیل خود را ندارید. برای تغییر این بخش با ادمین سیستم در ارتباط باشید.',
+ 'profile_avatar_desc' => 'تصویری را انتخاب کنید که برای نمایش حساب کاربری شما به دیگران در این سیستم استفاده شود. در حالت ایدهآل، این تصویر باید مربع بوده و در عرض و ارتفاع حدود 256 پیکسل باشد.',
+ 'profile_admin_options' => 'تنظیمات ادمین',
+ 'profile_admin_options_desc' => 'گزینههای اضافی سطح ادمین، در قسمت «تنظیمات > کاربران» یافت میشوند.',
+
+ 'delete_account' => 'حذف حساب کاربری',
+ 'delete_my_account' => 'حذف حساب کاربری من',
+ 'delete_my_account_desc' => 'با این کار حساب کاربری شما به طور کامل از سیستم حذف میشود. شما نمیتوانید این حساب را بازیابی کنید. محتوایی که ایجاد کرده اید، مانند صفحات ایجاد شده و تصاویر آپلود شده، باقی خواهند ماند.',
+ 'delete_my_account_warning' => 'آیا مطمئن هستید که میخواهید حساب کاربری خود را حذف کنید؟',
+];
diff --git a/lang/fa/settings.php b/lang/fa/settings.php
new file mode 100644
index 00000000000..2fa11511838
--- /dev/null
+++ b/lang/fa/settings.php
@@ -0,0 +1,374 @@
+ 'تنظیمات',
+ 'settings_save' => 'تنظیمات را ذخیره کن',
+ 'system_version' => 'نسخه سیستم',
+ 'categories' => 'دستهبندیها',
+
+ // App Settings
+ 'app_customization' => 'سفارشیسازی',
+ 'app_features_security' => 'ویژگیها و امنیت',
+ 'app_name' => 'نام نرمافزار',
+ 'app_name_desc' => 'این نام در هدر و در هر ایمیل ارسال شده توسط سیستم نشان داده شده است.',
+ 'app_name_header' => 'نمایش نام در هدر',
+ 'app_public_access' => 'دسترسی عمومی',
+ 'app_public_access_desc' => 'فعال کردن این گزینه به بازدیدکنندگانی که وارد سیستم نشدهاند اجازه میدهد تا به محتوای موجود در نمونه BookStack شما دسترسی داشته باشند.',
+ 'app_public_access_desc_guest' => 'دسترسی بازدیدکنندگان عمومی را می توان از طریق کاربر "مهمان" کنترل کرد.',
+ 'app_public_access_toggle' => 'اجازه دسترسی عمومی',
+ 'app_public_viewing' => 'مشاهده عمومی مجاز است؟',
+ 'app_secure_images' => 'آپلود تصویر با امنیت بالاتر',
+ 'app_secure_images_toggle' => 'آپلود تصویر با امنیت بالاتر',
+ 'app_secure_images_desc' => 'به دلایل عملکرد، همه تصاویر عمومی هستند. این گزینه یک رشته تصادفی و غیرقابل حدس زدن را در مقابل آدرس های تصویر اضافه می کند. برای جلوگیری از دسترسی آسان، اطمینان حاصل کنید که فهرست های دایرکتوری فعال نیستند.',
+ 'app_default_editor' => 'ویرایشگر پیش فرض صفحه',
+ 'app_default_editor_desc' => 'ویرایشگر پیش فرض در زمان ویرایش صفحات را انتخاب نمایید. این انتخاب می تواند جایگزین یک سطح صفحه که مجوز داده شده است، شود.',
+ 'app_custom_html' => 'محتوای اصلی HTML سفارشی',
+ 'app_custom_html_desc' => 'هر محتوای اضافه شده در اینجا در پایین بخش هر صفحه درج می شود. این برای تغییر سبک ها یا اضافه کردن کد تجزیه و تحلیل مفید است.',
+ 'app_custom_html_disabled_notice' => 'محتوای سر HTML سفارشی در این صفحه تنظیمات غیرفعال است تا اطمینان حاصل شود که هر گونه تغییر شکسته می تواند برگردانده شود.',
+ 'app_logo' => 'لوگوی برنامه',
+ 'app_logo_desc' => 'این مورد در نوار هدر برنامه و در میان سایر قسمتها استفاده میشود. این تصویر باید 86 پیکسل ارتفاع داشته باشد. تصاویر بزرگ، کوچک نمایش داده میشوند.',
+ 'app_icon' => 'آیکون برنامه',
+ 'app_icon_desc' => 'این آیکون برای تبهای مرورگر و نمادهای میانبر استفاده میشود. این مورد باید یک تصویر PNG مربعی ببه طول 256 پیکسل باشد.',
+ 'app_homepage' => 'صفحه اصلی برنامه',
+ 'app_homepage_desc' => 'به جای نمای پیشفرض، یک نمای را برای نمایش در صفحه اصلی انتخاب کنید. مجوزهای صفحه برای صفحات انتخابی نادیده گرفته می شود.',
+ 'app_homepage_select' => 'یک صفحه را انتخاب کنید',
+ 'app_footer_links' => 'پیوندهای پاورقی',
+ 'app_footer_links_desc' => 'پیوندهایی را برای نمایش در پاورقی سایت اضافه کنید. اینها در پایین اکثر صفحات نمایش داده می شوند، از جمله صفحاتی که نیازی به ورود به سیستم ندارند. می توانید از برچسب "trans::" برای استفاده از ترجمه های تعریف شده توسط سیستم استفاده کنید. به عنوان مثال: با استفاده از "trans::common.privacy_policy" متن ترجمه شده "خط مشی رازداری" و "trans::common.terms_of_service" متن ترجمه شده "شرایط خدمات" را ارائه می دهد.',
+ 'app_footer_links_label' => 'برچسب پیوند',
+ 'app_footer_links_url' => 'آدرس پیوند',
+ 'app_footer_links_add' => 'پیوند پاورقی را اضافه کنید',
+ 'app_disable_comments' => 'غیرفعال کردن نظرات',
+ 'app_disable_comments_toggle' => 'نظرات را غیرفعال کنید',
+ 'app_disable_comments_desc' => 'نظرات را در تمام صفحات برنامه غیرفعال می کند. نظرات موجود نشان داده نمی شوند.',
+
+ // Color settings
+ 'color_scheme' => 'ترکیب رنگی برنامه',
+ 'color_scheme_desc' => 'رنگهایی که در رابط کاربری نرمافزار استفاده می شوند را انتخاب کنید. رنگها را میتوان برای حالت روشن یا تیره به صورت جداگانه تنظیم کرد تا هم با تم مورد استفاده سازگار بوده و هم خوانا باشند.',
+ 'ui_colors_desc' => 'رنگ اصلی نرمافزار و رنگ پیش فرض پیوندها را انتخاب کنید. رنگ اصلی بیشتر برای بنر، کلیدها و عناصر تزیینی رابط کاربری استفاده می شوند. رنگ پیش فرض پیوند برای پیوندهای متنی و اکشن ها بکار میرود، هم در محتوای متنی و هم در رابط کاربری.',
+ 'app_color' => 'رنگ اصلی',
+ 'link_color' => 'رنگ پیش فرض پیوند',
+ 'content_colors_desc' => 'رنگهای عناصر سلسه مراتب صفحه را انتخاب کنید. پیشنهاد می شود رنگهایی انتخاب گردند که با رنگ پیش فرض دارای روشنی مشابه باشند، تا به خوانایی کمک شود.',
+ 'bookshelf_color' => 'رنگ قفسه',
+ 'book_color' => 'رنگ کتاب',
+ 'chapter_color' => 'رنگ فصل',
+ 'page_color' => 'رنگ صفحه',
+ 'page_draft_color' => 'رنگ پیش نویس صفحه',
+
+ // Registration Settings
+ 'reg_settings' => 'ثبت نام',
+ 'reg_enable' => 'فعال کردن ثبت نام',
+ 'reg_enable_toggle' => 'فعال کردن ثبت نام',
+ 'reg_enable_desc' => 'هنگامی که ثبت نام فعال باشد، کاربر می تواند خود را به عنوان کاربر برنامه ثبت نام کند. پس از ثبت نام به آنها یک نقش کاربر پیش فرض داده می شود.',
+ 'reg_default_role' => 'نقش کاربر پیش فرض پس از ثبت نام',
+ 'reg_enable_external_warning' => 'هنگامی که احراز هویت خارجی LDAP یا SAML فعال است، گزینه بالا نادیده گرفته می شود. در صورتی که احراز هویت، در برابر سیستم خارجی در حال استفاده، موفقیت آمیز باشد، حساب های کاربری برای اعضای غیر موجود به طور خودکار ایجاد می شود.',
+ 'reg_email_confirmation' => 'تایید ایمیل',
+ 'reg_email_confirmation_toggle' => 'نیاز به تایید ایمیل',
+ 'reg_confirm_email_desc' => 'در صورت استفاده از محدودیت دامنه، تایید ایمیل مورد نیاز است و این گزینه نادیده گرفته می شود.',
+ 'reg_confirm_restrict_domain' => 'محدودیت دامنه',
+ 'reg_confirm_restrict_domain_desc' => 'فهرستی از دامنههای ایمیل جدا شده با کاما را وارد کنید که میخواهید ثبت نام را محدود کنید. قبل از اینکه به کاربران اجازه تعامل با برنامه داده شود، ایمیلی برای تأیید آدرس آنها ارسال می شود. توجه داشته باشید که کاربران پس از ثبت نام موفق می توانند آدرس ایمیل خود را تغییر دهند.',
+ 'reg_confirm_restrict_domain_placeholder' => 'بدون محدودیت',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'قانون پیشفرض مرتبسازی را برای کتابهای جدید انتخاب کنید. تغییر قانون بر ترتیب کتابهای موجود تأثیری ندارد و میتواند برای هر کتاب بهصورت جداگانه تغییر یابد.',
+ 'sorting_rules' => 'قوانین مرتبسازی',
+ 'sorting_rules_desc' => 'اینها عملیات مرتبسازی از پیش تعریفشدهای هستند که میتوانید آنها را بر محتوای سیستم اعمال کنید.',
+ 'sort_rule_assigned_to_x_books' => 'اختصاص داده شده به :count کتاب',
+ 'sort_rule_create' => 'ایجاد قانون مرتبسازی',
+ 'sort_rule_edit' => 'ویرایش قانون مرتبسازی',
+ 'sort_rule_delete' => 'حذف قانون مرتبسازی',
+ 'sort_rule_delete_desc' => 'این قانون مرتبسازی را از سیستم حذف کنید. کتابهایی که از این شیوه مرتبسازی استفاده میکنند، به حالت مرتبسازی دستی بازخواهند گشت.',
+ 'sort_rule_delete_warn_books' => 'در حال حاضر این قانون مرتبسازی برای :count کتاب بهکار میرود. آیا مطمئن هستید که میخواهید آن را حذف کنید؟',
+ 'sort_rule_delete_warn_default' => 'این قانون مرتبسازی هماکنون به عنوان پیشفرض کتابها تعیین شده است. آیا مطمئن هستید که میخواهید آن را حذف کنید؟',
+ 'sort_rule_details' => 'جزئیات قانون مرتبسازی',
+ 'sort_rule_details_desc' => 'برای این قانون مرتبسازی یک نام انتخاب کنید. این نام هنگام انتخاب شیوه مرتبسازی در فهرستها نمایش داده خواهد شد.',
+ 'sort_rule_operations' => 'عملیات مرتبسازی',
+ 'sort_rule_operations_desc' => 'عملیات مرتبسازی را پیکربندی کنید. برای این منظور، آنها را در فهرست عملیاتِ در دسترس جابهجا کنید تا ترتیب اجرای آنها مشخص شود. هنگام استفاده، این عملیات بهترتیب از بالا به پایین اعمال خواهند شد. هر تغییری که در این بخش ایجاد کنید، پس از ذخیره، برای همه کتابهای اختصاصیافته اجرا میشود.',
+ 'sort_rule_available_operations' => 'عملیات موجود',
+ 'sort_rule_available_operations_empty' => 'عملیاتی باقی نمانده است',
+ 'sort_rule_configured_operations' => 'عملیات پیکربندیشده',
+ 'sort_rule_configured_operations_empty' => 'عملیات را از فهرست «عملیات موجود» حذف یا اضافه کنید',
+ 'sort_rule_op_asc' => '(صعودی)',
+ 'sort_rule_op_desc' => '(نزولی)',
+ 'sort_rule_op_name' => 'نام - الفبایی',
+ 'sort_rule_op_name_numeric' => 'نام - عددی',
+ 'sort_rule_op_created_date' => 'تاریخ ایجاد',
+ 'sort_rule_op_updated_date' => 'تاریخ بهروزرسانی',
+ 'sort_rule_op_chapters_first' => 'ابتدا فصلها',
+ 'sort_rule_op_chapters_last' => 'فصلها در آخر',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'نگهداری',
+ 'maint_image_cleanup' => 'پاکسازی تصاویر',
+ 'maint_image_cleanup_desc' => 'محتوای صفحه و بازبینی را اسکن میکند تا بررسی کند که کدام تصاویر و نقاشیها در حال حاضر استفاده میشوند و کدام تصاویر اضافی هستند. قبل از اجرای این کار، مطمئن شوید که یک پایگاه داده کامل و یک نسخه پشتیبان از تصویر ایجاد کرده اید.',
+ 'maint_delete_images_only_in_revisions' => 'همچنین تصاویری را که فقط در ویرایش های صفحه قدیمی وجود دارند حذف کنید',
+ 'maint_image_cleanup_run' => 'پاکسازی را اجرا کنید',
+ 'maint_image_cleanup_warning' => ':count تصاویر بالقوه استفاده نشده پیدا شد. آیا مطمئن هستید که می خواهید این تصاویر را حذف کنید؟',
+ 'maint_image_cleanup_success' => ':count تصویر بالقوه استفاده نشده پیدا و حذف شد!',
+ 'maint_image_cleanup_nothing_found' => 'هیچ تصویر استفاده نشده ای یافت نشد، چیزی حذف نشد!',
+ 'maint_send_test_email' => 'یک ایمیل آزمایشی ارسال کنید',
+ 'maint_send_test_email_desc' => 'این یک ایمیل آزمایشی به آدرس ایمیل شما مشخص شده در نمایه شما ارسال می کند.',
+ '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' => 'سطل بازیافت را باز کنید',
+ 'maint_regen_references' => 'تولید مجدد رفرنس ها',
+ 'maint_regen_references_desc' => 'این عمل اندیس رفرنس های میان اقلامی موجود در دیتابیس را بازسازی خواهد کرد. چنین کاری معمولا به صورت خودکار انجام میشود، ولی این عمل برای اندیس گذاری محتویات قدیمی یا محتویایی که از طرق غیرمعمول اضافه شده اند مفید است.',
+ 'maint_regen_references_success' => 'اندیس رفرنس ها بازسازی شدند!',
+ 'maint_timeout_command_note' => 'توجه: این عملیات زمان بر خواهد بود، که ممکن در برخی محیطهای وب باعث از دسترس خارج شدن شوند. به عنوان گزینه جایگزین، این عمل را میتوان با استفاده از یک دستور ترمینال انجام داد.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'سطل زباله',
+ 'recycle_bin_desc' => 'در اینجا می توانید مواردی را که حذف شده اند بازیابی کنید یا حذف دائمی آنها را از سیستم انتخاب کنید. این لیست برخلاف لیستهای فعالیت مشابه در سیستمی که فیلترهای مجوز اعمال میشوند، فیلتر نشده است.',
+ 'recycle_bin_deleted_item' => 'مورد حذف شده',
+ 'recycle_bin_deleted_parent' => 'والد',
+ '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_restore_parent' => 'بازیابی والد',
+ 'recycle_bin_destroy_notification' => ':count تعداد از کل اقلام از سطل بازیافت حذف شده.',
+ 'recycle_bin_restore_notification' => ':count تعداد از کل اقلام از سطل بازیافت بازیابی شده.',
+
+ // Audit Log
+ 'audit' => 'گزارش حسابرسی',
+ 'audit_desc' => 'این گزارش حسابرسی لیستی از فعالیت های ردیابی شده در سیستم را نمایش می دهد. این لیست برخلاف لیستهای فعالیت مشابه در سیستمی که فیلترهای مجوز اعمال میشوند، فیلتر نشده است.',
+ '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_ip' => 'آدرس IP',
+ 'audit_table_date' => 'تاریخهای فعالیت',
+ 'audit_date_from' => 'محدوده تاریخ از',
+ 'audit_date_to' => 'محدوده تاریخ تا',
+
+ // Role Settings
+ 'roles' => 'نقشها',
+ 'role_user_roles' => 'نقشهای کاربر',
+ 'roles_index_desc' => 'نقشها برای گروهبندی کاربران و ارائه مجوز سیستم به اعضای آنها استفاده میشوند. هنگامی که یک کاربر عضو چندین نقش باشد، امتیازات اعطا شده روی هم قرار میگیرند و کاربر تمام مجوزها را به ارث میبرد.',
+ 'roles_x_users_assigned' => ':count کاربر اختصاص داده شده|:count کاربر اختصاص داده شده',
+ 'roles_x_permissions_provided' => ':count مجوز|:count مجوز',
+ 'roles_assigned_users' => 'کاربران اختصاص داده شده',
+ 'roles_permissions_provided' => 'دسترسی های موجود',
+ 'role_create' => 'نقش جدید ایجاد کنید',
+ 'role_delete' => 'حذف نقش',
+ 'role_delete_confirm' => 'با این کار نقش با نام \':roleName\' حذف می شود.',
+ 'role_delete_users_assigned' => 'این نقش دارای :userCount کاربرانی است که به آن اختصاص داده شده است. اگر می خواهید کاربران را از این نقش مهاجرت کنید، نقش جدیدی را در زیر انتخاب کنید.',
+ 'role_delete_no_migration' => "کاربران را منتقل نکنید",
+ 'role_delete_sure' => 'آیا مطمئنید که می خواهید این نقش را حذف کنید؟',
+ 'role_edit' => 'ویرایش نقش',
+ 'role_details' => 'جزئیات نقش',
+ 'role_name' => 'اسم نقش',
+ 'role_desc' => 'شرح کوتاه نقش',
+ 'role_mfa_enforced' => 'به احراز هویت چند عاملی نیاز دارد',
+ 'role_external_auth_id' => 'شناسه های تأیید هویت خارجی',
+ 'role_system' => 'مجوزهای سیستم',
+ 'role_manage_users' => 'مدیریت کاربران',
+ 'role_manage_roles' => 'نقش ها و مجوزهای نقش را مدیریت کنید',
+ 'role_manage_entity_permissions' => 'تمام مجوزهای کتاب، فصل و صفحه را مدیریت کنید',
+ 'role_manage_own_entity_permissions' => 'مجوزها را در کتاب، فصل و صفحات خود مدیریت کنید',
+ 'role_manage_page_templates' => 'مدیریت قالب های صفحه',
+ 'role_access_api' => 'دسترسی به API سیستم',
+ 'role_manage_settings' => 'تنظیمات برنامه را مدیریت کنید',
+ 'role_export_content' => 'صادرات محتوا',
+ 'role_import_content' => 'وارد کردن محتوا',
+ 'role_editor_change' => 'تغییر ویرایشگر صفحه',
+ 'role_notifications' => 'دریافت و مدیریت اعلانها',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'مجوزهای دارایی',
+ 'roles_system_warning' => 'توجه داشته باشید که دسترسی به هر یک از سه مجوز فوق میتواند به کاربر اجازه دهد تا امتیازات خود یا امتیازات دیگران را در سیستم تغییر دهد. فقط نقش هایی را با این مجوزها به کاربران مورد اعتماد اختصاص دهید.',
+ 'role_asset_desc' => 'این مجوزها دسترسی پیشفرض به داراییهای درون سیستم را کنترل میکنند. مجوزهای مربوط به کتابها، فصلها و صفحات این مجوزها را لغو میکنند.',
+ 'role_asset_admins' => 'به ادمینها بهطور خودکار به همه محتوا دسترسی داده میشود، اما این گزینهها ممکن است گزینههای UI را نشان داده یا پنهان کنند.',
+ 'role_asset_image_view_note' => 'این مربوط به مرئی بودن در بخش مدیر تصاویر است. دسترسی عملی به تصاویر آپلود شده بستگی به گزینه ذخیرهسازی تصویر سیستم دارد.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'همه',
+ 'role_own' => 'صاحب',
+ 'role_controlled_by_asset' => 'توسط دارایی که در آن آپلود می شود کنترل می شود',
+ 'role_save' => 'ذخیره نقش',
+ 'role_users' => 'کاربران در این نقش',
+ 'role_users_none' => 'در حال حاضر هیچ کاربری به این نقش اختصاص داده نشده است',
+
+ // Users
+ 'users' => 'کاربران',
+ 'users_index_desc' => 'ساخت و مدیریت حساب های کاربری درون سیستم. حساب های کاربری برای ورود به سیستم و تخصیص محتوا و فعالیت ها به کار می روند. اجازه های دسترسی عموما بر مبنای نقش کاربر هستند، ولی مالکیت محتوای کاربر (در کنار سایر عوامل) روی اجازه و دسترسی تاثیر گذارند.',
+ 'user_profile' => 'پرونده کاربر',
+ 'users_add_new' => 'افزودن کاربر جدید',
+ 'users_search' => 'جستجوی کاربران',
+ 'users_latest_activity' => 'آخرین فعالیت',
+ 'users_details' => 'جزئیات کاربر',
+ 'users_details_desc' => 'یک نام نمایشی و یک آدرس ایمیل برای این کاربر تنظیم کنید. آدرس ایمیل برای ورود به برنامه استفاده خواهد شد.',
+ 'users_details_desc_no_email' => 'یک نام نمایشی برای این کاربر تنظیم کنید تا دیگران بتوانند آنها را تشخیص دهند.',
+ 'users_role' => 'نقش های کاربر',
+ 'users_role_desc' => 'انتخاب کنید که این کاربر به کدام نقش ها اختصاص داده شود. اگر یک کاربر به چندین نقش اختصاص داده شود، مجوزهای آن نقشها روی هم قرار میگیرند و تمام تواناییهای نقشهای اختصاص داده شده را دریافت خواهند کرد.',
+ 'users_password' => 'رمز عبور كاربر',
+ 'users_password_desc' => 'رمز عبوری را که برای ورود به برنامه استفاده می شود تنظیم کنید. این باید حداقل 8 کاراکتر باشد.',
+ 'users_send_invite_text' => 'می توانید انتخاب کنید که برای این کاربر یک ایمیل دعوت نامه ارسال شود که به آنها امکان می دهد رمز عبور خود را تعیین کنند در غیر این صورت می توانید رمز عبور خود را تعیین کنید.',
+ 'users_send_invite_option' => 'ارسال ایمیل دعوت کاربر',
+ 'users_external_auth_id' => 'شناسه احراز هویت خارجی',
+ 'users_external_auth_id_desc' => 'هنگامی که یک سامانه احراز هویت خارجی مورد استفاده است (مانند SAML2، OIDC یا LDAP)، شناسه ای که کاربر BookStack را به حساب سامانه احراز هویت مرتبط میکند بدینگونه میباشد. اگر از احراز هویت پیش فرض ایمیلی استفاده میکنید، میتوانید این را در نظر نگیرید.',
+ 'users_password_warning' => 'فقط در صورتی که مایل به تغییر رمز عبور این کاربر هستید، موارد زیر را پر کنید.',
+ 'users_system_public' => 'این کاربر نماینده هر کاربر مهمانی است که از نمونه شما بازدید می کند. نمی توان از آن برای ورود استفاده کرد اما به طور خودکار اختصاص داده می شود.',
+ 'users_delete' => 'حذف کاربر',
+ 'users_delete_named' => 'حذف :userName',
+ 'users_delete_warning' => 'با این کار این کاربر با نام \':userName\' به طور کامل از سیستم حذف می شود.',
+ 'users_delete_confirm' => 'آیا مطمئن هستید که می خواهید این کاربر را حذف کنید؟',
+ 'users_migrate_ownership' => 'انتقال مالکیت',
+ 'users_migrate_ownership_desc' => 'اگر میخواهید کاربر دیگری مالک همه مواردی باشد که در حال حاضر متعلق به این کاربر است، کاربری را در اینجا انتخاب کنید.',
+ 'users_none_selected' => 'هیچ کاربری انتخاب نشد',
+ 'users_edit' => 'ویرایش کاربر',
+ 'users_edit_profile' => 'ویرایش پروفایل',
+ 'users_avatar' => 'آواتار کاربر',
+ 'users_avatar_desc' => 'تصویری را برای نشان دادن این کاربر انتخاب کنید. این باید تقریباً 256 پیکسل مربع باشد.',
+ 'users_preferred_language' => 'زبان ترجیحی',
+ 'users_preferred_language_desc' => 'این گزینه زبان مورد استفاده برای رابط کاربری برنامه را تغییر می دهد. این روی محتوای ایجاد شده توسط کاربر تأثیری نخواهد داشت.',
+ 'users_social_accounts' => 'حساب های اجتماعی',
+ 'users_social_accounts_desc' => 'مشاهده وضعیت حسابهای اجتماعی متصل به این کاربر. حسابهای اجتماعی میتوانند به عنوان تکمیلی به سیستم اصلی احراز هویت برای دسترسی به سیستم استفاده شوند.',
+ 'users_social_accounts_info' => 'در اینجا میتوانید حسابهای دیگر خود را برای ورود سریعتر و آسانتر متصل کنید. قطع ارتباط حساب در اینجا، دسترسی مجاز قبلی را لغو نمی کند. دسترسی را از تنظیمات نمایه خود در حساب اجتماعی متصل لغو کنید.',
+ 'users_social_connect' => 'اتصال حساب کاربری',
+ 'users_social_disconnect' => 'قطع حساب',
+ 'users_social_status_connected' => 'ارتباط برقرار شد',
+ 'users_social_status_disconnected' => 'قطع اتصال',
+ 'users_social_connected' => 'حساب :socialAccount با موفقیت به نمایه شما پیوست شد.',
+ 'users_social_disconnected' => 'حساب :socialAccount با موفقیت از نمایه شما قطع شد.',
+ 'users_api_tokens' => 'توکنهای API',
+ 'users_api_tokens_desc' => 'توکن های دسترسی مورد استفاده در BookStack REST API را بسازید و مدیریت کنید. اجازههای مربوط به API توسط کاربری که صاحب آنها است مدیریت میشوند.',
+ 'users_api_tokens_none' => 'هیچ نشانه API برای این کاربر ایجاد نشده است',
+ 'users_api_tokens_create' => 'ایجاد توکن',
+ 'users_api_tokens_expires' => 'منقضی شده ها',
+ 'users_api_tokens_docs' => 'مستندات API',
+ 'users_mfa' => 'احراز هویت چند عاملی',
+ 'users_mfa_desc' => 'تنظیم احراز هویت چند مرحله ای یک لایه امنیتی دیگر به حساب شما اضافه میکند.',
+ 'users_mfa_x_methods' => ':count روش پیکربندی شده است|:count روش های پیکربندی شده',
+ 'users_mfa_configure' => 'روش پیکربندی',
+
+ // API Tokens
+ 'user_api_token_create' => 'ایجاد توکن API',
+ 'user_api_token_name' => 'نام',
+ 'user_api_token_name_desc' => 'توکن خود را به عنوان یادآوری هدف مورد نظر در آینده، نامی خوانا بدهید.',
+ 'user_api_token_expiry' => 'تاریخ انقضا',
+ 'user_api_token_expiry_desc' => 'تاریخی را تعیین کنید که در آن این توکن منقضی شود. پس از این تاریخ، درخواستهایی که با استفاده از این رمز انجام میشوند دیگر کار نمیکنند. خالی گذاشتن این فیلد باعث انقضای 100 سال آینده می شود.',
+ 'user_api_token_create_secret_message' => 'بلافاصله پس از ایجاد این توکن یک "شناسه رمز" و "رمز رمز" تولید و نمایش داده می شود. راز فقط یک بار نشان داده میشود، بنابراین قبل از ادامه، حتماً مقدار را در جایی امن و مطمئن کپی کنید.',
+ 'user_api_token' => 'توکن API',
+ 'user_api_token_id' => 'شناسه توکن',
+ 'user_api_token_id_desc' => 'این یک شناسه غیرقابل ویرایش است که برای این نشانه ایجاد شده است که باید در درخواستهای API ارائه شود.',
+ 'user_api_token_secret' => 'رمز توکن',
+ 'user_api_token_secret_desc' => 'این یک راز ایجاد شده توسط سیستم برای این نشانه است که باید در درخواست های API ارائه شود. این فقط یک بار نمایش داده می شود، بنابراین این مقدار را در جایی امن و مطمئن کپی کنید.',
+ 'user_api_token_created' => 'توکن ایجاد شد :timeAgo',
+ 'user_api_token_updated' => 'توکن به روز شد :timeAgo',
+ 'user_api_token_delete' => 'توکن را حذف کنید',
+ 'user_api_token_delete_warning' => 'با این کار این نشانه API با نام \':tokenName\' به طور کامل از سیستم حذف می شود.',
+ 'user_api_token_delete_confirm' => 'آیا مطمئن هستید که می خواهید این نشانه API را حذف کنید؟',
+
+ // Webhooks
+ 'webhooks' => 'وبهوکها',
+ 'webhooks_index_desc' => 'وب هوک ها روشی برای ارسال داده به آدرس های اینترنتی خارج از سیستم، بر اساس اتفاقات خاصی درون سیستم هستند که امکان یکپارچه سازی مبتنی بر وقایع را با سایر سیستم ها، مثل سیستم پیام رسانی یا اطلاع رسانی، فراهم می کنند.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'ایجاد وب هوک جدید',
+ 'webhooks_none_created' => 'هنوز هیچ وب هوکی ایجاد نشده است.',
+ 'webhooks_edit' => 'ویرایش وب هوک',
+ 'webhooks_save' => 'ذخیره وب هوک',
+ 'webhooks_details' => 'جزئیات وب هوک',
+ 'webhooks_details_desc' => 'یک نام کاربر پسند و یک نقطه پایانی POST به عنوان مکانی برای ارسال داده های وب هوک ارائه دهید.',
+ 'webhooks_events' => 'رویدادهای وب هوک',
+ 'webhooks_events_desc' => 'تمام رویدادهایی را که باید باعث فراخوانی این وب هوک شوند، انتخاب کنید.',
+ 'webhooks_events_warning' => 'به خاطر داشته باشید که این رویدادها برای همه رویدادهای انتخابی فعال خواهند شد، حتی اگر مجوزهای سفارشی اعمال شوند. مطمئن شوید که استفاده از این وب هوک محتوای محرمانه را فاش نمی کند.',
+ 'webhooks_events_all' => 'تمام رویدادهای سیستم',
+ 'webhooks_name' => 'نام وب هوک',
+ 'webhooks_timeout' => 'مهلت درخواست وب هوک (ثانیه)',
+ 'webhooks_endpoint' => 'نقطه پایانی وب هوک',
+ 'webhooks_active' => 'وب هوک فعال',
+ 'webhook_events_table_header' => 'رویدادها',
+ 'webhooks_delete' => 'حذف وب هوک',
+ 'webhooks_delete_warning' => 'با این کار این وب هوک با نام \':webhookName\' به طور کامل از سیستم حذف می شود.',
+ 'webhooks_delete_confirm' => 'آیا مطمئن هستید که می خواهید این وب هوک را حذف کنید؟',
+ 'webhooks_format_example' => 'نمونه قالب وب هوک',
+ 'webhooks_format_example_desc' => 'دادههای وب هوک بهعنوان یک درخواست POST به نقطه پایانی پیکربندیشده بهعنوان JSON با فرمت زیر ارسال میشوند. ویژگی های "related_item" و "url" اختیاری هستند و به نوع رویداد راهاندازی شده بستگی دارد.',
+ 'webhooks_status' => 'وضعیت وب هوک',
+ 'webhooks_last_called' => 'آخرین تماس:',
+ 'webhooks_last_errored' => 'آخرین خطا:',
+ 'webhooks_last_error_message' => 'آخرین پیغام خطا:',
+
+ // Licensing
+ 'licenses' => 'مجوزها',
+ 'licenses_desc' => 'این صفحه اطلاعات مجوزهای بوک استک به همراه پروژهها و کتابخانههای مورد استفاده با آن را به نمایش میگذارد. بسیاری از پروژههای فهرست شده ممکن است فقط در بحث توسعه به کار گرفته شده باشند.',
+ 'licenses_bookstack' => 'مجوزهای بوک استک',
+ 'licenses_php' => 'مجوزهای کتابخانه PHP',
+ 'licenses_js' => 'مجوزهای کتابخانه جاوا اسکریپت',
+ 'licenses_other' => 'سایر مجوزها',
+ 'license_details' => 'جزئیات مجوز',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/fa/validation.php b/lang/fa/validation.php
new file mode 100644
index 00000000000..93c7dcb6669
--- /dev/null
+++ b/lang/fa/validation.php
@@ -0,0 +1,123 @@
+ ':attribute باید پذیرفته شده باشد.',
+ 'active_url' => 'آدرس :attribute معتبر نیست.',
+ 'after' => ':attribute باید تاریخی بعد از :date باشد.',
+ 'alpha' => ':attribute باید فقط حروف الفبا باشد.',
+ 'alpha_dash' => ':attribute باید فقط حروف الفبا، اعداد، خط تیره و زیرخط باشد.',
+ 'alpha_num' => ':attribute باید فقط حروف الفبا و اعداد باشد.',
+ 'array' => ':attribute باید آرایه باشد.',
+ 'backup_codes' => 'کد ارائه شده معتبر نیست یا قبلا استفاده شده است.',
+ 'before' => ':attribute باید تاریخی قبل از :date باشد.',
+ 'between' => [
+ 'numeric' => ':attribute باید بین :min و :max باشد.',
+ 'file' => ':attribute باید بین :min و :max کیلوبایت باشد.',
+ 'string' => ':attribute باید بین :min و :max کاراکتر باشد.',
+ 'array' => ':attribute باید بین :min و :max آیتم باشد.',
+ ],
+ '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',
+ 'file' => ':attribute باید به عنوان یک فایل معتبر شناخته شود.',
+ 'filled' => ':attribute باید مقدار داشته باشد.',
+ 'gt' => [
+ 'numeric' => ':attribute باید بزرگتر از :value باشد.',
+ 'file' => ':attribute باید بزرگتر از :value کیلوبایت باشد.',
+ 'string' => ':attribute باید بیشتر از :value کاراکتر داشته باشد.',
+ 'array' => ':attribute باید بیشتر از :value آیتم داشته باشد.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute باید بزرگتر یا مساوی :value باشد.',
+ 'file' => ':attribute باید بزرگتر یا مساوی :value کیلوبایت باشد.',
+ 'string' => ':attribute باید بیشتر یا مساوی :value کاراکتر داشته باشد.',
+ 'array' => ':attribute باید بیشتر یا مساوی :value آیتم داشته باشد.',
+ ],
+ 'exists' => ':attribute انتخاب شده، معتبر نیست.',
+ 'image' => ':attribute باید یک تصویر معتبر باشد.',
+ 'image_extension' => ':attribute باید یک تصویر با فرمت معتبر باشد.',
+ 'in' => ':attribute انتخاب شده، معتبر نیست.',
+ 'integer' => ':attribute باید عدد صحیح باشد.',
+ 'ip' => ':attribute باید آدرس IP معتبر باشد.',
+ 'ipv4' => ':attribute باید یک آدرس معتبر از نوع IPv4 باشد.',
+ 'ipv6' => ':attribute باید یک آدرس معتبر از نوع IPv6 باشد.',
+ 'json' => ':attribute باید یک رشته از نوع JSON باشد.',
+ 'lt' => [
+ 'numeric' => ':attribute باید کوچکتر از :value باشد.',
+ 'file' => ':attribute باید کوچکتر از :value کیلوبایت باشد.',
+ 'string' => ':attribute باید کمتر از :value کاراکتر داشته باشد.',
+ 'array' => ':attribute باید کمتر از :value آیتم داشته باشد.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute باید کوچکتر یا مساوی :value باشد.',
+ 'file' => ':attribute باید کوچکتر یا مساوی :value کیلوبایت باشد.',
+ 'string' => ':attribute باید کمتر یا مساوی :value کاراکتر داشته باشد.',
+ 'array' => ':attribute باید کمتر یا مساوی :value آیتم داشته باشد.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute نباید بزرگتر از :max باشد.',
+ 'file' => ':attribute نباید بزرگتر از :max کیلوبایت باشد.',
+ 'string' => ':attribute نباید بیشتر از :max کاراکتر داشته باشد.',
+ 'array' => ':attribute نباید بیشتر از :max آیتم داشته باشد.',
+ ],
+ 'mimes' => 'فرمتهای معتبر فایل عبارتند از: :values.',
+ 'min' => [
+ 'numeric' => ':attribute نباید کوچکتر از :min باشد.',
+ 'file' => ':attribute نباید کوچکتر از :min کیلوبایت باشد.',
+ 'string' => ':attribute نباید کمتر از :min کاراکتر داشته باشد.',
+ 'array' => ':attribute نباید کمتر از :min آیتم داشته باشد.',
+ ],
+ 'not_in' => ':attribute انتخاب شده، معتبر نیست.',
+ 'not_regex' => 'فرمت :attribute معتبر نیست.',
+ 'numeric' => ':attribute باید عدد یا رشتهای از اعداد باشد.',
+ 'regex' => 'فرمت :attribute معتبر نیست.',
+ 'required' => ':attribute الزامی است.',
+ 'required_if' => 'هنگامی که :other برابر با :value است، فیلد :attribute الزامی است.',
+ 'required_with' => 'در صورت وجود فیلد :values، فیلد :attribute نیز الزامی است.',
+ 'required_with_all' => 'در صورت وجود فیلدهای :values، فیلد :attribute نیز الزامی است.',
+ 'required_without' => 'در صورت عدم وجود فیلد :values، فیلد :attribute الزامی است.',
+ 'required_without_all' => 'در صورت عدم وجود هر یک از فیلدهای :values، فیلد :attribute الزامی است.',
+ 'same' => ':attribute و :other باید همانند هم باشند.',
+ 'safe_url' => ':attribute معتبر نمیباشد.',
+ 'size' => [
+ 'numeric' => ':attribute باید برابر با :size باشد.',
+ 'file' => ':attribute باید برابر با :size کیلوبایت باشد.',
+ 'string' => ':attribute باید برابر با :size کاراکتر باشد.',
+ 'array' => ':attribute باید شامل :size آیتم باشد.',
+ ],
+ 'string' => 'فیلد :attribute باید متن باشد.',
+ 'timezone' => 'فیلد :attribute باید یک منطقه زمانی معتبر باشد.',
+ 'totp' => 'کد ارائه شده معتبر نیست یا منقضی شده است.',
+ 'unique' => ':attribute قبلا انتخاب شده است.',
+ 'url' => ':attribute معتبر نمیباشد.',
+ 'uploaded' => 'بارگذاری فایل :attribute موفقیت آمیز نبود.',
+
+ 'zip_file' => 'ویژگی :attribute باید به یک فایل درون پرونده فشرده شده اشاره کند.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'ویژگی :attribute باید به فایلی با نوع :validTypes اشاره کند، اما نوع یافتشده :foundType است.',
+ 'zip_model_expected' => 'سیستم در این بخش انتظار دریافت یک شیء دادهای را داشت، اما «:type» دریافت گردید',
+ 'zip_unique' => 'برای هر نوع شیء در فایل ZIP، مقدار ویژگی :attribute باید یکتا و بدون تکرار باشد.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'تایید کلمه عبور اجباری می باشد',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/fi/activities.php b/lang/fi/activities.php
new file mode 100644
index 00000000000..a5ee14906ef
--- /dev/null
+++ b/lang/fi/activities.php
@@ -0,0 +1,140 @@
+ 'loi sivun',
+ 'page_create_notification' => 'Sivu luotiin onnistuneesti',
+ 'page_update' => 'päivitti sivun',
+ 'page_update_notification' => 'Sivu päivitettiin onnistuneesti',
+ 'page_delete' => 'poisti sivun',
+ 'page_delete_notification' => 'Sivu poistettiin onnistuneesti',
+ 'page_restore' => 'palautti sivun',
+ 'page_restore_notification' => 'Sivu palautettiin onnistuneesti',
+ 'page_move' => 'siirsi sivun',
+ 'page_move_notification' => 'Sivu siirrettiin onnistuneesti',
+
+ // Chapters
+ 'chapter_create' => 'loi luvun',
+ 'chapter_create_notification' => 'Luku luotiin onnistuneesti',
+ 'chapter_update' => 'päivitti luvun',
+ 'chapter_update_notification' => 'Luku päivitettiin onnistuneesti',
+ 'chapter_delete' => 'poisti luvun',
+ 'chapter_delete_notification' => 'Sivu poistettiin onnistuneesti',
+ 'chapter_move' => 'siirsi luvun',
+ 'chapter_move_notification' => 'Sivu siirrettiin onnistuneesti',
+
+ // Books
+ 'book_create' => 'loi kirjan',
+ 'book_create_notification' => 'Kirja luotiin onnistuneesti',
+ 'book_create_from_chapter' => 'muunsi luvun kirjaksi',
+ 'book_create_from_chapter_notification' => 'Luku muunnettiin onnistuneesti kirjaksi',
+ 'book_update' => 'päivitti kirjan',
+ 'book_update_notification' => 'Kirja päivitettiin onnistuneesti',
+ 'book_delete' => 'poisti kirjan',
+ 'book_delete_notification' => 'Kirja poistettiin onnistuneesti',
+ 'book_sort' => 'järjesti kirjan',
+ 'book_sort_notification' => 'Kirja järjestettiin uudelleen onnistuneesti',
+
+ // Bookshelves
+ 'bookshelf_create' => 'loi hyllyn',
+ 'bookshelf_create_notification' => 'Hylly luotiin onnistuneesti',
+ 'bookshelf_create_from_book' => 'muunsi kirjan hyllyksi',
+ 'bookshelf_create_from_book_notification' => 'Kirja muunnettiin onnistuneesti hyllyksi',
+ 'bookshelf_update' => 'päivitti hyllyn',
+ 'bookshelf_update_notification' => 'Hylly päivitettiin onnistuneesti',
+ 'bookshelf_delete' => 'poisti hyllyn',
+ 'bookshelf_delete_notification' => 'Hylly poistettiin onnistuneesti',
+
+ // Revisions
+ 'revision_restore' => 'palautti version',
+ 'revision_delete' => 'poisti version',
+ 'revision_delete_notification' => 'Versio poistettiin onnistuneesti',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" on lisätty suosikkeihisi',
+ 'favourite_remove_notification' => '":name" on poistettu suosikeistasi',
+
+ // Watching
+ 'watch_update_level_notification' => 'Seurannan asetukset päivitetty onnistuneesti',
+
+ // Auth
+ 'auth_login' => 'kirjautui sisään',
+ 'auth_register' => 'rekisteröityi uudeksi käyttäjäksi',
+ 'auth_password_reset_request' => 'pyysi käyttäjän salasanan palautusta',
+ 'auth_password_reset_update' => 'palautti käyttäjän salasana',
+ 'mfa_setup_method' => 'määritti monivaiheisen tunnistaumisen menetelmän',
+ 'mfa_setup_method_notification' => 'Monivaiheisen tunnistautumisen menetelmän määrittäminen onnistui',
+ 'mfa_remove_method' => 'poisti monivaiheisen tunnistautumisen menetelmän',
+ 'mfa_remove_method_notification' => 'Monivaiheisen tunnistautumisen menetelmä poistettiin onnistuneesti',
+
+ // Settings
+ 'settings_update' => 'päivitti asetukset',
+ 'settings_update_notification' => 'Asetukset päivitettiin onnistuneesti',
+ 'maintenance_action_run' => 'suoritti huoltotoimenpiteen',
+
+ // Webhooks
+ 'webhook_create' => 'loi toimintokutsun',
+ 'webhook_create_notification' => 'Toimintokutsu luotiin onnistuneesti',
+ 'webhook_update' => 'päivitti toimintokutsun',
+ 'webhook_update_notification' => 'Toimintokutsu päivitettiin onnistuneesti',
+ 'webhook_delete' => 'poisti toimintokutsun',
+ 'webhook_delete_notification' => 'Toimintokutsu poistettiin onnistuneesti',
+
+ // Imports
+ 'import_create' => 'luotu tuonti',
+ 'import_create_notification' => 'Tuontitiedosto ladattiin onnistuneesti',
+ 'import_run' => 'päivitetty tuonti',
+ 'import_run_notification' => 'Sisällön tuonti onnistui',
+ 'import_delete' => 'poistettu tuonti',
+ 'import_delete_notification' => 'Tuontitiedosto poistettiin onnistuneesti',
+
+ // Users
+ 'user_create' => 'loi käyttäjän',
+ 'user_create_notification' => 'Käyttäjä luotiin onnistuneesti',
+ 'user_update' => 'päivitti käyttäjän',
+ 'user_update_notification' => 'Käyttäjä päivitettiin onnistuneesti',
+ 'user_delete' => 'poisti käyttäjän',
+ 'user_delete_notification' => 'Käyttäjä poistettiin onnistuneesti',
+
+ // API Tokens
+ 'api_token_create' => 'loi API-tunnisteen',
+ 'api_token_create_notification' => 'API-tunniste luotiin onnistuneesti',
+ 'api_token_update' => 'päivitti API-tunnisteen',
+ 'api_token_update_notification' => 'API-tunniste päivitettiin onnistuneesti',
+ 'api_token_delete' => 'poisti API-tunnisteen',
+ 'api_token_delete_notification' => 'API-tunniste poistettiin onnistuneesti',
+
+ // Roles
+ 'role_create' => 'loi roolin',
+ 'role_create_notification' => 'Rooli luotiin onnistuneesti',
+ 'role_update' => 'päivitti roolin',
+ 'role_update_notification' => 'Rooli päivitettiin onnistuneesti',
+ 'role_delete' => 'poisti roolin',
+ 'role_delete_notification' => 'Rooli poistettiin onnistuneesti',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'tyhjensi roskakorin',
+ 'recycle_bin_restore' => 'palautti roskakorista',
+ 'recycle_bin_destroy' => 'poisti roskakorista',
+
+ // Comments
+ 'commented_on' => 'kommentoi',
+ 'comment_create' => 'lisäsi kommentin',
+ 'comment_update' => 'päivitti kommentin',
+ 'comment_delete' => 'poisti kommentin',
+
+ // Sort Rules
+ 'sort_rule_create' => 'luotu lajittelusääntö',
+ 'sort_rule_create_notification' => 'Lajittelusääntö luotiin onnistuneesti',
+ 'sort_rule_update' => 'päivitetty lajittelusääntö',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'poistettu lajittelusääntö',
+ 'sort_rule_delete_notification' => 'Lajittelusääntö poistettiin onnistuneesti',
+
+ // Other
+ 'permissions_update' => 'päivitti käyttöoikeudet',
+];
diff --git a/lang/fi/auth.php b/lang/fi/auth.php
new file mode 100644
index 00000000000..580c8679726
--- /dev/null
+++ b/lang/fi/auth.php
@@ -0,0 +1,117 @@
+ 'Annettuja käyttäjätietoja ei löydy.',
+ 'throttle' => 'Liikaa kirjautumisyrityksiä. Yritä uudelleen :seconds sekunnin päästä.',
+
+ // Login & Register
+ 'sign_up' => 'Rekisteröidy',
+ 'log_in' => 'Kirjaudu sisään',
+ 'log_in_with' => 'Kirjaudu sisään palvelulla :socialDriver',
+ 'sign_up_with' => 'Rekisteröidy palvelulla :socialDriver',
+ 'logout' => 'Kirjaudu ulos',
+
+ 'name' => 'Nimi',
+ 'username' => 'Käyttäjätunnus',
+ 'email' => 'Sähköposti',
+ 'password' => 'Salasana',
+ 'password_confirm' => 'Vahvista salasana',
+ 'password_hint' => 'Tulee olla vähintään 8 merkkiä',
+ 'forgot_password' => 'Unohditko salasanan?',
+ 'remember_me' => 'Muista minut',
+ 'ldap_email_hint' => 'Ole hyvä ja anna käyttäjätilin sähköpostiosoite.',
+ 'create_account' => 'Luo käyttäjätili',
+ 'already_have_account' => 'Onko sinulla jo käyttäjätili?',
+ 'dont_have_account' => 'Eikö sinulla ole käyttäjätiliä?',
+ 'social_login' => 'Kirjaudu sosiaalisen median käyttäjätilillä',
+ 'social_registration' => 'Rekisteröidy sosiaalisen median käyttäjätilillä',
+ 'social_registration_text' => 'Rekisteröidy ja kirjaudu sisään käyttämällä toista palvelua.',
+
+ 'register_thanks' => 'Kiitos rekisteröitymisestä!',
+ 'register_confirm' => 'Tarkista sähköpostisi ja paina vahvistuspainiketta päästäksesi sovellukseen :appName.',
+ 'registrations_disabled' => 'Rekisteröityminen on tällä hetkellä pois käytöstä',
+ 'registration_email_domain_invalid' => 'Tämän sähköpostiosoitteen verkkotunnuksella ei ole pääsyä tähän sovellukseen',
+ 'register_success' => 'Kiitos liittymisestä! Olet nyt rekisteröitynyt ja kirjautunut sisään.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Kirjautumisyritys',
+ 'auto_init_starting_desc' => 'Otamme yhteyttä tunnistautumisjärjestelmääsi aloittaaksemme kirjautumisprosessin. Jos 5 sekunnin jälkeen ei tapahdu mitään, voit yrittää klikata alla olevaa linkkiä.',
+ 'auto_init_start_link' => 'Jatka tunnistautumisen avulla',
+
+ // Password Reset
+ 'reset_password' => 'Palauta salasana',
+ 'reset_password_send_instructions' => 'Syötä sähköpostiosoitteesi alla olevaan kenttään, niin sinulle lähetetään sähköpostiviesti, jossa on salasanan palautuslinkki.',
+ 'reset_password_send_button' => 'Lähetä palautuslinkki',
+ 'reset_password_sent' => 'Salasanan palautuslinkki lähetetään osoitteeseen :email, jos kyseinen sähköpostiosoite löytyy järjestelmästä.',
+ 'reset_password_success' => 'Salasanasi on onnistuneesti palautettu.',
+ 'email_reset_subject' => 'Palauta salasanasi sivustolle :appName',
+ 'email_reset_text' => 'Saat tämän sähköpostiviestin, koska saimme käyttäjätiliäsi koskevan salasanan palautuspyynnön.',
+ 'email_reset_not_requested' => 'Jos et ole pyytänyt salasanan palauttamista, mitään toimenpiteitä ei tarvita.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Vahvista sähköpostisi sovelluksessa :appName',
+ 'email_confirm_greeting' => 'Kiitos liittymisestä sovellukseen :appName!',
+ 'email_confirm_text' => 'Vahvista sähköpostiosoitteesi klikkaamalla alla olevaa painiketta:',
+ 'email_confirm_action' => 'Vahvista sähköpostiosoite',
+ 'email_confirm_send_error' => 'Sähköpostivahvistusta vaaditaan, mutta järjestelmä ei pystynyt lähettämään sähköpostia. Ota yhteyttä ylläpitäjään varmistaaksesi, että sähköpostiasetukset on määritetty oikein.',
+ 'email_confirm_success' => 'Sähköpostisi on vahvistettu! Sinun pitäisi nyt pystyä kirjautumaan sisään tällä sähköpostiosoitteella.',
+ 'email_confirm_resent' => 'Vahvistussähköposti on lähetetty uudelleen, tarkista saapuneet sähköpostisi.',
+ 'email_confirm_thanks' => 'Kiitos vahvistuksesta!',
+ 'email_confirm_thanks_desc' => 'Odota hetki, kun vahvistuksesi käsitellään. Jos sinua ei ohjata uudelleen 3 sekunnin kuluttua, paina alla olevaa "Jatka"-linkkiä.',
+
+ 'email_not_confirmed' => 'Sähköpostiosoitetta ei ole vahvistettu',
+ 'email_not_confirmed_text' => 'Sähköpostiosoitettasi ei ole vielä vahvistettu.',
+ 'email_not_confirmed_click_link' => 'Klikkaa rekisteröitymisen jälkeen saapuneessa sähköpostissa olevaa vahvistuslinkkiä.',
+ 'email_not_confirmed_resend' => 'Jos et löydä sähköpostia, voit lähettää sen uudelleen alla olevalla lomakkeella.',
+ 'email_not_confirmed_resend_button' => 'Lähetä vahvistusviesti uudelleen',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Sinut on kutsuttu liittymään sivustoon :appName!',
+ 'user_invite_email_greeting' => 'Sinulle on luotu käyttäjätili sivustolla :appName.',
+ 'user_invite_email_text' => 'Klikkaa alla olevaa painiketta asettaaksesi tilin salasanan ja saadaksesi pääsyn:',
+ 'user_invite_email_action' => 'Aseta käyttäjätilin salasana',
+ 'user_invite_page_welcome' => 'Tervetuloa sivustolle :appName!',
+ 'user_invite_page_text' => 'Viimeistelläksesi käyttäjätilisi ja saadaksesi pääsyn sinun on asetettava salasana, jolla kirjaudut jatkossa sivustolle :appName.',
+ 'user_invite_page_confirm_button' => 'Vahvista salasana',
+ 'user_invite_success_login' => 'Salasana asetettu, sinun pitäisi nyt pystyä kirjautumaan sivustolle :appName käyttämällä antamaasi salasanaa!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Määritä monivaiheinen tunnistautuminen',
+ 'mfa_setup_desc' => 'Määritä monivaiheinen tunnistautuminen käyttäjätilisi turvallisuuden parantamiseksi.',
+ 'mfa_setup_configured' => 'Määritetty',
+ 'mfa_setup_reconfigure' => 'Uudelleenmäärittele',
+ 'mfa_setup_remove_confirmation' => 'Oletko varma, että haluat poistaa tämän monivaiheisen tunnistautumisen menetelmän?',
+ 'mfa_setup_action' => 'Asetukset',
+ 'mfa_backup_codes_usage_limit_warning' => 'Sinulla on alle 5 varmistuskoodia jäljellä. Luo ja tallenna uusi sarja ennen kuin koodit loppuvat, jotta käyttäjätilisi ei lukitu.',
+ 'mfa_option_totp_title' => 'Mobiilisovellus',
+ 'mfa_option_totp_desc' => 'Jos haluat käyttää monivaiheista tunnistautumista, tarvitset mobiilisovelluksen, joka tukee TOTP:tä, kuten Google Authenticator, Authy tai Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Varmistuskoodit',
+ 'mfa_option_backup_codes_desc' => 'Generates a set of one-time-use backup codes which you\'ll enter on login to verify your identity. Make sure to store these in a safe & secure place.',
+ 'mfa_gen_confirm_and_enable' => 'Vahvista ja ota käyttöön',
+ 'mfa_gen_backup_codes_title' => 'Varmistuskoodien asetukset',
+ 'mfa_gen_backup_codes_desc' => 'Säilytä alla oleva luettelo koodeista turvallisessa paikassa. Kun käytät järjestelmää, voit käyttää yhtä koodeista toisena tunnistautumistapana.',
+ 'mfa_gen_backup_codes_download' => 'Lataa koodit',
+ 'mfa_gen_backup_codes_usage_warning' => 'Jokainen koodi voidaan käyttää vain kerran',
+ 'mfa_gen_totp_title' => 'Mobiilisovelluksen asetukset',
+ 'mfa_gen_totp_desc' => 'Jos haluat käyttää monivaiheista tunnistautumista, tarvitset mobiilisovelluksen, joka tukee TOTP: tä, kuten Google Authenticator, Authy tai Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Skannaa alla oleva QR-koodi haluamallasi todennussovelluksella päästäksesi alkuun.',
+ 'mfa_gen_totp_verify_setup' => 'Vahvista asetukset',
+ 'mfa_gen_totp_verify_setup_desc' => 'Vahvista, että kaikki toimii syöttämällä tunnistautumissovelluksessa luotu koodi alla olevaan kenttään:',
+ 'mfa_gen_totp_provide_code_here' => 'Anna sovelluksen luoma koodi',
+ 'mfa_verify_access' => 'Vahvista pääsy',
+ 'mfa_verify_access_desc' => 'Käyttäjätilisi vaatii kirjautumiseen monivaiheisen tunnistautumisen. Vahvista kirjautuminen jollakin määrittelemälläsi menetelmällä jatkaaksesi.',
+ 'mfa_verify_no_methods' => 'Ei määriteltyjä Menetelmiä',
+ 'mfa_verify_no_methods_desc' => 'Käyttäjätilillesi ei löytynyt monivaiheisen tunnistautumisen menetelmiä. Kirjautumiseen vaaditaan vähintään yksi menetelmä.',
+ 'mfa_verify_use_totp' => 'Vahvista käyttämällä mobiilisovellusta',
+ 'mfa_verify_use_backup_codes' => 'Vahvista käyttämällä varmistuskoodia',
+ 'mfa_verify_backup_code' => 'Varmistuskoodi',
+ 'mfa_verify_backup_code_desc' => 'Syötä yksi jäljellä olevista varmistukoodeistasi:',
+ 'mfa_verify_backup_code_enter_here' => 'Syötä varmistuskoodi',
+ 'mfa_verify_totp_desc' => 'Anna mobiilisovelluksella luotu koodi alle:',
+ 'mfa_setup_login_notification' => 'Monivaiheisen tunnistautumisen menetelmä määritetty. Kirjaudu nyt uudelleen käyttämällä määritettyä menetelmää.',
+];
diff --git a/lang/fi/common.php b/lang/fi/common.php
new file mode 100644
index 00000000000..e05f40f44e6
--- /dev/null
+++ b/lang/fi/common.php
@@ -0,0 +1,115 @@
+ 'Peruuta',
+ 'close' => 'Sulje',
+ 'confirm' => 'Vahvista',
+ 'back' => 'Takaisin',
+ 'save' => 'Tallenna',
+ 'continue' => 'Jatka',
+ 'select' => 'Valitse',
+ 'toggle_all' => 'Vaihda kaikki',
+ 'more' => 'Lisää',
+
+ // Form Labels
+ 'name' => 'Nimi',
+ 'description' => 'Kuvaus',
+ 'role' => 'Rooli',
+ 'cover_image' => 'Kansikuva',
+ 'cover_image_description' => 'Kuvan tulee olla noin 440x250 pikselin kokoinen. Kuvan koko ja rajaus voi vaihdella käyttötilanteesta riippuen.',
+
+ // Actions
+ 'actions' => 'Toiminnot',
+ 'view' => 'Näytä',
+ 'view_all' => 'Näytä kaikki',
+ 'new' => 'Uusi',
+ 'create' => 'Luo',
+ 'update' => 'Päivitä',
+ 'edit' => 'Muokkaa',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Järjestä',
+ 'move' => 'Siirrä',
+ 'copy' => 'Kopioi',
+ 'reply' => 'Vastaa',
+ 'delete' => 'Poista',
+ 'delete_confirm' => 'Vahvista poistaminen',
+ 'search' => 'Hae',
+ 'search_clear' => 'Tyhjennä haku',
+ 'reset' => 'Palauta',
+ 'remove' => 'Poista',
+ 'add' => 'Lisää',
+ 'configure' => 'Määritä',
+ 'manage' => 'Hallinnoi',
+ 'fullscreen' => 'Koko näyttö',
+ 'favourite' => 'Suosikki',
+ 'unfavourite' => 'Poista suosikki',
+ 'next' => 'Seuraava',
+ 'previous' => 'Edellinen',
+ 'filter_active' => 'Aktiivinen suodatin:',
+ 'filter_clear' => 'Tyhjennä suodatin',
+ 'download' => 'Lataa',
+ 'open_in_tab' => 'Avaa välilehdessä',
+ 'open' => 'Avaa',
+
+ // Sort Options
+ 'sort_options' => 'Järjestyksen asetukset',
+ 'sort_direction_toggle' => 'Järjestyssuunnan vaihto',
+ 'sort_ascending' => 'Järjestä nousevasti',
+ 'sort_descending' => 'Järjestä laskevasti',
+ 'sort_name' => 'Nimi',
+ 'sort_default' => 'Oletus',
+ 'sort_created_at' => 'Luontipäiväys',
+ 'sort_updated_at' => 'Päivityksen päiväys',
+
+ // Misc
+ 'deleted_user' => 'Poistettu käyttäjä',
+ 'no_activity' => 'Ei näytettävää toimintaa',
+ 'no_items' => 'Ei kohteita saatavilla',
+ 'back_to_top' => 'Palaa alkuun',
+ 'skip_to_main_content' => 'Siirry pääsisältöön',
+ 'toggle_details' => 'Näytä tiedot',
+ 'toggle_thumbnails' => 'Näytä pienoiskuvat',
+ 'details' => 'Tiedot',
+ 'grid_view' => 'Ruudukkonäkymä',
+ 'list_view' => 'Luettelonäkymä',
+ 'default' => 'Oletus',
+ 'breadcrumb' => 'Navigointipolku',
+ 'status' => 'Tila',
+ 'status_active' => 'Aktiivinen',
+ 'status_inactive' => 'Ei aktiivinen',
+ 'never' => 'Ei koskaan',
+ 'none' => 'Ei mitään',
+
+ // Header
+ 'homepage' => 'Kotisivu',
+ 'header_menu_expand' => 'Laajenna päävalikko',
+ 'profile_menu' => 'Profiilivalikko',
+ 'view_profile' => 'Näytä profiili',
+ 'edit_profile' => 'Muokkaa profiilia',
+ 'dark_mode' => 'Tumma tila',
+ 'light_mode' => 'Vaalea tila',
+ 'global_search' => 'Yleishaku',
+
+ // Layout tabs
+ 'tab_info' => 'Info',
+ 'tab_info_label' => 'Välilehti: Näytä toissijaiset tiedot',
+ 'tab_content' => 'Sisältö',
+ 'tab_content_label' => 'Välilehti: Näytä ensisijainen sisältö',
+
+ // Email Content
+ 'email_action_help' => 'Jos sinulla on ongelmia ":actionText"-painikkeen klikkaamisessa, kopioi ja liitä alla oleva URL-osoite selaimeesi:',
+ 'email_rights' => 'Kaikki oikeudet pidätetään',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Tietosuojaseloste',
+ 'terms_of_service' => 'Palvelun käyttöehdot',
+
+ // OpenSearch
+ 'opensearch_description' => 'Search :appName',
+];
diff --git a/lang/fi/components.php b/lang/fi/components.php
new file mode 100644
index 00000000000..5703181586a
--- /dev/null
+++ b/lang/fi/components.php
@@ -0,0 +1,46 @@
+ 'Kuvan valinta',
+ 'image_list' => 'Kuvalista',
+ 'image_details' => 'Kuvan tiedot',
+ 'image_upload' => 'Lataa kuva',
+ 'image_intro' => 'Täällä voit valita ja hallita kuvia, jotka on aiemmin ladattu järjestelmään.',
+ 'image_intro_upload' => 'Lataa uusi kuva vetämällä kuvatiedosto tähän ikkunaan tai käyttämällä yllä olevaa "Lataa kuva" -painiketta.',
+ 'image_all' => 'Kaikki',
+ 'image_all_title' => 'Näytä kaikki kuvat',
+ 'image_book_title' => 'Näytä tähän kirjaan ladatut kuvat',
+ 'image_page_title' => 'Näytä tähän sivuun ladatut kuvat',
+ 'image_search_hint' => 'Hae kuvan nimellä',
+ 'image_uploaded' => 'Ladattu :uploadedDate',
+ 'image_uploaded_by' => 'Lataaja :userName',
+ 'image_uploaded_to' => 'Ladattu sivulle :pageLink',
+ 'image_updated' => 'Päivitetty :updateDate',
+ 'image_load_more' => 'Lataa lisää',
+ 'image_image_name' => 'Kuvan nimi',
+ 'image_delete_used' => 'Tätä kuvaa käytetään alla mainituilla sivuilla.',
+ 'image_delete_confirm_text' => 'Haluatko varmasti poistaa tämän kuvan?',
+ 'image_select_image' => 'Valitse kuva',
+ 'image_dropzone' => 'Pudota kuvat tai lataa ne klikkaamalla tästä',
+ 'image_dropzone_drop' => 'Pudota kuvat tähän ladattavaksi',
+ 'images_deleted' => 'Kuvat poistettu',
+ 'image_preview' => 'Kuvan esikatselu',
+ 'image_upload_success' => 'Kuva ladattiin onnistuneesti',
+ 'image_update_success' => 'Kuvan tiedot päivitettiin onnistuneesti',
+ 'image_delete_success' => 'Kuva poistettiin onnistuneesti',
+ 'image_replace' => 'Vaihda kuva',
+ 'image_replace_success' => 'Kuvatiedosto päivitettiin onnistuneesti',
+ 'image_rebuild_thumbs' => 'Luo kokovaihtoehdot uudelleen',
+ 'image_rebuild_thumbs_success' => 'Kuvan kokovaihtoehdot luotiin onnistuneesti uudelleen!',
+
+ // Code Editor
+ 'code_editor' => 'Muokkaa koodia',
+ 'code_language' => 'Koodin kieli',
+ 'code_content' => 'Koodin sisältö',
+ 'code_session_history' => 'Istuntohistoria',
+ 'code_save' => 'Tallenna koodi',
+];
diff --git a/lang/fi/editor.php b/lang/fi/editor.php
new file mode 100644
index 00000000000..8b72b4e5e3e
--- /dev/null
+++ b/lang/fi/editor.php
@@ -0,0 +1,182 @@
+ 'Yleinen',
+ 'advanced' => 'Lisäasetukset',
+ 'none' => 'Ei mitään',
+ 'cancel' => 'Peruuta',
+ 'save' => 'Tallenna',
+ 'close' => 'Sulje',
+ 'apply' => 'Apply',
+ 'undo' => 'Kumoa',
+ 'redo' => 'Tee uudelleen',
+ 'left' => 'Vasen',
+ 'center' => 'Keskellä',
+ 'right' => 'Oikea',
+ 'top' => 'Ylhäällä',
+ 'middle' => 'Keskellä',
+ 'bottom' => 'Alhaalla',
+ 'width' => 'Leveys',
+ 'height' => 'Korkeus',
+ 'More' => 'Enemmän',
+ 'select' => 'Valitse...',
+
+ // Toolbar
+ 'formats' => 'Formaatit',
+ 'header_large' => 'Iso otsikko',
+ 'header_medium' => 'Keskikokoinen otsikko',
+ 'header_small' => 'Pieni otsikko',
+ 'header_tiny' => 'Hyvin pieni otsikko',
+ 'paragraph' => 'Kappale',
+ 'blockquote' => 'Sitaatti',
+ 'inline_code' => 'Koodi',
+ 'callouts' => 'Huomautukset',
+ 'callout_information' => 'Tietoja',
+ 'callout_success' => 'Onnistuminen',
+ 'callout_warning' => 'Varoitus',
+ 'callout_danger' => 'Vaara',
+ 'bold' => 'Lihavointi',
+ 'italic' => 'Kursivointi',
+ 'underline' => 'Alleviivaus',
+ 'strikethrough' => 'Yliviivaus',
+ 'superscript' => 'Yläindeksi',
+ 'subscript' => 'Alaindeksi',
+ 'text_color' => 'Tekstin väri',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Mukautettu väri',
+ 'remove_color' => 'Poista väri',
+ 'background_color' => 'Taustaväri',
+ 'align_left' => 'Tasaa vasemmalle',
+ 'align_center' => 'Tasaa keskelle',
+ 'align_right' => 'Tasaa oikealle',
+ 'align_justify' => 'Tasaa molemmat reunat',
+ 'list_bullet' => 'Lajittelematon lista',
+ 'list_numbered' => 'Numeroitu lista',
+ 'list_task' => 'Tehtävälista',
+ 'indent_increase' => 'Lisää sisennystä',
+ 'indent_decrease' => 'Vähennä sisennystä',
+ 'table' => 'Taulukko',
+ 'insert_image' => 'Lisää kuva',
+ 'insert_image_title' => 'Lisää/muokkaa kuvaa',
+ 'insert_link' => 'Lisää/muokkaa linkkiä',
+ 'insert_link_title' => 'Lisää/muokkaa linkkiä',
+ 'insert_horizontal_line' => 'Lisää vaakaviiva',
+ 'insert_code_block' => 'Lisää koodilohko',
+ 'edit_code_block' => 'Muokkaa koodilohkoa',
+ 'insert_drawing' => 'Lisää/muokkaa piirrosta',
+ 'drawing_manager' => 'Piirroksen hallinta',
+ 'insert_media' => 'Lisää/muokkaa mediaa',
+ 'insert_media_title' => 'Lisää/muokkaa mediaa',
+ 'clear_formatting' => 'Poista muotoilu',
+ 'source_code' => 'Lähdekoodi',
+ 'source_code_title' => 'Lähdekoodi',
+ 'fullscreen' => 'Koko näyttö',
+ 'image_options' => 'Kuvan asetukset',
+
+ // Tables
+ 'table_properties' => 'Taulukon ominaisuudet',
+ 'table_properties_title' => 'Taulukon ominaisuudet',
+ 'delete_table' => 'Poista taulukko',
+ 'table_clear_formatting' => 'Poista taulukon muotoilut',
+ 'resize_to_contents' => 'Sovita koko sisältöön',
+ 'row_header' => 'Rivin otsikko',
+ 'insert_row_before' => 'Lisää rivi ennen',
+ 'insert_row_after' => 'Lisää rivi jälkeen',
+ 'delete_row' => 'Poista rivi',
+ 'insert_column_before' => 'Liitä sarake ennen',
+ 'insert_column_after' => 'Lisää sarake jälkeen',
+ 'delete_column' => 'Poista sarake',
+ 'table_cell' => 'Solu',
+ 'table_row' => 'Rivi',
+ 'table_column' => 'Sarake',
+ 'cell_properties' => 'Solun ominaisuudet',
+ 'cell_properties_title' => 'Solun ominaisuudet',
+ 'cell_type' => 'Solun tyyppi',
+ 'cell_type_cell' => 'Solu',
+ 'cell_scope' => 'Laajuus',
+ 'cell_type_header' => 'Otsikkosolu',
+ 'merge_cells' => 'Yhdistä solut',
+ 'split_cell' => 'Jaa solu',
+ 'table_row_group' => 'Riviryhmä',
+ 'table_column_group' => 'Sarakeryhmä',
+ 'horizontal_align' => 'Vaaka-asettelu',
+ 'vertical_align' => 'Pystyasettelu',
+ 'border_width' => 'Reunuksen leveys',
+ 'border_style' => 'Reunuksen tyyli',
+ 'border_color' => 'Reunuksen väri',
+ 'row_properties' => 'Rivin ominaisuudet',
+ 'row_properties_title' => 'Rivin ominaisuudet',
+ 'cut_row' => 'Leikkaa rivi',
+ 'copy_row' => 'Kopioi rivi',
+ 'paste_row_before' => 'Liitä rivi ennen',
+ 'paste_row_after' => 'Liitä rivi jälkeen',
+ 'row_type' => 'Rivin tyyppi',
+ 'row_type_header' => 'Ylätunniste',
+ 'row_type_body' => 'Sisältö',
+ 'row_type_footer' => 'Alatunniste',
+ 'alignment' => 'Tasaus',
+ 'cut_column' => 'Leikkaa sarake',
+ 'copy_column' => 'Kopioi sarake',
+ 'paste_column_before' => 'Liitä sarake ennen',
+ 'paste_column_after' => 'Liitä sarake jälkeen',
+ 'cell_padding' => 'Solun reunus',
+ 'cell_spacing' => 'Solun välistys',
+ 'caption' => 'Otsikko',
+ 'show_caption' => 'Näytä otsikko',
+ 'constrain' => 'Rajaa mittasuhteet',
+ 'cell_border_solid' => 'Kiinteä',
+ 'cell_border_dotted' => 'Pisteviiva',
+ 'cell_border_dashed' => 'Katkoviiva',
+ 'cell_border_double' => 'Kaksinkertainen viiva',
+ 'cell_border_groove' => 'Ura',
+ 'cell_border_ridge' => 'Harjanne',
+ 'cell_border_inset' => 'Sisenevä',
+ 'cell_border_outset' => 'Ulkoneva',
+ 'cell_border_none' => 'Ei mitään',
+ 'cell_border_hidden' => 'Piilotettu',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Lähde',
+ 'alt_desc' => 'Vaihtoehtoinen kuvaus',
+ 'embed' => 'Upota',
+ 'paste_embed' => 'Liitä upotuskoodisi alle:',
+ 'url' => 'URL-osoite',
+ 'text_to_display' => 'Näytettävä teksti',
+ 'title' => 'Otsikko',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Avaa linkki',
+ 'open_link_in' => 'Avaa linkki...',
+ 'open_link_current' => 'Nykyinen ikkuna',
+ 'open_link_new' => 'Uusi ikkuna',
+ 'remove_link' => 'Poista linkki',
+ 'insert_collapsible' => 'Lisää kokoontaitettava lohko',
+ 'collapsible_unwrap' => 'Poista ympäröivä lohko',
+ 'edit_label' => 'Muokkaa nimikettä',
+ 'toggle_open_closed' => 'Auki/kiinni',
+ 'collapsible_edit' => 'Muokkaa kokoontaitettavaa lohkoa',
+ 'toggle_label' => 'Näytä nimike',
+
+ // About view
+ 'about' => 'Tietoja editorista',
+ 'about_title' => 'Tietoja WYSIWYG-editorista',
+ 'editor_license' => 'Editorin lisenssi ja tekijänoikeus',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'Tämä editori on rakennettu käyttäen sovellusta :tinyLink, joka on MIT-lisenssin alainen.',
+ 'editor_tiny_license_link' => 'TinyMCE-editorin tekijänoikeus- ja lisenssitiedot löytyvät täältä.',
+ 'save_continue' => 'Tallenna sivu ja jatka',
+ 'callouts_cycle' => '(Pidä painettuna valitaksesi tyyppien välillä)',
+ 'link_selector' => 'Linkki sisältöön',
+ 'shortcuts' => 'Pikanäppäimet',
+ 'shortcut' => 'Pikanäppäin',
+ 'shortcuts_intro' => 'Editorissa on saatavilla seuraavat pikanäppäimet:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Kuvaus',
+];
diff --git a/lang/fi/entities.php b/lang/fi/entities.php
new file mode 100644
index 00000000000..c64621f0d12
--- /dev/null
+++ b/lang/fi/entities.php
@@ -0,0 +1,476 @@
+ 'Viimeksi luodut',
+ 'recently_created_pages' => 'Viimeksi luodut sivut',
+ 'recently_updated_pages' => 'Viimeksi päivitetyt sivut',
+ 'recently_created_chapters' => 'Viimeksi luodut luvut',
+ 'recently_created_books' => 'Viimeksi luodut kirjat',
+ 'recently_created_shelves' => 'Viimeksi luodut hyllyt',
+ 'recently_update' => 'Viimeksi päivitetyt',
+ 'recently_viewed' => 'Viimeksi katsotut',
+ 'recent_activity' => 'Viimeaikainen toiminta',
+ 'create_now' => 'Luo uusi',
+ 'revisions' => 'Versiot',
+ 'meta_revision' => 'Versio #:revisionCount',
+ 'meta_created' => 'Luotu :timeLength',
+ 'meta_created_name' => 'Luotu :timeLength käyttäjän :user toimesta',
+ 'meta_updated' => 'Päivitetty :timeLength',
+ 'meta_updated_name' => 'Päivitetty :timeLength käyttäjän :user toimesta',
+ 'meta_owned_name' => 'Omistaja :user',
+ 'meta_reference_count' => 'Viittaa :count kohteeseen|Viittaa :count kohteeseen',
+ 'entity_select' => 'Kohteen valinta',
+ 'entity_select_lack_permission' => 'Sinulla ei ole tarvittavia oikeuksia tämän kohteen valitsemiseen',
+ 'images' => 'Kuvat',
+ 'my_recent_drafts' => 'Viimeisimmät luonnokseni',
+ 'my_recently_viewed' => 'Omat viimeksi katsotut',
+ 'my_most_viewed_favourites' => 'Omat katsotuimmat suosikit',
+ 'my_favourites' => 'Omat suosikit',
+ 'no_pages_viewed' => 'Et ole katsonut yhtään sivua',
+ 'no_pages_recently_created' => 'Yhtään sivua ei ole luotu äskettäin',
+ 'no_pages_recently_updated' => 'Yhtään sivua ei ole päivitetty äskettäin',
+ 'export' => 'Vie',
+ 'export_html' => 'HTML-tiedosto',
+ 'export_pdf' => 'PDF-tiedosto',
+ 'export_text' => 'Tekstitiedosto',
+ 'export_md' => 'Markdown-tiedosto',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Käyttöoikeudet',
+ 'permissions_desc' => 'Määritä tässä käyttöoikeudet ohittaaksesi käyttäjäroolien antamat oletusoikeudet.',
+ 'permissions_book_cascade' => 'Kirjoille määritetyt käyttöoikeudet siirtyvät automaattisesti lukuihin ja -sivuihin, ellei niille ole määritelty omia käyttöoikeuksia.',
+ 'permissions_chapter_cascade' => 'Luvuille määritetyt käyttöoikeudet siirtyvät automaattisesti sivuille, ellei niille ole määritelty omia käyttöoikeuksia.',
+ 'permissions_save' => 'Tallenna käyttöoikeudet',
+ 'permissions_owner' => 'Omistaja',
+ 'permissions_role_everyone_else' => 'Kaikki muut',
+ 'permissions_role_everyone_else_desc' => 'Aseta käyttöoikeudet kaikille rooleille, joita ei ole erikseen ohitettu.',
+ 'permissions_role_override' => 'Ohita roolin käyttöoikeudet',
+ 'permissions_inherit_defaults' => 'Peritään oletusarvot',
+
+ // Search
+ 'search_results' => 'Hakutulokset',
+ 'search_total_results_found' => 'löytyi :count osuma|löytyi :count osumaa',
+ 'search_clear' => 'Tyhjennä haku',
+ 'search_no_pages' => 'Haulla ei löytynyt yhtään sivua',
+ 'search_for_term' => 'Hae sanaa :term',
+ 'search_more' => 'Lisää tuloksia',
+ 'search_advanced' => 'Tarkennettu haku',
+ 'search_terms' => 'Hakusanat',
+ 'search_content_type' => 'Sisältötyyppi',
+ 'search_exact_matches' => 'Täsmälliset vastineet',
+ 'search_tags' => 'Tunnisteen haut',
+ 'search_options' => 'Valinnat',
+ 'search_viewed_by_me' => 'Olen katsonut',
+ 'search_not_viewed_by_me' => 'En ole katsonut',
+ 'search_permissions_set' => 'Käyttöoikeudet asetettu',
+ 'search_created_by_me' => 'Minun luomani',
+ 'search_updated_by_me' => 'Minun päivittämäni',
+ 'search_owned_by_me' => 'Minun omistamani',
+ 'search_date_options' => 'Päiväyksen valinnat',
+ 'search_updated_before' => 'Päivitetty ennen',
+ 'search_updated_after' => 'Päivitetty jälkeen',
+ 'search_created_before' => 'Luotu ennen',
+ 'search_created_after' => 'Luotu jälkeen',
+ 'search_set_date' => 'Aseta päiväys',
+ 'search_update' => 'Päivitä haku',
+
+ // Shelves
+ 'shelf' => 'Hylly',
+ 'shelves' => 'Hyllyt',
+ 'x_shelves' => ':count hylly|:count hyllyä',
+ 'shelves_empty' => 'Hyllyjä ei ole luotu',
+ 'shelves_create' => 'Luo uusi hylly',
+ 'shelves_popular' => 'Suositut hyllyt',
+ 'shelves_new' => 'Uudet hyllyt',
+ 'shelves_new_action' => 'Uusi hylly',
+ 'shelves_popular_empty' => 'Suosituimmat hyllyt näkyvät tässä.',
+ 'shelves_new_empty' => 'Viimeksi luodut hyllyt näkyvät tässä.',
+ 'shelves_save' => 'Tallenna hylly',
+ 'shelves_books' => 'Tässä hyllyssä olevat kirjat',
+ 'shelves_add_books' => 'Lisää kirjoja tähän hyllyyn',
+ 'shelves_drag_books' => 'Vedä alla olevia kirjoja lisätäksesi ne tähän hyllyyn',
+ 'shelves_empty_contents' => 'Tälle hyllylle ei ole lisätty kirjoja',
+ 'shelves_edit_and_assign' => 'Muokkaa hyllyä lisätäksesi kirjoja',
+ 'shelves_edit_named' => 'Muokkaa hyllyä :name',
+ 'shelves_edit' => 'Muokkaa hyllyä',
+ 'shelves_delete' => 'Poista hylly',
+ 'shelves_delete_named' => 'Poista hylly :name',
+ 'shelves_delete_explain' => "Tämä poistaa hyllyn, jonka nimi on ':nimi'. Sisältyviä kirjoja ei poisteta.",
+ 'shelves_delete_confirmation' => 'Haluatko varmasti poistaa tämän hyllyn?',
+ 'shelves_permissions' => 'Hyllyn käyttöoikeudet',
+ 'shelves_permissions_updated' => 'Hyllyn käyttöoikeudet päivitetty',
+ 'shelves_permissions_active' => 'Hyllyn käyttöoikeudet käytössä',
+ 'shelves_permissions_cascade_warning' => 'Hyllyjen käyttöoikeudet eivät siirry automaattisesti kirjoihin. Tämä johtuu siitä, että kirja voi olla useammassa hyllyssä. Käyttöoikeudet voidaan kuitenkin kopioida kaikkiin hyllyn kirjoihin käyttämällä alla olevaa valintaa.',
+ 'shelves_permissions_create' => 'Hyllyjen luontioikeuksia käytetään vain kopioidessa oikeuksia hyllyn kirjoihin alla olevan toiminnon avulla. Ne eivät vaikuta mahdollisuuteen luoda kirjoja.',
+ 'shelves_copy_permissions_to_books' => 'Kopioi käyttöoikeudet kirjoihin',
+ 'shelves_copy_permissions' => 'Kopioi käyttöoikeudet',
+ 'shelves_copy_permissions_explain' => 'Tämä valinta siirtää hyllyn nykyiset käyttöoikeusasetukset kaikkiin hyllyssä oleviin kirjoihin. Varmista ennen aktivointia, että kaikki tämän hyllyn käyttöoikeuksiin tehdyt muutokset on tallennettu.',
+ 'shelves_copy_permission_success' => 'Hyllyn käyttöoikeudet kopioitu :count kirjaan',
+
+ // Books
+ 'book' => 'Kirja',
+ 'books' => 'Kirjat',
+ 'x_books' => ':count kirja|:count kirjaa',
+ 'books_empty' => 'Kirjoja ei ole luotu',
+ 'books_popular' => 'Suositut kirjat',
+ 'books_recent' => 'Viimeisimmät kirjat',
+ 'books_new' => 'Uudet kirjat',
+ 'books_new_action' => 'Uusi kirja',
+ 'books_popular_empty' => 'Suosituimmat kirjat näkyvät tässä.',
+ 'books_new_empty' => 'Viimeksi luodut kirjat näkyvät tässä.',
+ 'books_create' => 'Luo uusi kirja',
+ 'books_delete' => 'Poista kirja',
+ 'books_delete_named' => 'Poista kirja :bookName',
+ 'books_delete_explain' => 'Tämä poistaa kirjan, jonka nimi on \':bookName\'. Kaikki sivut ja luvut poistetaan.',
+ 'books_delete_confirmation' => 'Haluatko varmasti poistaa tämän kirjan?',
+ 'books_edit' => 'Muokkaa kirjaa',
+ 'books_edit_named' => 'Muokkaa kirjaa :bookName',
+ 'books_form_book_name' => 'Kirjan nimi',
+ 'books_save' => 'Tallenna kirja',
+ 'books_permissions' => 'Kirjan käyttöoikeudet',
+ 'books_permissions_updated' => 'Kirjan käyttöoikeudet päivitetty',
+ 'books_empty_contents' => 'Tähän kirjaan ei ole luotu sivuja tai lukuja.',
+ 'books_empty_create_page' => 'Luo uusi sivu',
+ 'books_empty_sort_current_book' => 'Järjestä nykyistä kirjaa',
+ 'books_empty_add_chapter' => 'Lisää luku',
+ 'books_permissions_active' => 'Kirjan käyttöoikeudet käytössä',
+ 'books_search_this' => 'Hae tästä kirjasta',
+ 'books_navigation' => 'Kirjan navigaatio',
+ 'books_sort' => 'Järjestä kirjan sisältö',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Järjestä kirja :bookName',
+ 'books_sort_name' => 'Järjestä nimen mukaan',
+ 'books_sort_created' => 'Järjestä luontipäiväyksen mukaan',
+ 'books_sort_updated' => 'Järjestä päivityksen päiväyksen mukaan',
+ 'books_sort_chapters_first' => 'Luvut ensin',
+ 'books_sort_chapters_last' => 'Luvut viimeisenä',
+ 'books_sort_show_other' => 'Näytä muita kirjoja',
+ 'books_sort_save' => 'Tallenna uusi järjestys',
+ 'books_sort_show_other_desc' => 'Voit lisätä tähän muita kirjoja järjestämistä varten ja mahdollistaa sujuvan kirjojen välisen uudelleenjärjestelyn.',
+ 'books_sort_move_up' => 'Siirrä ylös',
+ 'books_sort_move_down' => 'Siirrä alas',
+ 'books_sort_move_prev_book' => 'Siirrä edelliseen kirjaan',
+ 'books_sort_move_next_book' => 'Siirrä seuraavaan kirjaan',
+ 'books_sort_move_prev_chapter' => 'Siirrä edelliseen lukuun',
+ 'books_sort_move_next_chapter' => 'Siirrä seuraavaan lukuun',
+ 'books_sort_move_book_start' => 'Siirrä kirjan alkuun',
+ 'books_sort_move_book_end' => 'Siirrä kirjan loppuun',
+ 'books_sort_move_before_chapter' => 'Siirrä luvun edelle',
+ 'books_sort_move_after_chapter' => 'Siirrä luvun jälkeen',
+ 'books_copy' => 'Kopioi kirja',
+ 'books_copy_success' => 'Kirja kopioitiin onnistuneesti',
+
+ // Chapters
+ 'chapter' => 'Luku',
+ 'chapters' => 'Luvut',
+ 'x_chapters' => ':count luku|:count lukua',
+ 'chapters_popular' => 'Suositut luvut',
+ 'chapters_new' => 'Uusi luku',
+ 'chapters_create' => 'Luo uusi luku',
+ 'chapters_delete' => 'Poista luku',
+ 'chapters_delete_named' => 'Poista luku :chapterName',
+ 'chapters_delete_explain' => 'Tämä poistaa luvun nimeltä \':chapterName\'. Myös kaikki luvun sisällä olevat sivut poistetaan.',
+ 'chapters_delete_confirm' => 'Haluatko varmasti poistaa tämän luvun?',
+ 'chapters_edit' => 'Muokkaa lukua',
+ 'chapters_edit_named' => 'Muokkaa lukua :chapterName',
+ 'chapters_save' => 'Tallenna luku',
+ 'chapters_move' => 'Siirrä luku',
+ 'chapters_move_named' => 'Siirrä lukua :chapterName',
+ 'chapters_copy' => 'Kopioi luku',
+ 'chapters_copy_success' => 'Luku kopioitiin onnistuneesti',
+ 'chapters_permissions' => 'Luvun käyttöoikeudet',
+ 'chapters_empty' => 'Tässä luvussa ei ole tällä hetkellä sivuja.',
+ 'chapters_permissions_active' => 'Luvun käyttöoikeudet käytössä',
+ 'chapters_permissions_success' => 'Luvun käyttöoikeudet päivitetty',
+ 'chapters_search_this' => 'Hae tästä luvusta',
+ 'chapter_sort_book' => 'Järjestä kirja',
+
+ // Pages
+ 'page' => 'Sivu',
+ 'pages' => 'Sivut',
+ 'x_pages' => ':count sivu|:count sivua',
+ 'pages_popular' => 'Suositut sivut',
+ 'pages_new' => 'Uusi sivu',
+ 'pages_attachments' => 'Liitteet',
+ 'pages_navigation' => 'Sivun navigaatio',
+ 'pages_delete' => 'Poista sivu',
+ 'pages_delete_named' => 'Poista sivu :pageName',
+ 'pages_delete_draft_named' => 'Poista luonnos :pageName',
+ 'pages_delete_draft' => 'Poista luonnos',
+ 'pages_delete_success' => 'Sivu poistettu',
+ 'pages_delete_draft_success' => 'Luonnos poistettu',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Oletko varma, että haluat poistaa tämän sivun?',
+ 'pages_delete_draft_confirm' => 'Haluatko varmasti poistaa tämän luonnoksen?',
+ 'pages_editing_named' => 'Muokataan sivua :pageName',
+ 'pages_edit_draft_options' => 'Luonnoksen asetukset',
+ 'pages_edit_save_draft' => 'Tallenna luonnos',
+ 'pages_edit_draft' => 'Muokkaa luonnosta',
+ 'pages_editing_draft' => 'Muokataan luonnosta',
+ 'pages_editing_page' => 'Muokataan sivua',
+ 'pages_edit_draft_save_at' => 'Luonnos tallennettu ',
+ 'pages_edit_delete_draft' => 'Poista luonnos',
+ 'pages_edit_delete_draft_confirm' => 'Oletko varma, että haluat poistaa luonnoksen muutokset? Kaikki muutokset viimeisimmästä tallennuksesta lähtien häviävät, ja editori päivitetään viimeisimpään tallennettuun sivun versioon.',
+ 'pages_edit_discard_draft' => 'Hylkää luonnos',
+ 'pages_edit_switch_to_markdown' => 'Vaihda Markdown-editoriin',
+ 'pages_edit_switch_to_markdown_clean' => '(Puhdas sisältö)',
+ 'pages_edit_switch_to_markdown_stable' => '(Vakaa sisältö)',
+ 'pages_edit_switch_to_wysiwyg' => 'Vaihda WYSIWYG-editoriin',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Aseta muutosloki',
+ 'pages_edit_enter_changelog_desc' => 'Kirjoita lyhyt kuvaus tekemistäsi muutoksista',
+ 'pages_edit_enter_changelog' => 'Syötä muutosloki',
+ 'pages_editor_switch_title' => 'Vaihda editoria',
+ 'pages_editor_switch_are_you_sure' => 'Haluatko varmasti vaihtaa tämän sivun editorin?',
+ 'pages_editor_switch_consider_following' => 'Ota huomioon seuraavat asiat, kun vaihdat editoria:',
+ 'pages_editor_switch_consideration_a' => 'Tallennuksen jälkeen kaikki tulevat muokkaajat käyttävät uutta editorivaihtoehtoa, myös käyttäjät, jotka eivät ehkä pysty itse vaihtamaan editoria.',
+ 'pages_editor_switch_consideration_b' => 'Tämä voi joissain tapauksissa johtaa yksityiskohtien ja muotoilujen häviämiseen.',
+ 'pages_editor_switch_consideration_c' => 'Viimeisimmän tallennuksen jälkeen tehdyt tunniste- tai muutoslokimuutokset eivät säily.',
+ 'pages_save' => 'Tallenna sivu',
+ 'pages_title' => 'Sivun otsikko',
+ 'pages_name' => 'Sivun nimi',
+ 'pages_md_editor' => 'Editori',
+ 'pages_md_preview' => 'Esikatselu',
+ 'pages_md_insert_image' => 'Lisää kuva',
+ 'pages_md_insert_link' => 'Lisää linkki',
+ 'pages_md_insert_drawing' => 'Lisää piirustus',
+ 'pages_md_show_preview' => 'Näytä esikatselu',
+ 'pages_md_sync_scroll' => 'Vieritä esikatselua koodin vierityksen mukaan',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Tallentamaton piirustus löytyi',
+ 'pages_drawing_unsaved_confirm' => 'Järjestelmä löysi tallentamattoman piirustuksen. Haluatko palauttaa piirustuksen ja jatkaa sen muokkaamista?',
+ 'pages_not_in_chapter' => 'Sivu ei kuulu mihinkään lukuun',
+ 'pages_move' => 'Siirrä sivu',
+ 'pages_copy' => 'Kopioi sivu',
+ 'pages_copy_desination' => 'Kopioinnin kohde',
+ 'pages_copy_success' => 'Sivu kopioitiin onnistuneesti',
+ 'pages_permissions' => 'Sivun käyttöoikeudet',
+ 'pages_permissions_success' => 'Sivun käyttöoikeudet päivitetty',
+ 'pages_revision' => 'Versio',
+ 'pages_revisions' => 'Sivun versiot',
+ 'pages_revisions_desc' => 'Alla on kaikki tämän sivun aiemmat versiot. Voit tarkastella, vertailla ja palauttaa vanhoja versioita, jos käyttöoikeudet sallivat. Sivun koko historia ei välttämättä näy kokonaan, sillä järjestelmän asetuksista riippuen vanhat versiot saatetaan poistaa automaattisesti.',
+ 'pages_revisions_named' => 'Sivun :pageName versiot',
+ 'pages_revision_named' => 'Sivun :pageName versio',
+ 'pages_revision_restored_from' => 'Palautettu versiosta #:id; :summary',
+ 'pages_revisions_created_by' => 'Luonut',
+ 'pages_revisions_date' => 'Version päiväys',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Versionumero',
+ 'pages_revisions_numbered' => 'Versio #:id',
+ 'pages_revisions_numbered_changes' => 'Version #:id muutokset',
+ 'pages_revisions_editor' => 'Editorin tyyppi',
+ 'pages_revisions_changelog' => 'Muutoshistoria',
+ 'pages_revisions_changes' => 'Muutokset',
+ 'pages_revisions_current' => 'Nykyinen versio',
+ 'pages_revisions_preview' => 'Esikatselu',
+ 'pages_revisions_restore' => 'Palauta',
+ 'pages_revisions_none' => 'Tällä sivulla ei ole versioita',
+ 'pages_copy_link' => 'Kopioi linkki',
+ 'pages_edit_content_link' => 'Siirry osioon editorissa',
+ 'pages_pointer_enter_mode' => 'Siirry osion valintatilaan',
+ 'pages_pointer_label' => 'Sivun osion valinnat',
+ 'pages_pointer_permalink' => 'Sivun osion pysyvä linkki',
+ 'pages_pointer_include_tag' => 'Sivun osion viitetunniste',
+ 'pages_pointer_toggle_link' => 'Pysyvä linkki, valitse viitetunniste painamalla',
+ 'pages_pointer_toggle_include' => 'Viitetunniste, valitse pysyvä linkki painamalla',
+ 'pages_permissions_active' => 'Sivun käyttöoikeudet käytössä',
+ 'pages_initial_revision' => 'Alkuperäinen julkaisu',
+ 'pages_references_update_revision' => 'Sisäisten linkkien automaattinen päivitys',
+ 'pages_initial_name' => 'Uusi sivu',
+ 'pages_editing_draft_notification' => 'Muokkaat luonnosta, joka on viimeksi tallennettu :timeDiff.',
+ 'pages_draft_edited_notification' => 'Tätä sivua on päivitetty myöhemmin. Tämä luonnos suositellaan poistettavaksi.',
+ 'pages_draft_page_changed_since_creation' => 'Sivua on päivitetty tämän luonnoksen luomisen jälkeen. On suositeltavaa, että poistat tämän luonnoksen tai huolehdit siitä, ettet korvaa uusia sivun muutoksia.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count käyttäjää muokkaa tätä sivua',
+ 'start_b' => ':userName muokkaa tätä sivua',
+ 'time_a' => 'sivun viimeisimmän päivityksen jälkeen',
+ 'time_b' => 'viimeisen :minCount minuutin aikana',
+ 'message' => ':start :time. Huolehdi siitä, että ette ylikirjoita toistenne päivityksiä!',
+ ],
+ 'pages_draft_discarded' => 'Luonnos on hylätty! Editoriin on päivitetty sivun nykyinen sisältö',
+ 'pages_draft_deleted' => 'Luonnos on poistettu! Editoriin on päivitetty sivun nykyinen sisältö',
+ 'pages_specific' => 'Tietty sivu',
+ 'pages_is_template' => 'Mallipohja',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Näytä/piilota sivupalkki',
+ 'page_tags' => 'Sivun tunnisteet',
+ 'chapter_tags' => 'Lukujen tunnisteet',
+ 'book_tags' => 'Kirjojen tunnisteet',
+ 'shelf_tags' => 'Hyllyjen tunnisteet',
+ 'tag' => 'Tunniste',
+ 'tags' => 'Tunnisteet',
+ 'tags_index_desc' => 'Järjestelmässä oleva sisältöä voidaan luokitella joustavasti tunnisteiden avulla. Tunnisteilla voi olla sekä avain että arvo. Arvo on valinnainen. Tunnisteella merkittyjä sisältöjä voidaan hakea käyttämällä tunnisteen nimeä ja arvoa.',
+ 'tag_name' => 'Tunnisteen nimi',
+ 'tag_value' => 'Tunnisteen arvo (valinnainen)',
+ 'tags_explain' => "Lisää tunnisteita sisällön luokittelua varten. \n Tunnisteiden arvojen avulla luokittelua voi edelleen tarkentaa.",
+ 'tags_add' => 'Lisää uusi tunniste',
+ 'tags_remove' => 'Poista tämä tunniste',
+ 'tags_usages' => 'Tunnisteen käyttökerrat',
+ 'tags_assigned_pages' => 'Lisätty sivuille',
+ 'tags_assigned_chapters' => 'Lisätty lukuihin',
+ 'tags_assigned_books' => 'Lisätty kirjoihin',
+ 'tags_assigned_shelves' => 'Lisätty hyllyihin',
+ 'tags_x_unique_values' => ':count yksilöllistä arvoa',
+ 'tags_all_values' => 'Kaikki arvot',
+ 'tags_view_tags' => 'Näytä tunnisteita',
+ 'tags_view_existing_tags' => 'Näytä käytetyt tunnisteet',
+ 'tags_list_empty_hint' => 'Tunnisteet voidaan määrittää editorin sivupalkissa tai kirjan, luvun tai hyllyn tietoja muokattaessa.',
+ 'attachments' => 'Liitteet',
+ 'attachments_explain' => 'Lataa tiedostoja tai liitä linkkejä, jotka näytetään sivulla. Nämä näkyvät sivun sivupalkissa.',
+ 'attachments_explain_instant_save' => 'Tässä tehdyt muutokset tallentuvat välittömästi.',
+ 'attachments_upload' => 'Lataa tiedosto',
+ 'attachments_link' => 'Liitä linkki',
+ 'attachments_upload_drop' => 'Vaihtoehtoisesti voit raahata ja pudottaa tiedoston tähän ladataksesi sen liitetiedostoksi.',
+ 'attachments_set_link' => 'Aseta linkki',
+ 'attachments_delete' => 'Haluatko varmasti poistaa tämän liitteen?',
+ 'attachments_dropzone' => 'Pudota siirrettävät tiedostot tähän',
+ 'attachments_no_files' => 'Yhtään tiedostoa ei ole ladattu',
+ 'attachments_explain_link' => 'Voit antaa linkin, jos et halua ladata tiedostoa. Se voi olla linkki toiselle sivulle tai linkki pilvipalvelussa olevaan tiedostoon.',
+ 'attachments_link_name' => 'Linkin nimi',
+ 'attachment_link' => 'Liitteen linkki',
+ 'attachments_link_url' => 'Linkki tiedostoon',
+ 'attachments_link_url_hint' => 'Sivuston tai tiedoston osoite',
+ 'attach' => 'Liitä',
+ 'attachments_insert_link' => 'Lisää liitteen linkki sivulle',
+ 'attachments_edit_file' => 'Muokkaa tiedostoa',
+ 'attachments_edit_file_name' => 'Tiedoston nimi',
+ 'attachments_edit_drop_upload' => 'Pudota tiedostoja tai klikkaa tästä ladataksesi ja korvataksesi',
+ 'attachments_order_updated' => 'Liitteiden järjestys päivitetty',
+ 'attachments_updated_success' => 'Liitteen tiedot päivitetty',
+ 'attachments_deleted' => 'Liite poistettu',
+ 'attachments_file_uploaded' => 'Tiedosto ladattiin onnistuneesti',
+ 'attachments_file_updated' => 'Tiedosto päivitettiin onnistuneesti',
+ 'attachments_link_attached' => 'Linkki liitettiin onnistuneesti sivulle',
+ 'templates' => 'Mallipohjat',
+ 'templates_set_as_template' => 'Sivu on mallipohja',
+ 'templates_explain_set_as_template' => 'Voit tehdä tästä sivusta mallipohjan, jolloin sen sisältöä voidaan käyttää muiden sivujen luomisessa. Muut käyttäjät voivat käyttää tätä mallipohjaa, jos heillä on pääsyoikeus sivuun.',
+ 'templates_replace_content' => 'Korvaa sivun sisältö',
+ 'templates_append_content' => 'Liitä sivun sisällön jatkoksi',
+ 'templates_prepend_content' => 'Liitä sivun sisällön alkuun',
+
+ // Profile View
+ 'profile_user_for_x' => 'Ollut käyttäjä :time',
+ 'profile_created_content' => 'Luotu sisältö',
+ 'profile_not_created_pages' => ':userName ei ole luonut sivuja',
+ 'profile_not_created_chapters' => ':userName ei ole luonut lukuja',
+ 'profile_not_created_books' => ':userName ei ole luonut kirjoja',
+ 'profile_not_created_shelves' => ':userName ei ole luonut hyllyjä',
+
+ // Comments
+ 'comment' => 'Kommentti',
+ 'comments' => 'Kommentit',
+ 'comment_add' => 'Lisää kommentti',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Jätä kommentti tähän',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Tallenna kommentti',
+ 'comment_new' => 'Uusi kommentti',
+ 'comment_created' => 'kommentoi :createDiff',
+ 'comment_updated' => 'Päivitetty :updateDiff :username toimesta',
+ 'comment_updated_indicator' => 'Päivitetty',
+ 'comment_deleted_success' => 'Kommentti poistettu',
+ 'comment_created_success' => 'Kommentti lisätty',
+ 'comment_updated_success' => 'Kommentti päivitetty',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Haluatko varmasti poistaa tämän kommentin?',
+ 'comment_in_reply_to' => 'Vastaus kommenttiin :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Tässä ovat sivulle jätetyt komentit. Kommentteja voi lisätä ja hallita, kun tarkastelet tallennettua sivua.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Haluatko varmasti poistaa tämän version?',
+ 'revision_restore_confirm' => 'Oletko varma, että haluat palauttaa tämän version? Sivun nykyinen sisältö korvataan.',
+ 'revision_cannot_delete_latest' => 'Uusinta versiota ei voi poistaa.',
+
+ // Copy view
+ 'copy_consider' => 'Ota huomioon seuraavat asiat sisältöä kopioidessasi.',
+ 'copy_consider_permissions' => 'Mukautettuja käyttöoikeusasetuksia ei kopioida.',
+ 'copy_consider_owner' => 'Sinusta tulee kaiken kopioidun sisällön omistaja.',
+ 'copy_consider_images' => 'Sivun kuvatiedostoja ei kopioida, ja alkuperäiset kuvat säilyttävät suhteensa siihen sivuun, jolle ne alun perin ladattiin.',
+ 'copy_consider_attachments' => 'Sivun liitteitä ei kopioida.',
+ 'copy_consider_access' => 'Sijainnin, omistajan tai käyttöoikeuksien vaihtuminen voi johtaa siihen, että tämä sisältö on sellaisten käyttäjien saatavilla, joilla ei ole aiemmin ollut siihen pääsyä.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Muunna hyllyksi',
+ 'convert_to_shelf_contents_desc' => 'Voit muuntaa tämän kirjan uudeksi hyllyksi, jossa on sama sisältö. Kirjan sisältämät luvut muunnetaan uusiksi kirjoiksi. Jos kirja sisältää sivuja, jotka eivät kuulu mihinkään lukuun, kirja nimetään uudelleen ja siitä tulee osa uutta hyllyä, joka sisältää kyseiset sivut.',
+ 'convert_to_shelf_permissions_desc' => 'Kaikki tälle kirjalle asetetut käyttöoikeudet kopioidaan uuteen hyllyyn ja kaikkiin uusiin hyllyn kirjoihin, joilla ei ole omia käyttöoikeuksia. Huomaa, että hyllyjen käyttöoikeudet eivät siirry automaattisesti hyllyssä olevaan sisältöön, kuten kirjoissa.',
+ 'convert_book' => 'Muunna kirja',
+ 'convert_book_confirm' => 'Haluatko varmasti muuntaa tämän kirjan?',
+ 'convert_undo_warning' => 'Tätä ei voi yhtä helposti perua.',
+ 'convert_to_book' => 'Muunna kirjaksi',
+ 'convert_to_book_desc' => 'Voit muuntaa tämän luvun uudeksi kirjaksi, jonka sisältö on sama. Kaikki tälle luvulle asetetut käyttöoikeudet kopioidaan uuteen kirjaan, mutta alkuperäisestä kirjasta perittyjä käyttöoikeuksia ei kopioida, mikä voi johtaa käyttöoikeuksien muuttumiseen.',
+ 'convert_chapter' => 'Muunna luku',
+ 'convert_chapter_confirm' => 'Haluatko varmasti muuntaa tämän luvun?',
+
+ // References
+ 'references' => 'Viitteet',
+ 'references_none' => 'Tähän kohteeseen ei ole viittauksia.',
+ 'references_to_desc' => 'Lista kohteeseen viittaavasta sisällöstä.',
+
+ // Watch Options
+ 'watch' => 'Seuraa',
+ 'watch_title_default' => 'Oletusasetukset',
+ 'watch_desc_default' => 'Palauta seuranta omiin oletusasetuksiin.',
+ 'watch_title_ignore' => 'Ohita',
+ 'watch_desc_ignore' => 'Ohita kaikki ilmoitukset, myös käyttäjäasetuksissa määritellyt ilmoitukset.',
+ 'watch_title_new' => 'Uudet sivut',
+ 'watch_desc_new' => 'Ilmoita, kun tähän kohteeseen luodaan uusi sivu.',
+ 'watch_title_updates' => 'Kaikki sivupäivitykset',
+ 'watch_desc_updates' => 'Ilmoita kaikista uusista sivuista ja sivujen muutoksista.',
+ 'watch_desc_updates_page' => 'Ilmoita kaikista sivujen muutoksista.',
+ 'watch_title_comments' => 'Kaikki sivupäivitykset ja kommentit',
+ 'watch_desc_comments' => 'Ilmoita kaikista uusista sivuista, sivujen muutoksista ja uusista kommenteista.',
+ 'watch_desc_comments_page' => 'Ilmoita sivujen muutoksista ja uusista kommenteista.',
+ 'watch_change_default' => 'Muuta oletusilmoitusasetuksia',
+ 'watch_detail_ignore' => 'Ilmoitusten ohittaminen',
+ 'watch_detail_new' => 'Uusien sivujen seuraaminen',
+ 'watch_detail_updates' => 'Uusien sivujen ja päivitysten seuraaminen',
+ 'watch_detail_comments' => 'Uusien sivujen, päivitysten ja kommenttien seuraaminen',
+ 'watch_detail_parent_book' => 'Seuraaminen kirjan perusteella',
+ 'watch_detail_parent_book_ignore' => 'Huomioimatta jättäminen kirjan perusteella',
+ 'watch_detail_parent_chapter' => 'Seuraaminen luvun perusteella',
+ 'watch_detail_parent_chapter_ignore' => 'Huomioimatta jättäminen luvun perusteella',
+];
diff --git a/lang/fi/errors.php b/lang/fi/errors.php
new file mode 100644
index 00000000000..a51edf5bec9
--- /dev/null
+++ b/lang/fi/errors.php
@@ -0,0 +1,136 @@
+ 'Sinulla ei ole pääsyoikeutta pyydettyyn sivuun.',
+ 'permissionJson' => 'Sinulla ei ole oikeutta suorittaa pyydettyä toimintoa.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Sähköpostiosoite :email on jo käytössä toisessa käyttäjätunnuksessa.',
+ 'auth_pre_register_theme_prevention' => 'Käyttäjätiliä ei voitu rekisteröidä annetuille tiedoille',
+ 'email_already_confirmed' => 'Sähköposti on jo vahvistettu, yritä kirjautua sisään.',
+ 'email_confirmation_invalid' => 'Tämä vahvistuslinkki ei ole voimassa tai sitä on jo käytetty, yritä rekisteröityä uudelleen.',
+ 'email_confirmation_expired' => 'Vahvistuslinkki on vanhentunut, uusi vahvistussähköposti on lähetetty.',
+ 'email_confirmation_awaiting' => 'Tämän tilin sähköpostiosoite pitää vahvistaa',
+ 'ldap_fail_anonymous' => 'Anonyymi LDAP-todennus epäonnistui',
+ 'ldap_fail_authed' => 'LDAP-todennus epäonnistui annetulla nimellä ja salasanalla',
+ 'ldap_extension_not_installed' => 'PHP:n LDAP-laajennusta ei ole asennettu',
+ 'ldap_cannot_connect' => 'Yhteyttä LDAP-palvelimeen ei voida muodostaa, alustava yhteys epäonnistui',
+ 'saml_already_logged_in' => 'Olet jo kirjautunut sisään',
+ 'saml_no_email_address' => 'Tämän käyttäjän sähköpostiosoitetta ei löytynyt ulkoisesta todennuspalvelusta',
+ 'saml_invalid_response_id' => 'Tämän sovelluksen käynnistämä prosessi ei tunnista ulkoisen todennusjärjestelmän pyyntöä.
+Sovellus ei tunnista ulkoisen todennuspalvelun pyyntöä. Ongelman voi aiheuttaa siirtyminen selaimessa takaisin edelliseen näkymään kirjautumisen jälkeen.',
+ 'saml_fail_authed' => 'Sisäänkirjautuminen :system käyttäen epäonnistui, järjestelmä ei antanut valtuutusta',
+ 'oidc_already_logged_in' => 'Olet jo kirjautunut sisään',
+ 'oidc_no_email_address' => 'Ulkoisen todennuspalvelun antamista tiedoista ei löytynyt tämän käyttäjän sähköpostiosoitetta',
+ 'oidc_fail_authed' => 'Sisäänkirjautuminen :system käyttäen epäonnistui, järjestelmä ei antanut valtuutusta',
+ 'social_no_action_defined' => 'Ei määriteltyä toimenpidettä',
+ 'social_login_bad_response' => "Virhe :socialAccount-kirjautumisen aikana: \n:error",
+ 'social_account_in_use' => 'Tämä :socialAccount-tili on jo käytössä, yritä kirjautua sisään :socialAccount-vaihtoehdon kautta.',
+ 'social_account_email_in_use' => 'Sähköposti :email on jo käytössä. Jos sinulla on jo sivustolla käyttäjätili, voit yhdistää :socialAccount-tilisi profiiliasetuksista.',
+ 'social_account_existing' => 'Tämä :socialAccount-tili on jo liitetty profiiliisi.',
+ 'social_account_already_used_existing' => 'Tämä :socialAccount-tili on jo toisen käyttäjän käytössä.',
+ 'social_account_not_used' => 'Tätä :socialAccount-tiliä ei ole liitetty mihinkään käyttäjään. Voit liittää sen profiiliasetuksistasi. ',
+ 'social_account_register_instructions' => 'Jos sinulla ei vielä ole käyttäjätiliä, voit rekisteröidä tilin käyttämällä :socialAccount-vaihtoehtoa.',
+ 'social_driver_not_found' => 'Sosiaalisen median tilin ajuria ei löytynyt',
+ 'social_driver_not_configured' => ':socialAccount-tilin asetuksia ei ole määritetty oikein.',
+ 'invite_token_expired' => 'Tämä kutsulinkki on vanhentunut. Voit sen sijaan yrittää palauttaa tilisi salasanan.',
+ 'login_user_not_found' => 'Käyttäjää tälle toiminnolle ei löytynyt.',
+
+ // System
+ 'path_not_writable' => 'Tiedostopolkuun :filePath ei voitu ladata tiedostoa. Tarkista polun kirjoitusoikeudet.',
+ 'cannot_get_image_from_url' => 'Kuvan hakeminen osoitteesta :url ei onnistu',
+ 'cannot_create_thumbs' => 'Palvelin ei voi luoda pikkukuvia. Tarkista, että PHP:n GD-laajennus on asennettu.',
+ 'server_upload_limit' => 'Palvelin ei salli näin suuria tiedostoja. Kokeile pienempää tiedostokokoa.',
+ 'server_post_limit' => 'Palvelin ei pysty vastaanottamaan annettua tietomäärää. Yritä uudelleen pienemmällä tiedostolla.',
+ 'uploaded' => 'Palvelin ei salli näin suuria tiedostoja. Kokeile pienempää tiedostokokoa.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Kuvan lataamisessa tapahtui virhe',
+ 'image_upload_type_error' => 'Ladattavan kuvan tyyppi on virheellinen',
+ 'image_upload_replace_type' => 'Korvaavan kuvatiedoston tulee olla samaa tyyppiä kuin alkuperäinen kuva',
+ 'image_upload_memory_limit' => 'Kuvan lataaminen ja/tai pikkukuvien luominen epäonnistui järjestelmän resurssirajoitusten vuoksi.',
+ 'image_thumbnail_memory_limit' => 'Kuvan kokovaihtoehtojen luominen epäonnistui järjestelmän resurssirajoitusten vuoksi.',
+ 'image_gallery_thumbnail_memory_limit' => 'Gallerian pikkukuvien luominen epäonnistui järjestelmän resurssirajoitusten vuoksi.',
+ 'drawing_data_not_found' => 'Piirustuksen tietoja ei voitu ladata. Piirustustiedostoa ei ehkä ole enää olemassa tai sinulla ei ole oikeutta käyttää sitä.',
+
+ // Attachments
+ 'attachment_not_found' => 'Liitettä ei löytynyt',
+ 'attachment_upload_error' => 'Liitteen lataamisessa tapahtui virhe',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Luonnoksen tallentaminen epäonnistui. Varmista, että sinulla on toimiva internetyhteys ennen sivun tallentamista',
+ 'page_draft_delete_fail' => 'Luonnoksen poistaminen ja sivun tallennetun sisällön noutaminen epäonnistui',
+ 'page_custom_home_deletion' => 'Sivua ei voi poistaa, koska se on asetettu etusivuksi',
+
+ // Entities
+ 'entity_not_found' => 'Kohdetta ei löydy',
+ 'bookshelf_not_found' => 'Hyllyä ei löytynyt',
+ 'book_not_found' => 'Kirjaa ei löytynyt',
+ 'page_not_found' => 'Sivua ei löytynyt',
+ 'chapter_not_found' => 'Lukua ei löytynyt',
+ 'selected_book_not_found' => 'Valittua kirjaa ei löytynyt',
+ 'selected_book_chapter_not_found' => 'Valittua kirjaa tai lukua ei löytynyt',
+ 'guests_cannot_save_drafts' => 'Vieraat eivät voi tallentaa luonnoksia',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Ainoaa ylläpitäjää ei voi poistaa',
+ 'users_cannot_delete_guest' => 'Vieraskäyttäjää ei voi poistaa',
+ 'users_could_not_send_invite' => 'Käyttäjää ei voitu luoda kutsun lähettämisen jälkeen',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Tätä roolia ei voi muokata',
+ 'role_system_cannot_be_deleted' => 'Tämä rooli on järjestelmärooli, eikä sitä voi poistaa',
+ 'role_registration_default_cannot_delete' => 'Tätä roolia ei voi poistaa, kun se on asetettu oletusrooliksi uusille rekisteröityville käyttäjille',
+ 'role_cannot_remove_only_admin' => 'Tämä käyttäjä on ainoa käyttäjä, jolle on määritetty ylläpitäjän rooli. Määritä ylläpitäjän rooli toiselle käyttäjälle, ennen kuin yrität poistaa tämän käyttäjän.',
+
+ // Comments
+ 'comment_list' => 'Kommenttien noutamisessa tapahtui virhe.',
+ 'cannot_add_comment_to_draft' => 'Luonnokseen ei voi lisätä kommentteja.',
+ 'comment_add' => 'Kommentin lisäämisessä tai päivittämisessä tapahtui virhe.',
+ 'comment_delete' => 'Kommentin poistamisessa tapahtui virhe.',
+ 'empty_comment' => 'Tyhjää kommenttia ei voi lisätä.',
+
+ // Error pages
+ '404_page_not_found' => 'Sivua ei löydy',
+ 'sorry_page_not_found' => 'Valitettavasti etsimääsi sivua ei löytynyt.',
+ 'sorry_page_not_found_permission_warning' => 'Jos oletit, että tämä sivu on olemassa, sinulla ei ehkä ole lupaa tarkastella sitä.',
+ 'image_not_found' => 'Kuvaa ei löytynyt',
+ 'image_not_found_subtitle' => 'Valitettavasti etsimääsi kuvatiedostoa ei löytynyt.',
+ 'image_not_found_details' => 'Jos oletit, että tämä kuva on olemassa, se on ehkä poistettu.',
+ 'return_home' => 'Palaa etusivulle',
+ 'error_occurred' => 'Tapahtui virhe',
+ 'app_down' => ':appName on kaatunut',
+ 'back_soon' => 'Se palautetaan pian.',
+
+ // Import
+ 'import_zip_cant_read' => 'ZIP-tiedostoa ei voitu lukea.',
+ 'import_zip_cant_decode_data' => 'ZIP-tiedoston data.json sisältöä ei löydy eikä sitä voitu purkaa.',
+ 'import_zip_no_data' => 'ZIP-tiedostoilla ei ole odotettua kirjaa, lukua tai sivun sisältöä.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Tuonti ZIP epäonnistui virheiden kanssa:',
+ 'import_zip_failed_notification' => 'ZIP-tiedoston tuominen epäonnistui.',
+ 'import_perms_books' => 'Sinulla ei ole tarvittavia oikeuksia luoda kirjoja.',
+ 'import_perms_chapters' => 'Sinulla ei ole tarvittavia oikeuksia luoda kappaleita.',
+ 'import_perms_pages' => 'Sinulla ei ole tarvittavia oikeuksia luoda sivuja.',
+ 'import_perms_images' => 'Sinulla ei ole tarvittavia oikeuksia luoda kuvia.',
+ 'import_perms_attachments' => 'Sinulla ei ole tarvittavaa lupaa luoda liitteitä.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Pyynnöstä ei löytynyt valtuutuskoodia',
+ 'api_bad_authorization_format' => 'Pyynnöstä löytyi valtuutuskoodi, mutta sen muoto oli virheellinen',
+ 'api_user_token_not_found' => 'Annetulle valtuutuskoodille ei löytynyt vastaavaa API-tunnistetta',
+ 'api_incorrect_token_secret' => 'API-tunnisteelle annettu salainen avain on virheellinen',
+ 'api_user_no_api_permission' => 'Käytetyn API-tunnisteen omistajalla ei ole oikeutta tehdä API-kutsuja',
+ 'api_user_token_expired' => 'Käytetty valtuutuskoodi on vanhentunut',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Virhe testisähköpostia lähetettäessä:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'URL-osoite ei vastaa määritettyjä sallittuja SSR-isäntiä',
+];
diff --git a/lang/fi/notifications.php b/lang/fi/notifications.php
new file mode 100644
index 00000000000..647378ded83
--- /dev/null
+++ b/lang/fi/notifications.php
@@ -0,0 +1,29 @@
+ 'Uusi kommentti sivulla: :pageName',
+ 'new_comment_intro' => 'Käyttäjä on kommentoinut sivua sivustolla :appName:',
+ 'new_page_subject' => 'Uusi sivu: :pageName',
+ 'new_page_intro' => 'Uusi sivu on luotu sivustolla :appName:',
+ 'updated_page_subject' => 'Päivitetty sivu: :pageName',
+ 'updated_page_intro' => 'Sivu on päivitetty sivustolla :appName:',
+ 'updated_page_debounce' => 'Useiden ilmoitusten välttämiseksi sinulle ei toistaiseksi lähetetä ilmoituksia saman toimittajan tekemistä uusista muokkauksista tälle sivulle.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Sivun nimi:',
+ 'detail_page_path' => 'Sivun polku:',
+ 'detail_commenter' => 'Kommentoija:',
+ 'detail_comment' => 'Kommentti:',
+ 'detail_created_by' => 'Luonut',
+ 'detail_updated_by' => 'Päivittänyt',
+
+ 'action_view_comment' => 'Näytä kommentti',
+ 'action_view_page' => 'Näytä sivu',
+
+ 'footer_reason' => 'Tämä ilmoitus lähetettiin sinulle, koska :link kattaa tämän tyyppisen toiminnan tälle kohteelle.',
+ 'footer_reason_link' => 'omat ilmoitusasetukset',
+];
diff --git a/lang/fi/pagination.php b/lang/fi/pagination.php
new file mode 100644
index 00000000000..ebd8085c21b
--- /dev/null
+++ b/lang/fi/pagination.php
@@ -0,0 +1,12 @@
+ '« Edellinen',
+ 'next' => 'Seuraava »',
+
+];
diff --git a/lang/fi/passwords.php b/lang/fi/passwords.php
new file mode 100644
index 00000000000..86e4e189d47
--- /dev/null
+++ b/lang/fi/passwords.php
@@ -0,0 +1,15 @@
+ 'Salasanan on oltava vähintään kahdeksan merkkiä pitkä ja täsmättävä vahvistuksen kanssa.',
+ 'user' => "Emme löydä käyttäjää, jolla on kyseinen sähköpostiosoite.",
+ 'token' => 'Salasanan palautuslinkki ei täsmää sähköpostin kanssa.',
+ 'sent' => 'Olemme lähettäneet salasanasi palautuslinkin sähköpostitse!',
+ 'reset' => 'Salasanasi on palautettu!',
+
+];
diff --git a/lang/fi/preferences.php b/lang/fi/preferences.php
new file mode 100644
index 00000000000..05afc111f10
--- /dev/null
+++ b/lang/fi/preferences.php
@@ -0,0 +1,52 @@
+ 'Oma tili',
+
+ 'shortcuts' => 'Pikanäppäimet',
+ 'shortcuts_interface' => 'Käyttöliittymän pikanäppäinten asetukset',
+ 'shortcuts_toggle_desc' => 'Tästä voit ottaa käyttöön tai poistaa käytöstä järjestelmän käyttöliittymän pikanäppäimet, joita käytetään navigointiin ja toimintoihin.',
+ 'shortcuts_customize_desc' => 'Voit mukauttaa alla olevia pikanäppäimiä. Paina haluamaasi näppäinyhdistelmää sen jälkeen, kun olet valinnut pikanäppäimen syöttökentän.',
+ 'shortcuts_toggle_label' => 'Pikanäppäimet käytössä',
+ 'shortcuts_section_navigation' => 'Navigointi',
+ 'shortcuts_section_actions' => 'Yleiset toiminnot',
+ 'shortcuts_save' => 'Tallenna pikanäppäimet',
+ 'shortcuts_overlay_desc' => 'Huomautus: kun pikanäppäimet ovat käytössä, voit painaa "?"-näppäintä, joka korostaa näytöllä näkyviin toimintoihin liitetyt pikanäppäimet.',
+ 'shortcuts_update_success' => 'Pikanäppäinten asetukset on päivitetty!',
+ 'shortcuts_overview_desc' => 'Hallitse pikanäppäimiä, joilla voit navigoida järjestelmän käyttöliittymässä.',
+
+ 'notifications' => 'Ilmoitusasetukset',
+ 'notifications_desc' => 'Hallitse järjestelmän toimintoihin liittyviä sähköposti-ilmoituksia.',
+ 'notifications_opt_own_page_changes' => 'Ilmoita omistamilleni sivuille tehdyistä muutoksista',
+ 'notifications_opt_own_page_comments' => 'Ilmoita omistamilleni sivuille tehdyistä kommenteista',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Ilmoita vastauksista kommentteihini',
+ 'notifications_save' => 'Tallenna asetukset',
+ 'notifications_update_success' => 'Ilmoitusasetukset on päivitetty!',
+ 'notifications_watched' => 'Seuratut ja huomiotta jätetyt kohteet',
+ 'notifications_watched_desc' => 'Alla oleviin kohteisiin sovelletaan muokautettuja seuranta-asetuksia. Voit päivittää kohteita koskevat asetukset avaamalla kohde ja valitsemalla seuranta-asetukset sivupalkista.',
+
+ 'auth' => 'Pääsy ja turvallisuus',
+ 'auth_change_password' => 'Vaihda salasana',
+ 'auth_change_password_desc' => 'Vaihda kirjautumiseen käytettävä salasana. Salasanan on oltava vähintään 8 merkkiä pitkä.',
+ 'auth_change_password_success' => 'Salasana on päivitetty!',
+
+ 'profile' => 'Profiilitiedot',
+ 'profile_desc' => 'Hallitse muille käyttäjille näkyviä käyttäjätilisi tietoja, sekä tietoja, joita käytetään viestintään ja järjestelmän personointiin.',
+ 'profile_view_public' => 'Näytä julkinen profiili',
+ 'profile_name_desc' => 'Määritä näyttönimesi, joka näkyy muille käyttäjille järjestelmässä suorittamiesi toimintojen ja omistamasi sisällön yhteydessä.',
+ 'profile_email_desc' => 'Tätä sähköpostia käytetään ilmoituksiin ja käytössä olevasta tunnistautumistavasta riippuen järjestelmään pääsyyn.',
+ 'profile_email_no_permission' => 'Valitettavasti sinulla ei ole lupaa muuttaa sähköpostiosoitettasi. Jos haluat muuttaa sen, sinun on pyydettävä ylläpitäjää muuttamaan se puolestasi.',
+ 'profile_avatar_desc' => 'Valitse kuva, joka näkyy järjestelmän muille käyttäjille. Kuvan tulisi olla neliön muotoinen ja leveydeltään ja korkeudeltaan noin 256 pikseliä.',
+ 'profile_admin_options' => 'Ylläpitäjän asetukset',
+ 'profile_admin_options_desc' => 'Ylläpitäjän lisäasetukset, kuten roolien osoittamiseen liittyvät valinnat, löytyvät käyttäjätiliäsi varten järjestelmän kohdasta "Asetukset > Käyttäjät".',
+
+ 'delete_account' => 'Poista käyttäjätili',
+ 'delete_my_account' => 'Poista oma käyttäjätili',
+ 'delete_my_account_desc' => 'Tämä poistaa käyttäjätilisi kokonaan järjestelmästä. Et voi palauttaa tiliäsi tai peruuttaa tätä toimenpidettä. Luomasi sisältö, kuten luodut sivut ja ladatut kuvat, säilyvät.',
+ 'delete_my_account_warning' => 'Haluatko varmasti poistaa käyttäjätilisi?',
+];
diff --git a/lang/fi/settings.php b/lang/fi/settings.php
new file mode 100644
index 00000000000..adc47fe2d87
--- /dev/null
+++ b/lang/fi/settings.php
@@ -0,0 +1,374 @@
+ 'Asetukset',
+ 'settings_save' => 'Tallenna asetukset',
+ 'system_version' => 'Järjestelmän versio',
+ 'categories' => 'Kategoriat',
+
+ // App Settings
+ 'app_customization' => 'Mukauttaminen',
+ 'app_features_security' => 'Ominaisuudet ja turvallisuus',
+ 'app_name' => 'Sivuston nimi',
+ 'app_name_desc' => 'Tämä nimi näkyy ylätunnisteessa ja kaikissa järjestelmän lähettämissä sähköpostiviesteissä.',
+ 'app_name_header' => 'Näytä nimi ylätunnisteessa',
+ 'app_public_access' => 'Julkinen pääsy',
+ 'app_public_access_desc' => 'Ottamalla tämä asetus käyttöön vierailijat voivat lukea sisältöjä kirjautumatta sisään.',
+ 'app_public_access_desc_guest' => 'Vierailijoiden pääsyoikeuksia voidaan hallinnoida "Vierailija"-käyttäjän asetuksista.',
+ 'app_public_access_toggle' => 'Salli julkinen pääsy',
+ 'app_public_viewing' => 'Salli julkinen katselu?',
+ 'app_secure_images' => 'Turvallisemmat kuvien lataukset',
+ 'app_secure_images_toggle' => 'Ota käyttöön turvallisemmat kuvien lataukset',
+ 'app_secure_images_desc' => 'Paremman suorituskyvyn takia kaikki kuvat ovat julkisia. Tämä asetus lisää satunnaisen, vaikeasti arvattavan merkkijonon kuvien url-osoitteisiin. Varmista, että hakemistojen indeksit eivät ole palvelimen asetuksissa päällä, jotta niitä ei pääse selaamaan.',
+ 'app_default_editor' => 'Sivujen oletuseditori',
+ 'app_default_editor_desc' => 'Valitse editori, jota käytetään oletuksena uusia sivuja muokattaessa. Valinnan voi ohittaa sivutasolla, jos käyttäjän oikeudet sallivat sen.',
+ 'app_custom_html' => 'HTML-otsakkeen mukautettu sisältö',
+ 'app_custom_html_desc' => 'Tähän annettu sisältö lisätään jokaisen sivun -osan loppuun. Tällä tavalla voit lisätä kätevästi esimerkiksi omia CSS-tyylejä tai analytiikkapalveluiden vaatimia koodeja.',
+ 'app_custom_html_disabled_notice' => 'Mukautettu HTML-otsakkeen sisältö ei ole käytössä tällä asetussivulla, jotta kaikki virheitä aiheuttavat muutokset voidaan poistaa.',
+ 'app_logo' => 'Sivuston logo',
+ 'app_logo_desc' => 'Kuvaa käytetään esimerkiksi sivuston otsikkopalkissa. Kuvan korkeuden tulisi olla 86 pikseliä. Suuremmat kuvat skaalataan pienemmiksi.',
+ 'app_icon' => 'Sivuston kuvake',
+ 'app_icon_desc' => 'Kuvaketta käytetään selaimen välilehdissä ja pikakuvakkeissa. Kuvakkeen tulisi olla 256 pikselin neliönmuotoinen PNG-kuva.',
+ 'app_homepage' => 'Sivuston kotisivu',
+ 'app_homepage_desc' => 'Valitse näkymä, joka näytetään etusivuna oletusnäkymän sijaan. Sivun käyttöoikeuksia ei oteta huomioon valituilla sivuilla.',
+ 'app_homepage_select' => 'Valitse sivu',
+ 'app_footer_links' => 'Alatunnisteen linkit',
+ 'app_footer_links_desc' => 'Lisää linkkejä sivuston alatunnisteeseen. Nämä näkyvät useimpien sivujen alareunassa, myös niiden, jotka eivät vaadi kirjautumista. Voit käyttää merkintää "trans::" käyttääksesi järjestelmän määrittelemiä käännöksiä. Esimerkiksi käyttämällä "trans::common.privacy_policy" saadaan käännetty teksti "Tietosuojaseloste" ja "trans::common.terms_of_service" saadaan käännetty teksti "Palvelun käyttöehdot".',
+ 'app_footer_links_label' => 'Linkin nimi',
+ 'app_footer_links_url' => 'Linkin URL-osoite',
+ 'app_footer_links_add' => 'Lisää alatunnisteen linkki',
+ 'app_disable_comments' => 'Poista kommentit käytöstä',
+ 'app_disable_comments_toggle' => 'Poista kommentit käytöstä',
+ 'app_disable_comments_desc' => 'Poistaa kommentit käytöstä kaikilla sivuilla. Lisättyjä kommentteja ei näytetä.',
+
+ // Color settings
+ 'color_scheme' => 'Sivuston värimalli',
+ 'color_scheme_desc' => 'Määritä sivuston käyttöliittymässä käytettävät värit. Värit voidaan määrittää erikseen tummalle ja vaalealle tilalle, jotta ne sopivat parhaiten teemaan ja varmistavat luettavuuden.',
+ 'ui_colors_desc' => 'Aseta sivuston pääväri ja linkin oletusväri. Ensisijaista väriä käytetään pääasiassa yläpalkissa, painikkeissa ja käyttöliittymän koristeissa. Linkin oletusväriä käytetään tekstipohjaisissa linkeissä ja toiminnoissa sekä kirjoitetussa sisällössä että sivuston käyttöliittymässä.',
+ 'app_color' => 'Pääväri',
+ 'link_color' => 'Linkin oletusväri',
+ 'content_colors_desc' => 'Määritä eri sisältötyyppien värit. Luettavuuden ja saavutettavuuden kannalta on suositeltavaa valita värit, joiden kirkkaus on samankaltainen kuin oletusvärien.',
+ 'bookshelf_color' => 'Hyllyn väri',
+ 'book_color' => 'Kirjan väri',
+ 'chapter_color' => 'Luvun väri',
+ 'page_color' => 'Sivun väri',
+ 'page_draft_color' => 'Luonnoksen väri',
+
+ // Registration Settings
+ 'reg_settings' => 'Rekisteröityminen',
+ 'reg_enable' => 'Salli rekisteröityminen',
+ 'reg_enable_toggle' => 'Salli rekisteröityminen',
+ 'reg_enable_desc' => 'Kun rekisteröityminen on käytössä, vierailijat voivat rekisteröityä sivuston käyttäjiksi. Rekisteröitymisen yhteydessä heille annetaan oletuskäyttäjärooli.',
+ 'reg_default_role' => 'Oletuskäyttäjärooli rekisteröitymisen jälkeen',
+ 'reg_enable_external_warning' => 'Yllä olevaa vaihtoehtoa ei oteta huomioon, kun ulkoinen LDAP- tai SAML-todennus on käytössä. Käyttäjätilit luodaan automaattisesti, jos tunnistautuminen käytössä olevaan ulkoiseen järjestelmään onnistuu.',
+ 'reg_email_confirmation' => 'Sähköpostivahvistus',
+ 'reg_email_confirmation_toggle' => 'Vaadi sähköpostivahvistus',
+ 'reg_confirm_email_desc' => 'Jos domain-rajoitus on käytössä, sähköpostivahvistus on oletuksena päällä, eikä tätä valintaa oteta huomioon.',
+ 'reg_confirm_restrict_domain' => 'Domain-rajoitus',
+ 'reg_confirm_restrict_domain_desc' => 'Kirjoita pilkulla erotettu luettelo sähköpostien domain-nimistä, joihin haluat rajoittaa rekisteröitymisen. Käyttäjille lähetetään sähköpostiviesti osoitteen vahvistamiseksi, ennen kuin he pääsevät käyttämään sivustoa. Huomaa, että käyttäjät voivat muuttaa sähköpostiosoitteensa onnistuneen rekisteröinnin jälkeen.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Ei rajoituksia',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Huolto',
+ 'maint_image_cleanup' => 'Siivoa kuvat',
+ 'maint_image_cleanup_desc' => 'Tarkistaa kuvista ja luonnoksista mitkä kuvat ja piirustukset ovat tällä hetkellä käytössä ja mitkä ovat tarpeettomia. Varmista, että olet varmuuskopioinut tietokannan ja kuvat ennen tämän toiminnon suorittamista.',
+ 'maint_delete_images_only_in_revisions' => 'Poista myös kuvat, jotka ovat olemassa vain vanhoissa sivujen versioissa',
+ 'maint_image_cleanup_run' => 'Suorita siivous',
+ 'maint_image_cleanup_warning' => ':count mahdollisesti käyttämätöntä kuvaa löytyi. Haluatko varmasti poistaa nämä kuvat?',
+ 'maint_image_cleanup_success' => ':count mahdollisesti käyttämätöntä kuvaa löydetty ja poistettu!',
+ 'maint_image_cleanup_nothing_found' => 'Käyttämättömiä kuvia ei löytynyt, mitään ei poistettu!',
+ 'maint_send_test_email' => 'Lähetä testisähköposti',
+ 'maint_send_test_email_desc' => 'Toiminto lähettää testisähköpostin profiilissasi määritettyyn sähköpostiosoitteeseen.',
+ 'maint_send_test_email_run' => 'Lähetä testisähköposti',
+ 'maint_send_test_email_success' => 'Sähköposti lähetetty osoitteeseen :address',
+ 'maint_send_test_email_mail_subject' => 'Testisähköpostiviesti',
+ 'maint_send_test_email_mail_greeting' => 'Sähköpostin lähetys näyttää toimivan!',
+ 'maint_send_test_email_mail_text' => 'Onnittelut! Koska sait tämän sähköposti-ilmoituksen, sähköpostiasetuksesi näyttävät olevan oikein määritetty.',
+ 'maint_recycle_bin_desc' => 'Poistetut hyllyt, kirjat, luvut ja sivut siirretään roskakoriin, josta ne voidaan palauttaa tai poistaa pysyvästi. Vanhemmat kohteet roskakorissa saatetaan poistaa automaattisesti jonkin ajan kuluttua järjestelmän asetuksista riippuen.',
+ 'maint_recycle_bin_open' => 'Avaa roskakori',
+ 'maint_regen_references' => 'Luo viitteet uudelleen',
+ 'maint_regen_references_desc' => 'Tämä toiminto rakentaa sisältöjen väliset viittaukset uudelleen. Tämä tapahtuu yleensä automaattisesti, mutta tämä toiminto voi olla hyödyllinen indeksoitaessa vanhaa sisältöä tai vaihtoehtoisin menetelmin lisättyä sisältöä.',
+ 'maint_regen_references_success' => 'Viiteindeksi on luotu uudelleen!',
+ 'maint_timeout_command_note' => 'Huomautus: tämän toiminnon suorittaminen voi kestää jonkin aikaa, mikä voi johtaa aikakatkaisusta johtuviin ongelmiin joissakin verkkoympäristöissä. Vaihtoehtoisesti tämä toiminto voidaan suorittaa komentoriviltä.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Roskakori',
+ 'recycle_bin_desc' => 'Tässä voit palauttaa poistetut kohteet tai poistaa ne pysyvästi järjestelmästä. Tämä luettelo on suodattamaton, toisin kuin järjestelmän vastaavat toimintoluettelot, joihin sovelletaan käyttöoikeussuodattimia.',
+ 'recycle_bin_deleted_item' => 'Poistettu kohde',
+ 'recycle_bin_deleted_parent' => 'Vanhempi',
+ 'recycle_bin_deleted_by' => 'Poistanut',
+ 'recycle_bin_deleted_at' => 'Poistoaika',
+ 'recycle_bin_permanently_delete' => 'Poista pysyvästi',
+ 'recycle_bin_restore' => 'Palauta',
+ 'recycle_bin_contents_empty' => 'Roskakori on tällä hetkellä tyhjä',
+ 'recycle_bin_empty' => 'Tyhjennä roskakori',
+ 'recycle_bin_empty_confirm' => 'Tämä tuhoaa pysyvästi kaikki kohteet roskakorissa, mukaan lukien kunkin kohteen sisältämän sisällön. Haluatko varmasti tyhjentää roskakorin?',
+ 'recycle_bin_destroy_confirm' => 'This action will permanently delete this item from the system, along with any child elements listed below, and you will not be able to restore this content. Are you sure you want to permanently delete this item?',
+ 'recycle_bin_destroy_list' => 'Poistettavat kohteet',
+ 'recycle_bin_restore_list' => 'Palautettavat kohteet',
+ 'recycle_bin_restore_confirm' => 'Tämä toiminto palauttaa poistetun kohteen, mukaan lukien kaikki siihen sisältyvät kohteet, alkuperäiseen sijaintiinsa. Jos alkuperäinen sijainti on sittemmin poistettu ja on nyt roskakorissa, myös sitä koskeva kohde on palautettava.',
+ 'recycle_bin_restore_deleted_parent' => 'Kohde, johon tämä kohde sisältyy on myös poistettu. Kohteet pysyvät poistettuina, kunnes kyseinen vanhempi on palautettu.',
+ 'recycle_bin_restore_parent' => 'Palauta vanhempi',
+ 'recycle_bin_destroy_notification' => 'Poistettu yhteensä :count kohdetta roskakorista.',
+ 'recycle_bin_restore_notification' => 'Palautettu yhteensä :count kohdetta roskakorista.',
+
+ // Audit Log
+ 'audit' => 'Tarkastusloki',
+ 'audit_desc' => 'Tämä tarkastusloki näyttää listauksen järjestelmässä suoritetuista toiminnoista. Lista on suodattamaton toisin kuin vastaavat järjestelmässä olevat listat, joihin sovelletaan käyttöoikeussuodattimia.',
+ 'audit_event_filter' => 'Tapahtumasuodatin',
+ 'audit_event_filter_no_filter' => 'Ei suodatinta',
+ 'audit_deleted_item' => 'Poistettu kohde',
+ 'audit_deleted_item_name' => 'Nimi: :name',
+ 'audit_table_user' => 'Käyttäjä',
+ 'audit_table_event' => 'Tapahtuma',
+ 'audit_table_related' => 'Liittyvä kohde tai tieto',
+ 'audit_table_ip' => 'IP-osoite',
+ 'audit_table_date' => 'Toiminnan päiväys',
+ 'audit_date_from' => 'Päiväys alkaen',
+ 'audit_date_to' => 'Päiväys saakka',
+
+ // Role Settings
+ 'roles' => 'Roolit',
+ 'role_user_roles' => 'Käyttäjäroolit',
+ 'roles_index_desc' => 'Rooleja käytetään käyttäjien ryhmittelyyn ja järjestelmän käyttöoikeuksien antamiseen. Kun käyttäjä on useamman roolin jäsen, hän saa kaikkien omien rooliensa kyvyt.',
+ 'roles_x_users_assigned' => ':count käyttäjä osoitettu|:count käyttäjää osoitettu',
+ 'roles_x_permissions_provided' => ':count käyttöoikeus|:count käyttöoikeutta',
+ 'roles_assigned_users' => 'Osoitetut käyttäjät',
+ 'roles_permissions_provided' => 'Annetut käyttöoikeudet',
+ 'role_create' => 'Luo uusi rooli',
+ 'role_delete' => 'Poista rooli',
+ 'role_delete_confirm' => 'Tämä poistaa roolin \':roleName\'.',
+ 'role_delete_users_assigned' => 'Tähän rooliin on osoitettu :userCount käyttäjää. Jos haluat siirtää käyttäjät tästä roolista, valitse uusi rooli alta.',
+ 'role_delete_no_migration' => "Älä siirrä käyttäjiä",
+ 'role_delete_sure' => 'Oletko varma, että haluat poistaa tämän roolin?',
+ 'role_edit' => 'Muokkaa roolia',
+ 'role_details' => 'Roolin tiedot',
+ 'role_name' => 'Roolin nimi',
+ 'role_desc' => 'Lyhyt kuvaus roolista',
+ 'role_mfa_enforced' => 'Vaatii monivaiheisen tunnistautumisen',
+ 'role_external_auth_id' => 'Ulkoisen tunnistautumisen tunnukset',
+ 'role_system' => 'Järjestelmän käyttöoikeudet',
+ 'role_manage_users' => 'Hallinnoi käyttäjiä',
+ 'role_manage_roles' => 'Hallinnoi rooleja ja roolien käyttöoikeuksia',
+ 'role_manage_entity_permissions' => 'Hallinnoi kaikkien kirjojen, lukujen ja sivujen käyttöoikeuksia',
+ 'role_manage_own_entity_permissions' => 'Hallinnoi omien kirjojen, lukujen ja sivujen käyttöoikeuksia',
+ 'role_manage_page_templates' => 'Hallinnoi mallipohjia',
+ 'role_access_api' => 'Pääsy järjestelmän ohjelmointirajapintaan',
+ 'role_manage_settings' => 'Hallinnoi sivuston asetuksia',
+ 'role_export_content' => 'Vie sisältöjä',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Vaihda sivun editoria',
+ 'role_notifications' => 'Vastaanota ja hallinnoi ilmoituksia',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Sisältöjen oikeudet',
+ 'roles_system_warning' => 'Huomaa, että minkä tahansa edellä mainituista kolmesta käyttöoikeudesta voi antaa käyttäjälle mahdollisuuden muuttaa omia tai muiden järjestelmän käyttäjien oikeuksia. Anna näitä oikeuksia sisältävät roolit vain luotetuille käyttäjille.',
+ 'role_asset_desc' => 'Näillä asetuksilla hallitaan oletuksena annettavia käyttöoikeuksia järjestelmässä oleviin sisältöihin. Yksittäisten kirjojen, lukujen ja sivujen käyttöoikeudet kumoavat nämä käyttöoikeudet.',
+ 'role_asset_admins' => 'Ylläpitäjät saavat automaattisesti pääsyn kaikkeen sisältöön, mutta nämä vaihtoehdot voivat näyttää tai piilottaa käyttöliittymävalintoja.',
+ 'role_asset_image_view_note' => 'Tämä tarkoittaa näkyvyyttä kuvien hallinnassa. Pääsy ladattuihin kuvatiedostoihin riippuu asetetusta kuvien tallennusvaihtoehdosta.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Kaikki',
+ 'role_own' => 'Omat',
+ 'role_controlled_by_asset' => 'Määräytyy sen sisällön mukaan, johon ne on ladattu',
+ 'role_save' => 'Tallenna rooli',
+ 'role_users' => 'Käyttäjät tässä roolissa',
+ 'role_users_none' => 'Yhtään käyttäjää ei ole osoitettuna tähän rooliin',
+
+ // Users
+ 'users' => 'Käyttäjät',
+ 'users_index_desc' => 'Luo ja hallinnoi yksittäisiä käyttäjätilejä järjestelmässä. Käyttäjätilejä käytetään kirjautumiseen sekä käyttöoikeuksien hallinnointiin. Käyttöoikeudet perustuvat ensisijaisesti rooleihin, mutta käyttöoikeuksiin voi vaikuttaa myös se, onko käyttäjä tietyn sisällön omistaja.',
+ 'user_profile' => 'Käyttäjäprofiili',
+ 'users_add_new' => 'Lisää uusi käyttäjä',
+ 'users_search' => 'Hae käyttäjiä',
+ 'users_latest_activity' => 'Viimeisin toiminta',
+ 'users_details' => 'Käyttäjän tiedot',
+ 'users_details_desc' => 'Aseta tälle käyttäjälle näyttönimi ja sähköpostiosoite. Sähköpostiosoitetta käytetään sovellukseen kirjautumiseen.',
+ 'users_details_desc_no_email' => 'Aseta tälle käyttäjälle näyttönimi, jonka perusteella käyttäjä voidaan tunnistaa.',
+ 'users_role' => 'Käyttäjäroolit',
+ 'users_role_desc' => 'Valitse, mitä rooleja tälle käyttäjälle annetaan. Jos käyttäjälle on määritetty useita rooleja, näiden roolien käyttöoikeudet yhdistetään ja hän saa kaikki osoitettujen roolien kyvyt.',
+ 'users_password' => 'Käyttäjän salasana',
+ 'users_password_desc' => 'Aseta salasana, jota käytetään sovellukseen kirjautumiseen. Sen on oltava vähintään 8 merkkiä pitkä.',
+ 'users_send_invite_text' => 'Voit lähettää käyttäjälle sähköpostilla kutsun ja antaa käyttäjän asettaa oman salasanansa. Vaihtoehtoisesti voit asettaa salasanan itse.',
+ 'users_send_invite_option' => 'Lähetä kutsu',
+ 'users_external_auth_id' => 'Ulkoisen tunnistautumisen tunnus',
+ 'users_external_auth_id_desc' => 'Tätä tunnusta käytetään BookStack-käyttäjätilin ja ulkoisen tunnistautumisen (kuten SAML2, OIDC tai LDAP) kautta käytettävän tilin yhdistämiseen. Voit jättää tämän kentän huomiotta, jos käytät oletuksena sähköpostipohjaista todennusta.',
+ 'users_password_warning' => 'Täytä alla oleva kenttä vain, jos haluat vaihtaa tämän käyttäjän salasanan.',
+ 'users_system_public' => 'Tämä käyttäjä tarkoittaa kaikkia vieraita, jotka vierailevat sivustollasi. Sitä ei voi käyttää kirjautumiseen ja se annetaan automaattisesti.',
+ 'users_delete' => 'Poista käyttäjä',
+ 'users_delete_named' => 'Poista käyttäjä :userName',
+ 'users_delete_warning' => 'Tämä poistaa käyttäjän \':userName\' kokonaan järjestelmästä.',
+ 'users_delete_confirm' => 'Haluatko varmasti poistaa tämän käyttäjän?',
+ 'users_migrate_ownership' => 'Omistusoikeuden siirto',
+ 'users_migrate_ownership_desc' => 'Valitse käyttäjä, jolle haluat siirtää kaikki poistettavan käyttäjän omistamat sisällöt.',
+ 'users_none_selected' => 'Yhtään käyttäjää ei ole valittu',
+ 'users_edit' => 'Muokkaa käyttäjää',
+ 'users_edit_profile' => 'Muokkaa profiilia',
+ 'users_avatar' => 'Käyttäjän kuva',
+ 'users_avatar_desc' => 'Valitse käyttäjän kuva. Kuvan tulisi olla noin 256 pikselin kokoinen neliö.',
+ 'users_preferred_language' => 'Ensisijainen kieli',
+ 'users_preferred_language_desc' => 'Tämä valinta vaihtaa sovelluksen käyttöliittymässä käytettävän kielen. Tämä ei vaikuta käyttäjän luomaan sisältöön.',
+ 'users_social_accounts' => 'Sosiaalisen median tilit',
+ 'users_social_accounts_desc' => 'Näytä tämän käyttäjän yhdistettyjen sosiaalisen median tilien tila. Sosiaalisen median tilejä voidaan käyttää ensisijaisen tunnistautumistavan ohella.',
+ 'users_social_accounts_info' => 'Täällä voit yhdistää muut tilisi ja nopeuttaa kirjautumista. Yhteyden katkaisu tiliin ei peruuta palvelulle annettua käyttöoikeutta. Käyttöoikeus tulee peruuttaa yhdistetyn sosiaalisen median tilin asetuksista.',
+ 'users_social_connect' => 'Yhdistä tili',
+ 'users_social_disconnect' => 'Katkaise yhteys tiliin',
+ 'users_social_status_connected' => 'Yhdistetty',
+ 'users_social_status_disconnected' => 'Yhteys katkaistu',
+ 'users_social_connected' => ':socialAccount-tili liitettiin onnistuneesti profiiliisi.',
+ 'users_social_disconnected' => ':Yhteys socialAccount-tiliin katkaistiin onnistuneesti profiilistasi.',
+ 'users_api_tokens' => 'API-tunnisteet',
+ 'users_api_tokens_desc' => 'Luo ja hallinnoi tunnisteita, joita käytetään BookStack REST-rajapinnan todennukseen. Rajapinnan käyttöoikeuksia hallinnoidaan sen käyttäjän asetuksista, jolle tunniste kuuluu.',
+ 'users_api_tokens_none' => 'Tälle käyttäjälle ei ole luotu API-tunnisteita',
+ 'users_api_tokens_create' => 'Luo tunniste',
+ 'users_api_tokens_expires' => 'Vanhenee',
+ 'users_api_tokens_docs' => 'API-dokumentaatio',
+ 'users_mfa' => 'Monivaiheinen tunnistautuminen',
+ 'users_mfa_desc' => 'Paranna käyttäjätilisi turvallisuutta ja ota käyttöön monivaiheinen tunnistautuminen.',
+ 'users_mfa_x_methods' => ':count menetelmä määritetty|:count menetelmää määritetty',
+ 'users_mfa_configure' => 'Määritä menetelmiä',
+
+ // API Tokens
+ 'user_api_token_create' => 'Luo uusi API-tunniste',
+ 'user_api_token_name' => 'Nimi',
+ 'user_api_token_name_desc' => 'Anna tunnisteelle helppolukuinen nimi, josta muistaa sen käyttötarkoituksen.',
+ 'user_api_token_expiry' => 'Viimeinen voimassaolopäivä',
+ 'user_api_token_expiry_desc' => 'Aseta päiväys, jolloin tämä tunniste vanhenee. Tämän päiväyksen jälkeen tätä tunnistetta käyttäen tehdyt pyynnöt eivät enää toimi. Tämän kentän jättäminen tyhjäksi asettaa voimassaolon päättymisen 100 vuoden päähän tulevaisuuteen.',
+ 'user_api_token_create_secret_message' => 'Välittömästi tämän tunnisteen luomisen jälkeen luodaan ja näytetään "Tunnisteen ID" ja "Tunnisteen salaisuus". Salaisuus näytetään vain kerran, joten kopioi arvo jonnekin turvalliseen paikkaan ennen kuin jatkat.',
+ 'user_api_token' => 'API-tunniste',
+ 'user_api_token_id' => 'Tunnisteen ID',
+ 'user_api_token_id_desc' => 'Tämä on järjestelmän luoma tunniste, jota ei voi muokata ja jota on käytettävä API-pyynnöissä.',
+ 'user_api_token_secret' => 'Tunnisteen salaisuus',
+ 'user_api_token_secret_desc' => 'Tämä on järjestelmän tälle tunnisteelle luoma salaisuus, jota on käytettävä API-pyynnöissä. Tämä näytetään vain kerran, joten kopioi tämä arvo jonnekin turvalliseen paikkaan.',
+ 'user_api_token_created' => 'Tunniste luotu :timeAgo',
+ 'user_api_token_updated' => 'Tunniste päivitetty :timeAgo',
+ 'user_api_token_delete' => 'Poista tunniste',
+ 'user_api_token_delete_warning' => 'Tämä poistaa API-tunnisteen \':tokenName\' kokonaan järjestelmästä.',
+ 'user_api_token_delete_confirm' => 'Oletko varma, että haluat poistaa tämän API-tunnisteen?',
+
+ // Webhooks
+ 'webhooks' => 'Toimintokutsut',
+ 'webhooks_index_desc' => 'Toimintokutsut ovat tapa lähettää tietoja ulkoisiin URL-osoitteisiin, kun järjestelmässä tapahtuu tiettyjä toimintoja ja tapahtumia. Tämä mahdollistaa näihin tapahtumiin perustuvan integroinnin muihin alustoihin, esimerkiksi viesti- tai ilmoitusjärjestelmiin.',
+ 'webhooks_x_trigger_events' => ':count käynnistävä tapahtuma|:count käynnistävää tapahtumaa',
+ 'webhooks_create' => 'Luo uusi toimintokutsu',
+ 'webhooks_none_created' => 'Toimintokutsuja ei ole luotu.',
+ 'webhooks_edit' => 'Muokkaa toimintokutsua',
+ 'webhooks_save' => 'Tallenna toimintokutsu',
+ 'webhooks_details' => 'Toimintokutsun tiedot',
+ 'webhooks_details_desc' => 'Anna selkeä nimi ja POST-päätepisteen sijainti, johon toimintokutsun tiedot lähetetään.',
+ 'webhooks_events' => 'Toimintokutsun tapahtumat',
+ 'webhooks_events_desc' => 'Valitse kaikki tapahtumat, jotka käynnistävät tämän toimintokutsun.',
+ 'webhooks_events_warning' => 'Huomaa, että toimintokutsu käynnistetään kaikissa valituissa tapahtumissa, vaikka niihin liittyisi muokautettuja käyttöoikeuksia. Varmista, että tämän toimintokutsun käyttö ei paljasta luottamuksellista sisältöä.',
+ 'webhooks_events_all' => 'Kaikki järjestelmän tapahtumat',
+ 'webhooks_name' => 'Toimintokutsun nimi',
+ 'webhooks_timeout' => 'Toimintokutsun aikakatkaisu (sekuntia)',
+ 'webhooks_endpoint' => 'Toimintokutsun päätepiste',
+ 'webhooks_active' => 'Toimintokutsu aktiivinen',
+ 'webhook_events_table_header' => 'Tapahtumat',
+ 'webhooks_delete' => 'Poista toimintokutsu',
+ 'webhooks_delete_warning' => 'Tämä poistaa toimintokutsun \':webhookName\' kokonaan järjestelmästä.',
+ 'webhooks_delete_confirm' => 'Oletko varma, että haluat poistaa tämän toimintokutsun?',
+ 'webhooks_format_example' => 'Esimerkki toimintokutsusta',
+ 'webhooks_format_example_desc' => 'Toimintokutsun tiedot lähetetään JSON-muodossa POST-pyyntönä määritettyyn päätepisteeseen alla näkyvän mallin mukaisesti. Ominaisuudet "related_item" ja "url" ovat valinnaisia ja riippuvat käynnistetyn tapahtuman tyypistä.',
+ 'webhooks_status' => 'Toimintokutsun tila',
+ 'webhooks_last_called' => 'Viimeksi kutsuttu:',
+ 'webhooks_last_errored' => 'Viimeisin virhe:',
+ 'webhooks_last_error_message' => 'Viimeisin virheviesti:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/fi/validation.php b/lang/fi/validation.php
new file mode 100644
index 00000000000..aef10b4d3ab
--- /dev/null
+++ b/lang/fi/validation.php
@@ -0,0 +1,123 @@
+ ':attribute tulee hyväksyä.',
+ 'active_url' => ':attribute ei ole kelvollinen URL.',
+ 'after' => ':attribute tulee olla päiväyksen :date jälkeinen päiväys.',
+ 'alpha' => ':attribute voi sisältää vain kirjaimia.',
+ 'alpha_dash' => ':attribute voi sisältää vain kirjaimia, numeroita, yhdys- ja alaviivoja.',
+ 'alpha_num' => ':attribute voi sisältää vain kirjaimia ja numeroita.',
+ 'array' => ':attribute tulee olla taulukkomuuttuja.',
+ 'backup_codes' => 'Annettu koodi ei ole kelvollinen tai se on jo käytetty.',
+ 'before' => ':attribute päiväyksen tulee olla ennen :date.',
+ 'between' => [
+ 'numeric' => ':attribute tulee olla välillä :min ja :max.',
+ 'file' => ':attribute tulee olla :min - :max kilotavua.',
+ 'string' => ':attribute tulee olla :min - :max merkkiä pitkä.',
+ 'array' => ':attribute tulee sisältää :min - :max kohdetta.',
+ ],
+ 'boolean' => ':attribute tulee olla tosi tai epätosi.',
+ 'confirmed' => ':attribute vahvistus ei täsmää.',
+ 'date' => ':attribute ei ole kelvollinen päiväys.',
+ 'date_format' => ':attribute ei täsmää muodon :format kanssa.',
+ 'different' => ':attribute ja :other tulee erota toisistaan.',
+ 'digits' => ':attribute tulee olla :digits numeroa pitkä.',
+ 'digits_between' => ':attribute tulee olla :min - :max numeroa.',
+ 'email' => ':attribute tulee olla kelvollinen sähköpostiosoite.',
+ 'ends_with' => ':attribute arvon tulee päättyä johonkin seuraavista: :values',
+ 'file' => ':attribute tulee olla kelvollinen tiedosto.',
+ 'filled' => 'Kenttä :attribute vaaditaan.',
+ 'gt' => [
+ 'numeric' => ':attribute tulee olla suurempi kuin :value.',
+ 'file' => ':attribute tulee olla suurempi kuin :value kilotavua.',
+ 'string' => ':attribute tulee olla suurempi kuin :value merkkiä.',
+ 'array' => ':attribute tulee sisältää vähintään :value kohdetta.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute on oltava suurempi tai samansuuruinen kuin :value.',
+ 'file' => ':attribute on oltava suurempi tai samansuuruinen kuin :value kilotavua.',
+ 'string' => ':attribute on oltava suurempi tai samansuuruinen kuin :value merkkiä.',
+ 'array' => ':attribute tulee sisältää vähintään :value kohdetta tai enemmän.',
+ ],
+ 'exists' => 'Valittu :attribute ei ole kelvollinen.',
+ 'image' => ':attribute on oltava kuva.',
+ 'image_extension' => ':-attribute tulee sisältää kelvollisen ja tuetun kuvan tiedostopäätteen.',
+ 'in' => 'Valittu :attribute ei ole kelvollinen.',
+ 'integer' => ':attribute tulee olla kokonaisluku.',
+ 'ip' => ':attribute tulee olla kelvollinen IP-osoite.',
+ 'ipv4' => ':attribute tulee olla kelvollinen IPv4-osoite.',
+ 'ipv6' => ':attribute tulee olla kelvollinen IPv6 -osoite.',
+ 'json' => ':attribute tulee olla kelvollinen JSON-merkkijono.',
+ 'lt' => [
+ 'numeric' => ':attribute tulee olla vähemmän kuin :value.',
+ 'file' => ':attribute tulee olla vähemmän kuin :value kilotavua.',
+ 'string' => ':attribute tulee olla vähemmän kuin :value merkkiä.',
+ 'array' => ':attribute tulee sisältää vähemmän kuin :value kohdetta.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute tulee olla vähemmän tai yhtä suuri kuin :value.',
+ 'file' => ':attribute tulee olla vähemmän tai yhtä suuri kuin :value kilotavua.',
+ 'string' => ':attribute tulee olla vähemmän tai yhtä suuri kuin :value merkkiä.',
+ 'array' => ':attribute ei tule sisältää enempää kuin :value kohdetta.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute ei saa olla suurempi kuin :max.',
+ 'file' => ':attribute ei saa olla suurempi kuin :max kilotavua.',
+ 'string' => ':attribute ei saa olla suurempi kuin :max merkkiä.',
+ 'array' => ':attribute ei saa sisältää enempää kuin :max kohdetta.',
+ ],
+ 'mimes' => ':attribute tulee olla tiedosto jonka tyyppi on :values.',
+ 'min' => [
+ 'numeric' => ':attribute tulee olla vähintään :min.',
+ 'file' => ':attribute tulee olla vähintään :min kilotavua.',
+ 'string' => ':attribute tulee olla vähintään :min merkkiä.',
+ 'array' => ':attribute tulee sisältää vähintään :min kohdetta.',
+ ],
+ 'not_in' => 'Valittu :attribute ei ole kelvollinen.',
+ 'not_regex' => ':attribute muoto ei ole kelvollinen.',
+ 'numeric' => ':attribute tulee olla numero.',
+ 'regex' => ':attribute muoto ei ole kelvollinen.',
+ 'required' => 'Kenttä :attribute vaaditaan.',
+ 'required_if' => 'Kenttä :attribute vaaditaan, kun :other on :value.',
+ 'required_with' => 'Kenttä :attribute vaaditaan, kun :values on määritettynä.',
+ 'required_with_all' => 'Kenttä :attribute vaaditaan, kun kaikki näistä on määritettynä :values.',
+ 'required_without' => 'Kenttä :attribute vaaditaan, kun :values ei ole määritettynä.',
+ 'required_without_all' => 'Kenttä :attribute vaaditaan, kun mikään näistä ei ole määritettynä :values.',
+ 'same' => ':attribute ja :other tulee täsmätä.',
+ 'safe_url' => 'Annettu linkki ei ole mahdollisesti turvallinen.',
+ 'size' => [
+ 'numeric' => ':attribute tulee olla :size.',
+ 'file' => ':attribute tulee olla :size kilotavua.',
+ 'string' => ':attribute tulee olla :size merkkiä.',
+ 'array' => ':attribute tulee sisältää :size kohdetta.',
+ ],
+ 'string' => ':attribute tulee olla merkkijono.',
+ 'timezone' => ':attribute tulee olla kelvollinen aikavyöhyke.',
+ 'totp' => 'Annettu koodi ei ole kelvollinen tai se on vanhentunut.',
+ 'unique' => ':attribute on jo käytössä.',
+ 'url' => ':attribute muoto ei ole kelvollinen.',
+ 'uploaded' => 'Tiedostoa ei voitu ladata. Palvelin ei ehkä hyväksy tämän kokoisia tiedostoja.',
+
+ 'zip_file' => 'Attribuutin :attribute on viitattava tiedostoon ZIP-tiedoston sisällä.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Salasanan vahvistus vaaditaan',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/fr/activities.php b/lang/fr/activities.php
new file mode 100644
index 00000000000..0e70917da55
--- /dev/null
+++ b/lang/fr/activities.php
@@ -0,0 +1,140 @@
+ 'a créé la page',
+ 'page_create_notification' => 'Page créée avec succès',
+ 'page_update' => 'a modifié la page',
+ 'page_update_notification' => 'Page modifiée avec succès',
+ 'page_delete' => 'a supprimé la page',
+ 'page_delete_notification' => 'Page supprimée avec succès',
+ 'page_restore' => 'a restauré la page',
+ 'page_restore_notification' => 'Page restaurée avec succès',
+ 'page_move' => 'a déplacé la page',
+ 'page_move_notification' => 'Page déplacée avec succès',
+
+ // Chapters
+ 'chapter_create' => 'a créé le chapitre',
+ 'chapter_create_notification' => 'Chapitre créé avec succès',
+ 'chapter_update' => 'a modifié le chapitre',
+ 'chapter_update_notification' => 'Chapitre modifié avec succès',
+ 'chapter_delete' => 'a supprimé le chapitre',
+ 'chapter_delete_notification' => 'Chapitre supprimé avec succès',
+ 'chapter_move' => 'a déplacé le chapitre',
+ 'chapter_move_notification' => 'Chapitre déplacé avec succès',
+
+ // Books
+ 'book_create' => 'a créé un livre',
+ 'book_create_notification' => 'Livre créé avec succès',
+ 'book_create_from_chapter' => 'chapitre converti en livre',
+ 'book_create_from_chapter_notification' => 'Chapitre converti en livre avec succès',
+ 'book_update' => 'a modifié le livre',
+ 'book_update_notification' => 'Livre modifié avec succès',
+ 'book_delete' => 'a supprimé un livre',
+ 'book_delete_notification' => 'Livre supprimé avec succès',
+ 'book_sort' => 'a réordonné le livre',
+ 'book_sort_notification' => 'Livre restauré avec succès',
+
+ // Bookshelves
+ 'bookshelf_create' => 'a créé l\'étagère',
+ 'bookshelf_create_notification' => 'Étagère créée avec succès',
+ 'bookshelf_create_from_book' => 'livre converti en étagère',
+ 'bookshelf_create_from_book_notification' => 'Livre converti en étagère avec succès',
+ 'bookshelf_update' => 'étagère mise à jour',
+ 'bookshelf_update_notification' => 'Étagère mise à jour avec succès',
+ 'bookshelf_delete' => 'étagère supprimée',
+ 'bookshelf_delete_notification' => 'Étagère supprimée avec succès',
+
+ // Revisions
+ 'revision_restore' => 'a restauré la révision',
+ 'revision_delete' => 'révision supprimée',
+ 'revision_delete_notification' => 'Révision supprimée avec succès',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" a été ajouté dans vos favoris',
+ 'favourite_remove_notification' => '":name" a été supprimé de vos favoris',
+
+ // Watching
+ 'watch_update_level_notification' => 'Préférences de surveillance mises à jour avec succès',
+
+ // Auth
+ 'auth_login' => 'connecté',
+ 'auth_register' => 'enregistré en tant que nouvel utilisateur',
+ 'auth_password_reset_request' => 'demande de réinitialisation du mot de passe',
+ 'auth_password_reset_update' => 'réinitialisation du mot de passe',
+ 'mfa_setup_method' => 'méthode MFA configurée',
+ 'mfa_setup_method_notification' => 'Méthode multi-facteurs configurée avec succès',
+ 'mfa_remove_method' => 'méthode MFA supprimée',
+ 'mfa_remove_method_notification' => 'Méthode multi-facteurs supprimée avec succès',
+
+ // Settings
+ 'settings_update' => 'paramètres mis à jour',
+ 'settings_update_notification' => 'Paramètres mis à jour avec succès',
+ 'maintenance_action_run' => 'exécuter l\'action de maintenance',
+
+ // Webhooks
+ 'webhook_create' => 'Créer un Webhook',
+ 'webhook_create_notification' => 'Webhook créé avec succès',
+ 'webhook_update' => 'éditer un Webhook',
+ 'webhook_update_notification' => 'Webhook modifié avec succès',
+ 'webhook_delete' => 'supprimer un Webhook',
+ 'webhook_delete_notification' => 'Webhook supprimé avec succès',
+
+ // Imports
+ 'import_create' => 'import créé',
+ 'import_create_notification' => 'Importation envoyée avec succès',
+ 'import_run' => 'importation mise à jour',
+ 'import_run_notification' => 'Contenu importé avec succès',
+ 'import_delete' => 'import supprimé',
+ 'import_delete_notification' => 'Importation supprimée avec succès',
+
+ // Users
+ 'user_create' => 'utilisateur créé',
+ 'user_create_notification' => 'Utilisateur créé avec succès',
+ 'user_update' => 'utilisateur mis à jour',
+ 'user_update_notification' => 'Utilisateur mis à jour avec succès',
+ 'user_delete' => 'utilisateur supprimé',
+ 'user_delete_notification' => 'Utilisateur supprimé avec succès',
+
+ // API Tokens
+ 'api_token_create' => 'a créé un jeton API',
+ 'api_token_create_notification' => 'Jeton d\'API créé avec succès',
+ 'api_token_update' => 'a mis à jour un jeton API',
+ 'api_token_update_notification' => 'Jeton d\'API mis à jour avec succès',
+ 'api_token_delete' => 'a supprimé un jeton API',
+ 'api_token_delete_notification' => 'Jeton d\'API supprimé avec succès',
+
+ // Roles
+ 'role_create' => 'rôle créé',
+ 'role_create_notification' => 'Rôle créé avec succès',
+ 'role_update' => 'rôle mis à jour',
+ 'role_update_notification' => 'Rôle mis à jour avec succès',
+ 'role_delete' => 'rôle supprimé',
+ 'role_delete_notification' => 'Rôle supprimé avec succès',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'corbeille vidée',
+ 'recycle_bin_restore' => 'restauré à partir de la corbeille',
+ 'recycle_bin_destroy' => 'supprimé de la corbeille',
+
+ // Comments
+ 'commented_on' => 'a commenté',
+ 'comment_create' => 'Commentaire ajouté',
+ 'comment_update' => 'Commentaire mis à jour',
+ 'comment_delete' => 'Commentaire supprimé',
+
+ // Sort Rules
+ 'sort_rule_create' => 'règle de tri crée',
+ 'sort_rule_create_notification' => 'Règle de tri crée avec succès',
+ 'sort_rule_update' => 'règle de tri mise à jour',
+ 'sort_rule_update_notification' => 'Règle de tri mise à jour avec succès',
+ 'sort_rule_delete' => 'règle de tri supprimée',
+ 'sort_rule_delete_notification' => 'La règle de tri a été supprimée avec succès',
+
+ // Other
+ 'permissions_update' => 'a mis à jour les autorisations sur',
+];
diff --git a/lang/fr/auth.php b/lang/fr/auth.php
new file mode 100644
index 00000000000..fab11a83bfc
--- /dev/null
+++ b/lang/fr/auth.php
@@ -0,0 +1,117 @@
+ 'Ces informations ne correspondent à aucun compte.',
+ 'throttle' => 'Trop d\'essais, veuillez réessayer dans :seconds secondes.',
+
+ // Login & Register
+ 'sign_up' => 'S\'inscrire',
+ 'log_in' => 'Se connecter',
+ 'log_in_with' => 'Se connecter avec :socialDriver',
+ 'sign_up_with' => 'S\'inscrire avec :socialDriver',
+ 'logout' => 'Se déconnecter',
+
+ 'name' => 'Nom',
+ 'username' => 'Nom d\'utilisateur',
+ 'email' => 'E-mail',
+ 'password' => 'Mot de passe',
+ 'password_confirm' => 'Confirmez le mot de passe',
+ 'password_hint' => 'Doit être d\'au moins 8 caractères',
+ 'forgot_password' => 'Mot de passe oublié ?',
+ 'remember_me' => 'Se souvenir de moi',
+ 'ldap_email_hint' => 'Merci d\'entrer une adresse e-mail pour ce compte.',
+ 'create_account' => 'Créer un compte',
+ 'already_have_account' => 'Vous avez déjà un compte ?',
+ 'dont_have_account' => 'Vous n\'avez pas de compte ?',
+ 'social_login' => 'Connexion avec un réseau social',
+ 'social_registration' => 'Inscription avec un réseau social',
+ 'social_registration_text' => 'S\'inscrire et se connecter avec un réseau social.',
+
+ 'register_thanks' => 'Merci pour votre inscription !',
+ 'register_confirm' => 'Vérifiez vos e-mails et cliquez sur le lien de confirmation pour rejoindre :appName.',
+ 'registrations_disabled' => 'Les inscriptions sont désactivées pour le moment',
+ 'registration_email_domain_invalid' => 'Cette adresse e-mail ne peut pas accéder à l\'application',
+ 'register_success' => 'Merci pour votre inscription. Vous êtes maintenant inscrit(e) et connecté(e)',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Tentative de connexion',
+ 'auto_init_starting_desc' => 'Nous contactons votre système d\'authentification pour démarrer le processus de connexion. S\'il n\'y a pas de progrès après 5 secondes, vous pouvez essayer de cliquer sur le lien ci-dessous.',
+ 'auto_init_start_link' => 'Procéder à l\'authentification',
+
+ // Password Reset
+ 'reset_password' => 'Réinitialiser le mot de passe',
+ 'reset_password_send_instructions' => 'Entrez votre adresse e-mail ci-dessous et un e-mail avec un lien de réinitialisation de mot de passe vous sera envoyé.',
+ 'reset_password_send_button' => 'Envoyer un lien de réinitialisation',
+ 'reset_password_sent' => 'Un lien de réinitialisation du mot de passe sera envoyé à :email si cette adresse e-mail est trouvée dans le système.',
+ 'reset_password_success' => 'Votre mot de passe a été réinitialisé avec succès.',
+ 'email_reset_subject' => 'Réinitialisez votre mot de passe pour :appName',
+ 'email_reset_text' => 'Vous recevez cet e-mail parce que nous avons reçu une demande de réinitialisation pour votre compte.',
+ 'email_reset_not_requested' => 'Si vous n\'avez pas effectué cette demande, vous pouvez ignorer cet e-mail.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Confirmez votre adresse e-mail pour :appName',
+ 'email_confirm_greeting' => 'Merci d\'avoir rejoint :appName !',
+ 'email_confirm_text' => 'Merci de confirmer en cliquant sur le lien ci-dessous :',
+ 'email_confirm_action' => 'Confirmez votre adresse e-mail',
+ 'email_confirm_send_error' => 'La confirmation par e-mail est requise mais le système n\'a pas pu envoyer l\'e-mail. Contactez l\'administrateur système.',
+ 'email_confirm_success' => 'Votre adresse e-mail a été confirmée ! Vous devriez maintenant pouvoir vous connecter en utilisant cette adresse e-mail.',
+ 'email_confirm_resent' => 'L\'e-mail de confirmation a été ré-envoyé. Vérifiez votre boîte de réception.',
+ 'email_confirm_thanks' => 'Merci d\'avoir confirmé !',
+ 'email_confirm_thanks_desc' => 'Veuillez patienter un moment pendant que votre confirmation est traitée. Si vous n’êtes pas redirigé après 3 secondes, appuyez sur le lien « Continuer » ci-dessous pour continuer.',
+
+ 'email_not_confirmed' => 'Adresse e-mail non confirmée',
+ 'email_not_confirmed_text' => 'Votre adresse e-mail n\'a pas été confirmée.',
+ 'email_not_confirmed_click_link' => 'Merci de cliquer sur le lien dans l\'e-mail qui vous a été envoyé après l\'enregistrement.',
+ 'email_not_confirmed_resend' => 'Si vous ne retrouvez plus l\'e-mail, vous pouvez renvoyer un e-mail de confirmation en utilisant le formulaire ci-dessous.',
+ 'email_not_confirmed_resend_button' => 'Renvoyer l\'e-mail de confirmation',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Vous avez été invité(e) à rejoindre :appName !',
+ 'user_invite_email_greeting' => 'Un compte vous a été créé sur :appName.',
+ 'user_invite_email_text' => 'Cliquez sur le bouton ci-dessous pour renseigner le mot de passe et récupérer l\'accès :',
+ 'user_invite_email_action' => 'Renseignez le mot de passe de votre compte',
+ 'user_invite_page_welcome' => 'Bienvenue dans :appName !',
+ 'user_invite_page_text' => 'Pour finaliser votre compte et recevoir l\'accès, vous devez renseigner le mot de passe qui sera utilisé pour la connexion à :appName les prochaines fois.',
+ 'user_invite_page_confirm_button' => 'Confirmez le mot de passe',
+ 'user_invite_success_login' => 'Mot de passe défini, vous devriez maintenant pouvoir vous connecter en utilisant votre mot de passe défini pour accéder à :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Authentification multi-facteurs',
+ 'mfa_setup_desc' => 'Configurer l\'authentification multi-facteurs ajoute une couche supplémentaire de sécurité à votre compte utilisateur.',
+ 'mfa_setup_configured' => 'Déjà configuré',
+ 'mfa_setup_reconfigure' => 'Reconfigurer',
+ 'mfa_setup_remove_confirmation' => 'Êtes-vous sûr de vouloir supprimer cette méthode d\'authentification multi-facteurs ?',
+ 'mfa_setup_action' => 'Configuration',
+ 'mfa_backup_codes_usage_limit_warning' => 'Il vous reste moins de 5 codes de secours, veuillez générer et stocker un nouveau jeu de codes afin d\'éviter tout verrouillage de votre compte.',
+ 'mfa_option_totp_title' => 'Application mobile',
+ 'mfa_option_totp_desc' => 'Pour utiliser l\'authentification multi-facteurs, vous aurez besoin d\'une application mobile qui supporte TOTP comme Google Authenticator, Authy ou Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Codes de secours',
+ 'mfa_option_backup_codes_desc' => 'Génère un ensemble de codes de sauvegarde à usage unique que vous saisirez lors de la connexion pour vérifier votre identité. Veillez à les conserver dans un endroit sûr.',
+ 'mfa_gen_confirm_and_enable' => 'Confirmer et activer',
+ 'mfa_gen_backup_codes_title' => 'Configuration des codes de secours',
+ 'mfa_gen_backup_codes_desc' => 'Stockez la liste des codes ci-dessous dans un endroit sûr. Lorsque vous accédez au système, vous pourrez utiliser l\'un des codes comme un deuxième mécanisme d\'authentification.',
+ 'mfa_gen_backup_codes_download' => 'Télécharger les codes',
+ 'mfa_gen_backup_codes_usage_warning' => 'Chaque code ne peut être utilisé qu\'une seule fois',
+ 'mfa_gen_totp_title' => 'Configuration de l\'application mobile',
+ 'mfa_gen_totp_desc' => 'Pour utiliser l\'authentification multi-facteurs, vous aurez besoin d\'une application mobile qui supporte TOTP comme Google Authenticator, Authy ou Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Scannez le QR code ci-dessous avec votre application d\'authentification préférée pour débuter.',
+ 'mfa_gen_totp_verify_setup' => 'Vérifier la configuration',
+ 'mfa_gen_totp_verify_setup_desc' => 'Vérifiez que tout fonctionne en utilisant un code généré par votre application d\'authentification, dans la zone ci-dessous :',
+ 'mfa_gen_totp_provide_code_here' => 'Fournissez le code généré par votre application ici',
+ 'mfa_verify_access' => 'Vérifier l\'accès',
+ 'mfa_verify_access_desc' => 'Votre compte d\'utilisateur vous demande de confirmer votre identité par un niveau supplémentaire de vérification avant que vous n\'ayez accès. Vérifiez-la en utilisant l\'une de vos méthodes configurées pour continuer.',
+ 'mfa_verify_no_methods' => 'Aucune méthode configurée',
+ 'mfa_verify_no_methods_desc' => 'Aucune méthode d\'authentification multi-facteurs n\'a pu être trouvée pour votre compte. Vous devez configurer au moins une méthode avant d\'obtenir l\'accès.',
+ 'mfa_verify_use_totp' => 'Vérifier à l\'aide d\'une application mobile',
+ 'mfa_verify_use_backup_codes' => 'Vérifier en utilisant un code de secours',
+ 'mfa_verify_backup_code' => 'Code de secours',
+ 'mfa_verify_backup_code_desc' => 'Entrez l\'un de vos codes de secours restants ci-dessous :',
+ 'mfa_verify_backup_code_enter_here' => 'Saisissez un code de secours ici',
+ 'mfa_verify_totp_desc' => 'Entrez ci-dessous le code généré à l\'aide de votre application mobile :',
+ 'mfa_setup_login_notification' => 'Méthode multi-facteurs configurée. Veuillez maintenant vous reconnecter en utilisant la méthode configurée.',
+];
diff --git a/lang/fr/common.php b/lang/fr/common.php
new file mode 100644
index 00000000000..8f8a31135e0
--- /dev/null
+++ b/lang/fr/common.php
@@ -0,0 +1,115 @@
+ 'Annuler',
+ 'close' => 'Fermer',
+ 'confirm' => 'Confirmer',
+ 'back' => 'Retour',
+ 'save' => 'Enregistrer',
+ 'continue' => 'Continuer',
+ 'select' => 'Sélectionner',
+ 'toggle_all' => 'Tout sélectionner',
+ 'more' => 'Montrer plus',
+
+ // Form Labels
+ 'name' => 'Nom',
+ 'description' => 'Description',
+ 'role' => 'Rôle',
+ 'cover_image' => 'Image de couverture',
+ 'cover_image_description' => 'Cette image doit faire environ 440x250px. Elle sera mise à l\'échelle et recadrée automatiquement pour s\'adapter à l\'interface utilisateur, si nécessaire, à différents emplacements.',
+
+ // Actions
+ 'actions' => 'Actions',
+ 'view' => 'Voir',
+ 'view_all' => 'Tout afficher',
+ 'new' => 'Nouveau',
+ 'create' => 'Créer',
+ 'update' => 'Modifier',
+ 'edit' => 'Éditer',
+ 'archive' => 'Archiver',
+ 'unarchive' => 'Désarchiver',
+ 'sort' => 'Trier',
+ 'move' => 'Déplacer',
+ 'copy' => 'Copier',
+ 'reply' => 'Répondre',
+ 'delete' => 'Supprimer',
+ 'delete_confirm' => 'Confirmer la suppression',
+ 'search' => 'Rechercher',
+ 'search_clear' => 'Réinitialiser la recherche',
+ 'reset' => 'Réinitialiser',
+ 'remove' => 'Enlever',
+ 'add' => 'Ajouter',
+ 'configure' => 'Configurer',
+ 'manage' => 'Gérer',
+ 'fullscreen' => 'Plein écran',
+ 'favourite' => 'Favoris',
+ 'unfavourite' => 'Supprimer des favoris',
+ 'next' => 'Suivant',
+ 'previous' => 'Précédent',
+ 'filter_active' => 'Filtre actif :',
+ 'filter_clear' => 'Effacer le filtre',
+ 'download' => 'Télécharger',
+ 'open_in_tab' => 'Ouvrir dans un onglet',
+ 'open' => 'Ouvert',
+
+ // Sort Options
+ 'sort_options' => 'Options de tri',
+ 'sort_direction_toggle' => 'Inverser la direction du tri',
+ 'sort_ascending' => 'Tri ascendant',
+ 'sort_descending' => 'Tri descendant',
+ 'sort_name' => 'Nom',
+ 'sort_default' => 'Défaut',
+ 'sort_created_at' => 'Date de création',
+ 'sort_updated_at' => 'Date de mise à jour',
+
+ // Misc
+ 'deleted_user' => 'Utilisateur supprimé',
+ 'no_activity' => 'Aucune activité',
+ 'no_items' => 'Aucun élément',
+ 'back_to_top' => 'Retour en haut',
+ 'skip_to_main_content' => 'Passer au contenu principal',
+ 'toggle_details' => 'Afficher les détails',
+ 'toggle_thumbnails' => 'Afficher les vignettes',
+ 'details' => 'Détails',
+ 'grid_view' => 'Vue en grille',
+ 'list_view' => 'Vue en liste',
+ 'default' => 'Défaut',
+ 'breadcrumb' => 'Fil d\'Ariane',
+ 'status' => 'Statut',
+ 'status_active' => 'Actif',
+ 'status_inactive' => 'Inactif',
+ 'never' => 'Jamais',
+ 'none' => 'Aucun',
+
+ // Header
+ 'homepage' => 'Accueil',
+ 'header_menu_expand' => 'Développer le menu',
+ 'profile_menu' => 'Menu du profil',
+ 'view_profile' => 'Voir le profil',
+ 'edit_profile' => 'Modifier le profil',
+ 'dark_mode' => 'Mode sombre',
+ 'light_mode' => 'Mode clair',
+ 'global_search' => 'Recherche',
+
+ // Layout tabs
+ 'tab_info' => 'Informations',
+ 'tab_info_label' => 'Onglet : Afficher les informations secondaires',
+ 'tab_content' => 'Contenu',
+ 'tab_content_label' => 'Onglet : Afficher le contenu principal',
+
+ // Email Content
+ 'email_action_help' => 'Si vous rencontrez des problèmes pour cliquer sur le bouton ":actionText", copiez et collez l\'adresse ci-dessous dans votre navigateur :',
+ 'email_rights' => 'Tous droits réservés',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Politique de confidentialité',
+ 'terms_of_service' => 'Conditions d\'utilisation',
+
+ // OpenSearch
+ 'opensearch_description' => 'Recherche :appName',
+];
diff --git a/lang/fr/components.php b/lang/fr/components.php
new file mode 100644
index 00000000000..379fba2f73f
--- /dev/null
+++ b/lang/fr/components.php
@@ -0,0 +1,46 @@
+ 'Sélectionner une image',
+ 'image_list' => 'Liste d\'images',
+ 'image_details' => 'Détails de l’Image',
+ 'image_upload' => 'Téléverser une image',
+ 'image_intro' => 'Ici, vous pouvez sélectionner et gérer les images qui ont été précédemment téléversées sur le système.',
+ 'image_intro_upload' => 'Téléversez une nouvelle image en glissant un fichier image dans cette fenêtre, ou en utilisant le bouton "Téléverser une image" ci-dessus.',
+ 'image_all' => 'Toutes',
+ 'image_all_title' => 'Voir toutes les images',
+ 'image_book_title' => 'Voir les images ajoutées à ce livre',
+ 'image_page_title' => 'Voir les images ajoutées à cette page',
+ 'image_search_hint' => 'Rechercher par nom d\'image',
+ 'image_uploaded' => 'Ajoutée le :uploadedDate',
+ 'image_uploaded_by' => 'Ajouté par :userName',
+ 'image_uploaded_to' => 'Téléversé vers :pagelink',
+ 'image_updated' => 'Mis à jour le :updateDate',
+ 'image_load_more' => 'Charger plus',
+ 'image_image_name' => 'Nom de l\'image',
+ 'image_delete_used' => 'Cette image est utilisée dans les pages ci-dessous.',
+ 'image_delete_confirm_text' => 'Êtes-vous sûr de vouloir supprimer cette image ?',
+ 'image_select_image' => 'Sélectionner l\'image',
+ 'image_dropzone' => 'Glissez les images ici ou cliquez pour les ajouter',
+ 'image_dropzone_drop' => 'Déposer des images ici pour les téléverser',
+ 'images_deleted' => 'Images supprimées',
+ 'image_preview' => 'Prévisualiser l\'image',
+ 'image_upload_success' => 'Image ajoutée avec succès',
+ 'image_update_success' => 'Détails de l\'image mis à jour',
+ 'image_delete_success' => 'Image supprimée avec succès',
+ 'image_replace' => 'Remplacer l\'image',
+ 'image_replace_success' => 'Image mise à jour avec succès',
+ 'image_rebuild_thumbs' => 'Régénérer les variantes de taille',
+ 'image_rebuild_thumbs_success' => 'Les variantes de taille d\'image ont été reconstruites avec succès !',
+
+ // Code Editor
+ 'code_editor' => 'Éditer le code',
+ 'code_language' => 'Langage du code',
+ 'code_content' => 'Contenu du code',
+ 'code_session_history' => 'Historique de session',
+ 'code_save' => 'Enregistrer le code',
+];
diff --git a/lang/fr/editor.php b/lang/fr/editor.php
new file mode 100644
index 00000000000..4d4d8c0e87a
--- /dev/null
+++ b/lang/fr/editor.php
@@ -0,0 +1,182 @@
+ 'Général',
+ 'advanced' => 'Avancé',
+ 'none' => 'Aucun',
+ 'cancel' => 'Annuler',
+ 'save' => 'Sauvegarder',
+ 'close' => 'Fermer',
+ 'apply' => 'Appliquer',
+ 'undo' => 'Annuler',
+ 'redo' => 'Rétablir',
+ 'left' => 'Gauche',
+ 'center' => 'Centre',
+ 'right' => 'Droite',
+ 'top' => 'Haut',
+ 'middle' => 'Milieu',
+ 'bottom' => 'Bas',
+ 'width' => 'Largeur',
+ 'height' => 'Hauteur',
+ 'More' => 'Plus',
+ 'select' => 'Sélectionner...',
+
+ // Toolbar
+ 'formats' => 'Formats',
+ 'header_large' => 'En-tête large',
+ 'header_medium' => 'En-tête moyen',
+ 'header_small' => 'Petite en-tête',
+ 'header_tiny' => 'En-tête minuscule',
+ 'paragraph' => 'Paragraphe',
+ 'blockquote' => 'Bloc de citation',
+ 'inline_code' => 'Ligne de code',
+ 'callouts' => 'Légendes',
+ 'callout_information' => 'Information',
+ 'callout_success' => 'Succès',
+ 'callout_warning' => 'Avertissement',
+ 'callout_danger' => 'Danger',
+ 'bold' => 'Gras',
+ 'italic' => 'Italique',
+ 'underline' => 'Souligner',
+ 'strikethrough' => 'Barré',
+ 'superscript' => 'Exposant',
+ 'subscript' => 'Indice',
+ 'text_color' => 'Couleur de texte',
+ 'highlight_color' => 'Couleur de surlignage',
+ 'custom_color' => 'Couleur personnalisée',
+ 'remove_color' => 'Supprimer la couleur',
+ 'background_color' => 'Couleur d\'arrière-plan',
+ 'align_left' => 'Aligner à gauche',
+ 'align_center' => 'Aligner au centre',
+ 'align_right' => 'Aligner à droite',
+ 'align_justify' => 'Justifier',
+ 'list_bullet' => 'Liste à puces',
+ 'list_numbered' => 'Liste numérotée',
+ 'list_task' => 'Liste de tâches',
+ 'indent_increase' => 'Augmenter l\'indentation',
+ 'indent_decrease' => 'Diminuer l\'indentation',
+ 'table' => 'Tableau',
+ 'insert_image' => 'Insérer une image',
+ 'insert_image_title' => 'Insérer/Modifier une image',
+ 'insert_link' => 'Insérer/modifier un lien',
+ 'insert_link_title' => 'Insérer/Modifier un lien',
+ 'insert_horizontal_line' => 'Insérer une ligne horizontale',
+ 'insert_code_block' => 'Insérer un bloc de code',
+ 'edit_code_block' => 'Modifier le bloc de code',
+ 'insert_drawing' => 'Insérer/modifier un dessin',
+ 'drawing_manager' => 'Gestionnaire de dessin',
+ 'insert_media' => 'Insérer/modifier un média',
+ 'insert_media_title' => 'Insérer/Modifier un média',
+ 'clear_formatting' => 'Effacer le formatage',
+ 'source_code' => 'Code source',
+ 'source_code_title' => 'Code source',
+ 'fullscreen' => 'Plein écran',
+ 'image_options' => 'Options d\'image',
+
+ // Tables
+ 'table_properties' => 'Propriétés du tableau',
+ 'table_properties_title' => 'Propriétés du tableau',
+ 'delete_table' => 'Supprimer le tableau',
+ 'table_clear_formatting' => 'Effacer toute la mise en forme',
+ 'resize_to_contents' => 'Redimensionner au contenu',
+ 'row_header' => 'En-tête de ligne',
+ 'insert_row_before' => 'Insérer une ligne avant',
+ 'insert_row_after' => 'Insérer une ligne après',
+ 'delete_row' => 'Supprimer ligne',
+ 'insert_column_before' => 'Insérer une colonne avant',
+ 'insert_column_after' => 'Insérer une colonne après',
+ 'delete_column' => 'Supprimer la colonne',
+ 'table_cell' => 'Cellule',
+ 'table_row' => 'Ligne',
+ 'table_column' => 'Colonne',
+ 'cell_properties' => 'Propriétés de la cellule',
+ 'cell_properties_title' => 'Propriétés de la cellule',
+ 'cell_type' => 'Type de cellule',
+ 'cell_type_cell' => 'Cellule',
+ 'cell_scope' => 'Champ',
+ 'cell_type_header' => 'Cellule d\'en-tête',
+ 'merge_cells' => 'Fusionner les cellules',
+ 'split_cell' => 'Scinder la cellule',
+ 'table_row_group' => 'Groupe de ligne',
+ 'table_column_group' => 'Groupe de colonnes',
+ 'horizontal_align' => 'Aligner horizontalement',
+ 'vertical_align' => 'Aligner verticalement',
+ 'border_width' => 'Largeur de bordure',
+ 'border_style' => 'Style de bordure',
+ 'border_color' => 'Couleur de bordure',
+ 'row_properties' => 'Propriétés de la ligne',
+ 'row_properties_title' => 'Propriétés de la ligne',
+ 'cut_row' => 'Couper la ligne',
+ 'copy_row' => 'Copier la ligne',
+ 'paste_row_before' => 'Coller la ligne avant',
+ 'paste_row_after' => 'Coller la ligne après',
+ 'row_type' => 'Type de ligne',
+ 'row_type_header' => 'En-tête',
+ 'row_type_body' => 'Corps',
+ 'row_type_footer' => 'Pied de page',
+ 'alignment' => 'Alignement',
+ 'cut_column' => 'Couper la colonne',
+ 'copy_column' => 'Copier la colonne',
+ 'paste_column_before' => 'Coller la colonne avant',
+ 'paste_column_after' => 'Coller la colonne après',
+ 'cell_padding' => 'Marges intérieures de cellule',
+ 'cell_spacing' => 'Espacement entre les cellules',
+ 'caption' => 'Légende',
+ 'show_caption' => 'Afficher la légende',
+ 'constrain' => 'Conserver les proportions',
+ 'cell_border_solid' => 'Continu',
+ 'cell_border_dotted' => 'En pointillé',
+ 'cell_border_dashed' => 'En tirets',
+ 'cell_border_double' => 'En double trait',
+ 'cell_border_groove' => 'En creux',
+ 'cell_border_ridge' => 'En saillie',
+ 'cell_border_inset' => 'En 3d lumière basse',
+ 'cell_border_outset' => 'En 3d lumière haute',
+ 'cell_border_none' => 'Aucun',
+ 'cell_border_hidden' => 'Masquée',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Source',
+ 'alt_desc' => 'Description alternative',
+ 'embed' => 'Intégrer',
+ 'paste_embed' => 'Collez votre code intégré ci-dessous :',
+ 'url' => 'URL',
+ 'text_to_display' => 'Texte à afficher',
+ 'title' => 'Titre',
+ 'browse_links' => 'Parcourir les liens',
+ 'open_link' => 'Ouvrir le lien',
+ 'open_link_in' => 'Ouvrir le lien dans...',
+ 'open_link_current' => 'Fenêtre actuelle',
+ 'open_link_new' => 'Nouvelle fenêtre',
+ 'remove_link' => 'Retirer le lien',
+ 'insert_collapsible' => 'Insérer un bloc repliable',
+ 'collapsible_unwrap' => 'Sortir le contenu',
+ 'edit_label' => 'Modifier le libellé',
+ 'toggle_open_closed' => 'Basculer ouvert/fermé',
+ 'collapsible_edit' => 'Modifier un bloc repliable',
+ 'toggle_label' => 'Activer/désactiver le libellé',
+
+ // About view
+ 'about' => 'À propos de l\'éditeur',
+ 'about_title' => 'À propos de l\'éditeur WYSIWYG',
+ 'editor_license' => 'Licence d\'éditeur et droit d\'auteur',
+ 'editor_lexical_license' => 'Cet éditeur est construit comme un fork de :lexicalLink qui est distribué sous licence MIT.',
+ 'editor_lexical_license_link' => 'Vous trouverez ici tous les détails de la licence.',
+ 'editor_tiny_license' => 'Cet éditeur est construit en utilisant :tinyLink qui est fourni sous la licence MIT.',
+ 'editor_tiny_license_link' => 'Vous trouverez ici les détails sur les droits d\'auteur et les licences de TinyMCE.',
+ 'save_continue' => 'Enregistrer et continuer',
+ 'callouts_cycle' => '(Continuez d\'appuyer pour basculer entre les types)',
+ 'link_selector' => 'Lien vers le contenu',
+ 'shortcuts' => 'Raccourcis',
+ 'shortcut' => 'Raccourci',
+ 'shortcuts_intro' => 'Les raccourcis suivants sont disponibles dans l\'éditeur :',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Description',
+];
diff --git a/lang/fr/entities.php b/lang/fr/entities.php
new file mode 100644
index 00000000000..d650fc83058
--- /dev/null
+++ b/lang/fr/entities.php
@@ -0,0 +1,476 @@
+ 'Créé récemment',
+ 'recently_created_pages' => 'Pages créées récemment',
+ 'recently_updated_pages' => 'Pages mises à jour récemment',
+ 'recently_created_chapters' => 'Chapitres créés récemment',
+ 'recently_created_books' => 'Livres créés récemment',
+ 'recently_created_shelves' => 'Étagères créées récemment',
+ 'recently_update' => 'Mis à jour récemment',
+ 'recently_viewed' => 'Vus récemment',
+ 'recent_activity' => 'Activité récente',
+ 'create_now' => 'En créer une maintenant',
+ 'revisions' => 'Révisions',
+ 'meta_revision' => 'Révision #:revisionCount',
+ 'meta_created' => 'Créé :timeLength',
+ 'meta_created_name' => 'Créé :timeLength par :user',
+ 'meta_updated' => 'Mis à jour :timeLength',
+ 'meta_updated_name' => 'Mis à jour :timeLength par :user',
+ 'meta_owned_name' => 'Appartient à :user',
+ 'meta_reference_count' => 'Référencé sur :count élément|Référencé sur :count éléments',
+ 'entity_select' => 'Sélectionner l\'entité',
+ 'entity_select_lack_permission' => 'Vous n\'avez pas les permissions requises pour sélectionner cet élément',
+ 'images' => 'Images',
+ 'my_recent_drafts' => 'Mes brouillons récents',
+ 'my_recently_viewed' => 'Vus récemment',
+ 'my_most_viewed_favourites' => 'Mes favoris les plus vus',
+ 'my_favourites' => 'Mes favoris',
+ 'no_pages_viewed' => 'Vous n\'avez rien visité récemment',
+ 'no_pages_recently_created' => 'Aucune page créée récemment',
+ 'no_pages_recently_updated' => 'Aucune page mise à jour récemment',
+ 'export' => 'Exporter',
+ 'export_html' => 'Fichiers web',
+ 'export_pdf' => 'Fichier PDF',
+ 'export_text' => 'Document texte',
+ 'export_md' => 'Fichiers Markdown',
+ 'export_zip' => 'Export ZIP',
+ 'default_template' => 'Modèle de page par défaut',
+ 'default_template_explain' => 'Sélectionnez un modèle de page qui sera utilisé comme contenu par défaut pour les nouvelles pages créées dans cet élément. Gardez à l\'esprit que le modèle ne sera utilisé que si le créateur de la page a accès au modèle sélectionné.',
+ 'default_template_select' => 'Sélectionnez un modèle de page',
+ 'import' => 'Importation',
+ 'import_validate' => 'Valider l\'import',
+ 'import_desc' => 'Importez des livres, des chapitres et des pages à l\'aide d\'un export zip à partir de la même instance ou d\'une instance différente. Sélectionnez un fichier ZIP pour continuer. Une fois le fichier téléchargé et validé, vous pourrez configurer et confirmer l\'importation dans la vue suivante.',
+ 'import_zip_select' => 'Sélectionnez le fichier ZIP à télécharger',
+ 'import_zip_validation_errors' => 'Des erreurs ont été détectées lors de la validation du fichier ZIP fourni:',
+ 'import_pending' => 'Importations en attente',
+ 'import_pending_none' => 'Aucune importation n\'a été commencée.',
+ 'import_continue' => 'Continuer l\'importation',
+ 'import_continue_desc' => 'Examinez le contenu à importer à partir du fichier ZIP téléchargé. Lorsque vous êtes prêt, lancez l\'importation pour ajouter son contenu à ce système. Le fichier d\'importation ZIP téléchargé sera automatiquement supprimé si l\'importation est réussie.',
+ 'import_details' => 'Détails de l\'importation',
+ 'import_run' => 'Exécuter Importation',
+ 'import_size' => ':size Taille du fichier ZIP à importer',
+ 'import_uploaded_at' => ':relativeTime téléchargé',
+ 'import_uploaded_by' => 'Téléchargé par',
+ 'import_location' => 'Emplacement de l\'importation',
+ 'import_location_desc' => 'Sélectionnez un emplacement cible pour votre contenu importé. Vous aurez besoin des autorisations appropriées pour créer dans l\'emplacement que vous choisissez.',
+ 'import_delete_confirm' => 'Êtes-vous sûr de vouloir supprimer cette importation ?',
+ 'import_delete_desc' => 'Ceci supprimera le fichier ZIP importé et ne pourra pas être annulé.',
+ 'import_errors' => 'Erreurs d\'importation',
+ 'import_errors_desc' => 'Les erreurs suivantes se sont produites lors de la tentative d\'importation :',
+ 'breadcrumb_siblings_for_page' => 'Naviguer entre les pages voisines',
+ 'breadcrumb_siblings_for_chapter' => 'Naviguer entre les chapitres voisins',
+ 'breadcrumb_siblings_for_book' => 'Naviguer entre les livres voisins',
+ 'breadcrumb_siblings_for_bookshelf' => 'Naviguer entre les étagères voisines',
+
+ // Permissions and restrictions
+ 'permissions' => 'Autorisations',
+ 'permissions_desc' => 'Définissez ici les permissions pour remplacer les permissions par défaut fournies par les rôles d\'utilisateur.',
+ 'permissions_book_cascade' => 'Les permissions définies sur les livres seront automatiquement mises en cascade dans les chapitres enfants et les pages, à moins qu\'elles aient leurs propres permissions définies.',
+ 'permissions_chapter_cascade' => 'Les permissions définies sur les chapitres seront automatiquement mises en cascade sur les pages enfants, à moins qu\'elles aient leurs propres permissions définies.',
+ 'permissions_save' => 'Enregistrer les permissions',
+ 'permissions_owner' => 'Propriétaire',
+ 'permissions_role_everyone_else' => 'Tous les autres',
+ 'permissions_role_everyone_else_desc' => 'Définir les permissions pour tous les rôles qui ne sont pas spécifiquement remplacés.',
+ 'permissions_role_override' => 'Remplacer les permissions pour le rôle',
+ 'permissions_inherit_defaults' => 'Hériter les valeurs par défaut',
+
+ // Search
+ 'search_results' => 'Résultats de recherche',
+ 'search_total_results_found' => ':count résultats trouvés|:count résultats trouvés au total',
+ 'search_clear' => 'Réinitialiser la recherche',
+ 'search_no_pages' => 'Aucune page correspondant à cette recherche',
+ 'search_for_term' => 'recherche pour :term',
+ 'search_more' => 'Plus de résultats',
+ 'search_advanced' => 'Recherche avancée',
+ 'search_terms' => 'Termes de recherche',
+ 'search_content_type' => 'Type de contenu',
+ 'search_exact_matches' => 'Correspondances exactes',
+ 'search_tags' => 'Recherche par tags',
+ 'search_options' => 'Options',
+ 'search_viewed_by_me' => 'Vu par moi',
+ 'search_not_viewed_by_me' => 'Non vu par moi',
+ 'search_permissions_set' => 'Ensemble d\'autorisations',
+ 'search_created_by_me' => 'Créé par moi',
+ 'search_updated_by_me' => 'Mis à jour par moi',
+ 'search_owned_by_me' => 'Créés par moi',
+ 'search_date_options' => 'Recherche par date',
+ 'search_updated_before' => 'Mis à jour avant',
+ 'search_updated_after' => 'Mis à jour après',
+ 'search_created_before' => 'Créé avant',
+ 'search_created_after' => 'Créé après',
+ 'search_set_date' => 'Choisir la date',
+ 'search_update' => 'Actualiser la recherche',
+
+ // Shelves
+ 'shelf' => 'Étagère',
+ 'shelves' => 'Étagères',
+ 'x_shelves' => ':count Étagère|:count Étagères',
+ 'shelves_empty' => 'Aucune étagère n\'a été créée',
+ 'shelves_create' => 'Créer une nouvelle étagère',
+ 'shelves_popular' => 'Étagères populaires',
+ 'shelves_new' => 'Nouvelles étagères',
+ 'shelves_new_action' => 'Nouvelle étagère',
+ 'shelves_popular_empty' => 'Les étagères les plus populaires apparaîtront ici.',
+ 'shelves_new_empty' => 'Les étagères les plus récentes apparaitront ici.',
+ 'shelves_save' => 'Enregistrer l\'étagère',
+ 'shelves_books' => 'Livres sur cette étagère',
+ 'shelves_add_books' => 'Ajouter des livres sur cette étagère',
+ 'shelves_drag_books' => 'Déposez des livres ici pour les ajouter a cette étagère',
+ 'shelves_empty_contents' => 'Aucun livre n\'a été assigné à cette étagère',
+ 'shelves_edit_and_assign' => 'Modifier cette étagère pour y ajouter des livres',
+ 'shelves_edit_named' => 'Modifier l\'étagère :name',
+ 'shelves_edit' => 'Modifier l\'étagère',
+ 'shelves_delete' => 'Supprimer l\'étagère',
+ 'shelves_delete_named' => 'Supprimer l\'étagère :name',
+ 'shelves_delete_explain' => "Ceci va supprimer l'étagère nommée ':name'. Les livres contenus dans cette étagère ne seront pas supprimés.",
+ 'shelves_delete_confirmation' => 'Êtes-vous sûr(e) de vouloir supprimer cette étagère ?',
+ 'shelves_permissions' => 'Enregistrer les permissions',
+ 'shelves_permissions_updated' => 'Permissions de l\'étagère mises à jour',
+ 'shelves_permissions_active' => 'Permissions de l\'étagère activées',
+ 'shelves_permissions_cascade_warning' => 'Les permissions sur les étagères ne sont pas automatiquement recopiées aux livres qu\'elles contiennent, car un livre peut exister dans plusieurs étagères. Les permissions peuvent cependant être recopiées vers les livres contenus en utilisant l\'option ci-dessous.',
+ 'shelves_permissions_create' => 'Les permissions de création d\'une étagère sont uniquement utilisées pour copier les permissions vers les livres enfants en utilisant l\'action ci-dessous. Elles ne contrôlent pas la possibilité de créer des livres.',
+ 'shelves_copy_permissions_to_books' => 'Copier les permissions vers les livres',
+ 'shelves_copy_permissions' => 'Copier les permissions',
+ 'shelves_copy_permissions_explain' => 'Ceci va appliquer les permissions actuelles de cette étagère à tous les livres qu\'elle contient. Avant de continuer, assurez-vous que toutes les permissions de cette étagère ont été sauvegardées.',
+ 'shelves_copy_permission_success' => 'Permissions de l\'étagère transférées à :count livres',
+
+ // Books
+ 'book' => 'Livre',
+ 'books' => 'Livres',
+ 'x_books' => ':count livre|:count livres',
+ 'books_empty' => 'Aucun livre n\'a été créé',
+ 'books_popular' => 'Livres populaires',
+ 'books_recent' => 'Livres récents',
+ 'books_new' => 'Nouveaux livres',
+ 'books_new_action' => 'Nouveau livre',
+ 'books_popular_empty' => 'Les livres les plus populaires apparaîtront ici.',
+ 'books_new_empty' => 'Les livres les plus récents apparaitront ici.',
+ 'books_create' => 'Créer un nouveau livre',
+ 'books_delete' => 'Supprimer un livre',
+ 'books_delete_named' => 'Supprimer le livre :bookName',
+ 'books_delete_explain' => 'Ceci va supprimer le livre nommé \':bookName\', tous les chapitres et pages seront supprimés.',
+ 'books_delete_confirmation' => 'Êtes-vous sûr(e) de vouloir supprimer ce livre ?',
+ 'books_edit' => 'Modifier le livre',
+ 'books_edit_named' => 'Modifier le livre :bookName',
+ 'books_form_book_name' => 'Nom du livre',
+ 'books_save' => 'Enregistrer le livre',
+ 'books_permissions' => 'Permissions du livre',
+ 'books_permissions_updated' => 'Permissions du livre mises à jour',
+ 'books_empty_contents' => 'Aucune page ou chapitre n\'a été ajouté à ce livre.',
+ 'books_empty_create_page' => 'Créer une nouvelle page',
+ 'books_empty_sort_current_book' => 'Trier les pages du livre',
+ 'books_empty_add_chapter' => 'Ajouter un chapitre',
+ 'books_permissions_active' => 'Permissions de livre actives',
+ 'books_search_this' => 'Rechercher dans ce livre',
+ 'books_navigation' => 'Navigation dans le livre',
+ 'books_sort' => 'Trier les contenus du livre',
+ 'books_sort_desc' => 'Déplacer les pages et chapitres au sein d’un livre pour en réorganiser le contenu. D’autres livres peuvent être ajoutés pour faciliter le déplacement des pages et chapitres entre les livres. Facultativement, une règle de tri automatique peut être mise en place afin de trier le livre lorsqu’il est édité.',
+ 'books_sort_auto_sort' => 'Option de tri automatique',
+ 'books_sort_auto_sort_active' => 'Tri automatique actif : :sortName',
+ 'books_sort_named' => 'Trier le livre :bookName',
+ 'books_sort_name' => 'Trier par le nom',
+ 'books_sort_created' => 'Trier par la date de création',
+ 'books_sort_updated' => 'Trier par la date de mise à jour',
+ 'books_sort_chapters_first' => 'Les chapitres en premier',
+ 'books_sort_chapters_last' => 'Les chapitres en dernier',
+ 'books_sort_show_other' => 'Afficher d\'autres livres',
+ 'books_sort_save' => 'Enregistrer l\'ordre',
+ 'books_sort_show_other_desc' => 'Ajoutez ici d\'autres livres pour les inclure dans l\'opération de tri, et permettez une réorganisation des livres croisés.',
+ 'books_sort_move_up' => 'Remonter',
+ 'books_sort_move_down' => 'Descendre',
+ 'books_sort_move_prev_book' => 'Déplacer vers le livre précédent',
+ 'books_sort_move_next_book' => 'Déplacer vers le livre suivant',
+ 'books_sort_move_prev_chapter' => 'Déplacer vers le chapitre précédent',
+ 'books_sort_move_next_chapter' => 'Déplacer au chapitre suivant',
+ 'books_sort_move_book_start' => 'Déplacer au début du livre',
+ 'books_sort_move_book_end' => 'Déplacer vers la fin du livre',
+ 'books_sort_move_before_chapter' => 'Déplacer vers Avant le chapitre',
+ 'books_sort_move_after_chapter' => 'Déplacer vers Après le chapitre',
+ 'books_copy' => 'Copier le livre',
+ 'books_copy_success' => 'Livre copié avec succès',
+
+ // Chapters
+ 'chapter' => 'Chapitre',
+ 'chapters' => 'Chapitres',
+ 'x_chapters' => ':count chapitre|:count chapitres',
+ 'chapters_popular' => 'Chapitres populaires',
+ 'chapters_new' => 'Nouveau chapitre',
+ 'chapters_create' => 'Créer un nouveau chapitre',
+ 'chapters_delete' => 'Supprimer le chapitre',
+ 'chapters_delete_named' => 'Supprimer le chapitre :chapterName',
+ 'chapters_delete_explain' => 'Ceci supprimera le chapitre portant le nom \':chapterName\'. Toutes les pages qui existent dans ce chapitre seront également supprimées.',
+ 'chapters_delete_confirm' => 'Êtes-vous sûr(e) de vouloir supprimer ce chapitre ?',
+ 'chapters_edit' => 'Modifier le chapitre',
+ 'chapters_edit_named' => 'Modifier le chapitre :chapterName',
+ 'chapters_save' => 'Enregistrer le chapitre',
+ 'chapters_move' => 'Déplacer le chapitre',
+ 'chapters_move_named' => 'Déplacer le chapitre :chapterName',
+ 'chapters_copy' => 'Copier le chapitre',
+ 'chapters_copy_success' => 'Chapitre copié avec succès',
+ 'chapters_permissions' => 'Permissions du chapitre',
+ 'chapters_empty' => 'Il n\'y a pas de page dans ce chapitre actuellement.',
+ 'chapters_permissions_active' => 'Permissions du chapitre activées',
+ 'chapters_permissions_success' => 'Permissions du chapitre mises à jour',
+ 'chapters_search_this' => 'Rechercher dans ce chapitre',
+ 'chapter_sort_book' => 'Trier le livre',
+
+ // Pages
+ 'page' => 'Page',
+ 'pages' => 'Pages',
+ 'x_pages' => ':count Page|:count pages',
+ 'pages_popular' => 'Pages populaires',
+ 'pages_new' => 'Nouvelle page',
+ 'pages_attachments' => 'Fichiers joints',
+ 'pages_navigation' => 'Navigation dans la page',
+ 'pages_delete' => 'Supprimer la page',
+ 'pages_delete_named' => 'Supprimer la page :pageName',
+ 'pages_delete_draft_named' => 'supprimer le brouillon de la page :pageName',
+ 'pages_delete_draft' => 'Supprimer le brouillon',
+ 'pages_delete_success' => 'Page supprimée',
+ 'pages_delete_draft_success' => 'Brouillon supprimé',
+ 'pages_delete_warning_template' => 'Cette page actuellement utilisée comme modèle de page par défaut de livre ou de chapitre. Ces livres ou chapitres n\'auront plus de modèle de page par défaut assigné après la suppression de cette page.',
+ 'pages_delete_confirm' => 'Êtes-vous sûr(e) de vouloir supprimer cette page ?',
+ 'pages_delete_draft_confirm' => 'Êtes-vous sûr(e) de vouloir supprimer ce brouillon ?',
+ 'pages_editing_named' => 'Modification de la page :pageName',
+ 'pages_edit_draft_options' => 'Options du brouillon',
+ 'pages_edit_save_draft' => 'Enregistrer le brouillon',
+ 'pages_edit_draft' => 'Modifier le brouillon',
+ 'pages_editing_draft' => 'Modification du brouillon',
+ 'pages_editing_page' => 'Modification de la page',
+ 'pages_edit_draft_save_at' => 'Brouillon enregistré à ',
+ 'pages_edit_delete_draft' => 'Supprimer le brouillon',
+ 'pages_edit_delete_draft_confirm' => 'Êtes-vous sûr de vouloir supprimer vos modifications de page brouillon ? Toutes vos modifications, depuis la dernière sauvegarde complète, seront perdues et l\'éditeur sera mis à jour avec l\'état de sauvegarde de la dernière page non-brouillon.',
+ 'pages_edit_discard_draft' => 'Jeter le brouillon',
+ 'pages_edit_switch_to_markdown' => 'Basculer vers l\'éditeur Markdown',
+ 'pages_edit_switch_to_markdown_clean' => '(Contenu nettoyé)',
+ 'pages_edit_switch_to_markdown_stable' => '(Contenu stable)',
+ 'pages_edit_switch_to_wysiwyg' => 'Basculer vers l\'éditeur WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Basculer vers le nouveau WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(En bêta-test)',
+ 'pages_edit_set_changelog' => 'Journal des changements',
+ 'pages_edit_enter_changelog_desc' => 'Entrez une brève description des changements effectués',
+ 'pages_edit_enter_changelog' => 'Saisir les changements',
+ 'pages_editor_switch_title' => 'Changer d\'éditeur',
+ 'pages_editor_switch_are_you_sure' => 'Êtes-vous sûr de vouloir modifier l\'éditeur de cette page ?',
+ 'pages_editor_switch_consider_following' => 'Considérez ce qui suit lors du changement d\'éditeur :',
+ 'pages_editor_switch_consideration_a' => 'Une fois enregistrée, le nouvel éditeur sera utilisé par tous les futurs éditeurs, y compris ceux qui ne seront pas en mesure de modifier le type de l\'éditeur eux-mêmes.',
+ 'pages_editor_switch_consideration_b' => 'Cela peut entraîner une perte de détail et de syntaxe dans certaines circonstances.',
+ 'pages_editor_switch_consideration_c' => 'Les modifications apportées depuis la dernière sauvegarde, les balises ou le journal des modifications ne persisteront pas à travers cette modification.',
+ 'pages_save' => 'Enregistrer la page',
+ 'pages_title' => 'Titre de la page',
+ 'pages_name' => 'Nom de la page',
+ 'pages_md_editor' => 'Éditeur',
+ 'pages_md_preview' => 'Prévisualisation',
+ 'pages_md_insert_image' => 'Insérer une image',
+ 'pages_md_insert_link' => 'Insérer un lien',
+ 'pages_md_insert_drawing' => 'Insérer un dessin',
+ 'pages_md_show_preview' => 'Prévisualisation',
+ 'pages_md_sync_scroll' => 'Défilement prévisualisation',
+ 'pages_md_plain_editor' => 'Éditeur texte brut',
+ 'pages_drawing_unsaved' => 'Dessin non enregistré trouvé',
+ 'pages_drawing_unsaved_confirm' => 'Des données de dessin non enregistrées ont été trouvées à partir d\'une tentative de sauvegarde de dessin échouée. Voulez-vous restaurer et continuer à modifier ce dessin non sauvegardé ?',
+ 'pages_not_in_chapter' => 'La page n\'est pas dans un chapitre',
+ 'pages_move' => 'Déplacer la page',
+ 'pages_copy' => 'Copier la page',
+ 'pages_copy_desination' => 'Destination de la copie',
+ 'pages_copy_success' => 'Page copiée avec succès',
+ 'pages_permissions' => 'Permissions de la page',
+ 'pages_permissions_success' => 'Permissions de la page mises à jour',
+ 'pages_revision' => 'Révision',
+ 'pages_revisions' => 'Révisions de la page',
+ 'pages_revisions_desc' => 'Vous trouverez sur la page ci-dessous toutes les anciennes révisions. Vous pouvez regarder, comparer et restaurer les anciennes versions de page si les autorisations le permettent. L’historique complet de la page peut ne pas être entièrement affiché ici, car selon la configuration du système, les anciennes révisions peuvent être supprimées automatiquement.',
+ 'pages_revisions_named' => 'Révisions pour :pageName',
+ 'pages_revision_named' => 'Révision pour :pageName',
+ 'pages_revision_restored_from' => 'Restauré à partir de #:id; :summary',
+ 'pages_revisions_created_by' => 'Créé par',
+ 'pages_revisions_date' => 'Date de révision',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Numéro de révision',
+ 'pages_revisions_numbered' => 'Révision #:id',
+ 'pages_revisions_numbered_changes' => 'Modification #:id',
+ 'pages_revisions_editor' => 'Type d\'éditeur',
+ 'pages_revisions_changelog' => 'Journal des changements',
+ 'pages_revisions_changes' => 'Changements',
+ 'pages_revisions_current' => 'Version actuelle',
+ 'pages_revisions_preview' => 'Prévisualisation',
+ 'pages_revisions_restore' => 'Restaurer',
+ 'pages_revisions_none' => 'Cette page n\'a aucune révision',
+ 'pages_copy_link' => 'Copier le lien',
+ 'pages_edit_content_link' => 'Aller à la section dans l\'éditeur',
+ 'pages_pointer_enter_mode' => 'Entrer en mode de sélection de section',
+ 'pages_pointer_label' => 'Options de section de page',
+ 'pages_pointer_permalink' => 'Lien permanent de la section de page',
+ 'pages_pointer_include_tag' => 'Balise d\'inclusion de la section de page',
+ 'pages_pointer_toggle_link' => 'Mode Lien Permanent, Cliquer pour afficher la balise d\'inclusion',
+ 'pages_pointer_toggle_include' => 'Mode balise d\'inclusion, cliquer pour afficher le lien permanent',
+ 'pages_permissions_active' => 'Permissions de page actives',
+ 'pages_initial_revision' => 'Publication initiale',
+ 'pages_references_update_revision' => 'Mise à jour automatique des liens internes',
+ 'pages_initial_name' => 'Nouvelle page',
+ 'pages_editing_draft_notification' => 'Vous éditez actuellement un brouillon qui a été enregistré :timeDiff.',
+ 'pages_draft_edited_notification' => 'La page a été mise à jour depuis votre dernière visite. Vous devriez jeter ce brouillon.',
+ 'pages_draft_page_changed_since_creation' => 'Cette page a été mise à jour depuis que ce brouillon a été créé. Il est recommandé de supprimer ce brouillon ou de veiller à ne pas écraser toute modification de page.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count utilisateurs ont commencé à éditer cette page',
+ 'start_b' => ':userName a commencé à éditer cette page',
+ 'time_a' => 'depuis la dernière sauvegarde',
+ 'time_b' => 'dans les :minCount dernières minutes',
+ 'message' => ':start :time. Attention à ne pas écraser les mises à jour de quelqu\'un d\'autre !',
+ ],
+ 'pages_draft_discarded' => 'Brouillon annulé ! L\'éditeur a été mis à jour avec le contenu de la page actuelle',
+ 'pages_draft_deleted' => 'Brouillon supprimé ! L\'éditeur a été mis à jour avec le contenu de la page actuelle',
+ 'pages_specific' => 'Page spécifique',
+ 'pages_is_template' => 'Modèle de page',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Afficher/masquer la barre latérale',
+ 'page_tags' => 'Étiquettes de la page',
+ 'chapter_tags' => 'Étiquettes du chapitre',
+ 'book_tags' => 'Étiquettes du livre',
+ 'shelf_tags' => 'Étiquettes de l\'étagère',
+ 'tag' => 'Étiquette',
+ 'tags' => 'Étiquettes',
+ 'tags_index_desc' => 'Les étiquettes peuvent être mises sur le contenu pour appliquer une forme flexible de catégorisation. Les étiquettes peuvent avoir à la fois une clé et une valeur, la valeur étant facultative. Une fois appliqué, le contenu peut ensuite être interrogé à l’aide du nom et de la valeur de l’étiquette.',
+ 'tag_name' => 'Nom de l’étiquette',
+ 'tag_value' => 'Valeur du mot-clé (optionnel)',
+ 'tags_explain' => "Ajouter des mots-clés pour catégoriser votre contenu.",
+ 'tags_add' => 'Ajouter un autre mot-clé',
+ 'tags_remove' => 'Supprimer le mot-clé',
+ 'tags_usages' => 'Total des utilisations des mots-clés',
+ 'tags_assigned_pages' => 'Attribuer aux pages',
+ 'tags_assigned_chapters' => 'Attribuer aux chapitres',
+ 'tags_assigned_books' => 'Attribuer aux livres',
+ 'tags_assigned_shelves' => 'Attribuer aux étagères',
+ 'tags_x_unique_values' => ':count valeurs uniques',
+ 'tags_all_values' => 'Toutes les valeurs',
+ 'tags_view_tags' => 'Voir les mots-clés',
+ 'tags_view_existing_tags' => 'Voir les mots-clés existants',
+ 'tags_list_empty_hint' => 'Les mots-clés peuvent être assignés via la barre latérale de l\'éditeur de page ou lors de l\'édition des détails d\'un livre, d\'un chapitre ou d\'une étagère.',
+ 'attachments' => 'Fichiers joints',
+ 'attachments_explain' => 'Ajouter des fichiers ou des liens pour les afficher sur votre page. Ils seront affichés dans la barre latérale.',
+ 'attachments_explain_instant_save' => 'Ces changements sont enregistrés immédiatement.',
+ 'attachments_upload' => 'Téléverser un fichier',
+ 'attachments_link' => 'Attacher un lien',
+ 'attachments_upload_drop' => 'Vous pouvez également glisser-déposer un fichier ici pour le téléverser en tant que pièce jointe.',
+ 'attachments_set_link' => 'Définir un lien',
+ 'attachments_delete' => 'Êtes-vous sûr de vouloir supprimer la pièce jointe ?',
+ 'attachments_dropzone' => 'Déposer des fichiers ici pour les téléverser',
+ 'attachments_no_files' => 'Aucun fichier ajouté',
+ 'attachments_explain_link' => 'Vous pouvez ajouter un lien si vous ne souhaitez pas téléverser un fichier.',
+ 'attachments_link_name' => 'Nom du lien',
+ 'attachment_link' => 'Lien de l\'attachement',
+ 'attachments_link_url' => 'Lien sur un fichier',
+ 'attachments_link_url_hint' => 'URL du site ou du fichier',
+ 'attach' => 'Ajouter',
+ 'attachments_insert_link' => 'Ajouter un lien à la page',
+ 'attachments_edit_file' => 'Modifier le fichier',
+ 'attachments_edit_file_name' => 'Nom du fichier',
+ 'attachments_edit_drop_upload' => 'Glissez un fichier ou cliquer pour mettre à jour le fichier',
+ 'attachments_order_updated' => 'Ordre des fichiers joints mis à jour',
+ 'attachments_updated_success' => 'Détails des fichiers joints mis à jour',
+ 'attachments_deleted' => 'Fichier joint supprimé',
+ 'attachments_file_uploaded' => 'Fichier ajouté avec succès',
+ 'attachments_file_updated' => 'Fichier mis à jour avec succès',
+ 'attachments_link_attached' => 'Lien attaché à la page avec succès',
+ 'templates' => 'Modèles',
+ 'templates_set_as_template' => 'La page est un modèle',
+ 'templates_explain_set_as_template' => 'Vous pouvez définir cette page comme modèle pour que son contenu soit utilisé lors de la création d\'autres pages. Les autres utilisateurs pourront utiliser ce modèle s\'ils ont les permissions pour cette page.',
+ 'templates_replace_content' => 'Remplacer le contenu de la page',
+ 'templates_append_content' => 'Ajouter après le contenu de la page',
+ 'templates_prepend_content' => 'Ajouter avant le contenu de la page',
+
+ // Profile View
+ 'profile_user_for_x' => 'Utilisateur depuis :time',
+ 'profile_created_content' => 'Contenu créé',
+ 'profile_not_created_pages' => ':userName n\'a pas créé de page',
+ 'profile_not_created_chapters' => ':userName n\'a pas créé de chapitre',
+ 'profile_not_created_books' => ':userName n\'a pas créé de livre',
+ 'profile_not_created_shelves' => ':userName n\'a pas créé d\'étagère',
+
+ // Comments
+ 'comment' => 'Commentaire',
+ 'comments' => 'Commentaires',
+ 'comment_add' => 'Ajouter un commentaire',
+ 'comment_none' => 'Aucun commentaire à afficher',
+ 'comment_placeholder' => 'Entrez vos commentaires ici',
+ 'comment_thread_count' => ':count Fil de commentaires|:count Fils de commentaires',
+ 'comment_archived_count' => ':count Archivé',
+ 'comment_archived_threads' => 'Fils archivés',
+ 'comment_save' => 'Enregistrer le commentaire',
+ 'comment_new' => 'Nouveau commentaire',
+ 'comment_created' => 'commenté :createDiff',
+ 'comment_updated' => 'Mis à jour :updateDiff par :username',
+ 'comment_updated_indicator' => 'Mis à jour',
+ 'comment_deleted_success' => 'Commentaire supprimé',
+ 'comment_created_success' => 'Commentaire ajouté',
+ 'comment_updated_success' => 'Commentaire mis à jour',
+ 'comment_archive_success' => 'Commentaire archivé',
+ 'comment_unarchive_success' => 'Commentaire désarchiver',
+ 'comment_view' => 'Voir le commentaire',
+ 'comment_jump_to_thread' => 'Aller au fil',
+ 'comment_delete_confirm' => 'Êtes-vous sûr de vouloir supprimer ce commentaire ?',
+ 'comment_in_reply_to' => 'En réponse à :commentId',
+ 'comment_reference' => 'Référence',
+ 'comment_reference_outdated' => '(Obsolète)',
+ 'comment_editor_explain' => 'Voici les commentaires qui ont été laissés sur cette page. Les commentaires peuvent être ajoutés et gérés en visualisant la page enregistrée.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Êtes-vous sûr de vouloir supprimer cette révision ?',
+ 'revision_restore_confirm' => 'Êtes-vous sûr de vouloir restaurer cette révision ? Le contenu courant de la page va être remplacé.',
+ 'revision_cannot_delete_latest' => 'Impossible de supprimer la dernière révision.',
+
+ // Copy view
+ 'copy_consider' => 'Veuillez prendre en compte ce qui suit lors de la copie du contenu.',
+ 'copy_consider_permissions' => 'Les paramètres de permission personnalisés ne seront pas copiés.',
+ 'copy_consider_owner' => 'Vous deviendrez le propriétaire de tout le contenu copié.',
+ 'copy_consider_images' => 'Les fichiers image de la page ne seront pas dupliqués et les images originales conserveront leur relation avec la page vers laquelle elles ont été initialement téléchargées.',
+ 'copy_consider_attachments' => 'Les pièces jointes de la page ne seront pas copiées.',
+ 'copy_consider_access' => 'Un changement d\'emplacement, de propriétaire ou d\'autorisation peut rendre ce contenu accessible à ceux précédemment sans accès.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Convertir en étagère',
+ 'convert_to_shelf_contents_desc' => 'Vous pouvez convertir ce livre en une nouvelle étagère avec le même contenu. Les chapitres contenus dans ce livre seront convertis en nouveaux livres. Si ce livre contient des pages, qui ne sont pas dans un chapitre, ce livre sera renommé et contiendra ces pages, et ce livre fera partie de la nouvelle étagère.',
+ 'convert_to_shelf_permissions_desc' => 'Toutes les autorisations définies sur ce livre seront copiées sur la nouvelle étagère et sur tous les nouveaux livres enfants qui n\'ont pas leurs propres permissions appliquées. Notez que les permissions sur les étagères ne font pas automatiquement cascade au contenu intérieur, comme elles le font pour les livres.',
+ 'convert_book' => 'Convertir le livre',
+ 'convert_book_confirm' => 'Êtes-vous sûr(e) de vouloir convertir ce livre ?',
+ 'convert_undo_warning' => 'Cela ne peut pas être facilement annulé.',
+ 'convert_to_book' => 'Convertir en livre',
+ 'convert_to_book_desc' => 'Vous pouvez convertir ce chapitre en un nouveau livre avec le même contenu. Toutes les permissions définies dans ce chapitre seront copiées dans le nouveau livre mais toutes les permissions héritées du livre parent ne seront pas copiés, ce qui pourrait conduire à un changement de contrôle d\'accès.',
+ 'convert_chapter' => 'Convertir le chapitre',
+ 'convert_chapter_confirm' => 'Êtes-vous sûr(e) de vouloir convertir ce chapitre ?',
+
+ // References
+ 'references' => 'Références',
+ 'references_none' => 'Il n\'y a pas de références suivies à cet élément.',
+ 'references_to_desc' => 'Vous trouverez ci-dessous le contenu connu du système qui a un lien vers cet élément.',
+
+ // Watch Options
+ 'watch' => 'Suivre',
+ 'watch_title_default' => 'Préférences par défaut',
+ 'watch_desc_default' => 'Revenir à vos préférences de notification par défaut.',
+ 'watch_title_ignore' => 'Ignorer',
+ 'watch_desc_ignore' => 'Ignorer toutes les notifications, y compris celles des préférences de niveau utilisateur.',
+ 'watch_title_new' => 'Nouvelles Pages',
+ 'watch_desc_new' => 'Notifier quand une nouvelle page est créée dans cet élément.',
+ 'watch_title_updates' => 'Toutes les mises à jour de page',
+ 'watch_desc_updates' => 'Notifier toutes les nouvelles pages et les changements de page.',
+ 'watch_desc_updates_page' => 'Notifier lors de toutes les modifications de page.',
+ 'watch_title_comments' => 'Toutes les mises à jour et commentaires de page',
+ 'watch_desc_comments' => 'Notifier toutes les nouvelles pages, les changements de page et les nouveaux commentaires.',
+ 'watch_desc_comments_page' => 'Notifier les changements de page et les nouveaux commentaires.',
+ 'watch_change_default' => 'Modifier les préférences de notification par défaut',
+ 'watch_detail_ignore' => 'Ignorer les notifications',
+ 'watch_detail_new' => 'Suivre les nouvelles pages',
+ 'watch_detail_updates' => 'Suivre les nouvelles pages et mises à jour',
+ 'watch_detail_comments' => 'Suivre les nouvelles pages, mises à jour et commentaires',
+ 'watch_detail_parent_book' => 'Suivre via le livre parent',
+ 'watch_detail_parent_book_ignore' => 'Ignorer via le livre parent',
+ 'watch_detail_parent_chapter' => 'Suivre via le chapitre parent',
+ 'watch_detail_parent_chapter_ignore' => 'Ignorer via le chapitre parent',
+];
diff --git a/lang/fr/errors.php b/lang/fr/errors.php
new file mode 100644
index 00000000000..b74fb5465db
--- /dev/null
+++ b/lang/fr/errors.php
@@ -0,0 +1,135 @@
+ 'Vous n\'avez pas les droits pour accéder à cette page.',
+ 'permissionJson' => 'Vous n\'avez pas les droits pour exécuter cette action.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Un utilisateur avec l\'adresse :email existe déjà.',
+ 'auth_pre_register_theme_prevention' => 'Le compte utilisateur n\'a pas pu être enregistré avec les informations fournies',
+ 'email_already_confirmed' => 'Cet e-mail a déjà été validé, vous pouvez vous connecter.',
+ 'email_confirmation_invalid' => 'Cette confirmation est invalide. Veuillez essayer de vous inscrire à nouveau.',
+ 'email_confirmation_expired' => 'Le jeton de confirmation a expiré. Un nouvel e-mail vous a été envoyé.',
+ 'email_confirmation_awaiting' => 'L\'adresse e-mail du compte utilisé doit être confirmée',
+ 'ldap_fail_anonymous' => 'L\'accès LDAP anonyme n\'a pas abouti',
+ 'ldap_fail_authed' => 'L\'accès LDAP n\'a pas abouti avec cet utilisateur et ce mot de passe',
+ 'ldap_extension_not_installed' => 'L\'extension PHP LDAP n\'est pas installée',
+ 'ldap_cannot_connect' => 'Impossible de se connecter au serveur LDAP, la connexion initiale a échoué',
+ 'saml_already_logged_in' => 'Déjà connecté',
+ 'saml_no_email_address' => 'Impossible de trouver une adresse e-mail, pour cet utilisateur, dans les données fournies par le système d\'authentification externe',
+ 'saml_invalid_response_id' => 'La requête du système d\'authentification externe n\'est pas reconnue par un processus démarré par cette application. Naviguer après une connexion peut causer ce problème.',
+ 'saml_fail_authed' => 'Connexion avec :system échouée, le système n\'a pas fourni l\'autorisation réussie',
+ 'oidc_already_logged_in' => 'Déjà connecté',
+ 'oidc_no_email_address' => 'Impossible de trouver une adresse e-mail pour cet utilisateur, dans les données fournies par le système d\'authentification externe',
+ 'oidc_fail_authed' => 'La connexion en utilisant :system a échoué, le système n\'a pas fourni d\'autorisation avec succès',
+ 'social_no_action_defined' => 'Pas d\'action définie',
+ 'social_login_bad_response' => "Erreur pendant la tentative de connexion à :socialAccount : \n:error",
+ 'social_account_in_use' => 'Ce compte :socialAccount est déjà utilisé. Essayez de vous connecter via :socialAccount.',
+ 'social_account_email_in_use' => 'L\'email :email est déjà utilisé. Si vous avez déjà un compte :socialAccount, vous pouvez le rattacher à votre profil existant.',
+ 'social_account_existing' => 'Ce compte :socialAccount est déjà rattaché à votre profil.',
+ 'social_account_already_used_existing' => 'Ce compte :socialAccount est déjà utilisé par un autre utilisateur.',
+ 'social_account_not_used' => 'Ce compte :socialAccount n\'est lié à aucun utilisateur. ',
+ 'social_account_register_instructions' => 'Si vous n\'avez pas encore de compte, vous pouvez en créer un avec l\'option :socialAccount.',
+ 'social_driver_not_found' => 'Pilote de compte de réseaux sociaux absent',
+ 'social_driver_not_configured' => 'Vos préférences pour le compte :socialAccount sont incorrectes.',
+ 'invite_token_expired' => 'Le lien de cette invitation a expiré. Vous pouvez essayer de réinitialiser votre mot de passe.',
+ 'login_user_not_found' => 'Impossible de trouver un utilisateur pour cette action.',
+
+ // System
+ 'path_not_writable' => 'Impossible d\'écrire dans :filePath. Assurez-vous d\'avoir les droits d\'écriture sur le serveur',
+ 'cannot_get_image_from_url' => 'Impossible de récupérer l\'image depuis :url',
+ 'cannot_create_thumbs' => 'Le serveur ne peut pas créer de miniature, vérifier que l\'extension PHP GD est installée.',
+ 'server_upload_limit' => 'La taille du fichier est trop grande.',
+ 'server_post_limit' => 'Le serveur ne peut pas recevoir la quantité de données fournie. Réessayez avec moins de données ou un fichier plus petit.',
+ 'uploaded' => 'Le serveur n\'autorise pas l\'envoi d\'un fichier de cette taille. Veuillez essayer avec une taille de fichier réduite.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Une erreur est survenue pendant l\'envoi de l\'image',
+ 'image_upload_type_error' => 'Le format de l\'image envoyée n\'est pas valide',
+ 'image_upload_replace_type' => 'Le fichier image doit être remplacé par une image du même type',
+ 'image_upload_memory_limit' => 'Impossible de gérer le chargement de l\'image et/ou la création de miniatures en raison de limitations de ressources du système.',
+ 'image_thumbnail_memory_limit' => 'Impossible de créer les variations de taille d\'image en raison des limitations de ressources du système.',
+ 'image_gallery_thumbnail_memory_limit' => 'Impossible de créer les vignettes de la galerie en raison de limitations de ressources du système.',
+ 'drawing_data_not_found' => 'Les données de dessin n\'ont pas pu être chargées. Le fichier de dessin peut ne plus exister ou vous n\'avez pas la permission d\'y accéder.',
+
+ // Attachments
+ 'attachment_not_found' => 'Fichier joint non trouvé',
+ 'attachment_upload_error' => 'Une erreur s\'est produite avec le téléversement du fichier joint',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Le brouillon n\'a pas pu être enregistré. Vérifiez votre connexion internet',
+ 'page_draft_delete_fail' => 'Impossible de supprimer le brouillon et de récupérer le contenu sauvegardé de la page actuelle',
+ 'page_custom_home_deletion' => 'Impossible de supprimer une page définie comme page d\'accueil',
+
+ // Entities
+ 'entity_not_found' => 'Entité non trouvée',
+ 'bookshelf_not_found' => 'Étagère introuvable',
+ 'book_not_found' => 'Livre non trouvé',
+ 'page_not_found' => 'Page non trouvée',
+ 'chapter_not_found' => 'Chapitre non trouvé',
+ 'selected_book_not_found' => 'Ce livre n\'a pas été trouvé',
+ 'selected_book_chapter_not_found' => 'Ce livre ou chapitre n\'a pas été trouvé',
+ 'guests_cannot_save_drafts' => 'Les invités ne peuvent pas enregistrer de brouillons',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Vous ne pouvez pas supprimer le dernier administrateur',
+ 'users_cannot_delete_guest' => 'Vous ne pouvez pas supprimer l\'utilisateur invité',
+ 'users_could_not_send_invite' => 'Impossible de créer l\'utilisateur à cause d\'une erreur d\'envoi de l\'email d\'invitation',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Ce rôle ne peut pas être modifié',
+ 'role_system_cannot_be_deleted' => 'Ceci est un rôle du système et ne peut pas être supprimé',
+ 'role_registration_default_cannot_delete' => 'Ce rôle ne peut pas être supprimé tant qu\'il est le rôle par défaut',
+ 'role_cannot_remove_only_admin' => 'Ceci est le seul compte administrateur. Assignez un nouvel administrateur avant de le supprimer ici.',
+
+ // Comments
+ 'comment_list' => 'Une erreur s\'est produite lors de la récupération des commentaires.',
+ 'cannot_add_comment_to_draft' => 'Vous ne pouvez pas ajouter de commentaires à un brouillon.',
+ 'comment_add' => 'Une erreur s\'est produite lors de l\'ajout du commentaire.',
+ 'comment_delete' => 'Une erreur s\'est produite lors de la suppression du commentaire.',
+ 'empty_comment' => 'Impossible d\'ajouter un commentaire vide.',
+
+ // Error pages
+ '404_page_not_found' => 'Page non trouvée',
+ 'sorry_page_not_found' => 'Désolé, cette page n\'a pas pu être trouvée.',
+ 'sorry_page_not_found_permission_warning' => 'Si cette page est censée exister, il se peut que vous n\'ayez pas l\'autorisation de la consulter.',
+ 'image_not_found' => 'Image non trouvée',
+ 'image_not_found_subtitle' => 'Désolé, l\'image que vous cherchez ne peut être trouvée.',
+ 'image_not_found_details' => 'Si cette image était censée exister, il se pourrait qu\'elle ait été supprimée.',
+ 'return_home' => 'Retour à l\'accueil',
+ 'error_occurred' => 'Une erreur est survenue',
+ 'app_down' => ':appName n\'est pas en service pour le moment',
+ 'back_soon' => 'Nous serons bientôt de retour.',
+
+ // Import
+ 'import_zip_cant_read' => 'Impossible de lire le fichier ZIP.',
+ 'import_zip_cant_decode_data' => 'Impossible de trouver et de décoder le contenu ZIP data.json.',
+ 'import_zip_no_data' => 'Les données du fichier ZIP n\'ont pas de livre, de chapitre ou de page attendus.',
+ 'import_zip_data_too_large' => 'Le contenu du fichier ZIP pour data.json dépasse la taille maximale de téléversement autorisée.',
+ 'import_validation_failed' => 'L\'importation du ZIP n\'a pas été validée avec les erreurs :',
+ 'import_zip_failed_notification' => 'Impossible d\'importer le fichier ZIP.',
+ 'import_perms_books' => 'Vous n\'avez pas les permissions requises pour créer des livres.',
+ 'import_perms_chapters' => 'Vous n\'avez pas les permissions requises pour créer des chapitres.',
+ 'import_perms_pages' => 'Vous n\'avez pas les permissions requises pour créer des pages.',
+ 'import_perms_images' => 'Vous n\'avez pas les permissions requises pour créer des images.',
+ 'import_perms_attachments' => 'Vous n\'avez pas les permissions requises pour créer des pièces jointes.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Aucun jeton d\'autorisation trouvé pour la demande',
+ 'api_bad_authorization_format' => 'Un jeton d\'autorisation a été trouvé pour la requête, mais le format semble incorrect',
+ 'api_user_token_not_found' => 'Aucun jeton API correspondant n\'a été trouvé pour le jeton d\'autorisation fourni',
+ 'api_incorrect_token_secret' => 'Le secret fourni pour le jeton d\'API utilisé est incorrect',
+ 'api_user_no_api_permission' => 'Le propriétaire du jeton API utilisé n\'a pas la permission de passer des requêtes API',
+ 'api_user_token_expired' => 'Le jeton d\'autorisation utilisé a expiré',
+ 'api_cookie_auth_only_get' => 'Seules les requêtes GET sont autorisées lors de l’utilisation de l’API avec une authentification basée sur les cookies',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Erreur émise lors de l\'envoi d\'un e-mail de test :',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'L\'URL ne correspond pas aux hôtes SSR autorisés configurés',
+];
diff --git a/lang/fr/notifications.php b/lang/fr/notifications.php
new file mode 100644
index 00000000000..dc4127b032f
--- /dev/null
+++ b/lang/fr/notifications.php
@@ -0,0 +1,29 @@
+ 'Nouveau commentaire sur la page : :pageName',
+ 'new_comment_intro' => 'Un utilisateur a commenté une page dans :appName:',
+ 'new_page_subject' => 'Nouvelle page: :pageName',
+ 'new_page_intro' => 'Une nouvelle page a été créée dans :appName:',
+ 'updated_page_subject' => 'Page mise à jour: :pageName',
+ 'updated_page_intro' => 'Une page a été mise à jour dans :appName:',
+ 'updated_page_debounce' => 'Pour éviter de nombreuses notifications, pendant un certain temps, vous ne recevrez pas de notifications pour d\'autres modifications de cette page par le même éditeur.',
+ 'comment_mention_subject' => 'Vous avez été mentionné dans un commentaire sur la page : :pageName',
+ 'comment_mention_intro' => 'Vous avez été mentionné dans un commentaire sur :appName:',
+
+ 'detail_page_name' => 'Nom de la page :',
+ 'detail_page_path' => 'Chemin de la page :',
+ 'detail_commenter' => 'Commenta·teur·trice :',
+ 'detail_comment' => 'Commentaire :',
+ 'detail_created_by' => 'Créé par :',
+ 'detail_updated_by' => 'Mis à jour par :',
+
+ 'action_view_comment' => 'Voir le commentaire',
+ 'action_view_page' => 'Afficher la page',
+
+ 'footer_reason' => 'Cette notification vous a été envoyée car :link couvre ce type d\'activité pour cet élément.',
+ 'footer_reason_link' => 'vos préférences de notification',
+];
diff --git a/resources/lang/fr/pagination.php b/lang/fr/pagination.php
similarity index 100%
rename from resources/lang/fr/pagination.php
rename to lang/fr/pagination.php
diff --git a/lang/fr/passwords.php b/lang/fr/passwords.php
new file mode 100644
index 00000000000..17dd15d01bd
--- /dev/null
+++ b/lang/fr/passwords.php
@@ -0,0 +1,15 @@
+ 'Les mots de passe doivent faire au moins 8 caractères et correspondre à la confirmation.',
+ 'user' => "Nous n'avons pas trouvé d'utilisateur avec cette adresse e-mail.",
+ 'token' => 'Le jeton de réinitialisation du mot de passe n\'est pas valide pour cette adresse e-mail.',
+ 'sent' => 'Nous vous avons envoyé un lien de réinitialisation de mot de passe par e-mail !',
+ 'reset' => 'Votre mot de passe a été réinitialisé !',
+
+];
diff --git a/lang/fr/preferences.php b/lang/fr/preferences.php
new file mode 100644
index 00000000000..dbae975f31d
--- /dev/null
+++ b/lang/fr/preferences.php
@@ -0,0 +1,52 @@
+ 'Mon compte',
+
+ 'shortcuts' => 'Raccourcis',
+ 'shortcuts_interface' => 'Préférences de raccourcis de l\'interface utilisateur',
+ 'shortcuts_toggle_desc' => 'Ici vous pouvez activer ou désactiver les raccourcis clavier, utilisés pour la navigation et les actions.',
+ 'shortcuts_customize_desc' => 'Vous pouvez personnaliser chaque raccourci ci-dessous. Il vous suffit d\'appuyer sur la combinaison de touche choisie après avoir sélectionné l\'entrée pour un raccourci.',
+ 'shortcuts_toggle_label' => 'Raccourcis clavier activés',
+ 'shortcuts_section_navigation' => 'Navigation',
+ 'shortcuts_section_actions' => 'Actions communes',
+ 'shortcuts_save' => 'Sauvegarder les raccourcis',
+ 'shortcuts_overlay_desc' => 'Note : Lorsque les raccourcis sont activés, assistant est disponible en appuyant sur "?" qui mettra en surbrillance les raccourcis disponibles pour les actions actuellement visibles à l\'écran.',
+ 'shortcuts_update_success' => 'Les préférences de raccourci ont été mises à jour !',
+ 'shortcuts_overview_desc' => 'Gérer les raccourcis clavier que vous pouvez utiliser pour naviguer dans l\'interface utilisateur du système.',
+
+ 'notifications' => 'Préférences de notification',
+ 'notifications_desc' => 'Contrôlez les notifications par e-mail que vous recevez lorsque certaines activités sont effectuées dans le système.',
+ 'notifications_opt_own_page_changes' => 'Notifier lors des modifications des pages que je possède',
+ 'notifications_opt_own_page_comments' => 'Notifier lorsque les pages que je possède sont commentées',
+ 'notifications_opt_comment_mentions' => 'Notifier lorsque je suis mentionné dans un commentaire',
+ 'notifications_opt_comment_replies' => 'Notifier les réponses à mes commentaires',
+ 'notifications_save' => 'Enregistrer les préférences',
+ 'notifications_update_success' => 'Les préférences de notification ont été mises à jour !',
+ 'notifications_watched' => 'Éléments surveillés et ignorés',
+ 'notifications_watched_desc' => 'Voici les éléments qui ont des préférences de surveillance personnalisées appliquées. Pour mettre à jour vos préférences pour celles-ci, consultez l\'élément puis trouvez les options de surveillance dans la barre latérale.',
+
+ 'auth' => 'Accès et sécurité',
+ 'auth_change_password' => 'Changer le mot de passe',
+ 'auth_change_password_desc' => 'Changez le mot de passe que vous utilisez pour vous connecter à l\'application. Il doit comporter au moins 8 caractères.',
+ 'auth_change_password_success' => 'Le mot de passe a été mis à jour !',
+
+ 'profile' => 'Détails du profil',
+ 'profile_desc' => 'Gérez les détails de votre compte qui représentent comment les autres utilisateurs vous voient, en plus d\'autres détails utilisés pour la communication et la personnalisation du système.',
+ 'profile_view_public' => 'Voir le profil public',
+ 'profile_name_desc' => 'Configurez votre nom d\'affichage qui sera visible par les autres utilisateurs à travers l\'activité que vous effectuez ainsi que le contenu que vous possédez.',
+ 'profile_email_desc' => 'Ce courriel sera utilisé pour les notifications et, en fonction de l\'authentification active du système, l\'accès au système.',
+ 'profile_email_no_permission' => 'Malheureusement, vous n\'avez pas la permission de changer votre adresse e-mail. Si vous souhaitez la modifier, demandez à un administrateur de le faire pour vous.',
+ 'profile_avatar_desc' => 'Sélectionnez une image qui sera utilisée pour vous représenter aux autres utilisateurs. Idéalement, cette image devrait être carrée et d\'environ 256 pixels de largeur et de hauteur.',
+ 'profile_admin_options' => 'Options Administrateur',
+ 'profile_admin_options_desc' => 'Des options administrateurs supplémentaires, comme celles permettant de gérer les affectations de rôles, peuvent être trouvées pour votre compte dans la zone "Paramètres > Utilisateurs" de l\'application.',
+
+ 'delete_account' => 'Supprimer le compte',
+ 'delete_my_account' => 'Supprimer mon compte',
+ 'delete_my_account_desc' => 'Cela supprimera complètement votre compte utilisateur du système. Vous ne pourrez pas récupérer ce compte ou annuler cette action. Le contenu que vous avez créé, comme les pages créées et les images téléchargées, sera sauvegardé.',
+ 'delete_my_account_warning' => 'Êtes-vous sûr(e) de vouloir supprimer votre compte ?',
+];
diff --git a/lang/fr/settings.php b/lang/fr/settings.php
new file mode 100644
index 00000000000..7b0987a488c
--- /dev/null
+++ b/lang/fr/settings.php
@@ -0,0 +1,374 @@
+ 'Préférences',
+ 'settings_save' => 'Enregistrer les préférences',
+ 'system_version' => 'Version du système',
+ 'categories' => 'Catégories',
+
+ // App Settings
+ 'app_customization' => 'Personnalisation',
+ 'app_features_security' => 'Fonctionnalités et sécurité',
+ 'app_name' => 'Nom de l\'application',
+ 'app_name_desc' => 'Ce nom est affiché dans l\'en-tête et les e-mails.',
+ 'app_name_header' => 'Afficher le nom dans l\'en-tête',
+ 'app_public_access' => 'Accès public',
+ 'app_public_access_desc' => 'L\'activation de cette option permettra aux visiteurs, qui ne sont pas connectés, d\'accéder au contenu de votre instance BookStack.',
+ 'app_public_access_desc_guest' => 'L\'accès pour les visiteurs publics peut être contrôlé par l\'utilisateur "Guest".',
+ 'app_public_access_toggle' => 'Autoriser l\'accès public',
+ 'app_public_viewing' => 'Accepter l\'affichage public des pages ?',
+ 'app_secure_images' => 'Ajout d\'image sécurisé',
+ 'app_secure_images_toggle' => 'Activer l\'ajout d\'image sécurisée',
+ 'app_secure_images_desc' => 'Pour des questions de performances, toutes les images sont publiques. Cette option ajoute une chaîne aléatoire difficile à deviner dans les URLs des images.',
+ 'app_default_editor' => 'Éditeur de page par défaut',
+ 'app_default_editor_desc' => 'Sélectionnez l\'éditeur qui sera utilisé par défaut lors de l\'édition de nouvelles pages. Cela peut être remplacé au niveau de la page où les permissions sont autorisées.',
+ 'app_custom_html' => 'HTML personnalisé dans l\'en-tête',
+ 'app_custom_html_desc' => 'Le contenu inséré ici sera ajouté en bas de la balise de toutes les pages. Vous pouvez l\'utiliser pour ajouter du CSS personnalisé ou un tracker analytique.',
+ 'app_custom_html_disabled_notice' => 'Le contenu de l\'en-tête HTML personnalisé est désactivé sur cette page de paramètres pour garantir que les modifications les plus récentes puissent être annulées.',
+ 'app_logo' => 'Logo de l\'application',
+ 'app_logo_desc' => 'Celui-ci est utilisé dans la barre d\'en-tête de l\'application, entre autres zones. L\'image doit être de 86 px de hauteur. Les plus grandes images seront réduites.',
+ 'app_icon' => 'Icône de l\'application',
+ 'app_icon_desc' => 'Cette icône est utilisée pour les onglets du navigateur et les icônes de raccourci. Doit être une image PNG carrée de 256 px.',
+ 'app_homepage' => 'Page d\'accueil de l\'application',
+ 'app_homepage_desc' => 'Choisissez une page à afficher sur la page d\'accueil au lieu de la vue par défaut. Les permissions sont ignorées pour les pages sélectionnées.',
+ 'app_homepage_select' => 'Choisissez une page',
+ 'app_footer_links' => 'Liens de pied de page',
+ 'app_footer_links_desc' => 'Ajoutez des liens dans le pied de page du site. Ils seront affichés en bas de la plupart des pages, incluant celles qui ne nécesittent pas de connexion. Vous pouvez utiliser l\'étiquette "trans::" pour utiliser les traductions définies par le système. Par exemple, utiliser "trans::common.privacy_policy" fournira la traduction de "Politique de Confidentalité" et "trans::common.terms_of_service" fournira la traduction de "Conditions d\'utilisation".',
+ 'app_footer_links_label' => 'Libellé du lien',
+ 'app_footer_links_url' => 'URL du lien',
+ 'app_footer_links_add' => 'Ajouter un lien en pied de page',
+ 'app_disable_comments' => 'Désactiver les commentaires',
+ 'app_disable_comments_toggle' => 'Désactiver les commentaires',
+ 'app_disable_comments_desc' => 'Désactive les commentaires sur toutes les pages de l\'application. Les commentaires existants ne sont pas affichés.',
+
+ // Color settings
+ 'color_scheme' => 'Schéma de couleurs de l\'application',
+ 'color_scheme_desc' => 'Défini les couleurs à utiliser dans l\'interface utilisateur de l\'application. Les couleurs peuvent être configurées séparément pour les modes sombre et clair pour mieux correspondre au thème et assurer la lisibilité.',
+ 'ui_colors_desc' => 'Défini la couleur primaire de l\'application et la couleur de lien par défaut. La couleur primaire est principalement utilisée pour la bannière d\'en-tête, les boutons et les décorations de l\'interface. La couleur par défaut du lien est utilisée pour les liens et les actions basées sur le texte, à la fois dans le contenu écrit et dans l\'interface de l\'application.',
+ 'app_color' => 'Couleur primaire',
+ 'link_color' => 'Couleur de lien par défaut',
+ 'content_colors_desc' => 'Défini les couleurs pour tous les éléments de la hiérarchie d\'organisation des pages. Choisir les couleurs avec une luminosité similaire aux couleurs par défaut est recommandé pour la lisibilité.',
+ 'bookshelf_color' => 'Couleur des étagères',
+ 'book_color' => 'Couleur des livres',
+ 'chapter_color' => 'Couleur des chapitres',
+ 'page_color' => 'Couleur des pages',
+ 'page_draft_color' => 'Couleur des brouillons',
+
+ // Registration Settings
+ 'reg_settings' => 'Préférence pour l\'inscription',
+ 'reg_enable' => 'Activer l\'inscription',
+ 'reg_enable_toggle' => 'Activer l\'inscription',
+ 'reg_enable_desc' => 'Lorsque l\'inscription est activée, l\'utilisateur pourra s\'enregistrer en tant qu\'utilisateur de l\'application. Lors de l\'inscription, ils se voient attribuer un rôle par défaut.',
+ 'reg_default_role' => 'Rôle par défaut lors de l\'inscription',
+ 'reg_enable_external_warning' => 'L\'option ci-dessus est ignorée lorsque l\'authentification externe LDAP ou SAML est activée. Les comptes utilisateur pour les membres non existants seront créés automatiquement si l\'authentification, par rapport au système externe utilisé, est réussie.',
+ 'reg_email_confirmation' => 'Confirmation de l\'e-mail',
+ 'reg_email_confirmation_toggle' => 'Obliger la confirmation par e-mail ?',
+ 'reg_confirm_email_desc' => 'Si la restriction de domaine est activée, la confirmation sera automatiquement obligatoire et cette valeur sera ignorée.',
+ 'reg_confirm_restrict_domain' => 'Restreindre l\'inscription à un domaine',
+ 'reg_confirm_restrict_domain_desc' => 'Entrez une liste de domaines acceptés lors de l\'inscription, séparés par une virgule. Les utilisateurs recevront un e-mail de confirmation à cette adresse. Les utilisateurs pourront changer leur adresse après inscription s\'ils le souhaitent.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Aucune restriction en place',
+
+ // Sorting Settings
+ 'sorting' => 'Listes et tri',
+ 'sorting_book_default' => 'Tri des livres par défaut',
+ 'sorting_book_default_desc' => 'Sélectionnez le tri par défaut à mettre en place sur les nouveaux livres. Cela n’affectera pas les livres existants, et peut être redéfini dans les livres.',
+ 'sorting_rules' => 'Règles de tri',
+ 'sorting_rules_desc' => 'Ce sont les opérations de tri qui peuvent être appliquées au contenu du système.',
+ 'sort_rule_assigned_to_x_books' => 'Assignée à :count livre|Assignée à :count livres',
+ 'sort_rule_create' => 'Créer une règle de tri',
+ 'sort_rule_edit' => 'Modifier une règle de tri',
+ 'sort_rule_delete' => 'Supprimer une règle de tri',
+ 'sort_rule_delete_desc' => 'Supprimer cette règle du système. Les livres l’utilisant précédemment reviendront au tri manuel.',
+ 'sort_rule_delete_warn_books' => 'Cette règle est actuellement utilisée par :count livre(s). Êtes-vous sûr·e de vouloir la supprimer ?',
+ 'sort_rule_delete_warn_default' => 'Cette règle est actuellement utilisée par défaut pour les livres. Êtes-vous sûr·e de vouloir la supprimer ?',
+ 'sort_rule_details' => 'Détails de la Règle de Tri',
+ 'sort_rule_details_desc' => 'Assignez un nom à cette règle, qui apparaîtra dans les listes servant à sélectionner une règle de tri.',
+ 'sort_rule_operations' => 'Opérations de tri',
+ 'sort_rule_operations_desc' => 'Configurez les actions de tri à appliquer en les déplaçant depuis la liste d’opérations. Lors de l’usage de cette règle, les opérations seront appliquées dans l’ordre, de haut en bas. Les changements effectués ici seront appliqués à tous les livres utilisant cette règle lors de la sauvegarde.',
+ 'sort_rule_available_operations' => 'Opérations disponibles',
+ 'sort_rule_available_operations_empty' => 'Aucune opération restante',
+ 'sort_rule_configured_operations' => 'Opérations sélectionnées',
+ 'sort_rule_configured_operations_empty' => 'Déplacez/ajoutez des opérations depuis la liste "Opérations disponibles"',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Nom - Alphabétique',
+ 'sort_rule_op_name_numeric' => 'Nom - Numérique',
+ 'sort_rule_op_created_date' => 'Date de création',
+ 'sort_rule_op_updated_date' => 'Date de mise à jour',
+ 'sort_rule_op_chapters_first' => 'Chapitres en premier',
+ 'sort_rule_op_chapters_last' => 'Chapitres en dernier',
+ 'sorting_page_limits' => 'Limite d\'affichage par page',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Maintenance',
+ 'maint_image_cleanup' => 'Nettoyer les images',
+ 'maint_image_cleanup_desc' => 'Scanne le contenu des pages et des révisions pour vérifier les images, les dessins en cours d\'utilisation et les doublons. Assurez-vous d\'avoir une sauvegarde de la base de données et des images avant de lancer ceci.',
+ 'maint_delete_images_only_in_revisions' => 'Supprimer également les images qui n\'existent que dans les anciennes révisions de page',
+ 'maint_image_cleanup_run' => 'Lancer le nettoyage',
+ 'maint_image_cleanup_warning' => ':count images potentiellement inutilisées trouvées. Êtes-vous sûr de vouloir supprimer ces images ?',
+ 'maint_image_cleanup_success' => ':count images potentiellement inutilisées trouvées et supprimées !',
+ 'maint_image_cleanup_nothing_found' => 'Aucune image inutilisée trouvée, rien à supprimer !',
+ 'maint_send_test_email' => 'Envoyer un e-mail de test',
+ 'maint_send_test_email_desc' => 'Ceci envoie un e-mail de test à votre adresse e-mail spécifiée dans votre profil.',
+ 'maint_send_test_email_run' => 'Envoyer un e-mail de test',
+ 'maint_send_test_email_success' => 'E-mail envoyé à :address',
+ 'maint_send_test_email_mail_subject' => 'E-mail de test',
+ 'maint_send_test_email_mail_greeting' => 'L\'envoi d\'e-mail semble fonctionner !',
+ 'maint_send_test_email_mail_text' => 'Félicitations ! Comme vous avez bien reçu cette notification, vos paramètres d\'e-mail semblent être configurés correctement.',
+ 'maint_recycle_bin_desc' => 'Les étagères, livres, chapitres et pages supprimés sont envoyés dans la corbeille afin qu\'ils puissent être restaurés ou supprimés définitivement. Les éléments plus anciens de la corbeille peuvent être supprimés automatiquement après un certain temps selon la configuration du système.',
+ 'maint_recycle_bin_open' => 'Ouvrir la corbeille',
+ 'maint_regen_references' => 'Régénérer les références',
+ 'maint_regen_references_desc' => 'Cette action reconstruira l\'index des références croisées dans la base de données. Ceci est généralement géré automatiquement, mais cette action peut être utile pour indexer les anciens contenus ou contenus ajoutés par des méthodes non officielles.',
+ 'maint_regen_references_success' => 'L\'index de référence a été régénéré !',
+ 'maint_timeout_command_note' => 'Note : Cette action peut prendre du temps pour s\'exécuter, ce qui peut conduire à des problèmes d\'expiration dans certains environnements Web. En tant qu\'alternative, cette action peut être effectuée à l\'aide d\'une commande de terminal.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Corbeille',
+ 'recycle_bin_desc' => 'Ici, vous pouvez restaurer les éléments qui ont été supprimés ou choisir de les effacer définitivement du système. Cette liste n\'est pas filtrée contrairement aux listes d\'activités similaires dans le système pour lesquelles les filtres d\'autorisation sont appliqués.',
+ 'recycle_bin_deleted_item' => 'Élément supprimé',
+ 'recycle_bin_deleted_parent' => 'Parent',
+ 'recycle_bin_deleted_by' => 'Supprimé par',
+ 'recycle_bin_deleted_at' => 'Date de suppression',
+ 'recycle_bin_permanently_delete' => 'Supprimer définitivement',
+ 'recycle_bin_restore' => 'Restaurer',
+ 'recycle_bin_contents_empty' => 'La corbeille est vide',
+ 'recycle_bin_empty' => 'Vider la corbeille',
+ 'recycle_bin_empty_confirm' => 'Cela détruira définitivement tous les éléments de la corbeille, y compris le contenu de chaque élément. Êtes-vous sûr de vouloir vider la corbeille ?',
+ 'recycle_bin_destroy_confirm' => 'Cette action supprimera définitivement cet élément du système ainsi que tous les éléments enfants listés ci-dessous et vous ne pourrez plus restaurer ce contenu. Êtes-vous sûr de vouloir supprimer définitivement cet élément ?',
+ 'recycle_bin_destroy_list' => 'Éléments à détruire',
+ 'recycle_bin_restore_list' => 'Éléments à restaurer',
+ 'recycle_bin_restore_confirm' => 'Cette action restaurera l\'élément supprimé, y compris tous les éléments enfants, à leur emplacement d\'origine. Si l\'emplacement d\'origine a été supprimé depuis et est maintenant dans la corbeille, l\'élément parent devra également être restauré.',
+ 'recycle_bin_restore_deleted_parent' => 'Le parent de cet élément a aussi été supprimé. Cet élément ne pourra être restauré sans que son parent le soit également.',
+ 'recycle_bin_restore_parent' => 'Restaurer le parent',
+ 'recycle_bin_destroy_notification' => ':count éléments supprimés de la corbeille au total.',
+ 'recycle_bin_restore_notification' => ':count éléments restaurés de la corbeille au total.',
+
+ // Audit Log
+ 'audit' => 'Journal d\'audit',
+ 'audit_desc' => 'Ce journal d\'audit affiche un suivi des activités de l\'application. Cette liste n\'est pas filtrée contrairement aux suivis d\'activités similaires de l\'application où les filtres d\'autorisation sont appliqués.',
+ 'audit_event_filter' => 'Filtres d\'événement',
+ 'audit_event_filter_no_filter' => 'Pas de filtre',
+ 'audit_deleted_item' => 'Élément supprimé',
+ 'audit_deleted_item_name' => 'Nom: :name',
+ 'audit_table_user' => 'Utilisateur',
+ 'audit_table_event' => 'Événement',
+ 'audit_table_related' => 'Élément concerné ou action réalisée',
+ 'audit_table_ip' => 'Adresse IP',
+ 'audit_table_date' => 'Horodatage',
+ 'audit_date_from' => 'À partir du',
+ 'audit_date_to' => 'Jusqu\'au',
+
+ // Role Settings
+ 'roles' => 'Rôles',
+ 'role_user_roles' => 'Rôles des utilisateurs',
+ 'roles_index_desc' => 'Les rôles sont utilisés pour regrouper les utilisateurs et fournir une autorisation système à leurs membres. Lorsqu\'un utilisateur est membre de plusieurs rôles, les privilèges accordés se cumulent et l\'utilisateur hérite de tous les droits d\'accès.',
+ 'roles_x_users_assigned' => ':count utilisateur assigné|:count utilisateurs assignés',
+ 'roles_x_permissions_provided' => ':count permission|:count permissions',
+ 'roles_assigned_users' => 'Utilisateurs assignés',
+ 'roles_permissions_provided' => 'Permissions accordées',
+ 'role_create' => 'Créer un nouveau rôle',
+ 'role_delete' => 'Supprimer le rôle',
+ 'role_delete_confirm' => 'Ceci va supprimer le rôle \':roleName\'.',
+ 'role_delete_users_assigned' => 'Ce rôle a :userCount utilisateurs assignés. Vous pouvez choisir un rôle de remplacement pour ces utilisateurs.',
+ 'role_delete_no_migration' => "Ne pas assigner de nouveau rôle",
+ 'role_delete_sure' => 'Êtes-vous sûr de vouloir supprimer ce rôle ?',
+ 'role_edit' => 'Modifier le rôle',
+ 'role_details' => 'Détails du rôle',
+ 'role_name' => 'Nom du rôle',
+ 'role_desc' => 'Courte description du rôle',
+ 'role_mfa_enforced' => 'Nécessite une authentification multi-facteurs',
+ 'role_external_auth_id' => 'Identifiants d\'authentification externes',
+ 'role_system' => 'Permissions système',
+ 'role_manage_users' => 'Gérer les utilisateurs',
+ 'role_manage_roles' => 'Gérer les rôles et permissions',
+ 'role_manage_entity_permissions' => 'Gérer les permissions sur les livres, chapitres et pages',
+ 'role_manage_own_entity_permissions' => 'Gérer les permissions de ses propres livres, chapitres et pages',
+ 'role_manage_page_templates' => 'Gérer les modèles de page',
+ 'role_access_api' => 'Accès à l\'API du système',
+ 'role_manage_settings' => 'Gérer les préférences de l\'application',
+ 'role_export_content' => 'Exporter le contenu',
+ 'role_import_content' => 'Importer le contenu',
+ 'role_editor_change' => 'Changer l\'éditeur de page',
+ 'role_notifications' => 'Recevoir et gérer les notifications',
+ 'role_permission_note_users_and_roles' => 'Ces autorisations permettront également l\'accès à la consultation et la recherche des utilisateurs et des rôles dans le système.',
+ 'role_asset' => 'Permissions des ressources',
+ 'roles_system_warning' => 'Sachez que l\'accès à l\'une des trois permissions ci-dessus peut permettre à un utilisateur de modifier ses propres privilèges ou les privilèges des autres utilisateurs du système. N\'attribuez uniquement des rôles avec ces permissions qu\'à des utilisateurs de confiance.',
+ 'role_asset_desc' => 'Ces permissions contrôlent l\'accès par défaut des ressources dans le système. Les permissions dans les livres, les chapitres et les pages ignoreront ces permissions',
+ 'role_asset_admins' => 'Les administrateurs ont automatiquement accès à tous les contenus mais les options suivantes peuvent afficher ou masquer certaines options de l\'interface.',
+ 'role_asset_image_view_note' => 'Cela concerne la visibilité dans le gestionnaire d\'images. L\'accès réel des fichiers d\'image téléchargés dépendra de l\'option de stockage d\'images du système.',
+ 'role_asset_users_note' => 'Ces autorisations permettront également l\'accès à la consultation et la recherche des utilisateurs dans le système.',
+ 'role_all' => 'Tous',
+ 'role_own' => 'Propres',
+ 'role_controlled_by_asset' => 'Contrôlé par les ressources les ayant envoyés',
+ 'role_save' => 'Enregistrer le rôle',
+ 'role_users' => 'Utilisateurs ayant ce rôle',
+ 'role_users_none' => 'Aucun utilisateur avec ce rôle actuellement',
+
+ // Users
+ 'users' => 'Utilisateurs',
+ 'users_index_desc' => 'Créer et gérer des comptes utilisateur individuels au sein du système. Les comptes utilisateur sont employés pour la connexion et l\'attribution du contenu et le suivi d\'activité. Les permissions d\'accès sont principalement basées sur les rôles, mais la propriété du contenu de l\'utilisateur, entre autres facteurs, peut également affecter les permissions et l\'accès.',
+ 'user_profile' => 'Profil d\'utilisateur',
+ 'users_add_new' => 'Ajouter un nouvel utilisateur',
+ 'users_search' => 'Rechercher les utilisateurs',
+ 'users_latest_activity' => 'Dernière activité',
+ 'users_details' => 'Informations de l\'utilisateur',
+ 'users_details_desc' => 'Définissez un nom et une adresse e-mail pour cet utilisateur. L\'adresse e-mail sera utilisée pour se connecter à l\'application.',
+ 'users_details_desc_no_email' => 'Définissez un nom d\'affichage pour cet utilisateur afin que les autres puissent le reconnaître.',
+ 'users_role' => 'Rôles de l\'utilisateur',
+ 'users_role_desc' => 'Sélectionnez les rôles auxquels cet utilisateur sera affecté. Si un utilisateur est affecté à plusieurs rôles, les permissions de ces rôles s\'empileront et ils recevront toutes les capacités des rôles affectés.',
+ 'users_password' => 'Mot de passe de l\'utilisateur',
+ 'users_password_desc' => 'Définissez un mot de passe pour vous connecter à l\'application. Il doit comporter au moins 8 caractères.',
+ 'users_send_invite_text' => 'Vous pouvez choisir d\'envoyer à cet utilisateur un e-mail d\'invitation qui lui permet de définir son propre mot de passe, sinon vous pouvez définir son mot de passe vous-même.',
+ 'users_send_invite_option' => 'Envoyer l\'e-mail d\'invitation',
+ 'users_external_auth_id' => 'Identifiant d\'authentification externe',
+ 'users_external_auth_id_desc' => 'Lorsqu\'un système d\'authentification externe est utilisé (SAML2, OIDC ou LDAP) c\'est l\'identifiant unique qui relie cet utilisateur à un compte système d\'authentification. Vous pouvez ignorer ce champ si vous utilisez l\'authentification email par défaut.',
+ 'users_password_warning' => 'Remplissez ce qui suit uniquement si vous souhaitez changer le mot de passe de cet utilisateur.',
+ 'users_system_public' => 'Cet utilisateur représente les invités visitant votre instance. Il est assigné automatiquement aux invités.',
+ 'users_delete' => 'Supprimer un utilisateur',
+ 'users_delete_named' => 'Supprimer l\'utilisateur :userName',
+ 'users_delete_warning' => 'Ceci va supprimer \':userName\' du système.',
+ 'users_delete_confirm' => 'Êtes-vous sûr(e) de vouloir supprimer cet utilisateur ?',
+ 'users_migrate_ownership' => 'Transférer la propriété',
+ 'users_migrate_ownership_desc' => 'Sélectionnez un utilisateur ici si vous voulez qu\'un autre utilisateur devienne le propriétaire de tous les éléments actuellement détenus par cet utilisateur.',
+ 'users_none_selected' => 'Aucun utilisateur n\'a été sélectionné',
+ 'users_edit' => 'Modifier l\'utilisateur',
+ 'users_edit_profile' => 'Modifier le profil',
+ 'users_avatar' => 'Avatar de l\'utilisateur',
+ 'users_avatar_desc' => 'Cette image doit être un carré d\'environ 256 px.',
+ 'users_preferred_language' => 'Langue préférée',
+ 'users_preferred_language_desc' => 'Cette option changera la langue utilisée pour l\'interface utilisateur de l\'application. Ceci n\'affectera aucun contenu créé par l\'utilisateur.',
+ 'users_social_accounts' => 'Réseaux sociaux',
+ 'users_social_accounts_desc' => 'Voir l\'état des comptes sociaux connectés pour cet utilisateur. Les comptes sociaux peuvent être utilisés en plus du système d\'authentification principal pour l\'accès au système.',
+ 'users_social_accounts_info' => 'Vous pouvez connecter des réseaux sociaux à votre compte pour vous connecter plus rapidement. Déconnecter un compte n\'enlèvera pas les accès autorisés précédemment sur votre compte de réseau social.',
+ 'users_social_connect' => 'Connecter le compte',
+ 'users_social_disconnect' => 'Déconnecter le compte',
+ 'users_social_status_connected' => 'Connecté',
+ 'users_social_status_disconnected' => 'Déconnecté',
+ 'users_social_connected' => 'Votre compte :socialAccount a été ajouté avec succès.',
+ 'users_social_disconnected' => 'Votre compte :socialAccount a été déconnecté avec succès',
+ 'users_api_tokens' => 'Jetons API',
+ 'users_api_tokens_desc' => 'Créer et gérer les jetons d\'accès utilisés pour s\'authentifier avec l\'API REST de BookStack. Les permissions pour l\'API sont gérées par l\'utilisateur auquel le jeton appartient.',
+ 'users_api_tokens_none' => 'Aucun jeton API n\'a été créé pour cet utilisateur',
+ 'users_api_tokens_create' => 'Créer un jeton',
+ 'users_api_tokens_expires' => 'Expire',
+ 'users_api_tokens_docs' => 'Documentation de l\'API',
+ 'users_mfa' => 'Authentification multi-facteurs',
+ 'users_mfa_desc' => 'Configurer l\'authentification multi-facteurs ajoute une couche supplémentaire de sécurité à votre compte utilisateur.',
+ 'users_mfa_x_methods' => ':count méthode configurée|:count méthodes configurées',
+ 'users_mfa_configure' => 'Méthode de configuration',
+
+ // API Tokens
+ 'user_api_token_create' => 'Créer un nouveau jeton API',
+ 'user_api_token_name' => 'Nom',
+ 'user_api_token_name_desc' => 'Donnez à votre jeton un nom lisible pour l\'identifier plus tard.',
+ 'user_api_token_expiry' => 'Date d\'expiration',
+ 'user_api_token_expiry_desc' => 'Définissez une date à laquelle ce jeton expire. Après cette date, les demandes effectuées à l\'aide de ce jeton ne fonctionneront plus. Le fait de laisser ce champ vide entraînera une expiration dans 100 ans.',
+ 'user_api_token_create_secret_message' => 'Immédiatement après la création de ce jeton, un "ID de jeton" et "Secret de jeton" sera généré et affiché. Le secret ne sera affiché qu\'une seule fois, alors assurez-vous de copier la valeur dans un endroit sûr et sécurisé avant de continuer.',
+ 'user_api_token' => 'Jeton API',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'Il s\'agit d\'un identifiant généré par le système non modifiable pour ce jeton qui devra être fourni dans les demandes d\'API.',
+ 'user_api_token_secret' => 'Token Secret',
+ 'user_api_token_secret_desc' => 'Il s\'agit d\'un secret généré par le système pour ce jeton, qui devra être fourni dans les demandes d\'API. Cela ne sera affiché qu\'une seule fois, alors copiez cette valeur dans un endroit sûr et sécurisé.',
+ 'user_api_token_created' => 'Jeton créé :timeAgo',
+ 'user_api_token_updated' => 'Jeton mis à jour :timeAgo',
+ 'user_api_token_delete' => 'Supprimer le jeton',
+ 'user_api_token_delete_warning' => 'Cela supprimera complètement le jeton d\'API avec le nom \':tokenName\'.',
+ 'user_api_token_delete_confirm' => 'Souhaitez-vous vraiment effacer ce jeton API ?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Les Webhooks sont un moyen d\'envoyer des données à des URL externes lorsque certaines actions et événements se produisent dans le système, ce qui permet une intégration basée sur des événements avec des plates-formes externes telles que les systèmes de messagerie ou de notification.',
+ 'webhooks_x_trigger_events' => ':count événement déclencheur|:count événements déclencheurs',
+ 'webhooks_create' => 'Créer un nouveau Webhook',
+ 'webhooks_none_created' => 'Aucun webhook n\'a encore été créé.',
+ 'webhooks_edit' => 'Éditer le Webhook',
+ 'webhooks_save' => 'Enregistrer le Webhook',
+ 'webhooks_details' => 'Détails du Webhook',
+ 'webhooks_details_desc' => 'Renseignez un nom ainsi que votre endpoint POST sur lequel les données du webhook doivent être envoyées.',
+ 'webhooks_events' => 'Événements du Webhook',
+ 'webhooks_events_desc' => 'Sélectionnez tous les évènements qui doivent déclencher un appel sur ce webhook.',
+ 'webhooks_events_warning' => 'Gardez à l\'esprit que ces événements seront déclenchés pour chaque événement sélectionné, même si des permissions personnalisées sont appliquées. Vérifiez bien que l\'utilisation de ce webhook n\'exposera pas de contenu confidentiel.',
+ 'webhooks_events_all' => 'Tous les événements système',
+ 'webhooks_name' => 'Nom du Webhook',
+ 'webhooks_timeout' => 'Délai d\'expiration de requête du Webhook (en secondes)',
+ 'webhooks_endpoint' => 'Point de terminaison du Webhook',
+ 'webhooks_active' => 'Webhook actif',
+ 'webhook_events_table_header' => 'Événements',
+ 'webhooks_delete' => 'Supprimer le Webhook',
+ 'webhooks_delete_warning' => 'Ceci supprimera complètement du système le webhook ayant le nom \':webhookName\'.',
+ 'webhooks_delete_confirm' => 'Êtes-vous sûr(e) de vouloir supprimer ce webhook ?',
+ 'webhooks_format_example' => 'Exemple de format de webhook',
+ 'webhooks_format_example_desc' => 'Les données du webhook sont envoyées dans une requête POST vers l\'endpoint au format JSON respectant le format ci-dessous. Les propriétés "related_item" et "url" sont optionnelles et dépendront du type d\'événement déclenché.',
+ 'webhooks_status' => 'Statut du webhook',
+ 'webhooks_last_called' => 'Dernier appel :',
+ 'webhooks_last_errored' => 'Dernier en erreur :',
+ 'webhooks_last_error_message' => 'Dernier message d\'erreur : ',
+
+ // Licensing
+ 'licenses' => 'Licences',
+ 'licenses_desc' => 'Cette page détaille les informations de licence pour BookStack ainsi que les projets et librairies utilisées dans BookStack. Nombre des projets listés peuvent n\'être utilisés que dans un contexte de développement.',
+ 'licenses_bookstack' => 'Licences BookStack',
+ 'licenses_php' => 'Licences de librairies PHP',
+ 'licenses_js' => 'Licences de librairies JavaScript',
+ 'licenses_other' => 'Autres Licences',
+ 'license_details' => 'Détails de la licence',
+
+ //! If editing translations files directly please ignore this in all
+ //! languages apart from en. Content will be auto-copied from en.
+ //!////////////////////////////////
+ 'language_select' => [
+ 'en' => 'Anglais',
+ 'ar' => 'Arabe',
+ 'bg' => 'Bulgare',
+ 'bs' => 'Bosniaque',
+ 'ca' => 'Catalan',
+ 'cs' => 'Tchèque',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Danois',
+ 'de' => 'Allemand',
+ 'de_informal' => 'Allemand (informel)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Espagnol',
+ 'es_AR' => 'Espagnol (Argentine)',
+ 'et' => 'Estonien',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'Hébreu',
+ 'hr' => 'Croate',
+ 'hu' => 'Hongrois',
+ 'id' => 'Indonésien',
+ 'it' => 'Italien',
+ 'ja' => 'Japonais',
+ 'ko' => 'Coréen',
+ 'lt' => 'Lituanien',
+ 'lv' => 'Letton',
+ 'nb' => 'Norvegien',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Néerlandais',
+ 'pl' => 'Polonais',
+ 'pt' => 'Portugais',
+ 'pt_BR' => 'Portugais (Brésil)',
+ 'ro' => 'Română',
+ 'ru' => 'Russe',
+ 'sk' => 'Slovaque',
+ 'sl' => 'Slovène',
+ 'sv' => 'Suédois',
+ 'tr' => 'Turc',
+ 'uk' => 'Ukrainien',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Vietnamien',
+ 'zh_CN' => 'Chinois (simplifié)',
+ 'zh_TW' => 'Mandarin de Taïwan',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/fr/validation.php b/lang/fr/validation.php
new file mode 100644
index 00000000000..f2a9f5dc77c
--- /dev/null
+++ b/lang/fr/validation.php
@@ -0,0 +1,123 @@
+ ':attribute doit être accepté.',
+ 'active_url' => ':attribute n\'est pas une URL valide.',
+ 'after' => ':attribute doit être supérieur à :date.',
+ 'alpha' => ':attribute ne doit contenir que des lettres.',
+ 'alpha_dash' => ':attribute doit contenir uniquement des lettres, chiffres et traits d\'union.',
+ 'alpha_num' => ':attribute doit contenir uniquement des chiffres et des lettres.',
+ 'array' => ':attribute doit être un tableau.',
+ 'backup_codes' => 'Le code fourni n\'est pas valide ou a déjà été utilisé.',
+ 'before' => ':attribute doit être inférieur à :date.',
+ 'between' => [
+ 'numeric' => ':attribute doit être compris entre :min et :max.',
+ 'file' => ':attribute doit être compris entre :min et :max Ko.',
+ 'string' => ':attribute doit être compris entre :min et :max caractères.',
+ 'array' => ':attribute doit être compris entre :min et :max éléments.',
+ ],
+ 'boolean' => ':attribute doit être vrai ou faux.',
+ 'confirmed' => ':attribute la confirmation n\'est pas valide.',
+ 'date' => ':attribute n\'est pas une date valide.',
+ 'date_format' => ':attribute ne correspond pas au format :format.',
+ 'different' => ':attribute et :other doivent être différents l\'un de l\'autre.',
+ 'digits' => ':attribute doit être de longueur :digits.',
+ 'digits_between' => ':attribute doit avoir une longueur entre :min et :max.',
+ 'email' => ':attribute doit être une adresse e-mail valide.',
+ 'ends_with' => ':attribute doit se terminer par une des valeurs suivantes : :values',
+ 'file' => 'Le :attribute doit être un fichier valide.',
+ 'filled' => ':attribute est un champ requis.',
+ 'gt' => [
+ 'numeric' => ':attribute doit être plus grand que :value.',
+ 'file' => ':attribute doit être plus grand que :value Ko.',
+ 'string' => ':attribute doit être plus grand que :value caractères.',
+ 'array' => ':attribute doit avoir plus que :value éléments.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute doit être plus grand ou égal à :value.',
+ 'file' => ':attribute doit être plus grand ou égal à :value Ko.',
+ 'string' => ':attribute doit être plus grand ou égal à :value caractères.',
+ 'array' => ':attribute doit avoir :value éléments ou plus.',
+ ],
+ 'exists' => 'L\'attribut :attribute est invalide.',
+ 'image' => ':attribute doit être une image.',
+ 'image_extension' => ':attribute doit avoir une extension d\'image valide et supportée.',
+ 'in' => 'L\'attribut :attribute est invalide.',
+ 'integer' => ':attribute doit être un chiffre entier.',
+ 'ip' => ':attribute doit être une adresse IP valide.',
+ 'ipv4' => ':attribute doit être une adresse IPv4 valide.',
+ 'ipv6' => ':attribute doit être une adresse IPv6 valide.',
+ 'json' => ':attribute doit être une chaîne JSON valide.',
+ 'lt' => [
+ 'numeric' => ':attribute doit être plus petit que :value.',
+ 'file' => ':attribute doit être plus petit que :value Ko.',
+ 'string' => ':attribute doit être plus petit que :value caractères.',
+ 'array' => ':attribute doit avoir moins de :value éléments.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute doit être plus petit ou égal à :value.',
+ 'file' => ':attribute doit être plus petit ou égal à :value Ko.',
+ 'string' => ':attribute doit être plus petit ou égal à :value caractères.',
+ 'array' => ':attribute ne doit pas avoir plus de :value éléments.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute ne doit pas excéder :max.',
+ 'file' => ':attribute ne doit pas excéder :max Ko.',
+ 'string' => ':attribute ne doit pas excéder :max caractères.',
+ 'array' => ':attribute ne doit pas contenir plus de :max éléments.',
+ ],
+ 'mimes' => ':attribute doit être un fichier de type :values.',
+ 'min' => [
+ 'numeric' => ':attribute doit être au moins :min.',
+ 'file' => ':attribute doit faire au moins :min kilobytes.',
+ 'string' => ':attribute doit contenir au moins :min caractères.',
+ 'array' => ':attribute doit contenir au moins :min éléments.',
+ ],
+ 'not_in' => 'L\'attribut sélectionné :attribute est invalide.',
+ 'not_regex' => ':attribute a un format invalide.',
+ 'numeric' => ':attribute doit être un nombre.',
+ 'regex' => ':attribute a un format invalide.',
+ 'required' => ':attribute est un champ requis.',
+ 'required_if' => ':attribute est requis si :other est :value.',
+ 'required_with' => ':attribute est requis si :values est présent.',
+ 'required_with_all' => ':attribute est requis si :values est présent.',
+ 'required_without' => ':attribute est requis si:values n\'est pas présent.',
+ 'required_without_all' => ':attribute est requis si aucun des valeurs :values n\'est présente.',
+ 'same' => ':attribute et :other doivent être identiques.',
+ 'safe_url' => 'Le lien fourni peut ne pas être sûr.',
+ 'size' => [
+ 'numeric' => ':attribute doit avoir la taille :size.',
+ 'file' => ':attribute doit peser :size kilobytes.',
+ 'string' => ':attribute doit contenir :size caractères.',
+ 'array' => ':attribute doit contenir :size éléments.',
+ ],
+ 'string' => ':attribute doit être une chaîne de caractères.',
+ 'timezone' => ':attribute doit être une zone valide.',
+ 'totp' => 'Le code fourni n\'est pas valide ou est expiré.',
+ 'unique' => ':attribute est déjà utilisé.',
+ 'url' => ':attribute a un format invalide.',
+ 'uploaded' => 'Le fichier n\'a pas pu être envoyé. Le serveur peut ne pas accepter des fichiers de cette taille.',
+
+ 'zip_file' => 'L\'attribut :attribute doit référencer un fichier dans le ZIP.',
+ 'zip_file_size' => 'Le fichier :attribute ne doit pas dépasser :size Mo.',
+ 'zip_file_mime' => ':attribute doit référencer un fichier de type :validTypes, trouvé :foundType.',
+ 'zip_model_expected' => 'Objet de données attendu, mais ":type" trouvé.',
+ 'zip_unique' => 'L\'attribut :attribute doit être unique pour le type d\'objet dans le ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'La confirmation du mot de passe est requise',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/he/activities.php b/lang/he/activities.php
new file mode 100644
index 00000000000..e94d53e0d37
--- /dev/null
+++ b/lang/he/activities.php
@@ -0,0 +1,140 @@
+ 'הדף נוצר',
+ 'page_create_notification' => 'הדף נוצר בהצלחה',
+ 'page_update' => 'הדף עודכן',
+ 'page_update_notification' => 'הדף עודכן בהצלחה',
+ 'page_delete' => 'הדף נמחק',
+ 'page_delete_notification' => 'הדף הוסר בהצלחה',
+ 'page_restore' => 'הדף שוחזר',
+ 'page_restore_notification' => 'הדף שוחזר בהצלחה',
+ 'page_move' => 'דף הועבר',
+ 'page_move_notification' => 'הדף הוזז בהצלחה',
+
+ // Chapters
+ 'chapter_create' => 'פרק נוצר',
+ 'chapter_create_notification' => 'הפרק נוצר בהצלחה',
+ 'chapter_update' => 'פרק עודכן',
+ 'chapter_update_notification' => 'הפרק עודכן בהצלחה',
+ 'chapter_delete' => 'פרק נמחק',
+ 'chapter_delete_notification' => 'הפרק נמחק בהצלחה',
+ 'chapter_move' => 'פרק הועבר',
+ 'chapter_move_notification' => 'פרק הוזז בהצלחה',
+
+ // Books
+ 'book_create' => 'ספר נוצר',
+ 'book_create_notification' => 'ספר נוצר בהצלחה',
+ 'book_create_from_chapter' => 'המר פרק לספר',
+ 'book_create_from_chapter_notification' => 'הפרק הומר בהצלחה לספר',
+ 'book_update' => 'ספר הועדכן',
+ 'book_update_notification' => 'ספר התעדכן בהצלחה',
+ 'book_delete' => 'ספר נמחק',
+ 'book_delete_notification' => 'ספר נמחק בהצלחה',
+ 'book_sort' => 'ספר ממויין',
+ 'book_sort_notification' => 'ספר מויין מחדש בהצלחה',
+
+ // Bookshelves
+ 'bookshelf_create' => 'מדף נוצר',
+ 'bookshelf_create_notification' => 'המדף נוצר בהצלחה',
+ 'bookshelf_create_from_book' => 'המר ספר למדף',
+ 'bookshelf_create_from_book_notification' => 'הספר הוסב בהצלחה למדף',
+ 'bookshelf_update' => 'מדף עודכן',
+ 'bookshelf_update_notification' => 'מדף עודכן בהצלחה',
+ 'bookshelf_delete' => 'מדף שנמחק',
+ 'bookshelf_delete_notification' => 'מדף נמחק בהצלחה',
+
+ // Revisions
+ 'revision_restore' => 'גרסא שוחזרה',
+ 'revision_delete' => 'גרסא הוסרה',
+ 'revision_delete_notification' => 'גרסא הוסרה בהצלחה',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" הוסף למועדפים',
+ 'favourite_remove_notification' => '":name" הוסר מהמועדפים',
+
+ // Watching
+ 'watch_update_level_notification' => 'העדפות צפייה עודכנו בהצלחה',
+
+ // Auth
+ 'auth_login' => 'מחובר',
+ 'auth_register' => 'נרשם כמשתמש חדש',
+ 'auth_password_reset_request' => 'בקשת איפוס סיסמה למשתמש בוצעה בהצלחה',
+ 'auth_password_reset_update' => 'איפוס סיסמה למשתמש',
+ 'mfa_setup_method' => 'הגדרת אימות דו-שלבי פעיל',
+ 'mfa_setup_method_notification' => 'הגדרת אימות דו-שלבי בוצע בהצלחה',
+ 'mfa_remove_method' => 'הגדרת אימות דו-שלבי הוסר',
+ 'mfa_remove_method_notification' => 'אפשרות אימות דו-שלבי הוסר בהצלחה',
+
+ // Settings
+ 'settings_update' => 'הגדרות עודכנו בהצלחה',
+ 'settings_update_notification' => 'ההגדרות עודכנו בהצלחה',
+ 'maintenance_action_run' => 'פעולות תחזוקה שהופעלו',
+
+ // Webhooks
+ 'webhook_create' => 'webook נוצר',
+ 'webhook_create_notification' => 'יצירת Webhook בוצעה בהצלחה',
+ 'webhook_update' => 'webhook עודכן',
+ 'webhook_update_notification' => 'webook עודכן בהצלחה',
+ 'webhook_delete' => 'Webhook נמחק',
+ 'webhook_delete_notification' => 'Webook נמחק בהצלחה',
+
+ // Imports
+ 'import_create' => 'יבוא נוצר',
+ 'import_create_notification' => 'יבוא עודכן בהצלחה',
+ 'import_run' => 'יבוא עודכן',
+ 'import_run_notification' => 'תוכן יובא בהצלחה',
+ 'import_delete' => 'יבוא נמחק',
+ 'import_delete_notification' => 'יבוא נמחק בהצלחה',
+
+ // Users
+ 'user_create' => 'משתמש חדש נוצר',
+ 'user_create_notification' => 'משתמש נוצר בהצלחה',
+ 'user_update' => 'משתמש עודכן',
+ 'user_update_notification' => 'משתמש עודכן בהצלחה',
+ 'user_delete' => 'משתמש נמחק',
+ 'user_delete_notification' => 'משתמש הוסר בהצלחה',
+
+ // API Tokens
+ 'api_token_create' => 'API Token נוצר',
+ 'api_token_create_notification' => 'API Token נוצר בהצלחה',
+ 'api_token_update' => 'API Token עודכן',
+ 'api_token_update_notification' => 'API Token עודכן בהצלחה',
+ 'api_token_delete' => 'API Token נמחק',
+ 'api_token_delete_notification' => 'API Token נמחק בהצלחה',
+
+ // Roles
+ 'role_create' => 'תפקיד נוצר',
+ 'role_create_notification' => 'תפקיד נוצר בהצלחה',
+ 'role_update' => 'תפקיד עודכן',
+ 'role_update_notification' => 'תפקיד עודכן בהצלחה',
+ 'role_delete' => 'תפקיד נמחק',
+ 'role_delete_notification' => 'תפקיד נמחק בהצלחה',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'סל המחזור רוקן',
+ 'recycle_bin_restore' => 'שוחזר מסל המחזור',
+ 'recycle_bin_destroy' => 'נמחק מסל המחזור',
+
+ // Comments
+ 'commented_on' => 'הגיב/ה על',
+ 'comment_create' => 'הערה הוספה',
+ 'comment_update' => 'תגובה הוספה',
+ 'comment_delete' => 'תגובה נמחקה',
+
+ // Sort Rules
+ 'sort_rule_create' => 'נוצר חוק מיון',
+ 'sort_rule_create_notification' => 'חוק מיון נוצר בהצלחה',
+ 'sort_rule_update' => 'חוק מיון עודכן',
+ 'sort_rule_update_notification' => 'חוק מיון עודכן בהצלחה',
+ 'sort_rule_delete' => 'חוק מיון נמחק',
+ 'sort_rule_delete_notification' => 'חוק מיון נמחק בהצלחה',
+
+ // Other
+ 'permissions_update' => 'הרשאות עודכנו',
+];
diff --git a/lang/he/auth.php b/lang/he/auth.php
new file mode 100644
index 00000000000..6f4f77223cf
--- /dev/null
+++ b/lang/he/auth.php
@@ -0,0 +1,118 @@
+ 'פרטי ההתחברות אינם תואמים את הנתונים שלנו.',
+ 'throttle' => 'נסיונות התחברות מהירים מדי, יש להמתין :seconds שניות ולנסות שנית.',
+
+ // Login & Register
+ 'sign_up' => 'הרשמה למערכת',
+ 'log_in' => 'התחבר למערכת',
+ 'log_in_with' => 'התחבר באמצעות :socialDriver',
+ 'sign_up_with' => 'הרשם באמצעות :socialDriver',
+ 'logout' => 'התנתק',
+
+ 'name' => 'שם',
+ 'username' => 'שם משתמש',
+ 'email' => 'אי-מייל',
+ 'password' => 'סיסמא',
+ 'password_confirm' => 'אימות סיסמא',
+ 'password_hint' => 'אורך הסיסמה חייב להיות לפחות 8 תווים',
+ 'forgot_password' => 'שכחת סיסמא?',
+ 'remember_me' => 'זכור אותי',
+ 'ldap_email_hint' => 'אנא ציין כתובת אי-מייל לשימוש בחשבון זה',
+ 'create_account' => 'צור חשבון',
+ 'already_have_account' => 'יש לך כבר חשבון?',
+ 'dont_have_account' => 'אין לך חשבון?',
+ 'social_login' => 'התחברות באמצעות אתר חברתי',
+ 'social_registration' => 'הרשמה באמצעות אתר חברתי',
+ 'social_registration_text' => 'הרשם והתחבר באמצעות שירות אחר',
+
+ 'register_thanks' => 'תודה על הרשמתך!',
+ 'register_confirm' => 'יש לבדוק את תיבת המייל שלך ולאשר את ההרשמה על מנת להשתמש ב:appName',
+ 'registrations_disabled' => 'הרשמה כרגע מבוטלת',
+ 'registration_email_domain_invalid' => 'לא ניתן להרשם באמצעות המייל שסופק',
+ 'register_success' => 'תודה על הרשמתך! ניתן כעת להתחבר',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'ניסיון התחברות',
+ 'auto_init_starting_desc' => 'אנחנו יוצרים קשר עם מערכת האימות שלך להתחלת תהליך ההתחברות. במידה ולאחר 5 שניות לא בוצעה התחברות יש ללחוץ על הקישור מטה.',
+ 'auto_init_start_link' => 'המשך עם האימות',
+
+ // Password Reset
+ 'reset_password' => 'איפוס סיסמא',
+ 'reset_password_send_instructions' => 'יש להזין את כתובת המייל למטה ואנו נשלח אלייך הוראות לאיפוס הסיסמא',
+ 'reset_password_send_button' => 'שלח קישור לאיפוס סיסמא',
+ 'reset_password_sent' => 'קישור לשחזור סיסמה יישלח ל:email אם כתובת המייל קיימת במערכת.',
+ 'reset_password_success' => 'סיסמתך עודכנה בהצלחה',
+ 'email_reset_subject' => 'איפוס סיסמא ב :appName',
+ 'email_reset_text' => 'קישור זה נשלח עקב בקשה לאיפוס סיסמא בחשבון שלך',
+ 'email_reset_not_requested' => 'אם לא ביקשת לאפס את סיסמתך, אפשר להתעלם ממייל זה',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'אמת אי-מייל ב :appName',
+ 'email_confirm_greeting' => 'תודה שהצטרפת אל :appName!',
+ 'email_confirm_text' => 'יש לאמת את כתובת המייל של על ידי לחיצה על הכפור למטה:',
+ 'email_confirm_action' => 'אמת כתובת אי-מייל',
+ 'email_confirm_send_error' => 'נדרש אימות אי-מייל אך שליחת האי-מייל אליך נכשלה. יש ליצור קשר עם מנהל המערכת כדי לוודא שאכן ניתן לשלוח מיילים.',
+ 'email_confirm_success' => 'כתובת המייל שלך אומתה! כעת תוכל/י להתחבר באמצעות כתובת מייל זו.',
+ 'email_confirm_resent' => 'אימות נשלח לאי-מייל שלך, יש לבדוק בתיבת הדואר הנכנס',
+ 'email_confirm_thanks' => 'תודה על האישור!',
+ 'email_confirm_thanks_desc' => 'בבקשה המתן בזמן שהאישוך שלך מטופל. במידה ולא הופנתה לאחר 3 שניות לחץ על "המשך" מטה בכדי להמשיך.',
+
+ 'email_not_confirmed' => 'כתובת המייל לא אומתה',
+ 'email_not_confirmed_text' => 'כתובת המייל שלך טרם אומתה',
+ 'email_not_confirmed_click_link' => 'יש ללחוץ על הקישור אשר נשלח אליך לאחר ההרשמה',
+ 'email_not_confirmed_resend' => 'אם אינך מוצא את המייל, ניתן לשלוח בשנית את האימות על ידי לחיצה על הכפתור למטה',
+ 'email_not_confirmed_resend_button' => 'שלח שוב מייל אימות',
+
+ // User Invite
+ 'user_invite_email_subject' => 'הוזמנת להצטרף ל:appName!',
+ 'user_invite_email_greeting' => 'חשבון נוצר עבורך ב :appName.',
+ 'user_invite_email_text' => 'לחץ על הכפתור מטה בכדי להגדיר סיסמת משתמש ולקבל גישה:',
+ 'user_invite_email_action' => 'הגדר סיסמה לחשבון',
+ 'user_invite_page_welcome' => 'ברוכים הבאים ל :appName!',
+ 'user_invite_page_text' => 'על מנת לסיים את ההרשמה ולקבל גישה עלייך להגדיר סיסמה אשר תהיה בשימוש בהתחברות ל :appName בביקורים עתידיים.',
+ 'user_invite_page_confirm_button' => 'אימות סיסמא',
+ 'user_invite_success_login' => 'הסיסמה הוגדרה בהצלחה, כעת תוכלו לקבל גישה ל :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'הגדר אימות רב-שלבי',
+ 'mfa_setup_desc' => 'הגדר אימות רב-שלבי כשכבת אבטחה נוספת עבור החשבון שלך.',
+ 'mfa_setup_configured' => 'כבר הוגדר',
+ 'mfa_setup_reconfigure' => 'הגדר מחדש',
+ 'mfa_setup_remove_confirmation' => 'האם להסיר את אפשרות האימות הדו-שלבי הזאת?',
+ 'mfa_setup_action' => 'הגדרה',
+ 'mfa_backup_codes_usage_limit_warning' => 'נשאר לך פחות מ 5 קודי גיבוי, בבקשה חולל ואחסן סט חדש לפני שיגמרו לך הקודים בכדי למנוע נעילה מחוץ לחשבון שלך.',
+ 'mfa_option_totp_title' => 'אפליקציה לנייד',
+ 'mfa_option_totp_desc' => 'בכדי להשתמש באימות רב-שלבי תצטרך אפליקציית מובייל תומכת TOTP כמו Google Authenticator, Authy או Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'קודי גיבוי',
+ 'mfa_option_backup_codes_desc' => 'יצירת מערך סיסמאות חד-פעמיות כגיבוי אשר תתקבשו להזין על מנת לאמת את הזהות שלכם, אנא וודאו כי הקודים האלו שמורים במקום בטוח.',
+ 'mfa_gen_confirm_and_enable' => 'אישור והפעלה',
+ 'mfa_gen_backup_codes_title' => 'הגדרת קודי גיבוי',
+ 'mfa_gen_backup_codes_desc' => 'אנא שמור את רשימת הקודים הרשומים מטה במקום בטוח. בגישה למערכת תהיה אפשרות להשתמש באחד הקודים הללו כאמצעי זיהוי נוסף.',
+ 'mfa_gen_backup_codes_download' => 'הורדת קודים',
+ 'mfa_gen_backup_codes_usage_warning' => 'ניתן להשתמש בכל קוד פעם אחת בלבד',
+ 'mfa_gen_totp_title' => 'הגדרת אפליקציה לזיהוי',
+ 'mfa_gen_totp_desc' => 'על מנת להגדיר זיהוי דו-שלבי במכשיר נייד עלייך להשתמש באפליקציה התומכת ב TOTP כגון Google Authenticator, Authy או Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'סרוק את קוד ה QR באמצעות האפליקציה שבה מתבצע הזיהוי על מנת להתחיל.',
+ 'mfa_gen_totp_verify_setup' => 'אשר את ההגדרה',
+ 'mfa_gen_totp_verify_setup_desc' => 'על מנת לוודא כי הזיהוי הדו-שלבי עובד יש להכניס את הקוד, הוא מופיע לך על מסך האפליקציה, בשדה מטה:',
+ 'mfa_gen_totp_provide_code_here' => 'אנא הכנס את הקוד כאן',
+ 'mfa_verify_access' => 'אשר גישה',
+ 'mfa_verify_access_desc' => 'חשבון המשתמש שלך דורש ממך לאת את הזהות שלך בשכבת הגנה נוספת על מנת לאפשר לך גישה. יש לאשר גישה דרך אחד האמצעים הקיימים על מנת להמשיך.',
+ 'mfa_verify_no_methods' => 'אין אפשרויות אימות דו-שלבי מוגדרות',
+ 'mfa_verify_no_methods_desc' => 'לא נמצאו אפשרויות ווידוא זהות עבור המשתמש שלך.
+נדרש לקנפג לפחות אחד על מנת לקבל גישה.',
+ 'mfa_verify_use_totp' => 'אמת באמצעות אפליקציה',
+ 'mfa_verify_use_backup_codes' => 'אמת באמצעות קוד גיבוי',
+ 'mfa_verify_backup_code' => 'קוד גיבוי',
+ 'mfa_verify_backup_code_desc' => 'הזן מטה אחד מקודי הגיבוי הנותרים לך:',
+ 'mfa_verify_backup_code_enter_here' => 'הזן קוד גיבוי כאן',
+ 'mfa_verify_totp_desc' => 'הזן את הקוד, שהונפק דרך האפליקציה שלך, מטה:',
+ 'mfa_setup_login_notification' => 'אמצעי זיהוי זהות הוגדרו, אנא התחבר מחדש.',
+];
diff --git a/lang/he/common.php b/lang/he/common.php
new file mode 100644
index 00000000000..c89ee778214
--- /dev/null
+++ b/lang/he/common.php
@@ -0,0 +1,115 @@
+ 'ביטול',
+ 'close' => 'סגור',
+ 'confirm' => 'אישור',
+ 'back' => 'אחורה',
+ 'save' => 'שמור',
+ 'continue' => 'המשך',
+ 'select' => 'בחר',
+ 'toggle_all' => 'סמן הכל',
+ 'more' => 'עוד',
+
+ // Form Labels
+ 'name' => 'שם',
+ 'description' => 'תיאור',
+ 'role' => 'תפקיד',
+ 'cover_image' => 'תמונת נושא',
+ 'cover_image_description' => 'התמונה צריכה להיות לפחות בגודל של 440 על 250 למרות שהיא תוצג בצורה דינמית ותותאם בהתאם להתאים לממשק המשתמש במצבים שונים על פי הדרישה, ולכן המימדים יהיו שונים.',
+
+ // Actions
+ 'actions' => 'פעולות',
+ 'view' => 'הצג',
+ 'view_all' => 'הצג הכל',
+ 'new' => 'חדש',
+ 'create' => 'צור',
+ 'update' => 'עדכן',
+ 'edit' => 'ערוך',
+ 'archive' => 'הכנס לארכיון',
+ 'unarchive' => 'הוצא מארכיון',
+ 'sort' => 'מיין',
+ 'move' => 'הזז',
+ 'copy' => 'העתק',
+ 'reply' => 'השב',
+ 'delete' => 'מחק',
+ 'delete_confirm' => 'אשר מחיקה',
+ 'search' => 'חיפוש',
+ 'search_clear' => 'נקה חיפוש',
+ 'reset' => 'איפוס',
+ 'remove' => 'הסר',
+ 'add' => 'הוסף',
+ 'configure' => 'הגדרות',
+ 'manage' => 'נהל',
+ 'fullscreen' => 'מסך מלא',
+ 'favourite' => 'מועדף',
+ 'unfavourite' => 'בטל מועדף',
+ 'next' => 'הבא',
+ 'previous' => 'קודם',
+ 'filter_active' => 'מסנן פעיל:',
+ 'filter_clear' => 'נקה מסננים',
+ 'download' => 'הורדה',
+ 'open_in_tab' => 'פתח בכרטיסייה חדשה',
+ 'open' => 'פתח',
+
+ // Sort Options
+ 'sort_options' => 'אפשרויות מיון',
+ 'sort_direction_toggle' => 'החלפת כיוון מיון',
+ 'sort_ascending' => 'מיין בסדר עולה',
+ 'sort_descending' => 'מיין בסדר יורד',
+ 'sort_name' => 'שם',
+ 'sort_default' => 'ברירת מחדל',
+ 'sort_created_at' => 'תאריך יצירה',
+ 'sort_updated_at' => 'תאריך עדכון',
+
+ // Misc
+ 'deleted_user' => 'משתמש שנמחק',
+ 'no_activity' => 'אין פעילות להציג',
+ 'no_items' => 'אין פריטים זמינים',
+ 'back_to_top' => 'בחזרה ללמעלה',
+ 'skip_to_main_content' => 'דלג לתוכן העיקרי',
+ 'toggle_details' => 'הצג/הסתר פרטים',
+ 'toggle_thumbnails' => 'הצג/הסתר תמונות',
+ 'details' => 'פרטים',
+ 'grid_view' => 'תצוגת רשת',
+ 'list_view' => 'תצוגת רשימה',
+ 'default' => 'ברירת מחדל',
+ 'breadcrumb' => 'סימון מסלול',
+ 'status' => 'סטטוס',
+ 'status_active' => 'פעיל',
+ 'status_inactive' => 'לא פעיל',
+ 'never' => 'אף פעם',
+ 'none' => 'ללא',
+
+ // Header
+ 'homepage' => 'דף הבית',
+ 'header_menu_expand' => 'הרחב תפריט',
+ 'profile_menu' => 'תפריט הפרופיל',
+ 'view_profile' => 'הצג פרופיל',
+ 'edit_profile' => 'ערוך פרופיל',
+ 'dark_mode' => 'מצב לילה',
+ 'light_mode' => 'מצב יום',
+ 'global_search' => 'חיפוש כללי',
+
+ // Layout tabs
+ 'tab_info' => 'מידע',
+ 'tab_info_label' => 'כרטיסייה: הצג מידע משני',
+ 'tab_content' => 'תוכן',
+ 'tab_content_label' => 'כרטיסייה: הצג תוכן ראשי',
+
+ // Email Content
+ 'email_action_help' => 'אם לא ניתן ללחות על כפתור ״:actionText״, יש להעתיק ולהדביק את הכתובת למטה אל דפדפן האינטרנט שלך:',
+ 'email_rights' => 'כל הזכויות שמורות',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'מדיניות הפרטיות',
+ 'terms_of_service' => 'תנאי שימוש',
+
+ // OpenSearch
+ 'opensearch_description' => 'חפש :appName',
+];
diff --git a/lang/he/components.php b/lang/he/components.php
new file mode 100644
index 00000000000..30b9ab01a09
--- /dev/null
+++ b/lang/he/components.php
@@ -0,0 +1,46 @@
+ 'בחירת תמונה',
+ 'image_list' => 'רשימת תמונות',
+ 'image_details' => 'פרטי תמונה',
+ 'image_upload' => 'העלאת תמונה',
+ 'image_intro' => 'כאן ניתן לבחור ולנהל תמונות אשר הועלו למערכת.',
+ 'image_intro_upload' => 'ניתן לגרור תמונות לחלון זה, או על ידי לחיצה על כפתור "העלאת תמונות" למעלה.',
+ 'image_all' => 'הכל',
+ 'image_all_title' => 'הצג את כל התמונות',
+ 'image_book_title' => 'הצג תמונות שהועלו לספר זה',
+ 'image_page_title' => 'הצג תמונות שהועלו לדף זה',
+ 'image_search_hint' => 'חפש תמונה לפי שם',
+ 'image_uploaded' => 'הועלה :uploadedDate',
+ 'image_uploaded_by' => 'הועלה על ידי :userName',
+ 'image_uploaded_to' => 'הועלה ל :pageLink',
+ 'image_updated' => 'עודכן :updateDate',
+ 'image_load_more' => 'טען עוד',
+ 'image_image_name' => 'שם התמונה',
+ 'image_delete_used' => 'תמונה זו בשימוש בדפים שמתחת',
+ 'image_delete_confirm_text' => 'האם את/ה בטוח/ה שברצונך למחוק את התמונה הזו?',
+ 'image_select_image' => 'בחר תמונה',
+ 'image_dropzone' => 'גרור תמונות או לחץ כאן להעלאה',
+ 'image_dropzone_drop' => 'גרור תמונות לכאן על מנת להעלאות אותם',
+ 'images_deleted' => 'התמונות נמחקו',
+ 'image_preview' => 'תצוגה מקדימה',
+ 'image_upload_success' => 'התמונה עלתה בהצלחה',
+ 'image_update_success' => 'פרטי התמונה עודכנו בהצלחה',
+ 'image_delete_success' => 'התמונה נמחקה בהצלחה',
+ 'image_replace' => 'החלפת תמונה',
+ 'image_replace_success' => 'תמונה עודכנה בהצלחה',
+ 'image_rebuild_thumbs' => 'יצר ווריאציות גודל מחדש',
+ 'image_rebuild_thumbs_success' => 'ווריאציות גודל תמונה יוצרו מחדש בהצלחה!',
+
+ // Code Editor
+ 'code_editor' => 'ערוך קוד',
+ 'code_language' => 'שפת הקוד',
+ 'code_content' => 'תוכן הקוד',
+ 'code_session_history' => 'היסטורית ה-Session',
+ 'code_save' => 'שמור קוד',
+];
diff --git a/lang/he/editor.php b/lang/he/editor.php
new file mode 100644
index 00000000000..6390389b803
--- /dev/null
+++ b/lang/he/editor.php
@@ -0,0 +1,182 @@
+ 'כללי',
+ 'advanced' => 'הגדרות מתקדמות',
+ 'none' => 'ללא',
+ 'cancel' => 'ביטול',
+ 'save' => 'שמור',
+ 'close' => 'סגור',
+ 'apply' => 'Apply',
+ 'undo' => 'אחזר',
+ 'redo' => 'בצע שוב',
+ 'left' => 'שמאל',
+ 'center' => 'מרכז',
+ 'right' => 'ימין',
+ 'top' => 'עליון',
+ 'middle' => 'אמצע',
+ 'bottom' => 'תחתון',
+ 'width' => 'רוחב',
+ 'height' => 'גובה',
+ 'More' => 'עוד',
+ 'select' => 'Select...',
+
+ // Toolbar
+ 'formats' => 'פורמט',
+ 'header_large' => 'מקטע עליון גדול',
+ 'header_medium' => 'מקטע עליון בינוני',
+ 'header_small' => 'מקטע עליון קטן',
+ 'header_tiny' => 'מקטע עליון קטנטן',
+ 'paragraph' => 'פסקה',
+ 'blockquote' => 'ציטוט',
+ 'inline_code' => 'קוד מוטבע',
+ 'callouts' => 'בועית-הסבר',
+ 'callout_information' => 'מידע',
+ 'callout_success' => 'הצלחה',
+ 'callout_warning' => 'אזהרה',
+ 'callout_danger' => 'סכנה',
+ 'bold' => 'מודגש',
+ 'italic' => 'נטוי',
+ 'underline' => 'קו תחתון',
+ 'strikethrough' => 'קו חוצה',
+ 'superscript' => 'כתב עילי',
+ 'subscript' => 'כתב תחתי',
+ 'text_color' => 'צבע טקסט',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'צבע מותאם',
+ 'remove_color' => 'הסר צבע',
+ 'background_color' => 'צבע רקע',
+ 'align_left' => 'יישור לשמאל',
+ 'align_center' => 'מרכוז',
+ 'align_right' => 'יישור לימין',
+ 'align_justify' => 'Justify',
+ 'list_bullet' => 'רשימת תבליט',
+ 'list_numbered' => 'רשימה ממוספרת',
+ 'list_task' => 'Task list',
+ 'indent_increase' => 'הגדל הזחה',
+ 'indent_decrease' => 'הקטן הזחה',
+ 'table' => 'טבלה',
+ 'insert_image' => 'הכנס תמונה',
+ 'insert_image_title' => 'Insert/Edit Image',
+ 'insert_link' => 'Insert/edit link',
+ 'insert_link_title' => 'Insert/Edit Link',
+ 'insert_horizontal_line' => 'Insert horizontal line',
+ 'insert_code_block' => 'Insert code block',
+ 'edit_code_block' => 'Edit code block',
+ 'insert_drawing' => 'Insert/edit drawing',
+ 'drawing_manager' => 'Drawing manager',
+ 'insert_media' => 'Insert/edit media',
+ 'insert_media_title' => 'Insert/Edit Media',
+ 'clear_formatting' => 'Clear formatting',
+ 'source_code' => 'Source code',
+ 'source_code_title' => 'Source Code',
+ 'fullscreen' => 'Fullscreen',
+ 'image_options' => 'Image options',
+
+ // Tables
+ 'table_properties' => 'Table properties',
+ 'table_properties_title' => 'Table Properties',
+ 'delete_table' => 'Delete table',
+ 'table_clear_formatting' => 'Clear table formatting',
+ 'resize_to_contents' => 'Resize to contents',
+ 'row_header' => 'Row header',
+ 'insert_row_before' => 'Insert row before',
+ 'insert_row_after' => 'Insert row after',
+ 'delete_row' => 'Delete row',
+ 'insert_column_before' => 'Insert column before',
+ 'insert_column_after' => 'Insert column after',
+ 'delete_column' => 'Delete column',
+ 'table_cell' => 'Cell',
+ 'table_row' => 'Row',
+ 'table_column' => 'Column',
+ 'cell_properties' => 'Cell properties',
+ 'cell_properties_title' => 'Cell Properties',
+ 'cell_type' => 'Cell type',
+ 'cell_type_cell' => 'Cell',
+ 'cell_scope' => 'Scope',
+ 'cell_type_header' => 'Header cell',
+ 'merge_cells' => 'Merge cells',
+ 'split_cell' => 'Split cell',
+ 'table_row_group' => 'Row Group',
+ 'table_column_group' => 'Column Group',
+ 'horizontal_align' => 'Horizontal align',
+ 'vertical_align' => 'Vertical align',
+ 'border_width' => 'Border width',
+ 'border_style' => 'Border style',
+ 'border_color' => 'Border color',
+ 'row_properties' => 'Row properties',
+ 'row_properties_title' => 'Row Properties',
+ 'cut_row' => 'Cut row',
+ 'copy_row' => 'Copy row',
+ 'paste_row_before' => 'Paste row before',
+ 'paste_row_after' => 'Paste row after',
+ 'row_type' => 'Row type',
+ 'row_type_header' => 'Header',
+ 'row_type_body' => 'תוכן',
+ 'row_type_footer' => 'Footer',
+ 'alignment' => 'Alignment',
+ 'cut_column' => 'Cut column',
+ 'copy_column' => 'העתק עמודה',
+ 'paste_column_before' => 'הדבק עמודה לפני',
+ 'paste_column_after' => 'הדבק עמודה אחרי',
+ 'cell_padding' => 'ריפוד תא',
+ 'cell_spacing' => 'ריווח תא',
+ 'caption' => 'כיתוב',
+ 'show_caption' => 'הצג כיתוב',
+ 'constrain' => 'הגדרת אילוצים',
+ 'cell_border_solid' => 'Solid',
+ 'cell_border_dotted' => 'Dotted',
+ 'cell_border_dashed' => 'Dashed',
+ 'cell_border_double' => 'Double',
+ 'cell_border_groove' => 'Groove',
+ 'cell_border_ridge' => 'Ridge',
+ 'cell_border_inset' => 'Inset',
+ 'cell_border_outset' => 'Outset',
+ 'cell_border_none' => 'None',
+ 'cell_border_hidden' => 'Hidden',
+
+ // Images, links, details/summary & embed
+ 'source' => 'קוד מקור',
+ 'alt_desc' => 'תיאור חלופי',
+ 'embed' => 'הטמע',
+ 'paste_embed' => 'הדבק את הקוד המוטמע מטה:',
+ 'url' => 'קישור',
+ 'text_to_display' => 'טקסט שיוצג',
+ 'title' => 'כותרת',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Open link',
+ 'open_link_in' => 'Open link in...',
+ 'open_link_current' => 'החלון הנוכחי',
+ 'open_link_new' => 'חלון חדש',
+ 'remove_link' => 'Remove link',
+ 'insert_collapsible' => 'הכנס מקטע הניתן לכיווץ',
+ 'collapsible_unwrap' => 'בטל גלישת שורות',
+ 'edit_label' => 'עריכת תווית',
+ 'toggle_open_closed' => 'החלף פתיחה\סגירה',
+ 'collapsible_edit' => 'ערוך מקטע הניתן לכיווץ',
+ 'toggle_label' => 'החלף תגית',
+
+ // About view
+ 'about' => 'About the editor',
+ 'about_title' => 'אודות עורך הטקסט הויזואלי',
+ 'editor_license' => 'רשיון וזכויות העורך',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'This editor is built using :tinyLink which is provided under the MIT license.',
+ 'editor_tiny_license_link' => 'The copyright and license details of TinyMCE can be found here.',
+ 'save_continue' => 'שמור עמוד והמשך',
+ 'callouts_cycle' => '(Keep pressing to toggle through types)',
+ 'link_selector' => 'קישור לתוכן',
+ 'shortcuts' => 'קיצורי דרך',
+ 'shortcut' => 'קיצור דרך',
+ 'shortcuts_intro' => 'הקיצורים הבאים זמינים בעורך הטקסט:',
+ 'windows_linux' => '(חלונות\לינוקס)',
+ 'mac' => '(מאק)',
+ 'description' => 'תיאור',
+];
diff --git a/lang/he/entities.php b/lang/he/entities.php
new file mode 100644
index 00000000000..d8b264d8b68
--- /dev/null
+++ b/lang/he/entities.php
@@ -0,0 +1,476 @@
+ 'נוצר לאחרונה',
+ 'recently_created_pages' => 'דפים שנוצרו לאחרונה',
+ 'recently_updated_pages' => 'דפים שעודכנו לאחרונה',
+ 'recently_created_chapters' => 'פרקים שנוצרו לאחרונה',
+ 'recently_created_books' => 'ספרים שנוצרו לאחרונה',
+ 'recently_created_shelves' => 'מדפים שנוצרו לאחרונה',
+ 'recently_update' => 'עודכן לאחרונה',
+ 'recently_viewed' => 'נצפה לאחרונה',
+ 'recent_activity' => 'פעילות לאחרונה',
+ 'create_now' => 'צור אחד כעת',
+ 'revisions' => 'עדכונים',
+ 'meta_revision' => 'עדכון #:revisionCount',
+ 'meta_created' => 'נוצר :timeLength',
+ 'meta_created_name' => 'נוצר :timeLength על ידי :user',
+ 'meta_updated' => 'עודכן :timeLength',
+ 'meta_updated_name' => 'עודכן :timeLength על ידי :user',
+ 'meta_owned_name' => 'בבעלות של :user',
+ 'meta_reference_count' => '',
+ 'entity_select' => 'בחר יישות',
+ 'entity_select_lack_permission' => 'אין לך אישורים דרושים לבחירת פריט זה',
+ 'images' => 'תמונות',
+ 'my_recent_drafts' => 'הטיוטות האחרונות שלי',
+ 'my_recently_viewed' => 'הנצפים לאחרונה שלי',
+ 'my_most_viewed_favourites' => 'האהובים הנצפים ביותר שלי',
+ 'my_favourites' => 'המועדפים שלי',
+ 'no_pages_viewed' => 'לא צפית בדפים כלשהם',
+ 'no_pages_recently_created' => 'לא נוצרו דפים לאחרונה',
+ 'no_pages_recently_updated' => 'לא עודכנו דפים לאחרונה',
+ 'export' => 'ייצוא',
+ 'export_html' => 'דף אינטרנט',
+ 'export_pdf' => 'קובץ PDF',
+ 'export_text' => 'טקסט רגיל',
+ 'export_md' => 'קובץ Markdown',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'תבנית דף ברירת מחדל',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'בחר דף תבנית',
+ 'import' => 'יבוא',
+ 'import_validate' => 'תקף יבוא',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'בחר קובץ ZIP להעלאה',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'המשך יבוא',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'פרטי יבוא',
+ 'import_run' => 'להריץ יבוא',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'הועלה על ידי',
+ 'import_location' => 'מיקום יבוא',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'תקלות יבוא',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'הרשאות',
+ 'permissions_desc' => 'Set permissions here to override the default permissions provided by user roles.',
+ 'permissions_book_cascade' => 'Permissions set on books will automatically cascade to child chapters and pages, unless they have their own permissions defined.',
+ 'permissions_chapter_cascade' => 'Permissions set on chapters will automatically cascade to child pages, unless they have their own permissions defined.',
+ 'permissions_save' => 'שמור הרשאות',
+ 'permissions_owner' => 'בעלים',
+ 'permissions_role_everyone_else' => 'Everyone Else',
+ 'permissions_role_everyone_else_desc' => 'Set permissions for all roles not specifically overridden.',
+ 'permissions_role_override' => 'Override permissions for role',
+ 'permissions_inherit_defaults' => 'Inherit defaults',
+
+ // Search
+ 'search_results' => 'תוצאות חיפוש',
+ 'search_total_results_found' => ':count תוצאות נמצאו|:count סה״כ תוצאות',
+ 'search_clear' => 'נקה חיפוש',
+ 'search_no_pages' => 'לא נמצאו דפים התואמים לחיפוש',
+ 'search_for_term' => 'חפש את :term',
+ 'search_more' => 'תוצאות נוספות',
+ 'search_advanced' => 'חיפוש מתקדם',
+ 'search_terms' => 'מילות חיפוש',
+ 'search_content_type' => 'סוג התוכן',
+ 'search_exact_matches' => 'התאמות מדויקות',
+ 'search_tags' => 'חפש בתגים',
+ 'search_options' => 'אפשרויות',
+ 'search_viewed_by_me' => 'נצפו על ידי',
+ 'search_not_viewed_by_me' => 'שלא נצפו על ידי',
+ 'search_permissions_set' => 'סט הרשאות',
+ 'search_created_by_me' => 'שנוצרו על ידי',
+ 'search_updated_by_me' => 'שעודכנו על ידי',
+ 'search_owned_by_me' => 'בבעלות שלי',
+ 'search_date_options' => 'אפשרויות תאריך',
+ 'search_updated_before' => 'שעודכנו לפני',
+ 'search_updated_after' => 'שעודכנו לאחר',
+ 'search_created_before' => 'שנוצרו לפני',
+ 'search_created_after' => 'שנוצרו לאחר',
+ 'search_set_date' => 'הגדר תאריך',
+ 'search_update' => 'עדכן חיפוש',
+
+ // Shelves
+ 'shelf' => 'מדף',
+ 'shelves' => 'מדפים',
+ 'x_shelves' => ':count מדף|:count מדפים',
+ 'shelves_empty' => 'לא נוצרו מדפים',
+ 'shelves_create' => 'צור מדף חדש',
+ 'shelves_popular' => 'מדפים פופולרים',
+ 'shelves_new' => 'מדפים חדשים',
+ 'shelves_new_action' => 'מדף חדש',
+ 'shelves_popular_empty' => 'המדפים הפופולריים ביותר יופיעו כאן',
+ 'shelves_new_empty' => 'המדפים שנוצרו לאחרונה יופיעו כאן',
+ 'shelves_save' => 'שמור מדף',
+ 'shelves_books' => 'ספרים במדף זה',
+ 'shelves_add_books' => 'הוסף ספרים למדף זה',
+ 'shelves_drag_books' => 'Drag books below to add them to this shelf',
+ 'shelves_empty_contents' => 'במדף זה לא קיימים ספרים',
+ 'shelves_edit_and_assign' => 'עריכת מדף להוספת ספרים',
+ 'shelves_edit_named' => 'Edit Shelf :name',
+ 'shelves_edit' => 'Edit Shelf',
+ 'shelves_delete' => 'Delete Shelf',
+ 'shelves_delete_named' => 'Delete Shelf :name',
+ 'shelves_delete_explain' => "This will delete the shelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Are you sure you want to delete this shelf?',
+ 'shelves_permissions' => 'Shelf Permissions',
+ 'shelves_permissions_updated' => 'Shelf Permissions Updated',
+ 'shelves_permissions_active' => 'Shelf Permissions Active',
+ 'shelves_permissions_cascade_warning' => 'Permissions on shelves do not automatically cascade to contained books. This is because a book can exist on multiple shelves. Permissions can however be copied down to child books using the option found below.',
+ 'shelves_permissions_create' => 'Shelf create permissions are only used for copying permissions to child books using the action below. They do not control the ability to create books.',
+ 'shelves_copy_permissions_to_books' => 'העתק הרשאות מדף אל הספרים',
+ 'shelves_copy_permissions' => 'העתק הרשאות',
+ 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this shelf to all books contained within. Before activating, ensure any changes to the permissions of this shelf have been saved.',
+ 'shelves_copy_permission_success' => 'Shelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'ספר',
+ 'books' => 'ספרים',
+ 'x_books' => ':count ספר|:count ספרים',
+ 'books_empty' => 'לא נוצרו ספרים',
+ 'books_popular' => 'ספרים פופולריים',
+ 'books_recent' => 'ספרים אחרונים',
+ 'books_new' => 'ספרים חדשים',
+ 'books_new_action' => 'ספר חדש',
+ 'books_popular_empty' => 'הספרים הפופולריים יופיעו כאן',
+ 'books_new_empty' => 'הספרים שנוצרו לאחרונה יופיעו כאן',
+ 'books_create' => 'צור ספר חדש',
+ 'books_delete' => 'מחק ספר',
+ 'books_delete_named' => 'מחק ספר :bookName',
+ 'books_delete_explain' => 'פעולה זו תמחק את הספר :bookName, כל הדפים והפרקים ימחקו גם כן.',
+ 'books_delete_confirmation' => 'האם ברצונך למחוק את הספר הזה?',
+ 'books_edit' => 'ערוך ספר',
+ 'books_edit_named' => 'עריכת ספר :bookName',
+ 'books_form_book_name' => 'שם הספר',
+ 'books_save' => 'שמור ספר',
+ 'books_permissions' => 'הרשאות ספר',
+ 'books_permissions_updated' => 'הרשאות הספר עודכנו',
+ 'books_empty_contents' => 'לא נוצרו פרקים או דפים עבור ספר זה',
+ 'books_empty_create_page' => 'צור דף חדש',
+ 'books_empty_sort_current_book' => 'מיין את הספר הנוכחי',
+ 'books_empty_add_chapter' => 'הוסף פרק',
+ 'books_permissions_active' => 'הרשאות ספר פעילות',
+ 'books_search_this' => 'חפש בספר זה',
+ 'books_navigation' => 'ניווט בספר',
+ 'books_sort' => 'מיין את תוכן הספר',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'מיין את הספר :bookName',
+ 'books_sort_name' => 'מיין לפי שם',
+ 'books_sort_created' => 'מיין לפי תאריך יצירה',
+ 'books_sort_updated' => 'מיין לפי תאריך עדכון',
+ 'books_sort_chapters_first' => 'פרקים בהתחלה',
+ 'books_sort_chapters_last' => 'פרקים בסוף',
+ 'books_sort_show_other' => 'הצג ספרים אחרונים',
+ 'books_sort_save' => 'שמור את הסדר החדש',
+ 'books_sort_show_other_desc' => 'Add other books here to include them in the sort operation, and allow easy cross-book reorganisation.',
+ 'books_sort_move_up' => 'Move Up',
+ 'books_sort_move_down' => 'Move Down',
+ 'books_sort_move_prev_book' => 'Move to Previous Book',
+ 'books_sort_move_next_book' => 'Move to Next Book',
+ 'books_sort_move_prev_chapter' => 'Move Into Previous Chapter',
+ 'books_sort_move_next_chapter' => 'Move Into Next Chapter',
+ 'books_sort_move_book_start' => 'Move to Start of Book',
+ 'books_sort_move_book_end' => 'Move to End of Book',
+ 'books_sort_move_before_chapter' => 'Move to Before Chapter',
+ 'books_sort_move_after_chapter' => 'Move to After Chapter',
+ 'books_copy' => 'העתק ספר',
+ 'books_copy_success' => 'ספר הועתק בהצלחה',
+
+ // Chapters
+ 'chapter' => 'פרק',
+ 'chapters' => 'פרקים',
+ 'x_chapters' => ':count פרק|:count פרקים',
+ 'chapters_popular' => 'פרקים פופולריים',
+ 'chapters_new' => 'פרק חדש',
+ 'chapters_create' => 'צור פרק חדש',
+ 'chapters_delete' => 'מחק פרק',
+ 'chapters_delete_named' => 'מחק את פרק :chapterName',
+ 'chapters_delete_explain' => 'This will delete the chapter with the name \':chapterName\'. All pages that exist within this chapter will also be deleted.',
+ 'chapters_delete_confirm' => 'האם ברצונך למחוק פרק זה?',
+ 'chapters_edit' => 'ערוך פרק',
+ 'chapters_edit_named' => 'ערוך פרק :chapterName',
+ 'chapters_save' => 'שמור פרק',
+ 'chapters_move' => 'העבר פרק',
+ 'chapters_move_named' => 'העבר פרק :chapterName',
+ 'chapters_copy' => 'העתק פרק',
+ 'chapters_copy_success' => 'פרק הועתק בהצלחה',
+ 'chapters_permissions' => 'הרשאות פרק',
+ 'chapters_empty' => 'לא נמצאו דפים בפרק זה.',
+ 'chapters_permissions_active' => 'הרשאות פרק פעילות',
+ 'chapters_permissions_success' => 'הרשאות פרק עודכנו',
+ 'chapters_search_this' => 'חפש בפרק זה',
+ 'chapter_sort_book' => 'Sort Book',
+
+ // Pages
+ 'page' => 'דף',
+ 'pages' => 'דפים',
+ 'x_pages' => ':count דף|:count דפים',
+ 'pages_popular' => 'דפים פופולריים',
+ 'pages_new' => 'דף חדש',
+ 'pages_attachments' => 'קבצים מצורפים',
+ 'pages_navigation' => 'ניווט בדף',
+ 'pages_delete' => 'מחק דף',
+ 'pages_delete_named' => 'מחק דף :pageName',
+ 'pages_delete_draft_named' => 'מחק טיוטת דף :pageName',
+ 'pages_delete_draft' => 'מחק טיוטת דף',
+ 'pages_delete_success' => 'הדף נמחק',
+ 'pages_delete_draft_success' => 'טיוטת דף נמחקה',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'האם ברצונך למחוק דף זה?',
+ 'pages_delete_draft_confirm' => 'האם ברצונך למחוק את טיוטת הדף הזה?',
+ 'pages_editing_named' => 'עריכת דף :pageName',
+ 'pages_edit_draft_options' => 'אפשרויות טיוטה',
+ 'pages_edit_save_draft' => 'שמור טיוטה',
+ 'pages_edit_draft' => 'ערוך טיוטת דף',
+ 'pages_editing_draft' => 'עריכת טיוטה',
+ 'pages_editing_page' => 'עריכת דף',
+ 'pages_edit_draft_save_at' => 'טיוטה נשמרה ב ',
+ 'pages_edit_delete_draft' => 'מחק טיוטה',
+ 'pages_edit_delete_draft_confirm' => 'Are you sure you want to delete your draft page changes? All of your changes, since the last full save, will be lost and the editor will be updated with the latest page non-draft save state.',
+ 'pages_edit_discard_draft' => 'התעלם מהטיוטה',
+ 'pages_edit_switch_to_markdown' => 'Switch to Markdown Editor',
+ 'pages_edit_switch_to_markdown_clean' => '(Clean Content)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stable Content)',
+ 'pages_edit_switch_to_wysiwyg' => 'Switch to WYSIWYG Editor',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'הגדר יומן שינויים',
+ 'pages_edit_enter_changelog_desc' => 'ציין תיאור קצר אודות השינויים שביצעת',
+ 'pages_edit_enter_changelog' => 'הכנס יומן שינויים',
+ 'pages_editor_switch_title' => 'Switch Editor',
+ 'pages_editor_switch_are_you_sure' => 'Are you sure you want to change the editor for this page?',
+ 'pages_editor_switch_consider_following' => 'Consider the following when changing editors:',
+ 'pages_editor_switch_consideration_a' => 'Once saved, the new editor option will be used by any future editors, including those that may not be able to change editor type themselves.',
+ 'pages_editor_switch_consideration_b' => 'This can potentially lead to a loss of detail and syntax in certain circumstances.',
+ 'pages_editor_switch_consideration_c' => 'Tag or changelog changes, made since last save, won\'t persist across this change.',
+ 'pages_save' => 'שמור דף',
+ 'pages_title' => 'כותרת דף',
+ 'pages_name' => 'שם הדף',
+ 'pages_md_editor' => 'עורך',
+ 'pages_md_preview' => 'תצוגה מקדימה',
+ 'pages_md_insert_image' => 'הכנס תמונה',
+ 'pages_md_insert_link' => 'הכנס קישור ליישות',
+ 'pages_md_insert_drawing' => 'הכנס סרטוט',
+ 'pages_md_show_preview' => 'Show preview',
+ 'pages_md_sync_scroll' => 'Sync preview scroll',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Unsaved Drawing Found',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'דף אינו חלק מפרק',
+ 'pages_move' => 'העבר דף',
+ 'pages_copy' => 'העתק דף',
+ 'pages_copy_desination' => 'העתק יעד',
+ 'pages_copy_success' => 'הדף הועתק בהצלחה',
+ 'pages_permissions' => 'הרשאות דף',
+ 'pages_permissions_success' => 'הרשאות הדף עודכנו',
+ 'pages_revision' => 'נוסח',
+ 'pages_revisions' => 'נוסחי דף',
+ 'pages_revisions_desc' => 'Listed below are all the past revisions of this page. You can look back upon, compare, and restore old page versions if permissions allow. The full history of the page may not be fully reflected here since, depending on system configuration, old revisions could be auto-deleted.',
+ 'pages_revisions_named' => 'נוסחי דף עבור :pageName',
+ 'pages_revision_named' => 'נוסח דף עבור :pageName',
+ 'pages_revision_restored_from' => 'Restored from #:id; :summary',
+ 'pages_revisions_created_by' => 'נוצר על ידי',
+ 'pages_revisions_date' => 'תאריך נוסח',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revision Number',
+ 'pages_revisions_numbered' => 'נוסח #:id',
+ 'pages_revisions_numbered_changes' => 'שינויי נוסח #:id',
+ 'pages_revisions_editor' => 'Editor Type',
+ 'pages_revisions_changelog' => 'יומן שינויים',
+ 'pages_revisions_changes' => 'שינויים',
+ 'pages_revisions_current' => 'גירסא נוכחית',
+ 'pages_revisions_preview' => 'תצוגה מקדימה',
+ 'pages_revisions_restore' => 'שחזר',
+ 'pages_revisions_none' => 'לדף זה אין נוסחים',
+ 'pages_copy_link' => 'העתק קישור',
+ 'pages_edit_content_link' => 'Jump to section in editor',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Page Section Options',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'הרשאות דף פעילות',
+ 'pages_initial_revision' => 'פרסום ראשוני',
+ 'pages_references_update_revision' => 'System auto-update of internal links',
+ 'pages_initial_name' => 'דף חדש',
+ 'pages_editing_draft_notification' => 'הינך עורך טיוטה אשר נשמרה לאחרונה ב :timeDiff',
+ 'pages_draft_edited_notification' => 'דף זה עודכן מאז, מומלץ להתעלם מהטיוטה הזו.',
+ 'pages_draft_page_changed_since_creation' => 'העמוד התעדכן מאז שהטיוטה נוצרה. מומלץ לבטל את הטיוטה או לשים לב לא לדרוס שינויים בעמוד.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count משתמשים החלו לערוך דף זה',
+ 'start_b' => ':userName החל לערוך דף זה',
+ 'time_a' => 'מאז שהדף עודכן לאחרונה',
+ 'time_b' => 'ב :minCount דקות האחרונות',
+ 'message' => ':start :time. יש לשים לב לא לדרוס שינויים של משתמשים אחרים!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'דף ספציפי',
+ 'pages_is_template' => 'תבנית דף',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'תגיות דף',
+ 'chapter_tags' => 'תגיות פרק',
+ 'book_tags' => 'תגיות ספר',
+ 'shelf_tags' => 'תגיות מדף',
+ 'tag' => 'תגית',
+ 'tags' => 'תגיות',
+ 'tags_index_desc' => 'Tags can be applied to content within the system to apply a flexible form of categorization. Tags can have both a key and value, with the value being optional. Once applied, content can then be queried using the tag name and value.',
+ 'tag_name' => 'שם התווית',
+ 'tag_value' => 'ערך התגית (אופציונאלי)',
+ 'tags_explain' => "הכנס תגיות על מנת לסדר את התוכן שלך. \n ניתן לציין ערך לתגית על מנת לבצע סידור יסודי יותר",
+ 'tags_add' => 'הוסף תגית נוספת',
+ 'tags_remove' => 'מחק תווית',
+ 'tags_usages' => 'Total tag usages',
+ 'tags_assigned_pages' => 'Assigned to Pages',
+ 'tags_assigned_chapters' => 'Assigned to Chapters',
+ 'tags_assigned_books' => 'Assigned to Books',
+ 'tags_assigned_shelves' => 'Assigned to Shelves',
+ 'tags_x_unique_values' => ':count unique values',
+ 'tags_all_values' => 'כל הערכים',
+ 'tags_view_tags' => 'הצג תוויות',
+ 'tags_view_existing_tags' => 'View existing tags',
+ 'tags_list_empty_hint' => 'Tags can be assigned via the page editor sidebar or while editing the details of a book, chapter or shelf.',
+ 'attachments' => 'קבצים מצורפים',
+ 'attachments_explain' => 'צרף קבצים או קישורים על מנת להציגם בדף שלך. צירופים אלו יהיו זמינים בתפריט הצדדי של הדף',
+ 'attachments_explain_instant_save' => 'שינויים נשמרים באופן מיידי',
+ 'attachments_upload' => 'העלה קובץ',
+ 'attachments_link' => 'צרף קישור',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'הגדר קישור',
+ 'attachments_delete' => 'Are you sure you want to delete this attachment?',
+ 'attachments_dropzone' => 'Drop files here to upload',
+ 'attachments_no_files' => 'לא הועלו קבצים',
+ 'attachments_explain_link' => 'ניתן לצרף קישור במקום העלאת קובץ, קישור זה יכול להוביל לדף אחר או לכל קובץ באינטרנט',
+ 'attachments_link_name' => 'שם הקישור',
+ 'attachment_link' => 'כתובת הקישור',
+ 'attachments_link_url' => 'קישור לקובץ',
+ 'attachments_link_url_hint' => 'כתובת האתר או הקובץ',
+ 'attach' => 'צרף',
+ 'attachments_insert_link' => 'Add Attachment Link to Page',
+ 'attachments_edit_file' => 'ערוך קובץ',
+ 'attachments_edit_file_name' => 'שם הקובץ',
+ 'attachments_edit_drop_upload' => 'גרור קבצים או לחץ כאן על מנת להעלות קבצים במקום הקבצים הקיימים',
+ 'attachments_order_updated' => 'סדר הקבצים עודכן',
+ 'attachments_updated_success' => 'פרטי הקבצים עודכנו',
+ 'attachments_deleted' => 'קובץ מצורף הוסר',
+ 'attachments_file_uploaded' => 'הקובץ עלה בהצלחה',
+ 'attachments_file_updated' => 'הקובץ עודכן בהצלחה',
+ 'attachments_link_attached' => 'הקישור צורף לדף בהצלחה',
+ 'templates' => 'תבניות',
+ 'templates_set_as_template' => 'הגדר עמוד כתבנית',
+ 'templates_explain_set_as_template' => 'ניתן להגדיר עמוד כתבנית כך שהתוכן שלו ישומש בעת יצירת עמודים אחרים. משתמשים אחרים יוכלו לראות את התבנית רק אם ברשותם הרשאות צפייה בעמוד הזה.',
+ 'templates_replace_content' => 'החלף תוכן עמוד',
+ 'templates_append_content' => 'הוסף בסוף תוכן העמוד',
+ 'templates_prepend_content' => 'הוסף בתחילת תוכן העמוד',
+
+ // Profile View
+ 'profile_user_for_x' => 'משתמש במערכת כ :time',
+ 'profile_created_content' => 'תוכן שנוצר',
+ 'profile_not_created_pages' => 'המשתמש :userName לא יצר דפים',
+ 'profile_not_created_chapters' => 'המשתמש :userName לא יצר פרקים',
+ 'profile_not_created_books' => 'המשתמש :userName לא יצר ספרים',
+ 'profile_not_created_shelves' => 'המשתמש :userName לא יצר מדפים',
+
+ // Comments
+ 'comment' => 'תגובה',
+ 'comments' => 'תגובות',
+ 'comment_add' => 'הוסף תגובה',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'השאר תגובה כאן',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'שמור תגובה',
+ 'comment_new' => 'תגובה חדשה',
+ 'comment_created' => 'הוגב :createDiff',
+ 'comment_updated' => 'עודכן :updateDiff על ידי :username',
+ 'comment_updated_indicator' => 'Updated',
+ 'comment_deleted_success' => 'התגובה נמחקה',
+ 'comment_created_success' => 'התגובה נוספה',
+ 'comment_updated_success' => 'התגובה עודכנה',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'האם ברצונך למחוק תגובה זו?',
+ 'comment_in_reply_to' => 'בתגובה ל :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Here are the comments that have been left on this page. Comments can be added & managed when viewing the saved page.',
+
+ // Revision
+ 'revision_delete_confirm' => 'האם ברצונך למחוק נוסח זה?',
+ 'revision_restore_confirm' => 'האם ברצונך לשחזר נוסח זה? תוכן הדף הנוכחי יעודכן לנוסח זה.',
+ 'revision_cannot_delete_latest' => 'לא ניתן למחוק את הנוסח האחרון',
+
+ // Copy view
+ 'copy_consider' => 'Please consider the below when copying content.',
+ 'copy_consider_permissions' => 'Custom permission settings will not be copied.',
+ 'copy_consider_owner' => 'You will become the owner of all copied content.',
+ 'copy_consider_images' => 'Page image files will not be duplicated & the original images will retain their relation to the page they were originally uploaded to.',
+ 'copy_consider_attachments' => 'Page attachments will not be copied.',
+ 'copy_consider_access' => 'A change of location, owner or permissions may result in this content being accessible to those previously without access.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Convert to Shelf',
+ 'convert_to_shelf_contents_desc' => 'You can convert this book to a new shelf with the same contents. Chapters contained within this book will be converted to new books. If this book contains any pages, that are not in a chapter, this book will be renamed and contain such pages, and this book will become part of the new shelf.',
+ 'convert_to_shelf_permissions_desc' => 'Any permissions set on this book will be copied to the new shelf and to all new child books that don\'t have their own permissions enforced. Note that permissions on shelves do not auto-cascade to content within, as they do for books.',
+ 'convert_book' => 'Convert Book',
+ 'convert_book_confirm' => 'Are you sure you want to convert this book?',
+ 'convert_undo_warning' => 'This cannot be as easily undone.',
+ 'convert_to_book' => 'Convert to Book',
+ 'convert_to_book_desc' => 'You can convert this chapter to a new book with the same contents. Any permissions set on this chapter will be copied to the new book but any inherited permissions, from the parent book, will not be copied which could lead to a change of access control.',
+ 'convert_chapter' => 'Convert Chapter',
+ 'convert_chapter_confirm' => 'Are you sure you want to convert this chapter?',
+
+ // References
+ 'references' => 'References',
+ 'references_none' => 'There are no tracked references to this item.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Watch',
+ 'watch_title_default' => 'Default Preferences',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignore',
+ 'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
+ 'watch_title_new' => 'New Pages',
+ 'watch_desc_new' => 'Notify when any new page is created within this item.',
+ 'watch_title_updates' => 'All Page Updates',
+ 'watch_desc_updates' => 'Notify upon all new pages and page changes.',
+ 'watch_desc_updates_page' => 'Notify upon all page changes.',
+ 'watch_title_comments' => 'All Page Updates & Comments',
+ 'watch_desc_comments' => 'Notify upon all new pages, page changes and new comments.',
+ 'watch_desc_comments_page' => 'Notify upon page changes and new comments.',
+ 'watch_change_default' => 'Change default notification preferences',
+ 'watch_detail_ignore' => 'Ignoring notifications',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/he/errors.php b/lang/he/errors.php
new file mode 100644
index 00000000000..99249fb516e
--- /dev/null
+++ b/lang/he/errors.php
@@ -0,0 +1,135 @@
+ 'אין לך הרשאות על מנת לצפות בדף המבוקש.',
+ 'permissionJson' => 'אין לך הרשאות על מנת לבצע את הפעולה המבוקשת.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'משתמש עם המייל :email כבר קיים אך עם פרטי הזדהות שונים',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'המייל כבר אומת, אנא נסה להתחבר',
+ 'email_confirmation_invalid' => 'מפתח האימות אינו תקין או שכבר נעשה בו שימוש, אנא נסה להרשם שנית',
+ 'email_confirmation_expired' => 'מפתח האימות פג-תוקף, מייל אימות חדש נשלח שוב.',
+ 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed',
+ 'ldap_fail_anonymous' => 'גישת LDAP נדחתה בעת השימוש ב bind אנונימי',
+ 'ldap_fail_authed' => 'LDAP access failed using given dn & password details',
+ 'ldap_extension_not_installed' => 'הרחבת LDAP עבור PHP לא מותקנת',
+ 'ldap_cannot_connect' => 'Cannot connect to ldap server, Initial connection failed',
+ 'saml_already_logged_in' => 'כבר מחובר',
+ 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.',
+ 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'oidc_already_logged_in' => 'כבר מחובר',
+ 'oidc_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'oidc_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'social_no_action_defined' => 'לא הוגדרה פעולה',
+ 'social_login_bad_response' => "Error received during :socialAccount login: \n:error",
+ 'social_account_in_use' => 'החשבון :socialAccount כבר בשימוש. אנא נסה להתחבר באמצעות אפשרות :socialAccount',
+ 'social_account_email_in_use' => 'המייל :email כבר נמצא בשימוש. אם כבר יש ברשותך חשבון ניתן להתחבר באמצעות :socialAccount ממסך הגדרות הפרופיל שלך.',
+ 'social_account_existing' => 'ה - :socialAccount כבר מחובר לחשבון שלך.',
+ 'social_account_already_used_existing' => 'This :socialAccount account is already used by another user.',
+ 'social_account_not_used' => 'החשבון :socialAccount אינו מחובר למשתמש כלשהוא. אנא חבר אותו לחשבונך במסך הגדרות הפרופיל שלך.',
+ 'social_account_register_instructions' => 'אם אין ברשותך חשבון, תוכל להרשם באמצעות :socialAccount',
+ 'social_driver_not_found' => 'Social driver not found',
+ 'social_driver_not_configured' => 'הגדרות ה :socialAccount אינן מוגדרות כראוי',
+ 'invite_token_expired' => 'לינק ההזמנה פג. אתה יכול לנסות לאפס את סיסמת החשבון שלך במקום.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // System
+ 'path_not_writable' => 'לא ניתן להעלות את :filePath אנא ודא שניתן לכתוב למיקום זה',
+ 'cannot_get_image_from_url' => 'לא ניתן לקבל תמונה מ :url',
+ 'cannot_create_thumbs' => 'The server cannot create thumbnails. Please check you have the GD PHP extension installed.',
+ 'server_upload_limit' => 'השרת אינו מרשה העלאת קבצים במשקל זה. אנא נסה להעלות קובץ קטן יותר.',
+ 'server_post_limit' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.',
+ 'uploaded' => 'השרת אינו מרשה העלאת קבצים במשקל זה. אנא נסה להעלות קובץ קטן יותר.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'התרחשה שגיאה במהלך העלאת התמונה',
+ 'image_upload_type_error' => 'התמונה שהועלתה אינה תקינה',
+ 'image_upload_replace_type' => 'Image file replacements must be of the same type',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Drawing data could not be loaded. The drawing file might no longer exist or you may not have permission to access it.',
+
+ // Attachments
+ 'attachment_not_found' => 'קובץ מצורף לא נמצא',
+ 'attachment_upload_error' => 'An error occurred uploading the attachment file',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'שגיאה בשמירת הטיוטה. אנא ודא כי חיבור האינטרנט תקין לפני שמירת דף זה.',
+ 'page_draft_delete_fail' => 'Failed to delete page draft and fetch current page saved content',
+ 'page_custom_home_deletion' => 'לא ניתן למחוק דף אשר מוגדר כדף הבית',
+
+ // Entities
+ 'entity_not_found' => 'פריט לא נמצא',
+ 'bookshelf_not_found' => 'מדף לא נמצא',
+ 'book_not_found' => 'ספר לא נמצא',
+ 'page_not_found' => 'דף לא נמצא',
+ 'chapter_not_found' => 'פרק לא נמצא',
+ 'selected_book_not_found' => 'הספר שנבחר לא נמצא',
+ 'selected_book_chapter_not_found' => 'הפרק או הספר שנבחר לא נמצאו',
+ 'guests_cannot_save_drafts' => 'אורחים אינם יכולים לשמור סקיצות',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'אינך יכול למחוק את המנהל היחיד',
+ 'users_cannot_delete_guest' => 'אינך יכול למחוק את משתמש האורח',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'לא ניתן לערוך תפקיד זה',
+ 'role_system_cannot_be_deleted' => 'תפקיד זה הינו תפקיד מערכת ולא ניתן למחיקה',
+ 'role_registration_default_cannot_delete' => 'לא ניתן למחוק תפקיד זה מכיוון שהוא מוגדר כתפקיד ברירת המחדל בעת הרשמה',
+ 'role_cannot_remove_only_admin' => 'משתמש זה הינו המשתמש היחיד המשוייך לפקיד המנהל. נסה לשייך את תפקיד המנהל למשתמש נוסף לפני הסרה כאן',
+
+ // Comments
+ 'comment_list' => 'התרחשה שגיאה בעת שליפת התגובות',
+ 'cannot_add_comment_to_draft' => 'אינך יכול להוסיף תגובות לסקיצה זו',
+ 'comment_add' => 'התרחשה שגיאה בעת הוספה / עדכון התגובה',
+ 'comment_delete' => 'התרחשה שגיאה בעת מחיקת התגובה',
+ 'empty_comment' => 'לא ניתן להוסיף תגובה ריקה',
+
+ // Error pages
+ '404_page_not_found' => 'דף לא קיים',
+ 'sorry_page_not_found' => 'מצטערים, הדף שחיפשת אינו קיים',
+ 'sorry_page_not_found_permission_warning' => 'במידה וציפיתי שדף זה יהיה קיים, ייתכן וחסרות לך ההרשאות לראותו.',
+ 'image_not_found' => 'תמונה לא נמצאה',
+ 'image_not_found_subtitle' => 'מצטערים, לא היה ניתן למצוא את קובץ התמונה שחיפשת.',
+ 'image_not_found_details' => 'במידה וציפית שתמונה זאת תהיה קיימת ייתכן והיא כבר נמחקה.',
+ 'return_home' => 'בחזרה לדף הבית',
+ 'error_occurred' => 'התרחשה שגיאה',
+ 'app_down' => ':appName כרגע אינו זמין',
+ 'back_soon' => 'מקווים שיחזור במהרה',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'No authorization token found on the request',
+ 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect',
+ 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token',
+ 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
+ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
+ 'api_user_token_expired' => 'The authorization token used has expired',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'The URL does not match the configured allowed SSR hosts',
+];
diff --git a/lang/he/notifications.php b/lang/he/notifications.php
new file mode 100644
index 00000000000..cfab57117f4
--- /dev/null
+++ b/lang/he/notifications.php
@@ -0,0 +1,29 @@
+ 'תגובה חדשה בדף: :pageName',
+ 'new_comment_intro' => 'משתמש רשם על עמוד ב :appName:',
+ 'new_page_subject' => 'עמוד חדש: PageName',
+ 'new_page_intro' => 'עמוד חדש נפתח ב:appName:',
+ 'updated_page_subject' => 'עמוד עודכן :pageName',
+ 'updated_page_intro' => 'דף עודכן ב:appName:',
+ 'updated_page_debounce' => 'על מנת לעצור הצפת התראות, לזמן מסוים אתה לא תקבל התראות על שינויים עתידיים בדף זה על ידי אותו עורך.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'שם עמוד:',
+ 'detail_page_path' => 'נתיב לעמוד:',
+ 'detail_commenter' => 'יוצר התגובה:',
+ 'detail_comment' => 'תגובה:',
+ 'detail_created_by' => 'נוצר על ידי:',
+ 'detail_updated_by' => 'עודכן על ידי:',
+
+ 'action_view_comment' => 'צפה בתגובה',
+ 'action_view_page' => 'הצג דף',
+
+ 'footer_reason' => 'ההתראה נשלחה אליך בגלל :link לכסות סוג זה של פעילות עבור פריט זה.',
+ 'footer_reason_link' => 'העדפות ההתראות שלך',
+];
diff --git a/resources/lang/he/pagination.php b/lang/he/pagination.php
similarity index 100%
rename from resources/lang/he/pagination.php
rename to lang/he/pagination.php
diff --git a/lang/he/passwords.php b/lang/he/passwords.php
new file mode 100644
index 00000000000..3909680e3d4
--- /dev/null
+++ b/lang/he/passwords.php
@@ -0,0 +1,15 @@
+ 'הסיסמא חייבת להיות בעלת 8 תווים לפחות ולהתאים לאימות.',
+ 'user' => "לא נמצא משתמש קיים עם כתובת דוא\"ל זו.",
+ 'token' => 'הקישור לאיפוס הסיסמה לא תקף עבור כתובת דוא"ל זו.',
+ 'sent' => 'שלחנו לך דוא"ל עם קישור לאיפוס הסיסמא!',
+ 'reset' => 'איפוס הסיסמה הושלם בהצלחה!',
+
+];
diff --git a/lang/he/preferences.php b/lang/he/preferences.php
new file mode 100644
index 00000000000..fa0c89ea585
--- /dev/null
+++ b/lang/he/preferences.php
@@ -0,0 +1,52 @@
+ 'החשבון שלי',
+
+ 'shortcuts' => 'קיצורי דרך',
+ 'shortcuts_interface' => 'העדפות קיצורי ממשק משתמש',
+ 'shortcuts_toggle_desc' => 'כאן תוכל להפעיל או לבטל קיצורי דרך לממשק מערכת המקלדת, המשמשים לניווט ולפעולות.',
+ 'shortcuts_customize_desc' => 'אתה יכול להתאים אישית כל אחד מקיצורי הדרך למטה. פשוט לחץ על צירוף המקשים הרצוי לאחר בחירת הקלט לקיצור דרך.',
+ 'shortcuts_toggle_label' => 'קיצורי מקשים מופעלים',
+ 'shortcuts_section_navigation' => 'ניווט',
+ 'shortcuts_section_actions' => 'פעולות נפוצות',
+ 'shortcuts_save' => 'שמור קיצורי דרך',
+ 'shortcuts_overlay_desc' => 'הערה: כאשר קיצורי דרך מופעלים, שכבת-על מסייעת זמינה באמצעות לחיצה על "?" אשר ידגיש את קיצורי הדרך הזמינים לפעולות הנראות כעת על המסך.',
+ 'shortcuts_update_success' => 'העדפותיך נשמרו!',
+ 'shortcuts_overview_desc' => 'ניהול קיצורי מקלדת שבשימוש לניווט מהיר בממשק המשתמש.',
+
+ 'notifications' => 'הגדרת התראות',
+ 'notifications_desc' => 'העדפות קבלת מייל והתראות כאשר מבוצעת פעולה מסויימת במערכת.',
+ 'notifications_opt_own_page_changes' => 'עדכן אותי כאשר מתבצעים שינויים לדפים שבבעלותי',
+ 'notifications_opt_own_page_comments' => 'עדכן אותי כאשר נוספות הערות לדפים שבבעלותי',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'עדכן אותי כאשר מתקבלות תגובות להערות שלי',
+ 'notifications_save' => 'שמור העדפות',
+ 'notifications_update_success' => 'הגדרת התראות עודכנו!',
+ 'notifications_watched' => 'פריטים נצפים וברשימת התעלמות',
+ 'notifications_watched_desc' => 'להן רשימת הפריטים אשר קיימת עבורם הגדרות מותאמות אישית. על מנת לעדכן רשימה זו, צפה בפריט ומצא את אפשרות הצפייה / מעקב בפאנל הצידי.',
+
+ 'auth' => 'גישה ואבטחה',
+ 'auth_change_password' => 'שינוי סיסמה',
+ 'auth_change_password_desc' => 'שינוי הסיסמה לכניסה למערכת. הסיסמה חייבת להיות לפחות 8 תווים.',
+ 'auth_change_password_success' => 'הסיסמה עודכנה בהצלחה!',
+
+ 'profile' => 'פרטי הפרופיל',
+ 'profile_desc' => 'נהל את פרטי החשבון שלך אשר יוצגו לאחרים במערכת, בנוסף לפרטים אשר נועדו להתאמה אישית במערכת ויצירת קשר.',
+ 'profile_view_public' => 'צפה בפרופיל הציבורי',
+ 'profile_name_desc' => 'הגדר את שם התצוגה שלך אשר יהיה זמין לצפייה לשאר משתמשי המערכת ובכל פעולה אשר תבצע במערכת, ובתוכן אשר שייך לך.',
+ 'profile_email_desc' => 'כתובת הדוא"ל תשמש להתראות, ובהתאם למערכות ההזדהות הפעילות לגישה למערכת.',
+ 'profile_email_no_permission' => 'לצערנו אין לך גישה לביצוע שינוי כתובת הדוא"ל שלך, אם ברצונך לבצע שינוי בכתובת אנא פנה למנהל המערכת על מנת שיבצע שינוי זה עבורך.',
+ 'profile_avatar_desc' => 'אנא בחר תמונה שתייצג אותך כלפי אחרים במערכת, תמונה אידיאלית צריכה להיות בגובה ואורך של 256 פיקסלים.',
+ 'profile_admin_options' => 'אפשרויות מנהל',
+ 'profile_admin_options_desc' => 'אפשרויות ברמת מנהל נוספות, כגון הוספת תפקידים והרשאות למשתמשים, אפשר למצוא עבור המשתמש שלך באיזור "הגדרות > משתמשים" במערכת.',
+
+ 'delete_account' => 'הסר חשבון',
+ 'delete_my_account' => 'הסר את החשבון שלי',
+ 'delete_my_account_desc' => 'פעולה זו תמחק את החשבון שלך כולל כל ההגדרות עבור החשבון שלך מהמערכת. אין דרך לשחזר את החשבון לאחר המחיקה. כל תוכן שיצרת כולל קבצים שהעלת לאתר ישארו פעילים.',
+ 'delete_my_account_warning' => 'הפעולה אינה ניתנת לביטול, האם למחוק את החשבון?',
+];
diff --git a/lang/he/settings.php b/lang/he/settings.php
new file mode 100644
index 00000000000..46150081aa6
--- /dev/null
+++ b/lang/he/settings.php
@@ -0,0 +1,374 @@
+ 'הגדרות',
+ 'settings_save' => 'שמור הגדרות',
+ 'system_version' => 'גירסת מערכת',
+ 'categories' => 'קטגוריות',
+
+ // App Settings
+ 'app_customization' => 'התאמה אישית',
+ 'app_features_security' => 'מאפיינים ואבטחה',
+ 'app_name' => 'שם היישום',
+ 'app_name_desc' => 'השם הזה יופיע בכותרת ובכל אי-מייל הנשלח מהמערכת',
+ 'app_name_header' => 'הצג שם בחלק העליון',
+ 'app_public_access' => 'גישה ציבורית',
+ 'app_public_access_desc' => 'הפעלת אפשרות זו תאפשר למשתמשים אשר אינם רשומים לגשת לתוכן שלך',
+ 'app_public_access_desc_guest' => 'הגדרות הרשאה למשתמשים ציבוריים ניתנות לשינוי דרך משתמש מסוג ״אורח״',
+ 'app_public_access_toggle' => 'אפשר גישה ציבורית',
+ 'app_public_viewing' => 'לאפשר גישה ציבורית?',
+ 'app_secure_images' => 'העלאת תמונות מאובטחת',
+ 'app_secure_images_toggle' => 'אפשר העלאת תמונות מאובטחת',
+ 'app_secure_images_desc' => 'משיקולי ביצועים, כל התמונות הינן ציבוריות. אפשרות זו מוסיפה מחרוזת אקראית שקשה לנחש לכל כתובת של תמונה. אנא ודא שאפשרות הצגת תוכן התיקייה מבוטל.',
+ 'app_default_editor' => 'עורך דפים ברירת מחדל',
+ 'app_default_editor_desc' => 'Select which editor will be used by default when editing new pages. This can be overridden at a page level where permissions allow.',
+ 'app_custom_html' => 'HTML מותאם אישית לחלק העליון',
+ 'app_custom_html_desc' => 'כל קוד שיתווסף כאן, יופיע בתחתית תגית ה head של כל דף. חלק זה שימושי על מנת להגדיר עיצובי CSS והתקנת קוד Analytics',
+ 'app_custom_html_disabled_notice' => 'קוד HTML מותאם מבוטל בדף ההגדרות על מנת לוודא ששינויים שגורמים לבעיה יוכלו להיות מבוטלים לאחר מכן',
+ 'app_logo' => 'לוגו היישום',
+ 'app_logo_desc' => 'This is used in the application header bar, among other areas. This image should be 86px in height. Large images will be scaled down.',
+ 'app_icon' => 'Application Icon',
+ 'app_icon_desc' => 'This icon is used for browser tabs and shortcut icons. This should be a 256px square PNG image.',
+ 'app_homepage' => 'דף הבית של היישום',
+ 'app_homepage_desc' => 'אנא בחר דף להצגה בדף הבית במקום דף ברירת המחדל. הרשאות הדף לא יחולו בדפים הנבחרים.',
+ 'app_homepage_select' => 'בחר דף',
+ 'app_footer_links' => 'קישורים בתחתית הדף',
+ 'app_footer_links_desc' => 'הוסיפו קישורים שיוצגו בתחתית האתר. קישורים אלה יוצגו בתחתית רוב הדפים, לרבות אלה שלא מצריכים התחברות. תוכלו להשתמש בתווית "trans::" כדי להשתמש בתרגומים המוגדרים על ידי המערכת. לדוגמה: שימוש ב"trans::common.privacy_policy" יספק את הטקסט המתורגם "מדיניות פרטיות" ו"trans::common.terms_of_service" יספק את הטקסט המתורגם "תנאי השימוש".',
+ 'app_footer_links_label' => 'תווית הקישור',
+ 'app_footer_links_url' => 'כתובת ה-URL של הקישור',
+ 'app_footer_links_add' => 'הוספת קישור בתחתית הדף',
+ 'app_disable_comments' => 'ביטול תגובות',
+ 'app_disable_comments_toggle' => 'בטל תגובות',
+ 'app_disable_comments_desc' => 'מבטל את התגובות לאורך כל היישום, תגובות קיימות לא יוצגו.',
+
+ // Color settings
+ 'color_scheme' => 'Application Color Scheme',
+ 'color_scheme_desc' => 'Set the colors to use in the application user interface. Colors can be configured separately for dark and light modes to best fit the theme and ensure legibility.',
+ 'ui_colors_desc' => 'Set the application primary color and default link color. The primary color is mainly used for the header banner, buttons and interface decorations. The default link color is used for text-based links and actions, both within written content and in the application interface.',
+ 'app_color' => 'Primary Color',
+ 'link_color' => 'Default Link Color',
+ 'content_colors_desc' => 'Set colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'bookshelf_color' => 'צבע המדף',
+ 'book_color' => 'צבע הספר',
+ 'chapter_color' => 'צבע הפרק',
+ 'page_color' => 'צבע העמוד',
+ 'page_draft_color' => 'צבע טיוטת העמוד',
+
+ // Registration Settings
+ 'reg_settings' => 'הרשמה',
+ 'reg_enable' => 'אפשר הרשמה',
+ 'reg_enable_toggle' => 'אפשר להרשם',
+ 'reg_enable_desc' => 'כאשר אפשר להרשם משתמשים יוכלו להכנס באופן עצמאי. בעת ההרשמה המשתמש יקבל הרשאה יחידה כברירת מחדל.',
+ 'reg_default_role' => 'הרשאה כברירת מחדל',
+ 'reg_enable_external_warning' => 'האפשרות לעיל חסרת השפעה כאשר מתבצע שימוש באותנטיקציה חיצונית מסוג LDAP או SAML. חשבונות משתמש לחברים לא קיימים יווצרו באופן אוטומטי במידה ואותנטיקציה, הנוגדת את המערכת החיצונית בשימוש, מצליחה.',
+ 'reg_email_confirmation' => 'אימות כתובת אי-מייל',
+ 'reg_email_confirmation_toggle' => 'יש לאמת את כתובת המייל',
+ 'reg_confirm_email_desc' => 'אם מופעלת הגבלה לדומיין ספציפי אז אימות המייל לא יבוצע',
+ 'reg_confirm_restrict_domain' => 'הגבלה לדומיין ספציפי',
+ 'reg_confirm_restrict_domain_desc' => 'הכנס דומיינים מופרדים בפסיק אשר עבורם תוגבל ההרשמה. משתמשים יקבלו אי-מייל על מנת לאמת את כתובת המייל שלהם. לתשומת לבך: משתמש יוכל לשנות את כתובת המייל שלו לאחר ההרשמה',
+ 'reg_confirm_restrict_domain_placeholder' => 'אין הגבלה לדומיין',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'תחזוקה',
+ 'maint_image_cleanup' => 'ניקוי תמונות',
+ 'maint_image_cleanup_desc' => 'סורק את הדפים והגרסאות על מנת למצוא אילו תמונות לא בשימוש. יש לוודא גיבוי מלא של מסד הנתונים והתמונות לפני הרצה',
+ 'maint_delete_images_only_in_revisions' => 'מחק בנוסף תמונות שקיימות בגרסאות ישנות של הדף בלבד',
+ 'maint_image_cleanup_run' => 'הפעל ניקוי תמונות',
+ 'maint_image_cleanup_warning' => 'נמצאו כ :count תמונות אשר לא בשימוש האם ברצונך להמשיך?',
+ 'maint_image_cleanup_success' => ':count תמונות שלא בשימוש נמחקו',
+ 'maint_image_cleanup_nothing_found' => 'לא נמצאו תמונות אשר לא בשימוש, לא נמחקו קבצים כלל.',
+ 'maint_send_test_email' => 'שלח דוא"ל ניסיוני',
+ 'maint_send_test_email_desc' => 'שולח דוא"ל ניסיוני לכתובת הדוא"ל המצוינת בפרופיל שלך.',
+ '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' => 'פתח את סל המיחזור',
+ 'maint_regen_references' => 'Regenerate References',
+ 'maint_regen_references_desc' => 'This action will rebuild the cross-item reference index within the database. This is usually handled automatically but this action can be useful to index old content or content added via unofficial methods.',
+ 'maint_regen_references_success' => 'Reference index has been regenerated!',
+ 'maint_timeout_command_note' => 'Note: This action can take time to run, which can lead to timeout issues in some web environments. As an alternative, this action be performed using a terminal command.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'סל המיחזור',
+ 'recycle_bin_desc' => 'כאן תוכלו לאחזר פריטים שנמחקו או לבחור למחוק אותם מהמערכת לצמיתות. רשימה זו לא מסוננת, בשונה מרשימות פעילות דומות במערכת, בהן מוחלים מסנני הרשאות.',
+ 'recycle_bin_deleted_item' => 'פריט שנמחק',
+ 'recycle_bin_deleted_parent' => 'הורה',
+ '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' => 'This action will permanently delete this item from the system, along with any child elements listed below, and you will not be able to restore this content. Are you sure you want to permanently delete this item?',
+ 'recycle_bin_destroy_list' => 'פריטים שיושמדו',
+ 'recycle_bin_restore_list' => 'פריטים שיאוחזרו',
+ 'recycle_bin_restore_confirm' => 'פעולה זו תאחזר את הפריט שנמחק, לרבות רכיבי-הבן שלו, למיקומו המקורי. אם המיקום המקורי נמחק מאז, וכעת נמצא בסל המיחזור, יש לאחזר גם את פריט-האב.',
+ 'recycle_bin_restore_deleted_parent' => 'פריט-האב של פריט זה נמחק. פריטים אלה יישארו מחוקים עד שפריט-אב זה יאוחזר.',
+ 'recycle_bin_restore_parent' => 'Restore Parent',
+ 'recycle_bin_destroy_notification' => 'נמחקו בסה"כ :count פריטים מסל המיחזור.',
+ 'recycle_bin_restore_notification' => 'אוחזרו בסה"כ :count פריטים מסל המיחזור.',
+
+ // Audit Log
+ 'audit' => 'לוג בדיקה',
+ 'audit_desc' => 'לוג בדיקה זה מציג רשימה של פעילויות שנוטרו במערכת. רשימה זו לא מסוננת, בשונה מרשימות פעילות דומות במערכת בהן מוחלים מסנני הרשאות.',
+ '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_ip' => 'IP Address',
+ 'audit_table_date' => 'זמן הפעילות',
+ 'audit_date_from' => 'טווח תאריכים החל מ...',
+ 'audit_date_to' => 'טווח תאריכים עד ל...',
+
+ // Role Settings
+ 'roles' => 'תפקידים',
+ 'role_user_roles' => 'תפקידי משתמשים',
+ 'roles_index_desc' => 'Roles are used to group users & provide system permission to their members. When a user is a member of multiple roles the privileges granted will stack and the user will inherit all abilities.',
+ 'roles_x_users_assigned' => ':count user assigned|:count users assigned',
+ 'roles_x_permissions_provided' => ':count permission|:count permissions',
+ 'roles_assigned_users' => 'Assigned Users',
+ 'roles_permissions_provided' => 'הרשאות שהוקצו',
+ 'role_create' => 'צור תפקיד משתמש חדש',
+ 'role_delete' => 'מחק תפקיד',
+ 'role_delete_confirm' => 'פעולה זו תמחק את התפקיד: :roleName',
+ 'role_delete_users_assigned' => 'לתפקיד :userCount יש משתמשים אשר משויכים אליו. אם ברצונך להעבירם לתפקיד אחר אנא בחר תפקיד מלמטה',
+ 'role_delete_no_migration' => "אל תעביר משתמשים לתפקיד",
+ 'role_delete_sure' => 'האם אתה בטוח שברצונך למחוק את התפקיד?',
+ 'role_edit' => 'ערוך תפקיד',
+ 'role_details' => 'פרטי תפקיד',
+ 'role_name' => 'שם התפקיד',
+ 'role_desc' => 'תיאור קצר של התפקיד',
+ 'role_mfa_enforced' => 'Requires Multi-Factor Authentication',
+ 'role_external_auth_id' => 'ID-י אותנטיקציה חיצוניים',
+ 'role_system' => 'הרשאות מערכת',
+ 'role_manage_users' => 'ניהול משתמשים',
+ 'role_manage_roles' => 'ניהול תפקידים והרשאות תפקידים',
+ 'role_manage_entity_permissions' => 'נהל הרשאות ספרים, פרקים ודפים',
+ 'role_manage_own_entity_permissions' => 'נהל הרשאות על ספרים, פרקים ודפים בבעלותך',
+ 'role_manage_page_templates' => 'נהל תבניות דפים',
+ 'role_access_api' => 'גש ל-API המערכת',
+ 'role_manage_settings' => 'ניהול הגדרות יישום',
+ 'role_export_content' => 'Export content',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'שנה עורך עמודים',
+ 'role_notifications' => 'ניהול התראות',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'הרשאות משאבים',
+ 'roles_system_warning' => 'שימו לב לכך שגישה לכל אחת משלושת ההרשאות הנ"ל יכולה לאפשר למשתמש לשנות את הפריווילגיות שלהם או של אחרים במערכת. הגדירו תפקידים להרשאות אלה למשתמשים בהם אתם בוטחים בלבד.',
+ 'role_asset_desc' => 'הרשאות אלו שולטות בגישת ברירת המחדל למשאבים בתוך המערכת. הרשאות של ספרים, פרקים ודפים יגברו על הרשאות אלו.',
+ 'role_asset_admins' => 'מנהלים מקבלים הרשאה מלאה לכל התוכן אך אפשרויות אלו עלולות להציג או להסתיר אפשרויות בממשק',
+ 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'הכל',
+ 'role_own' => 'שלי',
+ 'role_controlled_by_asset' => 'נשלטים על ידי המשאב אליו הועלו',
+ 'role_save' => 'שמור תפקיד',
+ 'role_users' => 'משתמשים משוייכים לתפקיד זה',
+ 'role_users_none' => 'אין משתמשים המשוייכים לתפקיד זה',
+
+ // Users
+ 'users' => 'משתמשים',
+ 'users_index_desc' => 'Create & manage individual user accounts within the system. User accounts are used for login and attribution of content & activity. Access permissions are primarily role-based but user content ownership, among other factors, may also affect permissions & access.',
+ 'user_profile' => 'פרופיל משתמש',
+ 'users_add_new' => 'הוסף משתמש חדש',
+ 'users_search' => 'חפש משתמשים',
+ 'users_latest_activity' => 'פעילות אחרונה',
+ 'users_details' => 'פרטי משתמש',
+ 'users_details_desc' => 'הגדר שם לתצוגה ומייל עבור משתמש זה. כתובת המייל תשמש על מנת להתחבר למערכת',
+ 'users_details_desc_no_email' => 'הגדר שם לתצוגה כדי שאחרים יוכלו לזהות',
+ 'users_role' => 'תפקידי משתמשים',
+ 'users_role_desc' => 'בחר אילו תפקידים ישויכו למשתמש זה. אם המשתמש משוייך למספר תפקידים, ההרשאות יהיו כלל ההרשאות של כל התפקידים',
+ 'users_password' => 'סיסמא',
+ 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 8 characters long.',
+ 'users_send_invite_text' => 'תוכלו לבחור לשלוח למשתמש זה דוא"ל הזמנה, המאפשר להם להגדיר סיסמה משלהם. אחרת, תוכלו להגדיר את סיסמתם בעצמכם.',
+ 'users_send_invite_option' => 'שלח דוא"ל הזמנה למשתמש',
+ 'users_external_auth_id' => 'זיהוי חיצוני - ID',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ 'users_system_public' => 'משתמש זה מייצג את כל האורחים שלא מזוהים אשר משתמשים במערכת. לא ניתן להתחבר למשתמש זה אך הוא מוגדר כברירת מחדל',
+ 'users_delete' => 'מחק משתמש',
+ 'users_delete_named' => 'מחק משתמש :userName',
+ 'users_delete_warning' => 'פעולה זו תמחק את המשתמש \':userName\' מהמערכת',
+ 'users_delete_confirm' => 'האם ברצונך למחוק משתמש זה?',
+ 'users_migrate_ownership' => 'העבר בעלות',
+ 'users_migrate_ownership_desc' => 'בחרו משתמש כאן במידה ואתם מעוניינים שמשתמש אחר יהפוך לבעלים של כל הפריטים שכרגע בבעלות משתמש זה.',
+ 'users_none_selected' => 'לא נבחר משתמש',
+ 'users_edit' => 'עריכת משתמש',
+ 'users_edit_profile' => 'עריכת פרופיל',
+ 'users_avatar' => 'תמונת משתמש',
+ 'users_avatar_desc' => 'בחר תמונה אשר תייצג את המשתמש. על התמונה להיות ריבוע של 256px',
+ 'users_preferred_language' => 'שפה מועדפת',
+ 'users_preferred_language_desc' => 'אפשרות זו תשנע את השפה אשר מוצגת בממשק המערכת. פעולה זו לא תשנה את התוכן אשר נכתב על ידי המשתמשים.',
+ 'users_social_accounts' => 'רשתות חברתיות',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'כן ניתן לשייך חשבונות אחרים שלך לחיבור וזיהוי קל ומהיר. ניתוק חשבון אינו מנתק גישה קיימת למערכת. לביצוע ניתוק יש לשנות את ההגדרה בהגדרות של חשבון הרשת החברתית',
+ 'users_social_connect' => 'חיבור החשבון',
+ 'users_social_disconnect' => 'ניתוק חשבון',
+ 'users_social_status_connected' => 'Connected',
+ 'users_social_status_disconnected' => 'Disconnected',
+ 'users_social_connected' => 'חשבון :socialAccount חובר בהצלחה לחשבון שלך',
+ 'users_social_disconnected' => ':socialAccount נותק בהצלחה מהחשבון שלך',
+ 'users_api_tokens' => 'אסימוני API',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'לא נוצרו אסימוני API למשתמש זה',
+ 'users_api_tokens_create' => 'צור אסימון',
+ 'users_api_tokens_expires' => 'פג',
+ 'users_api_tokens_docs' => 'תיעוד API',
+ 'users_mfa' => 'Multi-Factor Authentication',
+ 'users_mfa_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'users_mfa_x_methods' => ':count method configured|:count methods configured',
+ 'users_mfa_configure' => 'Configure Methods',
+
+ // API Tokens
+ 'user_api_token_create' => 'צור אסימון API',
+ 'user_api_token_name' => 'שם',
+ 'user_api_token_name_desc' => 'תנו לאסימון שלכם שם קריא, כתזכורת עתידית למטרה המיועדת שלו.',
+ 'user_api_token_expiry' => 'תאריך תפוגה',
+ 'user_api_token_expiry_desc' => 'הגדירו תאריך בו יפוג תוקף אסימון זה. לאחר תאריך זה, בקשות שיעשו באמצעות אסימון זה לא יעבדו יותר. במידה ושדה זה יושאר ריק, תאריך התפוגה יוגדר לבעוד 100 שנים.',
+ 'user_api_token_create_secret_message' => 'מיד לאחר יצירת אסימון זה, יווצרו ויוצגו "ID אסימון" ו"סוד אסימון". הסוד יוצג פעם אחת בלבד, לכן וודאו להעתיק את הערך למקום שמור ובטוח לפני שתמשיכו הלאה.',
+ 'user_api_token' => 'אסימון API',
+ 'user_api_token_id' => 'ID האסימון',
+ 'user_api_token_id_desc' => 'זהו מזהה בלתי ניתן לעריכה לאסימון זה הנוצר על ידי המערכת, אשר יסופק בבקשות API.',
+ 'user_api_token_secret' => 'סוד האסימון',
+ 'user_api_token_secret_desc' => 'זהו סוד המיוצר על ידי המערכת לאסימון זה, אשר יסופק בבקשות API. סוד זה יוצג פעם אחת בלבד, לכן וודאו להעתיק ערך זה למקום שמור ובטוח.',
+ 'user_api_token_created' => 'אסימון נוצר :timeAgo',
+ 'user_api_token_updated' => 'אסימון עודכן :timeAgo',
+ 'user_api_token_delete' => 'מחק אסימון',
+ 'user_api_token_delete_warning' => 'פעולה זו תמחק לחלוטין את אסימון ה-API בשם \':tokenName\' מהמערכת.',
+ 'user_api_token_delete_confirm' => 'האם אתם בטוחים שאתם מעוניינים למחוק אסימון API זה?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks are a way to send data to external URLs when certain actions and events occur within the system which allows event-based integration with external platforms such as messaging or notification systems.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'Create New Webhook',
+ 'webhooks_none_created' => 'No webhooks have yet been created.',
+ 'webhooks_edit' => 'Edit Webhook',
+ 'webhooks_save' => 'Save Webhook',
+ 'webhooks_details' => 'Webhook Details',
+ 'webhooks_details_desc' => 'Provide a user friendly name and a POST endpoint as a location for the webhook data to be sent to.',
+ 'webhooks_events' => 'Webhook Events',
+ 'webhooks_events_desc' => 'Select all the events that should trigger this webhook to be called.',
+ 'webhooks_events_warning' => 'Keep in mind that these events will be triggered for all selected events, even if custom permissions are applied. Ensure that use of this webhook won\'t expose confidential content.',
+ 'webhooks_events_all' => 'All system events',
+ 'webhooks_name' => 'Webhook Name',
+ 'webhooks_timeout' => 'Webhook Request Timeout (Seconds)',
+ 'webhooks_endpoint' => 'Webhook Endpoint',
+ 'webhooks_active' => 'Webhook Active',
+ 'webhook_events_table_header' => 'Events',
+ 'webhooks_delete' => 'Delete Webhook',
+ 'webhooks_delete_warning' => 'This will fully delete this webhook, with the name \':webhookName\', from the system.',
+ 'webhooks_delete_confirm' => 'Are you sure you want to delete this webhook?',
+ 'webhooks_format_example' => 'Webhook Format Example',
+ 'webhooks_format_example_desc' => 'Webhook data is sent as a POST request to the configured endpoint as JSON following the format below. The "related_item" and "url" properties are optional and will depend on the type of event triggered.',
+ 'webhooks_status' => 'Webhook Status',
+ 'webhooks_last_called' => 'Last Called:',
+ 'webhooks_last_errored' => 'Last Errored:',
+ 'webhooks_last_error_message' => 'Last Error Message:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/he/validation.php b/lang/he/validation.php
new file mode 100644
index 00000000000..db2080a2b1f
--- /dev/null
+++ b/lang/he/validation.php
@@ -0,0 +1,123 @@
+ 'שדה :attribute חייב להיות מסומן.',
+ 'active_url' => 'שדה :attribute הוא לא כתובת אתר תקנית.',
+ 'after' => 'שדה :attribute חייב להיות תאריך אחרי :date.',
+ 'alpha' => 'שדה :attribute יכול להכיל אותיות בלבד.',
+ 'alpha_dash' => 'שדה :attribute יכול להכיל אותיות, מספרים ומקפים בלבד.',
+ 'alpha_num' => 'שדה :attribute יכול להכיל אותיות ומספרים בלבד.',
+ 'array' => 'שדה :attribute חייב להיות מערך.',
+ 'backup_codes' => 'קוד שהוזן לא תקין או שכבר השתמשו בו.',
+ 'before' => 'שדה :attribute חייב להיות תאריך לפני :date.',
+ 'between' => [
+ 'numeric' => 'שדה :attribute חייב להיות בין :min ל-:max.',
+ 'file' => 'שדה :attribute חייב להיות בין :min ל-:max קילובייטים.',
+ 'string' => 'שדה :attribute חייב להיות בין :min ל-:max תווים.',
+ 'array' => 'שדה :attribute חייב להיות בין :min ל-:max פריטים.',
+ ],
+ 'boolean' => 'שדה :attribute חייב להיות אמת או שקר.',
+ 'confirmed' => 'שדה האישור של :attribute לא תואם.',
+ 'date' => 'שדה :attribute אינו תאריך תקני.',
+ 'date_format' => 'שדה :attribute לא תואם את הפורמט :format.',
+ 'different' => 'שדה :attribute ושדה :other חייבים להיות שונים.',
+ 'digits' => 'שדה :attribute חייב להיות בעל :digits ספרות.',
+ 'digits_between' => 'שדה :attribute חייב להיות בין :min ו-:max ספרות.',
+ 'email' => 'שדה :attribute חייב להיות כתובת אימייל תקנית.',
+ 'ends_with' => 'The :attribute must end with one of the following: :values',
+ 'file' => 'The :attribute must be provided as a valid file.',
+ '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.',
+ '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.',
+ 'array' => 'The :attribute must have :value items or more.',
+ ],
+ 'exists' => 'בחירת ה-:attribute אינה תקפה.',
+ 'image' => 'שדה :attribute חייב להיות תמונה.',
+ 'image_extension' => 'שדה :attribute חייב להיות מסוג תמונה נתמך',
+ 'in' => 'בחירת ה-:attribute אינה תקפה.',
+ 'integer' => 'שדה :attribute חייב להיות מספר שלם.',
+ 'ip' => 'שדה :attribute חייב להיות כתובת IP תקנית.',
+ '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.',
+ '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.',
+ '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.',
+ 'array' => 'The :attribute must not have more than :value items.',
+ ],
+ 'max' => [
+ 'numeric' => 'שדה :attribute אינו יכול להיות גדול מ-:max.',
+ 'file' => 'שדה :attribute לא יכול להיות גדול מ-:max קילובייטים.',
+ 'string' => 'שדה :attribute לא יכול להיות גדול מ-:max characters.',
+ 'array' => 'שדה :attribute לא יכול להכיל יותר מ-:max פריטים.',
+ ],
+ 'mimes' => 'שדה :attribute צריך להיות קובץ מסוג: :values.',
+ 'min' => [
+ 'numeric' => 'שדה :attribute חייב להיות לפחות :min.',
+ 'file' => 'שדה :attribute חייב להיות לפחות :min קילובייטים.',
+ 'string' => 'שדה :attribute חייב להיות לפחות :min תווים.',
+ 'array' => 'שדה :attribute חייב להיות לפחות :min פריטים.',
+ ],
+ 'not_in' => 'בחירת ה-:attribute אינה תקפה.',
+ 'not_regex' => 'The :attribute format is invalid.',
+ 'numeric' => 'שדה :attribute חייב להיות מספר.',
+ 'regex' => 'שדה :attribute בעל פורמט שאינו תקין.',
+ 'required' => 'שדה :attribute הוא חובה.',
+ 'required_if' => 'שדה :attribute נחוץ כאשר :other הוא :value.',
+ 'required_with' => 'שדה :attribute נחוץ כאשר :values נמצא.',
+ 'required_with_all' => 'שדה :attribute נחוץ כאשר :values נמצא.',
+ 'required_without' => 'שדה :attribute נחוץ כאשר :values לא בנמצא.',
+ 'required_without_all' => 'שדה :attribute נחוץ כאשר אף אחד מ-:values נמצאים.',
+ 'same' => 'שדה :attribute ו-:other חייבים להיות זהים.',
+ 'safe_url' => 'The provided link may not be safe.',
+ 'size' => [
+ 'numeric' => 'שדה :attribute חייב להיות :size.',
+ 'file' => 'שדה :attribute חייב להיות :size קילובייטים.',
+ 'string' => 'שדה :attribute חייב להיות :size תווים.',
+ 'array' => 'שדה :attribute חייב להכיל :size פריטים.',
+ ],
+ 'string' => 'שדה :attribute חייב להיות מחרוזת.',
+ 'timezone' => 'שדה :attribute חייב להיות איזור תקני.',
+ 'totp' => 'The provided code is not valid or has expired.',
+ 'unique' => 'שדה :attribute כבר תפוס.',
+ 'url' => 'שדה :attribute בעל פורמט שאינו תקין.',
+ 'uploaded' => 'שדה :attribute ארעה שגיאה בעת ההעלאה.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'נדרש אימות סיסמא',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/hr/activities.php b/lang/hr/activities.php
new file mode 100644
index 00000000000..bf79f9ab14a
--- /dev/null
+++ b/lang/hr/activities.php
@@ -0,0 +1,140 @@
+ 'kreirana stranica',
+ 'page_create_notification' => 'Stranica uspješno kreirana',
+ 'page_update' => 'ažurirana stranica',
+ 'page_update_notification' => 'Stranica 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',
+ 'page_move_notification' => 'Stranica je uspješno premještene',
+
+ // 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',
+ 'chapter_move_notification' => 'Poglavlje je uspješno premješteno',
+
+ // Books
+ 'book_create' => 'stvorena knjiga',
+ 'book_create_notification' => 'Knjiga je uspješno stvorena',
+ 'book_create_from_chapter' => 'pretvori poglavlje u knjigu',
+ 'book_create_from_chapter_notification' => 'Poglavlje je uspješno pretvoreno u knjigu',
+ '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' => 'kreirana polica',
+ 'bookshelf_create_notification' => 'Polica uspješno kreirana',
+ 'bookshelf_create_from_book' => 'pretvorena knjiga u policu',
+ 'bookshelf_create_from_book_notification' => 'Poglavlje je uspješno pretvoreno u knjigu',
+ 'bookshelf_update' => 'ažurirana polica',
+ 'bookshelf_update_notification' => 'Polica je uspješno ažurirana',
+ 'bookshelf_delete' => 'izbrisana polica',
+ 'bookshelf_delete_notification' => 'Polica je uspješno izbrisana',
+
+ // Revisions
+ 'revision_restore' => 'obnovljena revizija',
+ 'revision_delete' => 'izbrisana revizija',
+ 'revision_delete_notification' => 'Revizija uspješno obrisana',
+
+ // Favourites
+ 'favourite_add_notification' => '".ime" će biti dodano u tvoje favorite',
+ 'favourite_remove_notification' => '".ime" je uspješno maknuta iz tvojih favorita',
+
+ // Watching
+ 'watch_update_level_notification' => 'Postavke gledanja uspješno ažurirane',
+
+ // Auth
+ 'auth_login' => 'prijavljen',
+ 'auth_register' => 'registriran kao novi korisnik',
+ 'auth_password_reset_request' => 'zahtjev za resetiranje korisničke lozinke',
+ 'auth_password_reset_update' => 'resetiraj korisničku lozinku',
+ 'mfa_setup_method' => 'konfiguriran MFA način',
+ 'mfa_setup_method_notification' => 'Metoda više-čimbenika je uspješno konfigurirana',
+ 'mfa_remove_method' => 'uklonjen MFA način',
+ 'mfa_remove_method_notification' => 'Metoda više-čimbenika je uspješno izbrisana',
+
+ // Settings
+ 'settings_update' => 'ažurirane postavke',
+ 'settings_update_notification' => 'Postavke uspješno ažurirane',
+ 'maintenance_action_run' => 'izvršena akcija održavanja',
+
+ // Webhooks
+ 'webhook_create' => 'web-dojavnik je kreiran',
+ 'webhook_create_notification' => 'Web-dojavnik je uspješno kreiran',
+ 'webhook_update' => 'web-dojavnik je ažuriran',
+ 'webhook_update_notification' => 'Web- dojavnik je uspješno ažuriran',
+ 'webhook_delete' => 'web- dojavnik izbrisan',
+ 'webhook_delete_notification' => 'Web-dojavnik je uspješno izbrisan',
+
+ // Imports
+ 'import_create' => 'created import',
+ 'import_create_notification' => 'Import successfully uploaded',
+ 'import_run' => 'updated import',
+ 'import_run_notification' => 'Content successfully imported',
+ 'import_delete' => 'deleted import',
+ 'import_delete_notification' => 'Import successfully deleted',
+
+ // Users
+ 'user_create' => 'kreirani korisnik',
+ 'user_create_notification' => 'Korisnik je uspješno kreiran',
+ 'user_update' => 'ažurirani korisnik',
+ 'user_update_notification' => 'Korisnik je uspješno ažuriran',
+ 'user_delete' => 'izbrisani korisnik',
+ 'user_delete_notification' => 'Korisnik je uspješno uklonjen',
+
+ // API Tokens
+ 'api_token_create' => 'created API token',
+ 'api_token_create_notification' => 'API token uspješno kreiran',
+ 'api_token_update' => 'updated API token',
+ 'api_token_update_notification' => 'API token uspješno ažuriran',
+ 'api_token_delete' => 'deleted API token',
+ 'api_token_delete_notification' => 'API token uspješno izbrisan',
+
+ // Roles
+ 'role_create' => 'kreirana uloga',
+ 'role_create_notification' => 'Uloga uspješno stvorena',
+ 'role_update' => 'ažurirana uloga',
+ 'role_update_notification' => 'Uloga uspješno ažurirana',
+ 'role_delete' => 'izbrisana uloga',
+ 'role_delete_notification' => 'Uloga je uspješno izbrisana',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'koš za smeće ispražnjen',
+ 'recycle_bin_restore' => 'reciklirano iz koša za smeće',
+ 'recycle_bin_destroy' => 'uklonjeno iz koša za smeće',
+
+ // Comments
+ 'commented_on' => 'komentirano',
+ 'comment_create' => 'dodani komentar',
+ 'comment_update' => 'ažurirani komentar',
+ 'comment_delete' => 'obrisani komentar',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'ažurirana dopuštenja',
+];
diff --git a/lang/hr/auth.php b/lang/hr/auth.php
new file mode 100644
index 00000000000..bef07edcdaf
--- /dev/null
+++ b/lang/hr/auth.php
@@ -0,0 +1,117 @@
+ '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' => 'E-pošta',
+ 'password' => 'Lozinka',
+ 'password_confirm' => 'Potvrdite lozinku',
+ 'password_hint' => 'Mora biti najmanje 8 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' => 'Mrežna Prijava',
+ 'social_registration' => 'Mrežna Registracija',
+ '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.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Pokušaj Prijave',
+ 'auto_init_starting_desc' => 'Kontaktiramo vaš sustav za autentifikaciju kako bismo započeli postupak prijave. Ako ne postoji napredak nakon 5 sekundi, možete pokušati kliknuti donju poveznicu.',
+ 'auto_init_start_link' => 'Nastavite s autentifikacijom',
+
+ // 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ša e-pošta je potvrđena! Sada biste se trebali moći prijaviti koristeći danu e-poštu.',
+ 'email_confirm_resent' => 'Ponovno je poslana potvrda. Molimo, provjerite svoj inbox.',
+ 'email_confirm_thanks' => 'Zahvaljujemo na potvrdi!',
+ 'email_confirm_thanks_desc' => 'Molimo pričekajte trenutak dok se obrađuje vaša potvrda. Ako ne budete preusmjereni nakon 3 sekunde, pritisnite "Nastavi" poveznicu ispod kako biste nastavili.',
+
+ '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_login' => 'Lozinka je postavljena, sada biste se trebali moći prijaviti koristeći postavljenu lozinku kako biste pristupili aplikaciji :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Postavite Višestruku Autentifikaciju',
+ 'mfa_setup_desc' => 'Postavite višestruku provjeru autentičnosti kao dodatni sloj sigurnosti za svoj korisnički račun.',
+ 'mfa_setup_configured' => 'Već postavljeno',
+ 'mfa_setup_reconfigure' => 'Ponovno postavite',
+ 'mfa_setup_remove_confirmation' => 'Jeste li sigurni da želite ukloniti ovu metodu višestruke provjere autentičnosti?',
+ 'mfa_setup_action' => 'Postavke',
+ 'mfa_backup_codes_usage_limit_warning' => 'Imate manje od 5 preostalih rezervnih kodova. Molimo generirajte i pohranite novi set prije nego što vam kodovi ponestanu kako biste izbjegli blokadu pristupa vašem računu.',
+ 'mfa_option_totp_title' => 'Mobilna Aplikacija',
+ 'mfa_option_totp_desc' => 'Da biste koristili višestruku provjeru autentičnosti, trebat će vam mobilna aplikacija koja podržava TOTP (Time-Based One-Time Password) kao što su Google Authenticator, Authy ili Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Rezervni Kodovi',
+ 'mfa_option_backup_codes_desc' => 'Generates a set of one-time-use backup codes which you\'ll enter on login to verify your identity. Make sure to store these in a safe & secure place.',
+ 'mfa_gen_confirm_and_enable' => 'Potvrdi i Omogući',
+ 'mfa_gen_backup_codes_title' => 'Postavke Rezervnih Kodova',
+ 'mfa_gen_backup_codes_desc' => 'Spremite sljedeći popis kodova na sigurno mjesto. Prilikom pristupa sustavu, moći ćete koristiti jedan od ovih kodova kao drugi mehanizam autentifikacije.',
+ 'mfa_gen_backup_codes_download' => 'Preuzmi Kodove',
+ 'mfa_gen_backup_codes_usage_warning' => 'Pojedinačni kod se može koristiti samo jednom',
+ 'mfa_gen_totp_title' => 'Postavka Mobilne Aplikacije',
+ 'mfa_gen_totp_desc' => 'Da biste koristili višestruku provjeru autentičnosti, trebat će vam mobilna aplikacija koja podržava TOTP (Time-Based One-Time Password) kao što su Google Authenticator, Authy ili Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Skenirajte QR kod u nastavku koristeći svoju preferiranu aplikaciju za autentifikaciju kako biste započeli.',
+ 'mfa_gen_totp_verify_setup' => 'Potvrdite Postavke',
+ 'mfa_gen_totp_verify_setup_desc' => 'Potvrdite da sve radi unosom koda koji je generiran unutar vaše aplikacije za autentifikaciju u donje polje za unos:',
+ 'mfa_gen_totp_provide_code_here' => 'Dostavite generirani kod ovdje',
+ 'mfa_verify_access' => 'Potvrdite Pristup',
+ 'mfa_verify_access_desc' => 'Vaš korisnički račun zahtijeva potvrdu vašeg identiteta putem dodatne razine provjere prije nego vam se omogući pristup. Molimo potvrdite korištenjem jedne od konfiguriranih metoda kako biste nastavili.',
+ 'mfa_verify_no_methods' => 'Nema Postavljenih Metoda',
+ 'mfa_verify_no_methods_desc' => 'Nisu pronađene metode višestruke provjere autentičnosti za vaš korisnički račun. Morat ćete postaviti barem jednu metodu prije nego dobijete pristup.',
+ 'mfa_verify_use_totp' => 'Potvrda korištenjem mobilne aplikacije',
+ 'mfa_verify_use_backup_codes' => 'Potvrda korištenjem rezervnog koda',
+ 'mfa_verify_backup_code' => 'Rezervni Kod',
+ 'mfa_verify_backup_code_desc' => 'Unesite jedan od preostalih rezervnih kodova u nastavku:',
+ 'mfa_verify_backup_code_enter_here' => 'Ovdje unesite rezervni kod',
+ 'mfa_verify_totp_desc' => 'Unesite kod generiran pomoću vaše mobilne aplikacije u nastavku:',
+ 'mfa_setup_login_notification' => 'Višestruka metoda autentifikacije konfigurirana. Molimo prijavite se ponovno koristeći konfiguriranu metodu.',
+];
diff --git a/lang/hr/common.php b/lang/hr/common.php
new file mode 100644
index 00000000000..7cd779593bf
--- /dev/null
+++ b/lang/hr/common.php
@@ -0,0 +1,115 @@
+ 'Odustani',
+ 'close' => 'Zatvori',
+ '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' => 'This image should be approximately 440x250px although it will be flexibly scaled & cropped to fit the user interface in different scenarios as required, so actual dimensions for display will differ.',
+
+ // Actions
+ 'actions' => 'Aktivnost',
+ 'view' => 'Pogled',
+ 'view_all' => 'Pogledaj sve',
+ 'new' => 'Novi',
+ 'create' => 'Stvori',
+ 'update' => 'Ažuriraj',
+ 'edit' => 'Uredi',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ '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',
+ 'configure' => 'Konfiguriraj',
+ 'manage' => 'Upravljaj',
+ 'fullscreen' => 'Cijeli zaslon',
+ 'favourite' => 'Favorit',
+ 'unfavourite' => 'Ukloni iz favorita',
+ 'next' => 'Dalje',
+ 'previous' => 'Prethodno',
+ 'filter_active' => 'Aktivni Filter:',
+ 'filter_clear' => 'Poništi Filter',
+ 'download' => 'Preuzmi',
+ 'open_in_tab' => 'Otvori u Kartici',
+ 'open' => 'Open',
+
+ // 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' => 'Datum Ažuriranja',
+
+ // Misc
+ 'deleted_user' => 'Izbrisani korisnik',
+ 'no_activity' => 'Nema aktivnosti za pregled',
+ 'no_items' => 'Nedostupno',
+ 'back_to_top' => 'Natrag na vrh',
+ 'skip_to_main_content' => 'Preskoči na glavni sadržaj',
+ 'toggle_details' => 'Prebaci detalje',
+ 'toggle_thumbnails' => 'Uključi minijature',
+ 'details' => 'Detalji',
+ 'grid_view' => 'Prikaz rešetke',
+ 'list_view' => 'Prikaz popisa',
+ 'default' => 'Zadano',
+ 'breadcrumb' => 'Putokaz',
+ 'status' => 'Status',
+ 'status_active' => 'Aktivno',
+ 'status_inactive' => 'Neaktivno',
+ 'never' => 'Nikada',
+ 'none' => 'Ništa',
+
+ // Header
+ 'homepage' => 'Naslovna Stranica',
+ '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',
+ 'global_search' => 'Globalno Pretraživanje',
+
+ // 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',
+
+ // OpenSearch
+ 'opensearch_description' => 'Search :appName',
+];
diff --git a/lang/hr/components.php b/lang/hr/components.php
new file mode 100644
index 00000000000..0ad59fdc2a6
--- /dev/null
+++ b/lang/hr/components.php
@@ -0,0 +1,46 @@
+ 'Odabir slike',
+ 'image_list' => 'Popis Slika',
+ 'image_details' => 'Detalji Slike',
+ 'image_upload' => 'Učitaj Sliku',
+ 'image_intro' => 'Ovdje možete odabrati i upravljati slikama koje su prethodno prenesene u sustav.',
+ 'image_intro_upload' => 'Prenesite novu sliku povlačenjem slikovne datoteke u ovaj prozor ili koristite gumb "Učitaj sliku" iznad.',
+ '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_uploaded_by' => 'Učitao/la :userName',
+ 'image_uploaded_to' => 'Učitano na :pageLink',
+ 'image_updated' => 'Ažurirano: :updateDate',
+ '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',
+ 'image_dropzone_drop' => 'Ovdje spustite slike za učitavanje',
+ '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_replace' => 'Zamijeni Sliku',
+ 'image_replace_success' => 'Datiteka slike je uspješno ažurirana',
+ 'image_rebuild_thumbs' => 'Regenerate Size Variations',
+ 'image_rebuild_thumbs_success' => 'Image size variations successfully rebuilt!',
+
+ // 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/lang/hr/editor.php b/lang/hr/editor.php
new file mode 100644
index 00000000000..4ac9083188f
--- /dev/null
+++ b/lang/hr/editor.php
@@ -0,0 +1,182 @@
+ 'Općenito',
+ 'advanced' => 'Napredno',
+ 'none' => 'Ništa',
+ 'cancel' => 'Otkaži',
+ 'save' => 'Spremi',
+ 'close' => 'Zatvori',
+ 'apply' => 'Apply',
+ 'undo' => 'Poništi',
+ 'redo' => 'Ponovi',
+ 'left' => 'Lijevo',
+ 'center' => 'Centar',
+ 'right' => 'Desno',
+ 'top' => 'Vrh',
+ 'middle' => 'Sredina',
+ 'bottom' => 'Dno',
+ 'width' => 'Širina',
+ 'height' => 'Visina',
+ 'More' => 'Više',
+ 'select' => 'Odaberi...',
+
+ // Toolbar
+ 'formats' => 'Formati',
+ 'header_large' => 'Veliki Naslov',
+ 'header_medium' => 'Srednji Naslov',
+ 'header_small' => 'Mali Naslov',
+ 'header_tiny' => 'Malecki Naslov',
+ 'paragraph' => 'Odlomak',
+ 'blockquote' => 'Blok citat',
+ 'inline_code' => 'Ugrađeni Kod',
+ 'callouts' => 'Zabilješke',
+ 'callout_information' => 'Informacija',
+ 'callout_success' => 'Uspjeh',
+ 'callout_warning' => 'Upozorenje',
+ 'callout_danger' => 'Opasnost',
+ 'bold' => 'Podebljano',
+ 'italic' => 'Kurziv',
+ 'underline' => 'Podcrtano',
+ 'strikethrough' => 'Precrtano',
+ 'superscript' => 'Gornji indeks',
+ 'subscript' => 'Donji indeks',
+ 'text_color' => 'Boja teksta',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Prilagođena boja',
+ 'remove_color' => 'Ukloni boju',
+ 'background_color' => 'Boja pozadine',
+ 'align_left' => 'Poravnaj lijevo',
+ 'align_center' => 'Poravnaj po sredini',
+ 'align_right' => 'Poravnaj desno',
+ 'align_justify' => 'Poravnaj obostrano',
+ 'list_bullet' => 'Popis s točkama',
+ 'list_numbered' => 'Numerirani popis',
+ 'list_task' => 'Lista zadataka',
+ 'indent_increase' => 'Povećaj uvlaku',
+ 'indent_decrease' => 'Smanji uvlaku',
+ 'table' => 'Tablica',
+ 'insert_image' => 'Umetni sliku',
+ 'insert_image_title' => 'Umetni/Editiraj sliku',
+ 'insert_link' => 'Umetni/editiraj poveznicu',
+ 'insert_link_title' => 'Umetni/Editiraj poveznicu',
+ 'insert_horizontal_line' => 'Ubaci vodoravnu liniju',
+ 'insert_code_block' => 'Ubacivanje kodnog bloka',
+ 'edit_code_block' => 'Editiraj kodni blok',
+ 'insert_drawing' => 'Umetni/editiraj crtež',
+ 'drawing_manager' => 'Upravitelj crteža',
+ 'insert_media' => 'Umetni/editiraj medij',
+ 'insert_media_title' => 'Umetni/Editiraj medij',
+ 'clear_formatting' => 'Očisti sva oblikovanja',
+ 'source_code' => 'Izvorni kod',
+ 'source_code_title' => 'Izvorni Kod',
+ 'fullscreen' => 'Puni zaslon',
+ 'image_options' => 'Mogućnosti slike',
+
+ // Tables
+ 'table_properties' => 'Svojstva tablice',
+ 'table_properties_title' => 'Svojstva Tablice',
+ 'delete_table' => 'Obriši tablicu',
+ 'table_clear_formatting' => 'Clear table formatting',
+ 'resize_to_contents' => 'Resize to contents',
+ 'row_header' => 'Row header',
+ 'insert_row_before' => 'Umetni redak prije',
+ 'insert_row_after' => 'Umetni redak poslije',
+ 'delete_row' => 'Izbriši red',
+ 'insert_column_before' => 'Umetni stupac prije',
+ 'insert_column_after' => 'Umetni stupac poslije',
+ 'delete_column' => 'Izbriši stupac',
+ 'table_cell' => 'Ćelija',
+ 'table_row' => 'Red',
+ 'table_column' => 'Stupac',
+ 'cell_properties' => 'Svojstava ćelija',
+ 'cell_properties_title' => 'Svojstava Ćelija',
+ 'cell_type' => 'Vrsta Ćelije',
+ 'cell_type_cell' => 'Ćelija',
+ 'cell_scope' => 'Obuhvat',
+ 'cell_type_header' => 'Naslovna Ćelija',
+ 'merge_cells' => 'Spoji ćelije',
+ 'split_cell' => 'Razdvoji ćelije',
+ 'table_row_group' => 'Grupa Redaka',
+ 'table_column_group' => 'Grupa Stupaca',
+ 'horizontal_align' => 'Vodoravno poravnanje',
+ 'vertical_align' => 'Uspravno poravnanje',
+ 'border_width' => 'Širina obruba',
+ 'border_style' => 'Stil obruba',
+ 'border_color' => 'Boja obruba',
+ 'row_properties' => 'Svojstava redaka',
+ 'row_properties_title' => 'Svojstava Redaka',
+ 'cut_row' => 'Izreži redak',
+ 'copy_row' => 'Kopiraj redak',
+ 'paste_row_before' => 'Zalijepi redak prije',
+ 'paste_row_after' => 'Zalijepi redak nakon',
+ 'row_type' => 'Vrsta redka',
+ 'row_type_header' => 'Zaglavlje',
+ 'row_type_body' => 'Tijelo',
+ 'row_type_footer' => 'Podnožje',
+ 'alignment' => 'Poravnanje',
+ 'cut_column' => 'Izreži stupac',
+ 'copy_column' => 'Kopiraj stupac',
+ 'paste_column_before' => 'Zalijepi stupac prije',
+ 'paste_column_after' => 'Zalijepi stupac poslije',
+ 'cell_padding' => 'Unutarnji razmak ćelije',
+ 'cell_spacing' => 'Razmak između ćelija',
+ 'caption' => 'Natpis',
+ 'show_caption' => 'Prikaži natpis',
+ 'constrain' => 'Ograniči proporcije',
+ 'cell_border_solid' => 'Puno',
+ 'cell_border_dotted' => 'Točkasto',
+ 'cell_border_dashed' => 'Isprekidano',
+ 'cell_border_double' => 'Dvostruko',
+ 'cell_border_groove' => 'Ponavljajući uzorak',
+ 'cell_border_ridge' => 'Rub',
+ 'cell_border_inset' => 'Unutarnji rub',
+ 'cell_border_outset' => 'Vanjski rub',
+ 'cell_border_none' => 'Ništa',
+ 'cell_border_hidden' => 'Skriveno',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Izvor',
+ 'alt_desc' => 'Alternativni opis',
+ 'embed' => 'Umetnuto',
+ 'paste_embed' => 'Zalijepite svoj ugrađeni kod u nastavku:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Tekst za prikaz',
+ 'title' => 'Naslov',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Otvori poveznicu',
+ 'open_link_in' => 'Otvori poveznicu u...',
+ 'open_link_current' => 'Trenutni prozor',
+ 'open_link_new' => 'Novi prozor',
+ 'remove_link' => 'Ukloni poveznicu',
+ 'insert_collapsible' => 'Umetni skupljajući blok',
+ 'collapsible_unwrap' => 'Odmotaj',
+ 'edit_label' => 'Izmjeni oznaku',
+ 'toggle_open_closed' => 'Promijeni otvoreno/zatvoreno',
+ 'collapsible_edit' => 'Izmjeni skupljajući blok',
+ 'toggle_label' => 'Promijeni oznaku',
+
+ // About view
+ 'about' => 'O Editoru',
+ 'about_title' => 'O WYSIWYG Editoru',
+ 'editor_license' => 'Licenca i autorsko pravo uređivača',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'Ovaj uređivač je izrađen pomoću: tinyLink koji je dostupan pod MIT licencom.',
+ 'editor_tiny_license_link' => 'Detalji o autorskim pravima i licenci za TinyMCE mogu se pronaći ovdje.',
+ 'save_continue' => 'Spremi Stranicu i Nastavi',
+ 'callouts_cycle' => '(Nastavite pritiskati kako biste prelazili kroz vrste)',
+ 'link_selector' => 'Poveznica na sadržaj',
+ 'shortcuts' => 'Prečaci',
+ 'shortcut' => 'Prečac',
+ 'shortcuts_intro' => 'Sljedeći prečaci su dostupni u uređivaču:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Opis',
+];
diff --git a/lang/hr/entities.php b/lang/hr/entities.php
new file mode 100644
index 00000000000..99df50ea33c
--- /dev/null
+++ b/lang/hr/entities.php
@@ -0,0 +1,476 @@
+ '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',
+ 'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
+ 'entity_select' => 'Odaberi subjekt',
+ 'entity_select_lack_permission' => 'Nemate potrebne ovlasti za odabir ovog elementa',
+ 'images' => 'Slike',
+ 'my_recent_drafts' => 'Nedavne skice',
+ 'my_recently_viewed' => 'Nedavno viđeno',
+ 'my_most_viewed_favourites' => 'Moji Najviše Pregledani Favoriti',
+ 'my_favourites' => 'Moji Favoriti',
+ '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 Datoteka',
+ 'export_text' => 'Text File',
+ 'export_md' => 'Markdown Datoteka',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Dopuštenja',
+ 'permissions_desc' => 'Postavi dozvole ovdje kako bi prebrisao zadane dozvole koje su dodeljene korisničkim ulogama.',
+ 'permissions_book_cascade' => 'Dozvole postavljene na knjige će se automatski prenositi na podređena poglavlja i stranice, osim ako imaju definirane posebne dozvole.',
+ 'permissions_chapter_cascade' => 'Dozvole postavljene na poglavlja će se automatski prenositi na podređene stranice, osim ako imaju definirane posebne dozvole.',
+ 'permissions_save' => 'Spremi dopuštenje',
+ 'permissions_owner' => 'Vlasnik',
+ 'permissions_role_everyone_else' => 'Svi Ostali',
+ 'permissions_role_everyone_else_desc' => 'Postavi dozvole za sve uloge koje nisu posebno prebrisane.',
+ 'permissions_role_override' => 'Prebriši dozvole za ulogu',
+ 'permissions_inherit_defaults' => 'Naslijedi zadane postavke',
+
+ // 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_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' => 'Povucite knjige ispod kako biste ih dodali 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' => "Ovo će izbrisati policu pod nazivom \":name\". Knjige koje se nalaze na polici neće biti izbrisane.",
+ 'shelves_delete_confirmation' => 'Jeste li sigurni da želite obrisati policu?',
+ 'shelves_permissions' => 'Dozvole za policu',
+ 'shelves_permissions_updated' => 'Ažurirana dopuštenja za Policu',
+ 'shelves_permissions_active' => 'Aktivna Dopuštenja za Policu',
+ 'shelves_permissions_cascade_warning' => 'Dozvole na policama se automatski ne prenose na knjige koje se nalaze na njima. To je zato što se jedna knjiga može nalaziti na više polica. Međutim, dozvole se mogu kopirati na podređene knjige koristeći opciju koja se nalazi ispod.',
+ 'shelves_permissions_create' => 'Dozvole za stvaranje police koriste se samo za kopiranje dozvola na podređene knjige pomoću radnje u nastavku. Ne kontroliraju sposobnost stvaranja knjiga.',
+ 'shelves_copy_permissions_to_books' => 'Kopiraj dopuštenja za knjige',
+ 'shelves_copy_permissions' => 'Kopiraj dopuštenja',
+ 'shelves_copy_permissions_explain' => 'Ovo će primijeniti trenutne postavke dozvola ove police na sve knjige koje se nalaze na njoj. Prije aktiviranja, provjerite jeste li spremili sve promjene dozvola na ovoj polici.',
+ 'shelves_copy_permission_success' => 'Dozvole s police kopirane su na :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_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ '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',
+ 'books_sort_show_other_desc' => 'Dodajte druge knjige ovdje kako biste ih uključili u sortiranje i omogućili jednostavno premeštanje između knjiga.',
+ 'books_sort_move_up' => 'Pomakni gore',
+ 'books_sort_move_down' => 'Pomakni dolje',
+ 'books_sort_move_prev_book' => 'Pomakni na Prethodnu Knjigu',
+ 'books_sort_move_next_book' => 'Pomakni na Slijedeću Knjigu',
+ 'books_sort_move_prev_chapter' => 'Pomakni na Prethodno Poglavlje',
+ 'books_sort_move_next_chapter' => 'Pomakni na Slijedeće Poglavlje',
+ 'books_sort_move_book_start' => 'Pomakni na Početak Knjige',
+ 'books_sort_move_book_end' => 'Pomakni na Kraj Knjige',
+ 'books_sort_move_before_chapter' => 'Pomakni Prije Poglavlja',
+ 'books_sort_move_after_chapter' => 'Pomakni Nakon Poglavlja',
+ 'books_copy' => 'Kopiraj Knjigu',
+ 'books_copy_success' => 'Knjiga je uspješno kopirana',
+
+ // 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',
+ 'chapters_copy' => 'Kopiraj Poglavlje',
+ 'chapters_copy_success' => 'Poglavlje je uspješno kopirano',
+ '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',
+ 'chapter_sort_book' => 'Sortiraj knjigu',
+
+ // 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_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ '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_delete_draft_confirm' => 'Jeste li sigurni da želite izbrisati promjene na stranici koje niste spremljene? Sve promjene koje ste napravili od posljednjeg potpunog spremanja bit će izgubljene, a uređivač će biti ažuriran s najnovijim spremljenim stanjem stranice.',
+ 'pages_edit_discard_draft' => 'Odbaci nacrt',
+ 'pages_edit_switch_to_markdown' => 'Prebacite se na Markdown uređivač',
+ 'pages_edit_switch_to_markdown_clean' => '(Čisti Sadržaj)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stabilan Sadržaj)',
+ 'pages_edit_switch_to_wysiwyg' => 'Prebaci se na WYSIWYG uređivač',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ '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_editor_switch_title' => 'Promijeni Uređivač',
+ 'pages_editor_switch_are_you_sure' => 'Jeste li sigurni da želite promijeniti uređivač za ovu stranicu?',
+ 'pages_editor_switch_consider_following' => 'Kada mijenjate uređivače, uzmite u obzir sljedeće faktore:',
+ 'pages_editor_switch_consideration_a' => 'Nakon što se spremi, nova opcija uređivača bit će korištena od strane svih budućih urednika, uključujući one koji možda neće moći sami promijeniti vrstu uređivača.',
+ 'pages_editor_switch_consideration_b' => 'To može potencijalno dovesti do gubitka detalja i sintakse u određenim situacijama.',
+ 'pages_editor_switch_consideration_c' => 'Promjene oznaka ili dnevnika promjena napravljene nakon posljednjeg spremanja neće se zadržati nakon ove promjene.',
+ '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_md_show_preview' => 'Prikaži pregled',
+ 'pages_md_sync_scroll' => 'Sinkroniziraj pomicanje pregleda',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Pronađen je Nespremljen Crtež',
+ 'pages_drawing_unsaved_confirm' => 'Pronađeni su nespremljeni podaci crteža iz prethodnog neuspjelog pokušaja spremanja crteža. Želite li obnoviti i nastaviti uređivati ovaj nespremljeni crtež?',
+ 'pages_not_in_chapter' => 'Stranica nije u poglavlju',
+ 'pages_move' => 'Premjesti stranicu',
+ '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_desc' => 'Ispod su navedene sve prošle revizije ove stranice. Možete pregledati, usporediti i obnoviti stare verzije stranice ako dozvole to omogućuju. Cjelokupna povijest stranice možda nije potpuno prikazana ovdje, budući da, ovisno o konfiguraciji sustava, stare revizije mogu biti automatski izbrisane.',
+ '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_sort_number' => 'Broj revizije',
+ 'pages_revisions_numbered' => 'Revizija #:id',
+ 'pages_revisions_numbered_changes' => 'Revizija #:id Promjene',
+ 'pages_revisions_editor' => 'Vrsta uređivača',
+ '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' => 'Skoči na odjeljak u uređivaču',
+ 'pages_pointer_enter_mode' => 'Uđi u način odabira odjeljaka',
+ 'pages_pointer_label' => 'Opcije odjeljka stranice',
+ 'pages_pointer_permalink' => 'Permalink Odjeljka Stranice',
+ 'pages_pointer_include_tag' => 'Uključi oznaku odjeljka stranice',
+ 'pages_pointer_toggle_link' => 'Način permalinka, pritisnite za prikaz oznake uključivanja (include tag)',
+ 'pages_pointer_toggle_include' => 'Način oznake uključivanja, Pritisnite za prikaz permalinka',
+ 'pages_permissions_active' => 'Aktivna dopuštenja stranice',
+ 'pages_initial_revision' => 'Početno objavljivanje',
+ 'pages_references_update_revision' => 'Automatsko ažuriranje internih veza sustava',
+ '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_page_changed_since_creation' => 'Ova stranica je ažurirana nakon što je ovaj nacrt stvoren. Preporučuje se da odbacite ovaj nacrt ili budite oprezni da ne prepišete nikakve promjene na stranici.',
+ '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 odbačen! Uređivač je ažuriran s trenutnim sadržajem stranice',
+ 'pages_draft_deleted' => 'Nacrt je izbrisan! Uređivač je ažuriran s trenutnim sadržajem stranice',
+ 'pages_specific' => 'Predlošci stranice',
+ 'pages_is_template' => 'Predložak stranice',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'Oznake stranice',
+ 'chapter_tags' => 'Oznake poglavlja',
+ 'book_tags' => 'Oznake knjiga',
+ 'shelf_tags' => 'Oznake polica',
+ 'tag' => 'Oznaka',
+ 'tags' => 'Oznake',
+ 'tags_index_desc' => 'Oznake se mogu primijeniti na sadržaj unutar sustava kako bi se primijenila fleksibilna forma kategorizacije. Oznake mogu imati ključ i vrijednost, pri čemu je vrijednost opcionalna. Nakon primjene, sadržaj se može pretraživati koristeći ime oznake i vrijednost.',
+ 'tag_name' => 'Naziv Oznake',
+ 'tag_value' => 'Oznaka vrijednosti (neobavezno)',
+ 'tags_explain' => "Dodajte neke oznake kako biste bolje kategorizirali svoj sadržaj. \n Možete dodijeliti vrijednost oznaci za organizaciju s više detalja.",
+ 'tags_add' => 'Dodaj oznaku',
+ 'tags_remove' => 'Makni oznaku',
+ 'tags_usages' => 'Ukupna upotreba oznaka',
+ 'tags_assigned_pages' => 'Dodijeljeno Stranicama',
+ 'tags_assigned_chapters' => 'Dodijeljeno Poglavljima',
+ 'tags_assigned_books' => 'Dodijeljeno Knjigama',
+ 'tags_assigned_shelves' => 'Dodijeljeno Policama',
+ 'tags_x_unique_values' => ':count jedinstvenih vrijednosti',
+ 'tags_all_values' => 'Sve vrijednosti',
+ 'tags_view_tags' => 'Pregledaj Oznake',
+ 'tags_view_existing_tags' => 'Pregledaj postojeće oznake',
+ 'tags_list_empty_hint' => 'Oznake se mogu dodijeliti putem bočne trake uređivača stranice ili prilikom uređivanja detalja knjige, poglavlja ili police.',
+ '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_upload' => 'Dodaj datoteku',
+ 'attachments_link' => 'Dodaj poveznicu',
+ 'attachments_upload_drop' => 'Alternativno, možete povući i ispustiti datoteku ovdje kako biste je pričvrstili.',
+ 'attachments_set_link' => 'Postavi poveznicu',
+ 'attachments_delete' => 'Jeste li sigurni da želite izbrisati ovu stavku?',
+ 'attachments_dropzone' => 'Ovdje spustite datoteke za učitavanje',
+ '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_none' => 'No comments to display',
+ 'comment_placeholder' => 'Komentar ostavi ovdje',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Spremi komentar',
+ 'comment_new' => 'Novi komentar',
+ 'comment_created' => 'komentirano :createDiff',
+ 'comment_updated' => 'Ažurirano :updateDiff od :username',
+ 'comment_updated_indicator' => 'Ažurirano',
+ 'comment_deleted_success' => 'Izbrisani komentar',
+ 'comment_created_success' => 'Dodani komentar',
+ 'comment_updated_success' => 'Ažurirani komentar',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Jeste li sigurni da želite izbrisati ovaj komentar?',
+ 'comment_in_reply_to' => 'Odgovor na :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Evo komentara koji su ostavljeni na ovoj stranici. Komentari se mogu dodavati i upravljati prilikom pregleda spremljene stranice.',
+
+ // 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_cannot_delete_latest' => 'Posljednji ispravak se ne može izbrisati.',
+
+ // Copy view
+ 'copy_consider' => 'Molimo vas da uzmete u obzir sljedeće prilikom kopiranja sadržaja.',
+ 'copy_consider_permissions' => 'Prilagođene postavke dozvola neće biti kopirane.',
+ 'copy_consider_owner' => 'Postat ćete vlasnikom svih kopiranih sadržaja.',
+ 'copy_consider_images' => 'Slikovne datoteke stranice neće biti duplicirane, a originalne slike će zadržati svoj odnos prema stranici na koju su prvobitno prenesene.',
+ 'copy_consider_attachments' => 'Privici stranice neće biti kopirani.',
+ 'copy_consider_access' => 'Promjena lokacije, vlasnika ili dozvola može rezultirati pristupom ovom sadržaju osobama koje ranije nisu imale pristup.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Pretvori u Policu',
+ 'convert_to_shelf_contents_desc' => 'Možete pretvoriti ovu knjigu u novu policu s istim sadržajem. Poglavlja koja se nalaze unutar ove knjige bit će pretvorena u nove knjige. Ako ova knjiga sadrži bilo koje stranice koje nisu u poglavlju, ova knjiga će biti preimenovana i sadržavati takve stranice, a postat će dio nove police.',
+ 'convert_to_shelf_permissions_desc' => 'Sve dozvole postavljene na ovu knjigu bit će kopirane na novu policu i sve nove podređene knjige koje nemaju vlastite dozvole. Napomena: Dozvole na policama se ne prenose automatski na sadržaj unutar njih, kao što je slučaj s knjigama.',
+ 'convert_book' => 'Pretvori u Knjigu',
+ 'convert_book_confirm' => 'Jeste li sigurni da želite pretvoriti ovu knjigu?',
+ 'convert_undo_warning' => 'Ovo se ne može tako lako poništiti.',
+ 'convert_to_book' => 'Pretvori u Knjigu',
+ 'convert_to_book_desc' => 'Možete pretvoriti ovo poglavlje u novu knjigu s istim sadržajem. Sve postavljene dozvole na ovom poglavlju bit će kopirane u novu knjigu, ali nasljedne dozvole iz nadređene knjige neće biti kopirane, što može rezultirati promjenom kontrole pristupa.',
+ 'convert_chapter' => 'Pretvori Poglavlje',
+ 'convert_chapter_confirm' => 'Jeste li sigurni da želite pretvoriti ovo poglavlje?',
+
+ // References
+ 'references' => 'Reference',
+ 'references_none' => 'Nema praćenih referenci na ovu stavku.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Prati',
+ 'watch_title_default' => 'Zadane Postavke',
+ 'watch_desc_default' => 'Vratite praćenje samo na vaše zadane postavke obavijesti.',
+ 'watch_title_ignore' => 'Zanemari',
+ 'watch_desc_ignore' => 'Ignorirajte sve obavijesti, uključujući one iz postavki na razini korisnika.',
+ 'watch_title_new' => 'Nove Stranice',
+ 'watch_desc_new' => 'Obavijesti kada se stvori nova stranica unutar ove stavke.',
+ 'watch_title_updates' => 'Sve Promjene na Stranicama',
+ 'watch_desc_updates' => 'Obavijesti o svim novim stranicama i promjenama na stranicama.',
+ 'watch_desc_updates_page' => 'Obavijesti o svim promjenama na stranicama.',
+ 'watch_title_comments' => 'Sve Promjene na Stranicama i Komentari',
+ 'watch_desc_comments' => 'Obavijesti o svim novim stranicama, promjenama na stranicama i novim komentarima.',
+ 'watch_desc_comments_page' => 'Obavijesti o promjenama na stranicama i novim komentarima.',
+ 'watch_change_default' => 'Promijenite zadane postavke obavijesti',
+ 'watch_detail_ignore' => 'Ignoriranje obavijesti',
+ 'watch_detail_new' => 'Prati nove stranice',
+ 'watch_detail_updates' => 'Prati nove stranice i ažuriranja',
+ 'watch_detail_comments' => 'Prati nove stranice, ažuriranja i komentare',
+ 'watch_detail_parent_book' => 'Prati putem nadređene knjige',
+ 'watch_detail_parent_book_ignore' => 'Ignoriraj putem nadređene knjige',
+ 'watch_detail_parent_chapter' => 'Prati puten nadređenog poglavlja',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoriraj putem nadređenog poglavlja',
+];
diff --git a/lang/hr/errors.php b/lang/hr/errors.php
new file mode 100644
index 00000000000..298fcb81ba2
--- /dev/null
+++ b/lang/hr/errors.php
@@ -0,0 +1,135 @@
+ '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.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ '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_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',
+ 'oidc_already_logged_in' => 'Već ste prijavljeni',
+ 'oidc_no_email_address' => 'Nije moguće pronaći adresu e-pošte za ovog korisnika u podacima koje pruža vanjski sustav za autentifikaciju',
+ 'oidc_fail_authed' => 'Prijavljivanje putem :system nije uspjelo. Sustav nije uspješno odobrio autorizaciju',
+ 'social_no_action_defined' => 'Nije definirana nijedna radnja',
+ 'social_login_bad_response' => "Greška primljena prilikom prijave putem :socialAccount: :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.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // 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.',
+ 'server_post_limit' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.',
+ 'uploaded' => 'Prevelika količina za server. Pokušajte prenijeti manju veličinu.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Problem s prenosom slike',
+ 'image_upload_type_error' => 'Nepodržani format slike',
+ 'image_upload_replace_type' => 'Zamjene slikovnih datoteka moraju biti iste vrste',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Podaci o crtežu se ne mogu učitati. Datoteka crteža možda više ne postoji ili nemate dozvolu za pristupanje istoj.',
+
+ // Attachments
+ 'attachment_not_found' => 'Prilozi nisu pronađeni',
+ 'attachment_upload_error' => 'Došlo je do pogreške prilikom prijenosa datoteke privitka',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Problem sa spremanjem nacrta. Osigurajte stabilnu internetsku vezu.',
+ 'page_draft_delete_fail' => 'Nije uspjelo brisanje privremene verzije stranice i dohvaćanje trenutno spremljenog sadržaja stranice',
+ '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',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // 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' => 'Slika Nije Pronađena',
+ 'image_not_found_subtitle' => 'Žao nam je, slikovna datoteka koju tražite nije pronađena.',
+ 'image_not_found_details' => 'Ako ste očekivali da ova slika postoji, moguće je da je izbrisana.',
+ '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.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // 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',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Pogreška prilikom slanja testnog email:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'URL se ne podudara s konfiguriranim dozvoljenim SSR domaćinima',
+];
diff --git a/lang/hr/notifications.php b/lang/hr/notifications.php
new file mode 100644
index 00000000000..c9428e2dc58
--- /dev/null
+++ b/lang/hr/notifications.php
@@ -0,0 +1,31 @@
+ 'Novi komentar na stranici: :pageName',
+ 'new_comment_intro' => 'Korisnik je komentirao stranicu u :appName:',
+ 'new_page_subject' => 'Nova stranica: :pageName',
+ 'new_page_intro' => 'Nova stranica je stvorena u :appName:',
+ 'updated_page_subject' => 'ChatGPT
+
+Ažurirana stranica: :pageName',
+ 'updated_page_intro' => 'Stranica je ažurirana u :appName:',
+ 'updated_page_debounce' => 'Kako biste spriječili velik broj obavijesti, nećete primati obavijesti o daljnjim izmjenama ove stranice od istog urednika neko vrijeme.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Naziv Stranice:',
+ 'detail_page_path' => 'Page Path:',
+ 'detail_commenter' => 'Komentator:',
+ 'detail_comment' => 'Komentar:',
+ 'detail_created_by' => 'Kreirao Korisnik:',
+ 'detail_updated_by' => 'Ažurirao Korisnik:',
+
+ 'action_view_comment' => 'Pogledaj Komentar',
+ 'action_view_page' => 'Pogledaj Stranicu',
+
+ 'footer_reason' => 'Ova obavijest vam je poslana jer :link pokriva ovu vrstu aktivnosti za ovu stavku.',
+ 'footer_reason_link' => 'vaše postavke obavijesti',
+];
diff --git a/resources/lang/hr/pagination.php b/lang/hr/pagination.php
similarity index 100%
rename from resources/lang/hr/pagination.php
rename to lang/hr/pagination.php
diff --git a/lang/hr/passwords.php b/lang/hr/passwords.php
new file mode 100644
index 00000000000..976139eb8b5
--- /dev/null
+++ b/lang/hr/passwords.php
@@ -0,0 +1,15 @@
+ 'Lozinka mora imati najmanje 8 znakova i biti potvrđena.',
+ 'user' => "Ne možemo pronaći korisnika s tom adresom e-pošte.",
+ '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/lang/hr/preferences.php b/lang/hr/preferences.php
new file mode 100644
index 00000000000..5da5a72fb03
--- /dev/null
+++ b/lang/hr/preferences.php
@@ -0,0 +1,54 @@
+ 'My Account',
+
+ 'shortcuts' => 'Prečaci',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Ovdje možete omogućiti ili onemogućiti prečace tastature u korisničkom sučelju sustava koji se koriste za navigaciju i akcije.',
+ 'shortcuts_customize_desc' => 'Možete prilagoditi svaki od prečaca u nastavku. Samo pritisnite željenu kombinaciju tipki nakon odabira polja za unos prečaca.',
+ 'shortcuts_toggle_label' => 'Prečaci tipkovnice omogućeni',
+ 'shortcuts_section_navigation' => 'Navigacija',
+ 'shortcuts_section_actions' => 'Uobičajene radnje',
+ 'shortcuts_save' => 'Spremi prečace',
+ 'shortcuts_overlay_desc' => 'Napomena: Kada su prečaci tastature omogućeni, dostupan je pomoćni prikaz preko pritiska na znak "?" koji će istaknuti dostupne prečace za radnje trenutno vidljive na zaslonu.',
+ 'shortcuts_update_success' => 'Postavke prečaca su ažurirane!',
+ 'shortcuts_overview_desc' => 'Upravljajte prečacima tastature koje možete koristiti za navigaciju korisničkim sučeljem sustava.',
+
+ 'notifications' => 'Postavke Obavijesti',
+ 'notifications_desc' => 'Kontrolirajte e-mail obavijesti koje primate kada se određene aktivnosti izvrše unutar sustava.',
+ 'notifications_opt_own_page_changes' => 'Obavijesti o promjenama na stranicama koje posjedujem',
+ 'notifications_opt_own_page_comments' => 'ChatGPT
+
+Obavijesti o komentarima na stranicama koje posjedujem',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Obavijesti o odgovorima na moje komentare',
+ 'notifications_save' => 'Spremi Postavke',
+ 'notifications_update_success' => 'Postavke obavijesti su ažurirane!',
+ 'notifications_watched' => 'Praćene i ignorirane stavke',
+ 'notifications_watched_desc' => 'Ispod su stavke na koje su primijenjene prilagođene postavke praćenja. Da biste ažurirali svoje postavke za ove stavke, pregledajte stavku, a zatim pronađite opcije praćenja u bočnoj traci.',
+
+ 'auth' => 'Access & Security',
+ 'auth_change_password' => 'Change Password',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Password has been updated!',
+
+ 'profile' => 'Profile Details',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'View Public Profile',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Delete Account',
+ 'delete_my_account' => 'Delete My Account',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/hr/settings.php b/lang/hr/settings.php
new file mode 100644
index 00000000000..0692c8d7a13
--- /dev/null
+++ b/lang/hr/settings.php
@@ -0,0 +1,374 @@
+ 'Postavke',
+ 'settings_save' => 'Spremi postavke',
+ 'system_version' => 'Sistemska Verzija',
+ 'categories' => 'Kategorije',
+
+ // 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_default_editor' => 'Zadani Uređivač Stranica',
+ 'app_default_editor_desc' => 'Odaberite koji uređivač će se koristiti kao zadani prilikom uređivanja novih stranica. Ovo se može prebrisati na razini pojedine stranice ukoliko dozvole to omogućuju.',
+ 'app_custom_html' => 'Prilagođeni HTML sadržaj',
+ 'app_custom_html_desc' => 'Sav sadržaj dodan ovdje bit će umetnut na dno 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' => 'Ovo se koristi u zaglavlju aplikacije, među ostalim područjima. Ova slika treba biti visoka 86 piksela. Velike slike bit će smanjene.',
+ 'app_icon' => 'Ikona Aplikacije',
+ 'app_icon_desc' => 'Ova ikona se koristi za kartice preglednika i ikone prečaca. Trebala bi biti PNG slika kvadratnog oblika sa dimenzijama 256 piksela.',
+ '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. Postojeći komentari nisu prikazani.',
+
+ // Color settings
+ 'color_scheme' => 'Paleta Boje Aplikacije',
+ 'color_scheme_desc' => 'Postavite boje koje će se koristiti u korisničkom sučelju aplikacije. Boje se mogu konfigurirati zasebno za tamni i svijetli način rada kako bi se najbolje uklopile u temu i osigurale čitljivost.',
+ 'ui_colors_desc' => 'Postavite primarnu boju aplikacije i zadane boje veza. Primarna boja se uglavnom koristi za zaglavlje trake, gumbe i dekoracije sučelja. Zadana boja veza se koristi za tekstualne veze i radnje, kako unutar sadržaja tako i u korisničkom sučelju aplikacije.',
+ 'app_color' => 'Primarnab Boja',
+ 'link_color' => 'Zadana Boja Veze',
+ 'content_colors_desc' => 'Postavite boje za sve elemente u hijerarhiji organizacije stranica. Preporučuje se odabir boja slične svjetlini kao zadane boje radi bolje čitljivosti.',
+ '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. 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',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Održavanje',
+ 'maint_image_cleanup' => 'Čišćenje slika',
+ 'maint_image_cleanup_desc' => 'Skenirajte sadržaj stranice i revizije kako biste provjerili koje slike i crteži se trenutno koriste i koje slike su suvišne. Pobrinite se napraviti potpunu sigurnosnu kopiju baze podataka i slika prije pokretanja ovog procesa.',
+ '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',
+ 'maint_regen_references' => 'Regeneriraj Reference',
+ 'maint_regen_references_desc' => 'Ova akcija će ponovno izgraditi indeks prekriženih referenci između stavki unutar baze podataka. Obično se to automatski obavlja, ali ova akcija može biti korisna za indeksiranje starih sadržaja ili sadržaja dodanih putem neoficijelnih metoda.',
+ 'maint_regen_references_success' => 'Indeks referenci je ponovno izgrađen!',
+ 'maint_timeout_command_note' => 'Napomena: Ova radnja može potrajati, što može dovesti do problema s prekidom veze (timeout) u nekim web okruženjima. Kao alternativa, ova radnja se može izvršiti putem naredbe u terminalu.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Koš za smeće',
+ '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_parent' => 'Nadređeni',
+ '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' => 'This action will permanently delete this item from the system, along with any child elements listed below, and you will not be able to restore this content. Are you sure you want to permanently delete this item?',
+ '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_restore_parent' => 'Vrati Nadređenog',
+ '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_ip' => 'IP Adresa',
+ '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',
+ 'roles_index_desc' => 'Uloge se koriste za grupiranje korisnika i dodjeljivanje sistemskih dozvola njihovim članovima. Kada je korisnik član više uloga, privilegije se zbrajaju i korisnik nasljeđuje sve sposobnosti svake uloge.',
+ 'roles_x_users_assigned' => ':count korisnik dodijeljen|:count korisnika dodijeljeno',
+ 'roles_x_permissions_provided' => ':count dozvola|:count dozvole',
+ 'roles_assigned_users' => 'Odredi Korisnika',
+ 'roles_permissions_provided' => 'Dostavljene Dozvole',
+ 'role_create' => 'Stvori novu ulogu',
+ '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' => "Ne migriraj korisnike",
+ 'role_delete_sure' => 'Jeste li sigurni da želite obrisati ovu ulogu?',
+ 'role_edit' => 'Uredi ulogu',
+ 'role_details' => 'Detalji uloge',
+ 'role_name' => 'Ime uloge',
+ 'role_desc' => 'Kratki opis uloge',
+ 'role_mfa_enforced' => 'Zahtijeva višestruku provjeru autentičnosti',
+ '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_export_content' => 'Izvoz sadržaja',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Promijeni uređivač stranica',
+ 'role_notifications' => 'Primanje i upravljanje obavijestima',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ '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_asset_image_view_note' => 'Ovo se odnosi na vidljivost unutar upravitelja slika. Stvarni pristup uploadiranim slikovnim datotekama ovisit će o odabranim opcijama pohrane slika u sustavu.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Sve',
+ 'role_own' => 'Vlastito',
+ 'role_controlled_by_asset' => 'Kontrolirano od strane vlasnika',
+ 'role_save' => 'Spremi ulogu',
+ 'role_users' => 'Korisnici u ovoj ulozi',
+ 'role_users_none' => 'Trenutno nijedan korisnik nije u ovoj ulozi',
+
+ // Users
+ 'users' => 'Korisnici',
+ 'users_index_desc' => 'Kreirajte i upravljajte pojedinačnim korisničkim računima unutar sustava. Korisnički računi koriste se za prijavu i pripisivanje sadržaja i aktivnosti. Dozvole pristupa temelje se uglavnom na ulogama, ali vlasništvo korisničkog sadržaja, među ostalim faktorima, također može utjecati na dozvole i pristup.',
+ '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 koja se koristi za prijavu u aplikaciju. Lozinka mora imati najmanje 8 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' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ '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_edit' => 'Uredite korisnika',
+ 'users_edit_profile' => 'Uredite profil',
+ '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_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ '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_status_connected' => 'Connected',
+ 'users_social_status_disconnected' => 'Disconnected',
+ '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_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ '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',
+ 'users_mfa' => 'Višefaktorska Provjera Vjerodostojnosti',
+ 'users_mfa_desc' => 'Postavite višestruku provjeru autentičnosti kao dodatni sloj sigurnosti za svoj korisnički račun.',
+ 'users_mfa_x_methods' => ':count metoda konfigurirano|:count metode konfigurirane',
+ 'users_mfa_configure' => 'Konfiguriraj Metode',
+
+ // 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' => 'API token',
+ 'user_api_token_id' => 'ID Tokena',
+ '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 Tajna',
+ '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?',
+
+ // Webhooks
+ 'webhooks' => 'Web-dojavnici',
+ 'webhooks_index_desc' => 'Web-dojavnici su način slanja podataka na vanjske URL-ove kada se određene radnje i događaji dogode unutar sustava, omogućujući integraciju temeljenu na događajima s vanjskim platformama poput sustava za slanje poruka ili obavijesti.',
+ 'webhooks_x_trigger_events' => ':count događaj okidača|:count događaji okidača',
+ 'webhooks_create' => 'Kreiraj Novi Web-dojavnik',
+ 'webhooks_none_created' => 'Nijedan web-dojavnik nije još kreiran.',
+ 'webhooks_edit' => 'Uredi Web-dojavnik',
+ 'webhooks_save' => 'Spasi Web-dojavnik',
+ 'webhooks_details' => 'Detalji Web-dojavnika',
+ 'webhooks_details_desc' => 'Navedite korisnički prijateljsko ime i POST krajnju točku kao lokaciju na koju će se slati podaci web-dojavnika.',
+ 'webhooks_events' => 'Događaji Web-dojavnika',
+ 'webhooks_events_desc' => 'Odaberite sve događaje koji bi trebali pokrenuti poziv za ovaj web-dojavnik.',
+ 'webhooks_events_warning' => 'Imajte na umu da će se ovi događaji pokrenuti za sve odabrane događaje, čak i ako se primjenjuju prilagođene dozvole. Osigurajte se da upotreba ovog web-dojavnika neće otkriti povjerljiv sadržaj.',
+ 'webhooks_events_all' => 'Svi sistemski događaji',
+ 'webhooks_name' => 'Naziv Web-dojavnika',
+ 'webhooks_timeout' => 'Vremensko ograničenje zahtjeva web-dojavnika (u sek.)',
+ 'webhooks_endpoint' => 'Odredište Web-dojavnika',
+ 'webhooks_active' => 'Web-dojavnik Aktivan',
+ 'webhook_events_table_header' => 'Događaji',
+ 'webhooks_delete' => 'Izbriši Web-dojavnik',
+ 'webhooks_delete_warning' => 'Ovo će u potpunosti izbrisati web-dojavnik pod nazivom ":webhookName" iz sustava.',
+ 'webhooks_delete_confirm' => 'Jeste li sigurni da želite obrisati ovaj Web-dojavnik?',
+ 'webhooks_format_example' => 'Primjer formata web-dojavnika',
+ 'webhooks_format_example_desc' => 'Podaci web-dojavnika se šalju kao POST zahtjev na konfiguriranu krajnju točku kao JSON prema sljedećem formatu. Svojstva "related_item" i "url" su opcionalna i ovise o vrsti pokrenutog događaja.',
+ 'webhooks_status' => 'Status Web-dojavnika',
+ 'webhooks_last_called' => 'Zadnji Poziv:',
+ 'webhooks_last_errored' => 'Zadnja pogreška:',
+ 'webhooks_last_error_message' => 'Posljednja poruka o pogrešci:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/hr/validation.php b/lang/hr/validation.php
new file mode 100644
index 00000000000..22dae5c5604
--- /dev/null
+++ b/lang/hr/validation.php
@@ -0,0 +1,123 @@
+ ':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.',
+ 'backup_codes' => 'Navedeni kod nije valjan ili je već korišten.',
+ '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',
+ 'file' => 'Polje :attribute mora biti priloženo kao valjana datoteka.',
+ '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.',
+ 'totp' => 'Navedeni kod nije valjan ili je istekao.',
+ '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.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Potrebna potvrda lozinke',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/hu/activities.php b/lang/hu/activities.php
new file mode 100644
index 00000000000..68184e597b4
--- /dev/null
+++ b/lang/hu/activities.php
@@ -0,0 +1,140 @@
+ 'létrehozta az oldalt',
+ 'page_create_notification' => 'Oldal sikeresen létrehozva',
+ 'page_update' => 'frissítette az oldalt',
+ 'page_update_notification' => 'Oldal sikeresen frissítve',
+ 'page_delete' => 'törölte az oldalt',
+ 'page_delete_notification' => 'Oldal sikeresen törölve',
+ 'page_restore' => 'visszaállította az oldalt',
+ 'page_restore_notification' => 'Oldal sikeresen visszaállítva',
+ 'page_move' => 'áthelyezte az oldalt',
+ 'page_move_notification' => 'Oldal sikeresen áthelyezve',
+
+ // Chapters
+ 'chapter_create' => 'létrehozta a fejezetet',
+ 'chapter_create_notification' => 'Fejezet sikeresen létrehozva',
+ 'chapter_update' => 'frissítette a fejezetet',
+ 'chapter_update_notification' => 'Fejezet sikeresen frissítve',
+ 'chapter_delete' => 'törölte a fejezetet',
+ 'chapter_delete_notification' => 'Fejezet sikeresen törölve',
+ 'chapter_move' => 'áthelyezte a fejezetet',
+ 'chapter_move_notification' => 'Fejezet sikeresen áthelyezve',
+
+ // Books
+ 'book_create' => 'létrehozott egy könyvet',
+ 'book_create_notification' => 'Könyv sikeresen létrehozva',
+ 'book_create_from_chapter' => 'könyvvé alakította a fejezetet',
+ 'book_create_from_chapter_notification' => 'Fejezet sikeresen könyvvé lett alakítva',
+ 'book_update' => 'frissítette a könyvet',
+ 'book_update_notification' => 'Könyv sikeresen frissítve',
+ 'book_delete' => 'törölte a könyvet',
+ 'book_delete_notification' => 'Könyv sikeresen törölve',
+ 'book_sort' => 'átrendezte a könyvet',
+ 'book_sort_notification' => 'Könyv sikeresen újrarendezve',
+
+ // Bookshelves
+ 'bookshelf_create' => 'létrehozta a polcot',
+ 'bookshelf_create_notification' => 'Könyvespolc sikeresen létrehozva',
+ 'bookshelf_create_from_book' => 'könyvet polccá alakított',
+ 'bookshelf_create_from_book_notification' => 'Könyv sikeresen polccá lett alakítva',
+ 'bookshelf_update' => 'polcot frissített',
+ 'bookshelf_update_notification' => 'Polc sikeresen frissítve',
+ 'bookshelf_delete' => 'polcot törölt',
+ 'bookshelf_delete_notification' => 'Polc sikeresen törölve',
+
+ // Revisions
+ 'revision_restore' => 'visszaállította a változatot',
+ 'revision_delete' => 'törölte a változatot',
+ 'revision_delete_notification' => 'Változat sikeresen törölve',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" hozzáadva a kedvencekhez',
+ 'favourite_remove_notification' => '":name" törölve a kedvencek közül',
+
+ // Watching
+ 'watch_update_level_notification' => 'A megfigyelési beállítások sikeresen frissültek',
+
+ // Auth
+ 'auth_login' => 'bejelentkezve',
+ 'auth_register' => 'új felhasználóként regisztrált',
+ 'auth_password_reset_request' => 'jelszó visszaállítást kért',
+ 'auth_password_reset_update' => 'felhasználói jelszó visszaállítás',
+ 'mfa_setup_method' => 'MFA módszert állított be',
+ 'mfa_setup_method_notification' => 'Többfaktoros azonosítás sikeresen beállítva',
+ 'mfa_remove_method' => 'MFA módszert törölt',
+ 'mfa_remove_method_notification' => 'Többfaktoros azonosítás sikeresen törölve',
+
+ // Settings
+ 'settings_update' => 'frissítette a beállításokat',
+ 'settings_update_notification' => 'Beállítások sikeresen frissítve',
+ 'maintenance_action_run' => 'karbantartási műveletet futtatott',
+
+ // Webhooks
+ 'webhook_create' => 'webhookot hozott létre',
+ 'webhook_create_notification' => 'Webhook sikeresen létrehozva',
+ 'webhook_update' => 'webhookot frissített',
+ 'webhook_update_notification' => 'Webhook sikeresen frissítve',
+ 'webhook_delete' => 'webhookot törölt',
+ 'webhook_delete_notification' => 'Webhook sikeresen törölve',
+
+ // Imports
+ 'import_create' => 'import elkészült',
+ 'import_create_notification' => 'Az import sikeresen feltöltötve',
+ 'import_run' => 'import frissítve',
+ 'import_run_notification' => 'A tartalmat sikeresen importáltam.',
+ 'import_delete' => 'import törölve',
+ 'import_delete_notification' => 'Az import sikeresen törölve',
+
+ // Users
+ 'user_create' => 'létrehozta a felhasználót',
+ 'user_create_notification' => 'Felhasználó sikeresen létrehozva',
+ 'user_update' => 'frissítette a felhasználót',
+ 'user_update_notification' => 'Felhasználó sikeresen frissítve',
+ 'user_delete' => 'felhasználót törölt',
+ 'user_delete_notification' => 'Felhasználó sikeresen eltávolítva',
+
+ // API Tokens
+ 'api_token_create' => 'létrehozta az API tokent',
+ 'api_token_create_notification' => 'API token sikeresen létrehozva',
+ 'api_token_update' => 'frissítette az API tokent',
+ 'api_token_update_notification' => 'API token sikeresen frissítve',
+ 'api_token_delete' => 'törölte az API tokent',
+ 'api_token_delete_notification' => 'API token sikeresen törölve',
+
+ // Roles
+ 'role_create' => 'szerepkört hozott létre',
+ 'role_create_notification' => 'Szerepkör sikeresen létrehozva',
+ 'role_update' => 'frissítette a szerepkört',
+ 'role_update_notification' => 'Szerepkör sikeresen frissítve',
+ 'role_delete' => 'törölte a szerepkört',
+ 'role_delete_notification' => 'Szerepkör sikeresen törölve',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'kiürítette a lomtárat',
+ 'recycle_bin_restore' => 'lomtárból visszaállítva',
+ 'recycle_bin_destroy' => 'lomtárból törölve',
+
+ // Comments
+ 'commented_on' => 'megjegyzést fűzött hozzá:',
+ 'comment_create' => 'hozzáadott hozzászólás',
+ 'comment_update' => 'frissített hozzászólás',
+ 'comment_delete' => 'megjegyzés törlése',
+
+ // Sort Rules
+ 'sort_rule_create' => 'létrehozta a rendezési szabályt',
+ 'sort_rule_create_notification' => 'Rendezési szabály sikeresen létrehozva',
+ 'sort_rule_update' => 'frissítette a rendezési szabályt',
+ 'sort_rule_update_notification' => 'Rendezési szabály sikeresen frissítve',
+ 'sort_rule_delete' => 'törölte a rendezési szabályt',
+ 'sort_rule_delete_notification' => 'Rendezési szabály sikeresen törölve',
+
+ // Other
+ 'permissions_update' => 'engedélyek frissítve',
+];
diff --git a/lang/hu/auth.php b/lang/hu/auth.php
new file mode 100644
index 00000000000..90669e2fba2
--- /dev/null
+++ b/lang/hu/auth.php
@@ -0,0 +1,117 @@
+ 'Ezek a hitelesítő adatok nem egyeznek a rögzítettekkel.',
+ 'throttle' => 'Túl sok bejelentkezési próbálkozás. :seconds múlva lehet újra megpróbálni.',
+
+ // Login & Register
+ 'sign_up' => 'Regisztráció',
+ 'log_in' => 'Bejelentkezés',
+ 'log_in_with' => 'Bejelentkezés ezzel: :socialDriver',
+ 'sign_up_with' => 'Regisztráció ezzel: :socialDriver',
+ 'logout' => 'Kijelentkezés',
+
+ 'name' => 'Név',
+ 'username' => 'Felhasználónév',
+ 'email' => 'Email',
+ 'password' => 'Jelszó',
+ 'password_confirm' => 'Jelszó megerősítése',
+ 'password_hint' => 'Legalább 8 karakter hosszú legyen',
+ 'forgot_password' => 'Elfelejtett jelszó?',
+ 'remember_me' => 'Emlékezzen rám',
+ 'ldap_email_hint' => 'A fiókhoz használt email cím megadása.',
+ 'create_account' => 'Fiók létrehozása',
+ 'already_have_account' => 'Rendelkezik már felhasználói fiókkal?',
+ 'dont_have_account' => 'Még nincs felhasználói fiókja?',
+ 'social_login' => 'Közösségi bejelentkezés',
+ 'social_registration' => 'Közösségi regisztráció',
+ 'social_registration_text' => 'Regisztráció és bejelentkezés másik szolgáltatással.',
+
+ 'register_thanks' => 'Köszönjük a regisztrációt!',
+ 'register_confirm' => 'Ellenőrizze a megadott e-mail címet, és kattintson a megerősítő gombra :appName eléréséhez.',
+ 'registrations_disabled' => 'A regisztráció jelenleg le van tiltva',
+ 'registration_email_domain_invalid' => 'Ebből az email tartományról nem lehet hozzáférni ehhez az alkalmazáshoz',
+ 'register_success' => 'Köszönjük a regisztrációt! A regisztráció és a bejelentkezés megtörtént.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Bejelentkezési kísérlet',
+ 'auto_init_starting_desc' => 'Kapcsolatba lépünk az azonosítási rendszereddel, hogy elkezdjük a bejelentkezési folyamatot. Ha 5 másodperc után sem történik előrelépés, próbálkozhatsz az alábbi linkre kattintva.',
+ 'auto_init_start_link' => 'Folytatás azonosítással',
+
+ // Password Reset
+ 'reset_password' => 'Jelszó visszaállítása',
+ 'reset_password_send_instructions' => 'Adja meg az e-mail címet, amire a jelszó-visszaállító linket küldjük.',
+ 'reset_password_send_button' => 'Visszaállító hivatkozás elküldése',
+ 'reset_password_sent' => 'A jelszó-visszaállító linket e-mailben fogjuk elküldeni a(z) :email címre, ha beállításra került a rendszerben.',
+ 'reset_password_success' => 'A jelszó sikeresen visszaállítva.',
+ 'email_reset_subject' => ':appName jelszó visszaállítása',
+ 'email_reset_text' => 'Ezt az e-mailt azért küldtük, mert egy jelszó-visszaállításra vonatkozó kérést kaptunk ebből a fiókból.',
+ 'email_reset_not_requested' => 'Ha nem Ön kérte a jelszó visszaállítását, akkor nincs szükség további intézkedésre.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => ':appName alkalmazásban beállított email címet meg kell erősíteni',
+ 'email_confirm_greeting' => ':appName köszöni a csatlakozást!',
+ 'email_confirm_text' => 'Az email címet a lenti gombra kattintva lehet megerősíteni:',
+ 'email_confirm_action' => 'Email megerősítése',
+ 'email_confirm_send_error' => 'Az e-mail megerősítés kötelező, de a rendszer nem tudta elküldeni az e-mailt. Keresse fel az adminisztrátort, és gondoskodjon róla, hogy az e-mail helyesen van beállítva.',
+ 'email_confirm_success' => 'Az Ön e-mail címe sikeresen meg lett erősítve, most már be tud jelentkezni az e-mail címe használatával.',
+ 'email_confirm_resent' => 'Megerősítő e-mail újraküldve. Ellenőrizze a bejövő üzeneteit!',
+ 'email_confirm_thanks' => 'Köszönjük a megerősítést!',
+ 'email_confirm_thanks_desc' => 'Kérjük, várjon egy pillanatot, amíg a megerősítést kezeljük. Ha nem kerül átirányításra 3 másodperc után, kattintson a lenti "Folytatás" linkre a továbbhaladáshoz.',
+
+ 'email_not_confirmed' => 'Az email cím nincs megerősítve',
+ 'email_not_confirmed_text' => 'Az email cím még nincs megerősítve.',
+ 'email_not_confirmed_click_link' => 'Kattintson a regisztráció után nem sokkal elküldött e-mailben található hivatkozásra.',
+ 'email_not_confirmed_resend' => 'Ha nem érkezik meg a megerősítő email, a lenti űrlap beküldésével újra lehet küldeni.',
+ 'email_not_confirmed_resend_button' => 'Megerősítő email újraküldése',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Ez egy meghívó :appName weboldalhoz!',
+ 'user_invite_email_greeting' => 'Létre lett hozva egy fiók az :appName weboldalon.',
+ 'user_invite_email_text' => 'Jelszó beállításához és hozzáféréshez a lenti gombra kell kattintani:',
+ 'user_invite_email_action' => 'Fiók jelszó beállítása',
+ 'user_invite_page_welcome' => ':appName üdvözöl!',
+ 'user_invite_page_text' => 'A fiók véglegesítéséhez és a hozzáféréshez be kell állítani egy jelszót ami :appName weboldalon lesz használva a bejelentkezéshez.',
+ 'user_invite_page_confirm_button' => 'Jelszó megerősítése',
+ 'user_invite_success_login' => 'Jelszó beállítva. Most már be tudsz jelentkezni a beállított jelszóval a következő rendszerbe: :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Többlépcsős azonosítás beállítása',
+ 'mfa_setup_desc' => 'Állítsa be a többlépcsős azonosítást egy extra biztonsági rétegként a felhasználói fiókjához.',
+ 'mfa_setup_configured' => 'Már beállítva',
+ 'mfa_setup_reconfigure' => 'Újrakonfigurálás',
+ 'mfa_setup_remove_confirmation' => 'Biztosan ki szeretné kapcsolni a többlépcsős azonosítást?',
+ 'mfa_setup_action' => 'Beállítások',
+ 'mfa_backup_codes_usage_limit_warning' => 'Kevesebb, mint 5 visszaállítási kódja maradt. Kérem, hogy generáljon új kódokat, hogy csökkentse a rendszerből való kizárásának esélyét.',
+ 'mfa_option_totp_title' => 'Mobilalkalmazás',
+ 'mfa_option_totp_desc' => 'A többlépcsős azonosításhoz olyan mobilalkalmazásra lesz szükséged, amely támogatja a TOTP-t, például a Google Authenticator, az Authy vagy a Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Visszaállítási kulcsok',
+ 'mfa_option_backup_codes_desc' => 'Egyszer használatos biztonsági kódokat hoz létre, amelyeket bejelentkezéskor kell megadnia személyazonosságának igazolására. Ügyeljen arra, hogy ezeket biztonságos helyen tárolja.',
+ 'mfa_gen_confirm_and_enable' => 'Jóváhagyás és engedélyezés',
+ 'mfa_gen_backup_codes_title' => 'Visszaállítási kódok beállítása',
+ 'mfa_gen_backup_codes_desc' => 'Tárolja el egy biztonságos helyen az alábbi kódokat. Bejelentkezés során fel tudja használni őket másodlagos bejelentkezési kódként.',
+ 'mfa_gen_backup_codes_download' => 'Kódok letöltése',
+ 'mfa_gen_backup_codes_usage_warning' => 'A kódok egyszerhasználatosak',
+ 'mfa_gen_totp_title' => 'Mobilalkalmazás beállítása',
+ 'mfa_gen_totp_desc' => 'A többlépcsős azonosításhoz olyan mobilalkalmazásra lesz szükséged, amely támogatja a TOTP-t, például a Google Authenticator, az Authy vagy a Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Szkenneld be az alábbi QR-kódot az általad használt azonosító alkalmazásoddal, hogy használhasd az alkalmazást.',
+ 'mfa_gen_totp_verify_setup' => 'Beállítások ellenőrzése',
+ 'mfa_gen_totp_verify_setup_desc' => 'Ellenőrizd, hogy minden működik, azzal hogy beírod a kapott kódot amit az authentikátor alkalmazás generált az alábbi beviteli mezőbe:',
+ 'mfa_gen_totp_provide_code_here' => 'Add meg az alkalmazás által generált kódot ide',
+ 'mfa_verify_access' => 'Hozzáférés ellenőrzése',
+ 'mfa_verify_access_desc' => 'Felhasználói fiókja megköveteli, hogy erősítse meg személyazonosságát egy további ellenőrzési szinttel, mielőtt hozzáférést kapna. A folytatáshoz használja az egyik konfigurált módszert.',
+ 'mfa_verify_no_methods' => 'Nincs konfigurálva MFA',
+ 'mfa_verify_no_methods_desc' => 'Nem található többlépcsős hitelesítési módszer a fiókjához. A hozzáféréshez legalább egy módszert be kell állítania.',
+ 'mfa_verify_use_totp' => 'Ellenőrzés mobil alkalmazás használatával',
+ 'mfa_verify_use_backup_codes' => 'Ellenőrzés visszaállítási kóddal',
+ 'mfa_verify_backup_code' => 'Visszaállítási kód',
+ 'mfa_verify_backup_code_desc' => 'Adjon meg egy még fel nem használt visszaállítási kódot:',
+ 'mfa_verify_backup_code_enter_here' => 'Írd be a tartalék kódot',
+ 'mfa_verify_totp_desc' => 'Írja be alább a mobilalkalmazásával generált kódot:',
+ 'mfa_setup_login_notification' => 'Többfaktoros hitelesítés konfigurálva. Kérjük, most jelentkezzen be újra a konfigurált módszerrel.',
+];
diff --git a/lang/hu/common.php b/lang/hu/common.php
new file mode 100644
index 00000000000..d25a765283d
--- /dev/null
+++ b/lang/hu/common.php
@@ -0,0 +1,115 @@
+ 'Mégsem',
+ 'close' => 'Bezárás',
+ 'confirm' => 'Megerősítés',
+ 'back' => 'Vissza',
+ 'save' => 'Mentés',
+ 'continue' => 'Tovább',
+ 'select' => 'Kiválasztás',
+ 'toggle_all' => 'Összes átkapcsolása',
+ 'more' => 'Több',
+
+ // Form Labels
+ 'name' => 'Név',
+ 'description' => 'Leírás',
+ 'role' => 'Szerepkör',
+ 'cover_image' => 'Borítókép',
+ 'cover_image_description' => 'Ennek a képnek körülbelül 440 x 250 képpont méretűnek kell lennie, bár rugalmasan méretezhető és levágható, hogy a felhasználói felülethez illeszkedjen a különböző lehetőségek esetén, így a megjelenítés tényleges méretei eltérőek lesznek.',
+
+ // Actions
+ 'actions' => 'Műveletek',
+ 'view' => 'Megtekintés',
+ 'view_all' => 'Összes megtekintése',
+ 'new' => 'Új',
+ 'create' => 'Létrehozás',
+ 'update' => 'Frissítés',
+ 'edit' => 'Szerkesztés',
+ 'archive' => 'Archiválás',
+ 'unarchive' => 'Archiválás visszavonása',
+ 'sort' => 'Rendezés',
+ 'move' => 'Áthelyezés',
+ 'copy' => 'Másolás',
+ 'reply' => 'Válasz',
+ 'delete' => 'Törlés',
+ 'delete_confirm' => 'Törlés megerősítése',
+ 'search' => 'Keresés',
+ 'search_clear' => 'Keresés törlése',
+ 'reset' => 'Visszaállítás',
+ 'remove' => 'Eltávolítás',
+ 'add' => 'Hozzáadás',
+ 'configure' => 'Beállítás',
+ 'manage' => 'Kezelés',
+ 'fullscreen' => 'Teljes képernyő',
+ 'favourite' => 'Kedvencekhez ad',
+ 'unfavourite' => 'Kedvencekből eltávolít',
+ 'next' => 'Következő',
+ 'previous' => 'Előző',
+ 'filter_active' => 'Aktív szűrő:',
+ 'filter_clear' => 'Szűrő törlése',
+ 'download' => 'Letöltés',
+ 'open_in_tab' => 'Megnyitás új tab-on',
+ 'open' => 'Megnyitás',
+
+ // Sort Options
+ 'sort_options' => 'Rendezési beállítások',
+ 'sort_direction_toggle' => 'Rendezési irány váltása',
+ 'sort_ascending' => 'Növekvő sorrend',
+ 'sort_descending' => 'Csökkenő sorrend',
+ 'sort_name' => 'Név',
+ 'sort_default' => 'Alapértelmezett',
+ 'sort_created_at' => 'Létrehozás dátuma',
+ 'sort_updated_at' => 'Frissítés dátuma',
+
+ // Misc
+ 'deleted_user' => 'Törölt felhasználó',
+ 'no_activity' => 'Nincs megjeleníthető aktivitás',
+ 'no_items' => 'Nincsenek elérhető elemek',
+ 'back_to_top' => 'Oldal eleje',
+ 'skip_to_main_content' => 'Ugrás a fő tartalomra',
+ 'toggle_details' => 'Részletek átkapcsolása',
+ 'toggle_thumbnails' => 'Bélyegképek átkapcsolása',
+ 'details' => 'Részletek',
+ 'grid_view' => 'Rács nézet',
+ 'list_view' => 'Lista nézet',
+ 'default' => 'Alapértelmezés szerinti',
+ 'breadcrumb' => 'Morzsa',
+ 'status' => 'Státusz',
+ 'status_active' => 'Aktív',
+ 'status_inactive' => 'Inaktív',
+ 'never' => 'Soha',
+ 'none' => 'Egyik sem',
+
+ // Header
+ 'homepage' => 'Kezdőlap',
+ 'header_menu_expand' => 'Menü megnyitása',
+ 'profile_menu' => 'Profil menü',
+ 'view_profile' => 'Profil megtekintése',
+ 'edit_profile' => 'Profil szerkesztése',
+ 'dark_mode' => 'Sötét mód',
+ 'light_mode' => 'Világos mód',
+ 'global_search' => 'Keresés mindenhol',
+
+ // Layout tabs
+ 'tab_info' => 'Információ',
+ 'tab_info_label' => 'Tab: Másodlagos információk megjelenítése',
+ 'tab_content' => 'Tartalom',
+ 'tab_content_label' => 'Tab: Elsődleges információk megjelenítése',
+
+ // Email Content
+ 'email_action_help' => 'Probléma esetén a lenti ":actionText" gombra kell kattintani, majd ki kell másolni a lenti webcímet és be kell illeszteni egy böngészőbe:',
+ 'email_rights' => 'Minden jog fenntartva',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Adatvédelmi irányelvek',
+ 'terms_of_service' => 'Felhasználási feltételek',
+
+ // OpenSearch
+ 'opensearch_description' => 'Keresés :appName',
+];
diff --git a/lang/hu/components.php b/lang/hu/components.php
new file mode 100644
index 00000000000..6a54dd1b034
--- /dev/null
+++ b/lang/hu/components.php
@@ -0,0 +1,46 @@
+ 'Kép kiválasztása',
+ 'image_list' => 'Képek listája',
+ 'image_details' => 'A kép részletei',
+ 'image_upload' => 'Kép feltöltése',
+ 'image_intro' => 'Itt választhatsz ki és kezelhetsz olyan képeket, amelyeket korábban feltöltöttek a rendszerbe.',
+ 'image_intro_upload' => 'Húzz ide egy új képfájlt az új kép feltöltéséhez, vagy használd a fenti "Kép feltöltése" gombot.',
+ 'image_all' => 'Összes',
+ 'image_all_title' => 'Összes kép megtekintése',
+ 'image_book_title' => 'A könyvhöz feltöltött képek megtekintése',
+ 'image_page_title' => 'Az oldalra feltöltött képek megtekintése',
+ 'image_search_hint' => 'Keresés kép neve alapján',
+ 'image_uploaded' => 'Feltöltve ekkor: :uploadedDate',
+ 'image_uploaded_by' => 'Feltöltötte :userName',
+ 'image_uploaded_to' => 'Feltöltve ide: :pageLink',
+ 'image_updated' => 'Frissítve ekkor: :updateDate',
+ 'image_load_more' => 'Több betöltése',
+ 'image_image_name' => 'Kép neve',
+ 'image_delete_used' => 'Ez a kép a lenti oldalakon van használatban.',
+ 'image_delete_confirm_text' => 'Biztosan törölhető ez a kép?',
+ 'image_select_image' => 'Kép kiválasztása',
+ 'image_dropzone' => 'Képek feltöltése ejtéssel vagy kattintással',
+ 'image_dropzone_drop' => 'Húzza a képeket ide a feltöltéshez',
+ 'images_deleted' => 'Képek törölve',
+ 'image_preview' => 'Kép előnézete',
+ 'image_upload_success' => 'Kép sikeresen feltöltve',
+ 'image_update_success' => 'Kép részletei sikeresen frissítve',
+ 'image_delete_success' => 'Kép sikeresen törölve',
+ 'image_replace' => 'Kép cseréje',
+ 'image_replace_success' => 'Képfájl sikeresen frissítve',
+ 'image_rebuild_thumbs' => 'Méret variációk újragenerálása',
+ 'image_rebuild_thumbs_success' => 'Kép méret változatok sikeresen újra lettek generálva!',
+
+ // Code Editor
+ 'code_editor' => 'Kód szerkesztése',
+ 'code_language' => 'Kód nyelve',
+ 'code_content' => 'Kód tartalom',
+ 'code_session_history' => 'Munkamenet előzményei',
+ 'code_save' => 'Kód mentése',
+];
diff --git a/lang/hu/editor.php b/lang/hu/editor.php
new file mode 100644
index 00000000000..705bc6d54c0
--- /dev/null
+++ b/lang/hu/editor.php
@@ -0,0 +1,182 @@
+ 'Általános',
+ 'advanced' => 'Haladó',
+ 'none' => 'Egyik sem',
+ 'cancel' => 'Mégsem',
+ 'save' => 'Mentés',
+ 'close' => 'Bezárás',
+ 'apply' => 'Apply',
+ 'undo' => 'Visszavonás',
+ 'redo' => 'Újra',
+ 'left' => 'Balra',
+ 'center' => 'Középre',
+ 'right' => 'Jobbra',
+ 'top' => 'Fel',
+ 'middle' => 'Középre',
+ 'bottom' => 'Alulra',
+ 'width' => 'Szélesség',
+ 'height' => 'Magasság',
+ 'More' => 'Több',
+ 'select' => 'Kiválasztás...',
+
+ // Toolbar
+ 'formats' => 'Formátumok',
+ 'header_large' => 'Nagy címsor',
+ 'header_medium' => 'Közepes címsor',
+ 'header_small' => 'Kis címsor',
+ 'header_tiny' => 'Apró címsor',
+ 'paragraph' => 'Bekezdés',
+ 'blockquote' => 'Idézet',
+ 'inline_code' => 'Forráskód',
+ 'callouts' => 'Szövegdobozok',
+ 'callout_information' => 'Információ',
+ 'callout_success' => 'Siker',
+ 'callout_warning' => 'Figyelmeztetés',
+ 'callout_danger' => 'Veszély',
+ 'bold' => 'Félkövér',
+ 'italic' => 'Dőlt',
+ 'underline' => 'Aláhúzott',
+ 'strikethrough' => 'Áthúzott szöveg',
+ 'superscript' => 'Felső index',
+ 'subscript' => 'Alsó index',
+ 'text_color' => 'Szöveg szín',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Egyéni szín',
+ 'remove_color' => 'Szín eltávolítása',
+ 'background_color' => 'Háttérszín',
+ 'align_left' => 'Balra igazítás',
+ 'align_center' => 'Középre igazítás',
+ 'align_right' => 'Jobbra igazítás',
+ 'align_justify' => 'Sorkizárt',
+ 'list_bullet' => 'Felsorolásjeles lista',
+ 'list_numbered' => 'Számozott lista',
+ 'list_task' => 'Feladatlista',
+ 'indent_increase' => 'Behúzás növelése',
+ 'indent_decrease' => 'Behúzás csökkentése',
+ 'table' => 'Táblázat',
+ 'insert_image' => 'Kép beszúrása',
+ 'insert_image_title' => 'Kép beszúrása/szerkesztése',
+ 'insert_link' => 'Hivatkozás beszúrása/szerkesztése',
+ 'insert_link_title' => 'Hivatkozás Beszúrása/Szerkesztése',
+ 'insert_horizontal_line' => 'Vízszintes vonal beszúrása',
+ 'insert_code_block' => 'Kódrészlet beszúrása',
+ 'edit_code_block' => 'Kódrészlet beszúrása',
+ 'insert_drawing' => 'Rajz beszúrása/szerkesztése',
+ 'drawing_manager' => 'Rajzkezelő',
+ 'insert_media' => 'Media beszúrása/szerkesztése',
+ 'insert_media_title' => 'Media Beszúrása/Szerkesztése',
+ 'clear_formatting' => 'Formázás törlése',
+ 'source_code' => 'Forráskód',
+ 'source_code_title' => 'Forráskód',
+ 'fullscreen' => 'Teljes képernyő',
+ 'image_options' => 'Képbeállítások',
+
+ // Tables
+ 'table_properties' => 'Táblázat tulajdonságai',
+ 'table_properties_title' => 'Táblázat Tulajdonságai',
+ 'delete_table' => 'Táblázat törlése',
+ 'table_clear_formatting' => 'Tábla formázás törlése',
+ 'resize_to_contents' => 'Átméretezés a tartalomhoz',
+ 'row_header' => 'Sorfejléc',
+ 'insert_row_before' => 'Sor beszúrása elé',
+ 'insert_row_after' => 'Sor beszúrása mögé',
+ 'delete_row' => 'Sor törlése',
+ 'insert_column_before' => 'Oszlop beszúrása elé',
+ 'insert_column_after' => 'Oszlop beszúrása utána',
+ 'delete_column' => 'Oszlop törlése',
+ 'table_cell' => 'Cella',
+ 'table_row' => 'Sor',
+ 'table_column' => 'Oszlop',
+ 'cell_properties' => 'Cella tulajdonságai',
+ 'cell_properties_title' => 'Cella Tulajdonságai',
+ 'cell_type' => 'Cella típusa',
+ 'cell_type_cell' => 'Cella',
+ 'cell_scope' => 'Hatáskör',
+ 'cell_type_header' => 'Címsor cella',
+ 'merge_cells' => 'Cellák egyesítése',
+ 'split_cell' => 'Cellák szétválasztása',
+ 'table_row_group' => 'Sorcsoport',
+ 'table_column_group' => 'Oszlopcsoport',
+ 'horizontal_align' => 'Vízszintes elrendezés',
+ 'vertical_align' => 'Függőleges elrendezés',
+ 'border_width' => 'Szegély szélessége',
+ 'border_style' => 'Szegély stílusa',
+ 'border_color' => 'Szegély színe',
+ 'row_properties' => 'Sor tulajdonságai',
+ 'row_properties_title' => 'Sor Tulajdonságai',
+ 'cut_row' => 'Sor kivágása',
+ 'copy_row' => 'Sor másolása',
+ 'paste_row_before' => 'Sor beillesztése elé',
+ 'paste_row_after' => 'Sor beillesztése mögé',
+ 'row_type' => 'Sor típusa',
+ 'row_type_header' => 'Címsor',
+ 'row_type_body' => 'Törzs',
+ 'row_type_footer' => 'Lábléc',
+ 'alignment' => 'Igazítás',
+ 'cut_column' => 'Oszlop kivágása',
+ 'copy_column' => 'Oszlop másolása',
+ 'paste_column_before' => 'Oszlop beszúrása elé',
+ 'paste_column_after' => 'Oszlop beszúrása utána',
+ 'cell_padding' => 'Cellatávolság',
+ 'cell_spacing' => 'Cellatávolság',
+ 'caption' => 'Felirat',
+ 'show_caption' => 'Képaláírás mutatása',
+ 'constrain' => 'Arányok megőrzése',
+ 'cell_border_solid' => 'Folyamatos',
+ 'cell_border_dotted' => 'Pontozott',
+ 'cell_border_dashed' => 'Szaggatott',
+ 'cell_border_double' => 'Dupla',
+ 'cell_border_groove' => 'Horony',
+ 'cell_border_ridge' => 'Domború',
+ 'cell_border_inset' => 'Behúzott',
+ 'cell_border_outset' => 'Kiemelés',
+ 'cell_border_none' => 'Egyik sem',
+ 'cell_border_hidden' => 'Rejtett',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Forrás',
+ 'alt_desc' => 'Alternatív leírás',
+ 'embed' => 'Beágyazás',
+ 'paste_embed' => 'Illeszd be a beágyazási kódot ide:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Megjelenő szöveg',
+ 'title' => 'Cím',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Hivatkozás megnyitása',
+ 'open_link_in' => 'Hivatkozás megnyitása...',
+ 'open_link_current' => 'Aktuális ablak',
+ 'open_link_new' => 'Új ablak',
+ 'remove_link' => 'Hivatkozás eltávolítása',
+ 'insert_collapsible' => 'Illeszd be az összecsukható blokkot',
+ 'collapsible_unwrap' => 'Kicsomagol',
+ 'edit_label' => 'Címke szerkesztése',
+ 'toggle_open_closed' => 'Nyitott/zárt váltása',
+ 'collapsible_edit' => 'Összecsukható blokk szerkesztése',
+ 'toggle_label' => 'Címke ki-be kapcsolása',
+
+ // About view
+ 'about' => 'A szerkesztőről',
+ 'about_title' => 'A WYSIWYG szerkesztőről',
+ 'editor_license' => 'Szerkesztő Licensz és Copyright információi',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'Ez a szerkesztő az MIT licenc alatt szolgáltatott :tinyLink segítségével készült.',
+ 'editor_tiny_license_link' => 'A TinyMCE szerzői jogi és licencinformációi itt találhatók.',
+ 'save_continue' => 'Mentés és Folytatás',
+ 'callouts_cycle' => '(Folyamatos lenyomva tartással válassza ki a típusok közötti váltást)',
+ 'link_selector' => 'Tartalom hivatkozása',
+ 'shortcuts' => 'Gyorsbillentyűk',
+ 'shortcut' => 'Gyorsbillentyű',
+ 'shortcuts_intro' => 'Az alábbi gyorsbillentyűk érhetők el a szerkesztőben:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Leírás',
+];
diff --git a/lang/hu/entities.php b/lang/hu/entities.php
new file mode 100644
index 00000000000..570120dfa99
--- /dev/null
+++ b/lang/hu/entities.php
@@ -0,0 +1,476 @@
+ 'Legutóbb létrehozott',
+ 'recently_created_pages' => 'Legutóbb létrehozott oldalak',
+ 'recently_updated_pages' => 'Legutóbb frissített oldalak',
+ 'recently_created_chapters' => 'Legutóbb létrehozott fejezetek',
+ 'recently_created_books' => 'Legutóbb létrehozott könyvek',
+ 'recently_created_shelves' => 'Legutóbb létrehozott polcok',
+ 'recently_update' => 'Legutóbb frissített',
+ 'recently_viewed' => 'Legutóbb megtekintett',
+ 'recent_activity' => 'Legutóbbi tevékenység',
+ 'create_now' => 'Létrehozás most',
+ 'revisions' => 'Változatok',
+ 'meta_revision' => 'Változat #:revisionCount',
+ 'meta_created' => 'Létrehozva :timeLength',
+ 'meta_created_name' => ':user hozta létre :timeLength',
+ 'meta_updated' => 'Frissítve :timeLength',
+ 'meta_updated_name' => ':user frissítette :timeLength',
+ 'meta_owned_name' => ':user tulajdona',
+ 'meta_reference_count' => 'Hivatkozva a következő által: :count |Hivatkozva a következő által: :count',
+ 'entity_select' => 'Entitás kiválasztása',
+ 'entity_select_lack_permission' => 'Nincs meg a szükséges jogosultságod ennek az elemnek a kiválasztásához',
+ 'images' => 'Képek',
+ 'my_recent_drafts' => 'Legutóbbi vázlataim',
+ 'my_recently_viewed' => 'Általam legutóbb megtekintett',
+ 'my_most_viewed_favourites' => 'Legtöbbet Megtekintett Kedvencek',
+ 'my_favourites' => 'Kedvencek',
+ 'no_pages_viewed' => 'Még nincsenek általam megtekintett oldalak',
+ 'no_pages_recently_created' => 'Nincsenek legutóbb létrehozott oldalak',
+ 'no_pages_recently_updated' => 'Nincsenek legutóbb frissített oldalak',
+ 'export' => 'Exportálás',
+ 'export_html' => 'Önálló weblap',
+ 'export_pdf' => 'PDF fájl',
+ 'export_text' => 'Egyszerű szövegfájl',
+ 'export_md' => 'Markdown jegyzetek',
+ 'export_zip' => 'Hordozható ZIP',
+ 'default_template' => 'Alapértelmezett oldalsablon',
+ 'default_template_explain' => 'Rendeljen hozzá egy oldalsablont, amely alapértelmezett tartalomként lesz használva az ezen az elemen belül létrehozott összes oldalon. Ne feledje, hogy ezt csak akkor használja, ha az oldal készítője megtekintési hozzáféréssel rendelkezik a kiválasztott sablonoldalhoz.',
+ 'default_template_select' => 'Válasszon ki egy oldalsablont',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Jogosultságok',
+ 'permissions_desc' => 'Itt állítsa be az engedélyeket a felhasználói szerepkörök által biztosított alapértelmezett engedélyek felülbírálásához.',
+ 'permissions_book_cascade' => 'A könyvekre beállított engedélyek automatikusan az alárendelt fejezetekhez és oldalakhoz kapcsolódnak, kivéve, ha saját engedélyekkel rendelkeznek.',
+ 'permissions_chapter_cascade' => 'A fejezetekre beállított engedélyek automatikusan az alárendelt oldalakra lépnek át, hacsak nem rendelkeznek saját engedélyekkel.',
+ 'permissions_save' => 'Jogosultságok mentése',
+ 'permissions_owner' => 'Tulajdonos',
+ 'permissions_role_everyone_else' => 'Mindenki más',
+ 'permissions_role_everyone_else_desc' => 'Állítson be engedélyeket az összes, kifejezetten nem felülírt szerepkörhöz.',
+ 'permissions_role_override' => 'A szerepkör engedélyeinek felülbírálása',
+ 'permissions_inherit_defaults' => 'Alapértelmezett értékek öröklése',
+
+ // Search
+ 'search_results' => 'Keresési eredmények',
+ 'search_total_results_found' => ':count találat|összesen :count találat',
+ 'search_clear' => 'Keresés törlése',
+ 'search_no_pages' => 'Nincsenek a keresésnek megfelelő oldalak',
+ 'search_for_term' => ':term keresése',
+ 'search_more' => 'További eredmények',
+ 'search_advanced' => 'Részletes keresés',
+ 'search_terms' => 'Keresési kifejezések',
+ 'search_content_type' => 'Tartalomtípus',
+ 'search_exact_matches' => 'Pontos egyezések',
+ 'search_tags' => 'Címke keresések',
+ 'search_options' => 'Beállítások',
+ 'search_viewed_by_me' => 'Általam megtekintett',
+ 'search_not_viewed_by_me' => 'Általam nem megtekintett',
+ 'search_permissions_set' => 'Jogosultságok beállítva',
+ 'search_created_by_me' => 'Általam létrehozott',
+ 'search_updated_by_me' => 'Általam frissített',
+ 'search_owned_by_me' => 'Tulajdonomban lévő',
+ 'search_date_options' => 'Dátum beállítások',
+ 'search_updated_before' => 'Frissítve ez előtt',
+ 'search_updated_after' => 'Frissítve ez után',
+ 'search_created_before' => 'Létrehozva ez előtt',
+ 'search_created_after' => 'Létrehozva ez után',
+ 'search_set_date' => 'Dátum beállítása',
+ 'search_update' => 'Keresés frissítése',
+
+ // Shelves
+ 'shelf' => 'Polc',
+ 'shelves' => 'Polcok',
+ 'x_shelves' => ':count polc|:count polcok',
+ 'shelves_empty' => 'Nincsenek könyvespolcok létrehozva',
+ 'shelves_create' => 'Új polc létrehozása',
+ 'shelves_popular' => 'Népszerű polcok',
+ 'shelves_new' => 'Új polcok',
+ 'shelves_new_action' => 'Új polc',
+ 'shelves_popular_empty' => 'A legnépszerűbb polcok itt fognak megjelenni.',
+ 'shelves_new_empty' => 'A legutoljára létrehozott polcok itt fognak megjelenni.',
+ 'shelves_save' => 'Polc mentése',
+ 'shelves_books' => 'Könyvek ezen a polcon',
+ 'shelves_add_books' => 'Könyvek hozzáadása ehhez a polchoz',
+ 'shelves_drag_books' => 'Könyveket áthúzással lehet elhelyezni ezen a polcon',
+ 'shelves_empty_contents' => 'Ehhez a polchoz nincsenek könyvek rendelve',
+ 'shelves_edit_and_assign' => 'Polc szerkesztése könyvek hozzárendeléséhez',
+ 'shelves_edit_named' => ':name polc szerkesztése',
+ 'shelves_edit' => 'Polc szerkesztése',
+ 'shelves_delete' => 'Polc törlése',
+ 'shelves_delete_named' => ':name polc törlése',
+ 'shelves_delete_explain' => "':name'. nevű polc ezzel le lesz törölve. A benne található könyvek nem lesznek törölve.",
+ 'shelves_delete_confirmation' => 'Biztosan törölhető ez a polc?',
+ 'shelves_permissions' => 'Polc jogosultság',
+ 'shelves_permissions_updated' => 'Polc jogosultságok frissítve',
+ 'shelves_permissions_active' => 'Polc jogosultságok aktívak',
+ 'shelves_permissions_cascade_warning' => 'A polcokhoz kapcsolódó jogosultságok nem kapcsolódnak automatikusan a tárolt könyvekhez. Ennek az az oka, hogy egy könyv több polcon is létezhet. Az engedélyek azonban lemásolhatók a gyermekkönyvekbe az alábbi lehetőség segítségével.',
+ 'shelves_permissions_create' => 'A polclétrehozási jogosultságok csak az alárendelt könyvekbe való másoláshoz használhatók az alábbi művelettel. Nem szabályozzák a könyvek létrehozásának lehetőségét.',
+ 'shelves_copy_permissions_to_books' => 'Jogosultság másolása könyvekre',
+ 'shelves_copy_permissions' => 'Jogosultság másolása',
+ 'shelves_copy_permissions_explain' => 'Ezzel a polc jelenlegi engedélybeállításait alkalmazza a benne található összes könyvre. Az aktiválás előtt győződjön meg arról, hogy a polc engedélyeinek módosításait elmentette.',
+ 'shelves_copy_permission_success' => 'Könyvespolc jogosultságok átmásolva :count könyvre',
+
+ // Books
+ 'book' => 'Könyv',
+ 'books' => 'Könyvek',
+ 'x_books' => ':count könyv|:count könyv',
+ 'books_empty' => 'Nincsenek könyvek létrehozva',
+ 'books_popular' => 'Népszerű könyvek',
+ 'books_recent' => 'Legutóbbi könyvek',
+ 'books_new' => 'Új könyvek',
+ 'books_new_action' => 'Új könyv',
+ 'books_popular_empty' => 'A legnépszerűbb könyvek itt fognak megjelenni.',
+ 'books_new_empty' => 'A legutoljára létrehozott könyvek itt fognak megjelenni.',
+ 'books_create' => 'Új könyv létrehozása',
+ 'books_delete' => 'Könyv törlése',
+ 'books_delete_named' => ':bookName könyv törlése',
+ 'books_delete_explain' => '\':bookName\' nevű könyv törölve lesz. Minden oldal és fejezet el lesz távolítva.',
+ 'books_delete_confirmation' => 'Biztosan törölhető ez a könyv?',
+ 'books_edit' => 'Könyv szerkesztése',
+ 'books_edit_named' => ':bookName könyv szerkesztése',
+ 'books_form_book_name' => 'Könyv neve',
+ 'books_save' => 'Könyv mentése',
+ 'books_permissions' => 'Könyv jogosultságok',
+ 'books_permissions_updated' => 'Könyv jogosultságok frissítve',
+ 'books_empty_contents' => 'Ehhez a könyvhöz nincsenek oldalak vagy fejezetek létrehozva.',
+ 'books_empty_create_page' => 'Új oldal létrehozása',
+ 'books_empty_sort_current_book' => 'Aktuális könyv rendezése',
+ 'books_empty_add_chapter' => 'Fejezet hozzáadása',
+ 'books_permissions_active' => 'Könyv jogosultságok aktívak',
+ 'books_search_this' => 'Keresés ebben a könyvben',
+ 'books_navigation' => 'Könyv navigáció',
+ 'books_sort' => 'Könyv tartalmak rendezése',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => ':bookName könyv rendezése',
+ 'books_sort_name' => 'Rendezés név szerint',
+ 'books_sort_created' => 'Rendezés létrehozás dátuma szerint',
+ 'books_sort_updated' => 'Rendezés frissítés dátuma szerint',
+ 'books_sort_chapters_first' => 'Fejezetek elől',
+ 'books_sort_chapters_last' => 'Fejezetek hátul',
+ 'books_sort_show_other' => 'Egyéb könyvek mutatása',
+ 'books_sort_save' => 'Új elrendezés mentése',
+ 'books_sort_show_other_desc' => 'Adjon hozzá más könyveket, hogy bevonja őket a rendezési műveletbe, és lehetővé tegye a könyvek közötti egyszerű átszervezést.',
+ 'books_sort_move_up' => 'Mozgatás fel',
+ 'books_sort_move_down' => 'Mozgatás le',
+ 'books_sort_move_prev_book' => 'Mozgatás az előző könyvbe',
+ 'books_sort_move_next_book' => 'Mozgatás a következő könyvbe',
+ 'books_sort_move_prev_chapter' => 'Mozgatás az előző fejezetbe',
+ 'books_sort_move_next_chapter' => 'Mozgatás a következő fejezetbe',
+ 'books_sort_move_book_start' => 'Mozgatás a könyv elejére',
+ 'books_sort_move_book_end' => 'Mozgatás a könyv végére',
+ 'books_sort_move_before_chapter' => 'Morgazás a fejezet elé',
+ 'books_sort_move_after_chapter' => 'Mozgatás a fejezet után',
+ 'books_copy' => 'Könyv másolása',
+ 'books_copy_success' => 'Könyv sikeresen lemásolva',
+
+ // Chapters
+ 'chapter' => 'Fejezet',
+ 'chapters' => 'Fejezetek',
+ 'x_chapters' => ':count fejezet|:count fejezetek',
+ 'chapters_popular' => 'Népszerű fejezetek',
+ 'chapters_new' => 'Új fejezet',
+ 'chapters_create' => 'Új fejezet létrehozása',
+ 'chapters_delete' => 'Fejezet törlése',
+ 'chapters_delete_named' => ':chapterName fejezet törlése',
+ 'chapters_delete_explain' => 'A(z) \':chapterName\' törlésére készül. A fejezethez tartozó minden oldal is törlésre fog kerülni.',
+ 'chapters_delete_confirm' => 'Biztosan törölhető ez a fejezet?',
+ 'chapters_edit' => 'Fejezet szerkesztése',
+ 'chapters_edit_named' => ':chapterName fejezet szerkesztése',
+ 'chapters_save' => 'Fejezet mentése',
+ 'chapters_move' => 'Fejezet áthelyezése',
+ 'chapters_move_named' => ':chapterName fejezet áthelyezése',
+ 'chapters_copy' => 'Fejezet másolása',
+ 'chapters_copy_success' => 'Fejezet sikeresen lemásolva',
+ 'chapters_permissions' => 'Fejezet jogosultságok',
+ 'chapters_empty' => 'Jelenleg nincsenek oldalak ebben a fejezetben.',
+ 'chapters_permissions_active' => 'Fejezet jogosultságok aktívak',
+ 'chapters_permissions_success' => 'Fejezet jogosultságok frissítve',
+ 'chapters_search_this' => 'Keresés ebben a fejezetben',
+ 'chapter_sort_book' => 'Könyv rendezése',
+
+ // Pages
+ 'page' => 'Oldal',
+ 'pages' => 'Oldalak',
+ 'x_pages' => ':count oldal|:count oldal',
+ 'pages_popular' => 'Népszerű oldalak',
+ 'pages_new' => 'Új oldal',
+ 'pages_attachments' => 'Csatolmányok',
+ 'pages_navigation' => 'Oldal navigáció',
+ 'pages_delete' => 'Oldal törlése',
+ 'pages_delete_named' => ':pageName oldal törlése',
+ 'pages_delete_draft_named' => ':pageName vázlat oldal törlése',
+ 'pages_delete_draft' => 'Vázlat oldal törlése',
+ 'pages_delete_success' => 'Oldal törölve',
+ 'pages_delete_draft_success' => 'Vázlat oldal törölve',
+ 'pages_delete_warning_template' => 'Ez az oldal aktívan használatban van könyv vagy fejezet alapértelmezett oldalsablonjaként. Ezekhez a könyvekhez vagy fejezetekhez a továbbiakban nem lesz alapértelmezett oldalsablon hozzárendelve az oldal törlése után.',
+ 'pages_delete_confirm' => 'Biztosan törölhető ez az oldal?',
+ 'pages_delete_draft_confirm' => 'Biztosan törölhető ez a vázlatoldal?',
+ 'pages_editing_named' => ':pageName oldal szerkesztése',
+ 'pages_edit_draft_options' => 'Vázlatbeállítások',
+ 'pages_edit_save_draft' => 'Vázlat mentése',
+ 'pages_edit_draft' => 'Oldal vázlat szerkesztése',
+ 'pages_editing_draft' => 'Vázlat szerkesztése',
+ 'pages_editing_page' => 'Oldal szerkesztése',
+ 'pages_edit_draft_save_at' => 'Vázlat elmentve:',
+ 'pages_edit_delete_draft' => 'Vázlat törlése',
+ 'pages_edit_delete_draft_confirm' => 'Biztos benne, hogy törölni kívánja az oldalmódosítások piszkozatát? Az utolsó teljes mentés óta végrehajtott összes módosítása elvész, és a szerkesztő frissül a legfrissebb, nem vázlatos mentési állapottal.',
+ 'pages_edit_discard_draft' => 'Vázlat elvetése',
+ 'pages_edit_switch_to_markdown' => 'Váltás Markdown szerkesztőre',
+ 'pages_edit_switch_to_markdown_clean' => '(Tisztított tartalom)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stabil tartalom)',
+ 'pages_edit_switch_to_wysiwyg' => 'Váltás a WYSIWYG szerkesztőre',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Változásnapló beállítása',
+ 'pages_edit_enter_changelog_desc' => 'A végrehajtott módosítások rövid leírása',
+ 'pages_edit_enter_changelog' => 'Változásnapló megadása',
+ 'pages_editor_switch_title' => 'Szerkesztőváltás',
+ 'pages_editor_switch_are_you_sure' => 'Biztosan módosítani szeretné ennek az oldalnak a szerkesztőjét?',
+ 'pages_editor_switch_consider_following' => 'A szerkesztők módosításakor vegye figyelembe a következőket:',
+ 'pages_editor_switch_consideration_a' => 'Mentés után az új szerkesztő opciót minden jövőbeli szerkesztő használni fogja, beleértve azokat is, amelyek esetleg nem tudják maguk módosítani a szerkesztő típusát.',
+ 'pages_editor_switch_consideration_b' => 'Ez bizonyos körülmények között a részletek és a szintaxis elvesztéséhez vezethet.',
+ 'pages_editor_switch_consideration_c' => 'A legutóbbi mentés óta végrehajtott címke- vagy változásnapló-módosítások nem maradnak fenn a módosítás során.',
+ 'pages_save' => 'Oldal mentése',
+ 'pages_title' => 'Oldal címe',
+ 'pages_name' => 'Oldal neve',
+ 'pages_md_editor' => 'Szerkesztő',
+ 'pages_md_preview' => 'Előnézet',
+ 'pages_md_insert_image' => 'Kép beillesztése',
+ 'pages_md_insert_link' => 'Entitás hivatkozás beillesztése',
+ 'pages_md_insert_drawing' => 'Rajz beillesztése',
+ 'pages_md_show_preview' => 'Előnézet megjelenítése',
+ 'pages_md_sync_scroll' => 'Előnézet pozíció szinkronizálása',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Nem mentett rajz található',
+ 'pages_drawing_unsaved_confirm' => 'A rendszer nem mentett rajzadatokat talált egy korábbi sikertelen rajzmentési kísérletből. Szeretné visszaállítani és folytatni a nem mentett rajz szerkesztését?',
+ 'pages_not_in_chapter' => 'Az oldal nincs fejezetben',
+ 'pages_move' => 'Oldal áthelyezése',
+ 'pages_copy' => 'Oldal másolása',
+ 'pages_copy_desination' => 'Másolás célja',
+ 'pages_copy_success' => 'Oldal sikeresen lemásolva',
+ 'pages_permissions' => 'Oldal jogosultságok',
+ 'pages_permissions_success' => 'Oldal jogosultságok frissítve',
+ 'pages_revision' => 'Változat',
+ 'pages_revisions' => 'Oldal változatai',
+ 'pages_revisions_desc' => 'Az alábbiakban az oldal összes korábbi verziója látható. Visszatekinthet, összehasonlíthatja és visszaállíthatja a régi oldalverziókat, ha az engedélyek lehetővé teszik. Előfordulhat, hogy az oldal teljes előzménye itt nem jelenik meg teljes mértékben, mivel a rendszerkonfigurációtól függően a régi változatok automatikusan törlődnek.',
+ 'pages_revisions_named' => ':pageName oldal változatai',
+ 'pages_revision_named' => ':pageName oldal változata',
+ 'pages_revision_restored_from' => 'Visszaállítva innen: #:id; :summary',
+ 'pages_revisions_created_by' => 'Létrehozta:',
+ 'pages_revisions_date' => 'Változat dátuma',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Változat száma',
+ 'pages_revisions_numbered' => 'Változat #:id',
+ 'pages_revisions_numbered_changes' => '#:id változat módosításai',
+ 'pages_revisions_editor' => 'Szerkesztő típusa',
+ 'pages_revisions_changelog' => 'Változásnapló',
+ 'pages_revisions_changes' => 'Módosítások',
+ 'pages_revisions_current' => 'Aktuális verzió',
+ 'pages_revisions_preview' => 'Előnézet',
+ 'pages_revisions_restore' => 'Visszaállítás',
+ 'pages_revisions_none' => 'Ennek az oldalnak nincsenek változatai',
+ 'pages_copy_link' => 'Hivatkozás másolása',
+ 'pages_edit_content_link' => 'Ugrás a szakaszhoz a szerkesztőben',
+ 'pages_pointer_enter_mode' => 'Lépjen be a szakaszválasztó módba',
+ 'pages_pointer_label' => 'Oldalszakasz beállításai',
+ 'pages_pointer_permalink' => 'Oldalszakasz állandó hivatkozás',
+ 'pages_pointer_include_tag' => 'Oldalszakasz tartalmazza a címkét',
+ 'pages_pointer_toggle_link' => 'Permalink mód, Nyomja meg az include tag megjelenítéséhez',
+ 'pages_pointer_toggle_include' => 'Include tag mód, Nyomja meg az permalink megjelenítéséhez',
+ 'pages_permissions_active' => 'Oldal jogosultságok aktívak',
+ 'pages_initial_revision' => 'Kezdeti közzététel',
+ 'pages_references_update_revision' => 'A belső hivatkozások automatikus frissítése',
+ 'pages_initial_name' => 'Új oldal',
+ 'pages_editing_draft_notification' => 'A jelenleg szerkesztett vázlat legutóbb ekkor volt elmentve: :timeDiff.',
+ 'pages_draft_edited_notification' => 'Ezt az oldalt azóta már frissítették. Javasolt ennek a vázlatnak az elvetése.',
+ 'pages_draft_page_changed_since_creation' => 'Ez az oldal a vázlat létrehozása óta frissült. Javasoljuk, hogy dobja el ezt a piszkozatot, vagy ügyeljen arra, hogy ne írja felül az oldal módosításait.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count felhasználók kezdte el szerkeszteni ezt az oldalt',
+ 'start_b' => ':userName elkezdte szerkeszteni ezt az oldalt',
+ 'time_a' => 'mióta az oldal utoljára frissítve volt',
+ 'time_b' => 'az utolsó :minCount percben',
+ 'message' => ':start :time. Ügyeljen arra, hogy ne írjuk felül egymás frissítéseit!',
+ ],
+ 'pages_draft_discarded' => 'Vázlat elvetve! A szerkesztő frissítve lesz az oldal aktuális tartalmával',
+ 'pages_draft_deleted' => 'Vázlat elvetve! A szerkesztő frissítve lesz az oldal aktuális tartalmával',
+ 'pages_specific' => 'Egy bizonyos oldal',
+ 'pages_is_template' => 'Oldalsablon',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Oldalsáv ki/be',
+ 'page_tags' => 'Oldal címkék',
+ 'chapter_tags' => 'Fejezet címkék',
+ 'book_tags' => 'Könyv címkék',
+ 'shelf_tags' => 'Polc címkék',
+ 'tag' => 'Címke',
+ 'tags' => 'Címkék',
+ 'tags_index_desc' => 'A címkék a rendszeren belüli tartalomra alkalmazhatók a kategorizálás rugalmas formája alkalmazása érdekében. A címkéknek kulcsuk és értékük is lehetnek, de az érték nem kötelező. Alkalmazása után a tartalom lekérdezhető a címkenév és érték használatával.',
+ 'tag_name' => 'Címkenév',
+ 'tag_value' => 'Címke érték (nem kötelező)',
+ 'tags_explain' => "Címkék hozzáadása a tartalom jobb kategorizálásához.\nA mélyebb szervezettség megvalósításához hozzá lehet rendelni egy értéket a címkéhez.",
+ 'tags_add' => 'Másik címke hozzáadása',
+ 'tags_remove' => 'Címke eltávolítása',
+ 'tags_usages' => 'Összes címkehasználat',
+ 'tags_assigned_pages' => 'Oldalakhoz Rendelt',
+ 'tags_assigned_chapters' => 'Fejezetekhez rendelt',
+ 'tags_assigned_books' => 'Könyvekhez Rendelt',
+ 'tags_assigned_shelves' => 'Polcokhoz Rendelt',
+ 'tags_x_unique_values' => ':count egyedi érték',
+ 'tags_all_values' => 'Összes érték',
+ 'tags_view_tags' => 'Címkék megtekintése',
+ 'tags_view_existing_tags' => 'Létező címkék megtekintése',
+ 'tags_list_empty_hint' => 'A címkék hozzárendelhetők az oldalszerkesztő oldalsávján keresztül, vagy egy könyv, fejezet vagy polc adatainak szerkesztése közben.',
+ 'attachments' => 'Csatolmányok',
+ 'attachments_explain' => 'Az oldalon megjelenő fájlok feltöltése vagy hivatkozások csatolása. Az oldal oldalsávjában fognak megjelenni.',
+ 'attachments_explain_instant_save' => 'Az itt történt módosítások azonnal el lesznek mentve.',
+ 'attachments_upload' => 'Fájlfeltöltés',
+ 'attachments_link' => 'Hivatkozás csatolása',
+ 'attachments_upload_drop' => 'Alternatív megoldásként a fájlt ide húzva is fel lehet tölteni mellékletként.',
+ 'attachments_set_link' => 'Hivatkozás beállítása',
+ 'attachments_delete' => 'Biztosan törölhető ez a melléklet?',
+ 'attachments_dropzone' => 'Húzza a file(oka)t ide a feltöltéshez',
+ 'attachments_no_files' => 'Nincsenek fájlok feltöltve',
+ 'attachments_explain_link' => 'Fájl feltöltése helyett hozzá lehet kapcsolni egy hivatkozást. Ez egy hivatkozás lesz egy másik oldalra vagy egy fájlra a felhőben.',
+ 'attachments_link_name' => 'Hivatkozás neve',
+ 'attachment_link' => 'Csatolmány hivatkozás',
+ 'attachments_link_url' => 'Hivatkozás fájlra',
+ 'attachments_link_url_hint' => 'Weboldal vagy fájl webcíme',
+ 'attach' => 'Csatolás',
+ 'attachments_insert_link' => 'Melléklet hivatkozás hozzáadása oldalhoz',
+ 'attachments_edit_file' => 'Fájl szerkesztése',
+ 'attachments_edit_file_name' => 'Fájl neve',
+ 'attachments_edit_drop_upload' => 'Feltöltés és felülírás ejtéssel vagy kattintással',
+ 'attachments_order_updated' => 'Csatolmány sorrend frissítve',
+ 'attachments_updated_success' => 'Csatolmány részletei frissítve',
+ 'attachments_deleted' => 'Csatolmány törölve',
+ 'attachments_file_uploaded' => 'Fájl sikeresen feltöltve',
+ 'attachments_file_updated' => 'Fájl sikeresen frissítve',
+ 'attachments_link_attached' => 'Hivatkozás sikeresen hozzácsatolva az oldalhoz',
+ 'templates' => 'Sablonok',
+ 'templates_set_as_template' => 'Az oldal egy sablon',
+ 'templates_explain_set_as_template' => 'Ez az oldal sablonnak lett beállítva, így a tartalma felhasználható más oldalak létrehozásakor. Más felhasználók is használhatják ezt a sablont ha megtekintési jogosultságuk van ehhez az oldalhoz.',
+ 'templates_replace_content' => 'Oldal tartalmának cseréje',
+ 'templates_append_content' => 'Hozzáfűzés az oldal tartalmához',
+ 'templates_prepend_content' => 'Hozzáadás az oldal tartalmának elejéhez',
+
+ // Profile View
+ 'profile_user_for_x' => 'Felhasználó ez óta: :time',
+ 'profile_created_content' => 'Létrehozott tartalom',
+ 'profile_not_created_pages' => ':userName még nem hozott létre oldalt',
+ 'profile_not_created_chapters' => ':userName még nem hozott létre fejezetet',
+ 'profile_not_created_books' => ':userName még nem hozott létre könyvet',
+ 'profile_not_created_shelves' => ':userName még nem hozott létre polcot',
+
+ // Comments
+ 'comment' => 'Megjegyzés',
+ 'comments' => 'Megjegyzések',
+ 'comment_add' => 'Megjegyzés hozzáadása',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Megjegyzés írása',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Megjegyzés mentése',
+ 'comment_new' => 'Új megjegyzés',
+ 'comment_created' => 'megjegyzést fűzött hozzá :createDiff',
+ 'comment_updated' => 'Frissítve :updateDiff :username által',
+ 'comment_updated_indicator' => 'Frissített',
+ 'comment_deleted_success' => 'Megjegyzés törölve',
+ 'comment_created_success' => 'Megjegyzés hozzáadva',
+ 'comment_updated_success' => 'Megjegyzés frissítve',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Biztosan törölhető ez a megjegyzés?',
+ 'comment_in_reply_to' => 'Válasz erre: :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Itt vannak az ezen az oldalon lévő megjegyzések. Megjegyzések hozzáadhatók és kezelhetők a mentett oldal megtekintésekor.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Biztosan törölhető ez a változat?',
+ 'revision_restore_confirm' => 'Biztosan visszaállítható ez a változat? A oldal jelenlegi tartalma le lesz cserélve.',
+ 'revision_cannot_delete_latest' => 'A legutolsó változat nem törölhető.',
+
+ // Copy view
+ 'copy_consider' => 'Kérem, fontolja meg az alábbiakat, amikor tartalmat kíván másolni.',
+ 'copy_consider_permissions' => 'Az egyéni engedélybeállítások nem kerülnek másolásra.',
+ 'copy_consider_owner' => 'Minden lemásolt tartalomnak Ön lesz a tulajdonosa.',
+ 'copy_consider_images' => 'Az oldalképfájlok nem duplikálódnak, és az eredeti képek megőrzik kapcsolatukat az eredetileg feltöltött oldallal.',
+ 'copy_consider_attachments' => 'Az oldal mellékletei nem kerülnek másolásra.',
+ 'copy_consider_access' => 'A change of location, owner or permissions may result in this content being accessible to those previously without access.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Átalakítás polccá',
+ 'convert_to_shelf_contents_desc' => 'Ezt a könyvet új polccá alakíthatja, azonos tartalommal. A könyvben található fejezetek új könyvekké lesznek átalakítva. Ha ez a könyv tartalmaz olyan oldalakat, amelyek nem szerepelnek egy fejezetben, akkor a könyv átnevezzük és tartalmaz ilyen oldalakat, és ez a könyv az új polc részévé válik.',
+ 'convert_to_shelf_permissions_desc' => 'A könyvhöz beállított engedélyek át lesznek másolva az új polcra és az összes olyan új alárendelt könyvre, amelyek nem rendelkeznek saját engedélyekkel. Vegye figyelembe, hogy a polcokon lévő engedélyek nem kapcsolódnak automatikusan a tartalomhoz, ahogy a könyvek esetében.',
+ 'convert_book' => 'Könyv átalakítása',
+ 'convert_book_confirm' => 'Biztosan konvertálni szeretné ezt a könyvet?',
+ 'convert_undo_warning' => 'Ezt nem lehet olyan könnyen visszavonni.',
+ 'convert_to_book' => 'Átalakítás könyvvé',
+ 'convert_to_book_desc' => 'Ezt a fejezetet új, azonos tartalmú könyvvé alakíthatja. Az ebben a fejezetben beállított engedélyek átmásolódnak az új könyvbe, de a szülőkönyvből származó örökölt engedélyek nem kerülnek másolásra, ami a hozzáférés-szabályozás megváltozásához vezethet.',
+ 'convert_chapter' => 'Fejezet átalakítása',
+ 'convert_chapter_confirm' => 'Biztosan át szeretnéd alakítani ezt a fejezetet?',
+
+ // References
+ 'references' => 'Értékelések',
+ 'references_none' => 'Nincsenek nyomon követett hivatkozások erre az elemre.',
+ 'references_to_desc' => 'Az alábbiakban felsoroljuk az összes ismert tartalmat a rendszerben, amely erre az elemre hivatkozik.',
+
+ // Watch Options
+ 'watch' => 'Megfigyelés',
+ 'watch_title_default' => 'Alapértelmezett beállítások',
+ 'watch_desc_default' => 'Állítsa vissza a megfigyelést az alapértelmezett értesítési beállításokra.',
+ 'watch_title_ignore' => 'Mellőzés',
+ 'watch_desc_ignore' => 'Figyelmen kívül hagyja az összes értesítést, beleértve a felhasználói szintű beállításokból származó értesítéseket is.',
+ 'watch_title_new' => 'Új oldalak',
+ 'watch_desc_new' => 'Értesítés, ha új oldal jön létre ezen az elemen belül.',
+ 'watch_title_updates' => 'Minden oldal frissítése',
+ 'watch_desc_updates' => 'Értesítés minden új oldalról és oldalváltozásról.',
+ 'watch_desc_updates_page' => 'Értesítsen minden oldalváltozásról.',
+ 'watch_title_comments' => 'Az oldal összes frissítése és megjegyzése',
+ 'watch_desc_comments' => 'Értesítés minden új oldalról, oldalváltozásról és új megjegyzésről.',
+ 'watch_desc_comments_page' => 'Értesítés az oldal változásairól és az új megjegyzésekről.',
+ 'watch_change_default' => 'Az alapértelmezett értesítési beállítások módosítása',
+ 'watch_detail_ignore' => 'Az értesítések figyelmen kívül hagyása',
+ 'watch_detail_new' => 'Új oldalak figyelése',
+ 'watch_detail_updates' => 'Új oldalak és frissítések figyelése',
+ 'watch_detail_comments' => 'Új oldalak, frissítések és megjegyzések figyelése',
+ 'watch_detail_parent_book' => 'Megfigyelés szülőkönyvből',
+ 'watch_detail_parent_book_ignore' => 'Figyelmen kívül hagyás a szülőkönyvön keresztül',
+ 'watch_detail_parent_chapter' => 'Megfigyelés szülő fejezetből',
+ 'watch_detail_parent_chapter_ignore' => 'Figyelmen kívül hagyás a szülő fejezeten keresztül',
+];
diff --git a/lang/hu/errors.php b/lang/hu/errors.php
new file mode 100644
index 00000000000..4264af8ab67
--- /dev/null
+++ b/lang/hu/errors.php
@@ -0,0 +1,135 @@
+ 'Nincs jogosultság a kért oldal eléréséhez.',
+ 'permissionJson' => 'Nincs jogosultság a kért művelet végrehajtásához.',
+
+ // Auth
+ 'error_user_exists_different_creds' => ':email címmel már létezik felhasználó, de más hitelesítő adatokkal.',
+ 'auth_pre_register_theme_prevention' => 'A felhasználói fiók nem regisztrálható a megadott adatokkal',
+ 'email_already_confirmed' => 'Az email cím már meg van erősítve, meg lehet próbálni a bejelentkezést.',
+ 'email_confirmation_invalid' => 'A megerősítő vezérjel nem érvényes vagy használva volt. Meg kell próbálni újraregisztrálni.',
+ 'email_confirmation_expired' => 'A megerősítő vezérjel lejárt. Egy új megerősítő email lett elküldve.',
+ 'email_confirmation_awaiting' => 'A használatban lévő fiók email címét meg kell erősíteni',
+ 'ldap_fail_anonymous' => 'Nem sikerült az LDAP elérése névtelen csatlakozással',
+ 'ldap_fail_authed' => 'Az LDAP hozzáférés nem sikerült a megadott DN és jelszó beállításokkal',
+ 'ldap_extension_not_installed' => 'LDAP PHP kiterjesztés nincs telepítve',
+ 'ldap_cannot_connect' => 'Nem lehet kapcsolódni az LDAP kiszolgálóhoz, a kezdeti kapcsolatfelvétel nem sikerült',
+ 'saml_already_logged_in' => 'Már bejelentkezett',
+ 'saml_no_email_address' => 'Ehhez a felhasználóhoz nem található email cím a külső hitelesítő rendszer által átadott adatokban',
+ 'saml_invalid_response_id' => 'A külső hitelesítő rendszerből érkező kérést nem ismerte fel az alkalmazás által indított folyamat. Bejelentkezés után az előző oldalra történő visszalépés okozhatja ezt a hibát.',
+ 'saml_fail_authed' => 'Bejelentkezés :system használatával sikertelen, a rendszer nem biztosított sikeres hitelesítést',
+ 'oidc_already_logged_in' => 'Már bejelentkezett',
+ 'oidc_no_email_address' => 'Ehhez a felhasználóhoz nem található email cím a külső hitelesítő rendszer által átadott adatokban',
+ 'oidc_fail_authed' => 'Bejelentkezés :system használatával sikertelen, a rendszer nem biztosított sikeres hitelesítést',
+ 'social_no_action_defined' => 'Nincs művelet meghatározva',
+ 'social_login_bad_response' => "Hiba történt :socialAccount bejelentkezés közben:\n:error",
+ 'social_account_in_use' => ':socialAccount fiók már használatban van. :socialAccount opción keresztül érdemes megpróbálni a bejelentkezést.',
+ 'social_account_email_in_use' => ':email email cím már használatban van. Ha már van fiók létrehozva, :egy socialAccount fiókot hozzá lehet csatolni a profil beállításainál.',
+ 'social_account_existing' => ':socialAccount már hozzá van kapcsolva a fiókhoz.',
+ 'social_account_already_used_existing' => ':socialAccount fiókot már egy másik felhasználó használja.',
+ 'social_account_not_used' => ':socialAccount fiók nincs felhasználóhoz kapcsolva. A hozzákapcsolást a profil oldalon lehet elvégezni. ',
+ 'social_account_register_instructions' => ':socialAccount beállítása használatával is lehet fiókot regisztrálni, ha még nem volt fiók létrehozva.',
+ 'social_driver_not_found' => 'Közösségi meghajtó nem található',
+ 'social_driver_not_configured' => ':socialAccount közösségi beállítások nem megfelelőek.',
+ 'invite_token_expired' => 'Ez a meghívó hivatkozás lejárt. Helyette meg lehet próbálni új jelszót megadni a fiókhoz.',
+ 'login_user_not_found' => 'A művelethez nem található felhasználó.',
+
+ // System
+ 'path_not_writable' => ':filePath elérési út nem tölthető fel. Ellenőrizni kell, hogy az útvonal a kiszolgáló számára írható.',
+ 'cannot_get_image_from_url' => 'Nem lehet lekérni a képet innen: :url',
+ 'cannot_create_thumbs' => 'A kiszolgáló nem tud létrehozni bélyegképeket. Ellenőrizni kell, hogy telepítve van-a a GD PHP kiterjesztés.',
+ 'server_upload_limit' => 'A kiszolgáló nem engedélyez ilyen méretű feltöltéseket. Kisebb fájlmérettel kell próbálkozni.',
+ 'server_post_limit' => 'A szerver nem tudja fogadni a megadott adatmennyiséget. Próbálkozz újra kevesebb adattal vagy egy kisebb fájllal.',
+ 'uploaded' => 'A kiszolgáló nem engedélyez ilyen méretű feltöltéseket. Kisebb fájlmérettel kell próbálkozni.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Hiba történt a kép feltöltése közben',
+ 'image_upload_type_error' => 'A feltöltött kép típusa érvénytelen',
+ 'image_upload_replace_type' => 'A cserélt képnek azonos típusúnak kell lennie',
+ 'image_upload_memory_limit' => 'A rendszererőforrás-korlátok miatt nem sikerült kezelni a képfeltöltést és/vagy az indexképek létrehozását.',
+ 'image_thumbnail_memory_limit' => 'A rendszererőforrás-korlátok miatt nem sikerült létrehozni a képméret-változatokat.',
+ 'image_gallery_thumbnail_memory_limit' => 'A rendszererőforrás-korlátok miatt nem sikerült létrehozni a galéria bélyegképét.',
+ 'drawing_data_not_found' => 'A rajzadatokat nem sikerült betölteni. Előfordulhat, hogy a rajzfájl már nem létezik, vagy nem rendelkezik hozzáférési engedéllyel.',
+
+ // Attachments
+ 'attachment_not_found' => 'Csatolmány nem található',
+ 'attachment_upload_error' => 'Hiba történt a melléklet feltöltésekor',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Nem sikerült a vázlat mentése. Mentés előtt állítsd helyre az internetkapcsolatot',
+ 'page_draft_delete_fail' => 'Nem sikerült törölni az oldalvázlatot és lekérni az aktuális oldal mentett tartalmat',
+ 'page_custom_home_deletion' => 'Nem lehet oldalt törölni ha kezdőlapnak van beállítva',
+
+ // Entities
+ 'entity_not_found' => 'Entitás nem található',
+ 'bookshelf_not_found' => 'Polc nem található',
+ 'book_not_found' => 'Könyv nem található',
+ 'page_not_found' => 'Oldal nem található',
+ 'chapter_not_found' => 'Fejezet nem található',
+ 'selected_book_not_found' => 'A kiválasztott könyv nem található',
+ 'selected_book_chapter_not_found' => 'A kiválasztott könyv vagy fejezet nem található',
+ 'guests_cannot_save_drafts' => 'Vendégek nem menthetnek el vázlatokat',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Nem lehet törölni az egyetlen adminisztrátort',
+ 'users_cannot_delete_guest' => 'A vendég felhasználót nem lehet törölni',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Ezt a szerepkört nem lehet szerkeszteni',
+ 'role_system_cannot_be_deleted' => 'Ez a szerepkör egy rendszer szerepkör ezért nem törölhető',
+ 'role_registration_default_cannot_delete' => 'Ezt a szerepkört nem lehet törölni amíg alapértelmezés szerinti regisztrációs szerepkörnek van beállítva',
+ 'role_cannot_remove_only_admin' => 'Ez a felhasználó az egyetlen, az adminisztrátor szerepkörhöz rendelt felhasználó. Eltávolítása előtt az adminisztrátor szerepkört át kell ruházni egy másik felhasználóra.',
+
+ // Comments
+ 'comment_list' => 'Hiba történt a megjegyzések lekérése közben.',
+ 'cannot_add_comment_to_draft' => 'Vázlathoz nem lehet megjegyzéseket fűzni.',
+ 'comment_add' => 'Hiba történt a megjegyzés hozzáadása / frissítése közben.',
+ 'comment_delete' => 'Hiba történt a megjegyzés törlése közben.',
+ 'empty_comment' => 'Üres megjegyzést nem lehet hozzáadni.',
+
+ // Error pages
+ '404_page_not_found' => 'Oldal nem található',
+ 'sorry_page_not_found' => 'Sajnáljuk, a keresett oldal nem található.',
+ 'sorry_page_not_found_permission_warning' => 'Ha arra számított, hogy ez az oldal létezik, előfordulhat, hogy nincs engedélye a megtekintésére.',
+ 'image_not_found' => 'A kép nem található',
+ 'image_not_found_subtitle' => 'Sajnáljuk, a keresett kép nem található.',
+ 'image_not_found_details' => 'Ha arra számított, hogy ez a kép létezik, akkor előfordulhat, hogy törölték.',
+ 'return_home' => 'Vissza a kezdőlapra',
+ 'error_occurred' => 'Hiba történt',
+ 'app_down' => ':appName jelenleg nem üzemel',
+ 'back_soon' => 'Hamarosan újra elérhető lesz.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'A kérésben nem található hitelesítési vezérjel',
+ 'api_bad_authorization_format' => 'A kérésben hitelesítési vezérjel található de a formátuma érvénytelennek tűnik',
+ 'api_user_token_not_found' => 'A megadott hitelesítési vezérjelhez nem található egyező API vezérjel',
+ 'api_incorrect_token_secret' => 'Az API tokenhez használt secret helytelen',
+ 'api_user_no_api_permission' => 'A használt API vezérjel tulajdonosának nincs jogosultsága API hívások végrehajtásához',
+ 'api_user_token_expired' => 'A használt hitelesítési vezérjel lejárt',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Hiba történt egy teszt email küldésekor:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'Az URL nem egyezik a konfigurált és engedélyezett SSR-állomásokkal',
+];
diff --git a/lang/hu/notifications.php b/lang/hu/notifications.php
new file mode 100644
index 00000000000..d8a29688a13
--- /dev/null
+++ b/lang/hu/notifications.php
@@ -0,0 +1,29 @@
+ 'Új megjegyzés ezen az oldalon: :pageName',
+ 'new_comment_intro' => 'Egy felhasználó hozzászólt egy oldalon itt: :appName:',
+ 'new_page_subject' => 'Új oldal: :pageName',
+ 'new_page_intro' => 'Az új oldal létrehozása sikeres volt itt: :appName:',
+ 'updated_page_subject' => 'Frissített oldal: :pageName',
+ 'updated_page_intro' => 'Az oldal frissítése sikeres volt itt: :appName:',
+ 'updated_page_debounce' => 'Az értesítések tömegének elkerülése érdekében egy ideig nem kap értesítést az oldal további szerkesztéseiről ugyanaz a szerkesztő.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Oldal neve:',
+ 'detail_page_path' => 'Oldal helye:',
+ 'detail_commenter' => 'Hozzászóló:',
+ 'detail_comment' => 'Megjegyzés:',
+ 'detail_created_by' => 'Készítette:',
+ 'detail_updated_by' => 'Frissítette:',
+
+ 'action_view_comment' => 'Hozzászólás megtekintése',
+ 'action_view_page' => 'Oldal megtekintése',
+
+ 'footer_reason' => 'Ezt az értesítést azért küldtük, mert a :link lefedi ezt a tevékenységtípust ehhez az elemhez.',
+ 'footer_reason_link' => 'értesítési beállításait',
+];
diff --git a/resources/lang/hu/pagination.php b/lang/hu/pagination.php
similarity index 100%
rename from resources/lang/hu/pagination.php
rename to lang/hu/pagination.php
diff --git a/lang/hu/passwords.php b/lang/hu/passwords.php
new file mode 100644
index 00000000000..03a37684ec6
--- /dev/null
+++ b/lang/hu/passwords.php
@@ -0,0 +1,15 @@
+ 'A jelszónak legalább hat karakterből kell állnia, és egyeznie kell a megerősítéssel.',
+ 'user' => "Nem található felhasználó ezzel az e-mail címmel.",
+ 'token' => 'A jelszó visszaállító biztonsági kód nem érvényes ehhez az e-mail címhez.',
+ 'sent' => 'E-mailben elküldtük a jelszó visszaállító hivatkozást!',
+ 'reset' => 'A jelszó visszaállítva!',
+
+];
diff --git a/lang/hu/preferences.php b/lang/hu/preferences.php
new file mode 100644
index 00000000000..fb3c335e8ae
--- /dev/null
+++ b/lang/hu/preferences.php
@@ -0,0 +1,52 @@
+ 'Fiókom',
+
+ 'shortcuts' => 'Billentyűparancsok',
+ 'shortcuts_interface' => 'UI billentyűparancsok beállításai',
+ 'shortcuts_toggle_desc' => 'Itt engedélyezheti vagy letilthatja a navigációhoz és műveletekhez használt billentyűparancsokat.',
+ 'shortcuts_customize_desc' => 'Az alábbi billentyűparancsok testre szabhatók. Csak nyomja meg a kívánt billentyűkombinációt, miután kiválasztotta a billentyűparancshoz tartozó mezőt.',
+ 'shortcuts_toggle_label' => 'A billentyűparancsok engedélyezve',
+ 'shortcuts_section_navigation' => 'Navigáció',
+ 'shortcuts_section_actions' => 'Gyakori műveletek',
+ 'shortcuts_save' => 'Billentyűparancsok mentése',
+ 'shortcuts_overlay_desc' => 'Megjegyzés: Amikor a gyorsbillentyűk engedélyezve vannak, egy segítő átfedés érhető el azzal, hogy a "?" billentyűt megnyomva kiemeli az aktuálisan látható képernyőn elérhető gyorsbillentyűket a műveletekhez.',
+ 'shortcuts_update_success' => 'A gyorsbillentyű-beállítások frissítve lettek!',
+ 'shortcuts_overview_desc' => 'A rendszerfelhasználói felületen történő navigálásához használható billentyűparancsok kezelése.',
+
+ 'notifications' => 'Értesítési beállítások',
+ 'notifications_desc' => 'Állítsd be az e-mail értesítéseket, amelyeket akkor kapsz, ha bizonyos tevékenység történik a rendszeren belül.',
+ 'notifications_opt_own_page_changes' => 'Értesítsen változásokról az általam tulajdonolt oldalakon',
+ 'notifications_opt_own_page_comments' => 'Értesítés a hozzászólásokról az általam tulajdonolt oldalakon',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Értesítsen válaszokról a hozzászólásaimra',
+ 'notifications_save' => 'Beállítások mentése',
+ 'notifications_update_success' => 'Az értesítési beállítások frissítve lettek!',
+ 'notifications_watched' => 'Megfigyelt és figyelmen kívül hagyott elemek',
+ 'notifications_watched_desc' => 'Az alábbi elemekre egyedi figyelési beállítások vannak alkalmazva. A beállítások frissítéséhez tekintsd meg az elemet, majd keresd a figyelési lehetőségeket az oldalsávban.',
+
+ 'auth' => 'Hozzáférés és Biztonság',
+ 'auth_change_password' => 'Jelszó módosítása',
+ 'auth_change_password_desc' => 'Változtasd meg az alkalmazásba történő bejelentkezéshez használt jelszavadat. Ennek legalább 8 karakter hosszúnak kell lennie.',
+ 'auth_change_password_success' => 'A jelszó frissítve lett!',
+
+ 'profile' => 'Felhasználó részletei',
+ 'profile_desc' => 'A kommunikációhoz és a rendszer személyre szabásához használt adatokon kívül kezelheti fiókja adatait, amelyek más felhasználók számára jelennek meg.',
+ 'profile_view_public' => 'Nyilvános profil megtekintése',
+ 'profile_name_desc' => 'Állítsd be a megjelenített nevedet, amely látható lesz a rendszer többi felhasználója számára az általad végzett tevékenység és a saját tartalom révén.',
+ 'profile_email_desc' => 'Ezt az e-mail címet értesítésekre fogjuk használni, valamint az érvényben lévő beállítások függvényében hitelesítéshez is.',
+ 'profile_email_no_permission' => 'Sajnos nincs jogosultságod az e-mail cím megváltoztatására. Ha szeretnéd ezt megváltoztatni, kérj meg egy adminisztrátort, hogy ezt megtegye helyetted.',
+ 'profile_avatar_desc' => 'Válassz egy képet, amelyet a rendszerben használnál a neved mellett. A kép lehetőleg négyzet alakú és körülbelül 256px szélességű és magasságú legyen.',
+ 'profile_admin_options' => 'Adminisztrátori beállítások',
+ 'profile_admin_options_desc' => 'További adminisztrátori szintű lehetőségek, például a szerepkörök hozzárendelésének kezelése, megtalálhatóak a felhasználói fiókod beállításai között az "Beállítások > Felhasználók" területen az alkalmazásban.',
+
+ 'delete_account' => 'Felhasználói fiók törlése',
+ 'delete_my_account' => 'Törlöm a felhasználói fiókomat',
+ 'delete_my_account_desc' => 'Ez véglegesen törölni fogja a felhasználói fiókodat a rendszerből. Nem lesz lehetőséged visszaállítani ezt a fiókot, vagy visszavonni ezt a műveletet. A létrehozott tartalmak, például az oldalak és feltöltött képek megmaradnak.',
+ 'delete_my_account_warning' => 'Biztosan törölni szeretnéd a fiókodat?',
+];
diff --git a/lang/hu/settings.php b/lang/hu/settings.php
new file mode 100644
index 00000000000..53b1cdcc424
--- /dev/null
+++ b/lang/hu/settings.php
@@ -0,0 +1,374 @@
+ 'Beállítások',
+ 'settings_save' => 'Beállítások mentése',
+ 'system_version' => 'Rendszerverzió',
+ 'categories' => 'Kategóriák',
+
+ // App Settings
+ 'app_customization' => 'Személyre szabás',
+ 'app_features_security' => 'Jellemzők és biztonság',
+ 'app_name' => 'Alkalmazás neve',
+ 'app_name_desc' => 'Ez a név meg fog jelenni a fejlécben és minden a rendszer által küldött emailben.',
+ 'app_name_header' => 'Név mutatása a fejlécben',
+ 'app_public_access' => 'Nyilvános hozzáférés',
+ 'app_public_access_desc' => 'Ha engedélyezett, a nem bejelentkezett felhasználók is hozzá tudnak férni a BookStack példány tartalmaihoz.',
+ 'app_public_access_desc_guest' => 'A nyilvános látogatók hozzáférése a "Guest" felhasználón keresztül irányítható.',
+ 'app_public_access_toggle' => 'Nyilvános hozzáférés engedélyezése',
+ 'app_public_viewing' => 'Nyilvános megtekintés engedélyezve?',
+ 'app_secure_images' => 'Magasabb biztonságú képfeltöltés',
+ 'app_secure_images_toggle' => 'Magasabb biztonságú képfeltöltés engedélyezése',
+ 'app_secure_images_desc' => 'Teljesítmény optimalizálási okokból minden kép nyilvános. Ez a beállítás egy véletlenszerű, nehezen kitalálható karakterláncot illeszt a képek útvonalának elejére. Meg kell győződni róla, hogy a könnyű hozzáférés megakadályozása érdekében a könyvtár indexek nincsenek engedélyezve.',
+ 'app_default_editor' => 'Alapértelmezett oldal szerkesztő',
+ 'app_default_editor_desc' => 'Válassza ki, hogy alapértelmezés szerint melyik szerkesztőt szeretné használni az új oldalak szerkesztésekor. Ezt felülírhatja oldalszintű szinten, amennyiben az engedélyek lehetővé teszik.',
+ 'app_custom_html' => 'Egyéni HTML fejléc tartalom',
+ 'app_custom_html_desc' => 'Az itt hozzáadott bármilyen tartalom be lesz illesztve minden oldal szekciójának aljára. Ez hasznos a stílusok felülírásához van analitikai kódok hozzáadásához.',
+ 'app_custom_html_disabled_notice' => 'Az egyéni HTML fejléc tartalom le van tiltva ezen a beállítási oldalon, hogy az esetleg hibásan megadott módosításokat vissza lehessen állítani.',
+ 'app_logo' => 'Alkalmazás logó',
+ 'app_logo_desc' => 'Ez az alkalmazás fejléc sávjában van használva többek között. Ennek a képnek 86 képpont magasnak kell lennie. A nagy képek át lesznek méretezve.',
+ 'app_icon' => 'Alkalmazás ikon',
+ 'app_icon_desc' => 'Ez az ikon a böngésző fülekhez és a gyorsikonokhoz használatos. Ez egy 256 képpont négyzet alakú PNG képnek kell lennie.',
+ 'app_homepage' => 'Alkalmazás kezdőlapja',
+ 'app_homepage_desc' => 'A kezdőlapon az alapértelmezés szerinti nézet helyett megjelenő nézet kiválasztása. A kiválasztott oldalakon figyelmen kívül lesznek hagyva az oldal engedélyek.',
+ 'app_homepage_select' => 'Egy oldal kiválasztása',
+ 'app_footer_links' => 'Lábléc linkek',
+ 'app_footer_links_desc' => 'Adj hozzá linkeket a weboldal láblécéhez. Ezek a legtöbb oldalon megjelennek, beleértve azokat is, amelyekhez nincs szükség bejelentkezésre. Használhatsz egy "trans::" címkét a rendszer által definiált fordítások használatához. Például: A "trans::common.privacy_policy" használata a lefordított szöveget ("Adatvédelmi Irányelvek") adja vissza, és a "trans::common.terms_of_service" a "Szolgáltatási feltételek" lefordított szöveget adja eredményül.',
+ 'app_footer_links_label' => 'Link címke',
+ 'app_footer_links_url' => 'Link URL',
+ 'app_footer_links_add' => 'Lábléc hivatkozás hozzáadása',
+ 'app_disable_comments' => 'Megjegyzések letiltása',
+ 'app_disable_comments_toggle' => 'Megjegyzések letiltása',
+ 'app_disable_comments_desc' => 'Megjegyzések letiltása az alkalmazás összes oldalán. A már létező megjegyzések el lesznek rejtve.',
+
+ // Color settings
+ 'color_scheme' => 'Alkalmazás színséma',
+ 'color_scheme_desc' => 'Állítsd be a színeket az alkalmazás felhasználói felületén. A színeket külön-külön lehet konfigurálni a sötét és a világos módokhoz, hogy a legjobban illeszkedjenek a témához, és biztosítsák az olvashatóságot.',
+ 'ui_colors_desc' => 'Állítsa be az alkalmazás elsődleges színét és alapértelmezett hivatkozási színét. Az elsődleges színt főként a fejléc szalaghirdetéséhez, a gombokhoz és a felület díszítéséhez használják. Az alapértelmezett hivatkozásszín a szöveges hivatkozásokhoz és műveletekhez használatos, mind az írott tartalomban, mind az alkalmazás felületén.',
+ 'app_color' => 'Elsődleges szín',
+ 'link_color' => 'Alapértelmezett link szín',
+ 'content_colors_desc' => 'Beállítja az elemek színét az oldalszervezési hierarchiában. Az olvashatóság szempontjából javasolt az alapértelmezés szerinti színhez hasonló fényerősséget választani.',
+ 'bookshelf_color' => 'Polc színe',
+ 'book_color' => 'Könyv színe',
+ 'chapter_color' => 'Fejezet színe',
+ 'page_color' => 'Oldal színe',
+ 'page_draft_color' => 'Oldalvázlat színe',
+
+ // Registration Settings
+ 'reg_settings' => 'Regisztráció',
+ 'reg_enable' => 'Regisztráció engedélyezése',
+ 'reg_enable_toggle' => 'Regisztráció engedélyezése',
+ 'reg_enable_desc' => 'Ha a regisztráció engedélyezett, akkor a felhasználó képes lesz bejelentkezni mint az alkalmazás egy felhasználója. Regisztráció után egy egyszerű, alapértelmezés szerinti felhasználói szerepkör lesz hozzárendelve.',
+ 'reg_default_role' => 'Regisztráció utáni alapértelmezett felhasználói szerepkör',
+ 'reg_enable_external_warning' => 'A fenti beállítási lehetőség nincs használatban, ha külső LDAP vagy SAML hitelesítés aktív. A nem létező tagok felhasználói fiókjai automatikusan létrejönnek ha a használatban lévő külső rendszeren sikeres a hitelesítés.',
+ 'reg_email_confirmation' => 'Email megerősítés',
+ 'reg_email_confirmation_toggle' => 'Email megerősítés szükséges',
+ 'reg_confirm_email_desc' => 'Ha a tartomány korlátozás be van állítva, akkor email megerősítés szükséges és ez a beállítás figyelmen kívül lesz hagyva.',
+ 'reg_confirm_restrict_domain' => 'Tartomány korlátozás',
+ 'reg_confirm_restrict_domain_desc' => 'Azoknak az email tartományoknak a vesszővel elválasztott listája, melyekre a regisztráció korlátozva lesz. A felhasználók egy emailt fognak kapni, hogy megerősítsék az email címüket mielőtt használni kezdhetnék az alkalmazást. Fontos tudni, hogy a felhasználók a sikeres regisztráció után megváltoztathatják az email címüket.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Nincs beállítva korlátozás',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Karbantartás',
+ 'maint_image_cleanup' => 'Képek tisztítása',
+ 'maint_image_cleanup_desc' => 'Végigolvassa az oldalakat és a tartalmak változatait, hogy leellenőrizze jelenleg mely képek és rajzok vannak használatban, és mely képek szerepelnek többször. A futtatása előtt feltétlen készíteni kell egy teljes adatbázis és lemezkép mentést.',
+ 'maint_delete_images_only_in_revisions' => 'Törölje azokat a képeket is, amelyek csak a régi oldalverziókban léteznek',
+ 'maint_image_cleanup_run' => 'Tisztítás futtatása',
+ 'maint_image_cleanup_warning' => ':count potenciálisan nem használt képet találtam. Biztosan törölhetőek ezek a képek?',
+ 'maint_image_cleanup_success' => ':count potenciálisan nem használt kép megtalálva és törölve!',
+ 'maint_image_cleanup_nothing_found' => 'Nincsenek nem használt képek, semmi sem lett törölve!',
+ 'maint_send_test_email' => 'Teszt e-mail küldése',
+ 'maint_send_test_email_desc' => 'Ez elküld egy teszt emailt a profilban megadott email címre.',
+ 'maint_send_test_email_run' => 'Teszt e-mail küldése',
+ 'maint_send_test_email_success' => 'Email elküldve :address címre',
+ 'maint_send_test_email_mail_subject' => 'Teszt e-mail',
+ 'maint_send_test_email_mail_greeting' => 'Az email kézbesítés működőképesnek tűnik!',
+ 'maint_send_test_email_mail_text' => 'Gratulálunk! Mivel ez az email figyelmeztetés megérkezett az email beállítások megfelelőek.',
+ 'maint_recycle_bin_desc' => 'A törölt polcok, könyvek, fejezetek és oldalak a lomtárba kerülnek, így visszaállíthatók vagy véglegesen törölhetők. A rendszer konfigurációtól függően egy idő után a lomtárban lévő régebbi elemek automatikusan eltávolíthatók.',
+ 'maint_recycle_bin_open' => 'Lomtár megnyitása',
+ 'maint_regen_references' => 'Referenciák újragenerálása',
+ 'maint_regen_references_desc' => 'Ez a művelet újraépíti az adatbázison belüli elemek közötti hivatkozási indexet. Ez általában automatikusan történik, de ez a művelet hasznos lehet régi vagy nem hivatalos módszerekkel hozzáadott tartalom indexeléséhez.',
+ 'maint_regen_references_success' => 'A referenciaindex újragenerálásra került!',
+ 'maint_timeout_command_note' => 'Megjegyzés: Ennek a műveletnek a futtatása időbe telhet, ami bizonyos webes környezetekben időtúllépési problémákhoz vezethet. Alternatív megoldásként ezt a műveletet terminálparancs segítségével is végrehajthatja.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Lomtár',
+ 'recycle_bin_desc' => 'Itt visszaállíthatja a törölt elemeket, vagy dönthet úgy, hogy véglegesen eltávolítja őket a rendszerből. Ez a lista nem szűrhető, ellentétben a rendszer hasonló tevékenységlistáival, ahol engedélyszűrőket alkalmaznak.',
+ 'recycle_bin_deleted_item' => 'Törölt elem',
+ 'recycle_bin_deleted_parent' => 'Szülő',
+ 'recycle_bin_deleted_by' => 'Törölte',
+ 'recycle_bin_deleted_at' => 'Törlés ideje',
+ 'recycle_bin_permanently_delete' => 'Végleges törlés',
+ 'recycle_bin_restore' => 'Visszaállítás',
+ 'recycle_bin_contents_empty' => 'A lomtár jelenleg üres',
+ 'recycle_bin_empty' => 'Lomtár kiürítése',
+ 'recycle_bin_empty_confirm' => 'Ezzel véglegesen megsemmisíti a lomtárban lévő összes elemet, beleértve az egyes tételekben található tartalmat is. Biztos benne, hogy ki akarja üríteni a lomtárat?',
+ 'recycle_bin_destroy_confirm' => 'Ez a művelet véglegesen törli ezt az elemet a rendszerből az alább felsorolt összes alárendelt elemmel együtt, és nem fogja tudni visszaállítani ezt a tartalmat. Biztosan véglegesen törli ezt az elemet?',
+ 'recycle_bin_destroy_list' => 'Megsemmisítendő elemek',
+ 'recycle_bin_restore_list' => 'Visszaállítandó elemek',
+ 'recycle_bin_restore_confirm' => 'Ez a művelet visszaállítja a törölt elemet, beleértve az utódelemeket is, az eredeti helyükre. Ha az eredeti helyet azóta törölték, és most a lomtárban van, akkor a szülőelemet is vissza kell állítani.',
+ 'recycle_bin_restore_deleted_parent' => 'Ennek az elemnek a szülője is törölve lett. Ezek mindaddig törölve maradnak, amíg az adott szülőt is vissza nem állítják.',
+ 'recycle_bin_restore_parent' => 'Szűlő visszaállítása',
+ 'recycle_bin_destroy_notification' => 'Összesen :count elemet törölt a lomtárból.',
+ 'recycle_bin_restore_notification' => 'Összesen :count elemet helyreállítottak a lomtárból.',
+
+ // Audit Log
+ 'audit' => 'Audit napló',
+ 'audit_desc' => 'Ez a napló a rendszerben nyomon követett tevékenységek listáját jeleníti meg. Ez a lista nem szűrhető, ellentétben a rendszer hasonló tevékenységlistáival, ahol engedélyszűrőket alkalmaznak.',
+ 'audit_event_filter' => 'Eseményszűrő',
+ 'audit_event_filter_no_filter' => 'Nincs szűrő',
+ 'audit_deleted_item' => 'Törölt elem',
+ 'audit_deleted_item_name' => 'Név: :name',
+ 'audit_table_user' => 'Felhasználó',
+ 'audit_table_event' => 'Esemény',
+ 'audit_table_related' => 'Kapcsolódó elem vagy részlet',
+ 'audit_table_ip' => 'IP Cím',
+ 'audit_table_date' => 'Tevékenység időpontja',
+ 'audit_date_from' => 'Kezdő dátum',
+ 'audit_date_to' => 'Végdátum',
+
+ // Role Settings
+ 'roles' => 'Szerepkörök',
+ 'role_user_roles' => 'Felhasználói szerepkörök',
+ 'roles_index_desc' => 'A szerepkörök a felhasználók csoportosítására és rendszerengedélyek biztosítására szolgálnak tagjaiknak. Ha egy felhasználó több szerepkör tagja, a megadott jogosultságok halmozódnak, és a felhasználó örökli az összes képességet.',
+ 'roles_x_users_assigned' => ':count hozzárendelt felhasználó|:count hozzárendelt felhasználó',
+ 'roles_x_permissions_provided' => ':count jogosultság|:count jogosultság',
+ 'roles_assigned_users' => 'Hozzárendelt felhasználók',
+ 'roles_permissions_provided' => 'Megadott jogosultságok',
+ 'role_create' => 'Új szerepkör létrehozása',
+ 'role_delete' => 'Szerepkör törlése',
+ 'role_delete_confirm' => 'Ez törölni fogja \':roleName\' szerepkört.',
+ 'role_delete_users_assigned' => 'Ehhez a szerepkörhöz :userCount felhasználó van hozzárendelve. Ha a felhasználókat át kell helyezni ebből a szerepkörből, akkor ki kell választani egy új szerepkört.',
+ 'role_delete_no_migration' => "Nincs felhasználó áthelyezés",
+ 'role_delete_sure' => 'Biztosan törölhető ez a szerepkör?',
+ 'role_edit' => 'Szerepkör szerkesztése',
+ 'role_details' => 'Szerepkör részletei',
+ 'role_name' => 'Szerepkör neve',
+ 'role_desc' => 'Szerepkör rövid leírása',
+ 'role_mfa_enforced' => 'Kétlépcsős hitelesítés megkövetelése',
+ 'role_external_auth_id' => 'Külső hitelesítés azonosítók',
+ 'role_system' => 'Rendszer jogosultságok',
+ 'role_manage_users' => 'Felhasználók kezelése',
+ 'role_manage_roles' => 'Szerepkörök és szerepkör engedélyek kezelése',
+ 'role_manage_entity_permissions' => 'Minden könyv, fejezet és oldalengedély kezelése',
+ 'role_manage_own_entity_permissions' => 'Saját könyv, fejezet és oldalak engedélyeinek kezelése',
+ 'role_manage_page_templates' => 'Oldalsablonok kezelése',
+ 'role_access_api' => 'Hozzáférés a rendszer API-hoz',
+ 'role_manage_settings' => 'Alkalmazás beállításainak kezelése',
+ 'role_export_content' => 'Tartalom exportálása',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Oldalszerkesztő módosítása',
+ 'role_notifications' => 'Értesítések fogadása és kezelése',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Eszköz jogosultságok',
+ 'roles_system_warning' => 'Ne feledje, hogy a fenti három engedély bármelyikéhez való hozzáférés lehetővé teszi a felhasználó számára, hogy módosítsa saját vagy a rendszerben mások jogosultságait. Csak megbízható felhasználókhoz rendeljen szerepeket ezekkel az engedélyekkel.',
+ 'role_asset_desc' => 'Ezek a jogosultságok vezérlik az alapértelmezés szerinti hozzáférést a rendszerben található eszközökhöz. A könyvek, fejezetek és oldalak jogosultságai felülírják ezeket a jogosultságokat.',
+ 'role_asset_admins' => 'Az adminisztrátorok automatikusan hozzáférést kapnak minden tartalomhoz, de ezek a beállítások megjeleníthetnek vagy elrejthetnek felhasználói felület beállításokat.',
+ 'role_asset_image_view_note' => 'Ez a képkezelőn belüli láthatóságra vonatkozik. A feltöltött képfájlok tényleges elérése a rendszerkép tárolási beállításától függ.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Összes',
+ 'role_own' => 'Saját',
+ 'role_controlled_by_asset' => 'Az általuk feltöltött eszköz által ellenőrzött',
+ 'role_save' => 'Szerepkör mentése',
+ 'role_users' => 'Felhasználók ebben a szerepkörben',
+ 'role_users_none' => 'Jelenleg nincsenek felhasználók hozzárendelve ehhez a szerepkörhöz',
+
+ // Users
+ 'users' => 'Felhasználók',
+ 'users_index_desc' => 'Egyéni felhasználói fiókok létrehozása és kezelése a rendszeren belül. A felhasználói fiókok a bejelentkezéshez, valamint a tartalom és tevékenység hozzárendeléséhez használatosak. A hozzáférési engedélyek elsősorban szerepalapúak, de a felhasználói tartalmak tulajdonlása – többek között – befolyásolhatja az engedélyeket és a hozzáférést.',
+ 'user_profile' => 'Felhasználói profil',
+ 'users_add_new' => 'Új felhasználó hozzáadása',
+ 'users_search' => 'Felhasználók keresése',
+ 'users_latest_activity' => 'Legújabb tevékenység',
+ 'users_details' => 'Felhasználó részletei',
+ 'users_details_desc' => 'Egy megjelenítendő név és email cím beállítása ennek a felhasználónak. Az email cím az alkalmazásba történő bejelentkezéshez lesz használva.',
+ 'users_details_desc_no_email' => 'Egy megjelenítendő név beállítása ennek a felhasználónak amiről mások felismerik.',
+ 'users_role' => 'Felhasználói szerepkörök',
+ 'users_role_desc' => 'A felhasználó melyik szerepkörhöz lesz rendelve. Ha a felhasználó több szerepkörhöz van rendelve, akkor ezeknek a szerepköröknek a jogosultságai összeadódnak, és a a felhasználó a hozzárendelt szerepkörök minden képességét megkapja.',
+ 'users_password' => 'Felhasználó jelszava',
+ 'users_password_desc' => 'Az alkalmazásba bejelentkezéshez használható jelszó beállítása. Legalább 8 karakter hosszúnak kell lennie.',
+ 'users_send_invite_text' => 'Lehetséges egy meghívó emailt küldeni ennek a felhasználónak ami lehetővé teszi, hogy beállíthassa a saját jelszavát. Máskülönben a jelszót az erre jogosult felhasználónak kell beállítania.',
+ 'users_send_invite_option' => 'Felhasználó meghívó levél küldése',
+ 'users_external_auth_id' => 'Külső hitelesítés azonosítója',
+ 'users_external_auth_id_desc' => 'Ha külső hitelesítési rendszer van használatban (például SAML2, OIDC vagy LDAP), ez az az azonosító, amely a BookStack felhasználót a hitelesítési rendszerfiókhoz kapcsolja. Ha az alapértelmezett e-mail alapú hitelesítést használja, figyelmen kívül hagyhatja ezt a mezőt.',
+ 'users_password_warning' => 'Csak akkor töltse ki az alábbi mezőt, ha módosítani szeretné ennek a felhasználónak a jelszavát.',
+ 'users_system_public' => 'Ez a felhasználó bármelyik, a példányt megtekintő felhasználót képviseli. Nem lehet vele bejelentkezni de automatikusan hozzá lesz rendelve.',
+ 'users_delete' => 'Felhasználó törlése',
+ 'users_delete_named' => ':userName felhasználó törlése',
+ 'users_delete_warning' => '\':userName\' felhasználó teljesen törölve lesz a rendszerből.',
+ 'users_delete_confirm' => 'Biztosan törölhető ez a felhasználó?',
+ 'users_migrate_ownership' => 'Tulajdonjog átruházása',
+ 'users_migrate_ownership_desc' => 'Válasszon itt egy felhasználót, ha azt szeretné, hogy egy másik felhasználó legyen a tulajdonosa az összes, jelenleg a felhasználó tulajdonában lévő elemnek.',
+ 'users_none_selected' => 'Nincs felhasználó kiválasztva',
+ 'users_edit' => 'Felhasználó szerkesztése',
+ 'users_edit_profile' => 'Profil szerkesztése',
+ 'users_avatar' => 'Avatar használata',
+ 'users_avatar_desc' => 'A felhasználót ábrázoló kép kiválasztása. Kb. 256px méretű négyzetes képnek kell lennie.',
+ 'users_preferred_language' => 'Előnyben részesített nyelv',
+ 'users_preferred_language_desc' => 'Ez a beállítás megváltoztatja az alkalmazás felhasználói felületén használt nyelvet. Nincs hatása a felhasználók által létrehozott tartalomra.',
+ 'users_social_accounts' => 'Közösségi fiókok',
+ 'users_social_accounts_desc' => 'Tekintse meg a felhasználó csatlakoztatott közösségi fiókjainak állapotát. A közösségi fiókok az elsődleges hitelesítési rendszer mellett használhatók a rendszerhez való hozzáféréshez.',
+ 'users_social_accounts_info' => 'Itt lehet egyéb fiókokat hozzákapcsolni a gyorsabb és könnyebb bejelentkezés érdekében. Itt olyan fiókot lehet lecsatlakoztatni, melynek korábban nem volt engedélyezett hozzáférése. Visszavonja a hozzáférést a csatlakoztatott szociális fiók profilbeállításaiból.',
+ 'users_social_connect' => 'Fiók csatlakoztatása',
+ 'users_social_disconnect' => 'Fiók lecsatlakoztatása',
+ 'users_social_status_connected' => 'Csatlakozva',
+ 'users_social_status_disconnected' => 'Lecsatlakozva',
+ 'users_social_connected' => ':socialAccount fiók sikeresen csatlakoztatva a profilhoz.',
+ 'users_social_disconnected' => ':socialAccount fiók sikeresen lecsatlakoztatva a profilról.',
+ 'users_api_tokens' => 'API vezérjelek',
+ 'users_api_tokens_desc' => 'A BookStack REST API-val történő hitelesítéshez használt hozzáférési token létrehozása és kezelése. Az API engedélyeit azon a felhasználón keresztül kezelik, akihez a token tartozik.',
+ 'users_api_tokens_none' => 'Ehhez a felhasználóhoz nincsenek létrehozva API vezérjelek',
+ 'users_api_tokens_create' => 'Vezérjel létrehozása',
+ 'users_api_tokens_expires' => 'Lejárat',
+ 'users_api_tokens_docs' => 'API dokumentáció',
+ 'users_mfa' => 'Többfaktoros hitelesítés',
+ 'users_mfa_desc' => 'Állítsa be a többlépcsős azonosítást egy extra biztonsági rétegként a felhasználói fiókjához.',
+ 'users_mfa_x_methods' => ':count metódus konfigurálva|:count metódus konfigurálva',
+ 'users_mfa_configure' => 'Módszer beállítása',
+
+ // API Tokens
+ 'user_api_token_create' => 'API vezérjel létrehozása',
+ 'user_api_token_name' => 'Név',
+ 'user_api_token_name_desc' => 'Adjon a tokennek egy olvasható nevet, hogy a jövőben emlékeztessen a tervezett céljára.',
+ 'user_api_token_expiry' => 'Lejárati dátum',
+ 'user_api_token_expiry_desc' => 'Dátum megadása ameddig a vezérjel érvényes. Ez után a dátum után az ezzel a vezérjellel történő kérések nem fognak működni. Üresen hagyva a lejárati idő 100 évre lesz beállítva.',
+ 'user_api_token_create_secret_message' => 'Közvetlenül a token létrehozása után egy „Token ID” és „Token Secret” generálódik és jelenik meg. A Secret csak egyszer jelenik meg, ezért a folytatás előtt másolja át az értéket egy biztonságos helyre.',
+ 'user_api_token' => 'API vezérjel',
+ 'user_api_token_id' => 'Vezérjel azonosító',
+ 'user_api_token_id_desc' => 'Ez egy nem szerkeszthető, a rendszer által létrehozott azonosító ehhez a vezérjelhez amire API kérésekben lehet szükség.',
+ 'user_api_token_secret' => 'Vezérjel titkos kódja',
+ 'user_api_token_secret_desc' => 'Ez egy rendszer által generált "secret" ehhez a tokenhez, amelyet meg kell adni az API-kérésekben. Ez csak most jelenik meg, ezért másolja ezt az értéket egy biztonságos helyre.',
+ 'user_api_token_created' => 'Vezérjel létrehozva :timeAgo',
+ 'user_api_token_updated' => 'Vezérjel frissítve :timeAgo',
+ 'user_api_token_delete' => 'Vezérjel törlése',
+ 'user_api_token_delete_warning' => '\':tokenName\' nevű API vezérjel teljesen törölve lesz a rendszerből.',
+ 'user_api_token_delete_confirm' => 'Biztosan törölhető ez az API vezérjel?',
+
+ // Webhooks
+ 'webhooks' => 'Webhook-ok',
+ 'webhooks_index_desc' => 'A webhookok segítségével adatokat küldhetünk külső URL-ekre, amikor bizonyos műveletek és események történnek a rendszeren belül, ami lehetővé teszi az eseményalapú integrációt külső platformokkal, például üzenetküldő vagy értesítési rendszerekkel.',
+ 'webhooks_x_trigger_events' => ':count kiváltó esemény|:count kiváltó esemény',
+ 'webhooks_create' => 'Új webhook létrehozása',
+ 'webhooks_none_created' => 'Még nincs létrehozva egy webhook sem.',
+ 'webhooks_edit' => 'Webhook szerkesztése',
+ 'webhooks_save' => 'Webhook mentése',
+ 'webhooks_details' => 'Webhook részletei',
+ 'webhooks_details_desc' => 'Adjon meg egy felhasználóbarát nevet és egy POST-végpontot a webhook-adatok elküldésének helyeként.',
+ 'webhooks_events' => 'Webhook események',
+ 'webhooks_events_desc' => 'Jelölje ki az összes eseményt, amely kiváltja a webhook meghívását.',
+ 'webhooks_events_warning' => 'Ne feledje, hogy ezek az események az összes kiválasztott eseménynél aktiválódnak, még akkor is, ha egyéni engedélyeket alkalmaznak. Győződjön meg arról, hogy a webhook használata nem tesz közzé bizalmas tartalmat.',
+ 'webhooks_events_all' => 'Minden rendszeresemény',
+ 'webhooks_name' => 'Webhook neve',
+ 'webhooks_timeout' => 'Webhook kérés időtúllépése (másodperc)',
+ 'webhooks_endpoint' => 'Webhook végpont',
+ 'webhooks_active' => 'Webhook aktív',
+ 'webhook_events_table_header' => 'Események',
+ 'webhooks_delete' => 'Webhook törlése',
+ 'webhooks_delete_warning' => 'Ezzel a \':webhookName\' nevű webhookot teljesen törli a rendszerből.',
+ 'webhooks_delete_confirm' => 'Biztosan törli ezt a webhookot?',
+ 'webhooks_format_example' => 'Webhook formátum példa',
+ 'webhooks_format_example_desc' => 'A Webhook-adatok POST-kérésként kerülnek elküldésre a konfigurált végponthoz JSON-ként az alábbi formátumban. A "related_item" és az "url" tulajdonság nem kötelező, és az aktivált esemény típusától függ.',
+ 'webhooks_status' => 'Webhook állapota',
+ 'webhooks_last_called' => 'Utolsó hívás:',
+ 'webhooks_last_errored' => 'Utolsó hiba:',
+ 'webhooks_last_error_message' => 'Utolsó hibaüzenet:',
+
+ // Licensing
+ 'licenses' => 'Licenszek',
+ 'licenses_desc' => 'Ez az oldal a BookStack licencinformációit részletezi, a BookStackben használt projekteken és könyvtárakon kívül. Sok felsorolt projekt csak fejlesztési környezetben használható.',
+ 'licenses_bookstack' => 'BookStack Licensz',
+ 'licenses_php' => 'PHP könyvtár licencek',
+ 'licenses_js' => 'JavaScript könyvtár licencek',
+ 'licenses_other' => 'Egyéb licencek',
+ 'license_details' => 'Licenc részletek',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/hu/validation.php b/lang/hu/validation.php
new file mode 100644
index 00000000000..b740ca0c60a
--- /dev/null
+++ b/lang/hu/validation.php
@@ -0,0 +1,123 @@
+ ':attribute elfogadott kell legyen.',
+ 'active_url' => ':attribute nem érvényes webcím.',
+ 'after' => ':attribute dátumnak :date utáninak kell lennie.',
+ 'alpha' => ':attribute csak betűket tartalmazhat.',
+ 'alpha_dash' => ':attribute csak betűket, számokat és kötőjeleket tartalmazhat.',
+ 'alpha_num' => ':attribute csak betűket és számokat tartalmazhat.',
+ 'array' => ':attribute tömb kell legyen.',
+ 'backup_codes' => 'A megadott kód érvénytelen, vagy már felhasználták.',
+ 'before' => ':attribute dátumnak :date előttinek kell lennie.',
+ 'between' => [
+ 'numeric' => ':attribute értékének :min és :max között kell lennie.',
+ 'file' => ':attribute értékének :min és :max kilobájt között kell lennie.',
+ 'string' => ':attribute hosszának :min és :max karakter között kell lennie.',
+ 'array' => ':attribute mennyiségének :min és :max elem között kell lennie.',
+ ],
+ 'boolean' => ':attribute mezőnek igaznak vagy hamisnak kell lennie.',
+ 'confirmed' => ':attribute megerősítés nem egyezik.',
+ 'date' => ':attribute nem érvényes dátum.',
+ 'date_format' => ':attribute nem egyezik :format formátummal.',
+ 'different' => ':attribute és :other értékének különböznie kell.',
+ 'digits' => ':attribute :digits számból kell álljon.',
+ 'digits_between' => ':attribute hosszának :min és :max számjegy között kell lennie.',
+ 'email' => ':attribute érvényes email cím kell legyen.',
+ 'ends_with' => ':attribute attribútumnak a következők egyikével kell végződnie: :values',
+ 'file' => 'A(z) :attribute érvényes fájlnak kell lennie.',
+ 'filled' => ':attribute mező kötelező.',
+ 'gt' => [
+ 'numeric' => ':attribute nagyobb kell, hogy legyen, mint :value.',
+ 'file' => ':attribute nagyobb kell, hogy legyen, mint :value kilobájt.',
+ 'string' => ':attribute nagyobb kell legyen mint :value karakter.',
+ 'array' => ':attribute több, mint :value elemet kell, hogy tartalmazzon.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute attribútumnak :value értéknél nagyobbnak vagy vele egyenlőnek kell lennie.',
+ 'file' => 'A(z) :attribute mérete nem lehet kevesebb, mint :value kilobájt.',
+ 'string' => 'A(z) :attribute nagyobbnak, vagy egyenlőnek kell lennie, mint a :value karakter.',
+ 'array' => 'A(z) :attribute rendelkezzen :value vagy több elemmel.',
+ ],
+ 'exists' => 'A kiválasztott :attribute érvénytelen.',
+ 'image' => ':attribute kép kell legyen.',
+ 'image_extension' => 'A :attribute kép kiterjesztése érvényes és támogatott kell legyen.',
+ 'in' => 'A kiválasztott :attribute érvénytelen.',
+ 'integer' => ':attribute egész szám kell legyen.',
+ 'ip' => ':attribute érvényes IP cím kell legyen.',
+ 'ipv4' => 'A(z) :attribute érvényes IPv4 címnek kell lennie.',
+ 'ipv6' => 'A(z) :attribute érvényes IPv6 címnek kell lennie.',
+ 'json' => 'A(z) :attribute érvényes JSON stringnek kell lennie.',
+ 'lt' => [
+ 'numeric' => 'A(z) :attribute kisebb kell, hogy legyen, mint :value.',
+ 'file' => 'A(z) :attribute kevesebbnek kell lennie, mint :value kilobájt.',
+ 'string' => 'A(z) :attribute rövidebb kell, hogy legyen, mint :value karakter.',
+ 'array' => 'A(z) :attribute kevesebb, mint :value elemet kell, hogy tartalmazzon.',
+ ],
+ 'lte' => [
+ 'numeric' => 'A(z) :attribute kisebb vagy egyenlő kell, hogy legyen, mint :value.',
+ 'file' => 'A(z) :attribute mérete nem lehet több, mint :value kilobájt.',
+ 'string' => 'A(z) :attribute hossza nem lehet több, mint :value karakter.',
+ 'array' => 'A(z) :attribute legfeljebb :value elemet kell, hogy tartalmazzon.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute nem lehet nagyobb mint :max.',
+ 'file' => ':attribute nem lehet nagyobb mint :max kilobájt.',
+ 'string' => ':attribute nem lehet nagyobb mint :max karakter.',
+ 'array' => ':attribute mennyisége nem lehet több mint :max elem.',
+ ],
+ 'mimes' => 'A :attribute típusa csak :values lehet.',
+ 'min' => [
+ 'numeric' => ':attribute legalább :min kell legyen.',
+ 'file' => ':attribute legalább :min kilobájt kell legyen.',
+ 'string' => ':attribute legalább :min karakter kell legyen.',
+ 'array' => ':attribute legalább :min elem kell legyen.',
+ ],
+ 'not_in' => 'A kiválasztott :attribute érvénytelen.',
+ 'not_regex' => ':attribute formátuma érvénytelen.',
+ 'numeric' => ':attribute szám kell legyen.',
+ 'regex' => ':attribute formátuma érvénytelen.',
+ 'required' => ':attribute mező kötelező.',
+ 'required_if' => ':attribute mező kötelező ha :other értéke :value.',
+ 'required_with' => ':attribute mező kötelező ha :values be van állítva.',
+ 'required_with_all' => ':attribute mező kötelező ha van :value.',
+ 'required_without' => ':attribute mező kötelező ha :values nincs beállítva.',
+ 'required_without_all' => ':attribute mező kötelező ha egyik :values sincs beállítva.',
+ 'same' => ':attribute és :other értékének egyeznie kell.',
+ 'safe_url' => 'Előfordulhat, hogy a megadott link nem biztonságos.',
+ 'size' => [
+ 'numeric' => ':attribute :size méretű kell legyen.',
+ 'file' => ':attribute :size kilobájt méretű kell legyen.',
+ 'string' => ':attribute :size karakter kell legyen.',
+ 'array' => ':attribute : size elemet kell tartalmazzon.',
+ ],
+ 'string' => ':attribute karaktersorozatnak kell legyen.',
+ 'timezone' => ':attribute érvényes zóna kell legyen.',
+ 'totp' => 'A megadott kód érvénytelen vagy lejárt.',
+ 'unique' => ':attribute már elkészült.',
+ 'url' => ':attribute formátuma érvénytelen.',
+ 'uploaded' => 'A fájlt nem lehet feltölteni. A kiszolgáló nem fogad el ilyen méretű fájlokat.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Jelszó megerősítés szükséges',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/id/activities.php b/lang/id/activities.php
new file mode 100644
index 00000000000..6e1583a94e7
--- /dev/null
+++ b/lang/id/activities.php
@@ -0,0 +1,140 @@
+ 'telah membuat halaman',
+ 'page_create_notification' => 'Jenis Halaman berhasil dibuat',
+ 'page_update' => 'halaman telah diperbaharui',
+ 'page_update_notification' => 'Halaman berhasil diperbarui',
+ 'page_delete' => 'halaman dihapus',
+ 'page_delete_notification' => 'Halaman berhasil dihapus',
+ 'page_restore' => 'halaman telah dipulihkan',
+ 'page_restore_notification' => 'Halaman berhasil dipulihkan',
+ 'page_move' => 'halaman dipindahkan',
+ 'page_move_notification' => 'Halaman berhasil dipindahkan',
+
+ // Chapters
+ 'chapter_create' => 'membuat bab',
+ 'chapter_create_notification' => 'Bab berhasil dibuat',
+ 'chapter_update' => 'bab diperbaharui',
+ 'chapter_update_notification' => 'Bab berhasil diperbarui',
+ 'chapter_delete' => 'hapus bab',
+ 'chapter_delete_notification' => 'Bab berhasil dihapus',
+ 'chapter_move' => 'bab dipindahkan',
+ 'chapter_move_notification' => 'Bab berhasil dipindahkan',
+
+ // Books
+ 'book_create' => 'membuat buku',
+ 'book_create_notification' => 'Buku berhasil dibuat',
+ 'book_create_from_chapter' => 'mengkonversi bab ke buku',
+ 'book_create_from_chapter_notification' => 'Bab berhasil dikonversi menjadi buku',
+ 'book_update' => 'update buku',
+ 'book_update_notification' => 'Buku berhasil diperbarui',
+ 'book_delete' => 'hapus buku',
+ 'book_delete_notification' => 'Buku berhasil dihapus',
+ 'book_sort' => 'buku yang diurutkan',
+ 'book_sort_notification' => 'Buku berhasil diurutkan',
+
+ // Bookshelves
+ 'bookshelf_create' => 'membuat rak',
+ 'bookshelf_create_notification' => 'Rak berhasil dibuat',
+ 'bookshelf_create_from_book' => 'mengkonversi buku ke rak',
+ 'bookshelf_create_from_book_notification' => 'Buku berhasil dikonversi menjadi rak',
+ 'bookshelf_update' => 'memperbarui rak',
+ 'bookshelf_update_notification' => 'Rak berhasil diperbarui',
+ 'bookshelf_delete' => 'menghapus rak',
+ 'bookshelf_delete_notification' => 'Rak berhasil dihapus',
+
+ // Revisions
+ 'revision_restore' => 'revisi yang dipulihkan',
+ 'revision_delete' => 'revisi yang dihapus',
+ 'revision_delete_notification' => 'Revisi berhasil dihapus',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" telah ditambahkan ke favorit Anda',
+ 'favourite_remove_notification' => '":name" telah dihapus dari favorit Anda',
+
+ // Watching
+ 'watch_update_level_notification' => 'Preferensi pantauan berhasil diperbarui',
+
+ // Auth
+ 'auth_login' => 'telah masuk',
+ 'auth_register' => 'daftar sebagai user baru',
+ 'auth_password_reset_request' => 'permintaan pengguna mengatur ulang kata sandi',
+ 'auth_password_reset_update' => 'atur ulang kata sandi pengguna',
+ 'mfa_setup_method' => 'metode MFA yang dikonfigurasi',
+ 'mfa_setup_method_notification' => 'Metode multi-faktor sukses dikonfigurasi',
+ 'mfa_remove_method' => 'menghapus metode MFA',
+ 'mfa_remove_method_notification' => 'Metode multi-faktor sukses dihapus',
+
+ // Settings
+ 'settings_update' => 'memperbarui setelan',
+ 'settings_update_notification' => 'Pengaturan berhasil diperbarui',
+ 'maintenance_action_run' => 'menjalankan tindakan pemeliharaan',
+
+ // Webhooks
+ 'webhook_create' => 'membuat webhook',
+ 'webhook_create_notification' => 'Webhook berhasil dibuat',
+ 'webhook_update' => 'memperbarui webhook',
+ 'webhook_update_notification' => 'Webhook berhasil diperbarui',
+ 'webhook_delete' => 'menghapus webhook',
+ 'webhook_delete_notification' => 'Webhook berhasil dihapus',
+
+ // Imports
+ 'import_create' => 'telat membuat impor',
+ 'import_create_notification' => 'Impor berhasil diunggah',
+ 'import_run' => 'telah memperbarui impor',
+ 'import_run_notification' => 'Konten berhasil diimpor',
+ 'import_delete' => 'telah menghapus impor',
+ 'import_delete_notification' => 'Impor berhasil dihapus',
+
+ // Users
+ 'user_create' => 'pengguna yang dibuat',
+ 'user_create_notification' => 'Pengguna berhasil dibuat',
+ 'user_update' => 'perbarui Pengguna',
+ 'user_update_notification' => 'Pengguna berhasil diperbarui',
+ 'user_delete' => 'pengguna yang dihapus',
+ 'user_delete_notification' => 'Pengguna berhasil dihapus',
+
+ // API Tokens
+ 'api_token_create' => 'API token yang dibuat',
+ 'api_token_create_notification' => 'Token API berhasil dibuat',
+ 'api_token_update' => 'token API yang diperbarui',
+ 'api_token_update_notification' => 'token API berhasil dirubah',
+ 'api_token_delete' => 'token API yang dihapus',
+ 'api_token_delete_notification' => 'token API berhasil dihapus ',
+
+ // Roles
+ 'role_create' => 'telah membuat peran',
+ 'role_create_notification' => 'Peran berhasil dibuat',
+ 'role_update' => 'telah memperbarui peran',
+ 'role_update_notification' => 'Peran berhasil diperbarui',
+ 'role_delete' => 'telah menghapus peran',
+ 'role_delete_notification' => 'Peran berhasil dihapus',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'telah mengosongkan tempat sampah',
+ 'recycle_bin_restore' => 'telah mengembalikan dari tempat sampah',
+ 'recycle_bin_destroy' => 'telah menghapus dari tempat sampah',
+
+ // Comments
+ 'commented_on' => 'berkomentar pada',
+ 'comment_create' => 'telah menambah komentar',
+ 'comment_update' => 'telah memperbarui komentar',
+ 'comment_delete' => 'telah menghapus komentar',
+
+ // Sort Rules
+ 'sort_rule_create' => 'telah membuat aturan penyortiran',
+ 'sort_rule_create_notification' => 'Aturan penyortiran berhasil dibuat',
+ 'sort_rule_update' => 'telah mengubah aturan penyortiran',
+ 'sort_rule_update_notification' => 'Aturan penyortiran berhasil diubah',
+ 'sort_rule_delete' => 'telah menghapus aturan penyortiran',
+ 'sort_rule_delete_notification' => 'Aturan penyortiran berhasil dihapus',
+
+ // Other
+ 'permissions_update' => 'izin diperbarui',
+];
diff --git a/lang/id/auth.php b/lang/id/auth.php
new file mode 100644
index 00000000000..6af60ca80b1
--- /dev/null
+++ b/lang/id/auth.php
@@ -0,0 +1,117 @@
+ 'Kredensial tidak cocok dengan catatan kami.',
+ 'throttle' => 'Terlalu banyak upaya masuk. Silahkan mencoba lagi dalam :seconds detik.',
+
+ // Login & Register
+ 'sign_up' => 'Daftar',
+ 'log_in' => 'Gabung',
+ 'log_in_with' => 'Masuk dengan :socialDriver',
+ 'sign_up_with' => 'Daftar dengan :socialDriver',
+ 'logout' => 'Keluar',
+
+ 'name' => 'Nama',
+ 'username' => 'Nama Pengguna',
+ 'email' => 'Email',
+ 'password' => 'Kata Sandi',
+ 'password_confirm' => 'Konfirmasi Kata Sandi',
+ 'password_hint' => 'Harus minimal 8 karakter',
+ 'forgot_password' => 'Lupa Password?',
+ 'remember_me' => 'Ingat saya',
+ 'ldap_email_hint' => 'Harap masukkan email yang akan digunakan untuk akun ini.',
+ 'create_account' => 'Membuat Akun',
+ 'already_have_account' => 'Sudah punya akun?',
+ 'dont_have_account' => 'Tidak punya akun?',
+ 'social_login' => 'Masuk dengan sosial media',
+ 'social_registration' => 'Daftar dengan sosial media',
+ 'social_registration_text' => 'Daftar dan masuk menggunakan layanan lain.',
+
+ 'register_thanks' => 'Terima kasih telah mendaftar!',
+ 'register_confirm' => 'Silakan periksa email Anda dan klik tombol konfirmasi untuk mengakses :appName.',
+ 'registrations_disabled' => 'Pendaftaran saat ini dinonaktifkan',
+ 'registration_email_domain_invalid' => 'Domain email tersebut tidak memiliki akses ke aplikasi ini',
+ 'register_success' => 'Terima kasih telah mendaftar! Anda sekarang terdaftar dan masuk.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Mencoba masuk',
+ 'auto_init_starting_desc' => 'Kami sedang menghubungi sistem autentikasi Anda untuk memulai proses login. Jika tidak ada kemajuan setelah 5 detik, Anda dapat mencoba mengklik link di bawah ini.',
+ 'auto_init_start_link' => 'Lanjutkan dengan otentikasi',
+
+ // Password Reset
+ 'reset_password' => 'Atur ulang kata sandi',
+ 'reset_password_send_instructions' => 'Masukkan email Anda di bawah ini dan Anda akan dikirimi email dengan tautan pengaturan ulang kata sandi.',
+ 'reset_password_send_button' => 'Kirim Tautan Atur Ulang',
+ 'reset_password_sent' => 'Tautan pengaturan ulang kata sandi akan dikirim ke :email jika alamat email ditemukan di sistem.',
+ 'reset_password_success' => 'Kata sandi Anda telah berhasil diatur ulang.',
+ 'email_reset_subject' => 'Atur ulang kata sandi :appName anda',
+ 'email_reset_text' => 'Anda menerima email ini karena kami menerima permintaan pengaturan ulang kata sandi untuk akun Anda.',
+ 'email_reset_not_requested' => 'Jika Anda tidak meminta pengaturan ulang kata sandi, tidak ada tindakan lebih lanjut yang diperlukan.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Konfirmasikan email Anda di :appName',
+ 'email_confirm_greeting' => 'Terima kasih telah bergabung :appName!',
+ 'email_confirm_text' => 'Silakan konfirmasi alamat email Anda dengan mengklik tombol di bawah ini:',
+ 'email_confirm_action' => 'Konfirmasi email',
+ 'email_confirm_send_error' => 'Konfirmasi email diperlukan tetapi sistem tidak dapat mengirim email. Hubungi admin untuk memastikan email disiapkan dengan benar.',
+ 'email_confirm_success' => 'Email Anda sudah terkonfirmasi! Anda seharusnya sudah bisa masuk menggunakan email ini.',
+ 'email_confirm_resent' => 'Email konfirmasi dikirim ulang, Harap periksa kotak masuk Anda.',
+ 'email_confirm_thanks' => 'Terima kasih untuk mengkonfirmasi!',
+ 'email_confirm_thanks_desc' => 'Harap tunggu sebentar, konfirmasi Anda sedang ditangani. Jika Anda tidak dipindahkan setelah 3 detik, tekan link "Selanjutnya" dibawah ini untuk melanjutkan.',
+
+ 'email_not_confirmed' => 'Alamat Email Tidak Dikonfirmasi',
+ 'email_not_confirmed_text' => 'Alamat email Anda belum dikonfirmasi.',
+ 'email_not_confirmed_click_link' => 'Silakan klik link di email yang dikirimkan segera setelah Anda mendaftar.',
+ 'email_not_confirmed_resend' => 'Jika Anda tidak dapat menemukan email tersebut, Anda dapat mengirim ulang email konfirmasi dengan mengirimkan formulir di bawah ini.',
+ 'email_not_confirmed_resend_button' => 'Mengirimkan kembali email konfirmasi',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Anda telah diundang untuk bergabung di :appName!',
+ 'user_invite_email_greeting' => 'Sebuah akun telah dibuat untuk Anda di :appName.',
+ 'user_invite_email_text' => 'Klik tombol di bawah untuk mengatur kata sandi akun dan mendapatkan akses:',
+ 'user_invite_email_action' => 'Atur Kata Sandi Akun',
+ 'user_invite_page_welcome' => 'Selamat datang di :appName!',
+ 'user_invite_page_text' => 'Untuk menyelesaikan akun Anda dan mendapatkan akses, Anda perlu mengatur kata sandi yang akan digunakan untuk masuk ke :appName pada kunjungan berikutnya.',
+ 'user_invite_page_confirm_button' => 'Konfirmasi Kata sandi',
+ 'user_invite_success_login' => 'Kata sandi diset, Anda seharusnya sudah bisa masuk menggunakan kata sandi yang sudah diset untuk mengakses :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Atur Multi-Factor Otentikasi',
+ 'mfa_setup_desc' => 'Mengatur multi-factor otentikasi sebagai tambahan ekstra keamanan untuk akun Anda.',
+ 'mfa_setup_configured' => 'Sudah dikonfigurasi',
+ 'mfa_setup_reconfigure' => 'Konfigurasi ulang',
+ 'mfa_setup_remove_confirmation' => 'Apakah Anda yakin ingin menghapus metode autentikasi multi-faktor ini?',
+ 'mfa_setup_action' => 'Atur',
+ 'mfa_backup_codes_usage_limit_warning' => 'Anda memiliki kurang dari 5 kode cadangan yang tersisa. Harap buat dan simpan set baru sebelum Anda kehabisan kode untuk mencegah akun Anda terkunci.',
+ 'mfa_option_totp_title' => 'Aplikasi Seluler',
+ 'mfa_option_totp_desc' => 'Untuk menggunakan autentikasi multi-faktor, Anda memerlukan aplikasi seluler yang mendukung TOTP seperti Google Authenticator, Authy, atau Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Kode Cadangan',
+ 'mfa_option_backup_codes_desc' => 'Menghasilkan serangkaian kode cadangan sekali pakai yang akan Anda masukkan saat masuk untuk memverifikasi identitas Anda. Pastikan untuk menyimpannya di tempat yang aman.',
+ 'mfa_gen_confirm_and_enable' => 'Konfirmasi dan Aktifkan',
+ 'mfa_gen_backup_codes_title' => 'Pengaturan Kode Cadangan',
+ 'mfa_gen_backup_codes_desc' => 'Simpan daftar kode di bawah ini di tempat yang aman. Saat mengakses sistem, Anda dapat menggunakan salah satu kode sebagai mekanisme autentikasi kedua.',
+ 'mfa_gen_backup_codes_download' => 'Unduh Kode',
+ 'mfa_gen_backup_codes_usage_warning' => 'Setiap kode hanya dapat digunakan satu kali',
+ 'mfa_gen_totp_title' => 'Pengaturan Aplikasi Seluler',
+ 'mfa_gen_totp_desc' => 'Untuk menggunakan autentikasi multi-faktor, Anda memerlukan aplikasi seluler yang mendukung TOTP seperti Google Authenticator, Authy, atau Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Pindai kode QR di bawah ini menggunakan aplikasi autentikasi pilihan Anda untuk memulai.',
+ 'mfa_gen_totp_verify_setup' => 'Verifikasi Pengaturan',
+ 'mfa_gen_totp_verify_setup_desc' => 'Verifikasi bahwa semuanya berfungsi dengan memasukkan kode yang dibuat dalam aplikasi autentikasi Anda pada kolom input di bawah ini:',
+ 'mfa_gen_totp_provide_code_here' => 'Berikan kode yang dihasilkan aplikasi Anda di sini',
+ 'mfa_verify_access' => 'Verifikasi Akses',
+ 'mfa_verify_access_desc' => 'Akun pengguna Anda mengharuskan Anda mengonfirmasi identitas Anda melalui tingkat verifikasi tambahan sebelum Anda diberikan akses. Verifikasi menggunakan salah satu metode yang telah Anda konfigurasikan untuk melanjutkan.',
+ 'mfa_verify_no_methods' => 'Tidak Ada Metode yang Dikonfigurasi',
+ 'mfa_verify_no_methods_desc' => 'Tidak ada metode autentikasi multi-faktor yang ditemukan untuk akun Anda. Anda perlu menyiapkan setidaknya satu metode sebelum mendapatkan akses.',
+ 'mfa_verify_use_totp' => 'Verifikasi menggunakan aplikasi seluler',
+ 'mfa_verify_use_backup_codes' => 'Verifikasi menggunakan kode cadangan',
+ 'mfa_verify_backup_code' => 'Kode Cadangan',
+ 'mfa_verify_backup_code_desc' => 'Masukkan salah satu kode cadangan Anda yang tersisa di bawah ini:',
+ 'mfa_verify_backup_code_enter_here' => 'Masukkan kode cadangan di sini',
+ 'mfa_verify_totp_desc' => 'Masukkan kode yang dibuat menggunakan aplikasi seluler Anda di bawah ini:',
+ 'mfa_setup_login_notification' => 'Metode multi-faktor dikonfigurasi. Silakan masuk lagi menggunakan metode yang dikonfigurasi.',
+];
diff --git a/lang/id/common.php b/lang/id/common.php
new file mode 100644
index 00000000000..cee2d327ff0
--- /dev/null
+++ b/lang/id/common.php
@@ -0,0 +1,115 @@
+ 'Batal',
+ 'close' => 'Tutup',
+ 'confirm' => 'Konfirmasi',
+ 'back' => 'Kembali',
+ 'save' => 'Simpan',
+ 'continue' => 'Lanjutkan',
+ 'select' => 'Pilih',
+ 'toggle_all' => 'Alihkan Semua',
+ 'more' => 'Lebih banyak',
+
+ // Form Labels
+ 'name' => 'Nama',
+ 'description' => 'Deskripsi',
+ 'role' => 'Peran',
+ 'cover_image' => 'Sampul gambar',
+ 'cover_image_description' => 'Gambar ini harus berukuran sekitar 440x250px walaupun nanti akan disesuaikan & terpotong secara fleksibel agar sesuai dengan tampilan pengguna, sehingga dimensi sebenarnya untuk tampilan akan berbeda.',
+
+ // Actions
+ 'actions' => 'Tindakan',
+ 'view' => 'Lihat',
+ 'view_all' => 'Lihat Semua',
+ 'new' => 'Buat Baru',
+ 'create' => 'Buat',
+ 'update' => 'Perbarui',
+ 'edit' => 'Sunting',
+ 'archive' => 'Buat Arsip',
+ 'unarchive' => 'Batalkan Arsip',
+ 'sort' => 'Sortir',
+ 'move' => 'Pindahkan',
+ 'copy' => 'Salin',
+ 'reply' => 'Balas',
+ 'delete' => 'Hapus',
+ 'delete_confirm' => 'Konfirmasi Penghapusan',
+ 'search' => 'Cari',
+ 'search_clear' => 'Hapus Pencarian',
+ 'reset' => 'Atur ulang',
+ 'remove' => 'Hapus',
+ 'add' => 'Tambah',
+ 'configure' => 'Atur',
+ 'manage' => 'Kelola',
+ 'fullscreen' => 'Layar Penuh',
+ 'favourite' => 'Favorit',
+ 'unfavourite' => 'Batal favorit',
+ 'next' => 'Selanjutnya',
+ 'previous' => 'Sebelumnya',
+ 'filter_active' => 'Filter Aktif:',
+ 'filter_clear' => 'Hapus Filter',
+ 'download' => 'Unduh',
+ 'open_in_tab' => 'Buka di tab baru',
+ 'open' => 'Buka',
+
+ // Sort Options
+ 'sort_options' => 'Opsi Sortir',
+ 'sort_direction_toggle' => 'Urutkan Arah Alihan',
+ 'sort_ascending' => 'Sortir Menaik',
+ 'sort_descending' => 'Sortir Menurun',
+ 'sort_name' => 'Nama',
+ 'sort_default' => 'Bawaan',
+ 'sort_created_at' => 'Tanggal Dibuat',
+ 'sort_updated_at' => 'Tanggal Diperbarui',
+
+ // Misc
+ 'deleted_user' => 'Pengguna yang Dihapus',
+ 'no_activity' => 'Tidak ada aktivitas untuk ditampilkan',
+ 'no_items' => 'Tidak ada item yang tersedia',
+ 'back_to_top' => 'Kembali ke atas',
+ 'skip_to_main_content' => 'Lewatkan ke konten utama',
+ 'toggle_details' => 'Rincian Alihan',
+ 'toggle_thumbnails' => 'Alihkan Gambar Mini',
+ 'details' => 'Rincian',
+ 'grid_view' => 'Tampilan Bergaris',
+ 'list_view' => 'Tampilan Daftar',
+ 'default' => 'Bawaan',
+ 'breadcrumb' => 'Breadcrumb',
+ 'status' => 'Status',
+ 'status_active' => 'Aktif',
+ 'status_inactive' => 'Tidak Aktif',
+ 'never' => 'Jangan Pernah',
+ 'none' => 'Tidak Satupun',
+
+ // Header
+ 'homepage' => 'Beranda',
+ 'header_menu_expand' => 'Perluas Menu Tajuk',
+ 'profile_menu' => 'Menu Profil',
+ 'view_profile' => 'Tampilkan Profil',
+ 'edit_profile' => 'Sunting Profil',
+ 'dark_mode' => 'Mode Gelap',
+ 'light_mode' => 'Mode Terang',
+ 'global_search' => 'Pencarian Global',
+
+ // Layout tabs
+ 'tab_info' => 'Informasi',
+ 'tab_info_label' => 'Tab: Tampilkan Informasi Sekunder',
+ 'tab_content' => 'Konten',
+ 'tab_content_label' => 'Tab: Tampilkan Informasi Utama',
+
+ // Email Content
+ 'email_action_help' => 'Jika Anda mengalami masalah saat mengklik tombol ":actionText", salin dan tempel URL di bawah ke dalam peramban web Anda:',
+ 'email_rights' => 'Hak cipta dilindungi',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Kebijakan Privasi',
+ 'terms_of_service' => 'Ketentuan Layanan',
+
+ // OpenSearch
+ 'opensearch_description' => 'Cari :appName',
+];
diff --git a/lang/id/components.php b/lang/id/components.php
new file mode 100644
index 00000000000..6f1f905a42a
--- /dev/null
+++ b/lang/id/components.php
@@ -0,0 +1,46 @@
+ 'Pilih Gambar',
+ 'image_list' => 'Daftar Gambar',
+ 'image_details' => 'Detail Gambar',
+ 'image_upload' => 'Unggah Gambar',
+ 'image_intro' => 'Di sini Anda dapat memilih dan mengelola gambar yang sebelumnya diunggah ke sistem.',
+ 'image_intro_upload' => 'Unggah gambar baru dengan menyeret berkas gambar ke jendela ini, atau dengan menggunakan tombol "Unggah Gambar" di atas.',
+ 'image_all' => 'Semua',
+ 'image_all_title' => 'Lihat semua gambar',
+ 'image_book_title' => 'Lihat gambar untuk diunggah ke buku ini',
+ 'image_page_title' => 'Lihat gambar yang diunggah ke halaman ini',
+ 'image_search_hint' => 'Cari berdasarkan nama gambar',
+ 'image_uploaded' => 'Diunggah :uploadedDate',
+ 'image_uploaded_by' => 'Diunggah oleh :userName',
+ 'image_uploaded_to' => 'Diunggah ke :pageLink',
+ 'image_updated' => 'Diperbarui :updateDate',
+ 'image_load_more' => 'Muat lebih banyak',
+ 'image_image_name' => 'Muat lebih banyak',
+ 'image_delete_used' => 'Gambar ini digunakan untuk halaman dibawah ini.',
+ 'image_delete_confirm_text' => 'Anda yakin ingin menghapus gambar ini?',
+ 'image_select_image' => 'Pilih gambar',
+ 'image_dropzone' => 'Lepaskan gambar atau klik di sini untuk mengunggah',
+ 'image_dropzone_drop' => 'Letakkan gambar di sini untuk diunggah',
+ 'images_deleted' => 'Gambar Dihapus',
+ 'image_preview' => 'Pratinjau Gambar',
+ 'image_upload_success' => 'Gambar berhasil diunggah',
+ 'image_update_success' => 'Detail gambar berhasil diperbarui',
+ 'image_delete_success' => 'Gambar berhasil dihapus',
+ 'image_replace' => 'Ganti Gambar',
+ 'image_replace_success' => 'Detail gambar berhasil diperbarui',
+ 'image_rebuild_thumbs' => 'Buat Ulang Variasi Ukuran',
+ 'image_rebuild_thumbs_success' => 'Variasi ukuran gambar berhasil dibuat ulang!',
+
+ // Code Editor
+ 'code_editor' => 'Edit Kode',
+ 'code_language' => 'Bahasa Kode',
+ 'code_content' => 'Konten Kode',
+ 'code_session_history' => 'Konten Kode',
+ 'code_save' => 'Simpan Kode',
+];
diff --git a/lang/id/editor.php b/lang/id/editor.php
new file mode 100644
index 00000000000..04999368930
--- /dev/null
+++ b/lang/id/editor.php
@@ -0,0 +1,182 @@
+ 'Umum',
+ 'advanced' => 'Lanjutan',
+ 'none' => 'Tidak Ada',
+ 'cancel' => 'Batal',
+ 'save' => 'Simpan',
+ 'close' => 'Tutup',
+ 'apply' => 'Terapkan',
+ 'undo' => 'Undo',
+ 'redo' => 'Ulangi',
+ 'left' => 'Kiri',
+ 'center' => 'Tengah',
+ 'right' => 'Kanan',
+ 'top' => 'Atas',
+ 'middle' => 'Sedang',
+ 'bottom' => 'Bawah',
+ 'width' => 'Lebar',
+ 'height' => 'Tinggi',
+ 'More' => 'Lebih Banyak',
+ 'select' => 'Pilih...',
+
+ // Toolbar
+ 'formats' => 'Format',
+ 'header_large' => 'Header Besar',
+ 'header_medium' => 'Header Sedang',
+ 'header_small' => 'Header Kecil',
+ 'header_tiny' => 'Header Sangat Kecil',
+ 'paragraph' => 'Paragraf',
+ 'blockquote' => 'Kutipan blok',
+ 'inline_code' => 'Kode sebaris',
+ 'callouts' => 'Anotasi',
+ 'callout_information' => 'Informasi',
+ 'callout_success' => 'Sukses',
+ 'callout_warning' => 'Peringatan',
+ 'callout_danger' => 'Bahaya',
+ 'bold' => 'Berani',
+ 'italic' => 'Italic',
+ 'underline' => 'Garis Bawah',
+ 'strikethrough' => 'Coret',
+ 'superscript' => 'Superskrip',
+ 'subscript' => 'Berlangganan',
+ 'text_color' => 'Warna teks',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Warna khusus',
+ 'remove_color' => 'Hapus Warna',
+ 'background_color' => 'Warna latar',
+ 'align_left' => 'Rata Kiri',
+ 'align_center' => 'Rata tengah',
+ 'align_right' => 'Rata kanan',
+ 'align_justify' => 'Rata kanan kiri',
+ 'list_bullet' => 'Daftar poin',
+ 'list_numbered' => 'Daftar bernomor',
+ 'list_task' => 'Daftar tugas',
+ 'indent_increase' => 'Tambah indentasi',
+ 'indent_decrease' => 'Kurangi indentasi',
+ 'table' => 'Tabel',
+ 'insert_image' => 'Sisipkan gambar',
+ 'insert_image_title' => 'Sisipkan/Ubah Gambar',
+ 'insert_link' => 'Sisipkan/ubah tautan',
+ 'insert_link_title' => 'Sisipkan/Ubah Tautan',
+ 'insert_horizontal_line' => 'Sisipkan garis horizontal',
+ 'insert_code_block' => 'Sisipkan blok kode',
+ 'edit_code_block' => 'Ubah blok kode',
+ 'insert_drawing' => 'Sisipkan/ubah gambaran',
+ 'drawing_manager' => 'Manajer Gambaran',
+ 'insert_media' => 'Sisipkan/ubah media',
+ 'insert_media_title' => 'Sisipkan/Ubah Media',
+ 'clear_formatting' => 'Bersihkan format',
+ 'source_code' => 'Kode sumber',
+ 'source_code_title' => 'Kode Sumber',
+ 'fullscreen' => 'Layar penuh',
+ 'image_options' => 'Opsi gambar',
+
+ // Tables
+ 'table_properties' => 'Properti tabel',
+ 'table_properties_title' => 'Properti Tabel',
+ 'delete_table' => 'Hapus tabel',
+ 'table_clear_formatting' => 'Bersihkan format tabel',
+ 'resize_to_contents' => 'Sesuaikan dengan ukuran konten',
+ 'row_header' => 'Judul baris',
+ 'insert_row_before' => 'Sisipkan baris sebelum',
+ 'insert_row_after' => 'Sisipkan baris setelah',
+ 'delete_row' => 'Hapus baris',
+ 'insert_column_before' => 'Sisipkan kolom sebelum',
+ 'insert_column_after' => 'Sisipkan kolom sesudah',
+ 'delete_column' => 'Hapus kolom',
+ 'table_cell' => 'Sel',
+ 'table_row' => 'Row',
+ 'table_column' => 'Column',
+ 'cell_properties' => 'Cell properties',
+ 'cell_properties_title' => 'Cell Properties',
+ 'cell_type' => 'Cell type',
+ 'cell_type_cell' => 'Cell',
+ 'cell_scope' => 'Scope',
+ 'cell_type_header' => 'Header cell',
+ 'merge_cells' => 'Merge cells',
+ 'split_cell' => 'Split cell',
+ 'table_row_group' => 'Row Group',
+ 'table_column_group' => 'Column Group',
+ 'horizontal_align' => 'Horizontal align',
+ 'vertical_align' => 'Vertical align',
+ 'border_width' => 'Border width',
+ 'border_style' => 'Border style',
+ 'border_color' => 'Border color',
+ 'row_properties' => 'Row properties',
+ 'row_properties_title' => 'Row Properties',
+ 'cut_row' => 'Cut row',
+ 'copy_row' => 'Copy row',
+ 'paste_row_before' => 'Paste row before',
+ 'paste_row_after' => 'Paste row after',
+ 'row_type' => 'Row type',
+ 'row_type_header' => 'Header',
+ 'row_type_body' => 'Body',
+ 'row_type_footer' => 'Footer',
+ 'alignment' => 'Alignment',
+ 'cut_column' => 'Cut column',
+ 'copy_column' => 'Copy column',
+ 'paste_column_before' => 'Paste column before',
+ 'paste_column_after' => 'Paste column after',
+ 'cell_padding' => 'Cell padding',
+ 'cell_spacing' => 'Cell spacing',
+ 'caption' => 'Caption',
+ 'show_caption' => 'Show caption',
+ 'constrain' => 'Constrain proportions',
+ 'cell_border_solid' => 'Solid',
+ 'cell_border_dotted' => 'Dotted',
+ 'cell_border_dashed' => 'Dashed',
+ 'cell_border_double' => 'Double',
+ 'cell_border_groove' => 'Groove',
+ 'cell_border_ridge' => 'Ridge',
+ 'cell_border_inset' => 'Inset',
+ 'cell_border_outset' => 'Outset',
+ 'cell_border_none' => 'None',
+ 'cell_border_hidden' => 'Hidden',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Source',
+ 'alt_desc' => 'Alternative description',
+ 'embed' => 'Embed',
+ 'paste_embed' => 'Paste your embed code below:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Text to display',
+ 'title' => 'Title',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Open link',
+ 'open_link_in' => 'Open link in...',
+ 'open_link_current' => 'Current window',
+ 'open_link_new' => 'New window',
+ 'remove_link' => 'Remove link',
+ 'insert_collapsible' => 'Insert collapsible block',
+ 'collapsible_unwrap' => 'Unwrap',
+ 'edit_label' => 'Edit label',
+ 'toggle_open_closed' => 'Toggle open/closed',
+ 'collapsible_edit' => 'Edit collapsible block',
+ 'toggle_label' => 'Toggle label',
+
+ // About view
+ 'about' => 'About the editor',
+ 'about_title' => 'About the WYSIWYG Editor',
+ 'editor_license' => 'Editor License & Copyright',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'This editor is built using :tinyLink which is provided under the MIT license.',
+ 'editor_tiny_license_link' => 'The copyright and license details of TinyMCE can be found here.',
+ 'save_continue' => 'Save Page & Continue',
+ 'callouts_cycle' => '(Keep pressing to toggle through types)',
+ 'link_selector' => 'Link to content',
+ 'shortcuts' => 'Shortcuts',
+ 'shortcut' => 'Shortcut',
+ 'shortcuts_intro' => 'The following shortcuts are available in the editor:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Description',
+];
diff --git a/lang/id/entities.php b/lang/id/entities.php
new file mode 100644
index 00000000000..2f932992571
--- /dev/null
+++ b/lang/id/entities.php
@@ -0,0 +1,476 @@
+ 'Baru saja dibuat',
+ 'recently_created_pages' => 'Halaman baru saja dibuat',
+ 'recently_updated_pages' => 'Halaman baru saja diperbaharui',
+ 'recently_created_chapters' => 'Bab baru saja dibuat',
+ 'recently_created_books' => 'Buku baru saja dibuat',
+ 'recently_created_shelves' => 'Rak baru saja dibuat',
+ 'recently_update' => 'Baru saja diperbaharui',
+ 'recently_viewed' => 'Baru saja dilihat',
+ 'recent_activity' => 'Aktivitas Terbaru',
+ 'create_now' => 'Buat Sekarang',
+ 'revisions' => 'Revisi',
+ 'meta_revision' => 'Revisi #:revisionCount',
+ 'meta_created' => 'Dibuat :timeLength',
+ 'meta_created_name' => 'Dibuat :timeLength oleh :user',
+ 'meta_updated' => 'Diperbaharui :timeLength',
+ 'meta_updated_name' => 'Diperbaharui :timeLength oleh :user',
+ 'meta_owned_name' => 'Dimiliki oleh :user',
+ 'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
+ 'entity_select' => 'Pilihan Entitas',
+ 'entity_select_lack_permission' => 'You don\'t have the required permissions to select this item',
+ 'images' => 'Gambar-gambar',
+ 'my_recent_drafts' => 'Draf Terbaru Saya',
+ 'my_recently_viewed' => 'Baru saja saya lihat',
+ 'my_most_viewed_favourites' => 'Favorit Saya yang Paling Banyak Dilihat',
+ 'my_favourites' => 'Favoritku',
+ 'no_pages_viewed' => 'Anda belum melihat halaman apa pun',
+ 'no_pages_recently_created' => 'Tidak ada halaman yang baru saja dibuat',
+ 'no_pages_recently_updated' => 'Tidak ada halaman yang baru-baru ini diperbarui',
+ 'export' => 'Ekspor',
+ 'export_html' => 'File Web Berisi',
+ 'export_pdf' => 'Dokumen PDF',
+ 'export_text' => 'Dokumen Teks Biasa',
+ 'export_md' => 'File Markdown',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Izin',
+ 'permissions_desc' => 'Set permissions here to override the default permissions provided by user roles.',
+ 'permissions_book_cascade' => 'Permissions set on books will automatically cascade to child chapters and pages, unless they have their own permissions defined.',
+ 'permissions_chapter_cascade' => 'Permissions set on chapters will automatically cascade to child pages, unless they have their own permissions defined.',
+ 'permissions_save' => 'Simpan Izin',
+ 'permissions_owner' => 'Pemilik',
+ 'permissions_role_everyone_else' => 'Everyone Else',
+ 'permissions_role_everyone_else_desc' => 'Set permissions for all roles not specifically overridden.',
+ 'permissions_role_override' => 'Override permissions for role',
+ 'permissions_inherit_defaults' => 'Inherit defaults',
+
+ // Search
+ 'search_results' => 'Hasil Pencarian',
+ 'search_total_results_found' => ':count hasil hitung ditemukan |:count hasil hitung total tang di temukan',
+ 'search_clear' => 'Bersihkan pencarian',
+ 'search_no_pages' => 'Tidak ada halaman yang cocok dengan pencarian ini',
+ 'search_for_term' => 'Pencarian untuk :term',
+ 'search_more' => 'Hasil lebih',
+ 'search_advanced' => 'Pencarian Lanjutan',
+ 'search_terms' => 'Cari Istilah',
+ 'search_content_type' => 'Tipe Konten',
+ 'search_exact_matches' => 'Pertandingan Persis',
+ 'search_tags' => 'Pencarian Tag',
+ 'search_options' => 'Pilihan',
+ 'search_viewed_by_me' => 'Dilihat oleh saya',
+ 'search_not_viewed_by_me' => 'Tidak dilihat oleh saya',
+ 'search_permissions_set' => 'Izin ditetapkan',
+ 'search_created_by_me' => 'Dibuat oleh saya',
+ 'search_updated_by_me' => 'Diperbaharui oleh saya',
+ 'search_owned_by_me' => 'Milik Saya',
+ 'search_date_options' => 'Opsi Tanggal',
+ 'search_updated_before' => 'Diperbaharui sebelum',
+ 'search_updated_after' => 'Diperbaharui setelah',
+ 'search_created_before' => 'Dibuat sebelum',
+ 'search_created_after' => 'Dibuat setelah',
+ 'search_set_date' => 'Atur Tanggal',
+ 'search_update' => 'Perbaharui pencarian',
+
+ // Shelves
+ 'shelf' => 'Rak',
+ 'shelves' => 'Rak',
+ 'x_shelves' => ':count Rak|:count Rak',
+ 'shelves_empty' => 'Tidak ada rak yang dibuat',
+ 'shelves_create' => 'Buat Rak baru',
+ 'shelves_popular' => 'Rak Terpopuler',
+ 'shelves_new' => 'Rak Baru',
+ 'shelves_new_action' => 'Rak Baru',
+ 'shelves_popular_empty' => 'Rak paling populer akan muncul di sini.',
+ 'shelves_new_empty' => 'Rak yang paling baru dibuat akan muncul di sini.',
+ 'shelves_save' => 'Simpan Rak',
+ 'shelves_books' => 'Buku di rak ini',
+ 'shelves_add_books' => 'Tambahkan buku ke rak ini',
+ 'shelves_drag_books' => 'Drag books below to add them to this shelf',
+ 'shelves_empty_contents' => 'Rak ini tidak memiliki buku yang ditugaskan padanya',
+ 'shelves_edit_and_assign' => 'Edit rak untuk menetapkan buku',
+ 'shelves_edit_named' => 'Edit Shelf :name',
+ 'shelves_edit' => 'Edit Shelf',
+ 'shelves_delete' => 'Delete Shelf',
+ 'shelves_delete_named' => 'Delete Shelf :name',
+ 'shelves_delete_explain' => "This will delete the shelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Are you sure you want to delete this shelf?',
+ 'shelves_permissions' => 'Shelf Permissions',
+ 'shelves_permissions_updated' => 'Shelf Permissions Updated',
+ 'shelves_permissions_active' => 'Shelf Permissions Active',
+ 'shelves_permissions_cascade_warning' => 'Permissions on shelves do not automatically cascade to contained books. This is because a book can exist on multiple shelves. Permissions can however be copied down to child books using the option found below.',
+ 'shelves_permissions_create' => 'Shelf create permissions are only used for copying permissions to child books using the action below. They do not control the ability to create books.',
+ 'shelves_copy_permissions_to_books' => 'Salin Izin ke Buku',
+ 'shelves_copy_permissions' => 'Salin Izin',
+ 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this shelf to all books contained within. Before activating, ensure any changes to the permissions of this shelf have been saved.',
+ 'shelves_copy_permission_success' => 'Shelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'Buku',
+ 'books' => 'Semua Buku',
+ 'x_books' => ':count Buku|:count Semua Buku',
+ 'books_empty' => 'Tidak ada buku yang telah dibuat',
+ 'books_popular' => 'Buku Populer',
+ 'books_recent' => 'Buku Terbaru',
+ 'books_new' => 'Buku baru',
+ 'books_new_action' => 'Buku baru',
+ 'books_popular_empty' => 'Buku paling populer akan muncul di sini.',
+ 'books_new_empty' => 'The most recently created books will appear here.',
+ 'books_create' => 'Buat Buku Baru',
+ 'books_delete' => 'Hapus Buku',
+ 'books_delete_named' => 'Hapus buku :bookName',
+ 'books_delete_explain' => 'Ini akan menghapus buku dengan nama \': bookName\'. Semua halaman dan bab akan dihapus.',
+ 'books_delete_confirmation' => 'Apakah Anda yakin ingin menghapus buku ini?',
+ 'books_edit' => 'Edit Buku',
+ 'books_edit_named' => 'Sunting Buku :bookName',
+ 'books_form_book_name' => 'Nama Buku',
+ 'books_save' => 'Simpan Buku',
+ 'books_permissions' => 'Izin Buku',
+ 'books_permissions_updated' => 'Izin Buku Diperbarui',
+ 'books_empty_contents' => 'Tidak ada halaman atau bab yang telah dibuat untuk buku ini.',
+ 'books_empty_create_page' => 'Buat halaman baru',
+ 'books_empty_sort_current_book' => 'Sortir buku saat ini',
+ 'books_empty_add_chapter' => 'Tambahkan satu bab',
+ 'books_permissions_active' => 'Izin Buku Aktif',
+ 'books_search_this' => 'Cari buku ini',
+ 'books_navigation' => 'Navigasi Buku',
+ 'books_sort' => 'Sortir Isi Buku',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Sortir Buku :bookName',
+ 'books_sort_name' => 'Diurutkan berdasarkan nama',
+ 'books_sort_created' => 'Urutkan berdasarkan Tanggal Dibuat',
+ 'books_sort_updated' => 'Urutkan berdasarkan Tanggal Diperbarui',
+ 'books_sort_chapters_first' => 'Bab Pertama',
+ 'books_sort_chapters_last' => 'Bab Terakhir',
+ 'books_sort_show_other' => 'Tunjukkan Buku Lain',
+ 'books_sort_save' => 'Simpan Pesanan Baru',
+ 'books_sort_show_other_desc' => 'Add other books here to include them in the sort operation, and allow easy cross-book reorganisation.',
+ 'books_sort_move_up' => 'Move Up',
+ 'books_sort_move_down' => 'Move Down',
+ 'books_sort_move_prev_book' => 'Move to Previous Book',
+ 'books_sort_move_next_book' => 'Move to Next Book',
+ 'books_sort_move_prev_chapter' => 'Move Into Previous Chapter',
+ 'books_sort_move_next_chapter' => 'Move Into Next Chapter',
+ 'books_sort_move_book_start' => 'Move to Start of Book',
+ 'books_sort_move_book_end' => 'Move to End of Book',
+ 'books_sort_move_before_chapter' => 'Move to Before Chapter',
+ 'books_sort_move_after_chapter' => 'Move to After Chapter',
+ 'books_copy' => 'Copy Book',
+ 'books_copy_success' => 'Book successfully copied',
+
+ // Chapters
+ 'chapter' => 'Bab',
+ 'chapters' => 'Bab',
+ 'x_chapters' => ':count Bab |:count Bab',
+ 'chapters_popular' => 'Bab Populer',
+ 'chapters_new' => 'Bab Baru',
+ 'chapters_create' => 'Buat Bab Baru',
+ 'chapters_delete' => 'Hapur Bab',
+ 'chapters_delete_named' => 'Hapus bab dengan nama :chapterName',
+ 'chapters_delete_explain' => 'Ini akan menghapus chapter dengan nama \':chapterName\'. Semua halaman yang ada dalam bab ini juga akan dihapus.',
+ 'chapters_delete_confirm' => 'Anda yakin ingin menghapus bab ini?',
+ 'chapters_edit' => 'Edit Bab',
+ 'chapters_edit_named' => 'Sunting Bab :chapterName',
+ 'chapters_save' => 'Simpan Bab',
+ 'chapters_move' => 'Pindahkan Bab',
+ 'chapters_move_named' => 'Pindahkan Bab :chapterName',
+ 'chapters_copy' => 'Copy Chapter',
+ 'chapters_copy_success' => 'Chapter successfully copied',
+ 'chapters_permissions' => 'Izin Bab',
+ 'chapters_empty' => 'Saat ini tidak ada halaman dalam bab ini.',
+ 'chapters_permissions_active' => 'Izin Bab Aktif',
+ 'chapters_permissions_success' => 'Izin Bab Diperbarui',
+ 'chapters_search_this' => 'Cari bab ini',
+ 'chapter_sort_book' => 'Sort Book',
+
+ // Pages
+ 'page' => 'Halaman',
+ 'pages' => 'Semua Halaman',
+ 'x_pages' => ':count Halaman|:count Semua Halaman',
+ 'pages_popular' => 'Halaman Populer',
+ 'pages_new' => 'Lembaran baru',
+ 'pages_attachments' => 'Lampiran',
+ 'pages_navigation' => 'Halaman Navigasi',
+ 'pages_delete' => 'Hapus Halaman',
+ 'pages_delete_named' => 'Hapus Halaman :pageName',
+ 'pages_delete_draft_named' => 'Hapus Halaman Draf :pageName',
+ 'pages_delete_draft' => 'Hapus Halaman Draf',
+ 'pages_delete_success' => 'Halaman dihapus',
+ 'pages_delete_draft_success' => 'Halaman draf dihapus',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Anda yakin ingin menghapus halaman ini?',
+ 'pages_delete_draft_confirm' => 'Anda yakin ingin menghapus halaman draf ini?',
+ 'pages_editing_named' => 'Menyunting Halaman :pageName',
+ 'pages_edit_draft_options' => 'Opsi Draf',
+ 'pages_edit_save_draft' => 'Simpan Draf',
+ 'pages_edit_draft' => 'Edit Halaman Draf',
+ 'pages_editing_draft' => 'Mengedit Draf',
+ 'pages_editing_page' => 'Mengedit Draf',
+ 'pages_edit_draft_save_at' => 'Draf disimpan pada ',
+ 'pages_edit_delete_draft' => 'Hapus Draf',
+ 'pages_edit_delete_draft_confirm' => 'Are you sure you want to delete your draft page changes? All of your changes, since the last full save, will be lost and the editor will be updated with the latest page non-draft save state.',
+ 'pages_edit_discard_draft' => 'Buang Draf',
+ 'pages_edit_switch_to_markdown' => 'Switch to Markdown Editor',
+ 'pages_edit_switch_to_markdown_clean' => '(Clean Content)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stable Content)',
+ 'pages_edit_switch_to_wysiwyg' => 'Switch to WYSIWYG Editor',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Atur Changelog',
+ 'pages_edit_enter_changelog_desc' => 'Masukkan deskripsi singkat tentang perubahan yang Anda buat',
+ 'pages_edit_enter_changelog' => 'Masuk ke Changelog',
+ 'pages_editor_switch_title' => 'Switch Editor',
+ 'pages_editor_switch_are_you_sure' => 'Are you sure you want to change the editor for this page?',
+ 'pages_editor_switch_consider_following' => 'Consider the following when changing editors:',
+ 'pages_editor_switch_consideration_a' => 'Once saved, the new editor option will be used by any future editors, including those that may not be able to change editor type themselves.',
+ 'pages_editor_switch_consideration_b' => 'This can potentially lead to a loss of detail and syntax in certain circumstances.',
+ 'pages_editor_switch_consideration_c' => 'Tag or changelog changes, made since last save, won\'t persist across this change.',
+ 'pages_save' => 'Simpan Halaman',
+ 'pages_title' => 'Judul Halaman',
+ 'pages_name' => 'Nama Halaman',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Pratinjau',
+ 'pages_md_insert_image' => 'Sisipkan Gambar',
+ 'pages_md_insert_link' => 'Sisipkan Tautan Entitas',
+ 'pages_md_insert_drawing' => 'Sisipkan Gambar',
+ 'pages_md_show_preview' => 'Show preview',
+ 'pages_md_sync_scroll' => 'Sync preview scroll',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Unsaved Drawing Found',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'Halaman tidak dalam satu bab',
+ 'pages_move' => 'Pindahkan Halaman',
+ 'pages_copy' => 'Salin Halaman',
+ 'pages_copy_desination' => 'Salin Tujuan',
+ 'pages_copy_success' => 'Halaman berhasil disalin',
+ 'pages_permissions' => 'Izin Halaman',
+ 'pages_permissions_success' => 'Izin halaman diperbarui',
+ 'pages_revision' => 'Revisi',
+ 'pages_revisions' => 'Revisi Halaman',
+ 'pages_revisions_desc' => 'Listed below are all the past revisions of this page. You can look back upon, compare, and restore old page versions if permissions allow. The full history of the page may not be fully reflected here since, depending on system configuration, old revisions could be auto-deleted.',
+ 'pages_revisions_named' => 'Revisi Halaman untuk :pageName',
+ 'pages_revision_named' => 'Revisi Halaman untuk :pageName',
+ 'pages_revision_restored_from' => 'Dipulihkan dari #:id; :summary',
+ 'pages_revisions_created_by' => 'Dibuat Oleh',
+ 'pages_revisions_date' => 'Tanggal Revisi',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revision Number',
+ 'pages_revisions_numbered' => 'Revisi #:id',
+ 'pages_revisions_numbered_changes' => 'Revisi #:id Berubah',
+ 'pages_revisions_editor' => 'Editor Type',
+ 'pages_revisions_changelog' => 'Changelog',
+ 'pages_revisions_changes' => 'Perubahan',
+ 'pages_revisions_current' => 'Versi sekarang',
+ 'pages_revisions_preview' => 'Pratinjau',
+ 'pages_revisions_restore' => 'Mengembalikan',
+ 'pages_revisions_none' => 'Halaman ini tidak memiliki revisi',
+ 'pages_copy_link' => 'Salin tautan',
+ 'pages_edit_content_link' => 'Jump to section in editor',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Page Section Options',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Izin Halaman Aktif',
+ 'pages_initial_revision' => 'Penerbitan awal',
+ 'pages_references_update_revision' => 'System auto-update of internal links',
+ 'pages_initial_name' => 'Halaman Baru',
+ 'pages_editing_draft_notification' => 'Anda sedang menyunting konsep yang terakhir disimpan :timeDiff.',
+ 'pages_draft_edited_notification' => 'Halaman ini telah diperbarui sejak saat itu. Anda disarankan untuk membuang draf ini.',
+ 'pages_draft_page_changed_since_creation' => 'This page has been updated since this draft was created. It is recommended that you discard this draft or take care not to overwrite any page changes.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count pengguna sudah mulai mengedit halaman ini',
+ 'start_b' => ':userName telah memulai menyunting halaman ini',
+ 'time_a' => 'semenjak halaman terakhir diperbarui',
+ 'time_b' => 'di akhir :minCount menit',
+ 'message' => ':start :time. Berhati-hatilah untuk tidak menimpa pembaruan satu sama lain!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'Halaman Tertentu',
+ 'pages_is_template' => 'Template Halaman',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'Halaman Tag',
+ 'chapter_tags' => 'Bab Tag',
+ 'book_tags' => 'Tag Buku',
+ 'shelf_tags' => 'Tag Rak',
+ 'tag' => 'Tag',
+ 'tags' => 'Semua Tag',
+ 'tags_index_desc' => 'Tags can be applied to content within the system to apply a flexible form of categorization. Tags can have both a key and value, with the value being optional. Once applied, content can then be queried using the tag name and value.',
+ 'tag_name' => 'Nama Tag',
+ 'tag_value' => 'Nilai Tag (opsional)',
+ 'tags_explain' => "Tambahkan beberapa tag untuk mengkategorikan konten Anda dengan lebih baik.\n Anda dapat menetapkan nilai ke tag untuk pengaturan yang lebih mendalam.",
+ 'tags_add' => 'Tambahkan tag lain',
+ 'tags_remove' => 'Hapus tag ini',
+ 'tags_usages' => 'Total tag usages',
+ 'tags_assigned_pages' => 'Assigned to Pages',
+ 'tags_assigned_chapters' => 'Assigned to Chapters',
+ 'tags_assigned_books' => 'Assigned to Books',
+ 'tags_assigned_shelves' => 'Assigned to Shelves',
+ 'tags_x_unique_values' => ':count unique values',
+ 'tags_all_values' => 'All values',
+ 'tags_view_tags' => 'View Tags',
+ 'tags_view_existing_tags' => 'View existing tags',
+ 'tags_list_empty_hint' => 'Tags can be assigned via the page editor sidebar or while editing the details of a book, chapter or shelf.',
+ 'attachments' => 'Lampiran',
+ 'attachments_explain' => 'Unggah beberapa berkas atau lampirkan beberapa tautan untuk ditampilkan di laman Anda. Ini terlihat di sidebar halaman.',
+ 'attachments_explain_instant_save' => 'Perubahan di sini disimpan secara instan.',
+ 'attachments_upload' => 'Unggah Berkas',
+ 'attachments_link' => 'Lampirkan Tautan',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'Setel Tautan',
+ 'attachments_delete' => 'Anda yakin ingin menghapus lampiran ini?',
+ 'attachments_dropzone' => 'Drop files here to upload',
+ 'attachments_no_files' => 'Tidak ada berkas yang telah diunggah',
+ 'attachments_explain_link' => 'Anda dapat melampirkan sebuah tautan jika Anda memilih untuk tidak mengunggah berkas. Ini bisa berupa sebuah tautan ke halaman lain atau tautan ke sebuah berkas di cloud.',
+ 'attachments_link_name' => 'Nama Tautan',
+ 'attachment_link' => 'Lampiran Tautan',
+ 'attachments_link_url' => 'Tautan ke file',
+ 'attachments_link_url_hint' => 'Alamat url situs atau berkas',
+ 'attach' => 'Melampirkan',
+ 'attachments_insert_link' => 'Tambahkan Tautan Lampiran ke Halaman',
+ 'attachments_edit_file' => 'Edit File',
+ 'attachments_edit_file_name' => 'Nama file',
+ 'attachments_edit_drop_upload' => 'Jatuhkan berkas atau klik di sini untuk mengunggah dan menimpa',
+ 'attachments_order_updated' => 'Urutan lampiran diperbarui',
+ 'attachments_updated_success' => 'Detail lampiran diperbarui',
+ 'attachments_deleted' => 'Lampiran dihapus',
+ 'attachments_file_uploaded' => 'Berkas berhasil diunggah',
+ 'attachments_file_updated' => 'File berhasil diperbarui',
+ 'attachments_link_attached' => 'Tautan berhasil dilampirkan ke halaman',
+ 'templates' => 'Template',
+ 'templates_set_as_template' => 'Halaman adalah template',
+ 'templates_explain_set_as_template' => 'Anda dapat mengatur halaman ini sebagai template sehingga isinya dapat digunakan saat membuat halaman lain. Pengguna lain akan dapat menggunakan template ini jika mereka memiliki izin melihat halaman ini.',
+ 'templates_replace_content' => 'Ganti Halaman Konten',
+ 'templates_append_content' => 'Tambahkan ke halaman konten',
+ 'templates_prepend_content' => 'Tambahkan ke halaman konten',
+
+ // Profile View
+ 'profile_user_for_x' => 'Pengguna untuk :time',
+ 'profile_created_content' => 'Konten yang Dibuat',
+ 'profile_not_created_pages' => ':userName belum membuat halaman apa pun',
+ 'profile_not_created_chapters' => ':userName belum membuat bab apa pun',
+ 'profile_not_created_books' => ':userName belum membuat buku apa pun',
+ 'profile_not_created_shelves' => ':userName belum membuat rak apa pun',
+
+ // Comments
+ 'comment' => 'Komentar',
+ 'comments' => 'Komentar',
+ 'comment_add' => 'Tambah Komentar',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Tinggalkan komentar disini',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Simpan Komentar',
+ 'comment_new' => 'Komentar Baru',
+ 'comment_created' => 'dikomentari oleh :createDiff',
+ 'comment_updated' => 'Diperbarui :updateDiff oleh :username',
+ 'comment_updated_indicator' => 'Updated',
+ 'comment_deleted_success' => 'Komentar telah dihapus',
+ 'comment_created_success' => 'Komentar telah di tambahkan',
+ 'comment_updated_success' => 'Komentar Telah diperbaharui',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Anda yakin ingin menghapus komentar ini?',
+ 'comment_in_reply_to' => 'Sebagai balasan untuk :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Here are the comments that have been left on this page. Comments can be added & managed when viewing the saved page.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Anda yakin ingin menghapus revisi ini?',
+ 'revision_restore_confirm' => 'Apakah Anda yakin ingin memulihkan revisi ini? Konten halaman saat ini akan diganti.',
+ 'revision_cannot_delete_latest' => 'Tidak dapat menghapus revisi terakhir.',
+
+ // Copy view
+ 'copy_consider' => 'Please consider the below when copying content.',
+ 'copy_consider_permissions' => 'Custom permission settings will not be copied.',
+ 'copy_consider_owner' => 'You will become the owner of all copied content.',
+ 'copy_consider_images' => 'Page image files will not be duplicated & the original images will retain their relation to the page they were originally uploaded to.',
+ 'copy_consider_attachments' => 'Page attachments will not be copied.',
+ 'copy_consider_access' => 'A change of location, owner or permissions may result in this content being accessible to those previously without access.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Convert to Shelf',
+ 'convert_to_shelf_contents_desc' => 'You can convert this book to a new shelf with the same contents. Chapters contained within this book will be converted to new books. If this book contains any pages, that are not in a chapter, this book will be renamed and contain such pages, and this book will become part of the new shelf.',
+ 'convert_to_shelf_permissions_desc' => 'Any permissions set on this book will be copied to the new shelf and to all new child books that don\'t have their own permissions enforced. Note that permissions on shelves do not auto-cascade to content within, as they do for books.',
+ 'convert_book' => 'Convert Book',
+ 'convert_book_confirm' => 'Are you sure you want to convert this book?',
+ 'convert_undo_warning' => 'This cannot be as easily undone.',
+ 'convert_to_book' => 'Convert to Book',
+ 'convert_to_book_desc' => 'You can convert this chapter to a new book with the same contents. Any permissions set on this chapter will be copied to the new book but any inherited permissions, from the parent book, will not be copied which could lead to a change of access control.',
+ 'convert_chapter' => 'Convert Chapter',
+ 'convert_chapter_confirm' => 'Are you sure you want to convert this chapter?',
+
+ // References
+ 'references' => 'References',
+ 'references_none' => 'There are no tracked references to this item.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Watch',
+ 'watch_title_default' => 'Default Preferences',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignore',
+ 'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
+ 'watch_title_new' => 'New Pages',
+ 'watch_desc_new' => 'Notify when any new page is created within this item.',
+ 'watch_title_updates' => 'All Page Updates',
+ 'watch_desc_updates' => 'Notify upon all new pages and page changes.',
+ 'watch_desc_updates_page' => 'Notify upon all page changes.',
+ 'watch_title_comments' => 'All Page Updates & Comments',
+ 'watch_desc_comments' => 'Notify upon all new pages, page changes and new comments.',
+ 'watch_desc_comments_page' => 'Notify upon page changes and new comments.',
+ 'watch_change_default' => 'Change default notification preferences',
+ 'watch_detail_ignore' => 'Ignoring notifications',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/id/errors.php b/lang/id/errors.php
new file mode 100644
index 00000000000..2342824d107
--- /dev/null
+++ b/lang/id/errors.php
@@ -0,0 +1,135 @@
+ 'Anda tidak memiliki izin untuk mengakses halaman yang diminta.',
+ 'permissionJson' => 'Anda tidak memiliki izin untuk melakukan tindakan yang diminta.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Pengguna dengan email :email sudah ada tetapi dengan kredensial berbeda.',
+ 'auth_pre_register_theme_prevention' => 'Akun pengguna tidak dapat didaftarkan untuk rincian yang diberikan',
+ 'email_already_confirmed' => 'Email telah dikonfirmasi, Coba masuk.',
+ 'email_confirmation_invalid' => 'Token konfirmasi ini tidak valid atau telah digunakan, Silakan coba mendaftar lagi.',
+ 'email_confirmation_expired' => 'Token konfirmasi telah kedaluwarsa, Email konfirmasi baru telah dikirim.',
+ 'email_confirmation_awaiting' => 'Alamat email untuk akun yang digunakan perlu dikonfirmasi',
+ 'ldap_fail_anonymous' => 'Akses LDAP gagal menggunakan pengikatan anonim',
+ 'ldap_fail_authed' => 'Akses LDAP gagal menggunakan rincian dn & sandi yang diberikan',
+ 'ldap_extension_not_installed' => 'Ekstensi LDAP PHP tidak terpasang',
+ 'ldap_cannot_connect' => 'Tidak dapat terhubung ke server ldap, Koneksi awal gagal',
+ 'saml_already_logged_in' => 'Telah masuk',
+ 'saml_no_email_address' => 'Tidak dapat menemukan sebuah alamat email untuk pengguna ini, dalam data yang diberikan oleh sistem autentikasi eksternal',
+ 'saml_invalid_response_id' => 'Permintaan dari sistem otentikasi eksternal tidak dikenali oleh sebuah proses yang dimulai oleh aplikasi ini. Menavigasi kembali setelah masuk dapat menyebabkan masalah ini.',
+ 'saml_fail_authed' => 'Masuk menggunakan :system gagal, sistem tidak memberikan otorisasi yang berhasil',
+ 'oidc_already_logged_in' => 'Sudah masuk',
+ 'oidc_no_email_address' => 'Tidak dapat menemukan alamat email untuk pengguna ini dalam data yang diberikan oleh sistem autentikasi eksternal',
+ 'oidc_fail_authed' => 'Masuk menggunakan :system gagal, sistem tidak memberikan otorisasi yang berhasil',
+ 'social_no_action_defined' => 'Tidak ada tindakan yang ditentukan',
+ 'social_login_bad_response' => "Kesalahan yang diterima selama masuk menggunakan :socialAccount : \n:error",
+ 'social_account_in_use' => 'Akun :socialAccount ini sudah digunakan, Coba masuk melalui opsi :socialAccount.',
+ 'social_account_email_in_use' => 'Email :email sudah digunakan. Jika Anda sudah memiliki akun, Anda dapat menghubungkan :socialAccount Anda dari pengaturan profil Anda.',
+ 'social_account_existing' => 'Akun :socialAccount ini sudah dilampirkan ke profil Anda.',
+ 'social_account_already_used_existing' => 'Akun :socialAccount ini sudah digunakan oleh pengguna lain.',
+ 'social_account_not_used' => 'Akun :socialAccount ini tidak ditautkan ke pengguna mana pun. Harap lampirkan di dalam pengaturan profil Anda. ',
+ 'social_account_register_instructions' => 'Jika Anda belum memiliki akun, Anda dapat mendaftarkan akun menggunakan opsi :socialAccount.',
+ 'social_driver_not_found' => 'Pengemudi sosial tidak ditemukan',
+ 'social_driver_not_configured' => 'Pengaturan sosial :socialAccount Anda tidak dikonfigurasi dengan benar.',
+ 'invite_token_expired' => 'Tautan undangan ini telah kedaluwarsa. Sebagai gantinya, Anda dapat mencoba mengatur ulang kata sandi akun Anda.',
+ 'login_user_not_found' => 'Pengguna untuk tindakan ini tidak dapat ditemukan.',
+
+ // System
+ 'path_not_writable' => 'Jalur berkas :filePath tidak dapat diunggah. Pastikan berkas tersebut dapat ditulis ke server.',
+ 'cannot_get_image_from_url' => 'Tidak dapat mengambil gambar dari :url',
+ 'cannot_create_thumbs' => 'Server tidak dapat membuat thumbnail. Harap periksa apakah Anda telah memasang ekstensi GD PHP.',
+ 'server_upload_limit' => 'Server tidak mengizinkan unggahan dengan ukuran ini. Harap coba ukuran berkas yang lebih kecil.',
+ 'server_post_limit' => 'Server tidak dapat menerima jumlah data yang diberikan. Coba lagi dengan data yang lebih sedikit atau berkas yang lebih kecil.',
+ 'uploaded' => 'Server tidak mengizinkan unggahan dengan ukuran ini. Harap coba ukuran berkas yang lebih kecil.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Terjadi kesalahan saat mengunggah gambar',
+ 'image_upload_type_error' => 'Jenis gambar yang diunggah tidak valid',
+ 'image_upload_replace_type' => 'Penggantian file gambar harus berjenis sama',
+ 'image_upload_memory_limit' => 'Gagal menangani pengunggahan gambar dan/atau membuat thumbnail karena keterbatasan sumber daya sistem.',
+ 'image_thumbnail_memory_limit' => 'Gagal membuat variasi ukuran gambar karena keterbatasan sumber daya sistem.',
+ 'image_gallery_thumbnail_memory_limit' => 'Gagal membuat thumbnail galeri karena keterbatasan sumber daya sistem.',
+ 'drawing_data_not_found' => 'Data gambar tidak dapat dimuat. Berkas gambar mungkin sudah tidak ada atau Anda mungkin tidak memiliki izin untuk mengaksesnya.',
+
+ // Attachments
+ 'attachment_not_found' => 'Lampiran tidak ditemukan',
+ 'attachment_upload_error' => 'Terjadi kesalahan saat mengunggah berkas',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Gagal menyimpan draf. Pastikan Anda memiliki koneksi internet sebelum menyimpan halaman ini',
+ 'page_draft_delete_fail' => 'Gagal menghapus draf halaman dan mengambil konten tersimpan halaman saat ini',
+ 'page_custom_home_deletion' => 'Tidak dapat menghapus sebuah halaman saat diatur sebagai sebuah halaman beranda',
+
+ // Entities
+ 'entity_not_found' => 'Entitas tidak ditemukan',
+ 'bookshelf_not_found' => 'Rak tidak ditemukan',
+ 'book_not_found' => 'Buku tidak ditemukan',
+ 'page_not_found' => 'Halaman tidak ditemukan',
+ 'chapter_not_found' => 'Bab tidak ditemukan',
+ 'selected_book_not_found' => 'Buku yang dipilih tidak ditemukan',
+ 'selected_book_chapter_not_found' => 'Buku atau Bab yang dipilih tidak ditemukan',
+ 'guests_cannot_save_drafts' => 'Tamu tidak dapat menyimpan Draf',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Anda tidak dapat menghapus satu-satunya admin',
+ 'users_cannot_delete_guest' => 'Anda tidak dapat menghapus pengguna tamu',
+ 'users_could_not_send_invite' => 'Tidak dapat membuat pengguna karena email undangan gagal dikirim',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Peran ini tidak dapat disunting',
+ 'role_system_cannot_be_deleted' => 'Peran ini adalah peran sistem dan tidak dapat dihapus',
+ 'role_registration_default_cannot_delete' => 'Peran ini tidak dapat dihapus jika disetel sebagai peran pendaftaran default',
+ 'role_cannot_remove_only_admin' => 'Pengguna ini adalah satu-satunya pengguna yang ditetapkan ke peran administrator. Tetapkan peran administrator untuk pengguna lain sebelum mencoba untuk menghapusnya di sini.',
+
+ // Comments
+ 'comment_list' => 'Terjadi kesalahan saat mengambil komentar.',
+ 'cannot_add_comment_to_draft' => 'Anda tidak dapat menambahkan komentar ke draf.',
+ 'comment_add' => 'Terjadi kesalahan saat menambahkan / memperbarui komentar.',
+ 'comment_delete' => 'Terjadi kesalahan saat menghapus komentar.',
+ 'empty_comment' => 'Tidak dapat menambahkan komentar kosong.',
+
+ // Error pages
+ '404_page_not_found' => 'Halaman tidak ditemukan',
+ 'sorry_page_not_found' => 'Maaf, Halaman yang Anda cari tidak dapat ditemukan.',
+ 'sorry_page_not_found_permission_warning' => 'Jika Anda mengharapkan halaman ini ada, Anda mungkin tidak memiliki izin untuk melihatnya.',
+ 'image_not_found' => 'Gambar tidak ditemukan',
+ 'image_not_found_subtitle' => 'Maaf, Berkas gambar yang Anda cari tidak dapat ditemukan.',
+ 'image_not_found_details' => 'Jika Anda mengharapkan gambar ini ada, gambar itu mungkin telah dihapus.',
+ 'return_home' => 'Kembali ke home',
+ 'error_occurred' => 'Terjadi kesalahan',
+ 'app_down' => ':appName sedang down sekarang',
+ 'back_soon' => 'Ini akan segera kembali.',
+
+ // Import
+ 'import_zip_cant_read' => 'Tidak dapat membaca berkas ZIP.',
+ 'import_zip_cant_decode_data' => 'Tidak dapat menemukan dan mendekode konten ZIP data.json.',
+ 'import_zip_no_data' => 'Data berkas ZIP tidak berisi konten buku, bab, atau halaman yang diharapkan.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Impor ZIP gagal divalidasi dengan kesalahan:',
+ 'import_zip_failed_notification' => 'Gagal mengimpor berkas ZIP.',
+ 'import_perms_books' => 'Anda tidak memiliki izin yang diperlukan untuk membuat buku.',
+ 'import_perms_chapters' => 'Anda tidak memiliki izin yang diperlukan untuk membuat bab.',
+ 'import_perms_pages' => 'Anda tidak memiliki izin yang diperlukan untuk membuat halaman.',
+ 'import_perms_images' => 'Anda tidak memiliki izin yang diperlukan untuk membuat gambar.',
+ 'import_perms_attachments' => 'Anda tidak memiliki izin yang diperlukan untuk membuat lampiran.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Tidak ada token otorisasi yang ditemukan pada permintaan tersebut',
+ 'api_bad_authorization_format' => 'Token otorisasi ditemukan pada permintaan tetapi formatnya salah',
+ 'api_user_token_not_found' => 'Tidak ditemukan token API yang cocok untuk token otorisasi yang diberikan',
+ 'api_incorrect_token_secret' => 'Rahasia yang diberikan untuk token API bekas yang diberikan salah',
+ 'api_user_no_api_permission' => 'Pemilik token API yang digunakan tidak memiliki izin untuk melakukan panggilan API',
+ 'api_user_token_expired' => 'Token otorisasi yang digunakan telah kedaluwarsa',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Kesalahan dilempar saat mengirim email uji:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'URL tidak cocok dengan host SSR yang diizinkan yang dikonfigurasi',
+];
diff --git a/lang/id/notifications.php b/lang/id/notifications.php
new file mode 100644
index 00000000000..7b9d2181a25
--- /dev/null
+++ b/lang/id/notifications.php
@@ -0,0 +1,29 @@
+ 'Komentar baru di halaman: :pageName',
+ 'new_comment_intro' => 'Seorang pengguna telah mengomentari halaman di :appName:',
+ 'new_page_subject' => 'Halaman baru: :pageName',
+ 'new_page_intro' => 'Halaman baru telah dibuat di :appName:',
+ 'updated_page_subject' => 'Halaman yang diperbarui: :pageName',
+ 'updated_page_intro' => 'Halaman telah diperbarui di :appName:',
+ 'updated_page_debounce' => 'Untuk mencegah banyaknya pemberitahuan, untuk sementara Anda tidak akan dikirimi pemberitahuan untuk pengeditan lebih lanjut pada halaman ini oleh editor yang sama.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Nama Halaman:',
+ 'detail_page_path' => 'Jalur Halaman:',
+ 'detail_commenter' => 'Komentator:',
+ 'detail_comment' => 'Komentar:',
+ 'detail_created_by' => 'Dibuat Oleh:',
+ 'detail_updated_by' => 'Diperbarui Oleh:',
+
+ 'action_view_comment' => 'Lihat Komentar',
+ 'action_view_page' => 'Lihat Halaman',
+
+ 'footer_reason' => 'Pemberitahuan ini dikirimkan kepada Anda karena :link mencakup jenis aktivitas untuk item ini.',
+ 'footer_reason_link' => 'preferensi notifikasi Anda',
+];
diff --git a/resources/lang/id/pagination.php b/lang/id/pagination.php
similarity index 100%
rename from resources/lang/id/pagination.php
rename to lang/id/pagination.php
diff --git a/lang/id/passwords.php b/lang/id/passwords.php
new file mode 100644
index 00000000000..2559b265133
--- /dev/null
+++ b/lang/id/passwords.php
@@ -0,0 +1,15 @@
+ 'Passwords must be at least eight characters and match the confirmation.',
+ 'user' => "Kami tidak dapat menemukan pengguna dengan alamat email tersebut.",
+ 'token' => 'Token setel ulang sandi tidak valid untuk alamat email ini.',
+ 'sent' => 'Kami telah mengirimkan email tautan pengaturan ulang kata sandi Anda!',
+ 'reset' => 'Kata sandi Anda telah disetel ulang!',
+
+];
diff --git a/lang/id/preferences.php b/lang/id/preferences.php
new file mode 100644
index 00000000000..1c7d4248d6c
--- /dev/null
+++ b/lang/id/preferences.php
@@ -0,0 +1,52 @@
+ 'Akun Saya',
+
+ 'shortcuts' => 'Pintasan',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Here you can enable or disable keyboard system interface shortcuts, used for navigation and actions.',
+ 'shortcuts_customize_desc' => 'You can customize each of the shortcuts below. Just press your desired key combination after selecting the input for a shortcut.',
+ 'shortcuts_toggle_label' => 'Keyboard shortcuts enabled',
+ 'shortcuts_section_navigation' => 'Navigasi',
+ 'shortcuts_section_actions' => 'Common Actions',
+ 'shortcuts_save' => 'Simpan Pintasan',
+ 'shortcuts_overlay_desc' => 'Note: When shortcuts are enabled a helper overlay is available via pressing "?" which will highlight the available shortcuts for actions currently visible on the screen.',
+ 'shortcuts_update_success' => 'Shortcut preferences have been updated!',
+ 'shortcuts_overview_desc' => 'Manage keyboard shortcuts you can use to navigate the system user interface.',
+
+ 'notifications' => 'Notification Preferences',
+ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.',
+ 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own',
+ 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notify upon replies to my comments',
+ 'notifications_save' => 'Save Preferences',
+ 'notifications_update_success' => 'Notification preferences have been updated!',
+ 'notifications_watched' => 'Watched & Ignored Items',
+ 'notifications_watched_desc' => 'Below are the items that have custom watch preferences applied. To update your preferences for these, view the item then find the watch options in the sidebar.',
+
+ 'auth' => 'Access & Security',
+ 'auth_change_password' => 'Ubah Kata Sandi',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Password has been updated!',
+
+ 'profile' => 'Profile Details',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'View Public Profile',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Delete Account',
+ 'delete_my_account' => 'Delete My Account',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/id/settings.php b/lang/id/settings.php
new file mode 100644
index 00000000000..8bdd99e6890
--- /dev/null
+++ b/lang/id/settings.php
@@ -0,0 +1,374 @@
+ 'Pengaturan',
+ 'settings_save' => 'Simpan Pengaturan',
+ 'system_version' => 'Versi Sistem',
+ 'categories' => 'Kategori',
+
+ // App Settings
+ 'app_customization' => 'Kustomisasi',
+ 'app_features_security' => 'Fitur & Keamanan',
+ 'app_name' => 'Nama aplikasi',
+ 'app_name_desc' => 'Nama ini ditampilkan di tajuk dan di semua email yang dikirim oleh sistem.',
+ 'app_name_header' => 'Tampilkan nama di header',
+ 'app_public_access' => 'Akses publik',
+ 'app_public_access_desc' => 'Mengaktifkan opsi ini akan memungkinkan pengunjung, yang tidak masuk, untuk mengakses konten dalam contoh BookStack Anda.',
+ 'app_public_access_desc_guest' => 'Akses untuk pengunjung umum dapat dikontrol melalui pengguna "Tamu".',
+ 'app_public_access_toggle' => 'Izinkan akses publik',
+ 'app_public_viewing' => 'Izinkan tontonan publik?',
+ 'app_secure_images' => 'Unggahan Gambar Keamanan Lebih Tinggi',
+ 'app_secure_images_toggle' => 'Aktifkan unggahan gambar dengan keamanan lebih tinggi',
+ 'app_secure_images_desc' => 'Untuk alasan performa, semua gambar bersifat publik. Opsi ini menambahkan string acak yang sulit ditebak di depan url gambar. Pastikan indeks direktori tidak diaktifkan untuk mencegah akses mudah.',
+ 'app_default_editor' => 'Editor Halaman Default',
+ 'app_default_editor_desc' => 'Pilih editor yang akan digunakan secara default saat mengedit halaman baru. Pengaturan ini dapat diganti di tingkat halaman di mana itu diizinkan.',
+ 'app_custom_html' => 'Kustom Konten HTML Head',
+ 'app_custom_html_desc' => 'Konten apa pun yang ditambahkan di sini akan dimasukkan ke bagian bawah bagian dari setiap halaman. Ini berguna untuk mengganti gaya atau menambahkan kode analitik.',
+ 'app_custom_html_disabled_notice' => 'Kustom konten HTML Head dinonaktifkan pada halaman pengaturan ini untuk memastikan setiap perubahan yang mengganggu dapat dikembalikan.',
+ 'app_logo' => 'Logo Aplikasi',
+ 'app_logo_desc' => 'Ini digunakan di bilah tajuk aplikasi, di antara area lainnya. Gambar ini harus memiliki tinggi 86px. Gambar besar akan diperkecil.',
+ 'app_icon' => 'Ikon Aplikasi',
+ 'app_icon_desc' => 'Ikon digunakan pada tab browser dan ikon-ikon pintasan. Berkas harus berupa gambar IMG persegi dengan ukuran 256px.',
+ 'app_homepage' => 'Beranda Aplikasi',
+ 'app_homepage_desc' => 'Pilih tampilan untuk ditampilkan di beranda alih-alih tampilan default. Izin halaman diabaikan untuk halaman yang dipilih.',
+ 'app_homepage_select' => 'Pilih halaman',
+ 'app_footer_links' => 'Link Footer',
+ 'app_footer_links_desc' => 'Tambahkan link untuk ditampilkan dalam footer situs. Ini akan ditampilkan di bagian bawah kebanyakan halaman, termasuk yang tidak memerlukan login. Anda dapat menggunakan label "trans::" untuk menggunakan terjemahan yang ditentukan sistem. Sebagai contoh: Menggunakan "trans::common.privacy_policy" akan memberikan teks terjemahan "Privacy Policy" dan akan memberikan teks "Terms of Service".terjemahan trans::common.terms_of_service".',
+ 'app_footer_links_label' => 'Link Label',
+ 'app_footer_links_url' => 'Link URL',
+ 'app_footer_links_add' => 'Tambahkan Link Footer',
+ 'app_disable_comments' => 'Nonaktifkan Komentar',
+ 'app_disable_comments_toggle' => 'Nonaktifkan komentar',
+ 'app_disable_comments_desc' => 'Menonaktifkan komentar di semua halaman dalam aplikasi. Komentar yang ada tidak ditampilkan.',
+
+ // Color settings
+ 'color_scheme' => 'Skema Warna Aplikasi',
+ 'color_scheme_desc' => 'Atur warna-warna untuk digunakan dalam antar muka aplikasi. Warna-warna dapat diatur secara terpisah masing-masing untuk mode gelap dan terang agar sesuai dengan tema dan memastikan keterbacaan.',
+ 'ui_colors_desc' => 'Atur warna primer aplikasi dan warna tautan default. Warna primer terutama digunakan untuk bilah tajuk, tombol, dan dekorasi antarmuka. Warna tautan default digunakan untuk tautan dan tindakan berbasis teks, baik dalam konten tertulis maupun dalam antarmuka aplikasi.',
+ 'app_color' => 'Warna Utama',
+ 'link_color' => 'Warna Tautan Default',
+ 'content_colors_desc' => 'Tetapkan warna untuk semua elemen dalam hierarki organisasi halaman. Sebaiknya pilih warna dengan tingkat kecerahan yang mirip dengan warna default agar mudah dibaca.',
+ 'bookshelf_color' => 'Warna Rak',
+ 'book_color' => 'Warna Buku',
+ 'chapter_color' => 'Warna Bab',
+ 'page_color' => 'Warna Halaman',
+ 'page_draft_color' => 'Warna Halaman Draf',
+
+ // Registration Settings
+ 'reg_settings' => 'Pendaftaran',
+ 'reg_enable' => 'Aktifkan Pendaftaran',
+ 'reg_enable_toggle' => 'Aktifkan Pendaftaran',
+ 'reg_enable_desc' => 'Saat pendaftaran diaktifkan, pengguna akan dapat mendaftar sendiri sebagai pengguna aplikasi. Setelah pendaftaran, mereka diberi peran pengguna default tunggal.',
+ 'reg_default_role' => 'Peran pengguna default setelah pendaftaran',
+ 'reg_enable_external_warning' => 'Opsi di atas diabaikan saat otentikasi LDAP atau SAML eksternal aktif. Akun pengguna untuk anggota yang tidak ada akan dibuat secara otomatis jika otentikasi, terhadap sistem eksternal yang digunakan, berhasil.',
+ 'reg_email_confirmation' => 'Konfirmasi email',
+ 'reg_email_confirmation_toggle' => 'Memerlukan konfirmasi email',
+ 'reg_confirm_email_desc' => 'Jika batasan domain digunakan maka konfirmasi email akan diperlukan dan opsi ini akan diabaikan.',
+ 'reg_confirm_restrict_domain' => 'Pembatasan Domain',
+ 'reg_confirm_restrict_domain_desc' => 'Masukkan daftar domain email yang dipisahkan dengan koma yang ingin Anda batasi pendaftarannya. Pengguna akan dikirimi email untuk mengonfirmasi alamat mereka sebelum diizinkan untuk berinteraksi dengan aplikasi. Perhatikan bahwa pengguna akan dapat mengubah alamat email mereka setelah pendaftaran berhasil.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Tidak ada batasan yang ditetapkan',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Pilih aturan sortir default yang akan diterapkan pada buku baru. Aturan ini tidak akan memengaruhi buku yang sudah ada, dan dapat diganti per buku.',
+ 'sorting_rules' => 'Aturan Penyortiran',
+ 'sorting_rules_desc' => 'Ini adalah operasi penyortiran yang telah ditetapkan sebelumnya yang dapat diterapkan pada konten dalam sistem.',
+ 'sort_rule_assigned_to_x_books' => 'Dikaitkan ke :count Buku|Dikaitkan ke :count Buku',
+ 'sort_rule_create' => 'Buat Aturan Penyortiran',
+ 'sort_rule_edit' => 'Mengedit Aturan Penyortiran',
+ 'sort_rule_delete' => 'Hapus Aturan Penyortiran',
+ 'sort_rule_delete_desc' => 'Hapus aturan sortir ini dari sistem. Buku yang menggunakan sortir ini akan kembali ke sortir manual.',
+ 'sort_rule_delete_warn_books' => 'Aturan sortir ini saat ini digunakan pada :count buku (banyak buku). Apakah Anda yakin ingin menghapus ini?',
+ 'sort_rule_delete_warn_default' => 'Aturan sortir ini saat ini digunakan sebagai aturan baku untuk buku. Apakah Anda yakin ingin menghapusnya?',
+ 'sort_rule_details' => 'Perincian Aturan Penyortiran',
+ 'sort_rule_details_desc' => 'Tetapkan nama untuk aturan pengurutan ini, yang akan muncul dalam daftar saat pengguna memilih pengurutan.',
+ 'sort_rule_operations' => 'Operasi Penyortiran',
+ 'sort_rule_operations_desc' => 'Konfigurasikan tindakan sortir yang akan dilakukan dengan memindahkannya dari daftar operasi yang tersedia. Setelah digunakan, operasi akan diterapkan secara berurutan, dari atas ke bawah. Setiap perubahan yang dibuat di sini akan diterapkan ke semua buku yang ditetapkan setelah disimpan.',
+ 'sort_rule_available_operations' => 'Operasi yang Tersedia',
+ 'sort_rule_available_operations_empty' => 'Tidak ada operasi yang tersisa',
+ 'sort_rule_configured_operations' => 'Operasi yang Sudah Dikonfigurasi',
+ 'sort_rule_configured_operations_empty' => 'Seret/tambahkan operasi dari daftar "Operasi yang Tersedia"',
+ 'sort_rule_op_asc' => '(Naik)',
+ 'sort_rule_op_desc' => '(Turun)',
+ 'sort_rule_op_name' => 'Nama - Alfabetis',
+ 'sort_rule_op_name_numeric' => 'Nama - Numerik',
+ 'sort_rule_op_created_date' => 'Tanggal Dibuat',
+ 'sort_rule_op_updated_date' => 'Tanggal Pembaruan',
+ 'sort_rule_op_chapters_first' => 'Bab di Urutan Pertama',
+ 'sort_rule_op_chapters_last' => 'Bab di Urutan Terakhir',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Pemeliharaan',
+ 'maint_image_cleanup' => 'Gambar Bersihkan',
+ 'maint_image_cleanup_desc' => 'Pindai halaman & konten revisi untuk memeriksa gambar dan gambar mana yang saat ini digunakan dan gambar mana yang berlebihan. Pastikan Anda membuat database lengkap dan cadangan gambar sebelum menjalankan ini.',
+ 'maint_delete_images_only_in_revisions' => 'Hapus juga gambar yang hanya ada di revisi halaman lama',
+ 'maint_image_cleanup_run' => 'Jalankan Pembersihan',
+ 'maint_image_cleanup_warning' => ':count ditemukan gambar yang berpotensi tidak digunakan. Anda yakin ingin menghapus gambar-gambar ini?',
+ 'maint_image_cleanup_success' => ':count gambar yang mungkin tidak digunakan ditemukan dan dihapus!',
+ 'maint_image_cleanup_nothing_found' => 'Tidak ada gambar yang tidak digunakan ditemukan, Tidak ada yang dihapus!',
+ 'maint_send_test_email' => 'Kirim Email Tes',
+ 'maint_send_test_email_desc' => 'Ini mengirimkan email percobaan ke alamat email Anda yang ditentukan di profil Anda.',
+ 'maint_send_test_email_run' => 'Kirim email tes',
+ 'maint_send_test_email_success' => 'Email dikirim ke :address',
+ 'maint_send_test_email_mail_subject' => 'Uji Email',
+ 'maint_send_test_email_mail_greeting' => 'Pengiriman email sepertinya berhasil!',
+ 'maint_send_test_email_mail_text' => 'Selamat! Saat Anda menerima pemberitahuan email ini, pengaturan email Anda tampaknya telah dikonfigurasi dengan benar.',
+ 'maint_recycle_bin_desc' => 'Rak, buku, bab & halaman yang dihapus dikirim ke recycle bin sehingga dapat dipulihkan atau dihapus secara permanen. Item lama di recycle bin dapat dihapus secara otomatis setelah beberapa saat tergantung pada konfigurasi sistem.',
+ 'maint_recycle_bin_open' => 'Buka Tempat Sampah',
+ 'maint_regen_references' => 'Perbarui Referensi',
+ 'maint_regen_references_desc' => 'Tindakan ini akan membangun kembali indeks referensi lintas item dalam basis data. Hal ini biasanya ditangani secara otomatis, tetapi tindakan ini dapat berguna untuk mengindeks konten lama atau konten yang ditambahkan melalui metode tidak resmi.',
+ 'maint_regen_references_success' => 'Indeks referensi telah diperbarui!',
+ 'maint_timeout_command_note' => 'Catatan: Tindakan ini memerlukan waktu untuk dijalankan, yang dapat menyebabkan masalah batas waktu di beberapa lingkungan web. Sebagai alternatif, tindakan ini dapat dilakukan menggunakan perintah terminal.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Tempat Sampah',
+ 'recycle_bin_desc' => 'Di sini Anda dapat memulihkan item yang telah dihapus atau memilih untuk menghapusnya secara permanen dari sistem. Daftar ini tidak difilter, tidak seperti daftar aktivitas serupa di sistem tempat filter izin diterapkan.',
+ 'recycle_bin_deleted_item' => 'Item yang Dihapus',
+ 'recycle_bin_deleted_parent' => 'Induk',
+ 'recycle_bin_deleted_by' => 'Dihapus Oleh',
+ 'recycle_bin_deleted_at' => 'Waktu Penghapusan',
+ 'recycle_bin_permanently_delete' => 'Hapus Permanen',
+ 'recycle_bin_restore' => 'Mengembalikan',
+ 'recycle_bin_contents_empty' => 'Hapus Secara Permanen',
+ 'recycle_bin_empty' => 'Kosongkan Tempat Sampah',
+ 'recycle_bin_empty_confirm' => 'Ini akan menghancurkan secara permanen semua item di tempat sampah termasuk konten yang ada di dalam setiap item. Anda yakin ingin mengosongkan tempat sampah?',
+ 'recycle_bin_destroy_confirm' => 'Tindakan ini akan menghapus item ini secara permanen dari sistem, beserta semua elemen turunan yang tercantum di bawah ini, dan Anda tidak akan dapat memulihkan konten ini. Apakah Anda yakin ingin menghapus item ini secara permanen?',
+ 'recycle_bin_destroy_list' => 'Item yang akan Dihancurkan',
+ 'recycle_bin_restore_list' => 'Item yang akan Dipulihkan',
+ 'recycle_bin_restore_confirm' => 'Tindakan ini akan memulihkan item yang dihapus, termasuk semua elemen anak, ke lokasi aslinya. Jika lokasi asli telah dihapus, dan sekarang berada di keranjang sampah, item induk juga perlu dipulihkan.',
+ 'recycle_bin_restore_deleted_parent' => 'Induk item ini juga telah dihapus. Ini akan tetap dihapus sampai induknya juga dipulihkan.',
+ 'recycle_bin_restore_parent' => 'Pulihkan Induk',
+ 'recycle_bin_destroy_notification' => 'Total :count item dari tempat sampah.',
+ 'recycle_bin_restore_notification' => 'Total :count item yang dipulihkan dari tempat sampah.',
+
+ // Audit Log
+ 'audit' => 'Log Audit',
+ 'audit_desc' => 'Log audit ini menampilkan daftar aktivitas yang dilacak dalam sistem. Daftar ini tidak difilter, tidak seperti daftar aktivitas serupa di sistem tempat filter izin diterapkan.',
+ 'audit_event_filter' => 'Filter Peristiwa',
+ 'audit_event_filter_no_filter' => 'Tanpa Filter',
+ 'audit_deleted_item' => 'Item yang Dihapus',
+ 'audit_deleted_item_name' => 'Nama :name',
+ 'audit_table_user' => 'Pengguna',
+ 'audit_table_event' => 'Peristiwa',
+ 'audit_table_related' => 'Item atau Detail Terkait',
+ 'audit_table_ip' => 'Alamat IP',
+ 'audit_table_date' => 'Tanggal Kegiatan',
+ 'audit_date_from' => 'Rentang Tanggal Dari',
+ 'audit_date_to' => 'Rentang Tanggal Sampai',
+
+ // Role Settings
+ 'roles' => 'Peran',
+ 'role_user_roles' => 'Peran Pengguna',
+ 'roles_index_desc' => 'Peran digunakan untuk mengelompokkan pengguna & memberikan izin sistem kepada anggotanya. Jika pengguna menjadi anggota beberapa peran, hak istimewa yang diberikan akan bertumpuk dan pengguna akan mewarisi semua kemampuan.',
+ 'roles_x_users_assigned' => ':count pengguna yang ditetapkan|:count pengguna-pengguna yang ditetapkan',
+ 'roles_x_permissions_provided' => ':count izin|:count izin-izin',
+ 'roles_assigned_users' => 'Pengguna yang Ditetapkan',
+ 'roles_permissions_provided' => 'Izin yang diberikan',
+ 'role_create' => 'Buat Peran Baru',
+ 'role_delete' => 'Hapus Peran',
+ 'role_delete_confirm' => 'Ini akan menghapus peran dengan nama \':roleName\'.',
+ 'role_delete_users_assigned' => 'Peran ini memiliki :userCount pengguna yang ditugaskan padanya. Jika Anda ingin memindahkan pengguna dari peran ini pilih peran baru di bawah.',
+ 'role_delete_no_migration' => "Jangan migrasikan pengguna",
+ 'role_delete_sure' => 'Anda yakin ingin menghapus peran ini?',
+ 'role_edit' => 'Edit Peran',
+ 'role_details' => 'Detail Peran',
+ 'role_name' => 'Nama peran',
+ 'role_desc' => 'Deskripsi Singkat Peran',
+ 'role_mfa_enforced' => 'Membutuhkan Otentikasi Multi Faktor',
+ 'role_external_auth_id' => 'Otentikasi Eksternal IDs',
+ 'role_system' => 'Izin Sistem',
+ 'role_manage_users' => 'Kelola pengguna',
+ 'role_manage_roles' => 'Kelola peran & izin peran',
+ 'role_manage_entity_permissions' => 'Kelola semua izin buku, bab & halaman',
+ 'role_manage_own_entity_permissions' => 'Kelola izin di buku, bab & halaman sendiri',
+ 'role_manage_page_templates' => 'Kelola template halaman',
+ 'role_access_api' => 'Akses Sistem API',
+ 'role_manage_settings' => 'Kelola setelan aplikasi',
+ 'role_export_content' => 'Ekspor konten',
+ 'role_import_content' => 'Impor Konten',
+ 'role_editor_change' => 'Ubah editor halaman',
+ 'role_notifications' => 'Terima dan kelola notifikasi',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Izin Aset',
+ 'roles_system_warning' => 'Ketahuilah bahwa akses ke salah satu dari tiga izin di atas dapat memungkinkan pengguna untuk mengubah hak mereka sendiri atau orang lain dalam sistem. Hanya tetapkan peran dengan izin ini untuk pengguna tepercaya.',
+ 'role_asset_desc' => 'Izin ini mengontrol akses default ke aset dalam sistem. Izin pada Buku, Bab, dan Halaman akan menggantikan izin ini.',
+ 'role_asset_admins' => 'Admin secara otomatis diberi akses ke semua konten tetapi opsi ini dapat menampilkan atau menyembunyikan opsi UI.',
+ 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Semua',
+ 'role_own' => 'Sendiri',
+ 'role_controlled_by_asset' => 'Dikendalikan oleh aset tempat mereka diunggah',
+ 'role_save' => 'Simpan Peran',
+ 'role_users' => 'Peran berhasil diperbarui',
+ 'role_users_none' => 'Saat ini tidak ada pengguna yang ditugaskan untuk peran ini',
+
+ // Users
+ 'users' => 'Pengguna',
+ 'users_index_desc' => 'Create & manage individual user accounts within the system. User accounts are used for login and attribution of content & activity. Access permissions are primarily role-based but user content ownership, among other factors, may also affect permissions & access.',
+ 'user_profile' => 'Profil Pengguna',
+ 'users_add_new' => 'Tambahkan pengguna baru',
+ 'users_search' => 'Cari Pengguna',
+ 'users_latest_activity' => 'Aktivitas Terbaru',
+ 'users_details' => 'Detail Pengguna',
+ 'users_details_desc' => 'Tetapkan nama tampilan dan alamat email untuk pengguna ini. Alamat email akan digunakan untuk masuk ke aplikasi.',
+ 'users_details_desc_no_email' => 'Tetapkan nama tampilan untuk pengguna ini agar orang lain dapat mengenalinya.',
+ 'users_role' => 'Peran Pengguna',
+ 'users_role_desc' => 'Pilih peran mana yang akan ditetapkan untuk pengguna ini. Jika pengguna ditetapkan ke beberapa peran, izin dari peran tersebut akan bertumpuk dan mereka akan menerima semua kemampuan dari peran yang ditetapkan.',
+ 'users_password' => 'Kata Sandi Pengguna',
+ 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 8 characters long.',
+ 'users_send_invite_text' => 'Anda dapat memilih untuk mengirimi pengguna ini email undangan yang memungkinkan mereka menyetel sandi mereka sendiri, atau Anda dapat menyetel sandi mereka sendiri.',
+ 'users_send_invite_option' => 'Kirim email undangan pengguna',
+ 'users_external_auth_id' => 'Otentikasi Eksternal ID',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ 'users_system_public' => 'Pengguna ini mewakili semua pengguna tamu yang mengunjungi instance Anda. Ini tidak dapat digunakan untuk masuk tetapi ditetapkan secara otomatis.',
+ 'users_delete' => 'Hapus pengguna',
+ 'users_delete_named' => 'Hapus Pengguna :userName',
+ 'users_delete_warning' => 'Ini sepenuhnya akan menghapus pengguna ini dengan nama \':userName\' dari sistem.',
+ 'users_delete_confirm' => 'Apakah Anda yakin ingin menghapus pengguna ini?',
+ 'users_migrate_ownership' => 'Migrasikan Kepemilikan',
+ 'users_migrate_ownership_desc' => 'Pilih pengguna di sini jika Anda ingin pengguna lain menjadi pemilik semua item yang saat ini dimiliki oleh pengguna ini.',
+ 'users_none_selected' => 'Tidak ada pengguna yang dipilih',
+ 'users_edit' => 'Edit Pengguna',
+ 'users_edit_profile' => 'Edit Profil',
+ 'users_avatar' => 'Abatar Pengguna',
+ 'users_avatar_desc' => 'Pilih gambar untuk mewakili pengguna ini. berukuran 256px.',
+ 'users_preferred_language' => 'Bahasa Pilihan',
+ 'users_preferred_language_desc' => 'Opsi ini akan mengubah bahasa yang digunakan untuk antarmuka pengguna aplikasi. Ini tidak akan memengaruhi konten yang dibuat pengguna.',
+ 'users_social_accounts' => 'Akun Sosial',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Di sini Anda dapat menghubungkan akun Anda yang lain untuk login yang lebih cepat dan mudah. Memutuskan akun di sini tidak mencabut akses resmi sebelumnya. Cabut akses dari pengaturan profil Anda pada akun sosial yang terhubung.',
+ 'users_social_connect' => 'Hubungkan Akun',
+ 'users_social_disconnect' => 'Putuskan Sambungan Akun',
+ 'users_social_status_connected' => 'Terhubung',
+ 'users_social_status_disconnected' => 'Terputus',
+ 'users_social_connected' => ':socialAccount akun berhasil dilampirkan ke profil Anda.',
+ 'users_social_disconnected' => ':socialAccount akun berhasil diputuskan dari profil Anda.',
+ 'users_api_tokens' => 'Token API',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'Tidak ada token API yang telah dibuat untuk pengguna ini',
+ 'users_api_tokens_create' => 'Buat Token',
+ 'users_api_tokens_expires' => 'Kedaluwarsa',
+ 'users_api_tokens_docs' => 'Dokumentasi API',
+ 'users_mfa' => 'Otentikasi Multi Faktor',
+ 'users_mfa_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'users_mfa_x_methods' => ':count method configured|:count methods configured',
+ 'users_mfa_configure' => 'Configure Methods',
+
+ // API Tokens
+ 'user_api_token_create' => 'Buat Token API',
+ 'user_api_token_name' => 'Nama',
+ 'user_api_token_name_desc' => 'Berikan token Anda nama yang dapat dibaca sebagai pengingat masa depan akan tujuan yang dimaksudkan.',
+ 'user_api_token_expiry' => 'Tanggal kadaluarsa',
+ 'user_api_token_expiry_desc' => 'Setel tanggal token ini kedaluwarsa. Setelah tanggal ini, permintaan yang dibuat menggunakan token ini tidak akan berfungsi lagi. Mengosongkan bidang ini akan menetapkan masa berlaku 100 tahun ke depan.',
+ 'user_api_token_create_secret_message' => 'Segera setelah membuat token ini, "Token ID" & "Token Secret" akan dibuat dan ditampilkan. Rahasianya hanya akan ditampilkan satu kali jadi pastikan untuk menyalin nilainya ke tempat yang aman dan terlindungi sebelum melanjutkan.',
+ 'user_api_token' => 'Token API',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'Ini adalah sebuah pengenal yang dihasilkan oleh sistem yang tidak dapat disunting untuk token ini yang perlu untuk disediakan dalam permintaan API.',
+ 'user_api_token_secret' => 'Token Secret',
+ 'user_api_token_secret_desc' => 'Ini adalah rahasia yang dihasilkan sistem untuk token ini yang perlu disediakan dalam permintaan API. Ini hanya akan ditampilkan kali ini jadi salin nilai ini ke tempat yang aman dan terlindungi.',
+ 'user_api_token_created' => 'Token dibuat :timeAgo',
+ 'user_api_token_updated' => 'Token diperbarui :timeAgo',
+ 'user_api_token_delete' => 'Hapus Token',
+ 'user_api_token_delete_warning' => 'Ini akan sepenuhnya menghapus token API ini dengan nama \': tokenName\' dari sistem.',
+ 'user_api_token_delete_confirm' => 'Anda yakin ingin menghapus token API ini?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks are a way to send data to external URLs when certain actions and events occur within the system which allows event-based integration with external platforms such as messaging or notification systems.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'Create New Webhook',
+ 'webhooks_none_created' => 'No webhooks have yet been created.',
+ 'webhooks_edit' => 'Edit Webhook',
+ 'webhooks_save' => 'Save Webhook',
+ 'webhooks_details' => 'Webhook Details',
+ 'webhooks_details_desc' => 'Provide a user friendly name and a POST endpoint as a location for the webhook data to be sent to.',
+ 'webhooks_events' => 'Webhook Events',
+ 'webhooks_events_desc' => 'Select all the events that should trigger this webhook to be called.',
+ 'webhooks_events_warning' => 'Keep in mind that these events will be triggered for all selected events, even if custom permissions are applied. Ensure that use of this webhook won\'t expose confidential content.',
+ 'webhooks_events_all' => 'All system events',
+ 'webhooks_name' => 'Webhook Name',
+ 'webhooks_timeout' => 'Webhook Request Timeout (Seconds)',
+ 'webhooks_endpoint' => 'Webhook Endpoint',
+ 'webhooks_active' => 'Webhook Active',
+ 'webhook_events_table_header' => 'Events',
+ 'webhooks_delete' => 'Delete Webhook',
+ 'webhooks_delete_warning' => 'This will fully delete this webhook, with the name \':webhookName\', from the system.',
+ 'webhooks_delete_confirm' => 'Are you sure you want to delete this webhook?',
+ 'webhooks_format_example' => 'Webhook Format Example',
+ 'webhooks_format_example_desc' => 'Webhook data is sent as a POST request to the configured endpoint as JSON following the format below. The "related_item" and "url" properties are optional and will depend on the type of event triggered.',
+ 'webhooks_status' => 'Webhook Status',
+ 'webhooks_last_called' => 'Last Called:',
+ 'webhooks_last_errored' => 'Last Errored:',
+ 'webhooks_last_error_message' => 'Last Error Message:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'Lisensi BookStack',
+ 'licenses_php' => 'Lisensi Pustaka PHP',
+ 'licenses_js' => 'Lisensi Pustaka JavaScript',
+ 'licenses_other' => 'Lisensi Lainnya',
+ 'license_details' => 'Perincian Lisensi',
+
+ //! 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' => 'Katalan',
+ 'cs' => 'Česky',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/id/validation.php b/lang/id/validation.php
new file mode 100644
index 00000000000..b649ef6feb4
--- /dev/null
+++ b/lang/id/validation.php
@@ -0,0 +1,123 @@
+ ':attribute harus diterima.',
+ 'active_url' => ':attribute bukan URL yang valid.',
+ 'after' => ':attribute harus setelah tanggal :date.',
+ 'alpha' => ':attribute hanya boleh berisi huruf.',
+ 'alpha_dash' => ':attribute hanya boleh berisi huruf, angka, tanda hubung, dan garis bawah.',
+ 'alpha_num' => ':attribute hanya boleh berisi huruf dan angka.',
+ 'array' => ':attribute harus berupa larik.',
+ 'backup_codes' => 'Kode yang diberikan tidak valid atau telah digunakan.',
+ 'before' => ':attribute harus tanggal sebelum :date.',
+ 'between' => [
+ 'numeric' => ':attribute harus di antara :min dan :max.',
+ 'file' => ':attribute harus diantara :min dan :max kilobyte.',
+ 'string' => ':attribute harus memiliki karakter antara :min dan :max.',
+ 'array' => ':attribute harus memiliki item antara :min dan :max.',
+ ],
+ 'boolean' => ':attribute bidang harus berisi benar atau salah.',
+ 'confirmed' => ':attribute konfirmasi tidak sama.',
+ 'date' => ':attribute bukan tanggal yang valid.',
+ 'date_format' => ':attribute tidak sesuai dengan format :format.',
+ 'different' => ':attribute dan :other harus berbeda.',
+ 'digits' => ':attribute harus :digits digit.',
+ 'digits_between' => ':attribute harus diantara :min dan :max digit.',
+ 'email' => ':attrtibute Harus alamat e-mail yang valid.',
+ 'ends_with' => ':attribute harus diakhiri dengan salah satu dari berikut ini: :values',
+ 'file' => ':attribute harus diberikan sebagai file yang valid.',
+ 'filled' => ':attribute bidang diperlukan.',
+ 'gt' => [
+ 'numeric' => ':attribute harus lebih besar dari :value.',
+ 'file' => ':attribute harus lebih besar dari :value kilobyte.',
+ 'string' => ':attribute harus lebih besar dari :value karakter.',
+ 'array' => ':attribute harus memiliki lebih dari item :value.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute harus lebih besar dari atau sama dengan :value.',
+ 'file' => ':attribute harus lebih besar dari atau sama dengan :value kilobyte.',
+ 'string' => ':attribute harus lebih besar dari atau sama dengan karakter :value.',
+ 'array' => ':attribute harus memiliki :value item atau lebih.',
+ ],
+ 'exists' => ':attribute yang dipilih tidak valid.',
+ 'image' => ':attribute harus berupa gambar.',
+ 'image_extension' => ':attribute harus memiliki ekstensi gambar yang valid & didukung.',
+ 'in' => ':attribute yang dipilih tidak valid.',
+ 'integer' => ':attribute harus berupa bilangan bulat.',
+ 'ip' => ':attribute harus berupa alamat IP yang valid.',
+ 'ipv4' => ':attribute harus berupa alamat IPv4 yang valid.',
+ 'ipv6' => ':attribute harus berupa alamat IPv6 yang valid.',
+ 'json' => ':attribute harus berupa string JSON yang valid.',
+ 'lt' => [
+ 'numeric' => ':attribute harus kurang dari :value.',
+ 'file' => ':attribute harus kurang dari :value kilobyte.',
+ 'string' => ':attribute harus kurang dari :value karakter.',
+ 'array' => ':attribute harus memiliki kurang dari :value item.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute harus kurang dari atau sama dengan :value.',
+ 'file' => ':attribute harus kurang dari atau sama dengan :value kilobyte.',
+ 'string' => ':attribute harus kurang dari atau sama dengan :value karakter.',
+ 'array' => ':attribute tidak boleh memiliki lebih dari :value item.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute tidak boleh lebih dari :max.',
+ 'file' => ':attribute tidak boleh lebih dari :max kilobyte.',
+ 'string' => ':attribute tidak boleh lebih dari :max karakter.',
+ 'array' => ':attribute tidak boleh memiliki lebih dari :max item.',
+ ],
+ 'mimes' => ':attribute harus berupa file dengan tipe: :value.',
+ 'min' => [
+ 'numeric' => ':attribute minimal harus :min.',
+ 'file' => ':attribute minimal harus :min kilobyte.',
+ 'string' => ':attribute setidaknya harus :min karakter.',
+ 'array' => ':attribute minimal harus memiliki :min item.',
+ ],
+ 'not_in' => ':attribute yang dipilih tidak valid.',
+ 'not_regex' => ':attribute format tidak valid.',
+ 'numeric' => ':attribute harus berupa nomot.',
+ 'regex' => 'Format :attribute tidak valid.',
+ 'required' => ':attribute bidang harus diisi.',
+ 'required_if' => ':attribute Bidang harus diisi saat :other atau :value.',
+ 'required_with' => 'Bidang :attribute harus diisi jika ada :nilai.',
+ 'required_with_all' => 'Bidang :attribute harus diisi jika ada :values.',
+ 'required_without' => 'Bidang :attribute harus diisi jika :values tidak ada.',
+ 'required_without_all' => 'Bidang :attribute harus diisi jika tidak ada :value yang ada.',
+ 'same' => ':attribute dan :other harus sama.',
+ 'safe_url' => 'Tautan yang diberikan mungkin tidak aman.',
+ 'size' => [
+ 'numeric' => ':attribute harus berukuran :size.',
+ 'file' => ':attribute harus berukuran :size kilobyte.',
+ 'string' => ':attribute harus memiliki karakter berukuran :size.',
+ 'array' => ':attribute harus mengandung :size item.',
+ ],
+ 'string' => ':attribute harus berupa string.',
+ 'timezone' => ':attribute harus menjadi zona yang valid.',
+ 'totp' => 'Kode yang diberikan tidak valid atau telah kedaluwarsa.',
+ 'unique' => ':attribute sudah diambil.',
+ 'url' => ':attribute format tidak valid.',
+ 'uploaded' => 'Berkas tidak dapat diunggah. Server mungkin tidak menerima berkas dengan ukuran ini.',
+
+ 'zip_file' => ':attribute perlu merujuk ke sebuah file yang terdapat di dalam arsip ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => ':attribute seharusnya berupa file dengan tipe :validTypes, tapi yang Anda unggah bertipe :foundType.',
+ 'zip_model_expected' => 'Diharapkan sebuah objek data, namun yang ditemukan adalah \':type\'.',
+ 'zip_unique' => ':attribute harus bersifat unik untuk setiap jenis objek dalam file ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Konfirmasi kata sandi diperlukan',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/is/activities.php b/lang/is/activities.php
new file mode 100644
index 00000000000..e70aa2567f0
--- /dev/null
+++ b/lang/is/activities.php
@@ -0,0 +1,140 @@
+ 'stofna síðu',
+ 'page_create_notification' => 'Síða stofnuð',
+ 'page_update' => 'nafnlaus síða',
+ 'page_update_notification' => 'Síða uppfærð',
+ 'page_delete' => 'síðu eytt',
+ 'page_delete_notification' => 'Tókst að eyða síðu',
+ 'page_restore' => 'endurvirkja síðu',
+ 'page_restore_notification' => 'Síða endurvirkjuð',
+ 'page_move' => 'síða færð',
+ 'page_move_notification' => 'Tókst að færa síðu',
+
+ // Chapters
+ 'chapter_create' => 'kafli búinn til',
+ 'chapter_create_notification' => 'Tókst að búa til kafla',
+ 'chapter_update' => 'kafli uppfærður',
+ 'chapter_update_notification' => 'Tókst að uppfæra kafla',
+ 'chapter_delete' => 'eyddur kafli',
+ 'chapter_delete_notification' => 'Tókst að eyða kafla',
+ 'chapter_move' => 'færður kafli',
+ 'chapter_move_notification' => 'Tókst að færa kafla',
+
+ // Books
+ 'book_create' => 'stofnuð bók',
+ 'book_create_notification' => 'Tókst að stofna bók',
+ 'book_create_from_chapter' => 'kafla breytt í bók',
+ 'book_create_from_chapter_notification' => 'Tókst að breyta kafla í bók',
+ 'book_update' => 'uppfærð bók',
+ 'book_update_notification' => 'Tókst að uppfæra bók',
+ 'book_delete' => 'eydd bók',
+ 'book_delete_notification' => 'Tókst að eyða bók',
+ 'book_sort' => 'flokkuð bók',
+ 'book_sort_notification' => 'Tókst að endurflokka bók',
+
+ // Bookshelves
+ 'bookshelf_create' => 'stofna hillu',
+ 'bookshelf_create_notification' => 'Tókst að stofna hillu',
+ 'bookshelf_create_from_book' => 'bók breytt i hillu',
+ 'bookshelf_create_from_book_notification' => 'Tókst að breyta bók í hillu',
+ 'bookshelf_update' => 'uppærð hilla',
+ 'bookshelf_update_notification' => 'Tókst að uppfæra hillu',
+ 'bookshelf_delete' => 'eydd hilla',
+ 'bookshelf_delete_notification' => 'Tókst að eyða hillu',
+
+ // Revisions
+ 'revision_restore' => 'útgáfa bakfærð',
+ 'revision_delete' => 'útgáfu eytt',
+ 'revision_delete_notification' => 'Tókst að eyða útgáfu',
+
+ // Favourites
+ 'favourite_add_notification' => 'hefur verið bætt í eftirlæti',
+ 'favourite_remove_notification' => 'hefur verið eytt úr eftirlæti',
+
+ // Watching
+ 'watch_update_level_notification' => 'Fylgjast með hefur verið uppfært',
+
+ // Auth
+ 'auth_login' => 'skráður inn',
+ 'auth_register' => 'skráður sem nýr notandi',
+ 'auth_password_reset_request' => 'bað um nýtt lykilorð',
+ 'auth_password_reset_update' => 'endurstilla lykilorð',
+ 'mfa_setup_method' => 'valin MFA aðferð',
+ 'mfa_setup_method_notification' => 'Fjölauðkenningar aðferð stillt',
+ 'mfa_remove_method' => 'fjarlægja MFA aðferð',
+ 'mfa_remove_method_notification' => 'Fjölauðkenningar aðferð fjarlægð',
+
+ // Settings
+ 'settings_update' => 'uppfæra stillingar',
+ 'settings_update_notification' => 'Tókst að uppfæra stillingar',
+ 'maintenance_action_run' => 'keyrði uppfærslu',
+
+ // Webhooks
+ 'webhook_create' => 'webhook búin til',
+ 'webhook_create_notification' => 'Tókst að búa til Webhook',
+ 'webhook_update' => 'webhook uppfærður',
+ 'webhook_update_notification' => 'Tókst að uppfæra Webhook',
+ 'webhook_delete' => 'eyða Webhook',
+ 'webhook_delete_notification' => 'Tókst að eyða Webhook',
+
+ // Imports
+ 'import_create' => 'búa til innlestur',
+ 'import_create_notification' => 'Innlestur tókst',
+ 'import_run' => 'uppfæra innlestur',
+ 'import_run_notification' => 'Tókst að lesa inn',
+ 'import_delete' => 'innlestri eytt',
+ 'import_delete_notification' => 'Tókst að eyða innlestri',
+
+ // Users
+ 'user_create' => 'stofnaður notandi',
+ 'user_create_notification' => 'Tókst að stofna notanda',
+ 'user_update' => 'uppfærður notandi',
+ 'user_update_notification' => 'Tókst að uppfæra notanda',
+ 'user_delete' => 'eyddur notandi',
+ 'user_delete_notification' => 'Tókst að eyða notanda',
+
+ // API Tokens
+ 'api_token_create' => 'API token búið til',
+ 'api_token_create_notification' => 'Tókst að búa til API tóka',
+ 'api_token_update' => 'API tóki uppfærður',
+ 'api_token_update_notification' => 'Tókst að uppfæra API tóka',
+ 'api_token_delete' => 'eyddur API tóki',
+ 'api_token_delete_notification' => 'Tókst að eyða API tóka',
+
+ // Roles
+ 'role_create' => 'stofnað hlutverk',
+ 'role_create_notification' => 'Tókst að stofna hlutverk',
+ 'role_update' => 'hlutverk uppfært',
+ 'role_update_notification' => 'Tókst að uppfæra hlutverk',
+ 'role_delete' => 'eytt hlutverk',
+ 'role_delete_notification' => 'Tókst að eyða hlutverki',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'tæmd ruslatunna',
+ 'recycle_bin_restore' => 'endurheimt úr ruslatunnu',
+ 'recycle_bin_destroy' => 'fjarlægt úr ruslatunnu',
+
+ // Comments
+ 'commented_on' => 'athugasemd á',
+ 'comment_create' => 'athugasemd bætt við',
+ 'comment_update' => 'athugasemd uppfærð',
+ 'comment_delete' => 'athugasemd eytt',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'uppfærðar heimildir',
+];
diff --git a/lang/is/auth.php b/lang/is/auth.php
new file mode 100644
index 00000000000..c5e7ce4f1d7
--- /dev/null
+++ b/lang/is/auth.php
@@ -0,0 +1,117 @@
+ 'Þeesi auðkenning er ekki á skrá.',
+ 'throttle' => 'Of margar tilraunir til innskráningar. Reyndu aftur eftir :seconds sekúndur.',
+
+ // Login & Register
+ 'sign_up' => 'Nýskrá',
+ 'log_in' => 'Innskrá',
+ 'log_in_with' => 'Innskrá með :socialDriver',
+ 'sign_up_with' => 'Búa til aðgang með :socialDriver',
+ 'logout' => 'Skrá út',
+
+ 'name' => 'Nafn',
+ 'username' => 'Notandanafn',
+ 'email' => 'Netfang',
+ 'password' => 'Lykilorð',
+ 'password_confirm' => 'Staðfestu lykilorð',
+ 'password_hint' => 'Verður að vera minnst 8 stafir',
+ 'forgot_password' => 'Gleymt lykilorð?',
+ 'remember_me' => 'Geyma innskráningarupplýsingar',
+ 'ldap_email_hint' => 'Settu inn netfang til að nota þennan aðgang.',
+ 'create_account' => 'Stofna aðgang',
+ 'already_have_account' => 'Þegar með notandaaðgang?',
+ 'dont_have_account' => 'Ekki með aðgang?',
+ 'social_login' => 'Innskráning með samfélagsmiðli',
+ 'social_registration' => 'Skráning samfélagsmiðils',
+ 'social_registration_text' => 'Skráðu þig og innskrá með annari þjónustu.',
+
+ 'register_thanks' => 'Takk fyrir að skrá þig!',
+ 'register_confirm' => 'Skoðaðu tölvupóstinn þinn og smelltu á staðfestingarhlekkinn :appName.',
+ 'registrations_disabled' => 'Skráningar eru óvirkar í augnablikinu',
+ 'registration_email_domain_invalid' => 'Þetta lén hefur ekki aðgang að þessu forriti',
+ 'register_success' => 'Takk fyrir að skrá þig, nú ertu innskráðursem notandi.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Reyni innskráningu',
+ 'auto_init_starting_desc' => 'Reyni að tengjast auðkenningarþjónustu, ef ekkert gerist innan 5 sekúndna getur þú smellt á hlekkinn hér að neðan.',
+ 'auto_init_start_link' => 'Halda áfram með auðkenningu',
+
+ // Password Reset
+ 'reset_password' => 'Endurstilla lykilorð',
+ 'reset_password_send_instructions' => 'Settu netfangið þitt hér að neðan og þú færð tölvupóst með endurstillingar hlekk.',
+ 'reset_password_send_button' => 'Senda hlekk',
+ 'reset_password_sent' => 'Endurstillingar hlekkur hefur verið sendur í tölvupósti :email ef netfangið er á skrá.',
+ 'reset_password_success' => 'Lykilorðið þitt hefur verið endurstillt.',
+ 'email_reset_subject' => 'Endurstilla :appName lykilorðið þitt',
+ 'email_reset_text' => 'Þú fékkst þennan tölvupóst því að beðið var um endurstillingu lykilorðs á þínum aðgangi.',
+ 'email_reset_not_requested' => 'Ef þú baðst ekki um endurstillingu lykilorðs þarftu ekki að gera neitt.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Staðfestu netfangið þitt á :appName',
+ 'email_confirm_greeting' => 'Takk fyrir að skrá þig á :appName!',
+ 'email_confirm_text' => 'Vinsamlegast staðfestu netfangið þitt með því að smella á hnappin hér fyrir neðan:',
+ 'email_confirm_action' => 'Staðfesta netfang',
+ 'email_confirm_send_error' => 'Staðfesting netfangs er nauðsynleg en kerfið gat ekki sent póst, vinsamlegast hafið samband við kerfisstjóra.',
+ 'email_confirm_success' => 'Netfang þitt hefur verið staðfest, þú ættir nú að geta skráð þig inn með þessu netfangi.',
+ 'email_confirm_resent' => 'Staðfestingar tölvupóstur hefur verið sendur, kíktu í póshólfið þitt.',
+ 'email_confirm_thanks' => 'Takk fyrir að staðfesta!',
+ 'email_confirm_thanks_desc' => 'Hinkraðu smá á meðan staðfestingin þín er í vinnslu, ef ekkert gerist eftir 3 sekúndur, smelltu á "Halda áfram" hlekkinn hér fyrir neðan.',
+
+ 'email_not_confirmed' => 'Netfang hefur ekki verið staðfest',
+ 'email_not_confirmed_text' => 'Netfangið þitt hefur ekki enn verið staðfest.',
+ 'email_not_confirmed_click_link' => 'Vinsamlegast smelltu á hlekkinn sem barst þér í tölvupósti eftir skráningu.',
+ 'email_not_confirmed_resend' => 'Ef þú finnur ekki tölvupóstinn sem var sendur á þig, getur þú fengið hann endursendann með því að fylla út formið hér að neðan.',
+ 'email_not_confirmed_resend_button' => 'Endursenda staðfestingarpóst',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Þér hefur verið boðið að tengjast :appName!',
+ 'user_invite_email_greeting' => 'Það hefur verið stofnaður aðgangur fyrir ig á :appName.',
+ 'user_invite_email_text' => 'Smelltu á hnappinn fyrir neðan til að setja upp lykilorð og fá aðgang:',
+ 'user_invite_email_action' => 'Settu inn lykilorð',
+ 'user_invite_page_welcome' => 'Velkominn á :appName!',
+ 'user_invite_page_text' => 'Til að ljúka við uppsetningu og fá aðgang að :appName verður þú að velja þér lykilorð.',
+ 'user_invite_page_confirm_button' => 'Staðfestu lykilorð',
+ 'user_invite_success_login' => 'Lykilorð klárt, nú ættir þú að geta skráð þig inn á :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Setja upp tvöfalda auðkenningu',
+ 'mfa_setup_desc' => 'Tvöföld euðkenning er viðbótar vörn til að tryggja aðganginn þinn.',
+ 'mfa_setup_configured' => 'Þegar uppsett',
+ 'mfa_setup_reconfigure' => 'Endurstilla',
+ 'mfa_setup_remove_confirmation' => 'Ertu viss um að þú viljið fjarlæga þessa auðkenningarleið?',
+ 'mfa_setup_action' => 'Uppsetning',
+ 'mfa_backup_codes_usage_limit_warning' => 'Þú átt færri en 5 tilraunir eftir. Búðu til og geymdu hjá þér fleiri tilraunir svo þú læsist ekki úti.',
+ 'mfa_option_totp_title' => 'App',
+ 'mfa_option_totp_desc' => 'Til að virkja tvöfalda auðkenningu verður þú að hafa app í símanum sem styður TOPT, til dæmis Google Authenticator, Authy eða Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Varakóðar',
+ 'mfa_option_backup_codes_desc' => 'Býr til sett af einskiptis kóðum sem þú getur notað til að auðkenna þig með. Geymdu þessa kóða á öruggum stað.',
+ 'mfa_gen_confirm_and_enable' => 'Staðfesta og virkja',
+ 'mfa_gen_backup_codes_title' => 'Stillingar varakóða',
+ 'mfa_gen_backup_codes_desc' => 'Geymdu listann af kóðum á öruggum stað. Þú getur notað þessa kóða sem auka auðkenningu.',
+ 'mfa_gen_backup_codes_download' => 'Hala niður kóðum',
+ 'mfa_gen_backup_codes_usage_warning' => 'Hver kóði getur bara verið notaður einu sinni',
+ 'mfa_gen_totp_title' => 'Uppsetning Apps',
+ 'mfa_gen_totp_desc' => 'Til að virkja tvöfalda auðkenningu verður þú að hafa app í símanum sem styður TOPT, til dæmis Google Authenticator, Authy eða Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Skannaðu QR kóðann með appinu sem þú notar fyrir tvöfalda auðkenningu.',
+ 'mfa_gen_totp_verify_setup' => 'Staðfesta uppsetningu',
+ 'mfa_gen_totp_verify_setup_desc' => 'Staðfestu að allt virki með því að setja inn kóða úr síma appinu þínu hér fyrir neðan:',
+ 'mfa_gen_totp_provide_code_here' => 'Sláðu inn kóða úr auðkennningar appi',
+ 'mfa_verify_access' => 'Staðfesta aðgang',
+ 'mfa_verify_access_desc' => 'Aðgangurinn þinn þarf viðbótar auðkenningu, veldu auðkenningarleið.',
+ 'mfa_verify_no_methods' => 'Engar aðferðir stilltar',
+ 'mfa_verify_no_methods_desc' => 'Engin aukaauðkenningar aðferð fannst. Þú verður að setja upp minnst eina viðbótarauðkenningu til að halda áfram.',
+ 'mfa_verify_use_totp' => 'Staðfestu með farsíma appi',
+ 'mfa_verify_use_backup_codes' => 'Staðfesta með varakóða',
+ 'mfa_verify_backup_code' => 'Varakóði',
+ 'mfa_verify_backup_code_desc' => 'Settu inn einn af varakóðunum þínum hér að neðan:',
+ 'mfa_verify_backup_code_enter_here' => 'Sláðu inn varakóða hér',
+ 'mfa_verify_totp_desc' => 'Sláðu inn kóðann úr auðkenningar appinu úr símanum þínum:',
+ 'mfa_setup_login_notification' => 'Tvöföld auðkenning stillt. Skráðu þig nú inn með euðkenningarleiðinni.',
+];
diff --git a/lang/is/common.php b/lang/is/common.php
new file mode 100644
index 00000000000..84651be1736
--- /dev/null
+++ b/lang/is/common.php
@@ -0,0 +1,115 @@
+ 'Hætta við',
+ 'close' => 'Loka',
+ 'confirm' => 'Staðfesta',
+ 'back' => 'Til baka',
+ 'save' => 'Vista',
+ 'continue' => 'Halda áfram',
+ 'select' => 'Velja',
+ 'toggle_all' => 'Velja allt',
+ 'more' => 'Meira',
+
+ // Form Labels
+ 'name' => 'Nafn',
+ 'description' => 'Lýsing',
+ 'role' => 'Hlutverk',
+ 'cover_image' => 'Forsíðumynd',
+ 'cover_image_description' => 'Myndin ætti að fera u. þ. b 440x250px þótt hún verði sköluð og kroppuð eftir þörfum, þannig að endanleg stærð mun endurspegla það.',
+
+ // Actions
+ 'actions' => 'Aðgerðir',
+ 'view' => 'Skoða',
+ 'view_all' => 'Skoða allt',
+ 'new' => 'Ný',
+ 'create' => 'Búa til',
+ 'update' => 'Uppfæra',
+ 'edit' => 'Breyta',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Flokka',
+ 'move' => 'Færa',
+ 'copy' => 'Afrita',
+ 'reply' => 'Svara',
+ 'delete' => 'Eyða',
+ 'delete_confirm' => 'Staðfesta eyðingu',
+ 'search' => 'Leita',
+ 'search_clear' => 'Hreinsa leit',
+ 'reset' => 'Endurstilla',
+ 'remove' => 'Fjarlægja',
+ 'add' => 'Bæta við',
+ 'configure' => 'Stilla',
+ 'manage' => 'Stýra',
+ 'fullscreen' => 'Fylla skjá',
+ 'favourite' => 'Eftirlæti',
+ 'unfavourite' => 'Fjarlægja úr eftirlæti',
+ 'next' => 'Næst',
+ 'previous' => 'Fyrri',
+ 'filter_active' => 'Virk sía:',
+ 'filter_clear' => 'Hreinsa síu',
+ 'download' => 'Hlaða niður',
+ 'open_in_tab' => 'Opna í flipa',
+ 'open' => 'Opna',
+
+ // Sort Options
+ 'sort_options' => 'Valkostir röðunar',
+ 'sort_direction_toggle' => 'Flokkunarátt',
+ 'sort_ascending' => 'Raða vaxandi',
+ 'sort_descending' => 'Raða minnkandi',
+ 'sort_name' => 'Nafn',
+ 'sort_default' => 'Sjálfgefið',
+ 'sort_created_at' => 'Stofnað þann',
+ 'sort_updated_at' => 'Uppfært þann',
+
+ // Misc
+ 'deleted_user' => 'Eyddur notandi',
+ 'no_activity' => 'Engin virkni til að sýna',
+ 'no_items' => 'Engir hlutir tiltækir',
+ 'back_to_top' => 'Fara efst',
+ 'skip_to_main_content' => 'Fara í aðalefni',
+ 'toggle_details' => 'Virkja nánari sýn',
+ 'toggle_thumbnails' => 'Sýna smámynd',
+ 'details' => 'Nánari upplýsingar',
+ 'grid_view' => 'Grid View',
+ 'list_view' => 'Lista sýn',
+ 'default' => 'Sjálfgefið',
+ 'breadcrumb' => 'Brauðmolar',
+ 'status' => 'Staða',
+ 'status_active' => 'Virkt',
+ 'status_inactive' => 'Óvirkt',
+ 'never' => 'Aldrei',
+ 'none' => 'Engin',
+
+ // Header
+ 'homepage' => 'Forsíða',
+ 'header_menu_expand' => 'Leiðarstjórn',
+ 'profile_menu' => 'Prófíll',
+ 'view_profile' => 'Skoða prófíl',
+ 'edit_profile' => 'Breyta prófíl',
+ 'dark_mode' => 'Dimmsnið',
+ 'light_mode' => 'Ljóssnið',
+ 'global_search' => 'Heildarleit',
+
+ // Layout tabs
+ 'tab_info' => 'Upplýsingar',
+ 'tab_info_label' => 'Tab: Sýna fleiri upplýsingar',
+ 'tab_content' => 'Innihald',
+ 'tab_content_label' => 'Tab: Sýna aðalinnihald',
+
+ // Email Content
+ 'email_action_help' => 'Ef þú átt í vandræðum með að smella á ":actionText" hnappinn, afritaðu og límdu slóðina í vefskoðarann þinn:',
+ 'email_rights' => 'Höfundaréttur varinn',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Persónuverndarstefna',
+ 'terms_of_service' => 'Skilmálar þjónustu',
+
+ // OpenSearch
+ 'opensearch_description' => 'Leita :appName',
+];
diff --git a/lang/is/components.php b/lang/is/components.php
new file mode 100644
index 00000000000..6e0527eeede
--- /dev/null
+++ b/lang/is/components.php
@@ -0,0 +1,46 @@
+ 'Myndaval',
+ 'image_list' => 'Myndalisti',
+ 'image_details' => 'Uplýsingar myndar',
+ 'image_upload' => 'Hlaða upp mynd',
+ 'image_intro' => 'Hér getur þú valið og stjórnað þeim myndum sem þegar hefur verið upphlaðið.',
+ 'image_intro_upload' => 'Hladdu upp nýrri mynd með því að draga hana inn í þennan glugga eða nota "Hlaða upp" hnappinn hér fyrir ofan.',
+ 'image_all' => 'Allar',
+ 'image_all_title' => 'Skoða allar myndir',
+ 'image_book_title' => 'Skoða þær myndir sem þegar hefur verið hlaðið upp í þessa bók',
+ 'image_page_title' => 'Skoða þær myndir sem þegar hefur verið hlaðið upp á þessa síðu',
+ 'image_search_hint' => 'Leita af myndum eftir nafni',
+ 'image_uploaded' => 'Hlaðið upp þann :uploadedDate',
+ 'image_uploaded_by' => 'Hlaðið upp af :userName',
+ 'image_uploaded_to' => 'Hlaðið upp á :pageLink',
+ 'image_updated' => 'Uppfært þann :updateDate',
+ 'image_load_more' => 'Hlaða fleirum',
+ 'image_image_name' => 'Nafn myndar',
+ 'image_delete_used' => 'Þessi mynd er notuð á eftirfarandi síðum.',
+ 'image_delete_confirm_text' => 'Ertu viss um að þú viljir eyða þessari mynd?',
+ 'image_select_image' => 'Velja mynd',
+ 'image_dropzone' => 'Dragðu myndir eða smelltu hér til að hlaða upp',
+ 'image_dropzone_drop' => 'Dragðu myndir hingað til að hlaða upp',
+ 'images_deleted' => 'Myndum eytt',
+ 'image_preview' => 'Forskoðun mynda',
+ 'image_upload_success' => 'Upphal myndar tókst',
+ 'image_update_success' => 'Upplýsingar um mynd uppfærðar',
+ 'image_delete_success' => 'Tókst að eyða mynd',
+ 'image_replace' => 'Skipta um mynd',
+ 'image_replace_success' => 'Tókst að skipta um skrá',
+ 'image_rebuild_thumbs' => 'Endurgera stærðastillingar',
+ 'image_rebuild_thumbs_success' => 'Tókst að endurgera stærðarstillingar!',
+
+ // Code Editor
+ 'code_editor' => 'Breyta kóða',
+ 'code_language' => 'Tungumál kóða',
+ 'code_content' => 'Innihald kóða',
+ 'code_session_history' => 'Saga lotu',
+ 'code_save' => 'Vista kóða',
+];
diff --git a/lang/is/editor.php b/lang/is/editor.php
new file mode 100644
index 00000000000..2c4a24616ad
--- /dev/null
+++ b/lang/is/editor.php
@@ -0,0 +1,182 @@
+ 'Almennt',
+ 'advanced' => 'Ítarlegt',
+ 'none' => 'Engin',
+ 'cancel' => 'Hætta við',
+ 'save' => 'Vista',
+ 'close' => 'Loka',
+ 'apply' => 'Apply',
+ 'undo' => 'Afturkalla',
+ 'redo' => 'Endurgera',
+ 'left' => 'Vinstri',
+ 'center' => 'Miðja',
+ 'right' => 'Hægri',
+ 'top' => 'Efst',
+ 'middle' => 'Miðja',
+ 'bottom' => 'Neðst',
+ 'width' => 'Breidd',
+ 'height' => 'Hæð',
+ 'More' => 'Meira',
+ 'select' => 'Velja...',
+
+ // Toolbar
+ 'formats' => 'Snið',
+ 'header_large' => 'Stór fyrirsögn',
+ 'header_medium' => 'Miðlungs fyrirsögn',
+ 'header_small' => 'Lítil fyrirsögn',
+ 'header_tiny' => 'Örsmá fyrirsögn',
+ 'paragraph' => 'Málsgrein',
+ 'blockquote' => 'Gæsalappir',
+ 'inline_code' => 'Inline code',
+ 'callouts' => 'Vitna í',
+ 'callout_information' => 'Upplýsingar',
+ 'callout_success' => 'Árangur',
+ 'callout_warning' => 'Aðvörun',
+ 'callout_danger' => 'Hætta',
+ 'bold' => 'Feitletrað',
+ 'italic' => 'Skáletrað',
+ 'underline' => 'Undirstrikað',
+ 'strikethrough' => 'Yfirstrikað',
+ 'superscript' => 'Háletur',
+ 'subscript' => 'Lágletur',
+ 'text_color' => 'Litur texta',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Sérsniðinn litur',
+ 'remove_color' => 'Fjarlægja lit',
+ 'background_color' => 'Bakgrunnslitur',
+ 'align_left' => 'Jafna til vinstri',
+ 'align_center' => 'Miðju jafna',
+ 'align_right' => 'Hægrijafna',
+ 'align_justify' => 'Jafna',
+ 'list_bullet' => 'Punkta listi',
+ 'list_numbered' => 'Númeraður listi',
+ 'list_task' => 'Aðgerðar listi',
+ 'indent_increase' => 'Auka inndrátt',
+ 'indent_decrease' => 'Minnka inndrátt',
+ 'table' => 'Tafla',
+ 'insert_image' => 'Setja inn mynd',
+ 'insert_image_title' => 'Setja inn eða breyta mynd',
+ 'insert_link' => 'Setja inn eða breyta hlekk',
+ 'insert_link_title' => 'Setja inn eða breyta hlekk',
+ 'insert_horizontal_line' => 'Setja inn lárétta línu',
+ 'insert_code_block' => 'Setja inn kóðastubb',
+ 'edit_code_block' => 'Breyta kóðastubb',
+ 'insert_drawing' => 'Setja inn eða breyta teikningu',
+ 'drawing_manager' => 'Teikningastjóri',
+ 'insert_media' => 'Setja inn eða breyta miðlum',
+ 'insert_media_title' => 'Setja inn eða breyta miðlum',
+ 'clear_formatting' => 'Hreinsa forsnið',
+ 'source_code' => 'Frumkóði',
+ 'source_code_title' => 'Frumkóði',
+ 'fullscreen' => 'Fullann skjá',
+ 'image_options' => 'Myndastillingar',
+
+ // Tables
+ 'table_properties' => 'Eiginleikar töflu',
+ 'table_properties_title' => 'Eiginleikar töflu',
+ 'delete_table' => 'Eyða töflu',
+ 'table_clear_formatting' => 'Hreinsa forsnið töflu',
+ 'resize_to_contents' => 'Endurstilla stærð innihalds',
+ 'row_header' => 'Titill raðar',
+ 'insert_row_before' => 'Líma röð á undan',
+ 'insert_row_after' => 'Líma röð á eftir',
+ 'delete_row' => 'Eyða röð',
+ 'insert_column_before' => 'Líma dálk á undan',
+ 'insert_column_after' => 'Líma dálk á eftir',
+ 'delete_column' => 'Eyða dálki',
+ 'table_cell' => 'Reitur',
+ 'table_row' => 'Röð',
+ 'table_column' => 'Dálkur',
+ 'cell_properties' => 'Eigindi reitar',
+ 'cell_properties_title' => 'Eigindi reitar',
+ 'cell_type' => 'Gerð reitar',
+ 'cell_type_cell' => 'Reitur',
+ 'cell_scope' => 'Svið',
+ 'cell_type_header' => 'For reitur',
+ 'merge_cells' => 'Sameina reiti',
+ 'split_cell' => 'Kljúfa reiti',
+ 'table_row_group' => 'Hópur raðar',
+ 'table_column_group' => 'Hópur dálks',
+ 'horizontal_align' => 'Jafna lárétt',
+ 'vertical_align' => 'Jafna lóðrétt',
+ 'border_width' => 'Border width',
+ 'border_style' => 'Útlit jaðars',
+ 'border_color' => 'Litur jaðars',
+ 'row_properties' => 'Eigindi raðar',
+ 'row_properties_title' => 'Eigindi raðar',
+ 'cut_row' => 'Klippa röð',
+ 'copy_row' => 'Afrita röð',
+ 'paste_row_before' => 'Líma röð á undan',
+ 'paste_row_after' => 'Líma röð á eftir',
+ 'row_type' => 'Gerð raðar',
+ 'row_type_header' => 'Síðuhaus',
+ 'row_type_body' => 'Meginmál',
+ 'row_type_footer' => 'Neðanmál',
+ 'alignment' => 'Jöfnun',
+ 'cut_column' => 'Klippa dálk',
+ 'copy_column' => 'Afrita dálk',
+ 'paste_column_before' => 'Líma dálk á undan',
+ 'paste_column_after' => 'Líma dálk á eftir',
+ 'cell_padding' => 'Cell padding',
+ 'cell_spacing' => 'Cell spacing',
+ 'caption' => 'Fyrirsögn',
+ 'show_caption' => 'Sýna fyrirsögn',
+ 'constrain' => 'Constrain proportions',
+ 'cell_border_solid' => 'Fyllt',
+ 'cell_border_dotted' => 'Punkta',
+ 'cell_border_dashed' => 'Strikað',
+ 'cell_border_double' => 'Tvöfalt',
+ 'cell_border_groove' => 'Groove',
+ 'cell_border_ridge' => 'Ridge',
+ 'cell_border_inset' => 'Inset',
+ 'cell_border_outset' => 'Outset',
+ 'cell_border_none' => 'Engin',
+ 'cell_border_hidden' => 'Falin',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Uppruni',
+ 'alt_desc' => 'Auka lýsing',
+ 'embed' => 'Innfellt',
+ 'paste_embed' => 'Límdu innfellda kóðann þinn að neðan:',
+ 'url' => 'Vistfang',
+ 'text_to_display' => 'Teksti til að sýna',
+ 'title' => 'Titill',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Opna hlekk',
+ 'open_link_in' => 'Opna hlekk í...',
+ 'open_link_current' => 'Virkum glugga',
+ 'open_link_new' => 'Nýjum glugga',
+ 'remove_link' => 'Fjarlægja hlekk',
+ 'insert_collapsible' => 'Insert collapsible block',
+ 'collapsible_unwrap' => 'Unwrap',
+ 'edit_label' => 'Breyta miða',
+ 'toggle_open_closed' => 'Velja opið/lokað',
+ 'collapsible_edit' => 'Edit collapsible block',
+ 'toggle_label' => 'Sýna miða',
+
+ // About view
+ 'about' => 'Um ritilinn',
+ 'about_title' => 'Um WYSIWYG ritilinn',
+ 'editor_license' => 'Leyfi og höfundaréttur ritilsins',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'Þessi ritill er smíðaður með :tinyLink sem er undir MIT leyfi.',
+ 'editor_tiny_license_link' => 'Höfundarétt og leyfi TinyMCE má finna hér.',
+ 'save_continue' => 'Vista síðu og halda áfram',
+ 'callouts_cycle' => '(Keep pressing to toggle through types)',
+ 'link_selector' => 'Hlekkur á innihald',
+ 'shortcuts' => 'Flýtileiðir',
+ 'shortcut' => 'Flýtileið',
+ 'shortcuts_intro' => 'Eftirtaldar flýtileiðir eru aðgengilegar í ritlinum:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Lýsing',
+];
diff --git a/lang/is/entities.php b/lang/is/entities.php
new file mode 100644
index 00000000000..4308835c7d8
--- /dev/null
+++ b/lang/is/entities.php
@@ -0,0 +1,476 @@
+ 'Nýlega búið til',
+ 'recently_created_pages' => 'Nýlega stofnaðar síður',
+ 'recently_updated_pages' => 'Nýlega uppfærðar síður',
+ 'recently_created_chapters' => 'Nýlega stofnaðir kaflar',
+ 'recently_created_books' => 'Nýlega stofnaðar bækur',
+ 'recently_created_shelves' => 'Nýlega stofnaðar hillur',
+ 'recently_update' => 'Nýlega uppfært',
+ 'recently_viewed' => 'Nýlega skoðað',
+ 'recent_activity' => 'Nýleg virkni',
+ 'create_now' => 'Búðu til eina núna',
+ 'revisions' => 'Útgáfur',
+ 'meta_revision' => 'Úgáfa #:revisionCount',
+ 'meta_created' => 'Búið til :timeLength',
+ 'meta_created_name' => 'Búið til :timeLength af :user',
+ 'meta_updated' => 'Uppfært :timeLength',
+ 'meta_updated_name' => 'Uppfært :timeLength af :user',
+ 'meta_owned_name' => 'Eigandi :user',
+ 'meta_reference_count' => 'Vitnað í af :count item|Vitnað í af :count items',
+ 'entity_select' => 'Entity Val',
+ 'entity_select_lack_permission' => 'Þú hefur ekki nauðsynlegar aðgangsheimildir til að velja þetta',
+ 'images' => 'Myndir',
+ 'my_recent_drafts' => 'Nýlegur drögin mín',
+ 'my_recently_viewed' => 'Síðast skoða af mér',
+ 'my_most_viewed_favourites' => 'Mest skoðuðu eftirlætin',
+ 'my_favourites' => 'Eftirlætin mín',
+ 'no_pages_viewed' => 'Þú hefur ekki skoðað neinar síður',
+ 'no_pages_recently_created' => 'Engar síður hafa verið búnar til nýlega',
+ 'no_pages_recently_updated' => 'Engar síður hafa verið uppfærðar nýlega',
+ 'export' => 'Flytja út',
+ 'export_html' => 'Innifalin vefskrá',
+ 'export_pdf' => 'PDF skrá',
+ 'export_text' => 'Venjuleg textaskrá',
+ 'export_md' => 'Markdown skrá',
+ 'export_zip' => 'ZIP skrá',
+ 'default_template' => 'Sjálfgefið síðusnið',
+ 'default_template_explain' => 'Veldu síðusnið sem verður sjálgefið snið fyrir allar stofnaðar síður innan þessa hluta. Hafðu í huga að þetta verður aðeins notað ef sá sem stofnar síður er með heimild á þetta snið.',
+ 'default_template_select' => 'Veldu sniðsíðu',
+ 'import' => 'Flytja inn',
+ 'import_validate' => 'Staðfesta innflutning',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Veldu ZIP skrá til að hlaða upp',
+ 'import_zip_validation_errors' => 'Greindar voru villur við að staðreyna uppgefina ZIP skrá:',
+ 'import_pending' => 'Innflutningur í bið',
+ 'import_pending_none' => 'Ekkert hefur verið flutt inn.',
+ 'import_continue' => 'Halda áfram að flytja inn',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Nánari lýsing á innflutningi',
+ 'import_run' => 'Keyra innflutning',
+ 'import_size' => ':size Stærð ZIP skrár',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Upphlaðið af',
+ 'import_location' => 'Staðsetning innflutnings',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Ertu viss um að þú viljir eyða þessum innflutningi?',
+ 'import_delete_desc' => 'Þetta mun eyða innsendri ZIP skrá, þessa aðgerð er ekki hægt að afturkalla.',
+ 'import_errors' => 'Villur í innflutningi',
+ 'import_errors_desc' => 'Eftirfarandi villur komu upp við innflutning:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Réttindi',
+ 'permissions_desc' => 'Set permissions here to override the default permissions provided by user roles.',
+ 'permissions_book_cascade' => 'Permissions set on books will automatically cascade to child chapters and pages, unless they have their own permissions defined.',
+ 'permissions_chapter_cascade' => 'Permissions set on chapters will automatically cascade to child pages, unless they have their own permissions defined.',
+ 'permissions_save' => 'Vista réttindi',
+ 'permissions_owner' => 'Eigandi',
+ 'permissions_role_everyone_else' => 'Allir aðrir',
+ 'permissions_role_everyone_else_desc' => 'Set permissions for all roles not specifically overridden.',
+ 'permissions_role_override' => 'Yfirskrifa réttindi fyrir hlutverk',
+ 'permissions_inherit_defaults' => 'Erfa sjálfgefið',
+
+ // Search
+ 'search_results' => 'Leitarniðurstöður',
+ 'search_total_results_found' => ':count result found|:count total results found',
+ 'search_clear' => 'Hreinsa leit',
+ 'search_no_pages' => 'Engar síður passa við þessa leit',
+ 'search_for_term' => 'Leita að :term',
+ 'search_more' => 'Fleiri niðurstöður',
+ 'search_advanced' => 'Ítarleg leit',
+ 'search_terms' => 'Leitarorð',
+ 'search_content_type' => 'Efnistegund',
+ 'search_exact_matches' => 'Nákvæm samsvörun',
+ 'search_tags' => 'Leita í örmerkjum',
+ 'search_options' => 'Valkostir',
+ 'search_viewed_by_me' => 'Skoðað af mér',
+ 'search_not_viewed_by_me' => 'Ekki skoðað af mér',
+ 'search_permissions_set' => 'Réttindi stillt',
+ 'search_created_by_me' => 'Búið til af mér',
+ 'search_updated_by_me' => 'Uppfært af mér',
+ 'search_owned_by_me' => 'Í minni eigu',
+ 'search_date_options' => 'Dagsetningarval',
+ 'search_updated_before' => 'Uppfært fyrir',
+ 'search_updated_after' => 'Uppfært eftir',
+ 'search_created_before' => 'Búið til fyrir',
+ 'search_created_after' => 'Búið til eftir',
+ 'search_set_date' => 'Dagsetning',
+ 'search_update' => 'Uppfæra leit',
+
+ // Shelves
+ 'shelf' => 'Hilla',
+ 'shelves' => 'Hillur',
+ 'x_shelves' => ':count Hilla|:count Hillur',
+ 'shelves_empty' => 'Engar hillur hafa verið búnar til',
+ 'shelves_create' => 'Búa til hillu',
+ 'shelves_popular' => 'Vinsælar hillur',
+ 'shelves_new' => 'Nýjar hillur',
+ 'shelves_new_action' => 'Ný hilla',
+ 'shelves_popular_empty' => 'Vinsælustu hillurnar munu birtast hér.',
+ 'shelves_new_empty' => 'Nýjustu hillurnar munu birtast hér.',
+ 'shelves_save' => 'Vista hillu',
+ 'shelves_books' => 'Bækur í þessari hillu',
+ 'shelves_add_books' => 'Bæta við bókum í þessa hillu',
+ 'shelves_drag_books' => 'Dragðu bækur hér undir til að bæta þeim í þessa hillu',
+ 'shelves_empty_contents' => 'Þessi hilla hefur engar bækur',
+ 'shelves_edit_and_assign' => 'Breyttu hillu til að setja inn bækur',
+ 'shelves_edit_named' => 'Breyta hillu :name',
+ 'shelves_edit' => 'Breyta hillu',
+ 'shelves_delete' => 'Eyða hillu',
+ 'shelves_delete_named' => 'Eyða hillu :name',
+ 'shelves_delete_explain' => "Þetta mun eyða hillunni ':name'. Bókum í þessari hillu verður ekki eytt.",
+ 'shelves_delete_confirmation' => 'Ertu viss um að þú viljir eyða hillunni?',
+ 'shelves_permissions' => 'Stillingar á réttindum á hillu',
+ 'shelves_permissions_updated' => 'Réttindi á hillu uppfærð',
+ 'shelves_permissions_active' => 'Réttindi á hillu virk',
+ 'shelves_permissions_cascade_warning' => 'Réttindi á hillum yfirfærast ekki á bækurnar sem í hillunni eru. Þetta er vegna þess að ein bók getur verið í mörgum hillum. Réttindi geta hinsvegar verið afrituð niður á bækur með því að nota valmöguleikann hér fyrir neðan.',
+ 'shelves_permissions_create' => 'Réttindi til að búa til hillu eru aðeins notuð til að afrita réttindi á undirliggjandi bækur með því að nota aðgerðina hér fyrir neðan. Þau stjórna ekki hvort hægt sé að búa til bækur.',
+ 'shelves_copy_permissions_to_books' => 'Afrita réttindi á bækur',
+ 'shelves_copy_permissions' => 'Afrita réttindi',
+ 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this shelf to all books contained within. Before activating, ensure any changes to the permissions of this shelf have been saved.',
+ 'shelves_copy_permission_success' => 'Shelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'Bók',
+ 'books' => 'Bækur',
+ 'x_books' => ':count Bók:count Bækur',
+ 'books_empty' => 'Engar bækur hafa verið búnar til',
+ 'books_popular' => 'Vinsælar bækur',
+ 'books_recent' => 'Nýlegar bækur',
+ 'books_new' => 'Nýjar bækur',
+ 'books_new_action' => 'Ný bók',
+ 'books_popular_empty' => 'Vinsælustu bækurnar munu birtast hér.',
+ 'books_new_empty' => 'The most recently created books will appear here.',
+ 'books_create' => 'Búa til nýja bók',
+ 'books_delete' => 'Eyða bók',
+ 'books_delete_named' => 'Eyða bók :bookName',
+ 'books_delete_explain' => 'Þetta mun eyða bók með nafninu \':bookName\'. Allar síður og allir kaflar verða fjarlægðir og eytt.',
+ 'books_delete_confirmation' => 'Ertu viss um að þú viljir eyða þessari bók?',
+ 'books_edit' => 'Breyta bók',
+ 'books_edit_named' => 'Breyta bók :bookName',
+ 'books_form_book_name' => 'Nafn bókar',
+ 'books_save' => 'Vista bók',
+ 'books_permissions' => 'Réttindastillingar bókar',
+ 'books_permissions_updated' => 'Réttindastillingar bókar uppfærðar',
+ 'books_empty_contents' => 'Engar síður eða kaflar hafa verið búin til fyrir þessa bók.',
+ 'books_empty_create_page' => 'Búa til nýja síðu',
+ 'books_empty_sort_current_book' => 'Raða núverandi bók',
+ 'books_empty_add_chapter' => 'Bæta við kafla',
+ 'books_permissions_active' => 'Réttindi bókar virk',
+ 'books_search_this' => 'Leita í þessari bók',
+ 'books_navigation' => 'Leiðartré bókar',
+ 'books_sort' => 'Raða innihaldi bókar',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Raða bók :bookName',
+ 'books_sort_name' => 'Raða eftir nafni',
+ 'books_sort_created' => 'Raða eftir skráningar dagsetningu',
+ 'books_sort_updated' => 'Raða eftir upphleðslu dagsetningu',
+ 'books_sort_chapters_first' => 'Kaflar fyrst',
+ 'books_sort_chapters_last' => 'Kaflar síðast',
+ 'books_sort_show_other' => 'Sýna aðrar bækur',
+ 'books_sort_save' => 'Vista nýja röð',
+ 'books_sort_show_other_desc' => 'Bæta við öðrum bókum til að bæta þeim við röðunina.',
+ 'books_sort_move_up' => 'Færa upp',
+ 'books_sort_move_down' => 'Færa niður',
+ 'books_sort_move_prev_book' => 'Færa í fyrri bók',
+ 'books_sort_move_next_book' => 'Færa í næstu bók',
+ 'books_sort_move_prev_chapter' => 'Færa inn í fyrri kafla',
+ 'books_sort_move_next_chapter' => 'Færa inn í næsta kafla',
+ 'books_sort_move_book_start' => 'Færa til byrjunar bókar',
+ 'books_sort_move_book_end' => 'Færa í enda bókar',
+ 'books_sort_move_before_chapter' => 'Færa í byrjun kafla',
+ 'books_sort_move_after_chapter' => 'Færa í lok kafla',
+ 'books_copy' => 'Afrita bók',
+ 'books_copy_success' => 'Tókst að afrita bók',
+
+ // Chapters
+ 'chapter' => 'Kafli',
+ 'chapters' => 'Kaflar',
+ 'x_chapters' => ':count Kafli|:count Kaflar',
+ 'chapters_popular' => 'Vinsælir kaflar',
+ 'chapters_new' => 'Nýr kafli',
+ 'chapters_create' => 'Búa til nýjan kafla',
+ 'chapters_delete' => 'Eyða kafla',
+ 'chapters_delete_named' => 'Eyða kafla :chapterName',
+ 'chapters_delete_explain' => 'Þetta mun eyða kafla með nafninu \':chapterName\'. Öllum blaðsíðum í þessum kafla verður einnig eytt.',
+ 'chapters_delete_confirm' => 'Ertu viss um að þú viljir eyða þessum kafla?',
+ 'chapters_edit' => 'Breyta kafla',
+ 'chapters_edit_named' => 'Breyta kafla chapterName',
+ 'chapters_save' => 'Vista kafla',
+ 'chapters_move' => 'Færa kafla',
+ 'chapters_move_named' => 'Færa kalfa :chapterName',
+ 'chapters_copy' => 'Afrita kafla',
+ 'chapters_copy_success' => 'Tókst að afrita kafla',
+ 'chapters_permissions' => 'Réttindi á kafla',
+ 'chapters_empty' => 'Engar síður eru eins og er í þessum kafla.',
+ 'chapters_permissions_active' => 'Réttindi á kafla eru virk',
+ 'chapters_permissions_success' => 'Réttindi á kafla hafa verið uppfærð',
+ 'chapters_search_this' => 'Leita í þessum kafla',
+ 'chapter_sort_book' => 'Raða bók',
+
+ // Pages
+ 'page' => 'Síða',
+ 'pages' => 'Síður',
+ 'x_pages' => ':count Síða|:count Síður',
+ 'pages_popular' => 'Vinsælar síður',
+ 'pages_new' => 'Ný síða',
+ 'pages_attachments' => 'Viðhengi',
+ 'pages_navigation' => 'Síðuráp',
+ 'pages_delete' => 'Eyða síðu',
+ 'pages_delete_named' => 'Eyða síðu :pageName',
+ 'pages_delete_draft_named' => 'Eyða drögum :pageName',
+ 'pages_delete_draft' => 'Eyða uppkasti',
+ 'pages_delete_success' => 'Síðu eytt',
+ 'pages_delete_draft_success' => 'Uppkasti að síðu eytt',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Ertu viss um að þú viljir eyða þessari síðu?',
+ 'pages_delete_draft_confirm' => 'Ertu viss um að þú viljir eyða þessu uppkasti að síðu?',
+ 'pages_editing_named' => 'Breyta síðu :pageName',
+ 'pages_edit_draft_options' => 'Valkostir uppkasts',
+ 'pages_edit_save_draft' => 'Vista uppkast',
+ 'pages_edit_draft' => 'Breyta drögum',
+ 'pages_editing_draft' => 'Breyta uppkasti',
+ 'pages_editing_page' => 'Breyta síðu',
+ 'pages_edit_draft_save_at' => 'Vista uppkast ',
+ 'pages_edit_delete_draft' => 'Eyða uppkasti',
+ 'pages_edit_delete_draft_confirm' => 'Ertu viss um að þú viljir eyða uppkasti síðu? Allar breytingar sem gerðar hafa verið frá síðustu vistun á síðunni munu tapast.',
+ 'pages_edit_discard_draft' => 'Henda uppkasti',
+ 'pages_edit_switch_to_markdown' => 'Færa þig yfir í Markdown ritil',
+ 'pages_edit_switch_to_markdown_clean' => '(Hreinsa innihald)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stable Content)',
+ 'pages_edit_switch_to_wysiwyg' => 'Skipta yfir í WYSIWYG ritil',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Skipta yfir í nýja WYSIWYG ritilinn',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Stilla breytingarskrá',
+ 'pages_edit_enter_changelog_desc' => 'Skrifaðu stutta lýsingu á breytingunum sem þú gerðir',
+ 'pages_edit_enter_changelog' => 'Færa í breytingaskrá',
+ 'pages_editor_switch_title' => 'Skipta um ritil',
+ 'pages_editor_switch_are_you_sure' => 'Are you sure you want to change the editor for this page?',
+ 'pages_editor_switch_consider_following' => 'Consider the following when changing editors:',
+ 'pages_editor_switch_consideration_a' => 'Once saved, the new editor option will be used by any future editors, including those that may not be able to change editor type themselves.',
+ 'pages_editor_switch_consideration_b' => 'This can potentially lead to a loss of detail and syntax in certain circumstances.',
+ 'pages_editor_switch_consideration_c' => 'Tag or changelog changes, made since last save, won\'t persist across this change.',
+ 'pages_save' => 'Vista síðu',
+ 'pages_title' => 'Titill síðu',
+ 'pages_name' => 'Nafn síðu',
+ 'pages_md_editor' => 'Ritill',
+ 'pages_md_preview' => 'Forskoðun',
+ 'pages_md_insert_image' => 'Setja inn mynd',
+ 'pages_md_insert_link' => 'Insert Entity Link',
+ 'pages_md_insert_drawing' => 'Setja inn teikningu',
+ 'pages_md_show_preview' => 'Sýna forskoðun',
+ 'pages_md_sync_scroll' => 'Sync preview scroll',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Unsaved Drawing Found',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'Síðan tilheyrir engum kafla',
+ 'pages_move' => 'Færa síðu',
+ 'pages_copy' => 'Afrita síðu',
+ 'pages_copy_desination' => 'Áfangastaður afritunar',
+ 'pages_copy_success' => 'Tókst að afrita síðu',
+ 'pages_permissions' => 'Réttindi síðu',
+ 'pages_permissions_success' => 'Réttindi síðu uppfærð',
+ 'pages_revision' => 'Útgáfa',
+ 'pages_revisions' => 'Útgáfur síðu',
+ 'pages_revisions_desc' => 'Listed below are all the past revisions of this page. You can look back upon, compare, and restore old page versions if permissions allow. The full history of the page may not be fully reflected here since, depending on system configuration, old revisions could be auto-deleted.',
+ 'pages_revisions_named' => 'Page Revisions for :pageName',
+ 'pages_revision_named' => 'Page Revision for :pageName',
+ 'pages_revision_restored_from' => 'Restored from #:id; :summary',
+ 'pages_revisions_created_by' => 'Búið til af',
+ 'pages_revisions_date' => 'Útgáfu dagsetning',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Útgáfunúmer',
+ 'pages_revisions_numbered' => 'Útgáfu #:id',
+ 'pages_revisions_numbered_changes' => 'Útgáfu #:id breytingar',
+ 'pages_revisions_editor' => 'Gerð ritils',
+ 'pages_revisions_changelog' => 'Breytingaskrá',
+ 'pages_revisions_changes' => 'Breytingar',
+ 'pages_revisions_current' => 'Núverandi útgáfa',
+ 'pages_revisions_preview' => 'Forskoðun',
+ 'pages_revisions_restore' => 'Endurheimta',
+ 'pages_revisions_none' => 'Þessi síða hefur engar útgáfur',
+ 'pages_copy_link' => 'Afrita hlekk',
+ 'pages_edit_content_link' => 'Hoppa í staðsetningu í ritli',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Page Section Options',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Page Permissions Active',
+ 'pages_initial_revision' => 'Fyrsta birting',
+ 'pages_references_update_revision' => 'System auto-update of internal links',
+ 'pages_initial_name' => 'Ný síða',
+ 'pages_editing_draft_notification' => 'You are currently editing a draft that was last saved :timeDiff.',
+ 'pages_draft_edited_notification' => 'This page has been updated by since that time. It is recommended that you discard this draft.',
+ 'pages_draft_page_changed_since_creation' => 'This page has been updated since this draft was created. It is recommended that you discard this draft or take care not to overwrite any page changes.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count users have started editing this page',
+ 'start_b' => ':userName has started editing this page',
+ 'time_a' => 'since the page was last updated',
+ 'time_b' => 'in the last :minCount minutes',
+ 'message' => ':start :time. Take care not to overwrite each other\'s updates!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'Tilgreind síða',
+ 'pages_is_template' => 'Forsnið síðu',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'Page Tags',
+ 'chapter_tags' => 'Chapter Tags',
+ 'book_tags' => 'Book Tags',
+ 'shelf_tags' => 'Shelf Tags',
+ 'tag' => 'Tag',
+ 'tags' => 'Tags',
+ 'tags_index_desc' => 'Tags can be applied to content within the system to apply a flexible form of categorization. Tags can have both a key and value, with the value being optional. Once applied, content can then be queried using the tag name and value.',
+ 'tag_name' => 'Tag Name',
+ 'tag_value' => 'Tag Value (Optional)',
+ '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' => 'Add another tag',
+ 'tags_remove' => 'Remove this tag',
+ 'tags_usages' => 'Total tag usages',
+ 'tags_assigned_pages' => 'Assigned to Pages',
+ 'tags_assigned_chapters' => 'Assigned to Chapters',
+ 'tags_assigned_books' => 'Assigned to Books',
+ 'tags_assigned_shelves' => 'Assigned to Shelves',
+ 'tags_x_unique_values' => ':count unique values',
+ 'tags_all_values' => 'All values',
+ 'tags_view_tags' => 'View Tags',
+ 'tags_view_existing_tags' => 'View existing tags',
+ 'tags_list_empty_hint' => 'Tags can be assigned via the page editor sidebar or while editing the details of a book, chapter or shelf.',
+ 'attachments' => 'Attachments',
+ 'attachments_explain' => 'Upload some files or attach some links to display on your page. These are visible in the page sidebar.',
+ 'attachments_explain_instant_save' => 'Changes here are saved instantly.',
+ 'attachments_upload' => 'Upload File',
+ 'attachments_link' => 'Attach Link',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'Set Link',
+ 'attachments_delete' => 'Are you sure you want to delete this attachment?',
+ 'attachments_dropzone' => 'Drop files here to upload',
+ 'attachments_no_files' => 'No files have been uploaded',
+ 'attachments_explain_link' => 'You can attach a link if you\'d prefer not to upload a file. This can be a link to another page or a link to a file in the cloud.',
+ 'attachments_link_name' => 'Link Name',
+ 'attachment_link' => 'Attachment link',
+ 'attachments_link_url' => 'Link to file',
+ 'attachments_link_url_hint' => 'Url of site or file',
+ 'attach' => 'Attach',
+ 'attachments_insert_link' => 'Add Attachment Link to Page',
+ 'attachments_edit_file' => 'Edit File',
+ 'attachments_edit_file_name' => 'File Name',
+ 'attachments_edit_drop_upload' => 'Drop files or click here to upload and overwrite',
+ 'attachments_order_updated' => 'Attachment order updated',
+ 'attachments_updated_success' => 'Attachment details updated',
+ 'attachments_deleted' => 'Attachment deleted',
+ 'attachments_file_uploaded' => 'File successfully uploaded',
+ 'attachments_file_updated' => 'File successfully updated',
+ 'attachments_link_attached' => 'Link successfully attached to page',
+ 'templates' => 'Templates',
+ 'templates_set_as_template' => 'Page is a template',
+ 'templates_explain_set_as_template' => 'You can set this page as a template so its contents be utilized when creating other pages. Other users will be able to use this template if they have view permissions for this page.',
+ 'templates_replace_content' => 'Replace page content',
+ 'templates_append_content' => 'Append to page content',
+ 'templates_prepend_content' => 'Prepend to page content',
+
+ // Profile View
+ 'profile_user_for_x' => 'User for :time',
+ 'profile_created_content' => 'Created Content',
+ 'profile_not_created_pages' => ':userName has not created any pages',
+ 'profile_not_created_chapters' => ':userName has not created any chapters',
+ 'profile_not_created_books' => ':userName has not created any books',
+ 'profile_not_created_shelves' => ':userName has not created any shelves',
+
+ // Comments
+ 'comment' => 'Comment',
+ 'comments' => 'Comments',
+ 'comment_add' => 'Add Comment',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Leave a comment here',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Save Comment',
+ 'comment_new' => 'New Comment',
+ 'comment_created' => 'commented :createDiff',
+ 'comment_updated' => 'Updated :updateDiff by :username',
+ 'comment_updated_indicator' => 'Updated',
+ 'comment_deleted_success' => 'Comment deleted',
+ 'comment_created_success' => 'Comment added',
+ 'comment_updated_success' => 'Comment updated',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Are you sure you want to delete this comment?',
+ 'comment_in_reply_to' => 'In reply to :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Here are the comments that have been left on this page. Comments can be added & managed when viewing the saved page.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Are you sure you want to delete this revision?',
+ 'revision_restore_confirm' => 'Are you sure you want to restore this revision? The current page contents will be replaced.',
+ 'revision_cannot_delete_latest' => 'Cannot delete the latest revision.',
+
+ // Copy view
+ 'copy_consider' => 'Please consider the below when copying content.',
+ 'copy_consider_permissions' => 'Custom permission settings will not be copied.',
+ 'copy_consider_owner' => 'You will become the owner of all copied content.',
+ 'copy_consider_images' => 'Page image files will not be duplicated & the original images will retain their relation to the page they were originally uploaded to.',
+ 'copy_consider_attachments' => 'Page attachments will not be copied.',
+ 'copy_consider_access' => 'A change of location, owner or permissions may result in this content being accessible to those previously without access.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Convert to Shelf',
+ 'convert_to_shelf_contents_desc' => 'You can convert this book to a new shelf with the same contents. Chapters contained within this book will be converted to new books. If this book contains any pages, that are not in a chapter, this book will be renamed and contain such pages, and this book will become part of the new shelf.',
+ 'convert_to_shelf_permissions_desc' => 'Any permissions set on this book will be copied to the new shelf and to all new child books that don\'t have their own permissions enforced. Note that permissions on shelves do not auto-cascade to content within, as they do for books.',
+ 'convert_book' => 'Convert Book',
+ 'convert_book_confirm' => 'Are you sure you want to convert this book?',
+ 'convert_undo_warning' => 'This cannot be as easily undone.',
+ 'convert_to_book' => 'Convert to Book',
+ 'convert_to_book_desc' => 'You can convert this chapter to a new book with the same contents. Any permissions set on this chapter will be copied to the new book but any inherited permissions, from the parent book, will not be copied which could lead to a change of access control.',
+ 'convert_chapter' => 'Convert Chapter',
+ 'convert_chapter_confirm' => 'Are you sure you want to convert this chapter?',
+
+ // References
+ 'references' => 'References',
+ 'references_none' => 'There are no tracked references to this item.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Watch',
+ 'watch_title_default' => 'Default Preferences',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignore',
+ 'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
+ 'watch_title_new' => 'New Pages',
+ 'watch_desc_new' => 'Notify when any new page is created within this item.',
+ 'watch_title_updates' => 'All Page Updates',
+ 'watch_desc_updates' => 'Notify upon all new pages and page changes.',
+ 'watch_desc_updates_page' => 'Notify upon all page changes.',
+ 'watch_title_comments' => 'All Page Updates & Comments',
+ 'watch_desc_comments' => 'Notify upon all new pages, page changes and new comments.',
+ 'watch_desc_comments_page' => 'Notify upon page changes and new comments.',
+ 'watch_change_default' => 'Change default notification preferences',
+ 'watch_detail_ignore' => 'Ignoring notifications',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/is/errors.php b/lang/is/errors.php
new file mode 100644
index 00000000000..48b82cf7eb5
--- /dev/null
+++ b/lang/is/errors.php
@@ -0,0 +1,135 @@
+ 'Þú hefur ekki heimild til að skoða þessa síðu.',
+ 'permissionJson' => 'Þú hefur ekki heimild til að framkvæma þessa aðgerð.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Notandi með netfangið :email er nú þegar til.',
+ 'auth_pre_register_theme_prevention' => 'Ekki var hægt að búa til aðgang með þessum upplýsingum',
+ 'email_already_confirmed' => 'Netfang hefur þegar verið staðfest. Prófaðu að skrá þig inn.',
+ 'email_confirmation_invalid' => 'Þessi staðfestingar tóki er ekki gildur eða hefur þegar verið notaður. Reyndu að skrá þig aftur.',
+ 'email_confirmation_expired' => 'Staðfestingar tóki hefur runnið út. Nýr staðfestinga tölvupóstur hefur verið sendur.',
+ 'email_confirmation_awaiting' => 'Eftir á að staðfest þetta netfang',
+ 'ldap_fail_anonymous' => 'LDAP auðkenning virkaði ekki',
+ 'ldap_fail_authed' => 'LDAP auðkenning virkaði ekki með að nota uppgefið dn & password',
+ 'ldap_extension_not_installed' => 'LDAP PHP viðbót ekki uppsett',
+ 'ldap_cannot_connect' => 'Næ ekki að tengjast Ldap þjóni. Fyrsta tenging mistókst',
+ 'saml_already_logged_in' => 'Þegar innskráður',
+ 'saml_no_email_address' => 'Fann ekki netfang fyrir þennan notanda í auðkenningar þjónustu',
+ 'saml_invalid_response_id' => 'Beiðnin frá ytri auðkenningaraðila er óþekkt af kerfinu. Að fara tilbaka eftir innskráningu gæti valdið þessu vandamáli.',
+ 'saml_fail_authed' => 'Innskráning sem notaði :system tókst ekki. Kerfið gaf ekki út gilda auðkenningu',
+ 'oidc_already_logged_in' => 'Þegar skráður inn',
+ 'oidc_no_email_address' => 'Fann ekki netfang fyrir þennan notanda í ytri auðkenningar þjónustu',
+ 'oidc_fail_authed' => 'Innskráning sem notaði :system tókst ekki. Kerfið gaf ekki út gilda auðkenningu',
+ 'social_no_action_defined' => 'Engin aðgerð skilgreind',
+ 'social_login_bad_response' => "Villa kom upp við auðkenninga á :socialAccount login",
+ 'social_account_in_use' => 'Þessi :socialAccount er þegar í notkun. Reyndu að skrá þig inn með :socialAccount.',
+ 'social_account_email_in_use' => 'Netfangið :email er þegar í notkun. Ef þú ert nú þegar með aðgang getur þú tengt :socialAccount við hann í prófíl stillingum.',
+ 'social_account_existing' => 'Þessi :socialAccount er nú þegar tengdur við prófílinn þinn.',
+ 'social_account_already_used_existing' => 'Þessi :socialAccount reikningur er nú þegar í notkun hjá öðrum notanda.',
+ 'social_account_not_used' => 'Þessi :socialAccount er ekki tengdur neinum notanda. Þú getur tengt hann við þig í prófíl stillingar. ',
+ 'social_account_register_instructions' => 'Ef þú ert ekki nú þegar með aðgang, getur þú skrá þig með :socialAccount',
+ 'social_driver_not_found' => 'Samfélagsviðbót fannst ekki',
+ 'social_driver_not_configured' => 'Þínar :socialAccount er ekki rétt stilltar.',
+ 'invite_token_expired' => 'Þess boðshlekkur er útrunninn, Prófa að endurstilla lykilorðið þitt.',
+ 'login_user_not_found' => 'Enginn notandi fannst fyrir þessa aðgerð.',
+
+ // System
+ 'path_not_writable' => 'Ekki var hægt að hlaða upp á slóðinni :filePath. Vertu viss um að slóðin sé skrifanleg.',
+ 'cannot_get_image_from_url' => 'Get ekki sótt mynd frá :url',
+ 'cannot_create_thumbs' => 'Netþjónninn getur ekki búið til smámyndir. Vertu viss um að þú hafir GD PHP viðbótina uppsetta.',
+ 'server_upload_limit' => 'Þessi netþjónn leyfir ekki uphal af þessari stærð. Prófaðu minni skrá.',
+ 'server_post_limit' => 'Netþjóninn getur ekki tekið á móti þessu magni gagna. Reyndu aftur með færri eða smærri gögnum.',
+ 'uploaded' => 'Þessi netþjónn leyfir ekki uphal af þessari stærð. Prófaðu minni skrá.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Villa kom upp við að hlaða upp mynd',
+ 'image_upload_type_error' => 'Gerð myndar er ógild',
+ 'image_upload_replace_type' => 'Myndin sem á að nota við útskipti þarf að vera sömu gerðar',
+ 'image_upload_memory_limit' => 'Ekki var hægt að taka við upphali og eða búa til smámyndir þar sem ekki eru auðlindir til staðar.',
+ 'image_thumbnail_memory_limit' => 'Ekki var hægt að búa til nokkrar stærðir myndarinnar vegna skorts á auðlindum.',
+ 'image_gallery_thumbnail_memory_limit' => 'Ekki var hægt að búa til smámyndayfirlit vegna skorts á auðlindum.',
+ 'drawing_data_not_found' => 'Ekki tóks að hlaða inn teikningagögnum. Það gæti vantað skránna eða að þú hafir ekki réttindi að henni.',
+
+ // Attachments
+ 'attachment_not_found' => 'Viðhengi fannst ekki',
+ 'attachment_upload_error' => 'Það kom upp villa við að hlaða upp viðhenginu',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Gat ekki vistað uppkast. Gættu að þú hafir tengingu við internetið áður en þú vistar þessa síðu',
+ 'page_draft_delete_fail' => 'Ekki var hægt að eyða uppkasti og sækja fyrra innihald síðunar',
+ 'page_custom_home_deletion' => 'Ekki er hægt að eyða síðu á meðan hún er valin sem sjálfgefin upphafssíða',
+
+ // Entities
+ 'entity_not_found' => 'Entity fannst ekki',
+ 'bookshelf_not_found' => 'Hilla fannst ekki',
+ 'book_not_found' => 'Bók fannst ekki',
+ 'page_not_found' => 'Síða fannst ekki',
+ 'chapter_not_found' => 'Kafli fannst ekki',
+ 'selected_book_not_found' => 'Valin bók fannst ekki',
+ 'selected_book_chapter_not_found' => 'Valin bók eða kafli fannst ekki',
+ 'guests_cannot_save_drafts' => 'Gestir geta ekki vistað drög',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Þú getur ekki eytt, bara kerfisstjóri',
+ 'users_cannot_delete_guest' => 'Þú getur ekki eytt gesta notanda',
+ 'users_could_not_send_invite' => 'Gat ekki stofnað notanda þar sem ekki tókst að senda staðfestingar tölvupóst',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Ekki er hægt að breyta þessu hlutverki',
+ 'role_system_cannot_be_deleted' => 'Þetta er kerfis hlutverk og því ekki hægt að eyða því',
+ 'role_registration_default_cannot_delete' => 'Ekki er hægt að eyða þessu hlutverki þar sem það er sjálfgefið kerfishlutverk við skráningu',
+ 'role_cannot_remove_only_admin' => 'Þessi notandi er sá eini sem er með kerfisstjóra hlutverk. Bættu hlutverkinu við annann notanda áður en þú reynir að fjarlægja það héðan.',
+
+ // Comments
+ 'comment_list' => 'Villa kom upp við að sækja athugasemdir.',
+ 'cannot_add_comment_to_draft' => 'Þú getur ekki sett athugasemdir við drög.',
+ 'comment_add' => 'Villa kom upp við að bæta við eða breyta athugasemdinni.',
+ 'comment_delete' => 'Villa kom upp við að eyða athugasemdinni.',
+ 'empty_comment' => 'Get ekki bætt við tómri athugasemd.',
+
+ // Error pages
+ '404_page_not_found' => 'Síða fannst ekki',
+ 'sorry_page_not_found' => 'Síðan sem þú varst að leita að fannst því miður ekki.',
+ 'sorry_page_not_found_permission_warning' => 'Ef þú átt von á að þessi síða sé til gæti verið að þú hafir ekki aðgang að henni.',
+ 'image_not_found' => 'Fann ekki mynd',
+ 'image_not_found_subtitle' => 'Myndin sem þú varst að leita að fannst því miður ekki.',
+ 'image_not_found_details' => 'Ef þú heldur að þessi mynda hafi verið til, þá gæti henni hafa verið eytt.',
+ 'return_home' => 'Fara á forsíðu',
+ 'error_occurred' => 'Það kom upp villa',
+ 'app_down' => ':appName er niðri í augnablikinu',
+ 'back_soon' => 'Verð komin upp aftur fljótlega.',
+
+ // Import
+ 'import_zip_cant_read' => 'Gat ekki lesið ZIP skrá.',
+ 'import_zip_cant_decode_data' => 'Fann ekki ZIP data.json innihald.',
+ 'import_zip_no_data' => 'ZIP skráin inniheldur ekkert efni.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'ZIP skráin stóðst ekki staðfestingu og skilaði villu:',
+ 'import_zip_failed_notification' => 'Gat ekki lesið inn ZIP skrá.',
+ 'import_perms_books' => 'Þú hefur ekki heimild til að búa til bækur.',
+ 'import_perms_chapters' => 'Þú hefur ekki heimild til að búa til kafla.',
+ 'import_perms_pages' => 'Þú hefur ekki heimild til að búa til síður.',
+ 'import_perms_images' => 'Þú hefur ekki heimild til að búa til myndir.',
+ 'import_perms_attachments' => 'Þú hefur ekki heimild til að búa til viðhengi.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Engin auðkenningar tóki fannst í aðgerðinni',
+ 'api_bad_authorization_format' => 'Auðkenningar tóki fannst með aðgerðinni en snið hans er rangt',
+ 'api_user_token_not_found' => 'Engin API tóki fannst á móti þessum auðkenningar tóka',
+ 'api_incorrect_token_secret' => 'Leyndarmálið sem gefið var upp fyrir API tókann er rangt',
+ 'api_user_no_api_permission' => 'Eigandi API tókans hefur ekki heimild til að gera API köll',
+ 'api_user_token_expired' => 'Auðkenningar tókin er útrunninn',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Villa kom upp viðað reyna senda prufu tölvupóst:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'Þetta vistfang stemmir ekki við leyfða SSR biðlara',
+];
diff --git a/lang/is/notifications.php b/lang/is/notifications.php
new file mode 100644
index 00000000000..956fc743225
--- /dev/null
+++ b/lang/is/notifications.php
@@ -0,0 +1,29 @@
+ 'Ný athugasemd á síðu :pageName',
+ 'new_comment_intro' => 'Notandi hefur sett inn athugasemd á síðu á :appName:',
+ 'new_page_subject' => 'Ný síða á: :pageName',
+ 'new_page_intro' => 'Ný síða hefur verið búin til á :appName:',
+ 'updated_page_subject' => 'Uppfærð síða á: :pageName',
+ 'updated_page_intro' => 'Síða hefur verið uppfærð á :appName:',
+ 'updated_page_debounce' => 'Til að fyrirbyggja fjöldatilkynningar verður þér ekki sendar tilkynningar í smá stund um uppfærslu á þessari síðu frá sama höfundi.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Síðunafn:',
+ 'detail_page_path' => 'Síðuslóð:',
+ 'detail_commenter' => 'Notandi:',
+ 'detail_comment' => 'Athugasemd:',
+ 'detail_created_by' => 'Búið til af:',
+ 'detail_updated_by' => 'Uppfært af:',
+
+ 'action_view_comment' => 'Skoða athugasemd',
+ 'action_view_page' => 'Skoða síðu',
+
+ 'footer_reason' => 'Þessi tilkynning var send til þín vegna :link nær yfir þessa virkni á þessum hlut.',
+ 'footer_reason_link' => 'stillingar á tilkynningum til þín',
+];
diff --git a/lang/is/pagination.php b/lang/is/pagination.php
new file mode 100644
index 00000000000..3eca2f26e4a
--- /dev/null
+++ b/lang/is/pagination.php
@@ -0,0 +1,12 @@
+ '« Fyrri',
+ 'next' => 'Næsta»',
+
+];
diff --git a/lang/is/passwords.php b/lang/is/passwords.php
new file mode 100644
index 00000000000..b8c093b0388
--- /dev/null
+++ b/lang/is/passwords.php
@@ -0,0 +1,15 @@
+ 'Lykilorð verður að vera að lágmarki 8 stafir og stemma saman.',
+ 'user' => "Enginn notandi finnst með þetta netfang.",
+ 'token' => 'Tókinn er ógildur fyrir þetta netfang.',
+ 'sent' => 'Þér hefur verið sendur hlekkur í tölvupósti!',
+ 'reset' => 'Lykilorðinu hefur verið breytt!',
+
+];
diff --git a/lang/is/preferences.php b/lang/is/preferences.php
new file mode 100644
index 00000000000..b6f261deb46
--- /dev/null
+++ b/lang/is/preferences.php
@@ -0,0 +1,52 @@
+ 'Minn aðgangur',
+
+ 'shortcuts' => 'Flýtileiðir',
+ 'shortcuts_interface' => 'UI, stillingar flýtileiða',
+ 'shortcuts_toggle_desc' => 'Hér getur þú virkjað eða óvirkjað flýtilykla, notað fyrir leiðarstýringu og aðgerðir.',
+ 'shortcuts_customize_desc' => 'Þú getur stillt alla flýtilyklana hér að neðan. Þú ýtir þá þann flýtilykil sem þú vilt nota eftir að þú hefur valið innsláttarleið.',
+ 'shortcuts_toggle_label' => 'Flýtilyklar virkjaðir',
+ 'shortcuts_section_navigation' => 'Leiðarstýring',
+ 'shortcuts_section_actions' => 'Algengar aðgerðir',
+ 'shortcuts_save' => 'Vista flýtilykla',
+ 'shortcuts_overlay_desc' => 'Ath: þegar flýtilyklar eru virkjaðir er hægt að fá aðstoð með því að ýta á "?" sem mun yfirstrika þær flýtileiðir sem í boði eru.',
+ 'shortcuts_update_success' => 'Stillingar flýtilykla hafa verið uppfærðar!',
+ 'shortcuts_overview_desc' => 'Stjórna þeim flýtilyklum sem í boði eru.',
+
+ 'notifications' => 'Stillingar tilkynninga',
+ 'notifications_desc' => 'Stýrðu þeim tölvupóst tilkynningum sem þú færð þegar ákveðnar aðgerðir eru gerðar af kerfinu.',
+ 'notifications_opt_own_page_changes' => 'Láta vita þegar gerðar eru breytingar á síðum sem ég á',
+ 'notifications_opt_own_page_comments' => 'Láta vita þegar gerðar eru athugasmedir við síður sem ég á',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Láta vita þegar athugasemdum mínum er svarað',
+ 'notifications_save' => 'Vista stillingar',
+ 'notifications_update_success' => 'Stillingar á tilkynningum hafa verið uppfærðar!',
+ 'notifications_watched' => 'Watched & Ignored Items',
+ 'notifications_watched_desc' => 'Fyrir neðan eru hlutir sem hafa sérsniðna eftirfylgni stillta. Til að uppfæra stillingarnar fyrir þessa hluti skaltu skoða hann og og finna skoðastillinguna í hliðarstikunni.',
+
+ 'auth' => 'Aðgangur og öryggi',
+ 'auth_change_password' => 'Breyta lykilorði',
+ 'auth_change_password_desc' => 'Breyta lykilorðinu sem þú notar til að skrá þig inn í hugbúnaðinn. Lykilorðið verður að vera a. m. k 8 stafa langt.',
+ 'auth_change_password_success' => 'Lykilorði hefur verið breytt!',
+
+ 'profile' => 'Upplýsingar um prófíl',
+ 'profile_desc' => 'Stýra þeim upplýsingum um þig sem aðrir notendur sjá.',
+ 'profile_view_public' => 'Skoða almennan prófíl',
+ 'profile_name_desc' => 'Stilla þitt notendanafn sem er sýnlegt öðrum notendum.',
+ 'profile_email_desc' => 'Þetta netfang verður notað fyrir tilkynningar og aðgang að kerfinu hafir þú valið svo.',
+ 'profile_email_no_permission' => 'Þú hefur ekki heimild til að breyta netfanginu þinu. Ef þú vilt láta breyta því verður þú að hafa samband við kerfisstjóra.',
+ 'profile_avatar_desc' => 'Veldu mynd til að sýna öðrum notendum. Helst þarf þessi mynd að vera ferköntuð og um það bil 256px bæði á breidd og hæð.',
+ 'profile_admin_options' => 'Stillingar kerfisstjóra',
+ 'profile_admin_options_desc' => 'Viðbótar kerfistjóra stillingar, til dæmis stjórnun á hlutverkum sem finna á í "Stillingar > Notendur svæði hugbúnaðarins.',
+
+ 'delete_account' => 'Eyða aðgangi',
+ 'delete_my_account' => 'Eyða reikningi mínum',
+ 'delete_my_account_desc' => 'Þetta mun eyða þínum aðgangi að hugbúnaðinum. Þú munt ekki geta enduheimt aðganginn. Efni sem þú hefur búið til eins og síður og þær myndir sem þú hefur sent inn munu halda sér.',
+ 'delete_my_account_warning' => 'Ertu viss um að þú viljir eyða aðganginum þínum?',
+];
diff --git a/lang/is/settings.php b/lang/is/settings.php
new file mode 100644
index 00000000000..b1f21ac10b8
--- /dev/null
+++ b/lang/is/settings.php
@@ -0,0 +1,374 @@
+ 'Stillingar',
+ 'settings_save' => 'Vista stillingar',
+ 'system_version' => 'Kerfisútgáfa',
+ 'categories' => 'Flokkar',
+
+ // App Settings
+ 'app_customization' => 'Sérsníða',
+ 'app_features_security' => 'Eigindi og öryggi',
+ 'app_name' => 'Nafn kerfis',
+ 'app_name_desc' => 'Þetta nafn er sýnd í titli og í öllum tölvupóstum sem sendir eru.',
+ 'app_name_header' => 'Sýna nafn í titli',
+ 'app_public_access' => 'Almennur aðgangur',
+ 'app_public_access_desc' => 'Með því að virkja þennan valmöguleika munu notendur sem eru ekki skráðir inn geta skoðað innihald vefsins.',
+ 'app_public_access_desc_guest' => 'Hægt er að stýra almennum aðgangi í gegnum "Guest" notandann.',
+ 'app_public_access_toggle' => 'Leyfa almennann aðgang',
+ 'app_public_viewing' => 'Leyfa almenna skoðun?',
+ 'app_secure_images' => 'Aukið öryggi á mynda upphal',
+ 'app_secure_images_toggle' => 'Virkja aukið öryggi á mynda upphal',
+ 'app_secure_images_desc' => 'For performance reasons, all images are public. This option adds a random, hard-to-guess string in front of image urls. Ensure directory indexes are not enabled to prevent easy access.',
+ 'app_default_editor' => 'Sjálfgefin ritill',
+ 'app_default_editor_desc' => 'Veldu hvaða ritil á að nota sjálfgefið þegar unnið er með nýjar síður. Hægt er að yfirskrifa þessa stillingu á hverri síðu ef viðkomandi er með réttindi.',
+ 'app_custom_html' => 'Custom HTML Head Content',
+ 'app_custom_html_desc' => 'Any content added here will be inserted into the bottom of the section of every page. This is handy for overriding styles or adding analytics code.',
+ 'app_custom_html_disabled_notice' => 'Custom HTML head content is disabled on this settings page to ensure any breaking changes can be reverted.',
+ 'app_logo' => 'Lógó síðu',
+ 'app_logo_desc' => 'This is used in the application header bar, among other areas. This image should be 86px in height. Large images will be scaled down.',
+ 'app_icon' => 'Íkon síðu',
+ 'app_icon_desc' => 'Þetta íkon er notað í tabs í vöfrum og sem flýtivísir á síðu. Þetta ætti að vera 256px PNG mynd.',
+ 'app_homepage' => 'Heimasíða',
+ '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' => 'Veldu síðu',
+ 'app_footer_links' => 'Neðangreins hlekkir',
+ '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::" 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' => 'Miði hlekks',
+ 'app_footer_links_url' => 'Vistfang hlekks',
+ 'app_footer_links_add' => 'Bæta við neðangreinshlekk',
+ 'app_disable_comments' => 'Óvirkja athugasemdir',
+ 'app_disable_comments_toggle' => 'Óvirkja athugasemdir',
+ 'app_disable_comments_desc' => 'Disables comments across all pages in the application. Existing comments are not shown.',
+
+ // Color settings
+ 'color_scheme' => 'Litaþema hugbúnaðar',
+ 'color_scheme_desc' => 'Set the colors to use in the application user interface. Colors can be configured separately for dark and light modes to best fit the theme and ensure legibility.',
+ 'ui_colors_desc' => 'Set the application primary color and default link color. The primary color is mainly used for the header banner, buttons and interface decorations. The default link color is used for text-based links and actions, both within written content and in the application interface.',
+ 'app_color' => 'Aðal litur',
+ 'link_color' => 'Aðal litur hlekkja',
+ 'content_colors_desc' => 'Set colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'bookshelf_color' => 'Litur hillu',
+ 'book_color' => 'Litur Bóka',
+ 'chapter_color' => 'Litur kalfa',
+ 'page_color' => 'Litur síðu',
+ 'page_draft_color' => 'Litur draga',
+
+ // Registration Settings
+ 'reg_settings' => 'Skráning',
+ 'reg_enable' => 'Virkja skráningar',
+ 'reg_enable_toggle' => 'Virkja skráningar',
+ 'reg_enable_desc' => 'When registration is enabled user will be able to sign themselves up as an application user. Upon registration they are given a single, default user role.',
+ 'reg_default_role' => 'Sjálfgefið hlutverk notanda eftir skráningu',
+ 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_email_confirmation' => 'Tölvupóst staðfesting',
+ 'reg_email_confirmation_toggle' => 'Krefast staðfestingar í tölvupósti',
+ 'reg_confirm_email_desc' => 'If domain restriction is used then email confirmation will be required and this option will be ignored.',
+ 'reg_confirm_restrict_domain' => 'Læsingar á lén',
+ 'reg_confirm_restrict_domain_desc' => 'Enter a comma separated list of email domains you would like to restrict registration to. Users will be sent an email to confirm their address before being allowed to interact with the application. Note that users will be able to change their email addresses after successful registration.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Engin skilyrði sett',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Viðhald',
+ 'maint_image_cleanup' => 'Taka til í myndum',
+ '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' => 'Also delete images that only exist in old page revisions',
+ 'maint_image_cleanup_run' => 'Keyra hreinsun',
+ 'maint_image_cleanup_warning' => ':count potentially unused images were found. Are you sure you want to delete these images?',
+ 'maint_image_cleanup_success' => ':count potentially unused images found and deleted!',
+ 'maint_image_cleanup_nothing_found' => 'Engar ónotaðar myndir fundust, engu eytt!',
+ 'maint_send_test_email' => 'Senda prufu tölvupóst',
+ 'maint_send_test_email_desc' => 'Þessi aðgerð sendir prufu tölvupóst á netfangið sem stillt er á í prófílnum þínum.',
+ 'maint_send_test_email_run' => 'Senda prufu tölvupóst',
+ 'maint_send_test_email_success' => 'Tölvupóstur sendur á :address',
+ 'maint_send_test_email_mail_subject' => 'Prufupóstur',
+ 'maint_send_test_email_mail_greeting' => 'Það virðist virka að senda tölvupóst!',
+ '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' => 'Opna ruslatunnu',
+ 'maint_regen_references' => 'Regenerate References',
+ 'maint_regen_references_desc' => 'This action will rebuild the cross-item reference index within the database. This is usually handled automatically but this action can be useful to index old content or content added via unofficial methods.',
+ 'maint_regen_references_success' => 'Reference index has been regenerated!',
+ 'maint_timeout_command_note' => 'Note: This action can take time to run, which can lead to timeout issues in some web environments. As an alternative, this action be performed using a terminal command.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Ruslatunna',
+ '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' => 'Eyddur hlutur',
+ 'recycle_bin_deleted_parent' => 'Foreldri',
+ 'recycle_bin_deleted_by' => 'Eytt af',
+ 'recycle_bin_deleted_at' => 'Eytt þann',
+ 'recycle_bin_permanently_delete' => 'Eyða varanlega',
+ 'recycle_bin_restore' => 'Endurheimta',
+ 'recycle_bin_contents_empty' => 'Ruslatunnan er tóm',
+ 'recycle_bin_empty' => 'Tæma ruslatunnu',
+ '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 from the system, along with any child elements listed below, and you will not be able to restore this content. Are you sure you want to permanently delete this item?',
+ 'recycle_bin_destroy_list' => 'Hlutir til eyðingar',
+ 'recycle_bin_restore_list' => 'Hlutir til endurheimtar',
+ '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_restore_parent' => 'Endurheimta foreldri',
+ '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' => 'Ferilskrá',
+ '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' => 'Atburðasía',
+ 'audit_event_filter_no_filter' => 'Engin sía',
+ 'audit_deleted_item' => 'Eyddur hlutur',
+ 'audit_deleted_item_name' => 'Nafn :name',
+ 'audit_table_user' => 'Notandi',
+ 'audit_table_event' => 'Atburður',
+ 'audit_table_related' => 'Tengdur hlutur eða lýsing',
+ 'audit_table_ip' => 'IP tala',
+ 'audit_table_date' => 'Dagsetning virkni',
+ 'audit_date_from' => 'Dagsetning frá',
+ 'audit_date_to' => 'Dagsetning til',
+
+ // Role Settings
+ 'roles' => 'Hlutverk',
+ 'role_user_roles' => 'Notanda hlutverk',
+ 'roles_index_desc' => 'Roles are used to group users & provide system permission to their members. When a user is a member of multiple roles the privileges granted will stack and the user will inherit all abilities.',
+ 'roles_x_users_assigned' => ':count user assigned|:count users assigned',
+ 'roles_x_permissions_provided' => ':count permission|:count permissions',
+ 'roles_assigned_users' => 'Skilgreindir notendur',
+ 'roles_permissions_provided' => 'Uppgefnar heimildir',
+ 'role_create' => 'Búa til nýtt hlutverk',
+ 'role_delete' => 'Eyða hlutverki',
+ '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_edit' => 'Breyta hlutverki',
+ 'role_details' => 'Lýsing á hlutverki',
+ 'role_name' => 'Nafn hlutverks',
+ 'role_desc' => 'Stutt lýsing á hlutverki',
+ 'role_mfa_enforced' => 'Krefst tvöfaldrar auðkenningar',
+ 'role_external_auth_id' => 'Ytri auðkenningarnúmer',
+ 'role_system' => 'Réttindastillingar kerfis',
+ 'role_manage_users' => 'Sýsla með notendur',
+ 'role_manage_roles' => 'Stýra hlutverkum og réttindum hlutverka',
+ 'role_manage_entity_permissions' => 'Stýra öllum bóka, kafla og síðu réttindum',
+ 'role_manage_own_entity_permissions' => 'Stýra réttindum á eigin bókum, köflum og síðum',
+ 'role_manage_page_templates' => 'Stýra síðu sníðmátum',
+ 'role_access_api' => 'Access system API',
+ 'role_manage_settings' => 'Manage app settings',
+ 'role_export_content' => 'Flytja út efni',
+ 'role_import_content' => 'Flytja inn efni',
+ 'role_editor_change' => 'Skipta um ritil síðu',
+ 'role_notifications' => 'Receive & manage notifications',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Asset Permissions',
+ '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' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.',
+ 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.',
+ 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Allt',
+ 'role_own' => 'Eigin',
+ 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to',
+ 'role_save' => 'Vista hlutverk',
+ 'role_users' => 'Notendur í þessu hlutverki',
+ 'role_users_none' => 'Engir notendur eru eins og er í þessu hlutverki',
+
+ // Users
+ 'users' => 'Notendur',
+ 'users_index_desc' => 'Create & manage individual user accounts within the system. User accounts are used for login and attribution of content & activity. Access permissions are primarily role-based but user content ownership, among other factors, may also affect permissions & access.',
+ 'user_profile' => 'Prófíll notanda',
+ 'users_add_new' => 'Bæta við nýjum notanda',
+ 'users_search' => 'Leita að notendum',
+ 'users_latest_activity' => 'Síðasta virkni',
+ 'users_details' => 'Notendaupplýsingar',
+ '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' => 'Hlutverk notenda',
+ 'users_role_desc' => 'Select which roles this user will be assigned to. If a user is assigned to multiple roles the permissions from those roles will stack and they will receive all abilities of the assigned roles.',
+ 'users_password' => 'Lykilorð notanda',
+ 'users_password_desc' => 'Setja lykilorð sem þú notar til að skrá þig inn í hugbúnaðinn. Lykilorðið verður að vera a. m. k 8 stafa langt.',
+ 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.',
+ 'users_send_invite_option' => 'Senda boð á notanda með tölvupósti',
+ 'users_external_auth_id' => 'Ytra auðkenningar númer',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ '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' => 'Eyða notanda',
+ 'users_delete_named' => 'Eyða notanda :userName',
+ 'users_delete_warning' => 'This will fully delete this user with the name \':userName\' from the system.',
+ 'users_delete_confirm' => 'Ertu viss um að þú viljir eyða þessum notanda?',
+ 'users_migrate_ownership' => 'Færa eignarhald',
+ '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' => 'Engin notandi valin',
+ 'users_edit' => 'Breyta notanda',
+ 'users_edit_profile' => 'Breyta prófíl',
+ 'users_avatar' => 'Avatar notanda',
+ 'users_avatar_desc' => 'Select an image to represent this user. This should be approx 256px square.',
+ 'users_preferred_language' => 'Valið tungumál',
+ 'users_preferred_language_desc' => 'This option will change the language used for the user-interface of the application. This will not affect any user-created content.',
+ 'users_social_accounts' => 'Samfélagsmiðla reikningar',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not revoke previously authorized access. Revoke access from your profile settings on the connected social account.',
+ 'users_social_connect' => 'Tengja aðgang',
+ 'users_social_disconnect' => 'Aftengja aðgang',
+ 'users_social_status_connected' => 'Tengt',
+ 'users_social_status_disconnected' => 'Aftengt',
+ 'users_social_connected' => ':socialAccount account was successfully attached to your profile.',
+ 'users_social_disconnected' => ':socialAccount account was successfully disconnected from your profile.',
+ 'users_api_tokens' => 'API tókar',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'No API tokens have been created for this user',
+ 'users_api_tokens_create' => 'Búa til tóka',
+ 'users_api_tokens_expires' => 'Rennur út',
+ 'users_api_tokens_docs' => 'API Documentation',
+ 'users_mfa' => 'Multi-Factor Authentication',
+ 'users_mfa_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'users_mfa_x_methods' => ':count method configured|:count methods configured',
+ 'users_mfa_configure' => 'Configure Methods',
+
+ // API Tokens
+ 'user_api_token_create' => 'Búa til API tóka',
+ 'user_api_token_name' => 'Nafn',
+ 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
+ 'user_api_token_expiry' => 'Rennur út þann',
+ 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
+ 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
+ 'user_api_token' => 'API tóki',
+ 'user_api_token_id' => 'Númer tóka',
+ 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
+ 'user_api_token_secret' => 'Tóka leyndarmál',
+ 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
+ 'user_api_token_created' => 'Tóki búinn til :timeAgo',
+ 'user_api_token_updated' => 'Tóki uppfærður :timeAgo',
+ 'user_api_token_delete' => 'Eyða tóka',
+ 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
+ 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks are a way to send data to external URLs when certain actions and events occur within the system which allows event-based integration with external platforms such as messaging or notification systems.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'Búa til nýjann Webhook',
+ 'webhooks_none_created' => 'Engir Webhooks hafa verið búnir til.',
+ 'webhooks_edit' => 'Breyta Webhook',
+ 'webhooks_save' => 'Vista Webhook',
+ 'webhooks_details' => 'Upplýsingar um Webhook',
+ 'webhooks_details_desc' => 'Provide a user friendly name and a POST endpoint as a location for the webhook data to be sent to.',
+ 'webhooks_events' => 'Webhook atburðir',
+ 'webhooks_events_desc' => 'Select all the events that should trigger this webhook to be called.',
+ 'webhooks_events_warning' => 'Keep in mind that these events will be triggered for all selected events, even if custom permissions are applied. Ensure that use of this webhook won\'t expose confidential content.',
+ 'webhooks_events_all' => 'Allir kerfis atburðir',
+ 'webhooks_name' => 'Webhook nafn',
+ 'webhooks_timeout' => 'Webhook tímamörk (Sekúndur)',
+ 'webhooks_endpoint' => 'Webhook endapunktur',
+ 'webhooks_active' => 'Webhook virkur',
+ 'webhook_events_table_header' => 'Atburðir',
+ 'webhooks_delete' => 'Eyða Webhook',
+ 'webhooks_delete_warning' => 'Þessi aðgerð mun eyða þessum Webhook að fullu \':webhookName\',.',
+ 'webhooks_delete_confirm' => 'Ertu viss um að þú viljir eyða þessum Webhook?',
+ 'webhooks_format_example' => 'Dæmi um snið á Webhook',
+ 'webhooks_format_example_desc' => 'Webhook data is sent as a POST request to the configured endpoint as JSON following the format below. The "related_item" and "url" properties are optional and will depend on the type of event triggered.',
+ 'webhooks_status' => 'Staða á Webhook',
+ 'webhooks_last_called' => 'Síðast kallað:',
+ 'webhooks_last_errored' => 'Síðasta villa kom upp:',
+ 'webhooks_last_error_message' => 'Síðustu villuskilaboð:',
+
+ // Licensing
+ 'licenses' => 'Leyfi',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'Bookstack leyfi',
+ 'licenses_php' => 'PHP kóðasafnsleyfi',
+ 'licenses_js' => 'Javascript kóðasafnsleyfi',
+ 'licenses_other' => 'Önnur leyfi',
+ 'license_details' => 'Upplýsingar um leyfi',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/is/validation.php b/lang/is/validation.php
new file mode 100644
index 00000000000..7f2af0f0810
--- /dev/null
+++ b/lang/is/validation.php
@@ -0,0 +1,123 @@
+ 'Það verður að samþykkja :attribute.',
+ 'active_url' => ':attribute Er ekki gilt vistfang.',
+ 'after' => ':attribute verður að vera dagsetning eftir :date.',
+ 'alpha' => ':attribute má eingöngu innihalda stafi.',
+ 'alpha_dash' => ':attribute má eingöngu innihalda stafi, tölustafi, strik og undirstrik.',
+ 'alpha_num' => ':attribute má eingöngu innihalda stafi og tölustafi.',
+ 'array' => 'The :attribute must be an array.',
+ 'backup_codes' => 'Kóðinn sem þú gafst upp er ekki gildur eða hefur þegar verið notaður.',
+ 'before' => ':attribute verður að vera dagsetning á undan :date.',
+ 'between' => [
+ 'numeric' => ':attribute verður að vera á milli :min og :max.',
+ 'file' => ':attribute verður að vera á milli :min og :max kílóbæti.',
+ 'string' => ':attribute verður að vera á milli :min og :max stafir.',
+ 'array' => ':attribute verður að vera á milli :min og :max fjöldi.',
+ ],
+ 'boolean' => ':attribute gildið verður að vera true og 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',
+ 'file' => 'The :attribute must be provided as a valid file.',
+ 'filled' => 'The :attribute field is required.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ 'array' => 'The :attribute may not have more than :max items.',
+ ],
+ 'mimes' => 'The :attribute must be a file of type: :values.',
+ 'min' => [
+ 'numeric' => 'The :attribute must be at least :min.',
+ 'file' => 'The :attribute must be at least :min kilobytes.',
+ 'string' => 'The :attribute must be at least :min characters.',
+ 'array' => 'The :attribute must have at least :min items.',
+ ],
+ 'not_in' => 'The selected :attribute is invalid.',
+ 'not_regex' => 'The :attribute format is invalid.',
+ 'numeric' => 'The :attribute must be a number.',
+ 'regex' => 'The :attribute format is invalid.',
+ 'required' => 'The :attribute field is required.',
+ 'required_if' => 'The :attribute field is required when :other is :value.',
+ 'required_with' => 'The :attribute field is required when :values is present.',
+ 'required_with_all' => 'The :attribute field is required when :values is present.',
+ 'required_without' => 'The :attribute field is required when :values is not present.',
+ 'required_without_all' => 'The :attribute field is required when none of :values are present.',
+ 'same' => 'The :attribute and :other must match.',
+ 'safe_url' => 'The provided link may not be safe.',
+ 'size' => [
+ 'numeric' => 'The :attribute must be :size.',
+ 'file' => 'The :attribute must be :size kilobytes.',
+ 'string' => 'The :attribute must be :size characters.',
+ 'array' => 'The :attribute must contain :size items.',
+ ],
+ 'string' => 'The :attribute must be a string.',
+ 'timezone' => 'The :attribute must be a valid zone.',
+ 'totp' => 'The provided code is not valid or has expired.',
+ 'unique' => 'The :attribute has already been taken.',
+ 'url' => 'The :attribute format is invalid.',
+ 'uploaded' => 'The file could not be uploaded. The server may not accept files of this size.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Staðfestingu á lykilorði er krafist',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/it/activities.php b/lang/it/activities.php
new file mode 100644
index 00000000000..d682ccca6e0
--- /dev/null
+++ b/lang/it/activities.php
@@ -0,0 +1,140 @@
+ 'ha creato la pagina',
+ 'page_create_notification' => 'Pagina creata con successo',
+ 'page_update' => 'ha aggiornato la pagina',
+ 'page_update_notification' => 'Pagina aggiornata con successo',
+ 'page_delete' => 'ha eliminato la pagina',
+ 'page_delete_notification' => 'Pagina eliminata con successo',
+ 'page_restore' => 'ha ripristinato la pagina',
+ 'page_restore_notification' => 'Pagina ripristinata con successo',
+ 'page_move' => 'ha spostato la pagina',
+ 'page_move_notification' => 'Pagina spostata con successo',
+
+ // Chapters
+ 'chapter_create' => 'ha creato il capitolo',
+ 'chapter_create_notification' => 'Capitolo creato con successo',
+ 'chapter_update' => 'ha aggiornato il capitolo',
+ 'chapter_update_notification' => 'Capitolo aggiornato con successo',
+ 'chapter_delete' => 'ha eliminato il capitolo',
+ 'chapter_delete_notification' => 'Capitolo eliminato con successo',
+ 'chapter_move' => 'ha spostato il capitolo',
+ 'chapter_move_notification' => 'Capitolo spostato con successo',
+
+ // Books
+ 'book_create' => 'ha creato il libro',
+ 'book_create_notification' => 'Libro creato con successo',
+ 'book_create_from_chapter' => 'ha convertito da capitolo a libro',
+ 'book_create_from_chapter_notification' => 'Capitolo convertito in libro con successo',
+ 'book_update' => 'ha aggiornato il libro',
+ 'book_update_notification' => 'Libro aggiornato con successo',
+ 'book_delete' => 'ha eliminato il libro',
+ 'book_delete_notification' => 'Libro eliminato con successo',
+ 'book_sort' => 'ha ordinato il libro',
+ 'book_sort_notification' => 'Libro riordinato con successo',
+
+ // Bookshelves
+ 'bookshelf_create' => 'ha creato la libreria',
+ 'bookshelf_create_notification' => 'Libreria creata con successo',
+ 'bookshelf_create_from_book' => 'ha convertito il libro in libreria',
+ 'bookshelf_create_from_book_notification' => 'Libro convertito in libreria con successo',
+ 'bookshelf_update' => 'ha aggiornato la libreria',
+ 'bookshelf_update_notification' => 'Libreria aggiornata con successo',
+ 'bookshelf_delete' => 'ha eliminato la libreria',
+ 'bookshelf_delete_notification' => 'Libreria eliminata con successo',
+
+ // Revisions
+ 'revision_restore' => 'ha ripristinato la revisione',
+ 'revision_delete' => 'ha eliminato la revisione',
+ 'revision_delete_notification' => 'Revisione eliminata con successo',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" è stato aggiunto ai tuoi preferiti',
+ 'favourite_remove_notification' => '":name" è stato rimosso dai tuoi preferiti',
+
+ // Watching
+ 'watch_update_level_notification' => 'Preferenze di monitoraggio aggiornate con successo',
+
+ // Auth
+ 'auth_login' => 'connesso',
+ 'auth_register' => 'registrato come nuovo utente',
+ 'auth_password_reset_request' => 'ha richiesto di reimpostare la password utente',
+ 'auth_password_reset_update' => 'ha reimpostato la password utente',
+ 'mfa_setup_method' => 'ha configurato un metodo multi-fattore',
+ 'mfa_setup_method_notification' => 'Metodo multi-fattore impostato con successo',
+ 'mfa_remove_method' => 'ha rimosso un metodo multi-fattore',
+ 'mfa_remove_method_notification' => 'Metodo multi-fattore rimosso con successo',
+
+ // Settings
+ 'settings_update' => 'ha aggiornato le impostazioni',
+ 'settings_update_notification' => 'Impostazioni aggiornate con successo',
+ 'maintenance_action_run' => 'ha eseguito un\'azione di manutenzione',
+
+ // Webhooks
+ 'webhook_create' => 'ha creato un webhook',
+ 'webhook_create_notification' => 'Webhook creato con successo',
+ 'webhook_update' => 'ha aggiornato un webhook',
+ 'webhook_update_notification' => 'Webhook aggiornato con successo',
+ 'webhook_delete' => 'ha eliminato un webhook',
+ 'webhook_delete_notification' => 'Webhook eliminato con successo',
+
+ // Imports
+ 'import_create' => 'importazione creata',
+ 'import_create_notification' => 'Importazione caricata con successo',
+ 'import_run' => 'importazione aggiornata',
+ 'import_run_notification' => 'Contenuto importato con successo',
+ 'import_delete' => 'importazione cancellata',
+ 'import_delete_notification' => 'Importazione eliminata con successo',
+
+ // Users
+ 'user_create' => 'ha creato un utente',
+ 'user_create_notification' => 'Utente creato con successo',
+ 'user_update' => 'ha aggiornato un utente',
+ 'user_update_notification' => 'Utente aggiornato con successo',
+ 'user_delete' => 'ha eliminato un utente',
+ 'user_delete_notification' => 'Utente rimosso con successo',
+
+ // API Tokens
+ 'api_token_create' => 'ha creato un token API',
+ 'api_token_create_notification' => 'Token API creato con successo',
+ 'api_token_update' => 'ha aggiornato un token API',
+ 'api_token_update_notification' => 'Token API aggiornato correttamente',
+ 'api_token_delete' => 'ha eliminato token API',
+ 'api_token_delete_notification' => 'Token API eliminato con successo',
+
+ // Roles
+ 'role_create' => 'ha creato un ruolo',
+ 'role_create_notification' => 'Ruolo creato con successo',
+ 'role_update' => 'ha aggiornato un ruolo',
+ 'role_update_notification' => 'Ruolo aggiornato con successo',
+ 'role_delete' => 'ha eliminato un ruolo',
+ 'role_delete_notification' => 'Ruolo eliminato con successo',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'ha svuotato il cestino',
+ 'recycle_bin_restore' => 'ha ripristinato dal cestino',
+ 'recycle_bin_destroy' => 'ha rimosso dal cestino',
+
+ // Comments
+ 'commented_on' => 'ha commentato in',
+ 'comment_create' => 'ha aggiunto un commento',
+ 'comment_update' => 'ha aggiornato un commento',
+ 'comment_delete' => 'ha rimosso un commento',
+
+ // Sort Rules
+ 'sort_rule_create' => 'regola di ordinamento creata',
+ 'sort_rule_create_notification' => 'Ordina regola creata con successo',
+ 'sort_rule_update' => 'regola di ordinamento aggiornata',
+ 'sort_rule_update_notification' => 'Regola di ordinamento aggiornata con successo',
+ 'sort_rule_delete' => 'regola di ordinamento eliminata',
+ 'sort_rule_delete_notification' => 'Regola di ordinamento eliminata con successo',
+
+ // Other
+ 'permissions_update' => 'ha aggiornate le autorizzazioni',
+];
diff --git a/lang/it/auth.php b/lang/it/auth.php
new file mode 100644
index 00000000000..9191ecba794
--- /dev/null
+++ b/lang/it/auth.php
@@ -0,0 +1,117 @@
+ 'Credenziali errate.',
+ 'throttle' => 'Troppi tentativi di login. Riprova in :seconds secondi.',
+
+ // Login & Register
+ 'sign_up' => 'Registrati',
+ 'log_in' => 'Login',
+ 'log_in_with' => 'Login con :socialDriver',
+ 'sign_up_with' => 'Registrati con :socialDriver',
+ 'logout' => 'Esci',
+
+ 'name' => 'Nome',
+ 'username' => 'Username',
+ 'email' => 'Email',
+ 'password' => 'Password',
+ 'password_confirm' => 'Conferma password',
+ 'password_hint' => 'Deve essere lunga almeno 8 caratteri',
+ 'forgot_password' => 'Password dimenticata?',
+ 'remember_me' => 'Ricordami',
+ 'ldap_email_hint' => 'Inserisci un\'email per usare quest\'account.',
+ 'create_account' => 'Crea un account',
+ 'already_have_account' => 'Hai già un account?',
+ 'dont_have_account' => 'Non hai un account?',
+ 'social_login' => 'Login Social',
+ 'social_registration' => 'Registrazione Social',
+ 'social_registration_text' => 'Registrati e accedi utilizzando un altro servizio.',
+
+ 'register_thanks' => 'Grazie per esserti registrato!',
+ 'register_confirm' => 'Controlla la tua mail e clicca il pulsante di conferma per accedere a :appName.',
+ 'registrations_disabled' => 'La registrazione è disabilitata al momento',
+ 'registration_email_domain_invalid' => 'Questo dominio email non ha accesso a questa applicazione',
+ 'register_success' => 'Grazie per la registrazione! Sei registrato e connesso.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Tentativo di accesso',
+ 'auto_init_starting_desc' => 'Stiamo contattando il tuo sistema di autenticazione per avviare il processo di login. Se non ci sono progressi dopo 5 secondi, puoi provare a cliccare sul link qui sotto.',
+ 'auto_init_start_link' => 'Procedi con l\'autenticazione',
+
+ // Password Reset
+ 'reset_password' => 'Reimposta la password',
+ 'reset_password_send_instructions' => 'Inserisci il tuo indirizzo e ti verrà inviata una mail contenente un link per reimpostare la tua password.',
+ 'reset_password_send_button' => 'Invia link di ripristino',
+ 'reset_password_sent' => 'Se la mail verrà trovata nel sistema, verrà inviato a :email un link di ripristino della password.',
+ 'reset_password_success' => 'La tua password è stata ripristinata correttamente.',
+ 'email_reset_subject' => 'Reimposta la password di :appName',
+ 'email_reset_text' => 'Stai ricevendo questa mail perché abbiamo ricevuto una richiesta di ripristino della password per il tuo account.',
+ 'email_reset_not_requested' => 'Se non hai richiesto un ripristino della password, ignora questa mail.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Conferma email per :appName',
+ 'email_confirm_greeting' => 'Grazie per esserti registrato a :appName!',
+ 'email_confirm_text' => 'Conferma il tuo indirizzo email cliccando il pulsante sotto:',
+ 'email_confirm_action' => 'Conferma email',
+ 'email_confirm_send_error' => 'La conferma della mail è richiesta ma non è stato possibile mandare la mail. Contatta l\'amministratore.',
+ 'email_confirm_success' => 'La tua email è stata confermata! Ora dovresti essere in grado di effettuare il login utilizzando questo indirizzo email.',
+ 'email_confirm_resent' => 'Mail di conferma reinviata, controlla la tua posta.',
+ 'email_confirm_thanks' => 'Grazie per la conferma!',
+ 'email_confirm_thanks_desc' => 'Attendi un momento mentre la conferma viene gestita. Se non vieni reindirizzato dopo 3 secondi, clicca sul link "Continua" qui sotto per procedere.',
+
+ 'email_not_confirmed' => 'Indirizzo email non confermato',
+ 'email_not_confirmed_text' => 'Il tuo indirizzo email non è ancora stato confermato.',
+ 'email_not_confirmed_click_link' => 'Clicca il link nella mail mandata subito dopo la tua registrazione.',
+ 'email_not_confirmed_resend' => 'Se non riesci a trovare la mail puoi rimandarla cliccando il pulsante sotto.',
+ 'email_not_confirmed_resend_button' => 'Reinvia conferma',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Sei stato invitato a unirti a :appName!',
+ 'user_invite_email_greeting' => 'Un account è stato creato per te su :appName.',
+ 'user_invite_email_text' => 'Clicca sul pulsante qui sotto per impostare una password e ottenere l\'accesso:',
+ 'user_invite_email_action' => 'Imposta password',
+ 'user_invite_page_welcome' => 'Benvenuto in :appName!',
+ 'user_invite_page_text' => 'Per completare il tuo account e ottenere l\'accesso, devi impostare una password che verrà utilizzata per accedere a :appName in futuro.',
+ 'user_invite_page_confirm_button' => 'Conferma password',
+ 'user_invite_success_login' => 'Password impostata, ora dovresti essere in grado di effettuare il login utilizzando la password impostata per accedere a :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Imposta autenticazione multi-fattore',
+ 'mfa_setup_desc' => 'Imposta l\'autenticazione multi-fattore come misura di sicurezza aggiuntiva per il tuo account.',
+ 'mfa_setup_configured' => 'Già configurata',
+ 'mfa_setup_reconfigure' => 'Riconfigura',
+ 'mfa_setup_remove_confirmation' => 'Sei sicuro di voler rimuovere questo metodo di autenticazione multi-fattore?',
+ 'mfa_setup_action' => 'Imposta',
+ 'mfa_backup_codes_usage_limit_warning' => 'Hai meno di 5 codici di backup rimanenti. Genera e memorizza un nuovo set prima di esaurire i codici per evitare di essere bloccato dal tuo account.',
+ 'mfa_option_totp_title' => 'App mobile',
+ 'mfa_option_totp_desc' => 'Per utilizzare l\'autenticazione multi-fattore avrai bisogno di un\'applicazione mobile che supporti TOTP come Google Authenticator, Authy o Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Codici di backup',
+ 'mfa_option_backup_codes_desc' => 'Genera un insieme di codici di backup monouso che inserirai al login per verificare la tua identità. Assicurati di conservarli in un luogo sicuro e sicuro.',
+ 'mfa_gen_confirm_and_enable' => 'Conferma e abilita',
+ 'mfa_gen_backup_codes_title' => 'Configurazione codici di backup',
+ 'mfa_gen_backup_codes_desc' => 'Conserva l\'elenco di codici qui sotto in un luogo sicuro. Quando accedi al sistema potrai utilizzare uno dei codici come meccanismo di autenticazione secondario.',
+ 'mfa_gen_backup_codes_download' => 'Scarica codici',
+ 'mfa_gen_backup_codes_usage_warning' => 'Ogni codice può essere utilizzato solo una volta',
+ 'mfa_gen_totp_title' => 'Impostazione app mobile',
+ 'mfa_gen_totp_desc' => 'Per utilizzare l\'autenticazione multi-fattore avrai bisogno di un\'applicazione mobile che supporti TOTP come Google Authenticator, Authy o Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Scansiona il codice QR qui sotto utilizzando la tua app di autenticazione preferita per iniziare.',
+ 'mfa_gen_totp_verify_setup' => 'Verifica configurazione',
+ 'mfa_gen_totp_verify_setup_desc' => 'Verifica che tutto funzioni inserendo un codice, generato all\'interno della tua app di autenticazione, nella casella di testo sottostante:',
+ 'mfa_gen_totp_provide_code_here' => 'Inserisci qui il codice generato dall\'app',
+ 'mfa_verify_access' => 'Verifica accesso',
+ 'mfa_verify_access_desc' => 'Il tuo account utente richiede che tu confermi la tua identità tramite un ulteriore livello di verifica prima di ottenere l\'accesso. Verifica usando uno dei tuoi metodi configurati per continuare.',
+ 'mfa_verify_no_methods' => 'Nessun metodo configurato',
+ 'mfa_verify_no_methods_desc' => 'Non è stato possibile trovare metodi di autenticazione multi-fattore per il tuo account. Devi impostare almeno un metodo prima di ottenere l\'accesso.',
+ 'mfa_verify_use_totp' => 'Verifica utilizzando un\'app mobile',
+ 'mfa_verify_use_backup_codes' => 'Verifica utilizzando un codice di backup',
+ 'mfa_verify_backup_code' => 'Codice di backup',
+ 'mfa_verify_backup_code_desc' => 'Inserisci uno dei tuoi rimanenti codici di backup qui sotto:',
+ 'mfa_verify_backup_code_enter_here' => 'Inserisci qui il codice di backup',
+ 'mfa_verify_totp_desc' => 'Inserisci il codice, generato tramite la tua app mobile, qui sotto:',
+ 'mfa_setup_login_notification' => 'Metodo multi-fattore configurato, si prega di effettuare nuovamente il login utilizzando il metodo configurato.',
+];
diff --git a/lang/it/common.php b/lang/it/common.php
new file mode 100644
index 00000000000..9eba738a4e5
--- /dev/null
+++ b/lang/it/common.php
@@ -0,0 +1,115 @@
+ 'Annulla',
+ 'close' => 'Chiudi',
+ 'confirm' => 'Conferma',
+ 'back' => 'Indietro',
+ 'save' => 'Salva',
+ 'continue' => 'Continua',
+ 'select' => 'Seleziona',
+ 'toggle_all' => 'Attiva/disattiva tutto',
+ 'more' => 'Altro',
+
+ // Form Labels
+ 'name' => 'Nome',
+ 'description' => 'Descrizione',
+ 'role' => 'Ruolo',
+ 'cover_image' => 'Immagine di copertina',
+ 'cover_image_description' => 'L\'immagine dovrebbe essere di circa 440x250px, anche se verrà ridimensionata e ritagliata in modo flessibile per adattarsi all\'interfaccia utente in diversi scenari, quindi le dimensioni effettive per la visualizzazione saranno diverse.',
+
+ // Actions
+ 'actions' => 'Azioni',
+ 'view' => 'Visualizza',
+ 'view_all' => 'Vedi tutto',
+ 'new' => 'Nuovo',
+ 'create' => 'Crea',
+ 'update' => 'Aggiorna',
+ 'edit' => 'Modifica',
+ 'archive' => 'Archivia',
+ 'unarchive' => 'Ripristina',
+ 'sort' => 'Ordina',
+ 'move' => 'Sposta',
+ 'copy' => 'Copia',
+ 'reply' => 'Rispondi',
+ 'delete' => 'Elimina',
+ 'delete_confirm' => 'Conferma eliminazione',
+ 'search' => 'Cerca',
+ 'search_clear' => 'Pulisci ricerca',
+ 'reset' => 'Azzera',
+ 'remove' => 'Rimuovi',
+ 'add' => 'Aggiungi',
+ 'configure' => 'Configura',
+ 'manage' => 'Gestisci',
+ 'fullscreen' => 'Schermo intero',
+ 'favourite' => 'Aggiungi ai preferiti',
+ 'unfavourite' => 'Rimuovi dai preferiti',
+ 'next' => 'Successivo',
+ 'previous' => 'Precedente',
+ 'filter_active' => 'Filtro attivo:',
+ 'filter_clear' => 'Pulisci filtro',
+ 'download' => 'Scarica',
+ 'open_in_tab' => 'Apri nella scheda',
+ 'open' => 'Apri',
+
+ // Sort Options
+ 'sort_options' => 'Opzioni ordinamento',
+ 'sort_direction_toggle' => 'Inverti direzione ordinamento',
+ 'sort_ascending' => 'Ordine crescente',
+ 'sort_descending' => 'Ordine decrescente',
+ 'sort_name' => 'Nome',
+ 'sort_default' => 'Predefinito',
+ 'sort_created_at' => 'Data creazione',
+ 'sort_updated_at' => 'Data aggiornamento',
+
+ // Misc
+ 'deleted_user' => 'Utente eliminato',
+ 'no_activity' => 'Nessuna attività da mostrare',
+ 'no_items' => 'Nessun elemento disponibile',
+ 'back_to_top' => 'Torna in alto',
+ 'skip_to_main_content' => 'Passa al contenuto principale',
+ 'toggle_details' => 'Mostra dettagli',
+ 'toggle_thumbnails' => 'Mostra miniature',
+ 'details' => 'Dettagli',
+ 'grid_view' => 'Visualizzazione griglia',
+ 'list_view' => 'Visualizzazione lista',
+ 'default' => 'Predefinito',
+ 'breadcrumb' => 'Navigazione',
+ 'status' => 'Stato',
+ 'status_active' => 'Attivo',
+ 'status_inactive' => 'Inattivo',
+ 'never' => 'Mai',
+ 'none' => 'Nessuno',
+
+ // Header
+ 'homepage' => 'Homepage',
+ 'header_menu_expand' => 'Espandi menù intestazione',
+ 'profile_menu' => 'Menù del profilo',
+ 'view_profile' => 'Visualizza profilo',
+ 'edit_profile' => 'Modifica profilo',
+ 'dark_mode' => 'Modalità scura',
+ 'light_mode' => 'Modalità chiara',
+ 'global_search' => 'Ricerca globale',
+
+ // Layout tabs
+ 'tab_info' => 'Informazioni',
+ 'tab_info_label' => 'Scheda: Mostra informazioni secondarie',
+ 'tab_content' => 'Contenuto',
+ 'tab_content_label' => 'Scheda: Mostra contenuto principale',
+
+ // Email Content
+ 'email_action_help' => 'Se hai problemi nel cliccare il pulsante ":actionText", copia e incolla l\'URL qui sotto nel tuo browser:',
+ 'email_rights' => 'Tutti i diritti riservati',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Norme sulla privacy',
+ 'terms_of_service' => 'Condizioni del servizio',
+
+ // OpenSearch
+ 'opensearch_description' => 'Cerca :appName',
+];
diff --git a/lang/it/components.php b/lang/it/components.php
new file mode 100644
index 00000000000..e067db7033a
--- /dev/null
+++ b/lang/it/components.php
@@ -0,0 +1,46 @@
+ 'Seleziona un\'immagine',
+ 'image_list' => 'Elenco immagini',
+ 'image_details' => 'Dettagli immagine',
+ 'image_upload' => 'Carica immagine',
+ 'image_intro' => 'Qui è possibile selezionare e gestire le immagini che sono state precedentemente caricate nel sistema.',
+ 'image_intro_upload' => 'Carica una nuova immagine trascinando un file immagine in questa finestra oppure utilizzando il pulsante "Carica immagine" in alto.',
+ 'image_all' => 'Tutte',
+ 'image_all_title' => 'Visualizza tutte le immagini',
+ 'image_book_title' => 'Visualizza immagini caricate in questo libro',
+ 'image_page_title' => 'Visualizza immagini caricate in questa pagina',
+ 'image_search_hint' => 'Cerca immagine per nome',
+ 'image_uploaded' => 'Caricato :uploadedDate',
+ 'image_uploaded_by' => 'Caricato da :userName',
+ 'image_uploaded_to' => 'Caricato su :pageLink',
+ 'image_updated' => 'Aggiornato il :updateDate',
+ 'image_load_more' => 'Carica altre',
+ 'image_image_name' => 'Nome immagine',
+ 'image_delete_used' => 'Questa immagine è usata nelle pagine elencate.',
+ 'image_delete_confirm_text' => 'Sei sicuro di voler eliminare questa immagine?',
+ 'image_select_image' => 'Seleziona immagine',
+ 'image_dropzone' => 'Rilascia immagini o clicca qui per caricarle',
+ 'image_dropzone_drop' => 'Trascina qui le immagini da caricare',
+ 'images_deleted' => 'Immagini eliminate',
+ 'image_preview' => 'Anteprima immagine',
+ 'image_upload_success' => 'Immagine caricata correttamente',
+ 'image_update_success' => 'Dettagli immagine aggiornati correttamente',
+ 'image_delete_success' => 'Immagine eliminata correttamente',
+ 'image_replace' => 'Sostituisci immagine',
+ 'image_replace_success' => 'File immagine aggiornato con successo',
+ 'image_rebuild_thumbs' => 'Rigenera variazioni dimensione',
+ 'image_rebuild_thumbs_success' => 'Variazioni di dimensione immagine ricostruite con successo!',
+
+ // Code Editor
+ 'code_editor' => 'Modifica codice',
+ 'code_language' => 'Linguaggio codice',
+ 'code_content' => 'Contenuto codice',
+ 'code_session_history' => 'Cronologia sessione',
+ 'code_save' => 'Salva codice',
+];
diff --git a/lang/it/editor.php b/lang/it/editor.php
new file mode 100644
index 00000000000..8e614770836
--- /dev/null
+++ b/lang/it/editor.php
@@ -0,0 +1,182 @@
+ 'Generale',
+ 'advanced' => 'Avanzate',
+ 'none' => 'Nessuno',
+ 'cancel' => 'Annulla',
+ 'save' => 'Salva',
+ 'close' => 'Chiudi',
+ 'apply' => 'Applica',
+ 'undo' => 'Annulla',
+ 'redo' => 'Ripeti',
+ 'left' => 'Sinistra',
+ 'center' => 'Centro',
+ 'right' => 'Destra',
+ 'top' => 'Alto',
+ 'middle' => 'Centrale',
+ 'bottom' => 'Basso',
+ 'width' => 'Larghezza',
+ 'height' => 'Altezza',
+ 'More' => 'Altro',
+ 'select' => 'Seleziona...',
+
+ // Toolbar
+ 'formats' => 'Formati',
+ 'header_large' => 'Intestazione grande',
+ 'header_medium' => 'Intestazione media',
+ 'header_small' => 'Intestazione piccola',
+ 'header_tiny' => 'Intestazione minuscola',
+ 'paragraph' => 'Paragrafo',
+ 'blockquote' => 'Virgolettato',
+ 'inline_code' => 'Codice in linea',
+ 'callouts' => 'Didascalie',
+ 'callout_information' => 'Informazione',
+ 'callout_success' => 'Fatto',
+ 'callout_warning' => 'Avviso',
+ 'callout_danger' => 'Pericolo',
+ 'bold' => 'Grassetto',
+ 'italic' => 'Corsivo',
+ 'underline' => 'Sottolineato',
+ 'strikethrough' => 'Barrato',
+ 'superscript' => 'Apice',
+ 'subscript' => 'Pedice',
+ 'text_color' => 'Colore del testo',
+ 'highlight_color' => 'Colore evidenziazione',
+ 'custom_color' => 'Colore personalizzato',
+ 'remove_color' => 'Rimuovi colore',
+ 'background_color' => 'Colore di sfondo',
+ 'align_left' => 'Allinea a sinistra',
+ 'align_center' => 'Allinea al centro',
+ 'align_right' => 'Allinea a destra',
+ 'align_justify' => 'Giustifica',
+ 'list_bullet' => 'Elenco puntato',
+ 'list_numbered' => 'Elenco numerato',
+ 'list_task' => 'Elenco attività',
+ 'indent_increase' => 'Aumenta rientro',
+ 'indent_decrease' => 'Riduci rientro',
+ 'table' => 'Tabella',
+ 'insert_image' => 'Inserisci immagine',
+ 'insert_image_title' => 'Inserisci/modifica immagine',
+ 'insert_link' => 'Inserisci/modifica collegamento',
+ 'insert_link_title' => 'Inserisci/modifica collegamento',
+ 'insert_horizontal_line' => 'Inserisci riga orizzontale',
+ 'insert_code_block' => 'Inserisci blocco di codice',
+ 'edit_code_block' => 'Modifica blocco di codice',
+ 'insert_drawing' => 'Inserisci/modifica disegno',
+ 'drawing_manager' => 'Gestore disegni',
+ 'insert_media' => 'Inserisci/modifica media',
+ 'insert_media_title' => 'Inserisci/modifica media',
+ 'clear_formatting' => 'Cancella formattazione',
+ 'source_code' => 'Codice sorgente',
+ 'source_code_title' => 'Codice sorgente',
+ 'fullscreen' => 'Schermo intero',
+ 'image_options' => 'Opzioni immagine',
+
+ // Tables
+ 'table_properties' => 'Proprietà della tabella',
+ 'table_properties_title' => 'Proprietà della tabella',
+ 'delete_table' => 'Elimina tabella',
+ 'table_clear_formatting' => 'Cancella formattazione tabella',
+ 'resize_to_contents' => 'Ridimensiona al contenuto',
+ 'row_header' => 'Intestazione riga',
+ 'insert_row_before' => 'Inserisci riga sopra',
+ 'insert_row_after' => 'Inserisci riga sotto',
+ 'delete_row' => 'Elimina riga',
+ 'insert_column_before' => 'Inserisci colonna prima',
+ 'insert_column_after' => 'Inserisci colonna dopo',
+ 'delete_column' => 'Elimina colonna',
+ 'table_cell' => 'Cella',
+ 'table_row' => 'Riga',
+ 'table_column' => 'Colonna',
+ 'cell_properties' => 'Proprietà cella',
+ 'cell_properties_title' => 'Proprietà cella',
+ 'cell_type' => 'Tipo di cella',
+ 'cell_type_cell' => 'Cella',
+ 'cell_scope' => 'Ambito',
+ 'cell_type_header' => 'Cella intestazione',
+ 'merge_cells' => 'Unisci celle',
+ 'split_cell' => 'Dividi cella',
+ 'table_row_group' => 'Gruppo riga',
+ 'table_column_group' => 'Gruppo colonna',
+ 'horizontal_align' => 'Allineamento orizzontale',
+ 'vertical_align' => 'Allineamento verticale',
+ 'border_width' => 'Spessore bordo',
+ 'border_style' => 'Stile bordo',
+ 'border_color' => 'Colore bordo',
+ 'row_properties' => 'Proprietà riga',
+ 'row_properties_title' => 'Proprietà riga',
+ 'cut_row' => 'Taglia riga',
+ 'copy_row' => 'Copia riga',
+ 'paste_row_before' => 'Incolla riga prima',
+ 'paste_row_after' => 'Incolla riga dopo',
+ 'row_type' => 'Tipo riga',
+ 'row_type_header' => 'Intestazione',
+ 'row_type_body' => 'Corpo',
+ 'row_type_footer' => 'Piè di pagina',
+ 'alignment' => 'Allineamento',
+ 'cut_column' => 'Taglia colonna',
+ 'copy_column' => 'Copia colonna',
+ 'paste_column_before' => 'Incolla colonna prima',
+ 'paste_column_after' => 'Incolla colonna dopo',
+ 'cell_padding' => 'Padding cella',
+ 'cell_spacing' => 'Spaziatura cella',
+ 'caption' => 'Didascalia',
+ 'show_caption' => 'Mostra didascalia',
+ 'constrain' => 'Mantieni proporzioni',
+ 'cell_border_solid' => 'Pieno',
+ 'cell_border_dotted' => 'Punteggiato',
+ 'cell_border_dashed' => 'Tratteggiato',
+ 'cell_border_double' => 'Doppio',
+ 'cell_border_groove' => 'Bordo incassato',
+ 'cell_border_ridge' => 'In rilievo',
+ 'cell_border_inset' => 'Sfondo Incassato',
+ 'cell_border_outset' => 'Sfondo in rilievo',
+ 'cell_border_none' => 'Nessuno',
+ 'cell_border_hidden' => 'Nascosto',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Sorgente',
+ 'alt_desc' => 'Descrizione alternativa',
+ 'embed' => 'Incorpora',
+ 'paste_embed' => 'Incolla il tuo codice incorporato qui sotto:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Testo da visualizzare',
+ 'title' => 'Titolo',
+ 'browse_links' => 'Sfoglia link',
+ 'open_link' => 'Apri collegamento',
+ 'open_link_in' => 'Apri collegamento in...',
+ 'open_link_current' => 'Finestra corrente',
+ 'open_link_new' => 'Nuova finestra',
+ 'remove_link' => 'Rimuovi collegamento',
+ 'insert_collapsible' => 'Inserisci blocco collassabile',
+ 'collapsible_unwrap' => 'Espandi',
+ 'edit_label' => 'Modifica etichetta',
+ 'toggle_open_closed' => 'Espandi/comprimi',
+ 'collapsible_edit' => 'Modifica blocco collassabile',
+ 'toggle_label' => 'Attiva/disattiva etichetta',
+
+ // About view
+ 'about' => 'Informazioni sull\'editor',
+ 'about_title' => 'Informazioni sull\'editor di WYSIWYG',
+ 'editor_license' => 'Licenza e copyright dell\'editor',
+ 'editor_lexical_license' => 'Questo editor è stato creato come fork di :lexicalLink ed è distribuito sotto la licenza MIT.',
+ 'editor_lexical_license_link' => 'I dettagli della licenza sono disponibili qui.',
+ 'editor_tiny_license' => 'Questo editor è realizzato usando :tinyLink che è fornito sotto la licenza MIT.',
+ 'editor_tiny_license_link' => 'I dettagli del copyright e della licenza di TinyMCE sono disponibili qui.',
+ 'save_continue' => 'Salva pagina e continua',
+ 'callouts_cycle' => '(Continua a premere per passare da un tipo all\'altro)',
+ 'link_selector' => 'Link al contenuto',
+ 'shortcuts' => 'Scorciatoie',
+ 'shortcut' => 'Scorciatoia',
+ 'shortcuts_intro' => 'Le seguenti scorciatoie sono disponibili nell\'editor:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Descrizione',
+];
diff --git a/lang/it/entities.php b/lang/it/entities.php
new file mode 100644
index 00000000000..eb9868973e5
--- /dev/null
+++ b/lang/it/entities.php
@@ -0,0 +1,476 @@
+ 'Creati di recente',
+ 'recently_created_pages' => 'Pagine create di recente',
+ 'recently_updated_pages' => 'Pagine aggiornate di recente',
+ 'recently_created_chapters' => 'Capitoli creati di recente',
+ 'recently_created_books' => 'Libri creati di recente',
+ 'recently_created_shelves' => 'Librerie create di recente',
+ 'recently_update' => 'Aggiornati di recente',
+ 'recently_viewed' => 'Visti di recente',
+ 'recent_activity' => 'Attività recente',
+ 'create_now' => 'Creane uno ora',
+ 'revisions' => 'Revisioni',
+ 'meta_revision' => 'Revisione #:revisionCount',
+ 'meta_created' => 'Creato :timeLength',
+ 'meta_created_name' => 'Creato :timeLength da :user',
+ 'meta_updated' => 'Aggiornato :timeLength',
+ 'meta_updated_name' => 'Aggiornato :timeLength da :user',
+ 'meta_owned_name' => 'Creati da :user',
+ 'meta_reference_count' => 'Referenziato da :count item|Referenziato da :count items',
+ 'entity_select' => 'Seleziona l\'entità',
+ 'entity_select_lack_permission' => 'Non hai i permessi necessari per selezionare questo elemento',
+ 'images' => 'Immagini',
+ 'my_recent_drafts' => 'Bozze recenti',
+ 'my_recently_viewed' => 'Visti di recente',
+ '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 creata di recente',
+ 'no_pages_recently_updated' => 'Nessuna pagina aggiornata di recente',
+ 'export' => 'Esporta',
+ 'export_html' => 'File contenuto web',
+ 'export_pdf' => 'File PDF',
+ 'export_text' => 'File di testo',
+ 'export_md' => 'File Markdown',
+ 'export_zip' => 'ZIP Portatile',
+ 'default_template' => 'Modello di pagina predefinito',
+ 'default_template_explain' => 'Assegna un modello di pagina che sarà usato come contenuto predefinito per tutte le pagine create in questo elemento. Tieni presente che potrà essere utilizzato solo se il creatore della pagina ha accesso alla pagina del modello scelto.',
+ 'default_template_select' => 'Seleziona una pagina modello',
+ 'import' => 'Importa',
+ 'import_validate' => 'Convalida Importazione',
+ 'import_desc' => 'Importa libri, capitoli e pagine utilizzando un\'esportazione zip portatile dalla stessa istanza o da un\'istanza diversa. Selezionare un file ZIP per procedere. Dopo che il file è stato caricato e convalidato, sarà possibile configurare e confermare l\'importazione nella vista successiva.',
+ 'import_zip_select' => 'Seleziona il file ZIP da caricare',
+ 'import_zip_validation_errors' => 'Sono stati rilevati errori durante la convalida del file ZIP fornito:',
+ 'import_pending' => 'Importazioni In Attesa',
+ 'import_pending_none' => 'Non sono state avviate importazioni.',
+ 'import_continue' => 'Continua l\'importazione',
+ 'import_continue_desc' => 'Esaminare il contenuto da importare dal file ZIP caricato. Quando è pronto, eseguire l\'importazione per aggiungere i contenuti al sistema. Il file di importazione ZIP caricato verrà automaticamente rimosso quando l\'importazione sarà riuscita.',
+ 'import_details' => 'Dettagli dell\'importazione',
+ 'import_run' => 'Esegui Importazione',
+ 'import_size' => 'Dimensione dello ZIP importato :size',
+ 'import_uploaded_at' => 'Caricato il :relativeTime',
+ 'import_uploaded_by' => 'Caricata da',
+ 'import_location' => 'Posizione Di Importazione',
+ 'import_location_desc' => 'Selezionare una posizione di destinazione per i contenuti importati. È necessario disporre delle autorizzazioni adeguate per creare all\'interno della posizione scelta.',
+ 'import_delete_confirm' => 'Sei sicuro di voler eliminare questa importazione?',
+ 'import_delete_desc' => 'Questa operazione cancella il file ZIP di importazione caricato e non può essere annullata.',
+ 'import_errors' => 'Errori di importazione',
+ 'import_errors_desc' => 'Gli seguenti errori si sono verificati durante il tentativo di importazione:',
+ 'breadcrumb_siblings_for_page' => 'Naviga tra le pagine correlate',
+ 'breadcrumb_siblings_for_chapter' => 'Naviga tra i capitoli correlati',
+ 'breadcrumb_siblings_for_book' => 'Naviga tra i libri correlati',
+ 'breadcrumb_siblings_for_bookshelf' => 'Naviga tra le librerie correlate',
+
+ // Permissions and restrictions
+ 'permissions' => 'Permessi',
+ 'permissions_desc' => 'Imposta qui i permessi per sovrascrivere i permessi predefiniti forniti dai ruoli utente.',
+ 'permissions_book_cascade' => 'I permessi impostati sui libri si trasmettono automaticamente a cascata ai capitoli e alle pagine figli, a meno che non siano stati definiti permessi propri.',
+ 'permissions_chapter_cascade' => 'I permessi impostati sui capitoli si trasmettono automaticamente a cascata alle pagine figlie, a meno che non siano stati definiti permessi propri.',
+ 'permissions_save' => 'Salva permessi',
+ 'permissions_owner' => 'Proprietario',
+ 'permissions_role_everyone_else' => 'Tutti gli altri',
+ 'permissions_role_everyone_else_desc' => 'Imposta i permessi per tutti i ruoli non specificamente sovrascritti.',
+ 'permissions_role_override' => 'Sovrascrivere i permessi per il ruolo',
+ 'permissions_inherit_defaults' => 'Eredita predefinite',
+
+ // Search
+ 'search_results' => 'Risultati della ricerca',
+ 'search_total_results_found' => ':count risultato trovato|:count risultati trovati',
+ 'search_clear' => 'Pulisci ricerca',
+ 'search_no_pages' => 'Nessuna pagina corrisponde alla ricerca',
+ 'search_for_term' => 'Ricerca per :term',
+ 'search_more' => 'Altri risultati',
+ 'search_advanced' => 'Ricerca avanzata',
+ 'search_terms' => 'Termini di ricerca',
+ 'search_content_type' => 'Tipo di contenuto',
+ 'search_exact_matches' => 'Corrispondenza esatta',
+ 'search_tags' => 'Ricerche per tag',
+ 'search_options' => 'Opzioni',
+ 'search_viewed_by_me' => 'Visti da me',
+ 'search_not_viewed_by_me' => 'Non visti da me',
+ 'search_permissions_set' => 'Permessi impostati',
+ 'search_created_by_me' => 'Creati da me',
+ 'search_updated_by_me' => 'Aggiornati da me',
+ 'search_owned_by_me' => 'Creati da me',
+ 'search_date_options' => 'Opzioni data',
+ 'search_updated_before' => 'Aggiornati prima del',
+ 'search_updated_after' => 'Aggiornati dopo il',
+ 'search_created_before' => 'Creati prima del',
+ 'search_created_after' => 'Creati dopo il',
+ 'search_set_date' => 'Imposta data',
+ 'search_update' => 'Aggiorna ricerca',
+
+ // Shelves
+ 'shelf' => 'Libreria',
+ 'shelves' => 'Librerie',
+ 'x_shelves' => ':count libreria|:count librerie',
+ 'shelves_empty' => 'Nessuna libreria creata',
+ 'shelves_create' => 'Crea nuova libreria',
+ 'shelves_popular' => 'Librerie popolari',
+ 'shelves_new' => 'Nuove librerie',
+ 'shelves_new_action' => 'Nuova libreria',
+ 'shelves_popular_empty' => 'Le librerie più popolari appariranno qui.',
+ 'shelves_new_empty' => 'Le librerie create più di recente appariranno qui.',
+ 'shelves_save' => 'Salva libreria',
+ 'shelves_books' => 'Libri in questa libreria',
+ 'shelves_add_books' => 'Aggiungi libri a questa libreria',
+ 'shelves_drag_books' => 'Trascina i libri qui sotto per aggiungerli a questa libreria',
+ 'shelves_empty_contents' => 'Questa libreria non ha libri assegnati',
+ 'shelves_edit_and_assign' => 'Modifica la libreria per assegnare i libri',
+ 'shelves_edit_named' => 'Modifica libreria :name',
+ 'shelves_edit' => 'Modifica libreria',
+ 'shelves_delete' => 'Elimina libreria',
+ 'shelves_delete_named' => 'Elimina libreria :name',
+ 'shelves_delete_explain' => "La libreria ':name' verrà eliminata. I libri al suo interno non verranno eliminati.",
+ 'shelves_delete_confirmation' => 'Sei sicuro di voler eliminare questa libreria?',
+ 'shelves_permissions' => 'Permessi libreria',
+ 'shelves_permissions_updated' => 'Permessi libreria aggiornati',
+ 'shelves_permissions_active' => 'Permessi libreria attivi',
+ 'shelves_permissions_cascade_warning' => 'I permessi delle librerie non si estendono automaticamente ai libri contenuti. Questo perché un libro può essere presente su più scaffali. I permessi possono comunque essere copiati ai libri al suo interno usando l\'opzione sottostante.',
+ 'shelves_permissions_create' => 'Le autorizzazioni per la creazione di librerie sono utilizzate solo per copiare le autorizzazioni ai libri figli utilizzando l\'azione sottostante. Non controllano la capacità di creare libri.',
+ 'shelves_copy_permissions_to_books' => 'Copia permessi ai libri',
+ 'shelves_copy_permissions' => 'Copia permessi',
+ 'shelves_copy_permissions_explain' => 'Verranno applicati tutti i permessi della libreria ai libri al suo interno. Prima dell\'attivazione, assicurati di aver salvato le modifiche ai permessi di questa libreria.',
+ 'shelves_copy_permission_success' => 'Permessi della libreria copiati in :count libri',
+
+ // Books
+ 'book' => 'Libro',
+ 'books' => 'Libri',
+ 'x_books' => ':count libro|:count libri',
+ 'books_empty' => 'Nessun libro creato',
+ 'books_popular' => 'Libri popolari',
+ 'books_recent' => 'Libri recenti',
+ 'books_new' => 'Nuovi libri',
+ 'books_new_action' => 'Nuovo libro',
+ 'books_popular_empty' => 'I libri più popolari appariranno qui.',
+ 'books_new_empty' => 'I libri creati di recente appariranno qui.',
+ 'books_create' => 'Crea nuovo libro',
+ 'books_delete' => 'Elimina libro',
+ 'books_delete_named' => 'Elimina il libro :bookName',
+ 'books_delete_explain' => 'Questo eliminerà il libro di nome \':bookName\'. Tutte le pagine e i capitoli saranno rimossi.',
+ 'books_delete_confirmation' => 'Sei sicuro di voler eliminare questo libro?',
+ 'books_edit' => 'Modifica libro',
+ 'books_edit_named' => 'Modifica il libro :bookName',
+ 'books_form_book_name' => 'Nome libro',
+ 'books_save' => 'Salva libro',
+ 'books_permissions' => 'Permessi libro',
+ 'books_permissions_updated' => 'Permessi del libro aggiornati',
+ 'books_empty_contents' => 'Non ci sono pagine o capitoli per questo libro.',
+ 'books_empty_create_page' => 'Crea una nuova pagina',
+ 'books_empty_sort_current_book' => 'Ordina il libro corrente',
+ 'books_empty_add_chapter' => 'Aggiungi un capitolo',
+ 'books_permissions_active' => 'Permessi libro attivi',
+ 'books_search_this' => 'Cerca in questo libro',
+ 'books_navigation' => 'Navigazione libro',
+ 'books_sort' => 'Ordina il contenuto del libro',
+ 'books_sort_desc' => 'Spostare i capitoli e le pagine di un libro per riorganizzarne il contenuto. Possono essere aggiunti altri libri che permettono di spostare facilmente capitoli e pagine tra i libri. Opzionalmente una regola di ordinamento automatico può essere impostata per ordinare automaticamente i contenuti di questo libro in caso di modifiche.',
+ 'books_sort_auto_sort' => 'Opzione Ordinamento Automatico',
+ 'books_sort_auto_sort_active' => 'Ordinamento Automatico Attivo: :sortName',
+ 'books_sort_named' => 'Ordina il libro :bookName',
+ 'books_sort_name' => 'Ordina per Nome',
+ 'books_sort_created' => 'Ordina per Data di creazione',
+ 'books_sort_updated' => 'Ordina per Data di aggiornamento',
+ 'books_sort_chapters_first' => 'Capitoli per primi',
+ 'books_sort_chapters_last' => 'Capitoli per ultimi',
+ 'books_sort_show_other' => 'Mostra altri libri',
+ 'books_sort_save' => 'Salva il nuovo ordine',
+ 'books_sort_show_other_desc' => 'Aggiungi qui altri libri per includerli nell\'operazione di ordinamento e consentire una facile riorganizzazione incrociata dei libri.',
+ 'books_sort_move_up' => 'Muovi su',
+ 'books_sort_move_down' => 'Muovi giù',
+ 'books_sort_move_prev_book' => 'Passa al libro precedente',
+ 'books_sort_move_next_book' => 'Passa al libro successivo',
+ 'books_sort_move_prev_chapter' => 'Passa al capitolo precedente',
+ 'books_sort_move_next_chapter' => 'Passa al capitolo successivo',
+ 'books_sort_move_book_start' => 'Passa all\'inizio del libro',
+ 'books_sort_move_book_end' => 'Passa alla fine del libro',
+ 'books_sort_move_before_chapter' => 'Passa al capitolo precedente',
+ 'books_sort_move_after_chapter' => 'Passa al capitolo successivo',
+ 'books_copy' => 'Copia libro',
+ 'books_copy_success' => 'Libro copiato con successo',
+
+ // Chapters
+ 'chapter' => 'Capitolo',
+ 'chapters' => 'Capitoli',
+ 'x_chapters' => ':count capitolo|:count capitoli',
+ 'chapters_popular' => 'Capitoli popolari',
+ 'chapters_new' => 'Nuovo capitolo',
+ 'chapters_create' => 'Crea un nuovo capitolo',
+ 'chapters_delete' => 'Elimina capitolo',
+ 'chapters_delete_named' => 'Elimina il capitolo :chapterName',
+ 'chapters_delete_explain' => 'Verrà eliminato il capitolo denominato \':chapterName\'. Saranno eliminate anche le pagine all\'interno.',
+ 'chapters_delete_confirm' => 'Sei sicuro di voler eliminare questo capitolo?',
+ 'chapters_edit' => 'Elimina capitolo',
+ 'chapters_edit_named' => 'Modifica il capitolo :chapterName',
+ 'chapters_save' => 'Salva capitolo',
+ 'chapters_move' => 'Sposta capitolo',
+ 'chapters_move_named' => 'Sposta il capitolo :chapterName',
+ 'chapters_copy' => 'Copia capitolo',
+ 'chapters_copy_success' => 'Capitolo copiato con successo',
+ 'chapters_permissions' => 'Permessi capitolo',
+ 'chapters_empty' => 'Non ci sono pagine in questo capitolo.',
+ 'chapters_permissions_active' => 'Permessi capitolo attivi',
+ 'chapters_permissions_success' => 'Permessi capitolo aggiornati',
+ 'chapters_search_this' => 'Cerca in questo capitolo',
+ 'chapter_sort_book' => 'Ordina libro',
+
+ // Pages
+ 'page' => 'Pagina',
+ 'pages' => 'Pagine',
+ 'x_pages' => ':count pagina|:count pagine',
+ 'pages_popular' => 'Pagine popolari',
+ 'pages_new' => 'Nuova pagina',
+ 'pages_attachments' => 'Allegati',
+ 'pages_navigation' => 'Navigazione pagine',
+ 'pages_delete' => 'Elimina pagina',
+ 'pages_delete_named' => 'Elimina la pagina :pageName',
+ 'pages_delete_draft_named' => 'Elimina bozza della pagina :pageName',
+ 'pages_delete_draft' => 'Elimina bozza pagina',
+ 'pages_delete_success' => 'Pagina eliminata',
+ 'pages_delete_draft_success' => 'Bozza di una pagina eliminata',
+ 'pages_delete_warning_template' => 'Questa pagina è in uso come modello di pagina predefinito del libro o del capitolo. Questi libri o capitoli non avranno più un modello di pagina predefinito assegnato dopo che questa pagina sarà eliminata.',
+ 'pages_delete_confirm' => 'Sei sicuro di voler eliminare questa pagina?',
+ 'pages_delete_draft_confirm' => 'Sei sicuro di voler eliminare la bozza di questa pagina?',
+ 'pages_editing_named' => 'Modifica :pageName',
+ 'pages_edit_draft_options' => 'Opzioni bozza',
+ 'pages_edit_save_draft' => 'Salva bozza',
+ 'pages_edit_draft' => 'Modifica bozza della pagina',
+ 'pages_editing_draft' => 'Modifica bozza',
+ 'pages_editing_page' => 'Modifica pagina',
+ 'pages_edit_draft_save_at' => 'Bozza salvata alle ',
+ 'pages_edit_delete_draft' => 'Elimina bozza',
+ 'pages_edit_delete_draft_confirm' => 'Si è sicuri di voler eliminare le modifiche alla pagina bozza? Tutte le modifiche apportate dall\'ultimo salvataggio completo andranno perse e l\'editor verrà aggiornato con l\'ultimo stato di salvataggio della pagina non in bozza.',
+ 'pages_edit_discard_draft' => 'Scarta bozza',
+ 'pages_edit_switch_to_markdown' => 'Passa all\'editor Markdown',
+ 'pages_edit_switch_to_markdown_clean' => '(Contenuto Chiaro)',
+ 'pages_edit_switch_to_markdown_stable' => '(Contenuto stabile)',
+ 'pages_edit_switch_to_wysiwyg' => 'Passa all\'editor WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Passa al nuovo WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Test)',
+ 'pages_edit_set_changelog' => 'Imposta changelog',
+ 'pages_edit_enter_changelog_desc' => 'Inserisci una breve descrizione dei cambiamenti che hai apportato',
+ 'pages_edit_enter_changelog' => 'Inserisci changelog',
+ 'pages_editor_switch_title' => 'Cambia editor',
+ 'pages_editor_switch_are_you_sure' => 'Sei sicuro di voler cambiare l\'editor di questa pagina?',
+ 'pages_editor_switch_consider_following' => 'Considera quanto segue quando si cambia editor:',
+ 'pages_editor_switch_consideration_a' => 'Una volta salvata, la nuova opzione di editor sarà utilizzata da chi modificherà in futuro, inclusi quelli che potrebbero non essere in grado di cambiare il tipo di editor da soli.',
+ 'pages_editor_switch_consideration_b' => 'Ciò può potenzialmente portare a una perdita di dettagli e sintassi in determinate circostanze.',
+ 'pages_editor_switch_consideration_c' => 'Le modifiche ai tag o al changelog, fatte dall\'ultimo salvataggio, non persisteranno in questa modifica.',
+ 'pages_save' => 'Salva pagina',
+ 'pages_title' => 'Titolo pagina',
+ 'pages_name' => 'Nome pagina',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Anteprima',
+ 'pages_md_insert_image' => 'Inserisci immagine',
+ 'pages_md_insert_link' => 'Inserisci collegamento entità',
+ 'pages_md_insert_drawing' => 'Inserisci disegno',
+ 'pages_md_show_preview' => 'Visualizza anteprima',
+ 'pages_md_sync_scroll' => 'Sincronizza scorrimento anteprima',
+ 'pages_md_plain_editor' => 'Editor di testo semplice',
+ 'pages_drawing_unsaved' => 'Trovato disegno non salvato',
+ 'pages_drawing_unsaved_confirm' => 'Sono stati trovati i dati di un disegno non salvato da un precedente tentativo di salvataggio di disegno non riuscito. Ripristinare e continuare a modificare questo disegno non salvato?',
+ 'pages_not_in_chapter' => 'La pagina non è in un capitolo',
+ 'pages_move' => 'Sposta pagina',
+ 'pages_copy' => 'Copia pagina',
+ 'pages_copy_desination' => 'Copia destinazione',
+ 'pages_copy_success' => 'Pagina copiata correttamente',
+ 'pages_permissions' => 'Permessi pagina',
+ 'pages_permissions_success' => 'Permessi pagina aggiornati',
+ 'pages_revision' => 'Versione',
+ 'pages_revisions' => 'Revisioni pagina',
+ 'pages_revisions_desc' => 'Di seguito sono elencate tutte le revisioni precedenti di questa pagina. È possibile consultare, confrontare e ripristinare le vecchie versioni della pagina, se hai i permessi. La cronologia completa della pagina potrebbe non essere riportata qui, poiché a seconda della configurazione del sistema le vecchie revisioni potrebbero essere cancellate automaticamente.',
+ 'pages_revisions_named' => 'Revisioni della pagina :pageName',
+ 'pages_revision_named' => 'Revisione della pagina :pageName',
+ 'pages_revision_restored_from' => 'Ripristinato da #:id; :summary',
+ 'pages_revisions_created_by' => 'Creata da',
+ 'pages_revisions_date' => 'Data versione',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Numero revisione',
+ 'pages_revisions_numbered' => 'Revisione #:id',
+ 'pages_revisions_numbered_changes' => 'Modifiche revisione #:id',
+ 'pages_revisions_editor' => 'Tipo di editor',
+ 'pages_revisions_changelog' => 'Changelog',
+ 'pages_revisions_changes' => 'Cambiamenti',
+ 'pages_revisions_current' => 'Versione corrente',
+ 'pages_revisions_preview' => 'Anteprima',
+ 'pages_revisions_restore' => 'Ripristina',
+ 'pages_revisions_none' => 'Questa pagina non ha revisioni',
+ 'pages_copy_link' => 'Copia collegamento',
+ 'pages_edit_content_link' => 'Vai alla sezione nell\'editor',
+ 'pages_pointer_enter_mode' => 'Vai alla modalità di selezione della sezione',
+ 'pages_pointer_label' => 'Opzioni sezione pagina',
+ 'pages_pointer_permalink' => 'Sezione pagina Permalink',
+ 'pages_pointer_include_tag' => 'Sezione pagina includi tag',
+ 'pages_pointer_toggle_link' => 'Modalità Permalink, premi per mostrare includi tag',
+ 'pages_pointer_toggle_include' => 'Modalità includi tag, premi per mostrare permalink',
+ 'pages_permissions_active' => 'Permessi pagina attivi',
+ 'pages_initial_revision' => 'Pubblicazione iniziale',
+ 'pages_references_update_revision' => 'Aggiornamento automatico di sistema dei collegamenti interni',
+ 'pages_initial_name' => 'Nuova pagina',
+ 'pages_editing_draft_notification' => 'Stai modificando una bozza che è stata salvata il :timeDiff.',
+ 'pages_draft_edited_notification' => 'Questa pagina è stata aggiornata. Si consiglia di scartare questa bozza.',
+ 'pages_draft_page_changed_since_creation' => 'Questa pagina è stata aggiornata da quando è stata creata questa bozza. Si consiglia di scartare questa bozza o di fare attenzione a non sovrascrivere alcun cambiamento alla pagina.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count utenti hanno iniziato a modificare questa pagina',
+ 'start_b' => ':userName ha iniziato a modificare questa pagina',
+ 'time_a' => 'dall\'ultimo aggiornamento della pagina',
+ 'time_b' => 'negli ultimi :minCount minuti',
+ 'message' => ':start :time. Assicurati di non sovrascrivere le modifiche degli altri!',
+ ],
+ 'pages_draft_discarded' => 'Bozza scartata! L\'editor è stato aggiornato con il contenuto della pagina corrente',
+ 'pages_draft_deleted' => 'Bozza eliminata! L\'editor è stato aggiornato con il contenuto della pagina corrente',
+ 'pages_specific' => 'Pagina specifica',
+ 'pages_is_template' => 'Modello pagina',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Attiva/disattiva barra laterale',
+ 'page_tags' => 'Tag pagina',
+ 'chapter_tags' => 'Tag capitolo',
+ 'book_tags' => 'Tag libro',
+ 'shelf_tags' => 'Tag libreria',
+ 'tag' => 'Tag',
+ 'tags' => 'Tag',
+ 'tags_index_desc' => 'I tag possono essere applicati ai contenuti del sistema per applicare una forma flessibile di categorizzazione. I tag possono avere una chiave e un valore, il valore è opzionale. Una volta applicati, i contenuti possono essere cercati utilizzando il nome e il valore del tag.',
+ 'tag_name' => 'Nome del tag',
+ 'tag_value' => 'Valore tag (opzionale)',
+ 'tags_explain' => "Aggiungi tag per categorizzare meglio il contenuto. \n Puoi assegnare un valore ai tag per una migliore organizzazione.",
+ 'tags_add' => 'Aggiungi un altro tag',
+ 'tags_remove' => 'Rimuovi questo tag',
+ 'tags_usages' => 'Utilizzi totali dei tag',
+ 'tags_assigned_pages' => 'Assegnato alle pagine',
+ 'tags_assigned_chapters' => 'Assegnato ai capitoli',
+ 'tags_assigned_books' => 'Assegnato ai libri',
+ 'tags_assigned_shelves' => 'Assegnato alle librerie',
+ 'tags_x_unique_values' => ':count valori univoci',
+ 'tags_all_values' => 'Tutti i valori',
+ 'tags_view_tags' => 'Visualizza tag',
+ 'tags_view_existing_tags' => 'Usa i tag esistenti',
+ 'tags_list_empty_hint' => 'I tag possono essere assegnati tramite la barra laterale dell\'editor di pagina o durante la modifica dei dettagli di un libro, di un capitolo o di una libreria.',
+ 'attachments' => 'Allegati',
+ 'attachments_explain' => 'Carica alcuni file o allega dei collegamenti per visualizzarli nella pagina. Questi sono visibili nella barra laterale della pagina.',
+ 'attachments_explain_instant_save' => 'I cambiamenti qui sono salvati istantaneamente.',
+ 'attachments_upload' => 'Carica file',
+ 'attachments_link' => 'Allega collegamento',
+ 'attachments_upload_drop' => 'In alternativa puoi trascinare un file qui per caricarlo come allegato.',
+ 'attachments_set_link' => 'Imposta collegamento',
+ 'attachments_delete' => 'Vuoi davvero eliminare questo allegato?',
+ 'attachments_dropzone' => 'Trascina qui i file da caricare',
+ 'attachments_no_files' => 'Nessun file è stato caricato',
+ 'attachments_explain_link' => 'Puoi allegare un collegamento se preferisci non caricare un file. Questo può essere un collegamento a un\'altra pagina o a un file nel cloud.',
+ 'attachments_link_name' => 'Nome collegamento',
+ 'attachment_link' => 'Collegamento allegato',
+ 'attachments_link_url' => 'Collegamento al file',
+ 'attachments_link_url_hint' => 'Url del sito o del file',
+ 'attach' => 'Allega',
+ 'attachments_insert_link' => 'Aggiungi allegato collegamento alla pagina',
+ 'attachments_edit_file' => 'Modifica file',
+ 'attachments_edit_file_name' => 'Nome file',
+ 'attachments_edit_drop_upload' => 'Trascina file qui o clicca per caricare e sovrascrivere',
+ 'attachments_order_updated' => 'Ordine allegato aggiornato',
+ 'attachments_updated_success' => 'Dettagli allegato aggiornati',
+ 'attachments_deleted' => 'Allegato eliminato',
+ 'attachments_file_uploaded' => 'File caricato correttamente',
+ 'attachments_file_updated' => 'File aggiornato correttamente',
+ 'attachments_link_attached' => 'Collegamento allegato correttamente alla pagina',
+ 'templates' => 'Modello',
+ 'templates_set_as_template' => 'La pagina è un modello',
+ 'templates_explain_set_as_template' => 'Puoi impostare questa pagina come modello in modo da utilizzare il suo contenuto quando si creano altre pagine. Gli altri utenti potranno utilizzare questo modello se avranno i permessi di visualizzazione per questa pagina.',
+ 'templates_replace_content' => 'Rimpiazza contenuto della pagina',
+ 'templates_append_content' => 'Appendi al contenuto della pagina',
+ 'templates_prepend_content' => 'Anteponi al contenuto della pagina',
+
+ // Profile View
+ 'profile_user_for_x' => 'Utente da :time',
+ 'profile_created_content' => 'Contenuti creati',
+ 'profile_not_created_pages' => ':userName non ha creato pagine',
+ 'profile_not_created_chapters' => ':userName non ha creato capitoli',
+ 'profile_not_created_books' => ':userName non ha creato libri',
+ 'profile_not_created_shelves' => ':userName non ha creato librerie',
+
+ // Comments
+ 'comment' => 'Commento',
+ 'comments' => 'Commenti',
+ 'comment_add' => 'Aggiungi commento',
+ 'comment_none' => 'Nessun commento da visualizzare',
+ 'comment_placeholder' => 'Scrivi un commento',
+ 'comment_thread_count' => ':count Commento Thread| :count Commenti Threads',
+ 'comment_archived_count' => ':count Archiviato',
+ 'comment_archived_threads' => 'Discussioni Archiviate',
+ 'comment_save' => 'Salva commento',
+ 'comment_new' => 'Nuovo commento',
+ 'comment_created' => 'ha commentato :createDiff',
+ 'comment_updated' => 'Aggiornato :updateDiff da :username',
+ 'comment_updated_indicator' => 'Aggiornato',
+ 'comment_deleted_success' => 'Commento eliminato',
+ 'comment_created_success' => 'Commento aggiunto',
+ 'comment_updated_success' => 'Commento aggiornato',
+ 'comment_archive_success' => 'Commento archiviato',
+ 'comment_unarchive_success' => 'Commento ripristinato',
+ 'comment_view' => 'Visualizza commento',
+ 'comment_jump_to_thread' => 'Vai al thread',
+ 'comment_delete_confirm' => 'Sei sicuro di voler eliminare questo commento?',
+ 'comment_in_reply_to' => 'In risposta a :commentId',
+ 'comment_reference' => 'Riferimento',
+ 'comment_reference_outdated' => '(Obsoleto)',
+ 'comment_editor_explain' => 'Ecco i commenti che sono stati lasciati in questa pagina. I commenti possono essere aggiunti e gestiti quando si visualizza la pagina salvata.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Sei sicuro di voler eliminare questa revisione?',
+ 'revision_restore_confirm' => 'Sei sicuro di voler ripristinare questa revisione? Il contenuto della pagina verrà rimpiazzato.',
+ 'revision_cannot_delete_latest' => 'Impossibile eliminare l\'ultima revisione.',
+
+ // Copy view
+ 'copy_consider' => 'Considera quanto segue quando copi il contenuto.',
+ 'copy_consider_permissions' => 'Le impostazioni dei permessi personalizzati non saranno copiate.',
+ 'copy_consider_owner' => 'Diventerai il proprietario di tutti i contenuti copiati.',
+ 'copy_consider_images' => 'I file delle immagini delle pagine non saranno duplicati e le immagini originali manterranno la loro relazione con la pagina su cui sono state originariamente caricate.',
+ 'copy_consider_attachments' => 'Gli allegati della pagina non saranno copiati.',
+ 'copy_consider_access' => 'Un cambiamento di posizione, di proprietario o di autorizzazioni potrebbe rendere questo contenuto accessibile a chi prima non aveva accesso.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Converti in libreria',
+ 'convert_to_shelf_contents_desc' => 'Puoi convertire questo libro in una nuova libreria con gli stessi contenuti. I capitoli contenuti in questo libro saranno convertiti in nuovi libri. Se il libro contiene pagine che non fanno parte di un capitolo, questo libro verrà rinominato e conterrà tali pagine e diventerà parte della nuova libreria.',
+ 'convert_to_shelf_permissions_desc' => 'Tutti i permessi impostati su questo libro saranno copiati sulla nuova libreria e su tutti i nuovi libri figli che non hanno i loro permessi applicati. Nota che i permessi delle librerie non si trasmettono automaticamente ai contenuti al loro interno, come avviene per i libri.',
+ 'convert_book' => 'Converti libro',
+ 'convert_book_confirm' => 'Sei sicuro di voler convertire questo libro?',
+ 'convert_undo_warning' => 'Questo non può essere annullato con la stessa facilità.',
+ 'convert_to_book' => 'Converti in libro',
+ 'convert_to_book_desc' => 'È possibile convertire questo capitolo in un nuovo libro con gli stessi contenuti. Tutti i permessi impostati su questo capitolo saranno copiati nel nuovo libro, ma i permessi ereditati dal libro principale non saranno copiati, il che potrebbe portare a una modifica del controllo degli accessi.',
+ 'convert_chapter' => 'Converti capitolo',
+ 'convert_chapter_confirm' => 'Sei sicuro di voler convertire questo capitolo?',
+
+ // References
+ 'references' => 'Riferimenti',
+ 'references_none' => 'Non ci sono riferimenti tracciati a questa voce.',
+ 'references_to_desc' => 'Di seguito sono elencati tutti i contenuti noti del sistema che rimandano a questo elemento.',
+
+ // Watch Options
+ 'watch' => 'Osserva',
+ 'watch_title_default' => 'Preferenze predefinite',
+ 'watch_desc_default' => 'Ripristina l\'osservazione alle tue preferenze di notifica predefinite.',
+ 'watch_title_ignore' => 'Ignora',
+ 'watch_desc_ignore' => 'Ignora tutte le notifiche, incluse quelle dalle preferenze a livello utente.',
+ 'watch_title_new' => 'Nuove pagine',
+ 'watch_desc_new' => 'Notifica quando viene creata una nuova pagina all\'interno di questo elemento.',
+ 'watch_title_updates' => 'Tutti gli aggiornamenti della pagina',
+ 'watch_desc_updates' => 'Notifica tutte le nuove pagine e le modifiche alle pagine.',
+ 'watch_desc_updates_page' => 'Notifica tutte le modifiche alla pagine.',
+ 'watch_title_comments' => 'Tutti gli aggiornamenti delle pagine e i commenti',
+ 'watch_desc_comments' => 'Notifica tutte le nuove pagine, le modifiche alle pagine e i nuovi commenti.',
+ 'watch_desc_comments_page' => 'Notifica le modifiche alla pagina e i nuovi commenti.',
+ 'watch_change_default' => 'Modifica le preferenze di notifica predefinite',
+ 'watch_detail_ignore' => 'Ignorare le notifiche',
+ 'watch_detail_new' => 'Osservare le nuove pagine',
+ 'watch_detail_updates' => 'Osservare le nuove pagine e gli aggiornamenti',
+ 'watch_detail_comments' => 'Osservare le nuove pagine, aggiornamenti e commenti',
+ 'watch_detail_parent_book' => 'Osservare tramite il libro che lo contiene',
+ 'watch_detail_parent_book_ignore' => 'Ignorare tramite il libro che lo contiene',
+ 'watch_detail_parent_chapter' => 'Osservare tramite il capitolo che lo contiene',
+ 'watch_detail_parent_chapter_ignore' => 'Ignorato tramite il capitolo che lo contiene',
+];
diff --git a/lang/it/errors.php b/lang/it/errors.php
new file mode 100644
index 00000000000..1d6c716361d
--- /dev/null
+++ b/lang/it/errors.php
@@ -0,0 +1,135 @@
+ 'Non hai il permesso di accedere alla pagina richiesta.',
+ 'permissionJson' => 'Non hai il permesso di eseguire l\'azione richiesta.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Un utente con la mail :email esiste già ma con credenziali differenti.',
+ 'auth_pre_register_theme_prevention' => 'Non è stato possibile registrare l\'account utente coi dettagli forniti',
+ 'email_already_confirmed' => 'La mail è già stata confermata, esegui il login.',
+ 'email_confirmation_invalid' => 'Questo token di conferma non è valido o già stato utilizzato, registrati nuovamente.',
+ 'email_confirmation_expired' => 'Il token di conferma è scaduto, è stata inviata una nuova mail di conferma.',
+ 'email_confirmation_awaiting' => 'L\'indirizzo email per l\'account in uso deve essere confermato',
+ 'ldap_fail_anonymous' => 'Accesso LDAP fallito usando bind anonimo',
+ 'ldap_fail_authed' => 'Accesso LDAP fallito usando il dn e la password inseriti',
+ 'ldap_extension_not_installed' => 'L\'estensione PHP LDAP non è installata',
+ 'ldap_cannot_connect' => 'Impossibile connettersi al server ldap, connessione iniziale fallita',
+ 'saml_already_logged_in' => 'Già loggato',
+ 'saml_no_email_address' => 'Impossibile trovare un indirizzo email per questo utente nei dati forniti dal sistema di autenticazione esterno',
+ 'saml_invalid_response_id' => 'La richiesta dal sistema di autenticazione esterno non è riconosciuta da un processo iniziato da questa applicazione. Tornare indietro dopo un login potrebbe causare questo problema.',
+ 'saml_fail_authed' => 'Accesso con :system non riuscito, il sistema non ha fornito l\'autorizzazione corretta',
+ 'oidc_already_logged_in' => 'Hai già effettuato il login',
+ 'oidc_no_email_address' => 'Impossibile trovare un indirizzo email, per questo utente, nei dati forniti dal sistema di autenticazione esterno',
+ 'oidc_fail_authed' => 'Accesso con :system non riuscito, il sistema non ha fornito l\'autorizzazione',
+ 'social_no_action_defined' => 'Nessuna azione definita',
+ 'social_login_bad_response' => "Ricevuto errore durante il login con :socialAccount : \n:error",
+ 'social_account_in_use' => 'Questo account :socialAccount è già utilizzato, prova a loggarti usando l\'opzione :socialAccount.',
+ 'social_account_email_in_use' => 'La mail :email è già in uso. Se hai già un account puoi connettere il tuo account :socialAccount dalle impostazioni del tuo profilo.',
+ 'social_account_existing' => 'Questo account :socialAccount è già connesso al tuo profilo.',
+ 'social_account_already_used_existing' => 'Questo account :socialAccount è già utilizzato da un altro utente.',
+ 'social_account_not_used' => 'Questo account :socialAccount non è collegato a nessun utente. Collegalo nelle impostazioni del profilo. ',
+ 'social_account_register_instructions' => 'Se non hai ancora un account, puoi registrarti usando l\'opzione :socialAccount.',
+ 'social_driver_not_found' => 'Driver social non trovato',
+ 'social_driver_not_configured' => 'Le impostazioni di :socialAccount non sono configurate correttamente.',
+ 'invite_token_expired' => 'Il link di invito è scaduto. Puoi provare a resettare la password del tuo account.',
+ 'login_user_not_found' => 'Impossibile trovare un utente per questa azione.',
+
+ // System
+ 'path_not_writable' => 'Il percorso :filePath non è scrivibile. Controlla che abbia i permessi corretti.',
+ 'cannot_get_image_from_url' => 'Impossibile scaricare immagine da :url',
+ 'cannot_create_thumbs' => 'Il server non può creare miniature. Controlla che l\'estensione GD sia installata.',
+ 'server_upload_limit' => 'Il server non permette un upload di questa grandezza. Prova con un file più piccolo.',
+ 'server_post_limit' => 'Il server non può ricevere la quantità di dati fornita. Riprovare con meno dati o con un file più piccolo.',
+ 'uploaded' => 'Il server non consente upload di questa grandezza. Prova un file più piccolo.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Si è verificato un errore nel caricamento dell\'immagine',
+ 'image_upload_type_error' => 'Il tipo di immagine caricata non è valido',
+ 'image_upload_replace_type' => 'Le sostituzioni di file immagine devono essere dello stesso tipo',
+ 'image_upload_memory_limit' => 'Impossibile gestire il caricamento d\'immagini e/o creare miniature a causa dei limiti delle risorse di sistema.',
+ 'image_thumbnail_memory_limit' => 'Impossibile creare variazioni delle dimensioni dell\'immagine a causa dei limiti delle risorse di sistema.',
+ 'image_gallery_thumbnail_memory_limit' => 'Impossibile creare le miniature della galleria a causa dei limiti delle risorse di sistema.',
+ 'drawing_data_not_found' => 'Non è stato possibile caricare i dati del disegno. È possibile che il file del disegno non esista più o che non si abbia il permesso di accedervi.',
+
+ // Attachments
+ 'attachment_not_found' => 'Allegato non trovato',
+ 'attachment_upload_error' => 'Si è verificato un errore durante il caricamento del file allegato',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Impossibile salvare la bozza. Controlla di essere connesso ad internet prima di salvare questa pagina',
+ 'page_draft_delete_fail' => 'Impossibile eliminare la bozza di pagina e recuperare i contenuti salvati nella pagina corrente',
+ 'page_custom_home_deletion' => 'Impossibile eliminare una pagina quando è impostata come homepage',
+
+ // Entities
+ 'entity_not_found' => 'Entità non trovata',
+ 'bookshelf_not_found' => 'Libreria non trovata',
+ 'book_not_found' => 'Libro non trovato',
+ 'page_not_found' => 'Pagina non trovata',
+ 'chapter_not_found' => 'Capitolo non trovato',
+ 'selected_book_not_found' => 'Il libro selezionato non è stato trovato',
+ 'selected_book_chapter_not_found' => 'Il libro o il capitolo selezionati non sono stati trovati',
+ 'guests_cannot_save_drafts' => 'Gli ospiti non possono salvare bozze',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Non puoi eliminare l\'unico admin',
+ 'users_cannot_delete_guest' => 'Non puoi eliminare l\'utente ospite',
+ 'users_could_not_send_invite' => 'Impossibile creare l\'utente poiché l\'invio dell\'email di invito non è riuscito',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Questo ruolo non può essere modificato',
+ 'role_system_cannot_be_deleted' => 'Questo ruolo è di sistema e non può essere eliminato',
+ 'role_registration_default_cannot_delete' => 'Questo ruolo non può essere eliminato finchè è impostato come ruolo di registrazione predefinito',
+ 'role_cannot_remove_only_admin' => 'Questo utente è l\'unico con assegnato il ruolo di amministratore. Assegna il ruolo di amministratore ad un altro utente prima di rimuoverlo.',
+
+ // Comments
+ 'comment_list' => 'Si è verificato un errore durante il recupero dei commenti.',
+ 'cannot_add_comment_to_draft' => 'Non puoi aggiungere commenti a una bozza.',
+ 'comment_add' => 'Si è verificato un errore durante l\'aggiunta / l\'aggiornamento del commento.',
+ 'comment_delete' => 'Si è verificato un errore durante l’eliminazione del commento.',
+ 'empty_comment' => 'Impossibile aggiungere un commento vuoto.',
+
+ // Error pages
+ '404_page_not_found' => 'Pagina non trovata',
+ 'sorry_page_not_found' => 'Siamo spiacenti, 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' => 'Immagine non trovata',
+ 'image_not_found_subtitle' => 'Spiacente, l\'immagine che stai cercando non è stata trovata.',
+ 'image_not_found_details' => 'Se pensi che questa immagine possa esistere, potrebbe essere stata cancellata.',
+ 'return_home' => 'Ritorna alla home',
+ 'error_occurred' => 'Si è verificato un errore',
+ 'app_down' => ':appName è offline al momento',
+ 'back_soon' => 'Tornerà presto online.',
+
+ // Import
+ 'import_zip_cant_read' => 'Impossibile leggere il file ZIP.',
+ 'import_zip_cant_decode_data' => 'Impossibile trovare e decodificare il contenuto ZIP data.json.',
+ 'import_zip_no_data' => 'I dati del file ZIP non hanno il contenuto previsto di libri, capitoli o pagine.',
+ 'import_zip_data_too_large' => 'Il contenuto ZIP data.json supera la dimensione massima di upload configurata nell\'applicazione.',
+ 'import_validation_failed' => 'L\'importazione ZIP non è stata convalidata con errori:',
+ 'import_zip_failed_notification' => 'Impossibile importare il file ZIP.',
+ 'import_perms_books' => 'Non hai i permessi necessari per creare libri.',
+ 'import_perms_chapters' => 'Non hai i permessi necessari per creare capitoli.',
+ 'import_perms_pages' => 'Non hai i permessi necessari per creare pagine.',
+ 'import_perms_images' => 'Non hai i permessi necessari per creare immagini.',
+ 'import_perms_attachments' => 'Non hai il permesso necessario per creare allegati.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Nessun token di autorizzazione trovato nella richiesta',
+ 'api_bad_authorization_format' => 'Un token di autorizzazione è stato trovato nella richiesta, ma il formato sembra non corretto',
+ 'api_user_token_not_found' => 'Nessun token API valido è stato trovato nel token di autorizzazione fornito',
+ 'api_incorrect_token_secret' => 'Il token segreto fornito per il token API utilizzato non è corretto',
+ 'api_user_no_api_permission' => 'Il proprietario del token API utilizzato non ha il permesso di effettuare chiamate API',
+ 'api_user_token_expired' => 'Il token di autorizzazione utilizzato è scaduto',
+ 'api_cookie_auth_only_get' => 'Solo le richieste GET sono consentite quando si utilizza l\'API con autenticazione basata sui cookie',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Si è verificato un errore durante l\'invio di una e-mail di prova:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'L\'URL non corrisponde agli host SSR configurati',
+];
diff --git a/lang/it/notifications.php b/lang/it/notifications.php
new file mode 100644
index 00000000000..a8b23f1a719
--- /dev/null
+++ b/lang/it/notifications.php
@@ -0,0 +1,29 @@
+ 'Nuovo commento sulla pagina: :pageName',
+ 'new_comment_intro' => 'Un utente ha commentato una pagina in :appName:',
+ 'new_page_subject' => 'Nuova pagina: :pageName',
+ 'new_page_intro' => 'Una nuova pagina è stata creata in :appName:',
+ 'updated_page_subject' => 'Pagina aggiornata: :pageName',
+ 'updated_page_intro' => 'Una pagina è stata aggiornata in :appName:',
+ 'updated_page_debounce' => 'Per evitare una massa di notifiche, per un po\' non ti verranno inviate notifiche per ulteriori modifiche a questa pagina dallo stesso editor.',
+ 'comment_mention_subject' => 'Sei stato menzionato in un commento nella pagina: :pageName',
+ 'comment_mention_intro' => 'Sei stato menzionato in un commento su :appName:',
+
+ 'detail_page_name' => 'Nome della pagina:',
+ 'detail_page_path' => 'Percorso della pagina:',
+ 'detail_commenter' => 'Commentatore:',
+ 'detail_comment' => 'Commento:',
+ 'detail_created_by' => 'Creato da:',
+ 'detail_updated_by' => 'Aggiornato da:',
+
+ 'action_view_comment' => 'Vedi commento',
+ 'action_view_page' => 'Vedi pagina',
+
+ 'footer_reason' => 'Questa notifica è stata inviata perché :link copre questo tipo di attività per questo elemento.',
+ 'footer_reason_link' => 'le tue preferenze di notifica',
+];
diff --git a/resources/lang/it/pagination.php b/lang/it/pagination.php
old mode 100755
new mode 100644
similarity index 100%
rename from resources/lang/it/pagination.php
rename to lang/it/pagination.php
diff --git a/lang/it/passwords.php b/lang/it/passwords.php
new file mode 100644
index 00000000000..ac46ca06f15
--- /dev/null
+++ b/lang/it/passwords.php
@@ -0,0 +1,15 @@
+ 'La password deve avere almeno otto caratteri e corrispondere alla conferma.',
+ 'user' => "Nessun utente trovato per quella mail.",
+ 'token' => 'Il token per reimpostare la password non è valido per questo indirizzo email.',
+ 'sent' => 'Ti abbiamo inviato via mail il link per reimpostare la password!',
+ 'reset' => 'La tua password è stata reimpostata!',
+
+];
diff --git a/lang/it/preferences.php b/lang/it/preferences.php
new file mode 100644
index 00000000000..ee52e1d200e
--- /dev/null
+++ b/lang/it/preferences.php
@@ -0,0 +1,52 @@
+ 'Il mio account',
+
+ 'shortcuts' => 'Scorciatoie',
+ 'shortcuts_interface' => 'Preferenze di scelta rapida dell\'Interfaccia Utente',
+ 'shortcuts_toggle_desc' => 'Qui puoi abilitare o disabilitare le scorciatoie dell\'interfaccia di sistema da tastiera, utilizzate per la navigazione e le azioni.',
+ 'shortcuts_customize_desc' => 'È possibile personalizzare ciascuna delle scorciatoie riportate di seguito. È sufficiente premere la combinazione di tasti desiderata dopo aver selezionato l\'input per una scorciatoia.',
+ 'shortcuts_toggle_label' => 'Scorciatoie da tastiera attivate',
+ 'shortcuts_section_navigation' => 'Navigazione',
+ 'shortcuts_section_actions' => 'Azioni comuni',
+ 'shortcuts_save' => 'Salva scorciatoie',
+ 'shortcuts_overlay_desc' => 'Nota: quando le scorciatoie sono abilitate, premendo "?" è possibile visualizzare le scorciatoie disponibili per le azioni attualmente visibili sullo schermo.',
+ 'shortcuts_update_success' => 'Le preferenze delle scorciatoie sono state aggiornate!',
+ 'shortcuts_overview_desc' => 'Gestisci le scorciatoie da tastiera che puoi usare per navigare nell\'interfaccia utente di sistema.',
+
+ 'notifications' => 'Preferenze notifiche',
+ 'notifications_desc' => 'Controlla le notifiche email che ricevi quando viene eseguita una determinata attività all\'interno del sistema.',
+ 'notifications_opt_own_page_changes' => 'Notifica in caso di modifiche alle pagine che possiedo',
+ 'notifications_opt_own_page_comments' => 'Notifica i commenti sulle pagine che possiedo',
+ 'notifications_opt_comment_mentions' => 'Avvisami quando vengo menzionato in un commento',
+ 'notifications_opt_comment_replies' => 'Notificare le risposte ai miei commenti',
+ 'notifications_save' => 'Salva preferenze',
+ 'notifications_update_success' => 'Le preferenze di notifica sono state aggiornate!',
+ 'notifications_watched' => 'Oggetti osservati e ignorati',
+ 'notifications_watched_desc' => 'Di seguito sono riportati gli elementi a cui sono state applicate le preferenze di monitoraggio personalizzate. Per aggiornare le preferenze, visualizza l\'elemento e usa le opzioni di monitoraggio nella barra laterale.',
+
+ 'auth' => 'Accesso e sicurezza',
+ 'auth_change_password' => 'Modifica password',
+ 'auth_change_password_desc' => 'Modifica la password che usi per accedere all\'applicazione. Deve essere lunga almeno 8 caratteri.',
+ 'auth_change_password_success' => 'La password è stata aggiornata!',
+
+ 'profile' => 'Dettagli del profilo',
+ 'profile_desc' => 'Gestisci i dettagli dell\'account che ti rappresenta agli altri utenti, oltre ai dettagli utilizzati per la comunicazione e la personalizzazione del sistema.',
+ 'profile_view_public' => 'Visualizza profilo pubblico',
+ 'profile_name_desc' => 'Configura il tuo nome visualizzato che sarà visibile ad altri utenti del sistema attraverso l\'attività che esegui e il contenuto che possiedi.',
+ 'profile_email_desc' => 'Questa email verrà utilizzata per le notifiche e, a seconda dell\'autenticazione al sistema attiva, per l\'accesso al sistema.',
+ 'profile_email_no_permission' => 'Purtroppo non hai il permesso di modificare il tuo indirizzo email. Se vuoi modificarlo, devi chiedere a un amministratore di farlo per te.',
+ 'profile_avatar_desc' => 'Seleziona un\'immagine che verrà usata per rappresentarti agli altri utenti del sistema. Idealmente questa immagine dovrebbe essere quadrata e di circa 256px in larghezza e altezza.',
+ 'profile_admin_options' => 'Opzioni amministratore',
+ 'profile_admin_options_desc' => 'Ulteriori opzioni di livello amministrativo, come quelle per gestire le assegnazioni dei ruoli, possono essere trovate per il tuo account utente nell\'area "Impostazioni > Utenti".',
+
+ 'delete_account' => 'Elimina account',
+ 'delete_my_account' => 'Elimina il mio account',
+ 'delete_my_account_desc' => 'Questa azione eliminerà completamente il tuo account utente dal sistema. Non sarai in grado di recuperare l\'account né di annullare questa azione. Il contenuto che hai creato, come le pagine create e le immagini caricate, rimarrà nel sistema.',
+ 'delete_my_account_warning' => 'Sei sicuro di voler eliminare il tuo account?',
+];
diff --git a/lang/it/settings.php b/lang/it/settings.php
new file mode 100644
index 00000000000..2b5819b2aa7
--- /dev/null
+++ b/lang/it/settings.php
@@ -0,0 +1,374 @@
+ 'Impostazioni',
+ 'settings_save' => 'Salva impostazioni',
+ 'system_version' => 'Versione del sistema',
+ 'categories' => 'Categorie',
+
+ // App Settings
+ 'app_customization' => 'Personalizzazione',
+ 'app_features_security' => 'Funzioni e sicurezza',
+ 'app_name' => 'Nome applicazione',
+ 'app_name_desc' => 'Questo nome è mostrato nell\'intestazione e in tutte le email inviate dal sistema.',
+ 'app_name_header' => 'Mostra il nome nell\'header',
+ 'app_public_access' => 'Accesso pubblico',
+ 'app_public_access_desc' => 'Abilitando questa opzione, i visitatori, che non sono loggati, potranno accedere ai contenuti nella tua istanza BookStack.',
+ 'app_public_access_desc_guest' => 'L\'accesso ai visitatori pubblici può essere controllato attraverso l\'utente "Guest".',
+ 'app_public_access_toggle' => 'Permetti accesso pubblico',
+ 'app_public_viewing' => 'Consentire la visione pubblica?',
+ 'app_secure_images' => 'Sicurezza aggiuntiva per le immagini caricate',
+ 'app_secure_images_toggle' => 'Abilita sicurezza aggiuntiva per le immagini caricate',
+ 'app_secure_images_desc' => 'Per ragioni di prestazioni, tutte le immagini sono pubbliche. Questa opzione aggiunge una stringa casuale, difficile da indovinare, davanti agli url delle immagini. Assicurati che l\'indicizzazione delle cartelle non sia abilitato per prevenire un accesso semplice.',
+ 'app_default_editor' => 'Editor di pagina predefinito',
+ 'app_default_editor_desc' => 'Seleziona quale editor sarà usato per impostazione predefinita quando modifichi nuove pagine. Questa impostazione potrà essere sovrascritta a livello di pagina dove i permessi lo consentono.',
+ 'app_custom_html' => 'Contenuto Head HTML personalizzato',
+ 'app_custom_html_desc' => 'Qualsiasi contenuto aggiunto qui verrà inserito alla fine della sezione di tutte le pagine. Questo è utile per sovrascrivere lo stile o aggiungere il codice per gli analytics.',
+ 'app_custom_html_disabled_notice' => 'Il contenuto Head HTML personalizzato è disabilitato su questa pagina delle impostazioni per garantire che eventuali modifiche distruttive possano essere annullate.',
+ 'app_logo' => 'Logo applicazione',
+ 'app_logo_desc' => 'Viene utilizzata nella barra di intestazione dell\'applicazione, tra le altre aree. L\'immagine deve avere un\'altezza di 86px. Le immagini più grandi saranno ridimensionate.',
+ 'app_icon' => 'Icona applicazione',
+ 'app_icon_desc' => 'Questa icona viene utilizzata per le schede del browser e per le icone di collegamento. Deve essere un\'immagine PNG quadrata di 256px.',
+ 'app_homepage' => 'Homepage applicazione',
+ 'app_homepage_desc' => 'Seleziona una pagina da mostrare nella home anzichè quella di default. I permessi della pagina sono ignorati per le pagine selezionate.',
+ 'app_homepage_select' => 'Seleziona una pagina',
+ 'app_footer_links' => 'Link a piè di pagina',
+ 'app_footer_links_desc' => 'Aggiungi link da mostrare in basso nel sito. Questi saranno visibili in fondo alla maggior parte delle pagine, incluse quelle che non richiedono un autenticazione. Puoi usare l\'etichetta "trans::" per utilizzare le traduzioni implementate nella piattaforma. Esempio: usando "trans::common.privacy_policy" mostrerà il testo tradotto "Norme sulla privacy" e "trans::common.terms_of_service" mostrerà il testo tradotto "Condizioni del Servizio".',
+ 'app_footer_links_label' => 'Etichetta del link',
+ 'app_footer_links_url' => 'URL del link',
+ 'app_footer_links_add' => 'Aggiungi link in basso',
+ 'app_disable_comments' => 'Disabilita commenti',
+ 'app_disable_comments_toggle' => 'Disabilita i commenti',
+ 'app_disable_comments_desc' => 'Disabilita i commenti su tutte le pagine dell\'applicazione. I commenti esistenti non sono mostrati.',
+
+ // Color settings
+ 'color_scheme' => 'Schema di colore dell\'applicazione',
+ 'color_scheme_desc' => 'Imposta i colori da utilizzare nell\'interfaccia utente dell\'applicazione. I colori possono essere configurati separatamente per le modalità scura e chiara, per adattarsi al meglio al tema e garantire la leggibilità.',
+ 'ui_colors_desc' => 'Imposta il colore primario dell\'applicazione e il colore predefinito dei collegamenti. Il colore primario è utilizzato principalmente per il banner dell\'intestazione, i pulsanti e le decorazioni dell\'interfaccia. Il colore predefinito dei collegamenti viene utilizzato per i collegamenti e le azioni basate sul testo, sia all\'interno dei contenuti scritti che nell\'interfaccia dell\'applicazione.',
+ 'app_color' => 'Colore principale',
+ 'link_color' => 'Colore preferito del link',
+ 'content_colors_desc' => 'Impostare i colori per tutti gli elementi nella gerarchia dell\'organizzazione della pagina. Si consiglia di scegliere colori con una luminosità simile a quella dei colori predefiniti per garantire la leggibilità.',
+ 'bookshelf_color' => 'Colore della libreria',
+ 'book_color' => 'Colore del libro',
+ 'chapter_color' => 'Colore del capitolo',
+ 'page_color' => 'Colore della pagina',
+ 'page_draft_color' => 'Colore della bozza',
+
+ // Registration Settings
+ 'reg_settings' => 'Impostazioni registrazione',
+ 'reg_enable' => 'Abilita registrazione',
+ 'reg_enable_toggle' => 'Abilita registrazione',
+ 'reg_enable_desc' => 'Quando la registrazione è abilitata, l\utente sarà in grado di registrarsi autonomamente all\'applicazione. Al momento della registrazione gli verrà associato un ruolo utente predefinito.',
+ 'reg_default_role' => 'Ruolo predefinito dopo la registrazione',
+ 'reg_enable_external_warning' => 'L\'opzione precedente viene ignorata se l\'autenticazione esterna tramite LDAP o SAML è attiva. Se l\'autenticazione (effettuata sul sistema esterno) sarà valida, gli account di eventuali membri non registrati saranno creati in automatico.',
+ 'reg_email_confirmation' => 'Conferma Email',
+ 'reg_email_confirmation_toggle' => 'Richiedi conferma email',
+ 'reg_confirm_email_desc' => 'Se la restrizione per dominio è usata la conferma della mail sarà richiesta e la scelta ignorata.',
+ 'reg_confirm_restrict_domain' => 'Restringi la registrazione al dominio',
+ 'reg_confirm_restrict_domain_desc' => 'Inserisci una lista separata da virgola di domini di email a cui vorresti restringere la registrazione. Agli utenti verrà inviata una mail per confermare il loro indirizzo prima che possano interagire con l\'applicazione. Nota che gli utenti saranno in grado di cambiare il loro indirizzo dopo aver completato la registrazione.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Nessuna restrizione impostata',
+
+ // Sorting Settings
+ 'sorting' => 'Elenchi E Ordinamento',
+ 'sorting_book_default' => 'Regola Di Ordinamento Libro Predefinita',
+ 'sorting_book_default_desc' => 'Selezionare la regola di ordinamento predefinita da applicare ai nuovi libri. Questa regola non influisce sui libri esistenti e può essere modificata per ogni libro.',
+ 'sorting_rules' => 'Regole di ordinamento',
+ 'sorting_rules_desc' => 'Si tratta di operazioni di ordinamento predefinite applicabili ai contenuti del sistema.',
+ 'sort_rule_assigned_to_x_books' => 'Assegnato a :count Book|Assegnato a :count Books',
+ 'sort_rule_create' => 'Crea Regola Di Ordinamento',
+ 'sort_rule_edit' => 'Modifica Regola di Ordinamento',
+ 'sort_rule_delete' => 'Elimina Regola di Ordinamento',
+ 'sort_rule_delete_desc' => 'Rimuove questa regola di ordinamento dal sistema. I libri che usano questo ordinamento torneranno all\'ordinamento manuale.',
+ 'sort_rule_delete_warn_books' => 'Questa regola di ordinamento è attualmente utilizzata su :count book(s). Sei sicuro di volerla eliminare?',
+ 'sort_rule_delete_warn_default' => 'Questa regola di ordinamento è attualmente utilizzata come predefinita per i libri. Sei sicuro di volerla eliminare?',
+ 'sort_rule_details' => 'Dettagli della regola di ordinamento',
+ 'sort_rule_details_desc' => 'Imposta un nome per questa regola di ordinamento, apparirà nelle liste quando gli utenti selezionano un ordinamento.',
+ 'sort_rule_operations' => 'Operazioni di ordinamento',
+ 'sort_rule_operations_desc' => 'Configurare le azioni di ordinamento da eseguire spostandole dall\'elenco delle operazioni disponibili. Al momento dell\'utilizzo, le operazioni saranno applicate in ordine, dall\'alto verso il basso. Le modifiche apportate qui saranno applicate a tutti i libri assegnati al momento del salvataggio.',
+ 'sort_rule_available_operations' => 'Operazioni Disponibili',
+ 'sort_rule_available_operations_empty' => 'Nessuna operazione rimanente',
+ 'sort_rule_configured_operations' => 'Operazioni Configurate',
+ 'sort_rule_configured_operations_empty' => 'Trascinare/aggiungere le operazioni dall\'elenco “Operazioni disponibili”',
+ 'sort_rule_op_asc' => '(Ascendente)',
+ 'sort_rule_op_desc' => '(Discendente)',
+ 'sort_rule_op_name' => 'Nome - Alfabetico',
+ 'sort_rule_op_name_numeric' => 'Name - Numerico',
+ 'sort_rule_op_created_date' => 'Data di creazione',
+ 'sort_rule_op_updated_date' => 'Data di aggiornamento',
+ 'sort_rule_op_chapters_first' => 'Capitoli Prima',
+ 'sort_rule_op_chapters_last' => 'Capitoli dopo',
+ 'sorting_page_limits' => 'Limiti Visualizzazione Per Pagina',
+ 'sorting_page_limits_desc' => 'Imposta il numero di elementi da visualizzare per pagina nei vari elenchi del sistema. In genere, un numero inferiore garantisce prestazioni migliori, mentre un numero maggiore evita di dover sfogliare più pagine. Si consiglia di utilizzare un multiplo di 6.',
+
+ // Maintenance settings
+ 'maint' => 'Manutenzione',
+ 'maint_image_cleanup' => 'Pulizia immagini',
+ 'maint_image_cleanup_desc' => 'Esegue la scansione del contenuto delle pagine e delle revisioni per verificare quali immagini e disegni sono attualmente in uso e quali immagini sono ridondanti. Assicurati di creare un backup completo del database e delle immagini prima di eseguire la pulizia.',
+ 'maint_delete_images_only_in_revisions' => 'Elimina anche le immagini che esistono solo nelle vecchie revisioni della pagina',
+ 'maint_image_cleanup_run' => 'Esegui pulizia',
+ 'maint_image_cleanup_warning' => 'Sono state trovate :count immagini potenzialmente inutilizzate. Sei sicuro di voler eliminare queste immagini?',
+ 'maint_image_cleanup_success' => ':count immagini potenzialmente inutilizzate trovate e eliminate!',
+ 'maint_image_cleanup_nothing_found' => 'Nessuna immagine non utilizzata trovata, non è stato cancellato nulla!',
+ 'maint_send_test_email' => 'Invia un\'email di test',
+ 'maint_send_test_email_desc' => 'Questo comando invia un\'email di prova al tuo indirizzo email specificato nel tuo profilo.',
+ 'maint_send_test_email_run' => 'Invia email di test',
+ 'maint_send_test_email_success' => 'Email inviata a :address',
+ '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' => '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',
+ 'maint_regen_references' => 'Rigenera riferimenti',
+ 'maint_regen_references_desc' => 'Questa azione ricostruirà l\'indice dei riferimenti incrociati all\'interno del database. Di solito questa operazione è gestita automaticamente, ma può essere utile per indicizzare contenuti vecchi o aggiunti con metodi non ufficiali.',
+ 'maint_regen_references_success' => 'L\'indice di riferimento è stato rigenerato!',
+ 'maint_timeout_command_note' => 'Nota: Questa azione può richiedere del tempo per essere eseguita e può causare problemi di timeout in alcuni ambienti web. In alternativa, questa azione può essere eseguita usando un comando da terminale.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Cestino',
+ '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' => 'Elemento eliminato',
+ 'recycle_bin_deleted_parent' => 'Superiore',
+ 'recycle_bin_deleted_by' => 'Cancellato da',
+ 'recycle_bin_deleted_at' => 'Orario Cancellazione',
+ 'recycle_bin_permanently_delete' => 'Elimina definitivamente',
+ 'recycle_bin_restore' => 'Ripristina',
+ 'recycle_bin_contents_empty' => 'Al momento il cestino è vuoto',
+ 'recycle_bin_empty' => 'Svuota Cestino',
+ 'recycle_bin_empty_confirm' => 'Questa operazione cancellerà definitivamente tutti gli elementi presenti nel cestino, inclusi i contenuti relativi a ciascun elemento. Sei sicuro di voler svuotare il cestino?',
+ 'recycle_bin_destroy_confirm' => 'Questa azione eliminerà definitivamente questo elemento dal sistema, insieme a qualsiasi elemento figlio elencato di seguito, e non sarai in grado di ripristinare questo contenuto. Sei sicuro di voler eliminare definitivamente questo elemento?',
+ 'recycle_bin_destroy_list' => 'Elementi da eliminare definitivamente',
+ 'recycle_bin_restore_list' => 'Elementi da ripristinare',
+ '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_restore_parent' => 'Ripristina Superiore',
+ 'recycle_bin_destroy_notification' => 'Eliminati :count elementi dal cestino.',
+ 'recycle_bin_restore_notification' => 'Ripristinati :count elementi dal cestino.',
+
+ // Audit Log
+ 'audit' => 'Registro di Controllo',
+ 'audit_desc' => 'Questo registro di controllo mostra la lista delle attività registrate dal sistema. Questa lista, a differenza di altre liste del sistema a cui vengono applicate dei filtri, è integrale.',
+ 'audit_event_filter' => 'Filtro eventi',
+ 'audit_event_filter_no_filter' => 'Nessun filtro',
+ 'audit_deleted_item' => 'Elemento eliminato',
+ 'audit_deleted_item_name' => 'Nome: :name',
+ 'audit_table_user' => 'Utente',
+ 'audit_table_event' => 'Evento',
+ 'audit_table_related' => 'Elemento o dettaglio correlato',
+ 'audit_table_ip' => 'Indirizzo IP',
+ 'audit_table_date' => 'Data attività',
+ 'audit_date_from' => 'Dalla data',
+ 'audit_date_to' => 'Alla data',
+
+ // Role Settings
+ 'roles' => 'Ruoli',
+ 'role_user_roles' => 'Ruoli Utente',
+ 'roles_index_desc' => 'I ruoli sono utilizzati per raggruppare gli utenti e fornire ai loro membri i permessi di sistema. Quando un utente è membro di più ruoli, i privilegi concessi si sovrappongono e l\'utente eredita tutte le abilità.',
+ 'roles_x_users_assigned' => ':count utente assegnato|:count utenti assegnati',
+ 'roles_x_permissions_provided' => ':count permesso|:count permessi',
+ 'roles_assigned_users' => 'Utenti assegnati',
+ 'roles_permissions_provided' => 'Autorizzazioni fornite',
+ 'role_create' => 'Crea nuovo ruolo',
+ 'role_delete' => 'Elimina ruolo',
+ 'role_delete_confirm' => 'Questo eliminerà il ruolo con il nome \':roleName\'.',
+ 'role_delete_users_assigned' => 'Questo ruolo ha :userCount utenti assegnati. Se vuoi migrare gli utenti da questo ruolo selezionane uno nuovo sotto.',
+ 'role_delete_no_migration' => "Non migrare gli utenti",
+ 'role_delete_sure' => 'Sei sicuro di voler eliminare questo ruolo?',
+ 'role_edit' => 'Modifica ruolo',
+ 'role_details' => 'Dettagli ruolo',
+ 'role_name' => 'Nome ruolo',
+ 'role_desc' => 'Breve descrizione del ruolo',
+ 'role_mfa_enforced' => 'Richiesta autenticazione multi-fattore',
+ 'role_external_auth_id' => 'ID autenticazione esterna',
+ 'role_system' => 'Permessi di sistema',
+ 'role_manage_users' => 'Gestire gli utenti',
+ 'role_manage_roles' => 'Gestire ruoli e permessi di ruoli',
+ 'role_manage_entity_permissions' => 'Gestire tutti i permessi di libri, capitoli e pagine',
+ 'role_manage_own_entity_permissions' => 'Gestire i permessi sui propri libri, capitoli e pagine',
+ 'role_manage_page_templates' => 'Gestire modelli di pagina',
+ 'role_access_api' => 'Accedere alle API di sistema',
+ 'role_manage_settings' => 'Gestire impostazioni app',
+ 'role_export_content' => 'Esportare contenuto',
+ 'role_import_content' => 'Importa contenuto',
+ 'role_editor_change' => 'Cambiare editor di pagina',
+ 'role_notifications' => 'Ricevere e gestire le notifiche',
+ 'role_permission_note_users_and_roles' => 'Queste autorizzazioni forniranno tecnicamente anche la visibilità e la ricerca di utenti e ruoli nel sistema.',
+ 'role_asset' => 'Permessi entità',
+ '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 predefinito alle entità. I permessi in 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_asset_image_view_note' => 'Questo si riferisce alla visibilità all\'interno del gestore delle immagini. L\'accesso effettivo ai file di immagine caricati dipenderà dall\'opzione di archiviazione delle immagini di sistema.',
+ 'role_asset_users_note' => 'Queste autorizzazioni forniranno tecnicamente anche la visibilità e la ricerca di utenti nel sistema.',
+ 'role_all' => 'Tutti',
+ 'role_own' => 'Propri',
+ 'role_controlled_by_asset' => 'Controllato dall\'entità in cui sono caricati',
+ 'role_save' => 'Salva ruolo',
+ 'role_users' => 'Utenti in questo ruolo',
+ 'role_users_none' => 'Nessun utente assegnato a questo ruolo',
+
+ // Users
+ 'users' => 'Utenti',
+ 'users_index_desc' => 'Crea e gestisci account utente individuali all\'interno del sistema. Gli account utente sono utilizzati per il login e l\'attribuzione di contenuti e attività. Le autorizzazioni di accesso sono principalmente basate sui ruoli, ma la proprietà dei contenuti dell\'utente, insieme ad altri fattori, può influenzare le autorizzazioni e l\'accesso.',
+ 'user_profile' => 'Profilo utente',
+ 'users_add_new' => 'Aggiungi Nuovo Utente',
+ 'users_search' => 'Cerca utenti',
+ 'users_latest_activity' => 'Ultima attività',
+ 'users_details' => 'Dettagli utente',
+ 'users_details_desc' => 'Imposta un nome e un indirizzo email per questo utente. L\'indirizzo email verrà utilizzato per accedere all\'applicazione.',
+ 'users_details_desc_no_email' => 'Imposta un nome per questo utente così gli altri possono riconoscerlo.',
+ 'users_role' => 'Ruoli utente',
+ 'users_role_desc' => 'Seleziona a quali ruoli verrà assegnato questo utente. Se un utente è assegnato a più ruoli riceverà tutte le abilità dei ruoli assegnati.',
+ 'users_password' => 'Password utente',
+ 'users_password_desc' => 'Imposta una password usata per accedere all\'applicazione. Deve essere lunga almeno 8 caratteri.',
+ 'users_send_invite_text' => 'Puoi scegliere di inviare a questo utente un\'email di invito che permette loro di impostare la propria password altrimenti puoi impostare la password tu stesso.',
+ 'users_send_invite_option' => 'Invia email di invito',
+ 'users_external_auth_id' => 'ID autenticazione esterna',
+ 'users_external_auth_id_desc' => 'Quando è in uso un sistema di autenticazione esterno (come SAML2, OIDC o LDAP) questo è l\'ID che collega questo utente BookStack all\'account del sistema di autenticazione. È possibile ignorare questo campo se si utilizza l\'autenticazione predefinita basata su email.',
+ 'users_password_warning' => 'Compila la parte sottostante solo se desideri cambiare la password per questo utente.',
+ 'users_system_public' => 'Questo utente rappresente qualsiasi ospite che visita il sito. Non può essere usato per effettuare il login ma è assegnato automaticamente.',
+ 'users_delete' => 'Elimina utente',
+ 'users_delete_named' => 'Elimina l\'utente :userName',
+ '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' => '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_edit' => 'Modifica utente',
+ 'users_edit_profile' => 'Modifica profilo',
+ 'users_avatar' => 'Avatar utente',
+ 'users_avatar_desc' => 'Quest\'immagine dovrebbe essere quadrata e alta circa 256px.',
+ 'users_preferred_language' => 'Lingua preferita',
+ 'users_preferred_language_desc' => 'Questa opzione cambierà la lingua utilizzata per l\'interfaccia utente dell\'applicazione. Questo non influirà su alcun contenuto creato dall\'utente.',
+ 'users_social_accounts' => 'Account social',
+ 'users_social_accounts_desc' => 'Visualizza lo stato degli account social connessi per questo utente. Gli account social possono essere utilizzati in aggiunta al sistema di autenticazione primaria per l\'accesso al sistema.',
+ 'users_social_accounts_info' => 'Qui puoi connettere gli altri account per un accesso più veloce e semplice. Disconnettere un account qui non rimuoverà le altre sessioni. Revoca l\'accesso dal tuo profilo negli account social connessi.',
+ 'users_social_connect' => 'Connetti account',
+ 'users_social_disconnect' => 'Disconnetti account',
+ 'users_social_status_connected' => 'Connesso',
+ 'users_social_status_disconnected' => 'Disconnesso',
+ 'users_social_connected' => 'L\'account :socialAccount è stato connesso correttamente al tuo profilo.',
+ 'users_social_disconnected' => 'L\'account :socialAccount è stato disconnesso correttamente dal tuo profilo.',
+ 'users_api_tokens' => 'Token API',
+ 'users_api_tokens_desc' => 'Crea e gestisci i token di accesso utilizzati per autenticarsi con l\'API REST di BookStack. I permessi per l\'API sono gestiti tramite l\'utente a cui appartiene il token.',
+ 'users_api_tokens_none' => 'Nessun token API è stato creato per questo utente',
+ 'users_api_tokens_create' => 'Crea token',
+ 'users_api_tokens_expires' => 'Scade',
+ 'users_api_tokens_docs' => 'Documentazione API',
+ 'users_mfa' => 'Autenticazione multi-fattore',
+ 'users_mfa_desc' => 'Imposta l\'autenticazione multi-fattore come misura di sicurezza aggiuntiva per il tuo account.',
+ 'users_mfa_x_methods' => ':count metodo configurato|:count metodi configurati',
+ 'users_mfa_configure' => 'Configura metodi',
+
+ // API Tokens
+ 'user_api_token_create' => 'Crea token API',
+ 'user_api_token_name' => 'Nome',
+ 'user_api_token_name_desc' => 'Assegna al tuo token un nome leggibile per ricordarne la funzionalità in futuro.',
+ 'user_api_token_expiry' => 'Data di scadenza',
+ 'user_api_token_expiry_desc' => 'Imposta una data di scadenza per questo token. Dopo questa data, le richieste che utilizzeranno questo token non funzioneranno più. Lasciando questo campo vuoto si imposterà la scadenza tra 100 anni.',
+ 'user_api_token_create_secret_message' => 'Immediatamente dopo aver creato questo token, un "ID del Token" e una "Chiave segreta Token" saranno generati e mostrati. La chiave segreta verrà mostrata unicamente questa volta, assicurati, quindi, di copiare il valore in un posto sicuro prima di procedere.',
+ 'user_api_token' => 'Token API',
+ 'user_api_token_id' => 'ID del Token',
+ 'user_api_token_id_desc' => 'Questo è un identificativo non modificabile generato dal sistema per questo token e che sarà necessario fornire per le richieste tramite API.',
+ 'user_api_token_secret' => 'Chiave segreta token',
+ 'user_api_token_secret_desc' => 'Questo è una chiave segreta generata dal sistema per questo token che sarà necessario fornire per le richieste via API. Questo valore sarà visibile unicamente in questo momento pertanto copialo in un posto sicuro.',
+ 'user_api_token_created' => 'Token Aggiornato :timeAgo',
+ 'user_api_token_updated' => 'Token aggiornato :timeAgo',
+ 'user_api_token_delete' => 'Elimina token',
+ 'user_api_token_delete_warning' => 'Questa operazione eliminerà irreversibilmente dal sistema il token API denominato \':tokenName\'.',
+ 'user_api_token_delete_confirm' => 'Sei sicuri di voler eliminare questo token API?',
+
+ // Webhooks
+ 'webhooks' => 'Webhook',
+ 'webhooks_index_desc' => 'I webhook sono un modo per inviare dati a URL esterni quando si verificano determinate azioni ed eventi all\'interno del sistema, consentendo l\'integrazione basata sugli eventi con piattaforme esterne, come sistemi di messaggistica o di notifica.',
+ 'webhooks_x_trigger_events' => ':count evento trigger|:count eventi trigger',
+ 'webhooks_create' => 'Crea nuovo webhook',
+ 'webhooks_none_created' => 'Nessun webhook è stato creato.',
+ 'webhooks_edit' => 'Modifica webhook',
+ 'webhooks_save' => 'Salva webhook',
+ 'webhooks_details' => 'Dettagli webhook',
+ 'webhooks_details_desc' => 'Fornisci un nome di facile utilizzo e un endpoint POST come posizione per i dati del webhook da inviare.',
+ 'webhooks_events' => 'Eventi webhook',
+ 'webhooks_events_desc' => 'Seleziona tutti gli eventi che dovrebbero attivare questo webhook da chiamare.',
+ 'webhooks_events_warning' => 'Tieni presente che questi eventi saranno attivati per tutti gli eventi selezionati, anche se vengono applicati permessi personalizzati. Assicurati che l\'uso di questo webhook non esporrà contenuti riservati.',
+ 'webhooks_events_all' => 'Tutti gli eventi di sistema',
+ 'webhooks_name' => 'Nome webhook',
+ 'webhooks_timeout' => 'Timeout richiesta webhook (secondi)',
+ 'webhooks_endpoint' => 'Endpoint webhook',
+ 'webhooks_active' => 'Webhook attivo',
+ 'webhook_events_table_header' => 'Eventi',
+ 'webhooks_delete' => 'Elimina webhook',
+ 'webhooks_delete_warning' => 'Questo eliminerà completamente questo webhook chiamato \':webhookName\' dal sistema.',
+ 'webhooks_delete_confirm' => 'Sei sicuro di voler eliminare questo webhook?',
+ 'webhooks_format_example' => 'Esempio di formato webhook',
+ 'webhooks_format_example_desc' => 'I dati del webhook vengono inviati come richiesta POST all\'endpoint configurato come JSON seguendo il formato sottostante. Le proprietà "related_item" e "url" sono opzionali e dipenderanno dal tipo di evento attivato.',
+ 'webhooks_status' => 'Stato webhook',
+ 'webhooks_last_called' => 'Ultima chiamata:',
+ 'webhooks_last_errored' => 'Ultimo errore:',
+ 'webhooks_last_error_message' => 'Ultimo messaggio di errore:',
+
+ // Licensing
+ 'licenses' => 'Licenze',
+ 'licenses_desc' => 'Questa pagina contiene informazioni dettagliate sulle licenze di BookStack, oltre ai progetti e alle librerie utilizzate all\'interno di BookStack. Molti dei progetti elencati possono essere utilizzati solo in un contesto di sviluppo.',
+ 'licenses_bookstack' => 'Licenza BookStack',
+ 'licenses_php' => 'Licenze Librerie PHP',
+ 'licenses_js' => 'Licenze Librerie JavaScript',
+ 'licenses_other' => 'Altre Licenze',
+ 'license_details' => 'Dettagli Licenza',
+
+ //! If editing translations files directly please ignore this in all
+ //! languages apart from en. Content will be auto-copied from en.
+ //!////////////////////////////////
+ 'language_select' => [
+ 'en' => 'Inglese',
+ 'ar' => 'Arabo',
+ 'bg' => 'Bulgaro',
+ 'bs' => 'Bosniaco',
+ 'ca' => 'Catalano',
+ 'cs' => 'Ceco',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Danese',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Spagnolo',
+ 'es_AR' => 'Spagnolo d\'Argentina',
+ 'et' => 'Estone',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Francese',
+ 'he' => 'Ebraico',
+ 'hr' => 'Croato',
+ 'hu' => 'Ungherese',
+ 'id' => 'Indonesiano',
+ 'it' => 'Italiano',
+ 'ja' => 'Giapponese',
+ 'ko' => 'Coreano',
+ 'lt' => 'Lituano',
+ 'lv' => 'Lettone',
+ 'nb' => 'Norvegese (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Olandese',
+ 'pl' => 'Polacco',
+ 'pt' => 'Portoghese',
+ 'pt_BR' => 'Portoghese Brasiliano',
+ 'ro' => 'Română',
+ 'ru' => 'Russo',
+ 'sk' => 'Sloveno',
+ 'sl' => 'Sloveno',
+ 'sv' => 'Svedese',
+ 'tr' => 'Turco',
+ 'uk' => 'Ucraino',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Vietnamita',
+ 'zh_CN' => 'Cinese semplificato',
+ 'zh_TW' => 'Cinese tradizionale',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/it/validation.php b/lang/it/validation.php
new file mode 100644
index 00000000000..972f86e5227
--- /dev/null
+++ b/lang/it/validation.php
@@ -0,0 +1,123 @@
+ ':attribute deve essere accettato.',
+ 'active_url' => ':attribute non è uno URL valido.',
+ 'after' => ':attribute deve essere una data dopo il :date.',
+ 'alpha' => ':attribute deve contenere solo lettere.',
+ 'alpha_dash' => ':attribute deve contenere solo lettere, numeri, trattini e trattini bassi.',
+ 'alpha_num' => ':attribute deve contenere solo lettere e numeri.',
+ 'array' => ':attribute deve essere un array.',
+ 'backup_codes' => 'Il codice fornito non è valido o è già stato utilizzato.',
+ 'before' => ':attribute deve essere una data prima del :date.',
+ 'between' => [
+ 'numeric' => 'Il campo :attribute deve essere tra :min e :max.',
+ 'file' => 'Il campo :attribute deve essere tra :min e :max kilobyte.',
+ 'string' => 'Il campo :attribute deve essere tra :min e :max caratteri.',
+ 'array' => 'Il campo :attribute deve avere tra :min e :max oggetti.',
+ ],
+ 'boolean' => ':attribute deve essere vero o falso.',
+ 'confirmed' => 'La conferma di :attribute non corrisponde.',
+ 'date' => ':attribute non è una data valida.',
+ 'date_format' => 'Il campo :attribute non corrisponde al formato :format.',
+ 'different' => 'Il campo :attribute e :other devono essere differenti.',
+ 'digits' => 'Il campo :attribute deve essere di :digits numeri.',
+ 'digits_between' => 'Il campo :attribute deve essere tra i numeri :min e :max.',
+ 'email' => 'Il campo :attribute deve essere un indirizzo email valido.',
+ 'ends_with' => ':attribute deve terminare con uno dei seguenti: :values',
+ 'file' => ':attribute deve essere fornito come file valido.',
+ 'filled' => 'Il campo :attribute field is required.',
+ 'gt' => [
+ 'numeric' => ':attribute deve essere maggiore di :value.',
+ 'file' => ':attribute deve essere maggiore di :value kilobyte.',
+ 'string' => ':attribute deve essere maggiore di :value caratteri.',
+ 'array' => ':attribute deve avere più di :value elementi.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute deve essere maggiore o uguale a :value.',
+ 'file' => ':attribute deve essere maggiore o uguale a :value kilobyte.',
+ 'string' => ':attribute deve essere maggiore o uguale a :value caratteri.',
+ 'array' => ':attribute deve avere :value o più elementi.',
+ ],
+ 'exists' => 'Il campo :attribute selezionato non è valido.',
+ 'image' => 'Il campo :attribute deve essere un\'immagine.',
+ 'image_extension' => ':attribute deve avere un\'estensione immagine valida e supportata.',
+ 'in' => 'Il campo :attribute selezionato non è valido.',
+ 'integer' => 'Il campo :attribute deve essere un intero.',
+ 'ip' => 'Il campo :attribute deve essere un indirizzo IP valido.',
+ 'ipv4' => ':attribute deve essere un indirizzo IPv4 valido.',
+ 'ipv6' => ':attribute deve essere un indirizzo IPv6 valido.',
+ 'json' => ':attribute deve essere una stringa JSON valida.',
+ 'lt' => [
+ 'numeric' => ':attribute deve essere inferiore a :value.',
+ 'file' => ':attribute deve essere inferiore a :value kilobyte.',
+ 'string' => ':attribute deve essere inferiore a :value caratteri.',
+ 'array' => ':attribute deve avere meno di :value elementi.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute deve essere minore o uguale :value.',
+ 'file' => ':attribute deve essere minore o uguale a :value kilobyte.',
+ 'string' => ':attribute deve essere minore o uguale a :value caratteri.',
+ 'array' => ':attribute non deve avere più di :value elementi.',
+ ],
+ 'max' => [
+ 'numeric' => 'Il campo :attribute non deve essere maggiore di :max.',
+ 'file' => 'Il campo :attribute non deve essere maggiore di :max kilobyte.',
+ 'string' => 'Il campo :attribute non deve essere maggiore di :max caratteri.',
+ 'array' => 'Il campo :attribute non deve avere più di :max oggetti.',
+ ],
+ 'mimes' => 'Il campo :attribute deve essere: :values.',
+ 'min' => [
+ 'numeric' => 'Il campo :attribute deve essere almeno :min.',
+ 'file' => 'Il campo :attribute deve essere almeno :min kilobyte.',
+ 'string' => 'Il campo :attribute deve essere almeno :min caratteri.',
+ 'array' => 'Il campo :attribute deve contenere almeno :min elementi.',
+ ],
+ 'not_in' => 'Il :attribute selezionato non è valido.',
+ 'not_regex' => 'Il formato di :attribute non è valido.',
+ 'numeric' => ':attribute deve essere un numero.',
+ 'regex' => 'Il formato di :attribute non è valido.',
+ 'required' => 'Il campo :attribute è richiesto.',
+ 'required_if' => 'Il campo :attribute è richiesto quando :other è :value.',
+ 'required_with' => 'Il campo :attribute è richiesto quando :values è presente.',
+ 'required_with_all' => 'Il campo :attribute è richiesto quando :values sono presenti.',
+ 'required_without' => 'Il campo :attribute è richiesto quando :values non è presente.',
+ 'required_without_all' => 'Il campo :attribute è richiesto quando nessuno dei :values sono presenti.',
+ 'same' => ':attribute e :other devono corrispondere.',
+ 'safe_url' => 'Il link inserito potrebbe non essere sicuro.',
+ 'size' => [
+ 'numeric' => 'Il campo :attribute deve essere :size.',
+ 'file' => 'Il campo :attribute deve essere :size kilobyte.',
+ 'string' => 'Il campo :attribute deve essere di :size caratteri.',
+ 'array' => 'Il campo :attribute deve contenere :size elementi.',
+ ],
+ 'string' => ':attribute deve essere una stringa.',
+ 'timezone' => ':attribute deve essere una zona valida.',
+ 'totp' => 'Il codice fornito non è valido o è scaduto.',
+ 'unique' => ':attribute è già usato.',
+ 'url' => 'Il formato :attribute non è valido.',
+ 'uploaded' => 'Il file non può essere caricato. Il server potrebbe non accettare file di questa dimensione.',
+
+ 'zip_file' => 'L\'attributo :attribute deve fare riferimento a un file all\'interno dello ZIP.',
+ 'zip_file_size' => 'Il file :attribute non deve superare :size MB.',
+ 'zip_file_mime' => 'Il campo :attribute deve fare riferimento a un file di tipo :validTypes, trovato :foundType.',
+ 'zip_model_expected' => 'Oggetto dati atteso ma ":type" trovato.',
+ 'zip_unique' => 'L\'attributo :attribute deve essere univoco per il tipo di oggetto all\'interno dello ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Conferma della password richiesta',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/ja/activities.php b/lang/ja/activities.php
new file mode 100644
index 00000000000..6f55098bbd9
--- /dev/null
+++ b/lang/ja/activities.php
@@ -0,0 +1,140 @@
+ 'がページを作成:',
+ 'page_create_notification' => 'ページを作成しました',
+ 'page_update' => 'がページを更新:',
+ 'page_update_notification' => 'ページを更新しました',
+ 'page_delete' => 'がページを削除:',
+ 'page_delete_notification' => 'ページを削除しました',
+ 'page_restore' => 'がページを復元:',
+ 'page_restore_notification' => 'ページを復元しました',
+ 'page_move' => 'がページを移動:',
+ 'page_move_notification' => 'ページを移動しました',
+
+ // Chapters
+ 'chapter_create' => 'がチャプターを作成:',
+ 'chapter_create_notification' => 'チャプターを作成しました',
+ 'chapter_update' => 'がチャプターを更新:',
+ 'chapter_update_notification' => 'チャプターを更新しました',
+ 'chapter_delete' => 'がチャプターを削除:',
+ 'chapter_delete_notification' => 'チャプターを削除しました',
+ 'chapter_move' => 'がチャプターを移動:',
+ 'chapter_move_notification' => 'チャプタを移動しました',
+
+ // Books
+ 'book_create' => 'がブックを作成:',
+ 'book_create_notification' => 'ブックを作成しました',
+ 'book_create_from_chapter' => 'がチャプターをブックに変換:',
+ 'book_create_from_chapter_notification' => 'チャプターをブックに変換しました',
+ 'book_update' => 'がブックを更新:',
+ 'book_update_notification' => 'ブックを更新しました',
+ 'book_delete' => 'がブックを削除:',
+ 'book_delete_notification' => 'ブックを削除しました',
+ 'book_sort' => 'がブック内の並び順を変更:',
+ 'book_sort_notification' => 'ブック内の並び順を変更しました',
+
+ // Bookshelves
+ 'bookshelf_create' => 'が本棚を作成:',
+ 'bookshelf_create_notification' => '本棚を作成しました',
+ 'bookshelf_create_from_book' => 'がブックを本棚に変換:',
+ 'bookshelf_create_from_book_notification' => 'ブックを本棚に変換しました',
+ 'bookshelf_update' => 'が本棚を更新:',
+ 'bookshelf_update_notification' => '本棚を更新しました',
+ 'bookshelf_delete' => 'が本棚を削除:',
+ 'bookshelf_delete_notification' => '本棚を削除しました',
+
+ // Revisions
+ 'revision_restore' => 'がリビジョンを復元',
+ 'revision_delete' => 'がリビジョンを削除',
+ 'revision_delete_notification' => 'リビジョンを削除しました',
+
+ // Favourites
+ 'favourite_add_notification' => '":name"がお気に入りに追加されました',
+ 'favourite_remove_notification' => '":name"がお気に入りから削除されました',
+
+ // Watching
+ 'watch_update_level_notification' => 'ウォッチ設定を更新しました',
+
+ // Auth
+ 'auth_login' => 'がログイン',
+ 'auth_register' => 'が新規ユーザ登録',
+ 'auth_password_reset_request' => 'がパスワードリセットを要求',
+ 'auth_password_reset_update' => 'がパスワードをリセット',
+ 'mfa_setup_method' => 'が多要素認証を設定',
+ 'mfa_setup_method_notification' => '多要素認証を設定しました',
+ 'mfa_remove_method' => 'が多要素認証を削除',
+ 'mfa_remove_method_notification' => '多要素認証を解除しました',
+
+ // Settings
+ 'settings_update' => 'が設定を更新',
+ 'settings_update_notification' => '設定を更新しました',
+ 'maintenance_action_run' => 'がメンテナンス作業を実施',
+
+ // Webhooks
+ 'webhook_create' => 'がWebhookを作成',
+ 'webhook_create_notification' => 'Webhookを作成しました',
+ 'webhook_update' => 'がWebhookを更新',
+ 'webhook_update_notification' => 'Webhookを更新しました',
+ 'webhook_delete' => 'がWebhookを削除',
+ 'webhook_delete_notification' => 'Webhookを削除しました',
+
+ // Imports
+ 'import_create' => 'がインポートを作成',
+ 'import_create_notification' => 'インポートファイルが正常にアップロードされました',
+ 'import_run' => 'がインポートを更新',
+ 'import_run_notification' => 'コンテンツが正常にインポートされました',
+ 'import_delete' => 'がインポートを削除',
+ 'import_delete_notification' => 'インポートファイルが正常に削除されました',
+
+ // Users
+ 'user_create' => 'がユーザを作成',
+ 'user_create_notification' => 'ユーザーを作成しました',
+ 'user_update' => 'がユーザを更新',
+ 'user_update_notification' => 'ユーザーを更新しました',
+ 'user_delete' => 'がユーザを削除',
+ 'user_delete_notification' => 'ユーザーを削除しました',
+
+ // API Tokens
+ 'api_token_create' => 'がAPIトークンを作成',
+ 'api_token_create_notification' => 'APIトークンを作成しました',
+ 'api_token_update' => 'がAPIトークンを更新',
+ 'api_token_update_notification' => 'APIトークンを更新しました',
+ 'api_token_delete' => 'がAPIトークンを削除',
+ 'api_token_delete_notification' => 'APIトークンを削除しました',
+
+ // Roles
+ 'role_create' => 'が役割を作成',
+ 'role_create_notification' => '役割を作成しました',
+ 'role_update' => 'が役割を更新',
+ 'role_update_notification' => '役割を更新しました',
+ 'role_delete' => 'が役割を削除',
+ 'role_delete_notification' => '役割を削除しました',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'がゴミ箱を空にしました',
+ 'recycle_bin_restore' => 'がゴミ箱から復元',
+ 'recycle_bin_destroy' => 'がゴミ箱から完全に削除',
+
+ // Comments
+ 'commented_on' => 'がコメント:',
+ 'comment_create' => 'がコメントを追加',
+ 'comment_update' => 'がコメントを更新',
+ 'comment_delete' => 'がコメントを削除',
+
+ // Sort Rules
+ 'sort_rule_create' => 'がソートルールを作成',
+ 'sort_rule_create_notification' => 'ソートルールを作成しました',
+ 'sort_rule_update' => 'がソートルールを更新',
+ 'sort_rule_update_notification' => 'ソートルールを更新しました',
+ 'sort_rule_delete' => 'がソートルールを削除',
+ 'sort_rule_delete_notification' => 'ソートルールを削除しました',
+
+ // Other
+ 'permissions_update' => 'が権限を更新:',
+];
diff --git a/lang/ja/auth.php b/lang/ja/auth.php
new file mode 100644
index 00000000000..077c31ac85c
--- /dev/null
+++ b/lang/ja/auth.php
@@ -0,0 +1,117 @@
+ 'この資格情報は登録されていません。',
+ 'throttle' => 'ログイン試行回数が制限を超えました。:seconds秒後に再試行してください。',
+
+ // Login & Register
+ 'sign_up' => '新規登録',
+ 'log_in' => 'ログイン',
+ 'log_in_with' => ':socialDriverでログイン',
+ 'sign_up_with' => ':socialDriverで登録',
+ 'logout' => 'ログアウト',
+
+ 'name' => '名前',
+ 'username' => 'ユーザ名',
+ 'email' => 'メールアドレス',
+ 'password' => 'パスワード',
+ 'password_confirm' => 'パスワード (確認)',
+ 'password_hint' => '8文字以上で設定する必要があります',
+ 'forgot_password' => 'パスワードをお忘れですか?',
+ 'remember_me' => 'ログイン情報を保存する',
+ 'ldap_email_hint' => 'このアカウントで使用するEメールアドレスを入力してください。',
+ 'create_account' => 'アカウント作成',
+ 'already_have_account' => 'すでにアカウントをお持ちですか?',
+ 'dont_have_account' => '初めての登録ですか?',
+ 'social_login' => 'SNSログイン',
+ 'social_registration' => 'SNS登録',
+ 'social_registration_text' => '他のサービスで登録 / ログインする',
+
+ 'register_thanks' => '登録が完了しました!',
+ 'register_confirm' => 'メール内の確認ボタンを押して、:appNameへアクセスしてください。',
+ 'registrations_disabled' => '登録は現在停止中です。',
+ 'registration_email_domain_invalid' => 'このEmailドメインでの登録は許可されていません。',
+ 'register_success' => '登録が完了し、ログインできるようになりました!',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'ログイン試行中',
+ 'auto_init_starting_desc' => 'ログイン プロセスを開始するために、認証システムに接続しています。5秒経過しても進行しない場合、下のリンクをクリックしてみてください。',
+ 'auto_init_start_link' => '認証を進める',
+
+ // Password Reset
+ 'reset_password' => 'パスワードリセット',
+ 'reset_password_send_instructions' => '以下にEメールアドレスを入力すると、パスワードリセットリンクが記載されたメールが送信されます。',
+ 'reset_password_send_button' => 'リセットリンクを送信',
+ 'reset_password_sent' => 'メールアドレスがシステムで見つかった場合、パスワードリセットリンクが:emailに送信されます。',
+ 'reset_password_success' => 'パスワードがリセットされました。',
+ 'email_reset_subject' => ':appNameのパスワードをリセット',
+ 'email_reset_text' => 'このメールは、パスワードリセットがリクエストされたため送信されています。',
+ 'email_reset_not_requested' => 'もしパスワードリセットを希望しない場合、操作は不要です。',
+
+ // Email Confirmation
+ 'email_confirm_subject' => ':appNameのメールアドレス確認',
+ 'email_confirm_greeting' => ':appNameへ登録してくださりありがとうございます!',
+ 'email_confirm_text' => '以下のボタンを押し、メールアドレスを確認してください:',
+ 'email_confirm_action' => 'メールアドレスを確認',
+ 'email_confirm_send_error' => 'Eメールの確認が必要でしたが、システム上でEメールの送信ができませんでした。管理者に連絡し、Eメールが正しく設定されていることを確認してください。',
+ 'email_confirm_success' => 'メールアドレスが確認されました!このメールアドレスでログインできるようになりました。',
+ 'email_confirm_resent' => '確認メールを再送信しました。受信トレイを確認してください。',
+ 'email_confirm_thanks' => '確認いただきありがとうございます!',
+ 'email_confirm_thanks_desc' => '確認のため、しばらくお待ちください。3秒後にリダイレクトされない場合は、下の「続ける」リンクを押して次に進んでください。',
+
+ 'email_not_confirmed' => 'Eメールアドレスが確認できていません',
+ 'email_not_confirmed_text' => 'Eメールアドレスの確認が完了していません。',
+ 'email_not_confirmed_click_link' => '登録時に受信したメールを確認し、確認リンクをクリックしてください。',
+ 'email_not_confirmed_resend' => 'Eメールが見つからない場合、以下のフォームから再送信してください。',
+ 'email_not_confirmed_resend_button' => '確認メールを再送信',
+
+ // User Invite
+ 'user_invite_email_subject' => ':appNameに招待されました!',
+ 'user_invite_email_greeting' => ':appNameにあなたのアカウントが作成されました。',
+ 'user_invite_email_text' => 'アカウントのパスワードを設定してアクセスできるようにするため、下のボタンをクリックしてください:',
+ 'user_invite_email_action' => 'アカウントのパスワード設定',
+ 'user_invite_page_welcome' => ':appNameへようこそ!',
+ 'user_invite_page_text' => 'アカウントの設定を完了してアクセスするには、今後の訪問時に:appNameにログインするためのパスワードを設定する必要があります。',
+ 'user_invite_page_confirm_button' => 'パスワードを確定',
+ 'user_invite_success_login' => 'パスワードが設定されました。設定したパスワードで:appNameにログインできるようになりました!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => '多要素認証を設定',
+ 'mfa_setup_desc' => 'アカウントのセキュリティを強化するために、多要素認証を設定してください。',
+ 'mfa_setup_configured' => '既に設定されています',
+ 'mfa_setup_reconfigure' => '再設定',
+ 'mfa_setup_remove_confirmation' => 'この多要素認証方法を削除してもよろしいですか?',
+ 'mfa_setup_action' => '設定',
+ 'mfa_backup_codes_usage_limit_warning' => '有効な確認コードは残り5つ以下です。アカウントのロックアウトを防ぐため、コードがなくなる前に新しいセットを生成して保存してください。',
+ 'mfa_option_totp_title' => 'モバイルアプリ',
+ 'mfa_option_totp_desc' => '多要素認証を使用するには、Google Authenticator、Authy、Microsoft AuthenticatorなどのTOTPをサポートするモバイルアプリケーションが必要です。',
+ 'mfa_option_backup_codes_title' => '確認コード',
+ 'mfa_option_backup_codes_desc' => 'ログイン時に本人確認のために追加入力する1回限りの確認コードセットを生成します。 これは安全な場所に保管してください。',
+ 'mfa_gen_confirm_and_enable' => '確認して有効化',
+ 'mfa_gen_backup_codes_title' => '確認コードの構成',
+ 'mfa_gen_backup_codes_desc' => '以下のコードのリストを安全な場所に保管してください。システムにアクセスする際、コードのいずれかを第二の認証手段として使用できます。',
+ 'mfa_gen_backup_codes_download' => 'コードをダウンロード',
+ 'mfa_gen_backup_codes_usage_warning' => '各コードは一度だけ使用できます',
+ 'mfa_gen_totp_title' => 'モバイルアプリの設定',
+ 'mfa_gen_totp_desc' => '多要素認証を使用するには、Google Authenticator、Authy、Microsoft AuthenticatorなどのTOTPをサポートするモバイルアプリケーションが必要です。',
+ 'mfa_gen_totp_scan' => '利用したい認証アプリで以下のQRコードをスキャンしてください。',
+ 'mfa_gen_totp_verify_setup' => '設定を検証',
+ 'mfa_gen_totp_verify_setup_desc' => '認証アプリで生成されたコードを下の入力ボックスに入力し、すべてが機能していることを確認してください。',
+ 'mfa_gen_totp_provide_code_here' => 'アプリが生成したコードを入力',
+ 'mfa_verify_access' => 'アクセスを確認',
+ 'mfa_verify_access_desc' => 'このユーザーアカウントはアクセスを許可する前に追加の検証レベルで本人確認を行う必要があります。続行するには、設定されているいずれかの手段で検証してください。',
+ 'mfa_verify_no_methods' => '手段が設定されていません',
+ 'mfa_verify_no_methods_desc' => 'アカウントの多要素認証手段が見つかりませんでした。アクセスする前に、少なくとも1つの手段を設定する必要があります。',
+ 'mfa_verify_use_totp' => 'モバイルアプリを利用して確認',
+ 'mfa_verify_use_backup_codes' => '確認コードによる検証',
+ 'mfa_verify_backup_code' => '確認コード',
+ 'mfa_verify_backup_code_desc' => '残りの確認コードのいずれかを入力してください:',
+ 'mfa_verify_backup_code_enter_here' => '確認コードを入力',
+ 'mfa_verify_totp_desc' => 'モバイルアプリを利用して生成されたコードを入力してください:',
+ 'mfa_setup_login_notification' => '多要素認証が構成されました。設定された手段を利用して再度ログインしてください。',
+];
diff --git a/lang/ja/common.php b/lang/ja/common.php
new file mode 100644
index 00000000000..e888c43f651
--- /dev/null
+++ b/lang/ja/common.php
@@ -0,0 +1,115 @@
+ 'キャンセル',
+ 'close' => '閉じる',
+ 'confirm' => '確認',
+ 'back' => '戻る',
+ 'save' => '保存',
+ 'continue' => '続ける',
+ 'select' => '選択',
+ 'toggle_all' => '一括切替',
+ 'more' => 'その他',
+
+ // Form Labels
+ 'name' => '名称',
+ 'description' => '概要',
+ 'role' => '権限',
+ 'cover_image' => 'カバー画像',
+ 'cover_image_description' => 'この画像はおよそ440x250pxであるべきですが、必要に応じてさまざまなシナリオでユーザー・インターフェースに合うように柔軟に拡大・縮小されるため、実際の表示寸法は異なります。',
+
+ // Actions
+ 'actions' => '実行',
+ 'view' => '表示',
+ 'view_all' => 'すべて表示',
+ 'new' => '新規作成',
+ 'create' => '作成',
+ 'update' => '更新',
+ 'edit' => '編集',
+ 'archive' => 'アーカイブ',
+ 'unarchive' => 'アーカイブ解除',
+ 'sort' => '並び順',
+ 'move' => '移動',
+ 'copy' => 'コピー',
+ 'reply' => '返信',
+ 'delete' => '削除',
+ 'delete_confirm' => '確認して削除',
+ 'search' => '検索',
+ 'search_clear' => '検索をクリア',
+ 'reset' => 'リセット',
+ 'remove' => '削除',
+ 'add' => '追加',
+ 'configure' => '設定',
+ 'manage' => '管理',
+ 'fullscreen' => '全画面',
+ 'favourite' => 'お気に入り',
+ 'unfavourite' => 'お気に入りから削除',
+ 'next' => '次へ',
+ 'previous' => '前へ',
+ 'filter_active' => '有効なフィルター:',
+ 'filter_clear' => 'フィルターを解除',
+ 'download' => 'ダウンロード',
+ 'open_in_tab' => 'タブで開く',
+ 'open' => '開く',
+
+ // Sort Options
+ 'sort_options' => '並べ替えオプション',
+ 'sort_direction_toggle' => '並べ替え方向の切り替え',
+ 'sort_ascending' => '昇順に並べ替え',
+ 'sort_descending' => '降順に並べ替え',
+ 'sort_name' => '名前',
+ 'sort_default' => 'デフォルト',
+ 'sort_created_at' => '作成日',
+ 'sort_updated_at' => '更新日',
+
+ // Misc
+ 'deleted_user' => '削除済みユーザ',
+ 'no_activity' => '表示するアクティビティがありません',
+ 'no_items' => 'アイテムはありません',
+ 'back_to_top' => '上に戻る',
+ 'skip_to_main_content' => 'メインコンテンツへスキップ',
+ 'toggle_details' => '概要の表示切替',
+ 'toggle_thumbnails' => 'サムネイルの切り替え',
+ 'details' => '詳細',
+ 'grid_view' => 'グリッド形式',
+ 'list_view' => 'リスト形式',
+ 'default' => 'デフォルト',
+ 'breadcrumb' => 'パンくずリスト',
+ 'status' => '状態',
+ 'status_active' => '有効',
+ 'status_inactive' => '無効',
+ 'never' => '該当なし',
+ 'none' => 'なし',
+
+ // Header
+ 'homepage' => 'ホームページ',
+ 'header_menu_expand' => 'ヘッダーメニューを展開',
+ 'profile_menu' => 'プロフィールメニュー',
+ 'view_profile' => 'プロフィール表示',
+ 'edit_profile' => 'プロフィール編集',
+ 'dark_mode' => 'ダークモード',
+ 'light_mode' => 'ライトモード',
+ 'global_search' => 'グローバル検索',
+
+ // Layout tabs
+ 'tab_info' => '情報',
+ 'tab_info_label' => 'タブ: サブコンテンツを表示',
+ 'tab_content' => '内容',
+ 'tab_content_label' => 'タブ: メインコンテンツを表示',
+
+ // Email Content
+ 'email_action_help' => '":actionText" をクリックできない場合、以下のURLをコピーしブラウザで開いてください:',
+ 'email_rights' => 'All rights reserved',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'プライバシーポリシー',
+ 'terms_of_service' => '利用規約',
+
+ // OpenSearch
+ 'opensearch_description' => ':appName を検索',
+];
diff --git a/lang/ja/components.php b/lang/ja/components.php
new file mode 100644
index 00000000000..ca9f2cc9d35
--- /dev/null
+++ b/lang/ja/components.php
@@ -0,0 +1,46 @@
+ '画像を選択',
+ 'image_list' => '画像リスト',
+ 'image_details' => '画像詳細',
+ 'image_upload' => '画像をアップロード',
+ 'image_intro' => 'ここでは、システムに以前アップロードされた画像を選択して管理できます。',
+ 'image_intro_upload' => 'このウィンドウに画像ファイルをドラッグするか、上の「画像をアップロード」ボタンを使用して新しい画像をアップロードします。',
+ 'image_all' => 'すべて',
+ 'image_all_title' => '全ての画像を表示',
+ 'image_book_title' => 'このブックにアップロードされた画像を表示',
+ 'image_page_title' => 'このページにアップロードされた画像を表示',
+ 'image_search_hint' => '画像名で検索',
+ 'image_uploaded' => 'アップロード日時: :uploadedDate',
+ 'image_uploaded_by' => 'アップロードユーザ: :userName',
+ 'image_uploaded_to' => 'アップロード先: :pageLink',
+ 'image_updated' => '更新日時: :updateDate',
+ 'image_load_more' => 'さらに読み込む',
+ 'image_image_name' => '画像名',
+ 'image_delete_used' => 'この画像は以下のページで利用されています。',
+ 'image_delete_confirm_text' => 'この画像を削除してもよろしいですか?',
+ 'image_select_image' => '画像を選択',
+ 'image_dropzone' => '画像をドロップするか、クリックしてアップロード',
+ 'image_dropzone_drop' => 'アップロードする画像をここにドロップ',
+ 'images_deleted' => '画像を削除しました',
+ 'image_preview' => '画像プレビュー',
+ 'image_upload_success' => '画像がアップロードされました',
+ 'image_update_success' => '画像が更新されました',
+ 'image_delete_success' => '画像が削除されました',
+ 'image_replace' => '画像の差し替え',
+ 'image_replace_success' => '画像を更新しました',
+ 'image_rebuild_thumbs' => 'サイズバリエーションを再生成',
+ 'image_rebuild_thumbs_success' => '画像サイズバリエーションの再構築に成功しました!',
+
+ // Code Editor
+ 'code_editor' => 'コードを編集する',
+ 'code_language' => 'プログラミング言語の選択',
+ 'code_content' => 'プログラム内容',
+ 'code_session_history' => 'セッション履歴',
+ 'code_save' => 'プログラムを保存',
+];
diff --git a/lang/ja/editor.php b/lang/ja/editor.php
new file mode 100644
index 00000000000..40307dd5281
--- /dev/null
+++ b/lang/ja/editor.php
@@ -0,0 +1,182 @@
+ '一般',
+ 'advanced' => '詳細設定',
+ 'none' => 'なし',
+ 'cancel' => '取消',
+ 'save' => '保存',
+ 'close' => '閉じる',
+ 'apply' => '適用',
+ 'undo' => '元に戻す',
+ 'redo' => 'やり直し',
+ 'left' => '左寄せ',
+ 'center' => '中央揃え',
+ 'right' => '右寄せ',
+ 'top' => '上',
+ 'middle' => '中央',
+ 'bottom' => '下',
+ 'width' => '幅',
+ 'height' => '高さ',
+ 'More' => 'さらに表示',
+ 'select' => '選択...',
+
+ // Toolbar
+ 'formats' => '書式',
+ 'header_large' => '大見出し',
+ 'header_medium' => '中見出し',
+ 'header_small' => '小見出し',
+ 'header_tiny' => '極小見出し',
+ 'paragraph' => '段落',
+ 'blockquote' => '引用',
+ 'inline_code' => 'インラインコード',
+ 'callouts' => 'コールアウト',
+ 'callout_information' => '情報',
+ 'callout_success' => '成功',
+ 'callout_warning' => '警告',
+ 'callout_danger' => '危険',
+ 'bold' => '太字',
+ 'italic' => '斜体',
+ 'underline' => '下線',
+ 'strikethrough' => '取消線',
+ 'superscript' => '上付き',
+ 'subscript' => '下付き',
+ 'text_color' => 'テキスト色',
+ 'highlight_color' => 'テキスト背景色',
+ 'custom_color' => 'カスタムカラー',
+ 'remove_color' => '色設定を解除',
+ 'background_color' => '背景色',
+ 'align_left' => '左揃え',
+ 'align_center' => '中央揃え',
+ 'align_right' => '右揃え',
+ 'align_justify' => '両端揃え',
+ 'list_bullet' => '箇条書き',
+ 'list_numbered' => '番号付き箇条書き',
+ 'list_task' => 'タスクリスト',
+ 'indent_increase' => 'インデントを増やす',
+ 'indent_decrease' => 'インデントを減らす',
+ 'table' => '表',
+ 'insert_image' => '画像の挿入',
+ 'insert_image_title' => '画像の挿入・編集',
+ 'insert_link' => 'リンクの挿入・編集',
+ 'insert_link_title' => 'リンクの挿入・編集',
+ 'insert_horizontal_line' => '水平線を挿入',
+ 'insert_code_block' => 'コードブロックを挿入',
+ 'edit_code_block' => 'コードブロックを編集',
+ 'insert_drawing' => '描画を挿入・編集',
+ 'drawing_manager' => '描画マネージャー',
+ 'insert_media' => 'メディアの挿入・編集',
+ 'insert_media_title' => 'メディアの挿入・編集',
+ 'clear_formatting' => '書式をクリア',
+ 'source_code' => 'ソースコード',
+ 'source_code_title' => 'ソースコード',
+ 'fullscreen' => '全画面表示',
+ 'image_options' => '画像オプション',
+
+ // Tables
+ 'table_properties' => '表の詳細設定',
+ 'table_properties_title' => '表の詳細設定',
+ 'delete_table' => '表の削除',
+ 'table_clear_formatting' => '表の書式をクリア',
+ 'resize_to_contents' => '内容に合わせてリサイズ',
+ 'row_header' => 'ヘッダー行',
+ 'insert_row_before' => '上側に行を挿入',
+ 'insert_row_after' => '下側に行を挿入',
+ 'delete_row' => '行の削除',
+ 'insert_column_before' => '左側に列を挿入',
+ 'insert_column_after' => '右側に列を挿入',
+ 'delete_column' => '列の削除',
+ 'table_cell' => 'セル',
+ 'table_row' => '行',
+ 'table_column' => '列',
+ 'cell_properties' => 'セルの詳細設定',
+ 'cell_properties_title' => 'セルの詳細設定',
+ 'cell_type' => 'セルタイプ',
+ 'cell_type_cell' => 'セル',
+ 'cell_scope' => '見出しとの関連',
+ 'cell_type_header' => 'ヘッダーセル',
+ 'merge_cells' => 'セルを結合',
+ 'split_cell' => 'セルを分割',
+ 'table_row_group' => '行グループ',
+ 'table_column_group' => '列グループ',
+ 'horizontal_align' => '水平方向の配置',
+ 'vertical_align' => '垂直方向の配置',
+ 'border_width' => '枠線幅',
+ 'border_style' => '枠線スタイル',
+ 'border_color' => '枠線の色',
+ 'row_properties' => '行の詳細設定',
+ 'row_properties_title' => '行の詳細設定',
+ 'cut_row' => '行の切り取り',
+ 'copy_row' => '行のコピー',
+ 'paste_row_before' => '上側に行を貼り付け',
+ 'paste_row_after' => '下側に行を貼り付け',
+ 'row_type' => '行タイプ',
+ 'row_type_header' => 'ヘッダー',
+ 'row_type_body' => 'ボディー',
+ 'row_type_footer' => 'フッター',
+ 'alignment' => '配置',
+ 'cut_column' => '列の切り取り',
+ 'copy_column' => '列のコピー',
+ 'paste_column_before' => '左側に列を貼り付け',
+ 'paste_column_after' => '右側に列を貼り付け',
+ 'cell_padding' => 'セル内余白(パディング)',
+ 'cell_spacing' => 'セルの間隔',
+ 'caption' => '表題',
+ 'show_caption' => 'キャプションの表示',
+ 'constrain' => '縦横比を保持する',
+ 'cell_border_solid' => '実線',
+ 'cell_border_dotted' => '点線',
+ 'cell_border_dashed' => '破線',
+ 'cell_border_double' => '二重線',
+ 'cell_border_groove' => '掘り',
+ 'cell_border_ridge' => '盛り',
+ 'cell_border_inset' => '陥没',
+ 'cell_border_outset' => '隆起',
+ 'cell_border_none' => 'なし',
+ 'cell_border_hidden' => 'なし(優先)',
+
+ // Images, links, details/summary & embed
+ 'source' => '画像のソース',
+ 'alt_desc' => '代替の説明文',
+ 'embed' => '埋め込み',
+ 'paste_embed' => '埋め込み用コードを下記に貼り付けてください。',
+ 'url' => 'リンク先URL',
+ 'text_to_display' => 'リンク元テキスト',
+ 'title' => 'タイトル',
+ 'browse_links' => 'エンティティを参照',
+ 'open_link' => 'リンクを開く',
+ 'open_link_in' => 'リンク先の表示場所',
+ 'open_link_current' => '同じウィンドウ',
+ 'open_link_new' => '新規ウィンドウ',
+ 'remove_link' => 'リンクを削除',
+ 'insert_collapsible' => '折りたたみブロックを追加',
+ 'collapsible_unwrap' => 'ブロックの解除',
+ 'edit_label' => 'ラベルを編集',
+ 'toggle_open_closed' => '折りたたみ状態の切替',
+ 'collapsible_edit' => '折りたたみブロックを編集',
+ 'toggle_label' => 'ブロックのラベル',
+
+ // About view
+ 'about' => 'エディタについて',
+ 'about_title' => 'WYSIWYGエディタについて',
+ 'editor_license' => 'エディタのライセンスと著作権',
+ 'editor_lexical_license' => 'このエディタはMITライセンスの下で配布されている :lexicalLink のフォークとして構築されています。',
+ 'editor_lexical_license_link' => '完全なライセンスの詳細はこちらをご覧ください。',
+ 'editor_tiny_license' => 'このエディタはMITライセンスの下で提供される:tinyLinkを利用して構築されています。',
+ 'editor_tiny_license_link' => 'TinyMCEの著作権およびライセンスの詳細は、こちらをご覧ください。',
+ 'save_continue' => 'ページを保存して続行',
+ 'callouts_cycle' => '(押し続けて種類を切り替え)',
+ 'link_selector' => 'コンテンツへのリンク',
+ 'shortcuts' => 'ショートカット',
+ 'shortcut' => 'ショートカット',
+ 'shortcuts_intro' => 'エディタでは次に示すショートカットが利用できます。',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => '説明',
+];
diff --git a/lang/ja/entities.php b/lang/ja/entities.php
new file mode 100644
index 00000000000..551a2e49672
--- /dev/null
+++ b/lang/ja/entities.php
@@ -0,0 +1,477 @@
+ '最近作成',
+ 'recently_created_pages' => '最近作成されたページ',
+ 'recently_updated_pages' => '最近更新されたページ',
+ 'recently_created_chapters' => '最近作成されたチャプター',
+ 'recently_created_books' => '最近作成されたブック',
+ 'recently_created_shelves' => '最近作成された本棚',
+ 'recently_update' => '最近更新',
+ 'recently_viewed' => '閲覧履歴',
+ 'recent_activity' => 'アクティビティ',
+ 'create_now' => '作成する',
+ 'revisions' => '編集履歴',
+ 'meta_revision' => 'リビジョン #:revisionCount',
+ 'meta_created' => '作成: :timeLength',
+ 'meta_created_name' => '作成: :timeLength (:user)',
+ 'meta_updated' => '更新: :timeLength',
+ 'meta_updated_name' => '更新: :timeLength (:user)',
+ 'meta_owned_name' => '所有者: :user',
+ 'meta_reference_count' => ':count 項目から参照|:count 項目から参照',
+ 'entity_select' => 'エンティティ選択',
+ 'entity_select_lack_permission' => 'この項目を選択するために必要な権限がありません',
+ 'images' => '画像',
+ 'my_recent_drafts' => '最近の下書き',
+ 'my_recently_viewed' => '閲覧履歴',
+ 'my_most_viewed_favourites' => '最も閲覧したお気に入り',
+ 'my_favourites' => 'お気に入り',
+ 'no_pages_viewed' => 'なにもページを閲覧していません',
+ 'no_pages_recently_created' => '最近作成されたページはありません',
+ 'no_pages_recently_updated' => '最近更新されたページはありません。',
+ 'export' => 'エクスポート',
+ 'export_html' => 'Webページ',
+ 'export_pdf' => 'PDF',
+ 'export_text' => 'テキストファイル',
+ 'export_md' => 'Markdown',
+ 'export_zip' => 'ポータブルZIP',
+ 'default_template' => 'デフォルトページテンプレート',
+ 'default_template_explain' => 'このアイテム内に新しいページを作成する際にデフォルトコンテンツとして使用されるページテンプレートを割り当てます。これはページ作成者が選択したテンプレートページへのアクセス権を持つ場合にのみ使用されることに注意してください。',
+ 'default_template_select' => 'テンプレートページを選択',
+ 'import' => 'インポート',
+ 'import_validate' => 'インポートの検証',
+ 'import_desc' => 'ポータブルzipエクスポートファイルを使用して、同一または別のインスタンスからブック、チャプタ、ページをインポートします。続行するにはZIPファイルを選択します。 ファイルをアップロードすると検証が行われ、次のビューでインポートの設定と確認ができます。',
+ 'import_zip_select' => 'アップロードするZIPファイルの選択',
+ 'import_zip_validation_errors' => '指定された ZIP ファイルの検証中にエラーが検出されました:',
+ 'import_pending' => '保留中のインポート',
+ 'import_pending_none' => 'インポートは行われていません。',
+ 'import_continue' => 'インポートを続行',
+ 'import_continue_desc' => 'アップロードされたZIPファイルからインポートされるコンテンツを確認してください。準備ができたらインポートを実行してこのシステムにコンテンツを追加します。 アップロードされたZIPファイルは、インポートが成功すると自動的に削除されます。',
+ 'import_details' => 'インポートの詳細',
+ 'import_run' => 'インポートを実行',
+ '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' => '階層内のページ',
+ '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_save' => '権限を保存',
+ 'permissions_owner' => '所有者',
+ 'permissions_role_everyone_else' => 'その他の全員',
+ 'permissions_role_everyone_else_desc' => '明示的に上書きされていないすべての役割の権限を設定します。',
+ 'permissions_role_override' => '権限を上書きする役割',
+ 'permissions_inherit_defaults' => 'デフォルトを継承',
+
+ // Search
+ 'search_results' => '検索結果',
+ 'search_total_results_found' => ':count件見つかりました',
+ 'search_clear' => '検索をクリア',
+ 'search_no_pages' => 'ページが見つかりませんでした。',
+ 'search_for_term' => ':term の検索結果',
+ 'search_more' => 'さらに表示',
+ 'search_advanced' => '高度な検索',
+ 'search_terms' => '検索語句',
+ 'search_content_type' => '種類',
+ 'search_exact_matches' => '完全一致',
+ 'search_tags' => 'タグ検索',
+ 'search_options' => 'オプション',
+ 'search_viewed_by_me' => '自分が閲覧したことがある',
+ 'search_not_viewed_by_me' => '自分が閲覧したことがない',
+ 'search_permissions_set' => '権限が設定されている',
+ 'search_created_by_me' => '自分が作成した',
+ 'search_updated_by_me' => '自分が更新した',
+ 'search_owned_by_me' => '自分が所有している',
+ 'search_date_options' => '日付オプション',
+ 'search_updated_before' => '以前に更新',
+ 'search_updated_after' => '以降に更新',
+ 'search_created_before' => '以前に作成',
+ 'search_created_after' => '以降に更新',
+ 'search_set_date' => '日付を設定',
+ 'search_update' => 'フィルタを更新',
+
+ // Shelves
+ 'shelf' => '本棚',
+ 'shelves' => '本棚',
+ 'x_shelves' => ':count 本棚|:count 本棚',
+ 'shelves_empty' => '本棚が作成されていません',
+ 'shelves_create' => '新しい本棚を作成',
+ 'shelves_popular' => '人気の本棚',
+ 'shelves_new' => '新しい本棚',
+ 'shelves_new_action' => '新しい本棚',
+ 'shelves_popular_empty' => 'ここに人気の本棚が表示されます。',
+ 'shelves_new_empty' => '最近作成された本棚がここに表示されます。',
+ 'shelves_save' => '本棚を保存',
+ 'shelves_books' => 'この本棚のブック',
+ 'shelves_add_books' => 'この本棚にブックを追加',
+ 'shelves_drag_books' => '下にブックをドラッグしてこの本棚に追加',
+ 'shelves_empty_contents' => 'この本棚にはブックが割り当てられていません。',
+ 'shelves_edit_and_assign' => '本棚を編集してブックを割り当てる',
+ 'shelves_edit_named' => '本棚「:name」を編集',
+ 'shelves_edit' => '本棚を編集',
+ 'shelves_delete' => '本棚を削除',
+ 'shelves_delete_named' => '本棚「:name」を削除',
+ 'shelves_delete_explain' => "これにより、この本棚「:name」が削除されます。含まれているブックは削除されません。",
+ 'shelves_delete_confirmation' => '本当にこの本棚を削除してよろしいですか?',
+ 'shelves_permissions' => '本棚の権限',
+ 'shelves_permissions_updated' => '本棚の権限を更新しました',
+ 'shelves_permissions_active' => '本棚の権限は有効です',
+ 'shelves_permissions_cascade_warning' => '本棚の権限は含まれる本には自動的に継承されません。これは、1つのブックが複数の本棚に存在する可能性があるためです。ただし、以下のオプションを使用すると権限を子ブックにコピーできます。',
+ 'shelves_permissions_create' => '本棚の作成権限は、以下のアクションを使用した子ブックへの権限コピーにのみ使用されます。これはブックの作成を制御するものではありません。',
+ 'shelves_copy_permissions_to_books' => 'ブックに権限をコピー',
+ 'shelves_copy_permissions' => '権限をコピー',
+ 'shelves_copy_permissions_explain' => 'これにより、この本棚の現在の権限設定を本棚に含まれるすべてのブックに適用します。有効にする前に、この本棚の権限への変更が保存されていることを確認してください。',
+ 'shelves_copy_permission_success' => '本棚の権限が:count個のブックにコピーされました',
+
+ // Books
+ 'book' => 'ブック',
+ 'books' => 'ブック',
+ 'x_books' => ':count ブック',
+ 'books_empty' => 'まだブックは作成されていません',
+ 'books_popular' => '人気のブック',
+ 'books_recent' => '最近のブック',
+ 'books_new' => '新しいブック',
+ 'books_new_action' => '新しいブック',
+ 'books_popular_empty' => 'ここに人気のブックが表示されます。',
+ 'books_new_empty' => '最近作成されたブックがここに表示されます。',
+ 'books_create' => '新しいブックを作成',
+ 'books_delete' => 'ブックを削除',
+ 'books_delete_named' => 'ブック「:bookName」を削除',
+ 'books_delete_explain' => '「:bookName」を削除すると、ブック内のページとチャプターも削除されます。',
+ 'books_delete_confirmation' => '本当にこのブックを削除してよろしいですか?',
+ 'books_edit' => 'ブックを編集',
+ 'books_edit_named' => 'ブック「:bookName」を編集',
+ 'books_form_book_name' => 'ブック名',
+ 'books_save' => 'ブックを保存',
+ 'books_permissions' => 'ブックの権限',
+ 'books_permissions_updated' => 'ブックの権限を更新しました',
+ 'books_empty_contents' => 'まだページまたはチャプターが作成されていません。',
+ 'books_empty_create_page' => '新しいページを作成',
+ 'books_empty_sort_current_book' => 'ブックの並び順を変更',
+ 'books_empty_add_chapter' => 'チャプターを追加',
+ 'books_permissions_active' => 'ブックの権限は有効です',
+ 'books_search_this' => 'このブックから検索',
+ 'books_navigation' => '目次',
+ '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_chapters_first' => 'チャプターを先に',
+ 'books_sort_chapters_last' => 'チャプターを後に',
+ 'books_sort_show_other' => '他のブックを表示',
+ 'books_sort_save' => '並び順を保存',
+ 'books_sort_show_other_desc' => 'これらのブックを並べ替え操作に追加すると、簡単にブック間の再編成が可能です。',
+ 'books_sort_move_up' => '上に移動',
+ 'books_sort_move_down' => '下に移動',
+ 'books_sort_move_prev_book' => '前のブックに移動',
+ 'books_sort_move_next_book' => '次のブックに移動',
+ 'books_sort_move_prev_chapter' => '前のチャプター内に移動',
+ 'books_sort_move_next_chapter' => '次のチャプター内に移動',
+ 'books_sort_move_book_start' => '本の先頭に移動',
+ 'books_sort_move_book_end' => '本の末尾に移動',
+ 'books_sort_move_before_chapter' => 'チャプターの前に移動',
+ 'books_sort_move_after_chapter' => 'チャプターの後に移動',
+ 'books_copy' => 'ブックをコピー',
+ 'books_copy_success' => 'ブックが正常にコピーされました',
+
+ // Chapters
+ 'chapter' => 'チャプター',
+ 'chapters' => 'チャプター',
+ 'x_chapters' => ':count チャプター',
+ 'chapters_popular' => '人気のチャプター',
+ 'chapters_new' => 'チャプターを作成',
+ 'chapters_create' => 'チャプターを作成',
+ 'chapters_delete' => 'チャプターを削除',
+ 'chapters_delete_named' => 'チャプター「:chapterName」を削除',
+ 'chapters_delete_explain' => 'これにより、チャプター「:chapterName」が削除されます。このチャプターに存在するページもすべて削除されます。',
+ 'chapters_delete_confirm' => 'チャプターを削除してよろしいですか?',
+ 'chapters_edit' => 'チャプターを編集',
+ 'chapters_edit_named' => 'チャプター「:chapterName」を編集',
+ 'chapters_save' => 'チャプターを保存',
+ 'chapters_move' => 'チャプターを移動',
+ 'chapters_move_named' => 'チャプター「:chapterName」を移動',
+ 'chapters_copy' => 'チャプターをコピー',
+ 'chapters_copy_success' => 'チャプターが正常にコピーされました',
+ 'chapters_permissions' => 'チャプター権限',
+ 'chapters_empty' => 'まだチャプター内にページはありません。',
+ 'chapters_permissions_active' => 'チャプターの権限は有効です',
+ 'chapters_permissions_success' => 'チャプターの権限を更新しました',
+ 'chapters_search_this' => 'このチャプターを検索',
+ 'chapter_sort_book' => 'ブックを並べ替え',
+
+ // Pages
+ 'page' => 'ページ',
+ 'pages' => 'ページ',
+ 'x_pages' => ':count ページ',
+ 'pages_popular' => '人気のページ',
+ 'pages_new' => 'ページを作成',
+ 'pages_attachments' => '添付',
+ 'pages_navigation' => 'ページナビゲーション',
+ 'pages_delete' => 'ページを削除',
+ 'pages_delete_named' => 'ページ :pageName を削除',
+ 'pages_delete_draft_named' => 'ページ :pageName の下書きを削除',
+ 'pages_delete_draft' => 'ページの下書きを削除',
+ 'pages_delete_success' => 'ページを削除しました',
+ 'pages_delete_draft_success' => 'ページの下書きを削除しました',
+ 'pages_delete_warning_template' => 'このページは現在、ブックまたはチャプタのデフォルトページテンプレートとして使用されています。このページが削除されると、それらのアイテムでデフォルトのページテンプレートが割り当てられなくなります。',
+ 'pages_delete_confirm' => 'このページを削除してもよろしいですか?',
+ 'pages_delete_draft_confirm' => 'このページの下書きを削除してもよろしいですか?',
+ 'pages_editing_named' => 'ページ :pageName を編集',
+ 'pages_edit_draft_options' => '下書きオプション',
+ 'pages_edit_save_draft' => '下書きを保存',
+ 'pages_edit_draft' => 'ページの下書きを編集',
+ 'pages_editing_draft' => '下書きを編集中',
+ 'pages_editing_page' => 'ページを編集中',
+ 'pages_edit_draft_save_at' => '下書きを保存済み: ',
+ 'pages_edit_delete_draft' => '下書きを削除',
+ 'pages_edit_delete_draft_confirm' => '本当にページの下書変更を削除しますか? 最後の完全な保存以降の変更はすべて失われ、エディタは保存された最新のページ内容に復元されます。',
+ 'pages_edit_discard_draft' => '下書きを破棄',
+ 'pages_edit_switch_to_markdown' => 'Markdownエディタに切り替え',
+ '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エディタに切り替える',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(ベータテスト版)',
+ 'pages_edit_set_changelog' => '編集内容についての説明',
+ 'pages_edit_enter_changelog_desc' => 'どのような変更を行ったのかを記録してください',
+ 'pages_edit_enter_changelog' => '編集内容を入力',
+ 'pages_editor_switch_title' => 'エディタの切り替え',
+ 'pages_editor_switch_are_you_sure' => 'このページのエディタを変更してもよろしいですか?',
+ 'pages_editor_switch_consider_following' => 'エディタを変更する場合には次の点に注意してください',
+ 'pages_editor_switch_consideration_a' => '保存すると、新しいエディタはそれ自身で種類を変更できない可能性のあるエディタを含め、今後のエディタとして利用されます。',
+ 'pages_editor_switch_consideration_b' => 'これにより、特定の状況で詳細と構文が失われる可能性があります。',
+ 'pages_editor_switch_consideration_c' => '最後の保存以降に行われたタグまたは変更ログの変更は、この変更では保持されません。',
+ 'pages_save' => 'ページを保存',
+ 'pages_title' => 'ページタイトル',
+ 'pages_name' => 'ページ名',
+ 'pages_md_editor' => 'エディタ',
+ 'pages_md_preview' => 'プレビュー',
+ 'pages_md_insert_image' => '画像を挿入',
+ 'pages_md_insert_link' => 'エンティティへのリンクを挿入',
+ 'pages_md_insert_drawing' => '図を追加',
+ 'pages_md_show_preview' => 'プレビューを表示',
+ 'pages_md_sync_scroll' => 'プレビューとスクロールを同期',
+ 'pages_md_plain_editor' => 'プレーンテキスト エディタ',
+ 'pages_drawing_unsaved' => '未保存の図が見つかりました',
+ 'pages_drawing_unsaved_confirm' => '以前に保存操作が失敗した、未保存の図が見つかりました。
+未保存の図面を復元して編集を続けますか?',
+ 'pages_not_in_chapter' => 'チャプターが設定されていません',
+ 'pages_move' => 'ページを移動',
+ 'pages_copy' => 'ページをコピー',
+ 'pages_copy_desination' => 'コピー先',
+ 'pages_copy_success' => 'ページが正常にコピーされました',
+ 'pages_permissions' => 'ページの権限設定',
+ 'pages_permissions_success' => 'ページの権限を更新しました',
+ 'pages_revision' => '編集履歴',
+ 'pages_revisions' => '編集履歴',
+ 'pages_revisions_desc' => '以下はこのページの過去の全リビジョンです。権限があれば、古いバージョンのページの見返しや比較、復元ができます。システムの設定によっては、古いリビジョンが自動削除されることがあるため、このページの全履歴がここに反映されないことがあります。',
+ 'pages_revisions_named' => ':pageName のリビジョン',
+ 'pages_revision_named' => ':pageName のリビジョン',
+ 'pages_revision_restored_from' => '#:id :summary から復元',
+ 'pages_revisions_created_by' => '作成者',
+ 'pages_revisions_date' => '日付',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'リビジョン番号',
+ 'pages_revisions_numbered' => 'リビジョン #:id',
+ 'pages_revisions_numbered_changes' => 'リビジョン #:id の変更',
+ 'pages_revisions_editor' => 'エディタの種類',
+ 'pages_revisions_changelog' => '説明',
+ 'pages_revisions_changes' => '変更点',
+ 'pages_revisions_current' => '現在のバージョン',
+ 'pages_revisions_preview' => 'プレビュー',
+ 'pages_revisions_restore' => '復元',
+ 'pages_revisions_none' => 'このページにはリビジョンがありません',
+ 'pages_copy_link' => 'リンクをコピー',
+ 'pages_edit_content_link' => 'エディタのセクションへ移動',
+ 'pages_pointer_enter_mode' => 'セクション選択モードに入る',
+ 'pages_pointer_label' => 'ページセクションのオプションポップアップ',
+ 'pages_pointer_permalink' => 'ページセクションのパーマリンク',
+ 'pages_pointer_include_tag' => 'ページセクションのインクルードタグ',
+ 'pages_pointer_toggle_link' => 'パーマリンクモード。押下するとインクルードタグを表示',
+ 'pages_pointer_toggle_include' => 'インクルードタグモード。押下するとパーマリンクを表示',
+ 'pages_permissions_active' => 'ページの権限は有効です',
+ 'pages_initial_revision' => '初回の公開',
+ 'pages_references_update_revision' => '内部リンクのシステム自動更新',
+ 'pages_initial_name' => '新規ページ',
+ 'pages_editing_draft_notification' => ':timeDiffに保存された下書きを編集しています。',
+ 'pages_draft_edited_notification' => 'このページは更新されています。下書きを破棄することを推奨します。',
+ 'pages_draft_page_changed_since_creation' => 'この下書きが作成されてから、このページが更新されました。この下書きを破棄するか、ページの変更を上書きしないように注意することを推奨します。',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count人のユーザがページの編集を開始しました',
+ 'start_b' => ':userNameがページの編集を開始しました',
+ 'time_a' => '数秒前に保存されました',
+ 'time_b' => ':minCount分前に保存されました',
+ 'message' => ':start :time. 他のユーザによる更新を上書きしないよう注意してください。',
+ ],
+ 'pages_draft_discarded' => '下書きは破棄されました。エディタは現在のページ内容へ復元されています。',
+ 'pages_draft_deleted' => '下書きを削除しました。エディタは現在のページ内容へ復元されています。',
+ 'pages_specific' => '特定のページ',
+ 'pages_is_template' => 'ページテンプレート',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'サイドバーの切り替え',
+ 'page_tags' => 'タグ',
+ 'chapter_tags' => 'チャプターのタグ',
+ 'book_tags' => 'ブックのタグ',
+ 'shelf_tags' => '本棚のタグ',
+ 'tag' => 'タグ',
+ 'tags' => 'タグ',
+ 'tags_index_desc' => 'システム内のコンテンツにタグを適用して柔軟なカテゴリ分けを行うことができます。タグはキーと値の両方を持つことができ、値は任意です。タグを適用すると、タグの名前と値を使ってコンテンツを検索することができます。',
+ 'tag_name' => 'タグの名前',
+ 'tag_value' => '内容 (オプション)',
+ 'tags_explain' => "タグを設定すると、コンテンツの管理が容易になります。\nより高度な管理をしたい場合、タグに内容を設定できます。",
+ 'tags_add' => 'タグを追加',
+ 'tags_remove' => 'このタグを削除',
+ 'tags_usages' => 'タグの総使用回数',
+ 'tags_assigned_pages' => '割り当てられているページの数',
+ 'tags_assigned_chapters' => '割り当てられているチャプターの数',
+ 'tags_assigned_books' => '割り当てられているブックの数',
+ 'tags_assigned_shelves' => '割り当てられている本棚の数',
+ 'tags_x_unique_values' => ':count個のユニークな値',
+ 'tags_all_values' => '全ての値',
+ 'tags_view_tags' => 'タグを表示',
+ 'tags_view_existing_tags' => '既存のタグを表示',
+ 'tags_list_empty_hint' => 'タグはページエディタのサイドバーまたはブック、チャプター、本棚の詳細を編集しているときに割り当てることができます。',
+ 'attachments' => '添付ファイル',
+ 'attachments_explain' => 'ファイルをアップロードまたはリンクを添付することができます。これらはサイドバーで確認できます。',
+ 'attachments_explain_instant_save' => 'この変更は即座に保存されます。',
+ 'attachments_upload' => 'アップロード',
+ 'attachments_link' => 'リンクを添付',
+ 'attachments_upload_drop' => 'ファイルをここにドラッグアンドドロップして添付ファイルとしてアップロードすることもできます。',
+ 'attachments_set_link' => 'リンクを設定',
+ 'attachments_delete' => 'この添付ファイルを削除してよろしいですか?',
+ 'attachments_dropzone' => 'アップロードするファイルをここにドロップ',
+ 'attachments_no_files' => 'ファイルはアップロードされていません',
+ 'attachments_explain_link' => 'ファイルをアップロードしたくない場合、他のページやクラウド上のファイルへのリンクを添付できます。',
+ 'attachments_link_name' => 'リンク名',
+ 'attachment_link' => '添付リンク',
+ 'attachments_link_url' => 'ファイルURL',
+ 'attachments_link_url_hint' => 'WebサイトまたはファイルへのURL',
+ 'attach' => '添付',
+ 'attachments_insert_link' => '添付ファイルへのリンクをページに追加',
+ 'attachments_edit_file' => 'ファイルを編集',
+ 'attachments_edit_file_name' => 'ファイル名',
+ 'attachments_edit_drop_upload' => 'ファイルをドロップするか、クリックしてアップロード',
+ 'attachments_order_updated' => '添付ファイルの並び順が変更されました',
+ 'attachments_updated_success' => '添付ファイルが更新されました',
+ 'attachments_deleted' => '添付は削除されました',
+ 'attachments_file_uploaded' => 'ファイルがアップロードされました',
+ 'attachments_file_updated' => 'ファイルが更新されました',
+ 'attachments_link_attached' => 'リンクがページへ添付されました',
+ 'templates' => 'テンプレート',
+ 'templates_set_as_template' => 'テンプレートに設定',
+ 'templates_explain_set_as_template' => 'このページをテンプレートとして設定すると、他のページを作成する際にこの内容を利用することができます。他のユーザーは、このページの表示権限を持っていればこのテンプレートを使用できます。',
+ 'templates_replace_content' => 'ページの内容を置換',
+ 'templates_append_content' => 'ページの末尾に追加',
+ 'templates_prepend_content' => 'ページの先頭に追加',
+
+ // Profile View
+ 'profile_user_for_x' => ':time前に作成',
+ 'profile_created_content' => '作成したコンテンツ',
+ 'profile_not_created_pages' => ':userNameはページを作成していません',
+ 'profile_not_created_chapters' => ':userNameはチャプターを作成していません',
+ 'profile_not_created_books' => ':userNameはブックを作成していません',
+ 'profile_not_created_shelves' => ':userNameは本棚を作成していません',
+
+ // Comments
+ 'comment' => 'コメント',
+ 'comments' => 'コメント',
+ 'comment_add' => 'コメント追加',
+ 'comment_none' => '表示するコメントがありません',
+ 'comment_placeholder' => 'コメントを記入してください',
+ 'comment_thread_count' => ':count 個のコメントスレッド|:count 個のコメントスレッド',
+ 'comment_archived_count' => ':count 個のアーカイブ',
+ 'comment_archived_threads' => 'アーカイブされたスレッド',
+ 'comment_save' => 'コメントを保存',
+ 'comment_new' => '新規コメント作成',
+ 'comment_created' => 'コメントを作成しました :createDiff',
+ 'comment_updated' => ':username により更新しました :updateDiff',
+ 'comment_updated_indicator' => '編集済み',
+ 'comment_deleted_success' => 'コメントを削除しました',
+ 'comment_created_success' => 'コメントを追加しました',
+ 'comment_updated_success' => 'コメントを更新しました',
+ 'comment_archive_success' => 'コメントをアーカイブしました',
+ 'comment_unarchive_success' => 'コメントのアーカイブを解除しました',
+ 'comment_view' => 'コメントを表示',
+ 'comment_jump_to_thread' => 'スレッドにジャンプ',
+ 'comment_delete_confirm' => '本当にこのコメントを削除しますか?',
+ 'comment_in_reply_to' => ':commentIdへ返信',
+ 'comment_reference' => '参照箇所',
+ 'comment_reference_outdated' => '(以前の記述)',
+ 'comment_editor_explain' => 'ここにはページに付けられたコメントを表示します。 コメントの追加と管理は保存されたページの表示時に行うことができます。',
+
+ // Revision
+ 'revision_delete_confirm' => 'このリビジョンを削除しますか?',
+ 'revision_restore_confirm' => 'このリビジョンを復元してよろしいですか?現在のページの内容が置換されます。',
+ 'revision_cannot_delete_latest' => '最新のリビジョンを削除できません。',
+
+ // Copy view
+ 'copy_consider' => 'コンテンツをコピーする場合は以下の点にご注意ください。',
+ 'copy_consider_permissions' => 'カスタム権限設定はコピーされません。',
+ 'copy_consider_owner' => 'あなたはコピーされた全てのコンテンツの所有者になります。',
+ 'copy_consider_images' => 'ページの画像ファイルは複製されず、元の画像は最初にアップロードされたページとの関係を保持します。',
+ 'copy_consider_attachments' => 'ページの添付ファイルはコピーされません。',
+ 'copy_consider_access' => '場所、所有者または権限を変更すると、以前アクセスできなかったユーザーがこのコンテンツにアクセスできるようになる可能性があります。',
+
+ // Conversions
+ 'convert_to_shelf' => '本棚に変換',
+ 'convert_to_shelf_contents_desc' => 'このブックを同じ内容の新しい棚に変換できます。このブックに含まれるチャプターは新しいブックに変換されます。このブックにチャプター内にないページが含まれている場合、このブックは名前が変更され、そのようなページを含む新しい本棚の一部となります。',
+ 'convert_to_shelf_permissions_desc' => 'このブックに設定されているすべての権限は、新しい本棚と、独自の権限が適用されていないすべての新しい子ブックにコピーされます。本棚の権限はブックの場合のように、内部のコンテンツに自動的に継承されないことに注意してください。',
+ 'convert_book' => 'ブックを変換',
+ 'convert_book_confirm' => 'このブックを変換してもよろしいですか?',
+ 'convert_undo_warning' => 'これは簡単には元に戻せません。',
+ 'convert_to_book' => 'ブックに変換',
+ 'convert_to_book_desc' => 'このチャプターを同じ内容の新しいブックに変換できます。このチャプターで設定された権限は新しいブックにコピーされますが、親ブックから継承された権限はコピーされないため、アクセス制御が変更される可能性があります。',
+ 'convert_chapter' => 'チャプターを変換',
+ 'convert_chapter_confirm' => 'このチャプターを変換してもよろしいですか?',
+
+ // References
+ 'references' => '参照',
+ 'references_none' => 'この項目への追跡された参照はありません。',
+ 'references_to_desc' => 'この項目はシステム内の以下のコンテンツからリンクされています。',
+
+ // Watch Options
+ 'watch' => 'ウォッチ',
+ 'watch_title_default' => 'デフォルト設定',
+ 'watch_desc_default' => 'デフォルトの通知設定に戻します。',
+ 'watch_title_ignore' => '無効',
+ 'watch_desc_ignore' => 'ユーザーの通知設定に関わらず、すべての通知を無効にします。',
+ 'watch_title_new' => 'ページの作成',
+ 'watch_desc_new' => 'このアイテム内に新しいページが作成されたときに通知します。',
+ 'watch_title_updates' => 'すべてのページ更新',
+ 'watch_desc_updates' => 'ページの作成や更新を通知します。',
+ 'watch_desc_updates_page' => 'ページの更新を通知します。',
+ 'watch_title_comments' => 'すべてのページ更新とコメント',
+ 'watch_desc_comments' => 'ページの作成・更新、およびコメント追加を通知します。',
+ 'watch_desc_comments_page' => 'ページの更新およびコメント追加を通知します。',
+ 'watch_change_default' => 'デフォルトの通知設定を変更する',
+ 'watch_detail_ignore' => '通知無効',
+ 'watch_detail_new' => 'ページ作成をウォッチ',
+ 'watch_detail_updates' => 'ページの作成と更新をウォッチ',
+ 'watch_detail_comments' => 'ページの作成・更新とコメントをウォッチ',
+ 'watch_detail_parent_book' => '親ブックでウォッチ',
+ 'watch_detail_parent_book_ignore' => '親ブックで通知無効',
+ 'watch_detail_parent_chapter' => '親チャプタでウォッチ',
+ 'watch_detail_parent_chapter_ignore' => '親チャプタで通知無効',
+];
diff --git a/lang/ja/errors.php b/lang/ja/errors.php
new file mode 100644
index 00000000000..0c1c8d84ad5
--- /dev/null
+++ b/lang/ja/errors.php
@@ -0,0 +1,135 @@
+ 'リクエストされたページへの権限がありません。',
+ 'permissionJson' => '要求されたアクションを実行する権限がありません。',
+
+ // Auth
+ 'error_user_exists_different_creds' => ':emailを持つユーザは既に存在しますが、資格情報が異なります。',
+ 'auth_pre_register_theme_prevention' => '指定された内容によるユーザーアカウントの登録はできません。',
+ 'email_already_confirmed' => 'Eメールは既に確認済みです。ログインしてください。',
+ 'email_confirmation_invalid' => 'この確認トークンは無効か、または既に使用済みです。登録を再試行してください。',
+ 'email_confirmation_expired' => '確認トークンは有効期限切れです。確認メールを再送しました。',
+ 'email_confirmation_awaiting' => '使用中のアカウントのメールアドレスを確認する必要があります',
+ 'ldap_fail_anonymous' => '匿名バインドを用いたLDAPアクセスに失敗しました',
+ 'ldap_fail_authed' => '識別名, パスワードを用いたLDAPアクセスに失敗しました',
+ 'ldap_extension_not_installed' => 'LDAP PHP extensionがインストールされていません',
+ 'ldap_cannot_connect' => 'LDAPサーバに接続できませんでした',
+ 'saml_already_logged_in' => '既にログインしています',
+ 'saml_no_email_address' => '外部認証システムから提供されたデータに、このユーザーのメールアドレスが見つかりませんでした',
+ 'saml_invalid_response_id' => '外部認証システムからの要求がアプリケーションによって開始されたプロセスによって認識されません。ログイン後に戻るとこの問題が発生する可能性があります。',
+ 'saml_fail_authed' => ':systemを利用したログインに失敗しました。システムは正常な認証を提供しませんでした。',
+ 'oidc_already_logged_in' => '既にログインしています',
+ 'oidc_no_email_address' => '外部認証システムから提供されたデータに、このユーザーのメールアドレスが見つかりませんでした',
+ 'oidc_fail_authed' => ':systemを利用したログインに失敗しました。システムは正常な認証を提供しませんでした。',
+ 'social_no_action_defined' => 'アクションが定義されていません',
+ 'social_login_bad_response' => ":socialAccountのログイン中にエラーが発生しました:\n:error",
+ 'social_account_in_use' => ':socialAccountアカウントは既に使用されています。:socialAccountのオプションからログインを試行してください。',
+ 'social_account_email_in_use' => ':emailは既に使用されています。ログイン後、プロフィール設定から:socialAccountアカウントを接続できます。',
+ 'social_account_existing' => 'アカウント:socialAccountは既にあなたのプロフィールに接続されています。',
+ 'social_account_already_used_existing' => 'この:socialAccountアカウントは既に他のユーザが使用しています。',
+ 'social_account_not_used' => 'この:socialAccountアカウントはどのユーザにも接続されていません。プロフィール設定から接続できます。',
+ 'social_account_register_instructions' => 'まだアカウントをお持ちでない場合、:socialAccountオプションから登録できます。',
+ 'social_driver_not_found' => 'Social driverが見つかりません',
+ 'social_driver_not_configured' => 'あなたの:socialAccount設定は正しく構成されていません。',
+ 'invite_token_expired' => 'この招待リンクの有効期限が切れています。 代わりにアカウントのパスワードをリセットしてみてください。',
+ 'login_user_not_found' => 'このアクションのユーザーが見つかりません。',
+
+ // System
+ 'path_not_writable' => 'ファイルパス :filePath へアップロードできませんでした。サーバ上での書き込みが許可されているか確認してください。',
+ 'cannot_get_image_from_url' => ':url から画像を取得できませんでした。',
+ 'cannot_create_thumbs' => 'このサーバはサムネイルを作成できません。GD PHP extensionがインストールされていることを確認してください。',
+ 'server_upload_limit' => 'このサイズの画像をアップロードすることは許可されていません。ファイルサイズを小さくし、再試行してください。',
+ 'server_post_limit' => 'サーバーは提供されたデータ量を受け取ることができません。少ないデータまたは小さいファイルでもう一度お試しください。',
+ 'uploaded' => 'このサイズの画像をアップロードすることは許可されていません。ファイルサイズを小さくし、再試行してください。',
+
+ // Drawing & Images
+ 'image_upload_error' => '画像アップロード時にエラーが発生しました。',
+ 'image_upload_type_error' => 'アップロード中の画像の種類が無効です',
+ 'image_upload_replace_type' => '画像ファイルの置き換えは同じ種類でなければなりません',
+ 'image_upload_memory_limit' => 'システムリソースの制限により、画像のアップロードやサムネイルの作成に失敗しました。',
+ 'image_thumbnail_memory_limit' => 'システムリソース制限のため、画像サイズのバリエーションを作成できませんでした。',
+ 'image_gallery_thumbnail_memory_limit' => 'システムリソース制限のため、ギャラリーのサムネイルを作成できませんでした。',
+ 'drawing_data_not_found' => '描画データを読み込めませんでした。描画ファイルが存在しないか、アクセス権限がありません。',
+
+ // Attachments
+ 'attachment_not_found' => '添付ファイルが見つかりません',
+ 'attachment_upload_error' => '添付ファイルのアップロード中にエラーが発生しました',
+
+ // Pages
+ 'page_draft_autosave_fail' => '下書きの保存に失敗しました。インターネットへ接続してください。',
+ 'page_draft_delete_fail' => '下書きページの削除および現在ページ内容の取得に失敗しました。',
+ 'page_custom_home_deletion' => 'ホームページに設定されているページは削除できません',
+
+ // Entities
+ 'entity_not_found' => 'エンティティが見つかりません',
+ 'bookshelf_not_found' => '本棚が見つかりません',
+ 'book_not_found' => 'ブックが見つかりません',
+ 'page_not_found' => 'ページが見つかりません',
+ 'chapter_not_found' => 'チャプターが見つかりません',
+ 'selected_book_not_found' => '選択されたブックが見つかりません',
+ 'selected_book_chapter_not_found' => '選択されたブック、またはチャプターが見つかりません',
+ 'guests_cannot_save_drafts' => 'ゲストは下書きを保存できません',
+
+ // Users
+ 'users_cannot_delete_only_admin' => '唯一の管理者を削除することはできません',
+ 'users_cannot_delete_guest' => 'ゲストユーザを削除することはできません',
+ 'users_could_not_send_invite' => '招待メールの送信に失敗したため、ユーザーを作成できませんでした。',
+
+ // Roles
+ 'role_cannot_be_edited' => 'この役割は編集できません',
+ 'role_system_cannot_be_deleted' => 'この役割はシステムで管理されているため、削除できません',
+ 'role_registration_default_cannot_delete' => 'この役割を登録時のデフォルトに設定することはできません',
+ 'role_cannot_remove_only_admin' => 'このユーザーは、管理者の役割に割り当てられている唯一のユーザーです。削除する前に別のユーザーに管理者の役割を割り当ててください。',
+
+ // Comments
+ 'comment_list' => 'コメントを取得中にエラーが発生しました。',
+ 'cannot_add_comment_to_draft' => '下書きにコメントは追加できません。',
+ 'comment_add' => 'コメントの追加・更新中にエラーが発生しました。',
+ 'comment_delete' => 'コメントを削除中にエラーが発生しました。',
+ 'empty_comment' => '空のコメントは追加できません。',
+
+ // Error pages
+ '404_page_not_found' => 'ページが見つかりません',
+ 'sorry_page_not_found' => 'ページを見つけることができませんでした。',
+ 'sorry_page_not_found_permission_warning' => 'このページが存在すると思われる場合は、閲覧の権限がない可能性があります。',
+ 'image_not_found' => '画像が見つかりません',
+ 'image_not_found_subtitle' => '画像を見つけることができませんでした。',
+ 'image_not_found_details' => 'この画像が存在することを予期していた場合は、削除された可能性があります。',
+ 'return_home' => 'ホームに戻る',
+ 'error_occurred' => 'エラーが発生しました',
+ 'app_down' => ':appNameは現在停止しています',
+ 'back_soon' => '回復までしばらくお待ちください。',
+
+ // Import
+ 'import_zip_cant_read' => 'ZIPファイルを読み込めません。',
+ 'import_zip_cant_decode_data' => 'ZIPファイル内に data.json が見つからないかデコードできませんでした。',
+ 'import_zip_no_data' => 'ZIPファイルのデータにブック、チャプター、またはページコンテンツがありません。',
+ 'import_zip_data_too_large' => 'ZIPに含まれる data.json が、アプリケーションで設定された最大アップロードサイズを超えています。',
+ 'import_validation_failed' => 'エラーによりインポートZIPの検証に失敗しました:',
+ 'import_zip_failed_notification' => 'ZIP ファイルのインポートに失敗しました。',
+ 'import_perms_books' => 'ブックを作成するために必要な権限がありません。',
+ 'import_perms_chapters' => 'チャプタを作成するために必要な権限がありません。',
+ 'import_perms_pages' => 'ページを作成するために必要な権限がありません。',
+ 'import_perms_images' => '画像を作成するために必要な権限がありません。',
+ 'import_perms_attachments' => '添付ファイルを作成するために必要な権限がありません。',
+
+ // API errors
+ 'api_no_authorization_found' => 'リクエストに認証トークンが見つかりません',
+ 'api_bad_authorization_format' => 'リクエストに認証トークンが見つかりましたが、形式が正しくないようです',
+ 'api_user_token_not_found' => '提供された認証トークンに一致するAPIトークンが見つかりませんでした',
+ 'api_incorrect_token_secret' => '利用されたAPIトークンに対して提供されたシークレットが正しくありません',
+ 'api_user_no_api_permission' => '使用されているAPIトークンの所有者には、API呼び出しを行う権限がありません',
+ 'api_user_token_expired' => '認証トークンが期限切れです。',
+ 'api_cookie_auth_only_get' => 'Cookie ベースの認証で API を使用する場合、GET リクエストのみが許可されます',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'テストメール送信時にエラーが発生しました:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'URLはサーバサイドリクエストが許可されたホストではありません。',
+];
diff --git a/lang/ja/notifications.php b/lang/ja/notifications.php
new file mode 100644
index 00000000000..ea6286b513f
--- /dev/null
+++ b/lang/ja/notifications.php
@@ -0,0 +1,29 @@
+ 'ページへのコメント追加: :pageName',
+ 'new_comment_intro' => ':appName でページにコメントが追加されました',
+ 'new_page_subject' => 'ページの作成: :pageName',
+ 'new_page_intro' => ':appName でページが作成されました',
+ 'updated_page_subject' => 'ページの更新: :pageName',
+ 'updated_page_intro' => ':appName でページが更新されました',
+ 'updated_page_debounce' => '大量の通知を防ぐために、しばらくの間は同じユーザがこのページをさらに編集しても通知は送信されません。',
+ 'comment_mention_subject' => 'ページのコメントであなたにメンションされています: :pageName',
+ 'comment_mention_intro' => ':appName: のコメントであなたにメンションされました',
+
+ 'detail_page_name' => 'ページ名:',
+ 'detail_page_path' => 'ページパス:',
+ 'detail_commenter' => 'コメントユーザ:',
+ 'detail_comment' => 'コメント:',
+ 'detail_created_by' => '作成ユーザ:',
+ 'detail_updated_by' => '更新ユーザ:',
+
+ 'action_view_comment' => 'コメントを表示',
+ 'action_view_page' => 'ページを表示',
+
+ 'footer_reason' => 'この項目のアクティビティは :link による対象となっているため、この通知が送信されました。',
+ 'footer_reason_link' => '通知設定',
+];
diff --git a/resources/lang/ja/pagination.php b/lang/ja/pagination.php
similarity index 100%
rename from resources/lang/ja/pagination.php
rename to lang/ja/pagination.php
diff --git a/lang/ja/passwords.php b/lang/ja/passwords.php
new file mode 100644
index 00000000000..cf4d43114fc
--- /dev/null
+++ b/lang/ja/passwords.php
@@ -0,0 +1,15 @@
+ 'パスワードは6文字以上である必要があります。',
+ 'user' => "このEメールアドレスに一致するユーザが見つかりませんでした。",
+ 'token' => 'このメールアドレスのパスワードリセットトークンは無効です。',
+ 'sent' => 'パスワードリセットリンクを送信しました。',
+ 'reset' => 'パスワードはリセットされました。',
+
+];
diff --git a/lang/ja/preferences.php b/lang/ja/preferences.php
new file mode 100644
index 00000000000..c7451839372
--- /dev/null
+++ b/lang/ja/preferences.php
@@ -0,0 +1,52 @@
+ 'マイアカウント',
+
+ 'shortcuts' => 'ショートカット',
+ 'shortcuts_interface' => 'UIショートカット設定',
+ 'shortcuts_toggle_desc' => 'ここでは、ナビゲーションやアクションに使用されるキーボードシステムインターフェイスのショートカットを有効または無効にすることができます。',
+ 'shortcuts_customize_desc' => '以下の各ショートカットをカスタマイズできます。ショートカットの入力を選択した後、希望のキーの組み合わせを押してください。',
+ 'shortcuts_toggle_label' => 'キーボードショートカットを有効にする',
+ 'shortcuts_section_navigation' => 'ナビゲーション',
+ 'shortcuts_section_actions' => '共通のアクション',
+ 'shortcuts_save' => 'ショートカットを保存',
+ 'shortcuts_overlay_desc' => '注:ショートカットが有効な場合はヘルパーオーバーレイが利用できます。「?」を押すと現在画面に表示されているアクションで利用可能なショートカットをハイライト表示します。',
+ 'shortcuts_update_success' => 'ショートカットの設定を更新しました。',
+ 'shortcuts_overview_desc' => 'システムのユーザーインターフェイスを操作するためのキーボードショートカットを管理します。',
+
+ 'notifications' => '通知設定',
+ 'notifications_desc' => 'システム内で特定のアクティビティが実行されたときに受信する電子メール通知を制御します。',
+ 'notifications_opt_own_page_changes' => '自分が所有するページの変更を通知する',
+ 'notifications_opt_own_page_comments' => '自分が所有するページへのコメントを通知する',
+ 'notifications_opt_comment_mentions' => 'コメントでメンションされたときに通知する',
+ 'notifications_opt_comment_replies' => '自分のコメントへの返信を通知する',
+ 'notifications_save' => '設定を保存',
+ 'notifications_update_success' => '通知設定を更新しました。',
+ 'notifications_watched' => 'ウォッチ/通知無効 項目',
+ 'notifications_watched_desc' => '以下はカスタムウォッチの設定が適用されている項目です。 これらの設定を更新するには、項目を表示してサイドバーのウォッチオプションを参照してください。',
+
+ 'auth' => 'アクセス & セキュリティ',
+ 'auth_change_password' => 'パスワードの変更',
+ 'auth_change_password_desc' => 'アプリケーションにログインするために使用するパスワードを変更します。これは少なくとも8文字以上でなければなりません。',
+ 'auth_change_password_success' => 'パスワードが更新されました!',
+
+ 'profile' => 'プロフィール詳細',
+ 'profile_desc' => 'コミュニケーションやシステムのパーソナライズでの使用および、他のユーザーに表示されるアカウントの詳細を管理します。',
+ 'profile_view_public' => '公開プロフィールを表示',
+ 'profile_name_desc' => '実行したアクティビティや所有しているコンテンツを通じて、システム内で他のユーザーに表示される表示名を設定します。',
+ 'profile_email_desc' => 'このメールアドレスは通知、アクティブなシステム認証、システムアクセスに使用されます。',
+ 'profile_email_no_permission' => '残念ながらメールアドレスを変更する権限がありません。 これを変更したい場合は管理者に変更を依頼する必要があります。',
+ 'profile_avatar_desc' => 'システム内で他のユーザーに自分を表現するために使用される画像を選択します。 この画像は幅と高さが256pxの正方形が最適です。',
+ 'profile_admin_options' => '管理者オプション',
+ 'profile_admin_options_desc' => '役割の割り当て管理など、管理者レベルの追加オプションはアプリケーションの「設定 > ユーザー」エリアにあります。',
+
+ 'delete_account' => 'アカウントを削除',
+ 'delete_my_account' => '自身のアカウント削除',
+ 'delete_my_account_desc' => 'システムからユーザーアカウントを完全に削除します。このアカウントを復元したり、この操作を元に戻したりすることはできません。 作成されたページやアップロードされた画像などのコンテンツは残ります。',
+ 'delete_my_account_warning' => '本当にアカウントを削除しますか?',
+];
diff --git a/lang/ja/settings.php b/lang/ja/settings.php
new file mode 100644
index 00000000000..717a4c10ffc
--- /dev/null
+++ b/lang/ja/settings.php
@@ -0,0 +1,374 @@
+ '設定',
+ 'settings_save' => '設定を保存',
+ 'system_version' => 'システムバージョン',
+ 'categories' => 'カテゴリー',
+
+ // App Settings
+ 'app_customization' => 'カスタマイズ',
+ 'app_features_security' => '機能とセキュリティ',
+ 'app_name' => 'アプリケーション名',
+ 'app_name_desc' => 'この名前はヘッダーやEメール内で表示されます。',
+ 'app_name_header' => 'ヘッダーにアプリケーション名を表示する',
+ 'app_public_access' => 'パブリック・アクセス',
+ 'app_public_access_desc' => 'このオプションを有効にすると、ログインしていない訪問者があなたのBookStackインスタンスのコンテンツにアクセスできるようになります。',
+ 'app_public_access_desc_guest' => '一般の訪問者のアクセスは、「ゲスト」ユーザー権限を通じて制御することができます。',
+ 'app_public_access_toggle' => 'パブリックアクセスを許可',
+ 'app_public_viewing' => 'アプリケーションを公開する',
+ 'app_secure_images' => '画像アップロード時のセキュリティを強化',
+ 'app_secure_images_toggle' => 'より高いセキュリティの画像アップロードを可能にする',
+ 'app_secure_images_desc' => 'パフォーマンスの観点から、全ての画像が公開になっています。このオプションを有効にすると、画像URLの先頭にランダムで推測困難な文字列が追加され、アクセスを困難にします。',
+ 'app_default_editor' => 'デフォルトのページエディタ',
+ 'app_default_editor_desc' => '新しいページを編集するときにデフォルトで使用されるエディタを選択してください。これは権限が許可されているページレベルで上書きできます。',
+ 'app_custom_html' => 'カスタムheadタグ',
+ 'app_custom_html_desc' => 'スタイルシートやアナリティクスコード追加したい場合、ここを編集します。これはの最下部に挿入されます。',
+ 'app_custom_html_disabled_notice' => '重大な変更を元に戻せるよう、この設定ページではカスタムのHTML headコンテンツが無効になっています。',
+ 'app_logo' => 'ロゴ',
+ 'app_logo_desc' => 'これはアプリケーションのヘッダーバー、およびその他のエリアで使用されます。この画像は高さが86pxであるべきです。大きな画像は縮小されます。',
+ 'app_icon' => 'アプリケーション アイコン',
+ 'app_icon_desc' => 'このアイコンはブラウザのタブとショートカットアイコンに使用されます。これは256pxの正方形PNG画像であるべきです。',
+ 'app_homepage' => 'アプリケーションのホームページ',
+ 'app_homepage_desc' => 'デフォルトのビューの代わりにホームページに表示するビューを選択します。選択したページの権限は無視されます。',
+ 'app_homepage_select' => 'ページを選択',
+ 'app_footer_links' => 'フッタのリンク',
+ 'app_footer_links_desc' => 'サイトフッタ内に表示するリンクを追加します。これらはログインを必要としないページを含め、ほとんどのページの下部に表示されます。「trans::」のラベルを使用して、システム定義の翻訳を使用できます。例えば「trans::common.privacy_policy」を使用すると翻訳されたテキスト「プライバシーポリシー」が提供され、「trans::common.terms_of_service」を使用すると翻訳されたテキスト「利用規約」が提供されます。',
+ 'app_footer_links_label' => '表示するテキスト',
+ 'app_footer_links_url' => 'リンク先の URL',
+ 'app_footer_links_add' => 'フッタのリンクを追加',
+ 'app_disable_comments' => 'コメントを無効にする',
+ 'app_disable_comments_toggle' => 'コメントを無効にする',
+ 'app_disable_comments_desc' => 'アプリケーション内のすべてのページのコメントを無効にします。既存のコメントは表示されません。',
+
+ // Color settings
+ 'color_scheme' => 'アプリケーションの配色',
+ 'color_scheme_desc' => 'アプリケーションのユーザーインターフェイスで使用する色を設定します。 色はダークモードとライトモードで個別に設定することができ、テーマへの適合と読みやすさを確保することができます。',
+ 'ui_colors_desc' => 'アプリケーションのプライマリカラーとデフォルトリンクカラーを設定します。プライマリカラーは主にヘッダーバナー、ボタン、インターフェイスの装飾に使用されます。 デフォルトのリンク色はテキストベースのリンクとアクションに使用されます。これは作成されたコンテンツとアプリケーションインターフェイスの両方に適用されます。',
+ 'app_color' => 'プライマリ色',
+ 'link_color' => 'デフォルトのリンク色',
+ 'content_colors_desc' => 'ページ構成階層の各要素に色を設定します。読みやすさを考慮して、デフォルトの色と同じような明るさの色を選ぶことをお勧めします。',
+ 'bookshelf_color' => '本棚の色',
+ 'book_color' => 'ブックの色',
+ 'chapter_color' => 'チャプターの色',
+ 'page_color' => 'ページの色',
+ 'page_draft_color' => '下書きページの色',
+
+ // Registration Settings
+ 'reg_settings' => '登録設定',
+ 'reg_enable' => '登録を有効にする',
+ 'reg_enable_toggle' => '登録を有効にする',
+ 'reg_enable_desc' => '登録を有効にすると、ユーザーはアプリケーションユーザーとしてサインアップできるようになります。登録するとデフォルトの役割が1つ与えられます。',
+ 'reg_default_role' => '新規登録時のデフォルト役割',
+ 'reg_enable_external_warning' => '外部のLDAPまたはSAML認証が有効の場合、上記のオプションは無視されます。存在しないメンバーのユーザーアカウントは、使用している外部システムでの認証に成功した場合に自動的に作成されます。',
+ 'reg_email_confirmation' => '確認メール',
+ 'reg_email_confirmation_toggle' => 'メールによる確認を行う',
+ 'reg_confirm_email_desc' => 'ドメイン制限を有効にしている場合はEメール認証が必須となり、この項目は無視されます。',
+ 'reg_confirm_restrict_domain' => 'ドメイン制限',
+ 'reg_confirm_restrict_domain_desc' => '特定のドメインのみ登録できるようにする場合、以下にカンマ区切りで入力します。設定された場合、Eメール認証が必須になります。 登録後、ユーザは自由にEメールアドレスを変更できます。',
+ 'reg_confirm_restrict_domain_placeholder' => '制限しない',
+
+ // Sorting Settings
+ 'sorting' => '一覧とソート',
+ 'sorting_book_default' => 'ブックのデフォルトソートルール',
+ 'sorting_book_default_desc' => '新しいブックに適用するデフォルトのソートルールを選択します。これは既存のブックには影響しません。ルールはブックごとに上書きすることができます。',
+ 'sorting_rules' => 'ソートルール',
+ 'sorting_rules_desc' => 'これらはシステム内のコンテンツに適用できる事前定義のソート操作です。',
+ 'sort_rule_assigned_to_x_books' => ':count 個のブックに割当|:count 個のブックに割当',
+ 'sort_rule_create' => 'ソートルールを作成',
+ 'sort_rule_edit' => 'ソートルールの編集',
+ 'sort_rule_delete' => 'ソートルールを削除',
+ 'sort_rule_delete_desc' => 'このソートルールをシステムから削除します。これを使用しているブックは手動ソートに戻ります。',
+ 'sort_rule_delete_warn_books' => 'このソートルールは現在 :count 個のブックで使用されています。削除してもよろしいですか?',
+ 'sort_rule_delete_warn_default' => 'このソートルールは現在ブックのデフォルトソートに使用されています。削除してもよろしいですか?',
+ 'sort_rule_details' => 'ソートルールの詳細',
+ 'sort_rule_details_desc' => 'ユーザがソートを選択する際にリストに表示される、ソートルールの名前を設定します。',
+ 'sort_rule_operations' => 'ソート操作',
+ 'sort_rule_operations_desc' => '利用可能な操作のリストから、実行するソート操作を追加してソートルールを設定します。操作は上から下へ順番に適用されます。ここで変更を行うと、保存時に割り当てられたすべてのブックに適用されます。',
+ 'sort_rule_available_operations' => '利用可能な操作',
+ 'sort_rule_available_operations_empty' => '残った操作はありません',
+ 'sort_rule_configured_operations' => '設定された操作',
+ 'sort_rule_configured_operations_empty' => '「利用可能な操作」リストから操作をドラッグ/追加してください',
+ 'sort_rule_op_asc' => '(昇順)',
+ 'sort_rule_op_desc' => '(降順)',
+ 'sort_rule_op_name' => '名前 - キャラクタ順',
+ 'sort_rule_op_name_numeric' => '名前 - 数値順',
+ 'sort_rule_op_created_date' => '作成日時',
+ 'sort_rule_op_updated_date' => '更新日時',
+ 'sort_rule_op_chapters_first' => 'チャプタを最初に',
+ 'sort_rule_op_chapters_last' => 'チャプタを最後に',
+ 'sorting_page_limits' => 'ページング表示制限',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'メンテナンス',
+ 'maint_image_cleanup' => '画像のクリーンアップ',
+ 'maint_image_cleanup_desc' => 'ページや履歴の内容をスキャンして、どの画像や図面が現在使用されているか、どの画像が余っているかをチェックします。この機能を実行する前に、データベースと画像の完全なバックアップを作成してください。',
+ 'maint_delete_images_only_in_revisions' => 'また、古いページのリビジョンにしか存在しない画像も削除します。',
+ 'maint_image_cleanup_run' => 'クリーンアップを実行',
+ 'maint_image_cleanup_warning' => ':count 個、使用されていない可能性のある画像が見つかりました。これらの画像を削除してもよろしいですか?',
+ 'maint_image_cleanup_success' => '使われていない可能性のある画像を:count個発見し、削除しました。',
+ 'maint_image_cleanup_nothing_found' => '未使用の画像がないため、何も削除しませんでした。',
+ 'maint_send_test_email' => 'テストメールを送信',
+ 'maint_send_test_email_desc' => 'プロフィールに指定されたメールアドレスにテストメールを送信します。',
+ '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' => 'ごみ箱を開く',
+ 'maint_regen_references' => '参照を再生成',
+ 'maint_regen_references_desc' => 'この操作により、データベース内の項目間参照インデックスが再構築されます。これは通常自動的に処理されますが、この操作は古いコンテンツや非公式の方法で追加されたコンテンツのインデックス作成に役立ちます。',
+ 'maint_regen_references_success' => '参照インデックスが再生成されました!',
+ 'maint_timeout_command_note' => '注意: この操作の実行には時間がかかる場合があり、一部のWeb環境ではタイムアウトの問題が発生する可能性があります。別の方法として、ターミナルコマンドを利用してこの操作を実行することもできます。',
+
+ // Recycle Bin
+ 'recycle_bin' => 'ごみ箱',
+ 'recycle_bin_desc' => '削除されたアイテムを復元するか、システムから完全に削除できます。このリストは、権限フィルターが適用されているシステム内の同様のアクティビティリストとは異なり、フィルタリングされていません。',
+ 'recycle_bin_deleted_item' => '削除されたアイテム',
+ 'recycle_bin_deleted_parent' => '親',
+ '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_restore_parent' => '親を復元',
+ 'recycle_bin_destroy_notification' => 'ごみ箱から合計:count個のアイテムを削除しました。',
+ 'recycle_bin_restore_notification' => 'ごみ箱から合計:count個のアイテムを復元しました。',
+
+ // Audit Log
+ 'audit' => '監査ログ',
+ 'audit_desc' => 'この監査ログには、システムで追跡されているアクティビティのリストが表示されます。このリストは、権限フィルターが適用されているシステム内の同様のアクティビティリストとは異なり、フィルタリングされていません。',
+ '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_ip' => 'IPアドレス',
+ 'audit_table_date' => 'アクティビティの日時',
+ 'audit_date_from' => '開始日',
+ 'audit_date_to' => '終了日',
+
+ // Role Settings
+ 'roles' => '役割',
+ 'role_user_roles' => '役割',
+ 'roles_index_desc' => '役割は、ユーザーをグループ化しメンバーにシステム権限を与えるために使用されます。ユーザーが複数の役割のメンバーである場合、与えられた権限は積み重なり、ユーザーはすべての能力を継承します。',
+ 'roles_x_users_assigned' => ':count人のユーザーに割り当て|:count人のユーザーに割り当て',
+ 'roles_x_permissions_provided' => ':count件の権限|:count件の権限',
+ 'roles_assigned_users' => '割り当てユーザ数',
+ 'roles_permissions_provided' => '提供される権限数',
+ 'role_create' => '役割を作成',
+ 'role_delete' => '役割を削除',
+ 'role_delete_confirm' => '役割「:roleName」を削除します。',
+ 'role_delete_users_assigned' => 'この役割は:userCount人のユーザに付与されています。該当するユーザを他の役割へ移行できます。',
+ 'role_delete_no_migration' => "ユーザを移行しない",
+ 'role_delete_sure' => '本当に役割を削除してよろしいですか?',
+ 'role_edit' => '役割を編集',
+ 'role_details' => '概要',
+ 'role_name' => '役割名',
+ 'role_desc' => '役割の説明',
+ 'role_mfa_enforced' => '多要素認証を要求する',
+ 'role_external_auth_id' => '外部認証ID',
+ 'role_system' => 'システム権限',
+ 'role_manage_users' => 'ユーザ管理',
+ 'role_manage_roles' => '役割と権限の管理',
+ 'role_manage_entity_permissions' => '全てのブック, チャプター, ページに対する権限の管理',
+ 'role_manage_own_entity_permissions' => '自身のブック, チャプター, ページに対する権限の管理',
+ 'role_manage_page_templates' => 'ページテンプレートの管理',
+ 'role_access_api' => 'システムのAPIへのアクセス',
+ 'role_manage_settings' => 'アプリケーション設定の管理',
+ 'role_export_content' => 'コンテンツのエクスポート',
+ 'role_import_content' => 'コンテンツのインポート',
+ 'role_editor_change' => 'ページエディタの変更',
+ 'role_notifications' => '通知の受信と管理',
+ 'role_permission_note_users_and_roles' => '技術的には、これらの権限によりシステムのユーザーおよび役割の可視性と検索も提供されます。',
+ 'role_asset' => 'アセット権限',
+ 'roles_system_warning' => '上記の3つの権限のいずれかを付与することは、ユーザーが自分の特権またはシステム内の他のユーザーの特権を変更できる可能性があることに注意してください。これらの権限は信頼できるユーザーにのみ割り当ててください。',
+ 'role_asset_desc' => '各アセットに対するデフォルトの権限を設定します。ここで設定した権限が優先されます。',
+ 'role_asset_admins' => '管理者にはすべてのコンテンツへのアクセス権が自動的に付与されますが、これらのオプションはUIオプションを表示または非表示にする場合があります。',
+ 'role_asset_image_view_note' => 'これは画像マネージャー内の可視性に関連しています。アップロードされた画像ファイルへの実際のアクセスは、システムの画像保存オプションに依存します。',
+ 'role_asset_users_note' => '技術的には、これらの権限によりシステム内のユーザーの可視性と検索も提供されます。',
+ 'role_all' => '全て',
+ 'role_own' => '自身',
+ 'role_controlled_by_asset' => 'このアセットに対し、右記の操作を許可:',
+ 'role_save' => '役割を保存',
+ 'role_users' => 'この役割を持つユーザー',
+ 'role_users_none' => 'この役割が付与されたユーザーはいません',
+
+ // Users
+ 'users' => 'ユーザー',
+ 'users_index_desc' => 'システム内で個々のユーザーアカウントを作成し、管理します。ユーザーアカウントは、ログインおよびコンテンツとアクティビティの帰属のために使用されます。アクセス許可は主に役割ベースですが、ユーザーコンテンツの所有権やその他の要因も、許可とアクセスに影響する場合があります。',
+ 'user_profile' => 'ユーザプロフィール',
+ 'users_add_new' => 'ユーザーを追加',
+ 'users_search' => 'ユーザー検索',
+ 'users_latest_activity' => '最新のアクティビティ',
+ 'users_details' => 'ユーザーの詳細',
+ 'users_details_desc' => 'このユーザーの表示名とメールアドレスを設定します。メールアドレスは、アプリケーションへのログインに使用されます。',
+ 'users_details_desc_no_email' => 'このユーザーの表示名を設定して、他のユーザーが認識できるようにします。',
+ 'users_role' => 'ユーザーの役割',
+ 'users_role_desc' => 'このユーザーに割り当てる役割を選択します。ユーザーが複数の役割に割り当てられている場合は、それらの役割の権限が重ね合わされ、割り当てられた役割のすべての権限が与えられます。',
+ 'users_password' => 'ユーザー パスワード',
+ 'users_password_desc' => 'アプリケーションへのログインに利用するパスワードを設定してください。8文字以上である必要があります。',
+ 'users_send_invite_text' => 'このユーザーに招待メールを送信してユーザー自身にパスワードを設定してもらうか、あなたがここでパスワードを設定するかを選択できます。',
+ 'users_send_invite_option' => 'ユーザーに招待メールを送信',
+ 'users_external_auth_id' => '外部認証ID',
+ 'users_external_auth_id_desc' => '外部認証システム(SAML2、OIDC、LDAPなど)が使用されている場合、このBookStackユーザーを認証システムアカウントにリンクするIDです。デフォルトの電子メールベース認証を使用する場合は、このフィールドを無視できます。',
+ 'users_password_warning' => 'このユーザーのパスワードを変更したい場合にのみ、以下を入力してください。',
+ 'users_system_public' => 'このユーザーはアプリケーションにアクセスする全てのゲストを表します。ログインはできませんが、自動的に割り当てられます。',
+ 'users_delete' => 'ユーザを削除',
+ 'users_delete_named' => 'ユーザ「:userName」を削除',
+ 'users_delete_warning' => 'ユーザ「:userName」を完全に削除します。',
+ 'users_delete_confirm' => '本当にこのユーザを削除してよろしいですか?',
+ 'users_migrate_ownership' => '所有権を移行',
+ 'users_migrate_ownership_desc' => '別のユーザーをこのユーザーが現在所有しているすべてのアイテムの所有者にする場合は、ここでユーザーを選択します。',
+ 'users_none_selected' => 'ユーザが選択されていません',
+ 'users_edit' => 'ユーザー編集',
+ 'users_edit_profile' => 'プロフィール編集',
+ 'users_avatar' => 'アバター',
+ 'users_avatar_desc' => '256pxの正方形である必要があります。',
+ 'users_preferred_language' => '使用言語',
+ 'users_preferred_language_desc' => 'このオプションは、アプリケーションのユーザーインターフェイスに使用される言語を変更します。これは、ユーザーが作成したコンテンツには影響しません。',
+ 'users_social_accounts' => 'ソーシャルアカウント',
+ 'users_social_accounts_desc' => 'このユーザーのソーシャルアカウントのステータスを表示します。システムアクセスのためのプライマリ認証システムに加えて ソーシャルアカウントを使用することができます。',
+ 'users_social_accounts_info' => 'アカウントを接続すると、ログインが簡単になります。ここでアカウントの接続を解除すると、そのアカウントを経由したログインを禁止できます。接続解除後、各ソーシャルアカウントの設定にてこのアプリケーションへのアクセス許可を解除してください。',
+ 'users_social_connect' => 'アカウントを接続',
+ 'users_social_disconnect' => 'アカウントを接続解除',
+ 'users_social_status_connected' => '接続済み',
+ 'users_social_status_disconnected' => '未接続',
+ 'users_social_connected' => '「:socialAccount」がプロフィールに接続されました。',
+ 'users_social_disconnected' => '「:socialAccount」がプロフィールから接続解除されました。',
+ 'users_api_tokens' => 'APIトークン',
+ 'users_api_tokens_desc' => 'BookStack REST APIでの認証に使用するアクセストークンを作成・管理します。APIのパーミッションはトークンが属するユーザーを介して管理されます。',
+ 'users_api_tokens_none' => 'このユーザーにはAPIトークンが作成されていません',
+ 'users_api_tokens_create' => 'トークンを作成',
+ 'users_api_tokens_expires' => '有効期限',
+ 'users_api_tokens_docs' => 'APIドキュメント',
+ 'users_mfa' => '多要素認証',
+ 'users_mfa_desc' => 'アカウントのセキュリティを強化するために、多要素認証を設定してください。',
+ 'users_mfa_x_methods' => ':count個の手段が設定されています|:count個の手段が設定されています',
+ 'users_mfa_configure' => '手段を設定',
+
+ // API Tokens
+ 'user_api_token_create' => 'APIトークンの作成',
+ 'user_api_token_name' => '名前',
+ 'user_api_token_name_desc' => '利用目的を忘れないよう、トークンに読みやすい名前を付けます。',
+ 'user_api_token_expiry' => '有効期限',
+ 'user_api_token_expiry_desc' => 'このトークンの有効期限が切れる日付を設定します。この日付を過ぎると、このトークンを使用したリクエストは機能しなくなります。このフィールドを空白のままにすると、100年先に有効期限が設定されます。',
+ 'user_api_token_create_secret_message' => 'このトークンを作成するとすぐに、「トークンID」と「トークンシークレット」が生成されて表示されます。シークレットは一度しか表示されないため、続行する前に必ず値を安全な場所にコピーしてください。',
+ 'user_api_token' => 'APIトークン',
+ 'user_api_token_id' => 'トークンID',
+ 'user_api_token_id_desc' => 'これは、システムが生成した編集不可能なトークンの識別子で、APIリクエストで提供する必要があります。',
+ 'user_api_token_secret' => 'トークンシークレット',
+ 'user_api_token_secret_desc' => 'これは、システムで生成されたトークンシークレットであり、APIリクエストで提供する必要があります。これは一度しか表示されないので、この値を安全な場所にコピーしてください。',
+ 'user_api_token_created' => 'トークンの作成: :timeAgo',
+ 'user_api_token_updated' => 'トークンの更新: :timeAgo',
+ 'user_api_token_delete' => 'トークンを削除',
+ 'user_api_token_delete_warning' => 'これにより、このAPIトークン「:tokenName」がシステムから完全に削除されます。',
+ 'user_api_token_delete_confirm' => 'このAPIトークンを削除してもよろしいですか?',
+
+ // Webhooks
+ 'webhooks' => 'Webhook',
+ 'webhooks_index_desc' => 'Webhookは、システム内で特定のアクションやイベントが発生したときに外部URLにデータを送信する方法で、メッセージングシステムや通知システムなどの外部プラットフォームとのイベントベースの統合を可能にします。',
+ 'webhooks_x_trigger_events' => ':count個のトリガーイベント|:count個のトリガーイベント',
+ 'webhooks_create' => 'Webhookを作成',
+ 'webhooks_none_created' => 'Webhookはまだ作成されていません。',
+ 'webhooks_edit' => 'Webhookを編集',
+ 'webhooks_save' => 'Webhookを保存',
+ 'webhooks_details' => 'Webhookの詳細',
+ 'webhooks_details_desc' => 'ユーザーフレンドリーな名前とWebhookデータの送信先にするPOSTエンドポイントを指定します。',
+ 'webhooks_events' => 'Webhookのイベント',
+ 'webhooks_events_desc' => 'このWebhookの呼び出しをトリガーするすべてのイベントを選択します。',
+ 'webhooks_events_warning' => 'これらのイベントはカスタム権限が適用されている場合でも、選択したすべてのイベントに対してトリガーされることに注意してください。このWebhookの利用により機密コンテンツが公開されないことを確認してください。',
+ 'webhooks_events_all' => '全てのシステムイベント',
+ 'webhooks_name' => 'Webhook名',
+ 'webhooks_timeout' => 'Webhookリクエストタイムアウト (秒)',
+ 'webhooks_endpoint' => 'Webhookエンドポイント',
+ 'webhooks_active' => '有効なWebhook',
+ 'webhook_events_table_header' => 'イベント',
+ 'webhooks_delete' => 'Webhookを削除',
+ 'webhooks_delete_warning' => 'これにより、このWebhook「:webhookName」がシステムから完全に削除されます。',
+ 'webhooks_delete_confirm' => 'このWebhookを削除してよろしいですか?',
+ 'webhooks_format_example' => 'Webhookのフォーマット例',
+ 'webhooks_format_example_desc' => 'Webhookのデータは、設定されたエンドポイントにPOSTリクエストにより以下のフォーマットのJSONで送信されます。related_item と url プロパティはオプションであり、トリガーされるイベントの種類によって異なります。',
+ 'webhooks_status' => 'Webhookの状態',
+ 'webhooks_last_called' => '最後の実行:',
+ 'webhooks_last_errored' => '最後のエラー:',
+ 'webhooks_last_error_message' => '最後のエラーのメッセージ:',
+
+ // Licensing
+ 'licenses' => 'ライセンス',
+ 'licenses_desc' => 'このページではBookStackとBookStackで使用されるプロジェクトやライブラリのライセンス情報を詳しく説明します。開発環境でのみ使用するものも多数含まれています。',
+ 'licenses_bookstack' => 'BookStack ライセンス',
+ 'licenses_php' => 'PHPライブラリライセンス',
+ 'licenses_js' => 'JavaScriptライブラリライセンス',
+ 'licenses_other' => 'その他のライセンス',
+ 'license_details' => 'ライセンス詳細',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/ja/validation.php b/lang/ja/validation.php
new file mode 100644
index 00000000000..d7617b5d3d9
--- /dev/null
+++ b/lang/ja/validation.php
@@ -0,0 +1,123 @@
+ ':attributeに同意する必要があります。',
+ 'active_url' => ':attributeは正しいURLではありません。',
+ 'after' => ':attributeは:date以降である必要があります。',
+ 'alpha' => ':attributeは文字のみが含められます。',
+ 'alpha_dash' => ':attributeは文字, 数値, ハイフンのみが含められます。',
+ 'alpha_num' => ':attributeは文字と数値のみが含められます。',
+ 'array' => ':attributeは配列である必要があります。',
+ 'backup_codes' => '提供されたコードは無効か、またはすでに使用されています。',
+ 'before' => ':attributeは:date以前である必要があります。',
+ 'between' => [
+ 'numeric' => ':attributeは:min〜:maxである必要があります。',
+ 'file' => ':attributeは:min〜:maxキロバイトである必要があります。',
+ 'string' => ':attributeは:min〜:max文字である必要があります。',
+ 'array' => ':attributeは:min〜:max個である必要があります。',
+ ],
+ '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は正しいEメールアドレスである必要があります。',
+ 'ends_with' => ':attributeは:valuesのいずれかで終わる必要があります。',
+ 'file' => ':attributeは有効なファイルである必要があります。',
+ 'filled' => ':attributeは必須です。',
+ 'gt' => [
+ 'numeric' => ':attributeは:valueより大きな値である必要があります。',
+ 'file' => ':attributeは:valueキロバイトより大きなファイルである必要があります。',
+ 'string' => ':attributeは:value文字より長い必要があります。',
+ 'array' => ':attributeには:value個より多くのアイテムを指定する必要があります。',
+ ],
+ 'gte' => [
+ 'numeric' => ':attributeは:value以上の値である必要があります。',
+ 'file' => ':attributeは:valueキロバイト以上のファイルである必要があります。',
+ 'string' => ':attributeは:value文字以上である必要があります。',
+ 'array' => ':attributeには:value個以上のアイテムを指定する必要があります。',
+ ],
+ 'exists' => '選択された:attributeは不正です。',
+ 'image' => ':attributeは画像である必要があります。',
+ 'image_extension' => ':attributeは有効かつサポートされている拡張子の画像である必要があります。',
+ 'in' => '選択された:attributeは不正です。',
+ 'integer' => ':attributeは数値である必要があります。',
+ 'ip' => ':attributeは正しいIPアドレスである必要があります。',
+ 'ipv4' => ':attributeは有効なIPv4アドレスである必要があります。',
+ 'ipv6' => ':attributeは有効なIPv6アドレスである必要があります。',
+ 'json' => ':attributeは有効なJSON文字列である必要があります。',
+ 'lt' => [
+ 'numeric' => ':attributeは:valueより小さな値である必要があります。',
+ 'file' => ':attributeは:valueキロバイトより小さなファイルである必要があります。',
+ 'string' => ':attributeは:value文字より短い必要があります。',
+ 'array' => ':attributeには:value個より少ないアイテムを指定する必要があります。',
+ ],
+ 'lte' => [
+ 'numeric' => ':attributeは:value以下の値である必要があります。',
+ 'file' => ':attributeは:valueキロバイト以下のファイルである必要があります。',
+ 'string' => ':attributeは:value文字以下である必要があります。',
+ 'array' => ':attributeには:value個以下のアイテムを指定する必要があります。',
+ ],
+ 'max' => [
+ 'numeric' => ':attributeは:maxを越えることができません。',
+ 'file' => ':attributeは:maxキロバイトを越えることができません。',
+ 'string' => ':attributeは:max文字をこえることができません。',
+ 'array' => ':attributeは:max個を越えることができません。',
+ ],
+ 'mimes' => ':attributeのファイルタイプは以下のみが許可されています: :values.',
+ 'min' => [
+ 'numeric' => ':attributeは:min以上である必要があります。',
+ 'file' => ':attributeは:minキロバイト以上である必要があります。',
+ 'string' => ':attributeは:min文字以上である必要があります。',
+ 'array' => ':attributeは:min個以上である必要があります。',
+ ],
+ 'not_in' => '選択された:attributeは不正です。',
+ 'not_regex' => ':attributeの形式は不正です。',
+ 'numeric' => ':attributeは数値である必要があります。',
+ 'regex' => ':attributeのフォーマットは不正です。',
+ 'required' => ':attributeは必須です。',
+ 'required_if' => ':otherが:valueである場合、:attributeは必須です。',
+ 'required_with' => ':valuesが設定されている場合、:attributeは必須です。',
+ 'required_with_all' => ':valuesが設定されている場合、:attributeは必須です。',
+ 'required_without' => ':valuesが設定されていない場合、:attributeは必須です。',
+ 'required_without_all' => ':valuesが設定されていない場合、:attributeは必須です。',
+ 'same' => ':attributeと:otherは一致している必要があります。',
+ 'safe_url' => '提供されたリンクは安全ではない可能性があります。',
+ 'size' => [
+ 'numeric' => ':attributeは:sizeである必要があります。',
+ 'file' => ':attributeは:sizeキロバイトである必要があります。',
+ 'string' => ':attributeは:size文字である必要があります。',
+ 'array' => ':attributeは:size個である必要があります。',
+ ],
+ 'string' => ':attributeは文字列である必要があります。',
+ 'timezone' => ':attributeは正しいタイムゾーンである必要があります。',
+ 'totp' => '提供されたコードが無効または期限切れです。',
+ 'unique' => ':attributeは既に使用されています。',
+ 'url' => ':attributeのフォーマットは不正です。',
+ 'uploaded' => 'ファイルをアップロードできませんでした。サーバーがこのサイズのファイルを受け付けていない可能性があります。',
+
+ 'zip_file' => ':attribute はZIP 内のファイルを参照する必要があります。',
+ 'zip_file_size' => ':attribute は :size MB を超えてはいけません。',
+ 'zip_file_mime' => ':attribute は種別 :validType のファイルを参照する必要がありますが、種別 :foundType となっています。',
+ 'zip_model_expected' => 'データオブジェクトが期待されますが、":type" が見つかりました。',
+ 'zip_unique' => 'ZIP内のオブジェクトタイプに :attribute が一意である必要があります。',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'パスワードの確認は必須です。',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/ka/activities.php b/lang/ka/activities.php
new file mode 100644
index 00000000000..35730fd77a0
--- /dev/null
+++ b/lang/ka/activities.php
@@ -0,0 +1,140 @@
+ 'created page',
+ 'page_create_notification' => 'Page successfully created',
+ 'page_update' => 'updated page',
+ 'page_update_notification' => 'Page successfully updated',
+ 'page_delete' => 'deleted page',
+ 'page_delete_notification' => 'Page successfully deleted',
+ 'page_restore' => 'restored page',
+ 'page_restore_notification' => 'Page successfully restored',
+ 'page_move' => 'moved page',
+ 'page_move_notification' => 'Page successfully moved',
+
+ // Chapters
+ 'chapter_create' => 'created chapter',
+ 'chapter_create_notification' => 'Chapter successfully created',
+ 'chapter_update' => 'updated chapter',
+ 'chapter_update_notification' => 'Chapter successfully updated',
+ 'chapter_delete' => 'deleted chapter',
+ 'chapter_delete_notification' => 'Chapter successfully deleted',
+ 'chapter_move' => 'moved chapter',
+ 'chapter_move_notification' => 'Chapter successfully moved',
+
+ // Books
+ 'book_create' => 'created book',
+ 'book_create_notification' => 'Book successfully created',
+ 'book_create_from_chapter' => 'converted chapter to book',
+ 'book_create_from_chapter_notification' => 'Chapter successfully converted to a book',
+ 'book_update' => 'updated book',
+ 'book_update_notification' => 'Book successfully updated',
+ 'book_delete' => 'deleted book',
+ 'book_delete_notification' => 'Book successfully deleted',
+ 'book_sort' => 'sorted book',
+ 'book_sort_notification' => 'Book successfully re-sorted',
+
+ // Bookshelves
+ 'bookshelf_create' => 'created shelf',
+ 'bookshelf_create_notification' => 'Shelf successfully created',
+ 'bookshelf_create_from_book' => 'converted book to shelf',
+ 'bookshelf_create_from_book_notification' => 'Book successfully converted to a shelf',
+ 'bookshelf_update' => 'updated shelf',
+ 'bookshelf_update_notification' => 'Shelf successfully updated',
+ 'bookshelf_delete' => 'deleted shelf',
+ 'bookshelf_delete_notification' => 'Shelf successfully deleted',
+
+ // Revisions
+ 'revision_restore' => 'restored revision',
+ 'revision_delete' => 'deleted revision',
+ 'revision_delete_notification' => 'Revision successfully deleted',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" has been added to your favourites',
+ 'favourite_remove_notification' => '":name" has been removed from your favourites',
+
+ // Watching
+ 'watch_update_level_notification' => 'Watch preferences successfully updated',
+
+ // Auth
+ 'auth_login' => 'logged in',
+ 'auth_register' => 'registered as new user',
+ 'auth_password_reset_request' => 'requested user password reset',
+ 'auth_password_reset_update' => 'reset user password',
+ 'mfa_setup_method' => 'configured MFA method',
+ 'mfa_setup_method_notification' => 'Multi-factor method successfully configured',
+ 'mfa_remove_method' => 'removed MFA method',
+ 'mfa_remove_method_notification' => 'მულტი-ფაქტორული მეთოდი წარმატებით მოიხსნა',
+
+ // Settings
+ 'settings_update' => 'updated settings',
+ 'settings_update_notification' => 'Settings successfully updated',
+ 'maintenance_action_run' => 'ran maintenance action',
+
+ // Webhooks
+ 'webhook_create' => 'created webhook',
+ 'webhook_create_notification' => 'Webhook successfully created',
+ 'webhook_update' => 'updated webhook',
+ 'webhook_update_notification' => 'Webhook successfully updated',
+ 'webhook_delete' => 'deleted webhook',
+ 'webhook_delete_notification' => 'Webhook successfully deleted',
+
+ // Imports
+ 'import_create' => 'created import',
+ 'import_create_notification' => 'Import successfully uploaded',
+ 'import_run' => 'updated import',
+ 'import_run_notification' => 'Content successfully imported',
+ 'import_delete' => 'deleted import',
+ 'import_delete_notification' => 'Import successfully deleted',
+
+ // Users
+ 'user_create' => 'created user',
+ 'user_create_notification' => 'User successfully created',
+ 'user_update' => 'updated user',
+ 'user_update_notification' => 'User successfully updated',
+ 'user_delete' => 'deleted user',
+ 'user_delete_notification' => 'User successfully removed',
+
+ // API Tokens
+ 'api_token_create' => 'created API token',
+ 'api_token_create_notification' => 'API token successfully created',
+ 'api_token_update' => 'updated API token',
+ 'api_token_update_notification' => 'API token successfully updated',
+ 'api_token_delete' => 'deleted API token',
+ 'api_token_delete_notification' => 'API token successfully deleted',
+
+ // Roles
+ 'role_create' => 'created role',
+ 'role_create_notification' => 'Role successfully created',
+ 'role_update' => 'updated role',
+ 'role_update_notification' => 'Role successfully updated',
+ 'role_delete' => 'deleted role',
+ 'role_delete_notification' => 'Role successfully deleted',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'emptied recycle bin',
+ 'recycle_bin_restore' => 'restored from recycle bin',
+ 'recycle_bin_destroy' => 'removed from recycle bin',
+
+ // Comments
+ 'commented_on' => 'commented on',
+ 'comment_create' => 'added comment',
+ 'comment_update' => 'updated comment',
+ 'comment_delete' => 'deleted comment',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'updated permissions',
+];
diff --git a/lang/ka/auth.php b/lang/ka/auth.php
new file mode 100644
index 00000000000..57f0cb5c632
--- /dev/null
+++ b/lang/ka/auth.php
@@ -0,0 +1,117 @@
+ 'These credentials do not match our records.',
+ 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
+
+ // Login & Register
+ 'sign_up' => 'Sign up',
+ 'log_in' => 'Log in',
+ 'log_in_with' => 'Login with :socialDriver',
+ 'sign_up_with' => 'Sign up with :socialDriver',
+ 'logout' => 'Logout',
+
+ 'name' => 'Name',
+ 'username' => 'Username',
+ 'email' => 'Email',
+ 'password' => 'Password',
+ 'password_confirm' => 'Confirm Password',
+ 'password_hint' => 'Must be at least 8 characters',
+ 'forgot_password' => 'Forgot Password?',
+ 'remember_me' => 'Remember Me',
+ 'ldap_email_hint' => 'Please enter an email to use for this account.',
+ 'create_account' => 'Create Account',
+ 'already_have_account' => 'Already have an account?',
+ 'dont_have_account' => 'Don\'t have an account?',
+ 'social_login' => 'Social Login',
+ 'social_registration' => 'Social Registration',
+ 'social_registration_text' => 'Register and sign in using another service.',
+
+ 'register_thanks' => 'Thanks for registering!',
+ 'register_confirm' => 'Please check your email and click the confirmation button to access :appName.',
+ 'registrations_disabled' => 'Registrations are currently disabled',
+ 'registration_email_domain_invalid' => 'That email domain does not have access to this application',
+ 'register_success' => 'Thanks for signing up! You are now registered and signed in.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Attempting Login',
+ 'auto_init_starting_desc' => 'We\'re contacting your authentication system to start the login process. If there\'s no progress after 5 seconds you can try clicking the link below.',
+ 'auto_init_start_link' => 'Proceed with authentication',
+
+ // Password Reset
+ 'reset_password' => 'Reset Password',
+ 'reset_password_send_instructions' => 'Enter your email below and you will be sent an email with a password reset link.',
+ 'reset_password_send_button' => 'Send Reset Link',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
+ 'reset_password_success' => 'Your password has been successfully reset.',
+ 'email_reset_subject' => 'Reset your :appName password',
+ 'email_reset_text' => 'You are receiving this email because we received a password reset request for your account.',
+ 'email_reset_not_requested' => 'If you did not request a password reset, no further action is required.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Confirm your email on :appName',
+ 'email_confirm_greeting' => 'Thanks for joining :appName!',
+ 'email_confirm_text' => 'Please confirm your email address by clicking the button below:',
+ 'email_confirm_action' => 'Confirm Email',
+ 'email_confirm_send_error' => 'Email confirmation required but the system could not send the email. Contact the admin to ensure email is set up correctly.',
+ 'email_confirm_success' => 'Your email has been confirmed! You should now be able to login using this email address.',
+ 'email_confirm_resent' => 'Confirmation email resent, Please check your inbox.',
+ 'email_confirm_thanks' => 'Thanks for confirming!',
+ 'email_confirm_thanks_desc' => 'Please wait a moment while your confirmation is handled. If you are not redirected after 3 seconds press the "Continue" link below to proceed.',
+
+ 'email_not_confirmed' => 'Email Address Not Confirmed',
+ 'email_not_confirmed_text' => 'Your email address has not yet been confirmed.',
+ 'email_not_confirmed_click_link' => 'Please click the link in the email that was sent shortly after you registered.',
+ 'email_not_confirmed_resend' => 'If you cannot find the email you can re-send the confirmation email by submitting the form below.',
+ 'email_not_confirmed_resend_button' => 'Resend Confirmation Email',
+
+ // User Invite
+ 'user_invite_email_subject' => 'You have been invited to join :appName!',
+ 'user_invite_email_greeting' => 'An account has been created for you on :appName.',
+ 'user_invite_email_text' => 'Click the button below to set an account password and gain access:',
+ 'user_invite_email_action' => 'Set Account Password',
+ 'user_invite_page_welcome' => 'Welcome to :appName!',
+ 'user_invite_page_text' => 'To finalise your account and gain access you need to set a password which will be used to log-in to :appName on future visits.',
+ 'user_invite_page_confirm_button' => 'Confirm Password',
+ 'user_invite_success_login' => 'Password set, you should now be able to login using your set password to access :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Setup Multi-Factor Authentication',
+ 'mfa_setup_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'mfa_setup_configured' => 'Already configured',
+ 'mfa_setup_reconfigure' => 'Reconfigure',
+ 'mfa_setup_remove_confirmation' => 'Are you sure you want to remove this multi-factor authentication method?',
+ 'mfa_setup_action' => 'Setup',
+ 'mfa_backup_codes_usage_limit_warning' => 'You have less than 5 backup codes remaining, Please generate and store a new set before you run out of codes to prevent being locked out of your account.',
+ 'mfa_option_totp_title' => 'Mobile App',
+ 'mfa_option_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Backup Codes',
+ 'mfa_option_backup_codes_desc' => 'Generates a set of one-time-use backup codes which you\'ll enter on login to verify your identity. Make sure to store these in a safe & secure place.',
+ 'mfa_gen_confirm_and_enable' => 'Confirm and Enable',
+ 'mfa_gen_backup_codes_title' => 'Backup Codes Setup',
+ 'mfa_gen_backup_codes_desc' => 'Store the below list of codes in a safe place. When accessing the system you\'ll be able to use one of the codes as a second authentication mechanism.',
+ 'mfa_gen_backup_codes_download' => 'Download Codes',
+ 'mfa_gen_backup_codes_usage_warning' => 'Each code can only be used once',
+ 'mfa_gen_totp_title' => 'Mobile App Setup',
+ 'mfa_gen_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Scan the QR code below using your preferred authentication app to get started.',
+ 'mfa_gen_totp_verify_setup' => 'Verify Setup',
+ 'mfa_gen_totp_verify_setup_desc' => 'Verify that all is working by entering a code, generated within your authentication app, in the input box below:',
+ 'mfa_gen_totp_provide_code_here' => 'Provide your app generated code here',
+ 'mfa_verify_access' => 'Verify Access',
+ 'mfa_verify_access_desc' => 'Your user account requires you to confirm your identity via an additional level of verification before you\'re granted access. Verify using one of your configured methods to continue.',
+ 'mfa_verify_no_methods' => 'No Methods Configured',
+ 'mfa_verify_no_methods_desc' => 'No multi-factor authentication methods could be found for your account. You\'ll need to set up at least one method before you gain access.',
+ 'mfa_verify_use_totp' => 'Verify using a mobile app',
+ 'mfa_verify_use_backup_codes' => 'Verify using a backup code',
+ 'mfa_verify_backup_code' => 'Backup Code',
+ 'mfa_verify_backup_code_desc' => 'Enter one of your remaining backup codes below:',
+ 'mfa_verify_backup_code_enter_here' => 'Enter backup code here',
+ 'mfa_verify_totp_desc' => 'Enter the code, generated using your mobile app, below:',
+ 'mfa_setup_login_notification' => 'Multi-factor method configured, Please now login again using the configured method.',
+];
diff --git a/lang/ka/common.php b/lang/ka/common.php
new file mode 100644
index 00000000000..06a9e855ce3
--- /dev/null
+++ b/lang/ka/common.php
@@ -0,0 +1,115 @@
+ 'Cancel',
+ 'close' => 'Close',
+ 'confirm' => 'Confirm',
+ 'back' => 'Back',
+ 'save' => 'Save',
+ 'continue' => 'Continue',
+ 'select' => 'Select',
+ 'toggle_all' => 'Toggle All',
+ 'more' => 'More',
+
+ // Form Labels
+ 'name' => 'Name',
+ 'description' => 'Description',
+ 'role' => 'Role',
+ 'cover_image' => 'Cover image',
+ 'cover_image_description' => 'This image should be approximately 440x250px although it will be flexibly scaled & cropped to fit the user interface in different scenarios as required, so actual dimensions for display will differ.',
+
+ // Actions
+ 'actions' => 'Actions',
+ 'view' => 'View',
+ 'view_all' => 'View All',
+ 'new' => 'New',
+ 'create' => 'Create',
+ 'update' => 'Update',
+ 'edit' => 'Edit',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Sort',
+ 'move' => 'Move',
+ 'copy' => 'Copy',
+ 'reply' => 'Reply',
+ 'delete' => 'Delete',
+ 'delete_confirm' => 'Confirm Deletion',
+ 'search' => 'Search',
+ 'search_clear' => 'Clear Search',
+ 'reset' => 'Reset',
+ 'remove' => 'Remove',
+ 'add' => 'Add',
+ 'configure' => 'Configure',
+ 'manage' => 'Manage',
+ 'fullscreen' => 'Fullscreen',
+ 'favourite' => 'Favourite',
+ 'unfavourite' => 'Unfavourite',
+ 'next' => 'Next',
+ 'previous' => 'Previous',
+ 'filter_active' => 'Active Filter:',
+ 'filter_clear' => 'Clear Filter',
+ 'download' => 'Download',
+ 'open_in_tab' => 'Open in Tab',
+ 'open' => 'Open',
+
+ // Sort Options
+ 'sort_options' => 'Sort Options',
+ 'sort_direction_toggle' => 'Sort Direction Toggle',
+ 'sort_ascending' => 'Sort Ascending',
+ 'sort_descending' => 'Sort Descending',
+ 'sort_name' => 'Name',
+ 'sort_default' => 'Default',
+ 'sort_created_at' => 'Created Date',
+ 'sort_updated_at' => 'Updated Date',
+
+ // Misc
+ 'deleted_user' => 'Deleted User',
+ 'no_activity' => 'No activity to show',
+ 'no_items' => 'No items available',
+ 'back_to_top' => 'Back to top',
+ 'skip_to_main_content' => 'Skip to main content',
+ 'toggle_details' => 'Toggle Details',
+ 'toggle_thumbnails' => 'Toggle Thumbnails',
+ 'details' => 'Details',
+ 'grid_view' => 'Grid View',
+ 'list_view' => 'List View',
+ 'default' => 'Default',
+ 'breadcrumb' => 'Breadcrumb',
+ 'status' => 'Status',
+ 'status_active' => 'Active',
+ 'status_inactive' => 'Inactive',
+ 'never' => 'Never',
+ 'none' => 'None',
+
+ // Header
+ 'homepage' => 'Homepage',
+ 'header_menu_expand' => 'Expand Header Menu',
+ 'profile_menu' => 'Profile Menu',
+ 'view_profile' => 'View Profile',
+ 'edit_profile' => 'Edit Profile',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
+ 'global_search' => 'Global Search',
+
+ // Layout tabs
+ 'tab_info' => 'Info',
+ 'tab_info_label' => 'Tab: Show Secondary Information',
+ 'tab_content' => 'Content',
+ 'tab_content_label' => 'Tab: Show Primary Content',
+
+ // Email Content
+ 'email_action_help' => 'If you’re having trouble clicking the ":actionText" button, copy and paste the URL below into your web browser:',
+ 'email_rights' => 'All rights reserved',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Privacy Policy',
+ 'terms_of_service' => 'Terms of Service',
+
+ // OpenSearch
+ 'opensearch_description' => 'Search :appName',
+];
diff --git a/lang/ka/components.php b/lang/ka/components.php
new file mode 100644
index 00000000000..c33b1d0b791
--- /dev/null
+++ b/lang/ka/components.php
@@ -0,0 +1,46 @@
+ 'Image Select',
+ 'image_list' => 'Image List',
+ 'image_details' => 'Image Details',
+ 'image_upload' => 'Upload Image',
+ 'image_intro' => 'Here you can select and manage images that have been previously uploaded to the system.',
+ 'image_intro_upload' => 'Upload a new image by dragging an image file into this window, or by using the "Upload Image" button above.',
+ 'image_all' => 'All',
+ 'image_all_title' => 'View all images',
+ 'image_book_title' => 'View images uploaded to this book',
+ 'image_page_title' => 'View images uploaded to this page',
+ 'image_search_hint' => 'Search by image name',
+ 'image_uploaded' => 'Uploaded :uploadedDate',
+ 'image_uploaded_by' => 'Uploaded by :userName',
+ 'image_uploaded_to' => 'Uploaded to :pageLink',
+ 'image_updated' => 'Updated :updateDate',
+ 'image_load_more' => 'Load More',
+ 'image_image_name' => 'Image Name',
+ 'image_delete_used' => 'This image is used in the pages below.',
+ 'image_delete_confirm_text' => 'Are you sure you want to delete this image?',
+ 'image_select_image' => 'Select Image',
+ 'image_dropzone' => 'Drop images or click here to upload',
+ 'image_dropzone_drop' => 'Drop images here to upload',
+ 'images_deleted' => 'Images Deleted',
+ 'image_preview' => 'Image Preview',
+ 'image_upload_success' => 'Image uploaded successfully',
+ 'image_update_success' => 'Image details successfully updated',
+ 'image_delete_success' => 'Image successfully deleted',
+ 'image_replace' => 'Replace Image',
+ 'image_replace_success' => 'Image file successfully updated',
+ 'image_rebuild_thumbs' => 'Regenerate Size Variations',
+ 'image_rebuild_thumbs_success' => 'Image size variations successfully rebuilt!',
+
+ // Code Editor
+ 'code_editor' => 'Edit Code',
+ 'code_language' => 'Code Language',
+ 'code_content' => 'Code Content',
+ 'code_session_history' => 'Session History',
+ 'code_save' => 'Save Code',
+];
diff --git a/lang/ka/editor.php b/lang/ka/editor.php
new file mode 100644
index 00000000000..0d250e9a7bd
--- /dev/null
+++ b/lang/ka/editor.php
@@ -0,0 +1,182 @@
+ 'General',
+ 'advanced' => 'Advanced',
+ 'none' => 'None',
+ 'cancel' => 'Cancel',
+ 'save' => 'Save',
+ 'close' => 'Close',
+ 'apply' => 'Apply',
+ 'undo' => 'Undo',
+ 'redo' => 'Redo',
+ 'left' => 'Left',
+ 'center' => 'Center',
+ 'right' => 'Right',
+ 'top' => 'Top',
+ 'middle' => 'Middle',
+ 'bottom' => 'Bottom',
+ 'width' => 'Width',
+ 'height' => 'Height',
+ 'More' => 'More',
+ 'select' => 'Select...',
+
+ // Toolbar
+ 'formats' => 'Formats',
+ 'header_large' => 'Large Header',
+ 'header_medium' => 'Medium Header',
+ 'header_small' => 'Small Header',
+ 'header_tiny' => 'Tiny Header',
+ 'paragraph' => 'Paragraph',
+ 'blockquote' => 'Blockquote',
+ 'inline_code' => 'Inline code',
+ 'callouts' => 'Callouts',
+ 'callout_information' => 'Information',
+ 'callout_success' => 'Success',
+ 'callout_warning' => 'Warning',
+ 'callout_danger' => 'Danger',
+ 'bold' => 'Bold',
+ 'italic' => 'Italic',
+ 'underline' => 'Underline',
+ 'strikethrough' => 'Strikethrough',
+ 'superscript' => 'Superscript',
+ 'subscript' => 'Subscript',
+ 'text_color' => 'Text color',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Custom color',
+ 'remove_color' => 'Remove color',
+ 'background_color' => 'Background color',
+ 'align_left' => 'Align left',
+ 'align_center' => 'Align center',
+ 'align_right' => 'Align right',
+ 'align_justify' => 'Justify',
+ 'list_bullet' => 'Bullet list',
+ 'list_numbered' => 'Numbered list',
+ 'list_task' => 'Task list',
+ 'indent_increase' => 'Increase indent',
+ 'indent_decrease' => 'Decrease indent',
+ 'table' => 'Table',
+ 'insert_image' => 'Insert image',
+ 'insert_image_title' => 'Insert/Edit Image',
+ 'insert_link' => 'Insert/edit link',
+ 'insert_link_title' => 'Insert/Edit Link',
+ 'insert_horizontal_line' => 'Insert horizontal line',
+ 'insert_code_block' => 'Insert code block',
+ 'edit_code_block' => 'Edit code block',
+ 'insert_drawing' => 'Insert/edit drawing',
+ 'drawing_manager' => 'Drawing manager',
+ 'insert_media' => 'Insert/edit media',
+ 'insert_media_title' => 'Insert/Edit Media',
+ 'clear_formatting' => 'Clear formatting',
+ 'source_code' => 'Source code',
+ 'source_code_title' => 'Source Code',
+ 'fullscreen' => 'Fullscreen',
+ 'image_options' => 'Image options',
+
+ // Tables
+ 'table_properties' => 'Table properties',
+ 'table_properties_title' => 'Table Properties',
+ 'delete_table' => 'Delete table',
+ 'table_clear_formatting' => 'Clear table formatting',
+ 'resize_to_contents' => 'Resize to contents',
+ 'row_header' => 'Row header',
+ 'insert_row_before' => 'Insert row before',
+ 'insert_row_after' => 'Insert row after',
+ 'delete_row' => 'Delete row',
+ 'insert_column_before' => 'Insert column before',
+ 'insert_column_after' => 'Insert column after',
+ 'delete_column' => 'Delete column',
+ 'table_cell' => 'Cell',
+ 'table_row' => 'Row',
+ 'table_column' => 'Column',
+ 'cell_properties' => 'Cell properties',
+ 'cell_properties_title' => 'Cell Properties',
+ 'cell_type' => 'Cell type',
+ 'cell_type_cell' => 'Cell',
+ 'cell_scope' => 'Scope',
+ 'cell_type_header' => 'Header cell',
+ 'merge_cells' => 'Merge cells',
+ 'split_cell' => 'Split cell',
+ 'table_row_group' => 'Row Group',
+ 'table_column_group' => 'Column Group',
+ 'horizontal_align' => 'Horizontal align',
+ 'vertical_align' => 'Vertical align',
+ 'border_width' => 'Border width',
+ 'border_style' => 'Border style',
+ 'border_color' => 'Border color',
+ 'row_properties' => 'Row properties',
+ 'row_properties_title' => 'Row Properties',
+ 'cut_row' => 'Cut row',
+ 'copy_row' => 'Copy row',
+ 'paste_row_before' => 'Paste row before',
+ 'paste_row_after' => 'Paste row after',
+ 'row_type' => 'Row type',
+ 'row_type_header' => 'Header',
+ 'row_type_body' => 'Body',
+ 'row_type_footer' => 'Footer',
+ 'alignment' => 'Alignment',
+ 'cut_column' => 'Cut column',
+ 'copy_column' => 'Copy column',
+ 'paste_column_before' => 'Paste column before',
+ 'paste_column_after' => 'Paste column after',
+ 'cell_padding' => 'Cell padding',
+ 'cell_spacing' => 'Cell spacing',
+ 'caption' => 'Caption',
+ 'show_caption' => 'Show caption',
+ 'constrain' => 'Constrain proportions',
+ 'cell_border_solid' => 'Solid',
+ 'cell_border_dotted' => 'Dotted',
+ 'cell_border_dashed' => 'Dashed',
+ 'cell_border_double' => 'Double',
+ 'cell_border_groove' => 'Groove',
+ 'cell_border_ridge' => 'Ridge',
+ 'cell_border_inset' => 'Inset',
+ 'cell_border_outset' => 'Outset',
+ 'cell_border_none' => 'None',
+ 'cell_border_hidden' => 'Hidden',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Source',
+ 'alt_desc' => 'Alternative description',
+ 'embed' => 'Embed',
+ 'paste_embed' => 'Paste your embed code below:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Text to display',
+ 'title' => 'Title',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Open link',
+ 'open_link_in' => 'Open link in...',
+ 'open_link_current' => 'Current window',
+ 'open_link_new' => 'New window',
+ 'remove_link' => 'Remove link',
+ 'insert_collapsible' => 'Insert collapsible block',
+ 'collapsible_unwrap' => 'Unwrap',
+ 'edit_label' => 'Edit label',
+ 'toggle_open_closed' => 'Toggle open/closed',
+ 'collapsible_edit' => 'Edit collapsible block',
+ 'toggle_label' => 'Toggle label',
+
+ // About view
+ 'about' => 'About the editor',
+ 'about_title' => 'About the WYSIWYG Editor',
+ 'editor_license' => 'Editor License & Copyright',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'This editor is built using :tinyLink which is provided under the MIT license.',
+ 'editor_tiny_license_link' => 'The copyright and license details of TinyMCE can be found here.',
+ 'save_continue' => 'Save Page & Continue',
+ 'callouts_cycle' => '(Keep pressing to toggle through types)',
+ 'link_selector' => 'Link to content',
+ 'shortcuts' => 'Shortcuts',
+ 'shortcut' => 'Shortcut',
+ 'shortcuts_intro' => 'The following shortcuts are available in the editor:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Description',
+];
diff --git a/lang/ka/entities.php b/lang/ka/entities.php
new file mode 100644
index 00000000000..74c50be3b2f
--- /dev/null
+++ b/lang/ka/entities.php
@@ -0,0 +1,476 @@
+ 'Recently Created',
+ 'recently_created_pages' => 'Recently Created Pages',
+ 'recently_updated_pages' => 'Recently Updated Pages',
+ 'recently_created_chapters' => 'Recently Created Chapters',
+ 'recently_created_books' => 'Recently Created Books',
+ 'recently_created_shelves' => 'Recently Created Shelves',
+ 'recently_update' => 'Recently Updated',
+ 'recently_viewed' => 'Recently Viewed',
+ 'recent_activity' => 'Recent Activity',
+ 'create_now' => 'Create one now',
+ 'revisions' => 'Revisions',
+ 'meta_revision' => 'Revision #:revisionCount',
+ 'meta_created' => 'Created :timeLength',
+ 'meta_created_name' => 'Created :timeLength by :user',
+ 'meta_updated' => 'Updated :timeLength',
+ 'meta_updated_name' => 'Updated :timeLength by :user',
+ 'meta_owned_name' => 'Owned by :user',
+ 'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
+ 'entity_select' => 'Entity Select',
+ 'entity_select_lack_permission' => 'You don\'t have the required permissions to select this item',
+ 'images' => 'Images',
+ 'my_recent_drafts' => 'My Recent Drafts',
+ 'my_recently_viewed' => 'My Recently Viewed',
+ 'my_most_viewed_favourites' => 'My Most Viewed Favourites',
+ 'my_favourites' => 'My Favourites',
+ 'no_pages_viewed' => 'You have not viewed any pages',
+ 'no_pages_recently_created' => 'No pages have been recently created',
+ 'no_pages_recently_updated' => 'No pages have been recently updated',
+ 'export' => 'Export',
+ 'export_html' => 'Contained Web File',
+ 'export_pdf' => 'PDF File',
+ 'export_text' => 'Plain Text File',
+ 'export_md' => 'Markdown File',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Permissions',
+ 'permissions_desc' => 'Set permissions here to override the default permissions provided by user roles.',
+ 'permissions_book_cascade' => 'Permissions set on books will automatically cascade to child chapters and pages, unless they have their own permissions defined.',
+ 'permissions_chapter_cascade' => 'Permissions set on chapters will automatically cascade to child pages, unless they have their own permissions defined.',
+ 'permissions_save' => 'Save Permissions',
+ 'permissions_owner' => 'Owner',
+ 'permissions_role_everyone_else' => 'Everyone Else',
+ 'permissions_role_everyone_else_desc' => 'Set permissions for all roles not specifically overridden.',
+ 'permissions_role_override' => 'Override permissions for role',
+ 'permissions_inherit_defaults' => 'Inherit defaults',
+
+ // Search
+ 'search_results' => 'Search Results',
+ 'search_total_results_found' => ':count result found|:count total results found',
+ 'search_clear' => 'Clear Search',
+ 'search_no_pages' => 'No pages matched this search',
+ 'search_for_term' => 'Search for :term',
+ 'search_more' => 'More Results',
+ 'search_advanced' => 'Advanced Search',
+ 'search_terms' => 'Search Terms',
+ 'search_content_type' => 'Content Type',
+ 'search_exact_matches' => 'Exact Matches',
+ 'search_tags' => 'Tag Searches',
+ 'search_options' => 'Options',
+ 'search_viewed_by_me' => 'Viewed by me',
+ 'search_not_viewed_by_me' => 'Not viewed by me',
+ 'search_permissions_set' => 'Permissions set',
+ 'search_created_by_me' => 'Created by me',
+ 'search_updated_by_me' => 'Updated by me',
+ 'search_owned_by_me' => 'Owned by me',
+ 'search_date_options' => 'Date Options',
+ 'search_updated_before' => 'Updated before',
+ 'search_updated_after' => 'Updated after',
+ 'search_created_before' => 'Created before',
+ 'search_created_after' => 'Created after',
+ 'search_set_date' => 'Set Date',
+ 'search_update' => 'Update Search',
+
+ // Shelves
+ 'shelf' => 'Shelf',
+ 'shelves' => 'Shelves',
+ 'x_shelves' => ':count Shelf|:count Shelves',
+ 'shelves_empty' => 'No shelves have been created',
+ 'shelves_create' => 'Create New Shelf',
+ 'shelves_popular' => 'Popular Shelves',
+ 'shelves_new' => 'New Shelves',
+ 'shelves_new_action' => 'New Shelf',
+ 'shelves_popular_empty' => 'The most popular shelves will appear here.',
+ 'shelves_new_empty' => 'The most recently created shelves will appear here.',
+ 'shelves_save' => 'Save Shelf',
+ 'shelves_books' => 'Books on this shelf',
+ 'shelves_add_books' => 'Add books to this shelf',
+ 'shelves_drag_books' => 'Drag books below to add them to this shelf',
+ 'shelves_empty_contents' => 'This shelf has no books assigned to it',
+ 'shelves_edit_and_assign' => 'Edit shelf to assign books',
+ 'shelves_edit_named' => 'Edit Shelf :name',
+ 'shelves_edit' => 'Edit Shelf',
+ 'shelves_delete' => 'Delete Shelf',
+ 'shelves_delete_named' => 'Delete Shelf :name',
+ 'shelves_delete_explain' => "This will delete the shelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Are you sure you want to delete this shelf?',
+ 'shelves_permissions' => 'Shelf Permissions',
+ 'shelves_permissions_updated' => 'Shelf Permissions Updated',
+ 'shelves_permissions_active' => 'Shelf Permissions Active',
+ 'shelves_permissions_cascade_warning' => 'Permissions on shelves do not automatically cascade to contained books. This is because a book can exist on multiple shelves. Permissions can however be copied down to child books using the option found below.',
+ 'shelves_permissions_create' => 'Shelf create permissions are only used for copying permissions to child books using the action below. They do not control the ability to create books.',
+ 'shelves_copy_permissions_to_books' => 'Copy Permissions to Books',
+ 'shelves_copy_permissions' => 'Copy Permissions',
+ 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this shelf to all books contained within. Before activating, ensure any changes to the permissions of this shelf have been saved.',
+ 'shelves_copy_permission_success' => 'Shelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'Book',
+ 'books' => 'Books',
+ 'x_books' => ':count Book|:count Books',
+ 'books_empty' => 'No books have been created',
+ 'books_popular' => 'Popular Books',
+ 'books_recent' => 'Recent Books',
+ 'books_new' => 'New Books',
+ 'books_new_action' => 'New Book',
+ 'books_popular_empty' => 'The most popular books will appear here.',
+ 'books_new_empty' => 'The most recently created books will appear here.',
+ 'books_create' => 'Create New Book',
+ 'books_delete' => 'Delete Book',
+ 'books_delete_named' => 'Delete Book :bookName',
+ 'books_delete_explain' => 'This will delete the book with the name \':bookName\'. All pages and chapters will be removed.',
+ 'books_delete_confirmation' => 'Are you sure you want to delete this book?',
+ 'books_edit' => 'Edit Book',
+ 'books_edit_named' => 'Edit Book :bookName',
+ 'books_form_book_name' => 'Book Name',
+ 'books_save' => 'Save Book',
+ 'books_permissions' => 'Book Permissions',
+ 'books_permissions_updated' => 'Book Permissions Updated',
+ 'books_empty_contents' => 'No pages or chapters have been created for this book.',
+ 'books_empty_create_page' => 'Create a new page',
+ 'books_empty_sort_current_book' => 'Sort the current book',
+ 'books_empty_add_chapter' => 'Add a chapter',
+ 'books_permissions_active' => 'Book Permissions Active',
+ 'books_search_this' => 'Search this book',
+ 'books_navigation' => 'Book Navigation',
+ 'books_sort' => 'Sort Book Contents',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Sort Book :bookName',
+ 'books_sort_name' => 'Sort by Name',
+ 'books_sort_created' => 'Sort by Created Date',
+ 'books_sort_updated' => 'Sort by Updated Date',
+ 'books_sort_chapters_first' => 'Chapters First',
+ 'books_sort_chapters_last' => 'Chapters Last',
+ 'books_sort_show_other' => 'Show Other Books',
+ 'books_sort_save' => 'Save New Order',
+ 'books_sort_show_other_desc' => 'Add other books here to include them in the sort operation, and allow easy cross-book reorganisation.',
+ 'books_sort_move_up' => 'Move Up',
+ 'books_sort_move_down' => 'Move Down',
+ 'books_sort_move_prev_book' => 'Move to Previous Book',
+ 'books_sort_move_next_book' => 'Move to Next Book',
+ 'books_sort_move_prev_chapter' => 'Move Into Previous Chapter',
+ 'books_sort_move_next_chapter' => 'Move Into Next Chapter',
+ 'books_sort_move_book_start' => 'Move to Start of Book',
+ 'books_sort_move_book_end' => 'Move to End of Book',
+ 'books_sort_move_before_chapter' => 'Move to Before Chapter',
+ 'books_sort_move_after_chapter' => 'Move to After Chapter',
+ 'books_copy' => 'Copy Book',
+ 'books_copy_success' => 'Book successfully copied',
+
+ // Chapters
+ 'chapter' => 'Chapter',
+ 'chapters' => 'Chapters',
+ 'x_chapters' => ':count Chapter|:count Chapters',
+ 'chapters_popular' => 'Popular Chapters',
+ 'chapters_new' => 'New Chapter',
+ 'chapters_create' => 'Create New Chapter',
+ 'chapters_delete' => 'Delete Chapter',
+ 'chapters_delete_named' => 'Delete Chapter :chapterName',
+ 'chapters_delete_explain' => 'This will delete the chapter with the name \':chapterName\'. All pages that exist within this chapter will also be deleted.',
+ 'chapters_delete_confirm' => 'Are you sure you want to delete this chapter?',
+ 'chapters_edit' => 'Edit Chapter',
+ 'chapters_edit_named' => 'Edit Chapter :chapterName',
+ 'chapters_save' => 'Save Chapter',
+ 'chapters_move' => 'Move Chapter',
+ 'chapters_move_named' => 'Move Chapter :chapterName',
+ 'chapters_copy' => 'Copy Chapter',
+ 'chapters_copy_success' => 'Chapter successfully copied',
+ 'chapters_permissions' => 'Chapter Permissions',
+ 'chapters_empty' => 'No pages are currently in this chapter.',
+ 'chapters_permissions_active' => 'Chapter Permissions Active',
+ 'chapters_permissions_success' => 'Chapter Permissions Updated',
+ 'chapters_search_this' => 'Search this chapter',
+ 'chapter_sort_book' => 'Sort Book',
+
+ // Pages
+ 'page' => 'Page',
+ 'pages' => 'Pages',
+ 'x_pages' => ':count Page|:count Pages',
+ 'pages_popular' => 'Popular Pages',
+ 'pages_new' => 'New Page',
+ 'pages_attachments' => 'Attachments',
+ 'pages_navigation' => 'Page Navigation',
+ 'pages_delete' => 'Delete Page',
+ 'pages_delete_named' => 'Delete Page :pageName',
+ 'pages_delete_draft_named' => 'Delete Draft Page :pageName',
+ 'pages_delete_draft' => 'Delete Draft Page',
+ 'pages_delete_success' => 'Page deleted',
+ 'pages_delete_draft_success' => 'Draft page deleted',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Are you sure you want to delete this page?',
+ 'pages_delete_draft_confirm' => 'Are you sure you want to delete this draft page?',
+ 'pages_editing_named' => 'Editing Page :pageName',
+ 'pages_edit_draft_options' => 'Draft Options',
+ 'pages_edit_save_draft' => 'Save Draft',
+ 'pages_edit_draft' => 'Edit Page Draft',
+ 'pages_editing_draft' => 'Editing Draft',
+ 'pages_editing_page' => 'Editing Page',
+ 'pages_edit_draft_save_at' => 'Draft saved at ',
+ 'pages_edit_delete_draft' => 'Delete Draft',
+ 'pages_edit_delete_draft_confirm' => 'Are you sure you want to delete your draft page changes? All of your changes, since the last full save, will be lost and the editor will be updated with the latest page non-draft save state.',
+ 'pages_edit_discard_draft' => 'Discard Draft',
+ 'pages_edit_switch_to_markdown' => 'Switch to Markdown Editor',
+ 'pages_edit_switch_to_markdown_clean' => '(Clean Content)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stable Content)',
+ 'pages_edit_switch_to_wysiwyg' => 'Switch to WYSIWYG Editor',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Set Changelog',
+ 'pages_edit_enter_changelog_desc' => 'Enter a brief description of the changes you\'ve made',
+ 'pages_edit_enter_changelog' => 'Enter Changelog',
+ 'pages_editor_switch_title' => 'Switch Editor',
+ 'pages_editor_switch_are_you_sure' => 'Are you sure you want to change the editor for this page?',
+ 'pages_editor_switch_consider_following' => 'Consider the following when changing editors:',
+ 'pages_editor_switch_consideration_a' => 'Once saved, the new editor option will be used by any future editors, including those that may not be able to change editor type themselves.',
+ 'pages_editor_switch_consideration_b' => 'This can potentially lead to a loss of detail and syntax in certain circumstances.',
+ 'pages_editor_switch_consideration_c' => 'Tag or changelog changes, made since last save, won\'t persist across this change.',
+ 'pages_save' => 'Save Page',
+ 'pages_title' => 'Page Title',
+ 'pages_name' => 'Page Name',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Preview',
+ 'pages_md_insert_image' => 'Insert Image',
+ 'pages_md_insert_link' => 'Insert Entity Link',
+ 'pages_md_insert_drawing' => 'Insert Drawing',
+ 'pages_md_show_preview' => 'Show preview',
+ 'pages_md_sync_scroll' => 'Sync preview scroll',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Unsaved Drawing Found',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'Page is not in a chapter',
+ 'pages_move' => 'Move Page',
+ 'pages_copy' => 'Copy Page',
+ 'pages_copy_desination' => 'Copy Destination',
+ 'pages_copy_success' => 'Page successfully copied',
+ 'pages_permissions' => 'Page Permissions',
+ 'pages_permissions_success' => 'Page permissions updated',
+ 'pages_revision' => 'Revision',
+ 'pages_revisions' => 'Page Revisions',
+ 'pages_revisions_desc' => 'Listed below are all the past revisions of this page. You can look back upon, compare, and restore old page versions if permissions allow. The full history of the page may not be fully reflected here since, depending on system configuration, old revisions could be auto-deleted.',
+ 'pages_revisions_named' => 'Page Revisions for :pageName',
+ 'pages_revision_named' => 'Page Revision for :pageName',
+ 'pages_revision_restored_from' => 'Restored from #:id; :summary',
+ 'pages_revisions_created_by' => 'Created By',
+ 'pages_revisions_date' => 'Revision Date',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revision Number',
+ 'pages_revisions_numbered' => 'Revision #:id',
+ 'pages_revisions_numbered_changes' => 'Revision #:id Changes',
+ 'pages_revisions_editor' => 'Editor Type',
+ 'pages_revisions_changelog' => 'Changelog',
+ 'pages_revisions_changes' => 'Changes',
+ 'pages_revisions_current' => 'Current Version',
+ 'pages_revisions_preview' => 'Preview',
+ 'pages_revisions_restore' => 'Restore',
+ 'pages_revisions_none' => 'This page has no revisions',
+ 'pages_copy_link' => 'Copy Link',
+ 'pages_edit_content_link' => 'Jump to section in editor',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Page Section Options',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Page Permissions Active',
+ 'pages_initial_revision' => 'Initial publish',
+ 'pages_references_update_revision' => 'System auto-update of internal links',
+ 'pages_initial_name' => 'New Page',
+ 'pages_editing_draft_notification' => 'You are currently editing a draft that was last saved :timeDiff.',
+ 'pages_draft_edited_notification' => 'This page has been updated by since that time. It is recommended that you discard this draft.',
+ 'pages_draft_page_changed_since_creation' => 'This page has been updated since this draft was created. It is recommended that you discard this draft or take care not to overwrite any page changes.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count users have started editing this page',
+ 'start_b' => ':userName has started editing this page',
+ 'time_a' => 'since the page was last updated',
+ 'time_b' => 'in the last :minCount minutes',
+ 'message' => ':start :time. Take care not to overwrite each other\'s updates!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'Specific Page',
+ 'pages_is_template' => 'Page Template',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'Page Tags',
+ 'chapter_tags' => 'Chapter Tags',
+ 'book_tags' => 'Book Tags',
+ 'shelf_tags' => 'Shelf Tags',
+ 'tag' => 'Tag',
+ 'tags' => 'Tags',
+ 'tags_index_desc' => 'Tags can be applied to content within the system to apply a flexible form of categorization. Tags can have both a key and value, with the value being optional. Once applied, content can then be queried using the tag name and value.',
+ 'tag_name' => 'Tag Name',
+ 'tag_value' => 'Tag Value (Optional)',
+ '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' => 'Add another tag',
+ 'tags_remove' => 'Remove this tag',
+ 'tags_usages' => 'Total tag usages',
+ 'tags_assigned_pages' => 'Assigned to Pages',
+ 'tags_assigned_chapters' => 'Assigned to Chapters',
+ 'tags_assigned_books' => 'Assigned to Books',
+ 'tags_assigned_shelves' => 'Assigned to Shelves',
+ 'tags_x_unique_values' => ':count unique values',
+ 'tags_all_values' => 'All values',
+ 'tags_view_tags' => 'View Tags',
+ 'tags_view_existing_tags' => 'View existing tags',
+ 'tags_list_empty_hint' => 'Tags can be assigned via the page editor sidebar or while editing the details of a book, chapter or shelf.',
+ 'attachments' => 'Attachments',
+ 'attachments_explain' => 'Upload some files or attach some links to display on your page. These are visible in the page sidebar.',
+ 'attachments_explain_instant_save' => 'Changes here are saved instantly.',
+ 'attachments_upload' => 'Upload File',
+ 'attachments_link' => 'Attach Link',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'Set Link',
+ 'attachments_delete' => 'Are you sure you want to delete this attachment?',
+ 'attachments_dropzone' => 'Drop files here to upload',
+ 'attachments_no_files' => 'No files have been uploaded',
+ 'attachments_explain_link' => 'You can attach a link if you\'d prefer not to upload a file. This can be a link to another page or a link to a file in the cloud.',
+ 'attachments_link_name' => 'Link Name',
+ 'attachment_link' => 'Attachment link',
+ 'attachments_link_url' => 'Link to file',
+ 'attachments_link_url_hint' => 'Url of site or file',
+ 'attach' => 'Attach',
+ 'attachments_insert_link' => 'Add Attachment Link to Page',
+ 'attachments_edit_file' => 'Edit File',
+ 'attachments_edit_file_name' => 'File Name',
+ 'attachments_edit_drop_upload' => 'Drop files or click here to upload and overwrite',
+ 'attachments_order_updated' => 'Attachment order updated',
+ 'attachments_updated_success' => 'Attachment details updated',
+ 'attachments_deleted' => 'Attachment deleted',
+ 'attachments_file_uploaded' => 'File successfully uploaded',
+ 'attachments_file_updated' => 'File successfully updated',
+ 'attachments_link_attached' => 'Link successfully attached to page',
+ 'templates' => 'Templates',
+ 'templates_set_as_template' => 'Page is a template',
+ 'templates_explain_set_as_template' => 'You can set this page as a template so its contents be utilized when creating other pages. Other users will be able to use this template if they have view permissions for this page.',
+ 'templates_replace_content' => 'Replace page content',
+ 'templates_append_content' => 'Append to page content',
+ 'templates_prepend_content' => 'Prepend to page content',
+
+ // Profile View
+ 'profile_user_for_x' => 'User for :time',
+ 'profile_created_content' => 'Created Content',
+ 'profile_not_created_pages' => ':userName has not created any pages',
+ 'profile_not_created_chapters' => ':userName has not created any chapters',
+ 'profile_not_created_books' => ':userName has not created any books',
+ 'profile_not_created_shelves' => ':userName has not created any shelves',
+
+ // Comments
+ 'comment' => 'Comment',
+ 'comments' => 'Comments',
+ 'comment_add' => 'Add Comment',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Leave a comment here',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Save Comment',
+ 'comment_new' => 'New Comment',
+ 'comment_created' => 'commented :createDiff',
+ 'comment_updated' => 'Updated :updateDiff by :username',
+ 'comment_updated_indicator' => 'Updated',
+ 'comment_deleted_success' => 'Comment deleted',
+ 'comment_created_success' => 'Comment added',
+ 'comment_updated_success' => 'Comment updated',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Are you sure you want to delete this comment?',
+ 'comment_in_reply_to' => 'In reply to :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Here are the comments that have been left on this page. Comments can be added & managed when viewing the saved page.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Are you sure you want to delete this revision?',
+ 'revision_restore_confirm' => 'Are you sure you want to restore this revision? The current page contents will be replaced.',
+ 'revision_cannot_delete_latest' => 'Cannot delete the latest revision.',
+
+ // Copy view
+ 'copy_consider' => 'Please consider the below when copying content.',
+ 'copy_consider_permissions' => 'Custom permission settings will not be copied.',
+ 'copy_consider_owner' => 'You will become the owner of all copied content.',
+ 'copy_consider_images' => 'Page image files will not be duplicated & the original images will retain their relation to the page they were originally uploaded to.',
+ 'copy_consider_attachments' => 'Page attachments will not be copied.',
+ 'copy_consider_access' => 'A change of location, owner or permissions may result in this content being accessible to those previously without access.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Convert to Shelf',
+ 'convert_to_shelf_contents_desc' => 'You can convert this book to a new shelf with the same contents. Chapters contained within this book will be converted to new books. If this book contains any pages, that are not in a chapter, this book will be renamed and contain such pages, and this book will become part of the new shelf.',
+ 'convert_to_shelf_permissions_desc' => 'Any permissions set on this book will be copied to the new shelf and to all new child books that don\'t have their own permissions enforced. Note that permissions on shelves do not auto-cascade to content within, as they do for books.',
+ 'convert_book' => 'Convert Book',
+ 'convert_book_confirm' => 'Are you sure you want to convert this book?',
+ 'convert_undo_warning' => 'This cannot be as easily undone.',
+ 'convert_to_book' => 'Convert to Book',
+ 'convert_to_book_desc' => 'You can convert this chapter to a new book with the same contents. Any permissions set on this chapter will be copied to the new book but any inherited permissions, from the parent book, will not be copied which could lead to a change of access control.',
+ 'convert_chapter' => 'Convert Chapter',
+ 'convert_chapter_confirm' => 'Are you sure you want to convert this chapter?',
+
+ // References
+ 'references' => 'References',
+ 'references_none' => 'There are no tracked references to this item.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Watch',
+ 'watch_title_default' => 'Default Preferences',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignore',
+ 'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
+ 'watch_title_new' => 'New Pages',
+ 'watch_desc_new' => 'Notify when any new page is created within this item.',
+ 'watch_title_updates' => 'All Page Updates',
+ 'watch_desc_updates' => 'Notify upon all new pages and page changes.',
+ 'watch_desc_updates_page' => 'Notify upon all page changes.',
+ 'watch_title_comments' => 'All Page Updates & Comments',
+ 'watch_desc_comments' => 'Notify upon all new pages, page changes and new comments.',
+ 'watch_desc_comments_page' => 'Notify upon page changes and new comments.',
+ 'watch_change_default' => 'Change default notification preferences',
+ 'watch_detail_ignore' => 'Ignoring notifications',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/ka/errors.php b/lang/ka/errors.php
new file mode 100644
index 00000000000..20537d59f0c
--- /dev/null
+++ b/lang/ka/errors.php
@@ -0,0 +1,135 @@
+ 'You do not have permission to access the requested page.',
+ 'permissionJson' => 'You do not have permission to perform the requested action.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'A user with the email :email already exists but with different credentials.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'Email has already been confirmed, Try logging in.',
+ 'email_confirmation_invalid' => 'This confirmation token is not valid or has already been used, Please try registering again.',
+ 'email_confirmation_expired' => 'The confirmation token has expired, A new confirmation email has been sent.',
+ 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed',
+ 'ldap_fail_anonymous' => 'LDAP access failed using anonymous bind',
+ 'ldap_fail_authed' => 'LDAP access failed using given dn & password details',
+ 'ldap_extension_not_installed' => 'LDAP PHP extension not installed',
+ 'ldap_cannot_connect' => 'Cannot connect to ldap server, Initial connection failed',
+ 'saml_already_logged_in' => 'Already logged in',
+ 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.',
+ 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'oidc_already_logged_in' => 'Already logged in',
+ 'oidc_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'oidc_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'social_no_action_defined' => 'No action defined',
+ 'social_login_bad_response' => "Error received during :socialAccount login: \n:error",
+ 'social_account_in_use' => 'This :socialAccount account is already in use, Try logging in via the :socialAccount option.',
+ 'social_account_email_in_use' => 'The email :email is already in use. If you already have an account you can connect your :socialAccount account from your profile settings.',
+ 'social_account_existing' => 'This :socialAccount is already attached to your profile.',
+ 'social_account_already_used_existing' => 'This :socialAccount account is already used by another user.',
+ 'social_account_not_used' => 'This :socialAccount account is not linked to any users. Please attach it in your profile settings. ',
+ 'social_account_register_instructions' => 'If you do not yet have an account, You can register an account using the :socialAccount option.',
+ 'social_driver_not_found' => 'Social driver not found',
+ 'social_driver_not_configured' => 'Your :socialAccount social settings are not configured correctly.',
+ 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // System
+ 'path_not_writable' => 'File path :filePath could not be uploaded to. Ensure it is writable to the server.',
+ 'cannot_get_image_from_url' => 'Cannot get image from :url',
+ 'cannot_create_thumbs' => 'The server cannot create thumbnails. Please check you have the GD PHP extension installed.',
+ 'server_upload_limit' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+ 'server_post_limit' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.',
+ 'uploaded' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'An error occurred uploading the image',
+ 'image_upload_type_error' => 'The image type being uploaded is invalid',
+ 'image_upload_replace_type' => 'Image file replacements must be of the same type',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Drawing data could not be loaded. The drawing file might no longer exist or you may not have permission to access it.',
+
+ // Attachments
+ 'attachment_not_found' => 'Attachment not found',
+ 'attachment_upload_error' => 'An error occurred uploading the attachment file',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Failed to save draft. Ensure you have internet connection before saving this page',
+ 'page_draft_delete_fail' => 'Failed to delete page draft and fetch current page saved content',
+ 'page_custom_home_deletion' => 'Cannot delete a page while it is set as a homepage',
+
+ // Entities
+ 'entity_not_found' => 'Entity not found',
+ 'bookshelf_not_found' => 'Shelf not found',
+ 'book_not_found' => 'Book not found',
+ 'page_not_found' => 'Page not found',
+ 'chapter_not_found' => 'Chapter not found',
+ 'selected_book_not_found' => 'The selected book was not found',
+ 'selected_book_chapter_not_found' => 'The selected Book or Chapter was not found',
+ 'guests_cannot_save_drafts' => 'Guests cannot save drafts',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'You cannot delete the only admin',
+ 'users_cannot_delete_guest' => 'You cannot delete the guest user',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'This role cannot be edited',
+ 'role_system_cannot_be_deleted' => 'This role is a system role and cannot be deleted',
+ 'role_registration_default_cannot_delete' => 'This role cannot be deleted while set as the default registration role',
+ 'role_cannot_remove_only_admin' => 'This user is the only user assigned to the administrator role. Assign the administrator role to another user before attempting to remove it here.',
+
+ // Comments
+ 'comment_list' => 'An error occurred while fetching the comments.',
+ 'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.',
+ 'comment_add' => 'An error occurred while adding / updating the comment.',
+ 'comment_delete' => 'An error occurred while deleting the comment.',
+ 'empty_comment' => 'Cannot add an empty comment.',
+
+ // Error pages
+ '404_page_not_found' => 'Page Not Found',
+ 'sorry_page_not_found' => 'Sorry, The page you were looking for could not be found.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
+ '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' => 'Return to home',
+ 'error_occurred' => 'An Error Occurred',
+ 'app_down' => ':appName is down right now',
+ 'back_soon' => 'It will be back up soon.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'No authorization token found on the request',
+ 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect',
+ 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token',
+ 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
+ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
+ 'api_user_token_expired' => 'The authorization token used has expired',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'The URL does not match the configured allowed SSR hosts',
+];
diff --git a/lang/ka/notifications.php b/lang/ka/notifications.php
new file mode 100644
index 00000000000..563ac24e84d
--- /dev/null
+++ b/lang/ka/notifications.php
@@ -0,0 +1,29 @@
+ 'New comment on page: :pageName',
+ 'new_comment_intro' => 'A user has commented on a page in :appName:',
+ 'new_page_subject' => 'New page: :pageName',
+ 'new_page_intro' => 'A new page has been created in :appName:',
+ 'updated_page_subject' => 'Updated page: :pageName',
+ 'updated_page_intro' => 'A page has been updated in :appName:',
+ 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Page Name:',
+ 'detail_page_path' => 'Page Path:',
+ 'detail_commenter' => 'Commenter:',
+ 'detail_comment' => 'Comment:',
+ 'detail_created_by' => 'Created By:',
+ 'detail_updated_by' => 'Updated By:',
+
+ 'action_view_comment' => 'View Comment',
+ 'action_view_page' => 'View Page',
+
+ 'footer_reason' => 'This notification was sent to you because :link cover this type of activity for this item.',
+ 'footer_reason_link' => 'your notification preferences',
+];
diff --git a/resources/lang/fa/pagination.php b/lang/ka/pagination.php
similarity index 100%
rename from resources/lang/fa/pagination.php
rename to lang/ka/pagination.php
diff --git a/resources/lang/fa/passwords.php b/lang/ka/passwords.php
similarity index 100%
rename from resources/lang/fa/passwords.php
rename to lang/ka/passwords.php
diff --git a/lang/ka/preferences.php b/lang/ka/preferences.php
new file mode 100644
index 00000000000..f4459d738e4
--- /dev/null
+++ b/lang/ka/preferences.php
@@ -0,0 +1,52 @@
+ 'My Account',
+
+ 'shortcuts' => 'Shortcuts',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Here you can enable or disable keyboard system interface shortcuts, used for navigation and actions.',
+ 'shortcuts_customize_desc' => 'You can customize each of the shortcuts below. Just press your desired key combination after selecting the input for a shortcut.',
+ 'shortcuts_toggle_label' => 'Keyboard shortcuts enabled',
+ 'shortcuts_section_navigation' => 'Navigation',
+ 'shortcuts_section_actions' => 'Common Actions',
+ 'shortcuts_save' => 'Save Shortcuts',
+ 'shortcuts_overlay_desc' => 'Note: When shortcuts are enabled a helper overlay is available via pressing "?" which will highlight the available shortcuts for actions currently visible on the screen.',
+ 'shortcuts_update_success' => 'Shortcut preferences have been updated!',
+ 'shortcuts_overview_desc' => 'Manage keyboard shortcuts you can use to navigate the system user interface.',
+
+ 'notifications' => 'Notification Preferences',
+ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.',
+ 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own',
+ 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notify upon replies to my comments',
+ 'notifications_save' => 'Save Preferences',
+ 'notifications_update_success' => 'Notification preferences have been updated!',
+ 'notifications_watched' => 'Watched & Ignored Items',
+ 'notifications_watched_desc' => 'Below are the items that have custom watch preferences applied. To update your preferences for these, view the item then find the watch options in the sidebar.',
+
+ 'auth' => 'Access & Security',
+ 'auth_change_password' => 'Change Password',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Password has been updated!',
+
+ 'profile' => 'Profile Details',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'View Public Profile',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Delete Account',
+ 'delete_my_account' => 'Delete My Account',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/ka/settings.php b/lang/ka/settings.php
new file mode 100644
index 00000000000..c4d1eb136eb
--- /dev/null
+++ b/lang/ka/settings.php
@@ -0,0 +1,374 @@
+ 'Settings',
+ 'settings_save' => 'Save Settings',
+ 'system_version' => 'System Version',
+ 'categories' => 'Categories',
+
+ // App Settings
+ 'app_customization' => 'Customization',
+ 'app_features_security' => 'Features & Security',
+ 'app_name' => 'Application Name',
+ 'app_name_desc' => 'This name is shown in the header and in any system-sent emails.',
+ 'app_name_header' => 'Show name in header',
+ 'app_public_access' => 'Public Access',
+ 'app_public_access_desc' => 'Enabling this option will allow visitors, that are not logged-in, to access content in your BookStack instance.',
+ 'app_public_access_desc_guest' => 'Access for public visitors can be controlled through the "Guest" user.',
+ 'app_public_access_toggle' => 'Allow public access',
+ 'app_public_viewing' => 'Allow public viewing?',
+ 'app_secure_images' => 'Higher Security Image Uploads',
+ 'app_secure_images_toggle' => 'Enable higher security image uploads',
+ 'app_secure_images_desc' => 'For performance reasons, all images are public. This option adds a random, hard-to-guess string in front of image urls. Ensure directory indexes are not enabled to prevent easy access.',
+ 'app_default_editor' => 'Default Page Editor',
+ 'app_default_editor_desc' => 'Select which editor will be used by default when editing new pages. This can be overridden at a page level where permissions allow.',
+ 'app_custom_html' => 'Custom HTML Head Content',
+ 'app_custom_html_desc' => 'Any content added here will be inserted into the bottom of the section of every page. This is handy for overriding styles or adding analytics code.',
+ 'app_custom_html_disabled_notice' => 'Custom HTML head content is disabled on this settings page to ensure any breaking changes can be reverted.',
+ 'app_logo' => 'Application Logo',
+ 'app_logo_desc' => 'This is used in the application header bar, among other areas. This image should be 86px in height. Large images will be scaled down.',
+ 'app_icon' => 'Application Icon',
+ 'app_icon_desc' => 'This icon is used for browser tabs and shortcut icons. This should be a 256px square PNG image.',
+ '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::" 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' => 'Disable Comments',
+ 'app_disable_comments_toggle' => 'Disable comments',
+ 'app_disable_comments_desc' => 'Disables comments across all pages in the application. Existing comments are not shown.',
+
+ // Color settings
+ 'color_scheme' => 'Application Color Scheme',
+ 'color_scheme_desc' => 'Set the colors to use in the application user interface. Colors can be configured separately for dark and light modes to best fit the theme and ensure legibility.',
+ 'ui_colors_desc' => 'Set the application primary color and default link color. The primary color is mainly used for the header banner, buttons and interface decorations. The default link color is used for text-based links and actions, both within written content and in the application interface.',
+ 'app_color' => 'Primary Color',
+ 'link_color' => 'Default Link Color',
+ 'content_colors_desc' => 'Set colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'bookshelf_color' => 'Shelf Color',
+ 'book_color' => 'Book Color',
+ 'chapter_color' => 'Chapter Color',
+ 'page_color' => 'Page Color',
+ 'page_draft_color' => 'Page Draft Color',
+
+ // Registration Settings
+ 'reg_settings' => 'Registration',
+ 'reg_enable' => 'Enable Registration',
+ 'reg_enable_toggle' => 'Enable registration',
+ 'reg_enable_desc' => 'When registration is enabled user will be able to sign themselves up as an application user. Upon registration they are given a single, default user role.',
+ 'reg_default_role' => 'Default user role after registration',
+ 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_email_confirmation' => 'Email Confirmation',
+ 'reg_email_confirmation_toggle' => 'Require email confirmation',
+ 'reg_confirm_email_desc' => 'If domain restriction is used then email confirmation will be required and this option will be ignored.',
+ 'reg_confirm_restrict_domain' => 'Domain Restriction',
+ 'reg_confirm_restrict_domain_desc' => 'Enter a comma separated list of email domains you would like to restrict registration to. Users will be sent an email to confirm their address before being allowed to interact with the application. Note that users will be able to change their email addresses after successful registration.',
+ 'reg_confirm_restrict_domain_placeholder' => 'No restriction set',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Maintenance',
+ 'maint_image_cleanup' => 'Cleanup Images',
+ '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' => 'Also delete images that only exist in old page revisions',
+ 'maint_image_cleanup_run' => 'Run Cleanup',
+ 'maint_image_cleanup_warning' => ':count potentially unused images were found. Are you sure you want to delete these images?',
+ 'maint_image_cleanup_success' => ':count potentially unused images found and deleted!',
+ '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_regen_references' => 'Regenerate References',
+ 'maint_regen_references_desc' => 'This action will rebuild the cross-item reference index within the database. This is usually handled automatically but this action can be useful to index old content or content added via unofficial methods.',
+ 'maint_regen_references_success' => 'Reference index has been regenerated!',
+ 'maint_timeout_command_note' => 'Note: This action can take time to run, which can lead to timeout issues in some web environments. As an alternative, this action be performed using a terminal command.',
+
+ // 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_parent' => 'Parent',
+ '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 from the system, along with any child elements listed below, 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_restore_parent' => 'Restore Parent',
+ '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 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_table_related' => 'Related Item or Detail',
+ 'audit_table_ip' => 'IP Address',
+ 'audit_table_date' => 'Activity Date',
+ 'audit_date_from' => 'Date Range From',
+ 'audit_date_to' => 'Date Range To',
+
+ // Role Settings
+ 'roles' => 'Roles',
+ 'role_user_roles' => 'User Roles',
+ 'roles_index_desc' => 'Roles are used to group users & provide system permission to their members. When a user is a member of multiple roles the privileges granted will stack and the user will inherit all abilities.',
+ 'roles_x_users_assigned' => ':count user assigned|:count users assigned',
+ 'roles_x_permissions_provided' => ':count permission|:count permissions',
+ 'roles_assigned_users' => 'Assigned Users',
+ 'roles_permissions_provided' => 'Provided Permissions',
+ 'role_create' => 'Create New Role',
+ '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_edit' => 'Edit Role',
+ 'role_details' => 'Role Details',
+ 'role_name' => 'Role Name',
+ 'role_desc' => 'Short Description of Role',
+ 'role_mfa_enforced' => 'Requires Multi-Factor Authentication',
+ 'role_external_auth_id' => 'External Authentication IDs',
+ 'role_system' => 'System Permissions',
+ 'role_manage_users' => 'Manage users',
+ 'role_manage_roles' => 'Manage roles & role permissions',
+ 'role_manage_entity_permissions' => 'Manage all book, chapter & page permissions',
+ 'role_manage_own_entity_permissions' => 'Manage permissions on own book, chapter & pages',
+ 'role_manage_page_templates' => 'Manage page templates',
+ 'role_access_api' => 'Access system API',
+ 'role_manage_settings' => 'Manage app settings',
+ 'role_export_content' => 'Export content',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Change page editor',
+ 'role_notifications' => 'Receive & manage notifications',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Asset Permissions',
+ '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' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.',
+ 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.',
+ 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'All',
+ 'role_own' => 'Own',
+ 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to',
+ 'role_save' => 'Save Role',
+ 'role_users' => 'Users in this role',
+ 'role_users_none' => 'No users are currently assigned to this role',
+
+ // Users
+ 'users' => 'Users',
+ 'users_index_desc' => 'Create & manage individual user accounts within the system. User accounts are used for login and attribution of content & activity. Access permissions are primarily role-based but user content ownership, among other factors, may also affect permissions & access.',
+ 'user_profile' => 'User Profile',
+ 'users_add_new' => 'Add New User',
+ 'users_search' => 'Search Users',
+ 'users_latest_activity' => 'Latest Activity',
+ 'users_details' => 'User 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',
+ 'users_role_desc' => 'Select which roles this user will be assigned to. If a user is assigned to multiple roles the permissions from those roles will stack and they will receive all abilities of the assigned roles.',
+ 'users_password' => 'User Password',
+ 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 8 characters long.',
+ 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.',
+ 'users_send_invite_option' => 'Send user invite email',
+ 'users_external_auth_id' => 'External Authentication ID',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ '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_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_edit' => 'Edit User',
+ 'users_edit_profile' => 'Edit Profile',
+ 'users_avatar' => 'User Avatar',
+ 'users_avatar_desc' => 'Select an image to represent this user. This should be approx 256px square.',
+ 'users_preferred_language' => 'Preferred Language',
+ 'users_preferred_language_desc' => 'This option will change the language used for the user-interface of the application. This will not affect any user-created content.',
+ 'users_social_accounts' => 'Social Accounts',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not revoke previously authorized access. Revoke access from your profile settings on the connected social account.',
+ 'users_social_connect' => 'Connect Account',
+ 'users_social_disconnect' => 'Disconnect Account',
+ 'users_social_status_connected' => 'Connected',
+ 'users_social_status_disconnected' => 'Disconnected',
+ 'users_social_connected' => ':socialAccount account was successfully attached to your profile.',
+ 'users_social_disconnected' => ':socialAccount account was successfully disconnected from your profile.',
+ 'users_api_tokens' => 'API Tokens',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'No API tokens have been created for this user',
+ 'users_api_tokens_create' => 'Create Token',
+ 'users_api_tokens_expires' => 'Expires',
+ 'users_api_tokens_docs' => 'API Documentation',
+ 'users_mfa' => 'Multi-Factor Authentication',
+ 'users_mfa_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'users_mfa_x_methods' => ':count method configured|:count methods configured',
+ 'users_mfa_configure' => 'Configure Methods',
+
+ // API Tokens
+ 'user_api_token_create' => 'Create API Token',
+ 'user_api_token_name' => 'Name',
+ 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
+ 'user_api_token_expiry' => 'Expiry Date',
+ 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
+ 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
+ 'user_api_token' => 'API Token',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
+ 'user_api_token_secret' => 'Token Secret',
+ 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
+ 'user_api_token_created' => 'Token created :timeAgo',
+ 'user_api_token_updated' => 'Token updated :timeAgo',
+ 'user_api_token_delete' => 'Delete Token',
+ 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
+ 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks are a way to send data to external URLs when certain actions and events occur within the system which allows event-based integration with external platforms such as messaging or notification systems.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'Create New Webhook',
+ 'webhooks_none_created' => 'No webhooks have yet been created.',
+ 'webhooks_edit' => 'Edit Webhook',
+ 'webhooks_save' => 'Save Webhook',
+ 'webhooks_details' => 'Webhook Details',
+ 'webhooks_details_desc' => 'Provide a user friendly name and a POST endpoint as a location for the webhook data to be sent to.',
+ 'webhooks_events' => 'Webhook Events',
+ 'webhooks_events_desc' => 'Select all the events that should trigger this webhook to be called.',
+ 'webhooks_events_warning' => 'Keep in mind that these events will be triggered for all selected events, even if custom permissions are applied. Ensure that use of this webhook won\'t expose confidential content.',
+ 'webhooks_events_all' => 'All system events',
+ 'webhooks_name' => 'Webhook Name',
+ 'webhooks_timeout' => 'Webhook Request Timeout (Seconds)',
+ 'webhooks_endpoint' => 'Webhook Endpoint',
+ 'webhooks_active' => 'Webhook Active',
+ 'webhook_events_table_header' => 'Events',
+ 'webhooks_delete' => 'Delete Webhook',
+ 'webhooks_delete_warning' => 'This will fully delete this webhook, with the name \':webhookName\', from the system.',
+ 'webhooks_delete_confirm' => 'Are you sure you want to delete this webhook?',
+ 'webhooks_format_example' => 'Webhook Format Example',
+ 'webhooks_format_example_desc' => 'Webhook data is sent as a POST request to the configured endpoint as JSON following the format below. The "related_item" and "url" properties are optional and will depend on the type of event triggered.',
+ 'webhooks_status' => 'Webhook Status',
+ 'webhooks_last_called' => 'Last Called:',
+ 'webhooks_last_errored' => 'Last Errored:',
+ 'webhooks_last_error_message' => 'Last Error Message:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/ka/validation.php b/lang/ka/validation.php
new file mode 100644
index 00000000000..ff028525df3
--- /dev/null
+++ b/lang/ka/validation.php
@@ -0,0 +1,123 @@
+ '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.',
+ 'backup_codes' => 'The provided code is not valid or has already been used.',
+ 'before' => 'The :attribute must be a date before :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.',
+ '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',
+ 'file' => 'The :attribute must be provided as a valid file.',
+ 'filled' => 'The :attribute field is required.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ 'array' => 'The :attribute may not have more than :max items.',
+ ],
+ 'mimes' => 'The :attribute must be a file of type: :values.',
+ 'min' => [
+ 'numeric' => 'The :attribute must be at least :min.',
+ 'file' => 'The :attribute must be at least :min kilobytes.',
+ 'string' => 'The :attribute must be at least :min characters.',
+ 'array' => 'The :attribute must have at least :min items.',
+ ],
+ 'not_in' => 'The selected :attribute is invalid.',
+ 'not_regex' => 'The :attribute format is invalid.',
+ 'numeric' => 'The :attribute must be a number.',
+ 'regex' => 'The :attribute format is invalid.',
+ 'required' => 'The :attribute field is required.',
+ 'required_if' => 'The :attribute field is required when :other is :value.',
+ 'required_with' => 'The :attribute field is required when :values is present.',
+ 'required_with_all' => 'The :attribute field is required when :values is present.',
+ 'required_without' => 'The :attribute field is required when :values is not present.',
+ 'required_without_all' => 'The :attribute field is required when none of :values are present.',
+ 'same' => 'The :attribute and :other must match.',
+ 'safe_url' => 'The provided link may not be safe.',
+ 'size' => [
+ 'numeric' => 'The :attribute must be :size.',
+ 'file' => 'The :attribute must be :size kilobytes.',
+ 'string' => 'The :attribute must be :size characters.',
+ 'array' => 'The :attribute must contain :size items.',
+ ],
+ 'string' => 'The :attribute must be a string.',
+ 'timezone' => 'The :attribute must be a valid zone.',
+ 'totp' => 'The provided code is not valid or has expired.',
+ 'unique' => 'The :attribute has already been taken.',
+ 'url' => 'The :attribute format is invalid.',
+ 'uploaded' => 'The file could not be uploaded. The server may not accept files of this size.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Password confirmation required',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/ko/activities.php b/lang/ko/activities.php
new file mode 100644
index 00000000000..061b7fb1e5c
--- /dev/null
+++ b/lang/ko/activities.php
@@ -0,0 +1,140 @@
+ '페이지 생성',
+ 'page_create_notification' => '페이지가 성공적으로 생성되었습니다',
+ 'page_update' => '페이지 업데이트',
+ 'page_update_notification' => '페이지가 성공적으로 업데이트 되었습니다',
+ 'page_delete' => '페이지 삭제',
+ 'page_delete_notification' => '페이지가 성공적으로 삭제되었습니다',
+ 'page_restore' => '페이지 복원',
+ 'page_restore_notification' => '페이지가 성공적으로 복원되었습니다',
+ 'page_move' => '페이지 이동',
+ 'page_move_notification' => '페이지가 성공적으로 이동되었습니다',
+
+ // Chapters
+ 'chapter_create' => '챕터 생성',
+ 'chapter_create_notification' => '챕터가 성공적으로 생성되었습니다.',
+ 'chapter_update' => '챕터 수정',
+ 'chapter_update_notification' => '챕터가 성공적으로 수정되었습니다.',
+ 'chapter_delete' => '챕터 삭제',
+ 'chapter_delete_notification' => '챕터가 성공적으로 삭제되었습니다.',
+ 'chapter_move' => '챕터 이동',
+ 'chapter_move_notification' => '페이지가 성공적으로 이동되었습니다.',
+
+ // Books
+ 'book_create' => '책 생성',
+ 'book_create_notification' => '책이 성공적으로 생성되었습니다.',
+ 'book_create_from_chapter' => '챕터를 책으로 변환',
+ 'book_create_from_chapter_notification' => '챕터가 책으로 성공적으로 변환되었습니다.',
+ 'book_update' => '업데이트된 책',
+ 'book_update_notification' => '책 수정함',
+ 'book_delete' => '삭제된 책',
+ 'book_delete_notification' => '책이 성공적으로 삭제되었습니다.',
+ 'book_sort' => '책 정렬',
+ 'book_sort_notification' => '책이 성공적으로 재정렬되었습니다.',
+
+ // Bookshelves
+ 'bookshelf_create' => '책장 만들기',
+ 'bookshelf_create_notification' => '책장을 성공적으로 생성했습니다.',
+ 'bookshelf_create_from_book' => '책을 책장으로 변환함',
+ 'bookshelf_create_from_book_notification' => '책을 성공적으로 책장으로 변환하였습니다.',
+ 'bookshelf_update' => '책장 업데이트',
+ 'bookshelf_update_notification' => '책장이 성공적으로 업데이트 되었습니다.',
+ 'bookshelf_delete' => '책장 삭제',
+ 'bookshelf_delete_notification' => '책장이 성공적으로 삭제되었습니다.',
+
+ // Revisions
+ 'revision_restore' => '복원한 수정본',
+ 'revision_delete' => '삭제한 수정본',
+ 'revision_delete_notification' => '수정본을 잘 삭제함',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" 을 북마크에 추가하였습니다.',
+ 'favourite_remove_notification' => '":name" 가 북마크에서 삭제되었습니다.',
+
+ // Watching
+ 'watch_update_level_notification' => '주시 환경설정이 성공적으로 업데이트되었습니다.',
+
+ // Auth
+ 'auth_login' => '로그인 완료',
+ 'auth_register' => '신규 사용자 등록',
+ 'auth_password_reset_request' => '사용자 비밀번호 초기화 요청',
+ 'auth_password_reset_update' => '사용자 비밀번호 초기화',
+ 'mfa_setup_method' => '다중인증(MFA)이 구성되었습니다.',
+ 'mfa_setup_method_notification' => '다중 인증 설정함',
+ 'mfa_remove_method' => 'MFA 메서드 제거',
+ 'mfa_remove_method_notification' => '다중인증(MFA)이 성공적으로 제거되었습니다.',
+
+ // Settings
+ 'settings_update' => '설정 변경',
+ 'settings_update_notification' => '설졍 변경 성공',
+ 'maintenance_action_run' => '유지관리 작업 실행',
+
+ // Webhooks
+ 'webhook_create' => '웹 훅 생성',
+ 'webhook_create_notification' => '웹 훅 생성함',
+ 'webhook_update' => '웹 훅 수정',
+ 'webhook_update_notification' => '웹 훅 설정이 수정되었습니다.',
+ 'webhook_delete' => '웹 훅 지우기',
+ 'webhook_delete_notification' => '웹 훅 삭제함',
+
+ // Imports
+ 'import_create' => '컨텐츠 ZIP 파일이 생성되었습니다.',
+ 'import_create_notification' => '컨텐츠 ZIP 파일이 업로드 되었습니다.',
+ 'import_run' => '컨텐츠 ZIP 파일을 업데이트하였습니다.',
+ 'import_run_notification' => '내용을 가져왔습니다.',
+ 'import_delete' => '임포트 파일 삭제',
+ 'import_delete_notification' => '임포트 파일을 삭제하였습니다.',
+
+ // Users
+ 'user_create' => '사용자 생성',
+ 'user_create_notification' => '사용자 생성 성공',
+ 'user_update' => '사용자 갱신',
+ 'user_update_notification' => '사용자가 업데이트되었습니다',
+ 'user_delete' => '사용자 삭제',
+ 'user_delete_notification' => '사용자가 삭제되었습니다',
+
+ // API Tokens
+ 'api_token_create' => '생성된 API 토큰',
+ 'api_token_create_notification' => 'API 토큰이 성공적으로 생성되었습니다.',
+ 'api_token_update' => '갱신된 API 토큰',
+ 'api_token_update_notification' => 'API 토큰이 성공적으로 업데이트되었습니다.',
+ 'api_token_delete' => '삭제된 API 토큰',
+ 'api_token_delete_notification' => 'API 토큰이 성공적으로 삭제되었습니다.',
+
+ // Roles
+ 'role_create' => '역활 생성',
+ 'role_create_notification' => '역할이 생성되었습니다',
+ 'role_update' => '역활 갱신',
+ 'role_update_notification' => '역할이 수정되었습니다',
+ 'role_delete' => '역활 삭제',
+ 'role_delete_notification' => '역할이 삭제되었습니다',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => '비운 휴지통',
+ 'recycle_bin_restore' => '휴지통에서 복원됨',
+ 'recycle_bin_destroy' => '휴지통에서 제거됨',
+
+ // Comments
+ 'commented_on' => '댓글 쓰기',
+ 'comment_create' => '댓글 생성',
+ 'comment_update' => '댓글 변경',
+ 'comment_delete' => '댓글 삭제',
+
+ // Sort Rules
+ 'sort_rule_create' => '정렬 규칙 생성',
+ 'sort_rule_create_notification' => '정렬 규칙이 성공적으로 생성되었습니다',
+ 'sort_rule_update' => '정렬 규칙 업데이트',
+ 'sort_rule_update_notification' => '정렬 규칙이 성공적으로 업데이트 되었습니다',
+ 'sort_rule_delete' => '정렬 규칙 삭제',
+ 'sort_rule_delete_notification' => '정렬 규칙이 성공적으로 삭제되었습니다',
+
+ // Other
+ 'permissions_update' => '권한 수정함',
+];
diff --git a/lang/ko/auth.php b/lang/ko/auth.php
new file mode 100644
index 00000000000..af9129f14e1
--- /dev/null
+++ b/lang/ko/auth.php
@@ -0,0 +1,117 @@
+ '자격 증명이 기록과 일치하지 않습니다.',
+ 'throttle' => '로그인 시도가 너무 많습니다. :seconds초 후에 다시 시도해주세요.',
+
+ // Login & Register
+ 'sign_up' => '가입',
+ 'log_in' => '로그인',
+ 'log_in_with' => ':socialDriver 소셜 계정으로 로그인',
+ 'sign_up_with' => ':socialDriver 소셜 계정으로 가입',
+ 'logout' => '로그아웃',
+
+ 'name' => '이름',
+ 'username' => '이용자명',
+ 'email' => '전자우편 주소',
+ 'password' => '비밀번호',
+ 'password_confirm' => '비밀번호 확인',
+ 'password_hint' => '8 글자를 넘어야 합니다.',
+ 'forgot_password' => '비밀번호를 잊으셨나요?',
+ 'remember_me' => '로그인 유지',
+ 'ldap_email_hint' => '계정에 연결한 전자우편 주소를 입력하세요.',
+ 'create_account' => '가입',
+ 'already_have_account' => '계정이 있나요?',
+ 'dont_have_account' => '계정이 없나요?',
+ 'social_login' => '소셜 로그인',
+ 'social_registration' => '소셜 계정으로 가입',
+ 'social_registration_text' => '소셜 계정으로 가입하고 로그인합니다.',
+
+ 'register_thanks' => '가입해 주셔서 감사합니다!',
+ 'register_confirm' => '전자우편을 확인한 후 버튼을 눌러 :appName에 접근하세요.',
+ 'registrations_disabled' => '가입 기능이 비활성화되어 있습니다',
+ 'registration_email_domain_invalid' => '이 전자우편 주소로는 이 사이트에 접근할 수 없습니다.',
+ 'register_success' => '가입했습니다! 이제 로그인할 수 있습니다.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => '로그인 시도 중',
+ 'auto_init_starting_desc' => '로그인을 시작하기 위해 인증 시스템에 접근 중입니다. 5초 후에도 아무런 반응이 없다면 아래 링크를 클릭하세요.',
+ 'auto_init_start_link' => '인증 진행',
+
+ // Password Reset
+ 'reset_password' => '비밀번호 바꾸기',
+ 'reset_password_send_instructions' => '전자우편 주소를 입력하세요. 이 주소로 해당 과정을 위한 링크를 보낼 것입니다.',
+ 'reset_password_send_button' => '재설정 링크 보내기',
+ 'reset_password_sent' => '비밀번호를 바꿀 수 있는 링크를 :email 전자우편 주소로 보낼 것입니다.',
+ 'reset_password_success' => '비밀번호를 바꿨습니다.',
+ 'email_reset_subject' => ':appName 비밀번호 바꾸기',
+ 'email_reset_text' => '비밀번호를 바꿉니다.',
+ 'email_reset_not_requested' => '비밀번호 재설정을 요청하지 않으셨다면 추가 조치가 필요하지 않습니다.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => ':appName 전자우편 인증을 확인합니다',
+ 'email_confirm_greeting' => ':appName 서비스에 가입해 주셔서 감사합니다!',
+ 'email_confirm_text' => '다음 버튼을 눌러 전자우편 주소를 확인하세요:',
+ 'email_confirm_action' => '전자우편 확인',
+ 'email_confirm_send_error' => '전자우편 확인이 필요하지만 이 시스템에서 전자우편을 발송하지 못했습니다. 전자우편 주소가 제대로 설정되었는지 확인하려면 관리자에게 연락을 해주세요.',
+ 'email_confirm_success' => '전자우편 인증을 성공했습니다. 이 전자우편 주소로 로그인할 수 있습니다.',
+ 'email_confirm_resent' => '전자우편 확인을 다시 보냈습니다. 우편함을 확인해주세요.',
+ 'email_confirm_thanks' => '확인해 주셔서 감사합니다!',
+ 'email_confirm_thanks_desc' => '확인이 처리되는 동안 잠시 기다려주세요. 3초 안에 리디렉션되지 않는다면 아내에 있는 "계속" 링크를 눌러서 진행하세요.',
+
+ 'email_not_confirmed' => '전자우편 주소가 확인되지 않았습니다.',
+ 'email_not_confirmed_text' => '전자우편 확인이 아직 완료되지 않았습니다.',
+ 'email_not_confirmed_click_link' => '등록한 직후에 발송된 전자우편에 있는 확인 링크를 클릭하세요.',
+ 'email_not_confirmed_resend' => '전자우편 확인을 위해 발송된 전자우편을 찾을 수 없다면 아래의 폼을 다시 발행하여 전자우편 확인을 재발송할 수 있습니다.',
+ 'email_not_confirmed_resend_button' => '확인용 이메일 재전송',
+
+ // User Invite
+ 'user_invite_email_subject' => ':appName 애플리케이션에서 초대를 받았습니다!',
+ 'user_invite_email_greeting' => ':appName 애플리케이션에 가입한 기록이 있습니다.',
+ 'user_invite_email_text' => '아래 버튼을 클릭하여 계정 비밀번호를 설정하고 접근 권한을 얻으세요:',
+ 'user_invite_email_action' => '비밀번호 설정',
+ 'user_invite_page_welcome' => ':appName 애플리케이션에 오신 것을 환영합니다!',
+ 'user_invite_page_text' => '계정 설정을 마치고 접근 권한을 얻으려면 :appName 애플리케이션에 로그인할 때 사용할 비밀번호를 설정해야 합니다.',
+ 'user_invite_page_confirm_button' => '비밀번호 확인',
+ 'user_invite_success_login' => '비밀번호를 설정했습니다, 이제 입력한 비밀번호로 :appName 애플리케이션에 로그인할 수 있습니다!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => '다중 인증 설정',
+ 'mfa_setup_desc' => '추가 보안 계층으로 다중 인증을 설정합니다.',
+ 'mfa_setup_configured' => '이미 설정되었습니다',
+ 'mfa_setup_reconfigure' => '재설정',
+ 'mfa_setup_remove_confirmation' => '다중 인증을 해제할까요?',
+ 'mfa_setup_action' => '설정',
+ 'mfa_backup_codes_usage_limit_warning' => '남은 백업 코드가 다섯 개 미만입니다. 새 백업 코드 세트를 생성하지 않아 코드가 소진되면 계정이 잠길 수 있습니다.',
+ 'mfa_option_totp_title' => '모바일 앱',
+ 'mfa_option_totp_desc' => '다중 인증에는 Google Authenticator, Authy나 Microsoft Authenticator와 같은 TOTP 지원 모바일 앱이 필요합니다.',
+ 'mfa_option_backup_codes_title' => '백업 코드',
+ 'mfa_option_backup_codes_desc' => '로그인 시 인증에 사용되는 일회용 백업 코드를 만듭니다. 이 백업 코드는 안전한 곳에 보관하세요.',
+ 'mfa_gen_confirm_and_enable' => '확인 및 활성화',
+ 'mfa_gen_backup_codes_title' => '백업 코드 설정',
+ 'mfa_gen_backup_codes_desc' => '코드 목록을 안전한 장소에 보관하세요. 코드 중 하나를 2FA에 쓸 수 있습니다.',
+ 'mfa_gen_backup_codes_download' => '코드 설치',
+ 'mfa_gen_backup_codes_usage_warning' => '각 코드는 한 번씩만 유효합니다.',
+ 'mfa_gen_totp_title' => '모바일 앱 설정',
+ 'mfa_gen_totp_desc' => '다중 인증에는 Google Authenticator, Authy나 Microsoft Authenticator와 같은 TOTP 지원 모바일 앱이 필요합니다.',
+ 'mfa_gen_totp_scan' => '인증 앱으로 QR 코드를 스캔하세요.',
+ 'mfa_gen_totp_verify_setup' => '설정 확인',
+ 'mfa_gen_totp_verify_setup_desc' => '인증 앱에서 생성한 코드를 입력하세요:',
+ 'mfa_gen_totp_provide_code_here' => '백업 코드를 입력하세요.',
+ 'mfa_verify_access' => '접근 확인',
+ 'mfa_verify_access_desc' => '사용자 계정에서는 액세스 권한을 부여받기 전에 추가 검증 수준을 통해 신원을 확인해야 합니다. 계속하려면 구성된 방법 중 하나를 사용하여 확인하세요.',
+ 'mfa_verify_no_methods' => '설정한 방법이 없습니다.',
+ 'mfa_verify_no_methods_desc' => '다중 인증을 설정하지 않았습니다. 접근 권한을 얻기 전에 하나 이상의 다중 인증을 설정해야 합니다.',
+ 'mfa_verify_use_totp' => '모바일 앱으로 인증하기',
+ 'mfa_verify_use_backup_codes' => '백업 코드로 인증하세요.',
+ 'mfa_verify_backup_code' => '백업 코드',
+ 'mfa_verify_backup_code_desc' => '나머지 백업 코드 중 하나를 입력하세요:',
+ 'mfa_verify_backup_code_enter_here' => '백업 코드를 입력하세요.',
+ 'mfa_verify_totp_desc' => '모바일 앱에서 생성한 백업 코드를 입력하세요:',
+ 'mfa_setup_login_notification' => '다중 인증을 설정했습니다. 설정한 방법으로 다시 로그인하세요.',
+];
diff --git a/lang/ko/common.php b/lang/ko/common.php
new file mode 100644
index 00000000000..9f0e9990f0c
--- /dev/null
+++ b/lang/ko/common.php
@@ -0,0 +1,115 @@
+ '취소',
+ 'close' => '닫기',
+ 'confirm' => '확인',
+ 'back' => '뒤로',
+ 'save' => '저장',
+ 'continue' => '계속',
+ 'select' => '선택',
+ 'toggle_all' => '모두 보기',
+ 'more' => '더 보기',
+
+ // Form Labels
+ 'name' => '이름',
+ 'description' => '설명',
+ 'role' => '역할',
+ 'cover_image' => '대표 이미지',
+ 'cover_image_description' => '이 이미지는 대략 440x250px가 되어야 하지만, 필요에 따라 다양한 시나리오에서 사용자 인터페이스에 맞게 유연하게 크기 조절 및 자르기가 가능하므로 실제로 표시되는 크기는 다를 수 있습니다.',
+
+ // Actions
+ 'actions' => '동작',
+ 'view' => '보기',
+ 'view_all' => '모두 보기',
+ 'new' => '신규',
+ 'create' => '만들기',
+ 'update' => '바꾸기',
+ 'edit' => '수정',
+ 'archive' => '보관',
+ 'unarchive' => '보관 해제',
+ 'sort' => '정렬',
+ 'move' => '이동',
+ 'copy' => '복사',
+ 'reply' => '답글',
+ 'delete' => '삭제',
+ 'delete_confirm' => '삭제',
+ 'search' => '검색',
+ 'search_clear' => '검색창 비우기',
+ 'reset' => '리셋',
+ 'remove' => '제거',
+ 'add' => '추가',
+ 'configure' => '구성',
+ 'manage' => '관리',
+ 'fullscreen' => '전체화면',
+ 'favourite' => '즐겨찾기',
+ 'unfavourite' => '즐겨찾기 해제',
+ 'next' => '다음',
+ 'previous' => '이전',
+ 'filter_active' => '적용 필터:',
+ 'filter_clear' => '필터 해제',
+ 'download' => '내려받기',
+ 'open_in_tab' => '탭에서 열기',
+ 'open' => '열기',
+
+ // Sort Options
+ 'sort_options' => '정렬 기준',
+ 'sort_direction_toggle' => '순서 반전',
+ 'sort_ascending' => '오름차순',
+ 'sort_descending' => '내림차순',
+ 'sort_name' => '이름',
+ 'sort_default' => '기본값',
+ 'sort_created_at' => '만든 날짜',
+ 'sort_updated_at' => '갱신한 날짜',
+
+ // Misc
+ 'deleted_user' => '삭제한 이용자',
+ 'no_activity' => '활동 없음',
+ 'no_items' => '항목 없음',
+ 'back_to_top' => '맨 위로',
+ 'skip_to_main_content' => '메인 항목으로',
+ 'toggle_details' => '내용 보기',
+ 'toggle_thumbnails' => '썸네일 보기',
+ 'details' => '정보',
+ 'grid_view' => '격자로 보기',
+ 'list_view' => '목록으로 보기',
+ 'default' => '기본 설정',
+ 'breadcrumb' => '탐색 경로',
+ 'status' => '상태',
+ 'status_active' => '활성',
+ 'status_inactive' => '비활성',
+ 'never' => '안 함',
+ 'none' => '없음',
+
+ // Header
+ 'homepage' => '홈페이지',
+ 'header_menu_expand' => '헤더 메뉴 펼치기',
+ 'profile_menu' => '프로필',
+ 'view_profile' => '프로필 보기',
+ 'edit_profile' => '프로필 바꾸기',
+ 'dark_mode' => '어두운 테마',
+ 'light_mode' => '밝은 테마',
+ 'global_search' => '전역 검색',
+
+ // Layout tabs
+ 'tab_info' => '정보',
+ 'tab_info_label' => '탭: 보조 정보 보이기',
+ 'tab_content' => '내용',
+ 'tab_content_label' => '탭: 우선 항목 보이기',
+
+ // Email Content
+ 'email_action_help' => ':actionText를 클릭할 수 없을 때는 웹 브라우저에서 다음 링크로 접속할 수 있습니다.',
+ 'email_rights' => '모든 권리는 보호됩니다.',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => '개인 정보 처리 방침',
+ 'terms_of_service' => '서비스 이용 약관',
+
+ // OpenSearch
+ 'opensearch_description' => '검색 :appName',
+];
diff --git a/lang/ko/components.php b/lang/ko/components.php
new file mode 100644
index 00000000000..7995ceebd9a
--- /dev/null
+++ b/lang/ko/components.php
@@ -0,0 +1,46 @@
+ '이미지 선택',
+ 'image_list' => '이미지 목록',
+ 'image_details' => '이미지 상세정보',
+ 'image_upload' => '이미지 올려두기',
+ 'image_intro' => '여기에서 이전에 시스템에 업로드한 이미지를 선택하고 관리할 수 있습니다.',
+ 'image_intro_upload' => '이미지 파일을 이 창으로 끌어다 놓거나 위의 \'이미지 업로드\' 버튼을 사용하여 새 이미지를 업로드합니다.',
+ 'image_all' => '모든 이미지',
+ 'image_all_title' => '모든 이미지 보기',
+ 'image_book_title' => '이 책에서 쓰고 있는 이미지',
+ 'image_page_title' => '이 문서에서 쓰고 있는 이미지',
+ 'image_search_hint' => '이미지 이름 검색',
+ 'image_uploaded' => '올림 :uploadedDate',
+ 'image_uploaded_by' => ':userName 이용자가 올려둠',
+ 'image_uploaded_to' => ':pageLink 로 업로드됨',
+ 'image_updated' => '갱신일 :updateDate',
+ 'image_load_more' => '더 보기',
+ 'image_image_name' => '이미지 이름',
+ 'image_delete_used' => '이 이미지는 다음 문서들이 쓰고 있습니다.',
+ 'image_delete_confirm_text' => '이 이미지를 정말 삭제하시겠습니까?',
+ 'image_select_image' => '이미지 선택',
+ 'image_dropzone' => '여기에 이미지를 드롭하거나 여기를 클릭하세요. 이미지를 올릴 수 있습니다.',
+ 'image_dropzone_drop' => '업로드 할 이미지 파일을 여기에 놓으세요.',
+ 'images_deleted' => '이미지 삭제함',
+ 'image_preview' => '이미지 미리 보기',
+ 'image_upload_success' => '이미지 올림',
+ 'image_update_success' => '이미지 정보가 수정되었습니다.',
+ 'image_delete_success' => '이미지가 삭제되었습니다.',
+ 'image_replace' => '이미지 교체',
+ 'image_replace_success' => '이미지가 수정되었습니다.',
+ 'image_rebuild_thumbs' => '사이즈 변경 재생성하기',
+ 'image_rebuild_thumbs_success' => '이미지 크기 변경이 성공적으로 완료되었습니다!',
+
+ // Code Editor
+ 'code_editor' => '코드 수정',
+ 'code_language' => '언어',
+ 'code_content' => '내용',
+ 'code_session_history' => '세션 기록',
+ 'code_save' => '저장',
+];
diff --git a/lang/ko/editor.php b/lang/ko/editor.php
new file mode 100644
index 00000000000..b5c4ae8070c
--- /dev/null
+++ b/lang/ko/editor.php
@@ -0,0 +1,182 @@
+ '일반',
+ 'advanced' => '고급',
+ 'none' => '없음',
+ 'cancel' => '취소',
+ 'save' => '저장',
+ 'close' => '닫기',
+ 'apply' => '적용',
+ 'undo' => '되돌리기',
+ 'redo' => '다시 실행',
+ 'left' => '왼쪽',
+ 'center' => '가운데',
+ 'right' => '오른쪽',
+ 'top' => '위',
+ 'middle' => '가운데',
+ 'bottom' => '아래',
+ 'width' => '너비',
+ 'height' => '높이',
+ 'More' => '더 보기',
+ 'select' => '선택...',
+
+ // Toolbar
+ 'formats' => '형식',
+ 'header_large' => '큰 제목',
+ 'header_medium' => '중간 제목',
+ 'header_small' => '작은 제목',
+ 'header_tiny' => '가장 작은 제목',
+ 'paragraph' => '단락',
+ 'blockquote' => '인용',
+ 'inline_code' => '인라인 코드',
+ 'callouts' => '범례',
+ 'callout_information' => '정보',
+ 'callout_success' => '성공',
+ 'callout_warning' => '경고',
+ 'callout_danger' => '위험',
+ 'bold' => '굵게',
+ 'italic' => '기울임체',
+ 'underline' => '밑줄',
+ 'strikethrough' => '취소선',
+ 'superscript' => '윗첨자',
+ 'subscript' => '아랫첨자',
+ 'text_color' => '글자 색상',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => '사용자 지정 색상',
+ 'remove_color' => '색상 제거',
+ 'background_color' => '배경 색상',
+ 'align_left' => '왼쪽 정렬',
+ 'align_center' => '가운데 정렬',
+ 'align_right' => '오른쪽 정렬',
+ 'align_justify' => '양쪽 맞춤',
+ 'list_bullet' => '글머리 기호 목록',
+ 'list_numbered' => '번호 매기기 목록',
+ 'list_task' => '작업 목록',
+ 'indent_increase' => '들여쓰기 증가',
+ 'indent_decrease' => '들여쓰기 감소',
+ 'table' => '테이블',
+ 'insert_image' => '이미지 삽입',
+ 'insert_image_title' => '이미지 삽입/수정',
+ 'insert_link' => '링크 삽입/수정',
+ 'insert_link_title' => '링크 삽입/수정',
+ 'insert_horizontal_line' => '수평선 삽입',
+ 'insert_code_block' => '코드 블럭 삽입',
+ 'edit_code_block' => '코드 블록 편집',
+ 'insert_drawing' => '그리기 삽입/수정',
+ 'drawing_manager' => '그리기 설정',
+ 'insert_media' => '미디어 삽입/수정',
+ 'insert_media_title' => '미디어 삽입/수정',
+ 'clear_formatting' => '양식 초기화',
+ 'source_code' => '소스 코드',
+ 'source_code_title' => '소스 코드',
+ 'fullscreen' => '전체화면',
+ 'image_options' => '이미지 옵션',
+
+ // Tables
+ 'table_properties' => '테이블 속성',
+ 'table_properties_title' => '테이블 속성',
+ 'delete_table' => '테이블 삭제',
+ 'table_clear_formatting' => '테이블 형식 지우기',
+ 'resize_to_contents' => '내용 크기 조정',
+ 'row_header' => '행 머릿글',
+ 'insert_row_before' => '앞에 행 추가',
+ 'insert_row_after' => '뒤에 행 추가',
+ 'delete_row' => '행 삭제',
+ 'insert_column_before' => '앞에 열 추가',
+ 'insert_column_after' => '뒤에 열 추가',
+ 'delete_column' => '열 삭제',
+ 'table_cell' => '셀',
+ 'table_row' => '행',
+ 'table_column' => '열',
+ 'cell_properties' => '셀 속성',
+ 'cell_properties_title' => '셀 속성',
+ 'cell_type' => '셀 스타일',
+ 'cell_type_cell' => '셀',
+ 'cell_scope' => '범위',
+ 'cell_type_header' => '헤더 셀',
+ 'merge_cells' => '셀 병합',
+ 'split_cell' => '셀 분할',
+ 'table_row_group' => '행 그룹',
+ 'table_column_group' => '열 그룹',
+ 'horizontal_align' => '가로 맞춤',
+ 'vertical_align' => '세로 맞춤',
+ 'border_width' => '테두리 너비',
+ 'border_style' => '테두리 스타일',
+ 'border_color' => '테두리 색',
+ 'row_properties' => '행 속성',
+ 'row_properties_title' => '열 속성',
+ 'cut_row' => '행 자르기',
+ 'copy_row' => '행 복사',
+ 'paste_row_before' => '앞에 행 붙여넣기',
+ 'paste_row_after' => '다음 뒤에 행 붙여넣기',
+ 'row_type' => '행 타입',
+ 'row_type_header' => '머리글',
+ 'row_type_body' => '본문',
+ 'row_type_footer' => '바닥글',
+ 'alignment' => '정렬',
+ 'cut_column' => '열 잘라내기',
+ 'copy_column' => '열 복사',
+ 'paste_column_before' => '열 앞에 붙여넣기',
+ 'paste_column_after' => '열 뒤에 붙여넣기',
+ 'cell_padding' => '셀 패딩',
+ 'cell_spacing' => '셀 간격',
+ 'caption' => '캡션',
+ 'show_caption' => '캡션 보기',
+ 'constrain' => '비율 유지',
+ 'cell_border_solid' => '단색',
+ 'cell_border_dotted' => '점선',
+ 'cell_border_dashed' => '파선',
+ 'cell_border_double' => '겹선',
+ 'cell_border_groove' => '테두리 음각',
+ 'cell_border_ridge' => '테두리 양각',
+ 'cell_border_inset' => '요소 음각',
+ 'cell_border_outset' => '요소 양각',
+ 'cell_border_none' => '없음',
+ 'cell_border_hidden' => '숨김',
+
+ // Images, links, details/summary & embed
+ 'source' => '원본',
+ 'alt_desc' => '대체 설명',
+ 'embed' => '포함',
+ 'paste_embed' => '아래에 포함할 코드를 붙여넣습니다:',
+ 'url' => 'URL',
+ 'text_to_display' => '표시할 텍스트',
+ 'title' => '제목',
+ 'browse_links' => '링크 찾기',
+ 'open_link' => '링크 열기',
+ 'open_link_in' => '다음에서 링크 열기...',
+ 'open_link_current' => '현재 창',
+ 'open_link_new' => '새 창',
+ 'remove_link' => '링크 제거',
+ 'insert_collapsible' => '접을 수 있는 블록 삽입',
+ 'collapsible_unwrap' => '언래핑',
+ 'edit_label' => '레이블 수정',
+ 'toggle_open_closed' => '열림/닫힘 전환',
+ 'collapsible_edit' => '접을 수 있는 블록 편집',
+ 'toggle_label' => '레이블 보이기/숨기기',
+
+ // About view
+ 'about' => '이 편집기에 대하여',
+ 'about_title' => 'WYSIWYG 편집기에 대하여',
+ 'editor_license' => '편집기 라이선스 & 저작권',
+ 'editor_lexical_license' => '이 편집기는 MIT 라이선스에 따라 배포되는 :lexicalLink의 포크로 만들어졌습니다.',
+ 'editor_lexical_license_link' => '전체 라이센스 세부 사항은 여기에서 확인할 수 있습니다.',
+ 'editor_tiny_license' => '이 편집기는 MIT 라이선스에 따라 제공되는 :tinyLink를 사용하여 제작되었습니다.',
+ 'editor_tiny_license_link' => 'TinyMCE의 저작권 및 라이선스 세부 정보는 여기에서 확인할 수 있습니다.',
+ 'save_continue' => '저장하고 계속하기',
+ 'callouts_cycle' => '(계속 누르면 유형이 전환됩니다.)',
+ 'link_selector' => '콘텐츠에 연결',
+ 'shortcuts' => '단축키',
+ 'shortcut' => '단축키',
+ 'shortcuts_intro' => '편집기에서 사용할 수 있는 바로 가기는 다음과 같습니다:',
+ 'windows_linux' => '(윈도우/리눅스)',
+ 'mac' => '(맥)',
+ 'description' => '상세정보',
+];
diff --git a/lang/ko/entities.php b/lang/ko/entities.php
new file mode 100644
index 00000000000..44809d99ff4
--- /dev/null
+++ b/lang/ko/entities.php
@@ -0,0 +1,476 @@
+ '최근에 수정함',
+ 'recently_created_pages' => '최근에 만든 문서',
+ 'recently_updated_pages' => '최근에 수정한 문서',
+ 'recently_created_chapters' => '최근에 만든 챕터',
+ 'recently_created_books' => '최근에 만든 책',
+ 'recently_created_shelves' => '최근에 만든 책장',
+ 'recently_update' => '최신 수정 목록',
+ 'recently_viewed' => '최근에 본 목록',
+ 'recent_activity' => '최근 활동 기록',
+ 'create_now' => '바로 만들기',
+ 'revisions' => '수정본',
+ 'meta_revision' => '수정본 #:revisionCount',
+ 'meta_created' => '생성 :timeLength',
+ 'meta_created_name' => '생성 :timeLength, :user',
+ 'meta_updated' => '수정 :timeLength',
+ 'meta_updated_name' => '수정 :timeLength, :user',
+ 'meta_owned_name' => ':user 소유',
+ 'meta_reference_count' => '참조 대상 :count item|참조 대상 :count items',
+ 'entity_select' => '항목 선택',
+ 'entity_select_lack_permission' => '이 항목을 선택하기 위해 필요한 권한이 없습니다',
+ 'images' => '이미지',
+ 'my_recent_drafts' => '내 최근의 초안 문서',
+ 'my_recently_viewed' => '내가 읽은 문서',
+ 'my_most_viewed_favourites' => '내가 가장 많이 본 즐겨찾기',
+ 'my_favourites' => '나의 즐겨찾기',
+ 'no_pages_viewed' => '본 페이지가 없습니다.',
+ 'no_pages_recently_created' => '최근에 생성된 페이지가 없습니다.',
+ 'no_pages_recently_updated' => '최근 업데이트된 페이지가 없습니다.',
+ 'export' => '내보내기',
+ 'export_html' => '포함된 웹 파일',
+ 'export_pdf' => 'PDF 파일',
+ 'export_text' => '일반 텍스트 파일',
+ 'export_md' => '마크다운 파일',
+ 'export_zip' => '컨텐츠 ZIP 파일',
+ 'default_template' => '기본 페이지 템플릿',
+ 'default_template_explain' => '이 항목 내에서 생성되는 모든 페이지의 기본 콘텐츠로 사용할 페이지 템플릿을 지정합니다. 페이지 작성자가 선택한 템플릿 페이지를 볼 수 있는 권한이 있는 경우에만 이 항목이 사용된다는 점을 유의하세요.',
+ 'default_template_select' => '템플릿 페이지 선택',
+ 'import' => '컨텐츠 ZIP 파일 가져오기',
+ 'import_validate' => '컨텐츠 ZIP 파일 검증하기',
+ 'import_desc' => '같은 인스턴스나 다른 인스턴스에서 휴대용 zip 내보내기를 사용하여 책, 장 및 페이지를 가져옵니다. 진행하려면 ZIP 파일을 선택합니다. 파일을 업로드하고 검증한 후 다음 보기에서 가져오기를 구성하고 확인할 수 있습니다.',
+ 'import_zip_select' => '업로드할 휴대용 압축 파일 선택',
+ 'import_zip_validation_errors' => '컨텐츠 ZIP 파일을 검증하는 동안 오류가 감지되었습니다.',
+ 'import_pending' => '컨텐츠 ZIP 파일 가져오기가 일시정지 되었습니다.',
+ 'import_pending_none' => 'Portable ZIP 파일 가져오기가 시작되지 않았습니다.',
+ 'import_continue' => '컨텐츠 ZIP 파일 가져오기가 시작되지 않았습니다.',
+ 'import_continue_desc' => '업로드된 컨텐츠 ZIP 파일에서 가져올 내용을 검토합니다. 준비가 되면 가져오기를 실행하여 이 시스템에 내용을 추가합니다. 업로드된 ZIP 가져오기 파일은 가져오기가 성공하면 자동으로 제거됩니다.',
+ 'import_details' => '컨텐츠 ZIP 파일 상세',
+ 'import_run' => '가져오기 실행',
+ 'import_size' => '컨텐츠 ZIP 파일 사이즈',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => '권한',
+ 'permissions_desc' => '여기에서 권한을 설정하여 사용자 역할에서 제공하는 기본 권한을 재정의합니다.',
+ 'permissions_book_cascade' => '책에 설정된 권한은 자체 권한이 정의되어 있지 않은 한 하위 챕터와 페이지에 자동으로 계단식으로 적용됩니다.',
+ 'permissions_chapter_cascade' => '챕터에 설정된 권한은 하위 페이지에 자체 권한이 정의되어 있지 않는 한 자동으로 계단식으로 적용됩니다.',
+ 'permissions_save' => '권한 저장',
+ 'permissions_owner' => '소유자',
+ 'permissions_role_everyone_else' => '그 외 모든 사용자',
+ 'permissions_role_everyone_else_desc' => '특별히 재정의되지 않은 모든 역할에 대한 권한을 설정.',
+ 'permissions_role_override' => '역할에 대한 권한 재정의하기',
+ 'permissions_inherit_defaults' => '기본값 상속',
+
+ // Search
+ 'search_results' => '검색 결과',
+ 'search_total_results_found' => ':count개|총 :count개',
+ 'search_clear' => '검색 지우기',
+ 'search_no_pages' => '결과 없음',
+ 'search_for_term' => ':term 검색',
+ 'search_more' => '더 많은 결과',
+ 'search_advanced' => '고급 검색',
+ 'search_terms' => '용어 검색',
+ 'search_content_type' => '형식',
+ 'search_exact_matches' => '정확히 일치',
+ 'search_tags' => '태그 검색',
+ 'search_options' => '선택',
+ 'search_viewed_by_me' => '내가 읽음',
+ 'search_not_viewed_by_me' => '내가 읽지 않음',
+ 'search_permissions_set' => '권한 설정함',
+ 'search_created_by_me' => '내가 만듦',
+ 'search_updated_by_me' => '내가 수정함',
+ 'search_owned_by_me' => '내가 소유함',
+ 'search_date_options' => '날짜',
+ 'search_updated_before' => '이전에 수정함',
+ 'search_updated_after' => '이후에 수정함',
+ 'search_created_before' => '이전에 만듦',
+ 'search_created_after' => '이후에 만듦',
+ 'search_set_date' => '날짜 설정',
+ 'search_update' => '검색',
+
+ // Shelves
+ 'shelf' => '책꽂이',
+ 'shelves' => '책꽂이',
+ 'x_shelves' => '책꽂이 :count개|총 :count개',
+ 'shelves_empty' => '만든 책꽂이가 없습니다.',
+ 'shelves_create' => '책꽂이 만들기',
+ 'shelves_popular' => '많이 읽은 책꽂이',
+ 'shelves_new' => '새로운 책꽂이',
+ 'shelves_new_action' => '새 책꽂이',
+ 'shelves_popular_empty' => '많이 읽은 책꽂이 목록',
+ 'shelves_new_empty' => '새로운 책꽂이 목록',
+ 'shelves_save' => '저장',
+ 'shelves_books' => '이 책꽂이에 있는 책들',
+ 'shelves_add_books' => '이 책꽂이에 책 추가',
+ 'shelves_drag_books' => '책을 이 책장에 추가하려면 아래로 드래그하세요',
+ 'shelves_empty_contents' => '이 책꽂이에 책이 없습니다.',
+ 'shelves_edit_and_assign' => '책꽂이 바꾸기로 책을 추가하세요.',
+ 'shelves_edit_named' => '책꽂이 편집 :name',
+ 'shelves_edit' => '책꽂이 편집',
+ 'shelves_delete' => '책꽂이 삭제',
+ 'shelves_delete_named' => '책꽂이 삭제 :이름',
+ 'shelves_delete_explain' => "그러면 ':name'이라는 이름의 서가가 삭제됩니다. 포함된 책은 삭제되지 않습니다.",
+ 'shelves_delete_confirmation' => '이 책꽂이를 삭제하시겠습니까?',
+ 'shelves_permissions' => '책꽂이 권한',
+ 'shelves_permissions_updated' => '책꽂이 권한 업데이트됨',
+ 'shelves_permissions_active' => '책꽂이 권한 활성화',
+ 'shelves_permissions_cascade_warning' => '책꽂이에 대한 권한은 포함된 책에 자동으로 계단식으로 부여되지 않습니다. 한 권의 책이 여러 개의 책꽂이에 존재할 수 있기 때문입니다. 그러나 아래 옵션을 사용하여 권한을 하위 책으로 복사할 수 있습니다.',
+ 'shelves_permissions_create' => '책꽂이 만들기 권한은 아래 작업을 사용하여 하위 책에 대한 권한을 복사하는 데만 사용됩니다. 책을 만드는 기능은 제어하지 않습니다.',
+ 'shelves_copy_permissions_to_books' => '권한 맞춤',
+ 'shelves_copy_permissions' => '실행',
+ 'shelves_copy_permissions_explain' => '그러면 이 책꽂이의 현재 권한 설정이 이 책꽂이에 포함된 모든 책에 적용됩니다. 활성화하기 전에 이 책꽂이의 권한에 대한 변경 사항이 모두 저장되었는지 확인하세요.',
+ 'shelves_copy_permission_success' => '책꽂이 권한이 복사됨 :count books',
+
+ // Books
+ 'book' => '책',
+ 'books' => '책',
+ 'x_books' => '책 :count개|총 :count개',
+ 'books_empty' => '만든 책이 없습니다.',
+ 'books_popular' => '많이 읽은 책',
+ 'books_recent' => '최근에 읽은 책',
+ 'books_new' => '새로운 책',
+ 'books_new_action' => '새 책',
+ 'books_popular_empty' => '많이 읽은 책 목록',
+ 'books_new_empty' => '새로운 책 목록',
+ 'books_create' => '책 만들기',
+ 'books_delete' => '책 삭제하기',
+ 'books_delete_named' => ':bookName(을)를 지웁니다.',
+ 'books_delete_explain' => ':bookName에 있는 모든 챕터와 문서도 지웁니다.',
+ 'books_delete_confirmation' => '이 책을 지우시겠습니까?',
+ 'books_edit' => '책 바꾸기',
+ 'books_edit_named' => ':bookName(을)를 바꿉니다.',
+ 'books_form_book_name' => '책 이름',
+ 'books_save' => '저장',
+ 'books_permissions' => '책 권한',
+ 'books_permissions_updated' => '책의 권한이 수정되었습니다.',
+ 'books_empty_contents' => '이 책에 챕터나 문서가 없습니다.',
+ 'books_empty_create_page' => '문서 만들기',
+ 'books_empty_sort_current_book' => '현재 책 정렬',
+ 'books_empty_add_chapter' => '챕터 만들기',
+ 'books_permissions_active' => '책 권한 적용됨',
+ 'books_search_this' => '이 책에서 검색',
+ 'books_navigation' => '목차',
+ '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_chapters_first' => '챕터 우선',
+ 'books_sort_chapters_last' => '문서 우선',
+ 'books_sort_show_other' => '다른 책들',
+ 'books_sort_save' => '적용',
+ 'books_sort_show_other_desc' => '여기에 다른 책을 추가하여 정렬 작업에 포함시키고 책 간 재구성을 쉽게 할 수 있습니다.',
+ 'books_sort_move_up' => '위로 이동',
+ 'books_sort_move_down' => '아래로 이동',
+ 'books_sort_move_prev_book' => '이전 책으로 이동',
+ 'books_sort_move_next_book' => '다음 책으로 이동',
+ 'books_sort_move_prev_chapter' => '이전 챕터로 이동',
+ 'books_sort_move_next_chapter' => '다음 챕터로 이동',
+ 'books_sort_move_book_start' => '책 시작 부분으로 이동',
+ 'books_sort_move_book_end' => '책의 끝으로 이동',
+ 'books_sort_move_before_chapter' => '이전 챕터로 이동',
+ 'books_sort_move_after_chapter' => '챕터 뒤로 이동',
+ 'books_copy' => '책 복사하기',
+ 'books_copy_success' => '책을 복사하였습니다.',
+
+ // Chapters
+ 'chapter' => '챕터',
+ 'chapters' => '챕터',
+ 'x_chapters' => '챕터 :count개|총 :count개',
+ 'chapters_popular' => '많이 읽은 챕터',
+ 'chapters_new' => '새 장',
+ 'chapters_create' => '챕터 만들기',
+ 'chapters_delete' => '챕터 삭제하기',
+ 'chapters_delete_named' => ':chapterName(을)를 지웁니다.',
+ 'chapters_delete_explain' => '\':ChapterName\'에 있는 모든 페이지도 지웁니다.',
+ 'chapters_delete_confirm' => '이 챕터를 지울 건가요?',
+ 'chapters_edit' => '챕터 수정하기',
+ 'chapters_edit_named' => ':chapterName 바꾸기',
+ 'chapters_save' => '저장',
+ 'chapters_move' => '챕터 이동하기',
+ 'chapters_move_named' => ':chapterName 이동하기',
+ 'chapters_copy' => '챕터 복사하기',
+ 'chapters_copy_success' => '챕터를 복사하였습니다.',
+ 'chapters_permissions' => '챕터 권한',
+ 'chapters_empty' => '이 챕터에 문서가 없습니다.',
+ 'chapters_permissions_active' => '문서 권한 허용함',
+ 'chapters_permissions_success' => '챕터의 권한을 수정하였습니다.',
+ 'chapters_search_this' => '이 챕터에서 검색',
+ 'chapter_sort_book' => '책 정렬하기',
+
+ // Pages
+ 'page' => '페이지',
+ 'pages' => '페이지',
+ 'x_pages' => '문서 :count개|총 :count개',
+ 'pages_popular' => '많이 읽은 문서',
+ 'pages_new' => '새 페이지',
+ 'pages_attachments' => '첨부',
+ 'pages_navigation' => '목차',
+ 'pages_delete' => '문서 삭제하기',
+ 'pages_delete_named' => ':pageName 삭제하기',
+ 'pages_delete_draft_named' => ':pageName 초안 문서 삭제하기',
+ 'pages_delete_draft' => '초안 문서 삭제하기',
+ 'pages_delete_success' => '문서 지움',
+ 'pages_delete_draft_success' => '초안 문서 지움',
+ 'pages_delete_warning_template' => '이 페이지는 책의 기본 페이지 템플릿으로 사용 중입니다. 이 페이지가 삭제되면 해당하는 책에 더 이상 기본 페이지 템플릿이 적용되지 않습니다.',
+ 'pages_delete_confirm' => '이 문서를 지울 건가요?',
+ 'pages_delete_draft_confirm' => '이 초안을 지울 건가요?',
+ 'pages_editing_named' => ':pageName 수정',
+ 'pages_edit_draft_options' => '초안 문서 옵션',
+ 'pages_edit_save_draft' => '초안으로 저장',
+ 'pages_edit_draft' => '초안 문서 수정',
+ 'pages_editing_draft' => '초안 문서 수정',
+ 'pages_editing_page' => '문서 수정',
+ 'pages_edit_draft_save_at' => '보관함: ',
+ 'pages_edit_delete_draft' => '초안 삭제',
+ 'pages_edit_delete_draft_confirm' => '초안 페이지 변경 내용을 삭제하시겠습니까? 마지막 전체 저장 이후의 모든 변경 내용이 손실되고 편집기가 최신 페이지의 초안 저장 상태가 아닌 상태로 업데이트됩니다.',
+ 'pages_edit_discard_draft' => '변경된 내용 삭제',
+ 'pages_edit_switch_to_markdown' => '마크다운 편집기로 전환',
+ 'pages_edit_switch_to_markdown_clean' => '(Clean Content)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stable Content)',
+ 'pages_edit_switch_to_wysiwyg' => 'WYSIWYG 편집기로 전환',
+ 'pages_edit_switch_to_new_wysiwyg' => '새 위지윅 편집기로 변경',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => '수정본 설명',
+ 'pages_edit_enter_changelog_desc' => '수정본 설명',
+ 'pages_edit_enter_changelog' => '변경 로그 입력란',
+ 'pages_editor_switch_title' => '편집기 전환',
+ 'pages_editor_switch_are_you_sure' => '이 페이지의 편집기를 변경하시겠어요?',
+ 'pages_editor_switch_consider_following' => '편집기를 전환할 때에 다음 사항들을 고려하세요:',
+ 'pages_editor_switch_consideration_a' => '저장된 새 편집기 옵션은 편집기 유형을 직접 변경할 수 없는 편집자를 포함하여 향후 모든 편집자가 사용할 수 있습니다.',
+ 'pages_editor_switch_consideration_b' => '이로 인해 특정 상황에서는 상세 내용과 구문이 손실될 수 있습니다.',
+ 'pages_editor_switch_consideration_c' => '마지막 저장 이후 변경된 태그 또는 변경 로그 변경 사항은 이 변경 사항에서 유지되지 않습니다.',
+ 'pages_save' => '저장',
+ 'pages_title' => '문서 제목',
+ 'pages_name' => '문서 이름',
+ 'pages_md_editor' => '에디터',
+ 'pages_md_preview' => '미리 보기',
+ 'pages_md_insert_image' => '이미지 추가',
+ 'pages_md_insert_link' => '내부 링크',
+ 'pages_md_insert_drawing' => '드로잉 추가',
+ 'pages_md_show_preview' => '미리보기 표시',
+ 'pages_md_sync_scroll' => '미리보기 스크롤 동기화',
+ 'pages_md_plain_editor' => '플레인텍스트 편집기',
+ 'pages_drawing_unsaved' => '저장되지 않은 드로잉 발견',
+ 'pages_drawing_unsaved_confirm' => '이전에 실패한 드로잉 저장 시도에서 저장되지 않은 드로잉 데이터가 발견되었습니다. 이 저장되지 않은 드로잉을 복원하고 계속 편집하시겠습니까?',
+ 'pages_not_in_chapter' => '챕터에 있는 문서가 아닙니다.',
+ 'pages_move' => '문서 이동하기',
+ 'pages_copy' => '문서 복제',
+ 'pages_copy_desination' => '복제할 위치',
+ 'pages_copy_success' => '복제함',
+ 'pages_permissions' => '문서 권한',
+ 'pages_permissions_success' => '문서 권한 바꿈',
+ 'pages_revision' => '수정본',
+ 'pages_revisions' => '문서 수정본',
+ 'pages_revisions_desc' => '아래는 이 페이지의 모든 과거 개정 버전입니다. 권한이 허용하는 경우 이전 페이지 버전을 되돌아보고, 비교하고, 복원할 수 있습니다. 시스템 구성에 따라 이전 수정본이 자동으로 삭제될 수 있으므로 페이지의 전체 기록이 여기에 완전히 반영되지 않을 수 있습니다.',
+ 'pages_revisions_named' => ':pageName 수정본',
+ 'pages_revision_named' => ':pageName 수정본',
+ 'pages_revision_restored_from' => '#:id; :summary에서 복구함',
+ 'pages_revisions_created_by' => '만든 사용자',
+ 'pages_revisions_date' => '수정한 날짜',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => '수정 번호',
+ 'pages_revisions_numbered' => '수정본 #:id',
+ 'pages_revisions_numbered_changes' => '수정본 #:id에서 바꾼 부분',
+ 'pages_revisions_editor' => '편집기 유형',
+ 'pages_revisions_changelog' => '설명',
+ 'pages_revisions_changes' => '바꾼 부분',
+ 'pages_revisions_current' => '현재 판본',
+ 'pages_revisions_preview' => '미리 보기',
+ 'pages_revisions_restore' => '복원',
+ 'pages_revisions_none' => '수정본이 없습니다.',
+ 'pages_copy_link' => '주소 복사',
+ 'pages_edit_content_link' => '편집기의 섹션으로 이동',
+ 'pages_pointer_enter_mode' => '섹션 선택 모드로 들어가기',
+ 'pages_pointer_label' => '페이지 섹션 옵션',
+ 'pages_pointer_permalink' => '페이지 섹션 퍼머링크',
+ 'pages_pointer_include_tag' => '페이지 섹션 포함 태그 포함',
+ 'pages_pointer_toggle_link' => '퍼머링크 모드, 포함 태그를 표시하려면 누릅니다.',
+ 'pages_pointer_toggle_include' => '태그 포함 모드, 퍼머링크를 표시하려면 누릅니다.',
+ 'pages_permissions_active' => '문서 권한 허용함',
+ 'pages_initial_revision' => '최초 게시',
+ 'pages_references_update_revision' => '시스템에서 내부 링크 자동 업데이트',
+ 'pages_initial_name' => '제목 없음',
+ 'pages_editing_draft_notification' => ':timeDiff에 초안 문서입니다.',
+ 'pages_draft_edited_notification' => '최근에 수정한 문서이기 때문에 초안 문서를 폐기하는 편이 좋습니다.',
+ 'pages_draft_page_changed_since_creation' => '최근에 수정한 문서이기 때문에 임시 저장문서를 폐기하는 편이 좋습니다.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count명이 이 문서를 수정하고 있습니다.',
+ 'start_b' => ':userName이 이 문서를 수정하고 있습니다.',
+ 'time_a' => '수정본이 생겼습니다.',
+ 'time_b' => '(:minCount분 전)',
+ 'message' => ':start :time. 다른 사용자의 수정본을 덮어쓰지 않도록 주의하세요.',
+ ],
+ 'pages_draft_discarded' => '초안 폐기! 편집기가 현재 페이지 콘텐츠로 업데이트되었습니다.',
+ 'pages_draft_deleted' => '초안이 삭제되었습니다! 편집기가 현재 페이지 콘텐츠로 업데이트되었습니다.',
+ 'pages_specific' => '특정한 문서',
+ 'pages_is_template' => '템플릿',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => '사이드바 토글',
+ 'page_tags' => '페이지 태그',
+ 'chapter_tags' => '장 태그',
+ 'book_tags' => '책 태그',
+ 'shelf_tags' => '책꽂이 태그',
+ 'tag' => '태그',
+ 'tags' => '태그',
+ 'tags_index_desc' => '태그를 시스템 내의 콘텐츠에 적용하여 유연한 형태의 분류를 적용할 수 있습니다. 태그는 키와 값을 모두 가질 수 있으며 값은 선택 사항입니다. 태그가 적용되면 태그 이름과 값을 사용하여 콘텐츠를 쿼리할 수 있습니다.',
+ 'tag_name' => '태그 이름',
+ 'tag_value' => '리스트 값 (선택 사항)',
+ 'tags_explain' => "문서를 더 잘 분류하려면 태그를 추가하세요.\n태그에 값을 할당하여 더욱 체계적으로 구성할 수 있습니다.",
+ 'tags_add' => '다른 태그 추가하기',
+ 'tags_remove' => '이 태그 제거하기',
+ 'tags_usages' => '전체 태그 이용량',
+ 'tags_assigned_pages' => '| 페이지 태그 할당 |',
+ 'tags_assigned_chapters' => '| 장 태그 할당 |',
+ 'tags_assigned_books' => '| 책 태그 할당 |',
+ 'tags_assigned_shelves' => '| 책꽂이 태그 할당 |',
+ 'tags_x_unique_values' => ':count 중복 없는 값',
+ 'tags_all_values' => '모든 값',
+ 'tags_view_tags' => '태그 보기',
+ 'tags_view_existing_tags' => '기존 태그 보기',
+ 'tags_list_empty_hint' => '태그는 에디터 사이드바나 책, 챕터 또는 책꽂이 정보 편집에서 지정할 수 있습니다.',
+ 'attachments' => '첨부 파일',
+ 'attachments_explain' => '파일이나 링크를 첨부하세요. 정보 탭에 나타납니다.',
+ 'attachments_explain_instant_save' => '여기에서 바꾼 내용은 바로 적용합니다.',
+ 'attachments_upload' => '파일 올리기',
+ 'attachments_link' => '링크로 첨부',
+ 'attachments_upload_drop' => '또는 파일을 여기로 끌어다 놓아 첨부 파일로 업로드할 수도 있습니다.',
+ 'attachments_set_link' => '링크 설정',
+ 'attachments_delete' => '이 첨부 파일을 지울 건가요?',
+ 'attachments_dropzone' => '업로드할 파일을 여기에 놓아주세요.',
+ 'attachments_no_files' => '올린 파일 없음',
+ 'attachments_explain_link' => '파일을 올리지 않고 링크로 첨부할 수 있습니다.',
+ 'attachments_link_name' => '링크 이름',
+ 'attachment_link' => '파일 주소',
+ 'attachments_link_url' => '파일로 링크',
+ 'attachments_link_url_hint' => '파일 주소',
+ 'attach' => '파일 첨부',
+ 'attachments_insert_link' => '페이지에 첨부파일 링크 추가',
+ 'attachments_edit_file' => '파일 수정',
+ 'attachments_edit_file_name' => '파일 이름',
+ 'attachments_edit_drop_upload' => '여기에 파일을 드롭하거나 여기를 클릭하세요. 파일을 올리거나 덮어쓸 수 있습니다.',
+ 'attachments_order_updated' => '첨부 순서 바꿈',
+ 'attachments_updated_success' => '첨부 파일 정보 수정함',
+ 'attachments_deleted' => '첨부 파일 삭제함',
+ 'attachments_file_uploaded' => '파일 올림',
+ 'attachments_file_updated' => '파일 바꿈',
+ 'attachments_link_attached' => '링크 첨부함',
+ 'templates' => '템플릿',
+ 'templates_set_as_template' => '현재 페이지는 템플릿용 페이지 입니다.',
+ 'templates_explain_set_as_template' => '템플릿은 보기 권한만 있어도 문서에 쓸 수 있습니다.',
+ 'templates_replace_content' => '문서 대체',
+ 'templates_append_content' => '문서 앞에 추가',
+ 'templates_prepend_content' => '문서 뒤에 추가',
+
+ // Profile View
+ 'profile_user_for_x' => ':time 전에 가입함',
+ 'profile_created_content' => '활동한 이력',
+ 'profile_not_created_pages' => ':userName(이)가 만든 문서 없음',
+ 'profile_not_created_chapters' => ':userName(이)가 만든 챕터 없음',
+ 'profile_not_created_books' => ':userName(이)가 만든 책 없음',
+ 'profile_not_created_shelves' => ':userName(이)가 만든 책꽂이 없음',
+
+ // Comments
+ 'comment' => '댓글',
+ 'comments' => '댓글',
+ 'comment_add' => '댓글 쓰기',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => '이곳에 댓글을 쓰세요...',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => '등록',
+ 'comment_new' => '새 의견',
+ 'comment_created' => '댓글 등록함 :createDiff',
+ 'comment_updated' => ':username(이)가 댓글 수정함 :updateDiff',
+ 'comment_updated_indicator' => '업데이트됨',
+ 'comment_deleted_success' => '댓글 지움',
+ 'comment_created_success' => '댓글 등록함',
+ 'comment_updated_success' => '댓글 수정함',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => '이 댓글을 지울 건가요?',
+ 'comment_in_reply_to' => ':commentId(을)를 향한 답글',
+ 'comment_reference' => '참조',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => '이 페이지에 남겨진 댓글은 다음과 같습니다. 저장된 페이지를 볼 때 댓글을 추가하고 관리할 수 있습니다.',
+
+ // Revision
+ 'revision_delete_confirm' => '이 수정본을 지울 건가요?',
+ 'revision_restore_confirm' => '이 버전을 되돌릴 건가요? 현재 페이지는 대체됩니다.',
+ 'revision_cannot_delete_latest' => '최신 수정본은 지울 수 없습니다.',
+
+ // Copy view
+ 'copy_consider' => '항목을 복사할 때 다음을 고려하세요.',
+ 'copy_consider_permissions' => '권한 설정은 복사되지 않습니다.',
+ 'copy_consider_owner' => '복사한 항목의 소유자가 됩니다.',
+ 'copy_consider_images' => '이미지 파일은 복사되지 않습니다. 올라가 있던 이미지가 사라지지 않습니다.',
+ 'copy_consider_attachments' => '첨부 파일은 복사되지 않습니다.',
+ 'copy_consider_access' => '경로, 소유자, 권한이 바뀌면 이 문서를 본 적 없는 사용자가 볼 수도 있습니다.',
+
+ // Conversions
+ 'convert_to_shelf' => '책장으로 변환',
+ 'convert_to_shelf_contents_desc' => '이 책을 동일한 내용의 새 서가로 변환할 수 있습니다. 이 책에 포함된 챕터는 새 책으로 변환됩니다. 이 책에 챕터에 포함되지 않은 페이지가 포함되어 있는 경우, 이 책의 이름이 변경되어 해당 페이지가 포함되며 이 책은 새 서가의 일부가 됩니다.',
+ 'convert_to_shelf_permissions_desc' => '이 책에 설정된 모든 권한은 새 서가 및 자체 권한이 적용되지 않은 모든 새 책에 복사됩니다. 책에 대한 권한은 책에 대한 권한처럼 그 안의 콘텐츠로 자동 캐스케이드되지 않는다는 점에 유의하세요.',
+ 'convert_book' => '책 변환',
+ 'convert_book_confirm' => '이 책을 변환하시겠어요?',
+ 'convert_undo_warning' => '이 작업은 되돌리기 어렵습니다.',
+ 'convert_to_book' => '책으로 변환',
+ 'convert_to_book_desc' => '이 챕터를 동일한 내용의 새 책으로 변환할 수 있습니다. 이 장에 설정된 모든 권한은 새 책에 복사되지만 상위 책에서 상속된 권한은 복사되지 않으므로 액세스 제어가 변경될 수 있습니다.',
+ 'convert_chapter' => '챕터 변환',
+ 'convert_chapter_confirm' => '이 챕터를 변환하시겠어요?',
+
+ // References
+ 'references' => '참조',
+ 'references_none' => '이 항목에 대한 추적된 참조가 없습니다.',
+ 'references_to_desc' => '이 항목으로 연결되는 시스템에서 알려진 모든 콘텐츠가 아래에 나열되어 있습니다.',
+
+ // Watch Options
+ 'watch' => '변경 알림 설정',
+ 'watch_title_default' => '기본 설정',
+ 'watch_desc_default' => '알림 설정을 기본값으로 되돌리기',
+ 'watch_title_ignore' => '알림 설정 끄기',
+ 'watch_desc_ignore' => '사용자 수준 환경설정의 알림을 포함한 모든 알림을 무시합니다.',
+ 'watch_title_new' => '새로운 페이지',
+ 'watch_desc_new' => '이 항목에 새 페이지가 생성되면 알림을 받습니다.',
+ 'watch_title_updates' => '전체 페이지 업데이트',
+ 'watch_desc_updates' => '모든 새 페이지와 페이지 변경 시 알림을 보냅니다.',
+ 'watch_desc_updates_page' => '모든 페이지 변경 시 알림을 보냅니다.',
+ 'watch_title_comments' => '모든 페이지 업데이트 및 댓글',
+ 'watch_desc_comments' => '모든 새 페이지, 페이지 변경 및 새 댓글에 대해 알림을 보냅니다.',
+ 'watch_desc_comments_page' => '페이지 변경 및 새 댓글이 있을 때 알림을 보냅니다.',
+ 'watch_change_default' => '기본 알림 환경설정 변경하기',
+ 'watch_detail_ignore' => '알림 무시하기',
+ 'watch_detail_new' => '새 페이지 보기',
+ 'watch_detail_updates' => '새 페이지 및 업데이트 보기',
+ 'watch_detail_comments' => '새 페이지, 업데이트 및 댓글 보기',
+ 'watch_detail_parent_book' => '상위 책을 통해 보기',
+ 'watch_detail_parent_book_ignore' => '상위 책을 통한 무시하기',
+ 'watch_detail_parent_chapter' => '상위 챕터를 통해 보기',
+ 'watch_detail_parent_chapter_ignore' => '상위 챕터를 통해 무시하기',
+];
diff --git a/lang/ko/errors.php b/lang/ko/errors.php
new file mode 100644
index 00000000000..9fa56ffcdc3
--- /dev/null
+++ b/lang/ko/errors.php
@@ -0,0 +1,135 @@
+ '요청된 페이지에 액세스할 수 있는 권한이 없습니다.',
+ 'permissionJson' => '요청된 작업을 수행할 수 있는 권한이 없습니다.',
+
+ // Auth
+ 'error_user_exists_different_creds' => '이메일 :email 이 이미 존재하지만 다른 자격 증명을 가진 사용자입니다.',
+ 'auth_pre_register_theme_prevention' => '제공된 세부 정보로 사용자 계정을 등록할 수 없습니다',
+ 'email_already_confirmed' => '이메일이 이미 확인되었으니 로그인해 보세요.',
+ 'email_confirmation_invalid' => '이 확인 토큰이 유효하지 않거나 이미 사용되었습니다. 다시 등록해 주세요.',
+ 'email_confirmation_expired' => '확인 토큰이 만료되었습니다. 새 확인 이메일이 전송되었습니다.',
+ 'email_confirmation_awaiting' => '사용 중인 계정의 이메일 주소를 확인해야 합니다.',
+ 'ldap_fail_anonymous' => '익명 바인딩을 사용하여 LDAP 액세스에 실패했습니다.',
+ 'ldap_fail_authed' => '주어진 dn 및 암호 세부 정보를 사용하여 LDAP 액세스에 실패했습니다.',
+ 'ldap_extension_not_installed' => 'LDAP PHP 확장이 설치되지 않았습니다.',
+ 'ldap_cannot_connect' => 'LDAP 서버에 연결할 수 없음, 초기 연결 실패',
+ 'saml_already_logged_in' => '이미 로그인했습니다.',
+ 'saml_no_email_address' => '외부 인증 시스템에서 제공한 데이터에서 이 사용자의 이메일 주소를 찾을 수 없습니다.',
+ 'saml_invalid_response_id' => '이 애플리케이션에서 시작한 프로세스에서 외부 인증 시스템의 요청을 인식하지 못합니다. 로그인 후 다시 이동하면 이 문제가 발생할 수 있습니다.',
+ 'saml_fail_authed' => ':system 을 사용하여 로그인, 시스템이 성공적인 인증을 제공하지 않음',
+ 'oidc_already_logged_in' => '이미 로그인했습니다.',
+ 'oidc_no_email_address' => '외부 인증 시스템에서 제공한 데이터에서 이 사용자의 이메일 주소를 찾을 수 없습니다.',
+ 'oidc_fail_authed' => ':system 을 사용하여 로그인, 시스템이 성공적인 인증을 제공하지 않음',
+ 'social_no_action_defined' => '정의된 동작 없음',
+ 'social_login_bad_response' => ":socialAccount 로 로그인 동안 에러가 발생했습니다: \n:error",
+ 'social_account_in_use' => ':socialAccount(을)를 가진 사용자가 있습니다. :socialAccount 옵션을 통해 로그인해 보세요.',
+ 'social_account_email_in_use' => '이메일 :email 은(는) 이미 사용 중입니다. 이미 계정이 있는 경우 프로필 설정에서 :socialAccount 계정을 연결할 수 있습니다.',
+ 'social_account_existing' => '이 :socialAccount 는 이미 프로필에 연결되어 있습니다.',
+ 'social_account_already_used_existing' => '이 :socialAccount 계정은 다른 사용자가 이미 사용하고 있습니다.',
+ 'social_account_not_used' => '이 :socialAccount 계정은 어떤 사용자와도 연결되어 있지 않습니다. 프로필 설정에서 첨부하세요. ',
+ 'social_account_register_instructions' => '아직 계정이 없는 경우 :socialAccount 옵션을 사용하여 계정을 등록할 수 있습니다.',
+ 'social_driver_not_found' => '소셜 드라이버를 찾을 수 없습니다.',
+ 'social_driver_not_configured' => '소셜 계정 :socialAccount 가(이) 올바르게 구성되지 않았습니다.',
+ 'invite_token_expired' => '이 초대 링크가 만료되었습니다. 대신 계정 비밀번호 재설정을 시도해 보세요.',
+ 'login_user_not_found' => '이 동작의 사용자를 찾을 수 없습니다.',
+
+ // System
+ 'path_not_writable' => '파일 경로 :filePath 에 업로드할 수 없습니다. 서버에 저장이 가능한지 확인하세요.',
+ 'cannot_get_image_from_url' => ':url 에서 이미지를 가져올 수 없습니다.',
+ 'cannot_create_thumbs' => '서버에서 썸네일을 만들 수 없습니다. GD PHP 확장이 설치되어 있는지 확인하세요.',
+ 'server_upload_limit' => '서버에서 이 크기의 업로드를 허용하지 않습니다. 더 작은 파일 크기를 시도해 보세요.',
+ 'server_post_limit' => '서버가 제공된 데이터 양을 수신할 수 없습니다. 더 적은 데이터 또는 더 작은 파일로 다시 시도하세요.',
+ 'uploaded' => '서버에서 이 크기의 업로드를 허용하지 않습니다. 더 작은 파일 크기를 시도해 보세요.',
+
+ // Drawing & Images
+ 'image_upload_error' => '이미지를 업로드하는 동안 오류가 발생했습니다.',
+ 'image_upload_type_error' => '업로드 중인 이미지 유형이 유효하지 않습니다.',
+ 'image_upload_replace_type' => '이미지 파일 교체는 반드시 동일한 유형이어야 합니다.',
+ 'image_upload_memory_limit' => '시스템 리소스 제한으로 인해 이미지 업로드를 처리하거나 미리보기 이미지를 만들지 못했습니다.',
+ 'image_thumbnail_memory_limit' => '시스템 리소스 제한으로 인해 이미지 크기 변형을 만들지 못했습니다.',
+ 'image_gallery_thumbnail_memory_limit' => '시스템 리소스 제한으로 인해 갤러리 썸네일을 만들지 못했습니다.',
+ 'drawing_data_not_found' => '드로잉 데이터를 로드할 수 없습니다. 드로잉 파일이 더 이상 존재하지 않거나 해당 파일에 액세스할 수 있는 권한이 없을 수 있습니다.',
+
+ // Attachments
+ 'attachment_not_found' => '첨부 파일을 찾을 수 없습니다.',
+ 'attachment_upload_error' => '첨부 파일을 업로드하는 동안 오류가 발생했습니다.',
+
+ // Pages
+ 'page_draft_autosave_fail' => '초안을 저장하지 못했습니다. 이 페이지를 저장하기 전에 인터넷에 연결되어 있는지 확인하세요.',
+ 'page_draft_delete_fail' => '페이지 초안을 삭제하고 현재 페이지에 저장된 콘텐츠를 가져오지 못했습니다.',
+ 'page_custom_home_deletion' => '페이지가 홈페이지로 설정되어 있는 동안에는 삭제할 수 없습니다.',
+
+ // Entities
+ 'entity_not_found' => '항목이 없습니다.',
+ 'bookshelf_not_found' => '책장을 찾을 수 없음',
+ 'book_not_found' => '책이 없습니다.',
+ 'page_not_found' => '문서가 없습니다.',
+ 'chapter_not_found' => '챕터가 없습니다.',
+ 'selected_book_not_found' => '고른 책이 없습니다.',
+ 'selected_book_chapter_not_found' => '고른 책이나 챕터가 없습니다.',
+ 'guests_cannot_save_drafts' => 'Guest는 초안 문서를 보관할 수 없습니다.',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Admin을 삭제할 수 없습니다.',
+ 'users_cannot_delete_guest' => 'Guest를 삭제할 수 없습니다.',
+ 'users_could_not_send_invite' => '초대 이메일을 보내는 데 실패하여 사용자를 생성할 수 없습니다.',
+
+ // Roles
+ 'role_cannot_be_edited' => '권한을 수정할 수 없습니다.',
+ 'role_system_cannot_be_deleted' => '시스템 권한을 지울 수 없습니다.',
+ 'role_registration_default_cannot_delete' => '가입한 사용자의 기본 권한을 지울 수 있어야 합니다.',
+ 'role_cannot_remove_only_admin' => 'Admin을 가진 사용자가 적어도 한 명 있어야 합니다.',
+
+ // Comments
+ 'comment_list' => '댓글을 가져오다 문제가 생겼습니다.',
+ 'cannot_add_comment_to_draft' => '초안 문서에 댓글을 달 수 없습니다.',
+ 'comment_add' => '댓글을 등록하다 문제가 생겼습니다.',
+ 'comment_delete' => '댓글을 지우다 문제가 생겼습니다.',
+ 'empty_comment' => '빈 댓글은 등록할 수 없습니다.',
+
+ // Error pages
+ '404_page_not_found' => '페이지를 찾을 수 없습니다.',
+ 'sorry_page_not_found' => '문서를 못 찾았습니다.',
+ 'sorry_page_not_found_permission_warning' => '문서를 볼 권한이 없습니다.',
+ 'image_not_found' => '이미지를 찾을 수 없습니다',
+ 'image_not_found_subtitle' => '이미지를 못 찾았습니다.',
+ 'image_not_found_details' => '이미지가 지워졌을 수 있습니다.',
+ 'return_home' => '처음으로 돌아가기',
+ 'error_occurred' => '문제가 생겼습니다.',
+ 'app_down' => ':appName에 문제가 생겼습니다.',
+ 'back_soon' => '곧 돌아갑니다.',
+
+ // Import
+ 'import_zip_cant_read' => 'ZIP 파일을 읽을 수 없습니다.',
+ 'import_zip_cant_decode_data' => 'ZIP data.json 콘텐츠를 찾아서 디코딩할 수 없습니다.',
+ 'import_zip_no_data' => '컨텐츠 ZIP 파일 데이터에 데이터가 비어있습니다.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => '컨텐츠 ZIP 파일을 가져오려다 실패했습니다. 이유:',
+ 'import_zip_failed_notification' => '컨텐츠 ZIP 파일을 가져오지 못했습니다.',
+ 'import_perms_books' => '책을 만드는 데 필요한 권한이 없습니다.',
+ 'import_perms_chapters' => '챕터를 만드는 데 필요한 권한이 없습니다.',
+ 'import_perms_pages' => '페이지를 만드는 데 필요한 권한이 없습니다.',
+ 'import_perms_images' => '이미지를 만드는 데 필요한 권한이 없습니다.',
+ 'import_perms_attachments' => '첨부 파일을 만드는 데 필요한 권한이 없습니다.',
+
+ // API errors
+ 'api_no_authorization_found' => '요청에서 인증 토큰을 찾을 수 없습니다.',
+ 'api_bad_authorization_format' => '요청에서 인증 토큰을 찾았으나 형식에 문제가 있습니다.',
+ 'api_user_token_not_found' => '인증 토큰과 일치하는 API 토큰을 찾을 수 없습니다.',
+ 'api_incorrect_token_secret' => 'API 토큰이 제공한 암호에 문제가 있습니다.',
+ 'api_user_no_api_permission' => 'API 토큰의 소유자가 API를 호출할 권한이 없습니다.',
+ 'api_user_token_expired' => '인증 토큰이 만료되었습니다.',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => '메일을 발송하는 도중 문제가 생겼습니다:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'URL이 구성된 허용된 SSR 호스트와 일치하지 않습니다.',
+];
diff --git a/lang/ko/notifications.php b/lang/ko/notifications.php
new file mode 100644
index 00000000000..a5abcf0f9ff
--- /dev/null
+++ b/lang/ko/notifications.php
@@ -0,0 +1,29 @@
+ '페이지에 새 댓글이 추가되었습니다: :pageName',
+ 'new_comment_intro' => '사용자가 :appName: 의 페이지에 댓글을 달았습니다.',
+ 'new_page_subject' => '새로운 페이지: :pageName',
+ 'new_page_intro' => ':appName: 에 새 페이지가 생성되었습니다.',
+ 'updated_page_subject' => '페이지 업데이트됨: :pageName',
+ 'updated_page_intro' => ':appName: 에서 페이지가 업데이트되었습니다:',
+ 'updated_page_debounce' => '알림이 한꺼번에 몰리는 것을 방지하기 위해 당분간 동일한 편집자가 이 페이지를 추가로 편집할 경우 알림이 전송되지 않습니다.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => '페이지 이름:',
+ 'detail_page_path' => '페이지 경로:',
+ 'detail_commenter' => '댓글 작성자:',
+ 'detail_comment' => '댓글:',
+ 'detail_created_by' => '작성자:',
+ 'detail_updated_by' => '업데이트한 사람:',
+
+ 'action_view_comment' => '댓글 보기',
+ 'action_view_page' => '페이지 보기',
+
+ 'footer_reason' => '이 알림이 전송된 이유는 :link 가 이 항목의 이러한 유형의 활동에 해당하기 때문입니다.',
+ 'footer_reason_link' => '내 알림 환경설정',
+];
diff --git a/resources/lang/ko/pagination.php b/lang/ko/pagination.php
similarity index 100%
rename from resources/lang/ko/pagination.php
rename to lang/ko/pagination.php
diff --git a/lang/ko/passwords.php b/lang/ko/passwords.php
new file mode 100644
index 00000000000..97061631a85
--- /dev/null
+++ b/lang/ko/passwords.php
@@ -0,0 +1,15 @@
+ '최소 8글자 이상이어야 합니다.',
+ 'user' => "메일 주소를 가진 사용자가 없습니다.",
+ 'token' => '유효하지 않거나 만료된 토큰입니다.',
+ 'sent' => '메일을 보냈습니다.',
+ 'reset' => '패스워드가 초기화되었습니다.',
+
+];
diff --git a/lang/ko/preferences.php b/lang/ko/preferences.php
new file mode 100644
index 00000000000..1979a23e4b1
--- /dev/null
+++ b/lang/ko/preferences.php
@@ -0,0 +1,52 @@
+ '내 계정',
+
+ 'shortcuts' => '단축키',
+ 'shortcuts_interface' => 'UI 바로 가기 환경설정',
+ 'shortcuts_toggle_desc' => '여기에서 탐색과 행동에 사용될 수 있는 키보드 단축키를 활성화하거나 비활성화할 수 있습니다.',
+ 'shortcuts_customize_desc' => '아래에서 각 단축키를 사용자 지정할 수 있습니다. 바로가기에 대한 입력을 선택한 후 원하는 키 조합을 누르기만 하면 됩니다.',
+ 'shortcuts_toggle_label' => '키보드 단축키가 활성화되었습니다.',
+ 'shortcuts_section_navigation' => '탐색',
+ 'shortcuts_section_actions' => '일반 작업',
+ 'shortcuts_save' => '단축키 저장',
+ 'shortcuts_overlay_desc' => '참고: 바로가기가 활성화된 경우 "?"를 누르면 현재 화면에 표시되는 작업에 대해 사용 가능한 바로가기를 강조 표시하는 도우미 오버레이를 사용할 수 있습니다.',
+ 'shortcuts_update_success' => '단축키 설정이 수정되었습니다!',
+ 'shortcuts_overview_desc' => '시스템 사용자 인터페이스를 탐색하는 데 사용할 수 있는 키보드 단축키를 관리합니다.',
+
+ 'notifications' => '알림 환경설정',
+ 'notifications_desc' => '시스템 내에서 특정 활동이 수행될 때 수신하는 이메일 알림을 제어합니다.',
+ 'notifications_opt_own_page_changes' => '내가 소유한 페이지가 변경되면 알림 받기',
+ 'notifications_opt_own_page_comments' => '내가 소유한 페이지에 댓글이 달렸을 때 알림 받기',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => '내 댓글에 대한 답글 알림 받기',
+ 'notifications_save' => '환경설정 저장',
+ 'notifications_update_success' => '알림 환경설정이 업데이트되었습니다!',
+ 'notifications_watched' => '알람 설정 및 알람 무시한 항목',
+ 'notifications_watched_desc' => '아래는 사용자 지정 알람 환경설정이 적용된 항목입니다. 이러한 항목에 대한 환경설정을 업데이트하려면 해당 항목을 본 다음 사이드바에서 알림 옵션을 찾습니다.',
+
+ 'auth' => '액세스 및 보안',
+ 'auth_change_password' => '패스워드 변경',
+ 'auth_change_password_desc' => '애플리케이션에 로그인할 때 사용하는 패스워드를 변경합니다. 패스워드는 8자 이상이어야 합니다.',
+ 'auth_change_password_success' => '패스워드가 업데이트되었습니다!',
+
+ 'profile' => '프로필 세부 정보',
+ 'profile_desc' => '커뮤니케이션 및 시스템 맞춤 설정에 사용되는 세부 정보 외에 다른 사용자에게 나를 나타내는 계정의 세부 정보를 관리합니다.',
+ 'profile_view_public' => '공개 프로필 보기',
+ 'profile_name_desc' => '내가 수행하는 활동과 내가 소유한 콘텐츠를 통해 시스템의 다른 사용자에게 표시되는 표시 이름을 구성합니다.',
+ 'profile_email_desc' => '이 이메일은 알림 및 활성 시스템 인증에 따라 시스템 액세스에 사용됩니다.',
+ 'profile_email_no_permission' => '안타깝게도 회원님에게는 이메일 주소를 변경할 수 있는 권한이 없습니다. 이메일 주소를 변경하려면 관리자에게 변경을 요청해야 합니다.',
+ 'profile_avatar_desc' => '시스템에서 다른 사람들에게 자신을 나타내는 데 사용할 이미지를 선택합니다. 이 이미지는 256 x 256픽셀인 정사각형이 가장 이상적입니다.',
+ 'profile_admin_options' => '관리자 옵션',
+ 'profile_admin_options_desc' => '역할 할당 관리와 같은 추가 관리자 수준 옵션은 애플리케이션의 "설정 > 사용자" 영역에서 사용자 계정에 대해 찾을 수 있습니다.',
+
+ 'delete_account' => '계정 삭제',
+ 'delete_my_account' => '내 계정 삭제',
+ 'delete_my_account_desc' => '이렇게 하면 시스템에서 사용자 계정이 완전히 삭제됩니다. 이 계정을 복구하거나 이 작업을 되돌릴 수 없습니다. 생성한 페이지와 업로드한 이미지 등 사용자가 만든 콘텐츠는 그대로 유지됩니다.',
+ 'delete_my_account_warning' => '정말 계정을 삭제하시겠습니까?',
+];
diff --git a/lang/ko/settings.php b/lang/ko/settings.php
new file mode 100644
index 00000000000..97af673c6af
--- /dev/null
+++ b/lang/ko/settings.php
@@ -0,0 +1,374 @@
+ '설정',
+ 'settings_save' => '적용',
+ 'system_version' => '시스템 버전',
+ 'categories' => '카테고리',
+
+ // App Settings
+ 'app_customization' => '어플리케이션 설정',
+ 'app_features_security' => '기능 및 보안',
+ 'app_name' => '애플리케이션 이름 (사이트 제목)',
+ 'app_name_desc' => '이 이름은 헤더와 시스템에서 보낸 모든 이메일에 표시됩니다.',
+ 'app_name_header' => '헤더에 이름 표시',
+ 'app_public_access' => '공개 접근',
+ 'app_public_access_desc' => '이 옵션을 활성화하면 로그인하지 않은 방문자가 BookStack 인스턴스의 내용에 접근할 수 있습니다.',
+ 'app_public_access_desc_guest' => '일반 방문자의 액세스는 "Guest" 사용자를 통해 제어할 수 있습니다.',
+ 'app_public_access_toggle' => '공개 액세스 허용',
+ 'app_public_viewing' => '공개 열람을 허용할까요?',
+ 'app_secure_images' => '보안을 강화하여 이미지 올려두기',
+ 'app_secure_images_toggle' => '보안을 강화하여 이미지 올려두기 활성화',
+ 'app_secure_images_desc' => '성능상의 이유로 모든 이미지는 공개됩니다. 이 옵션은 이미지 URL 앞에 추측하기 어려운 임의의 문자열을 추가합니다. 쉽게 액세스할 수 없도록 디렉토리 인덱스가 활성화되어 있지 않은지 확인하세요.',
+ 'app_default_editor' => '기본 페이지 편집기',
+ 'app_default_editor_desc' => '새 페이지를 편집할 때 기본으로 사용될 편집기를 선택합니다. 권한을 갖고 있다면 페이지마다 다르게 적용될 수 있습니다.',
+ 'app_custom_html' => '사용자 지정 HTML 헤드 콘텐츠',
+ 'app_custom_html_desc' => '여기에 추가된 모든 콘텐츠는 모든 페이지의 섹션 하단에 삽입됩니다. 스타일을 재정의하거나 분석 코드를 추가할 때 유용합니다.',
+ 'app_custom_html_disabled_notice' => '이 설정 페이지에서는 사용자 지정 HTML 헤드 콘텐츠가 비활성화되어 변경 사항을 되돌릴 수 있습니다.',
+ 'app_logo' => '애플리케이션 로고 (사이트 로고)',
+ 'app_logo_desc' => '이 이미지는 애플리케이션 헤더 표시줄 등 여러 영역에서 사용됩니다. 이 이미지의 높이는 86픽셀이어야 합니다. 큰 이미지는 축소됩니다.',
+ 'app_icon' => '애플리케이션 아이콘',
+ 'app_icon_desc' => '이 아이콘은 브라우저 탭과 바로 가기 아이콘에 사용됩니다. 256픽셀의 정사각형 PNG 이미지여야 합니다.',
+ 'app_homepage' => '애플리케이션 홈페이지',
+ 'app_homepage_desc' => '기본 보기 대신 홈페이지에 표시할 보기를 선택합니다. 선택한 페이지에 대한 페이지 권한은 무시됩니다.',
+ 'app_homepage_select' => '페이지를 선택하십시오',
+ 'app_footer_links' => '바닥글 링크',
+ 'app_footer_links_desc' => '사이트 바닥글에 표시할 링크를 추가합니다. 이 링크는 로그인이 필요 없는 페이지를 포함하여 대부분의 페이지 하단에 표시됩니다. "trans::" 레이블을 사용하여 시스템 정의 번역을 사용할 수 있습니다. 예를 들면 다음과 같습니다: "trans::common.privacy_policy"를 사용하면 "개인정보처리방침"이라는 번역 텍스트가 제공되고 "trans::common.terms_of_service"를 사용하면 "서비스 약관"이라는 번역 텍스트가 제공됩니다.',
+ 'app_footer_links_label' => '링크 레이블',
+ 'app_footer_links_url' => '링크 URL',
+ 'app_footer_links_add' => '바닥글 링크 추가',
+ 'app_disable_comments' => '댓글 사용 안 함',
+ 'app_disable_comments_toggle' => '댓글 사용 안 함',
+ 'app_disable_comments_desc' => '애플리케이션의 모든 페이지에서 코멘트를 비활성화합니다. 기존 댓글도 표시되지 않습니다.',
+
+ // Color settings
+ 'color_scheme' => '애플리케이션 색상 구성표',
+ 'color_scheme_desc' => '애플리케이션 사용자 인터페이스에서 사용할 색상을 설정합니다. 테마에 가장 잘 어울리고 가독성을 보장하기 위해 어두운 모드와 밝은 모드에 대해 색상을 별도로 구성할 수 있습니다.',
+ 'ui_colors_desc' => '애플리케이션 기본 색상과 기본 링크 색상을 설정합니다. 기본 색상은 주로 헤더 배너, 버튼 및 인터페이스 장식에 사용됩니다. 기본 링크 색상은 작성된 콘텐츠와 애플리케이션 인터페이스 모두에서 텍스트 기반 링크 및 작업에 사용됩니다.',
+ 'app_color' => '주 색상',
+ 'link_color' => '기본 링크 색상',
+ 'content_colors_desc' => '페이지 구성 계층 구조의 모든 요소에 대한 색상을 설정합니다. 가독성을 위해 기본 색상과 비슷한 밝기의 색상을 선택하는 것이 좋습니다.',
+ 'bookshelf_color' => '책장 색상',
+ 'book_color' => '책 색상',
+ 'chapter_color' => '챕터 색상',
+ 'page_color' => '페이지 색상',
+ 'page_draft_color' => '초안 문서 색상',
+
+ // Registration Settings
+ 'reg_settings' => '가입',
+ 'reg_enable' => '가입 활성화',
+ 'reg_enable_toggle' => '가입 허용',
+ 'reg_enable_desc' => '가입한 사용자는 한 가지 권한을 가집니다.',
+ 'reg_default_role' => '기본 권한',
+ 'reg_enable_external_warning' => '외부 시스템이 LDAP나 SAML 인증이 활성화되어 있다면 설정과 관계없이 인증을 성공할 때 없는 계정을 만듭니다.',
+ 'reg_email_confirmation' => '메일 주소 확인',
+ 'reg_email_confirmation_toggle' => '메일 주소 확인',
+ 'reg_confirm_email_desc' => '도메인 제한을 활성화하면 설정과 관계없이 메일 주소 확인이 필요합니다.',
+ 'reg_confirm_restrict_domain' => '도메인 제한',
+ 'reg_confirm_restrict_domain_desc' => '가입을 차단할 도메인을 쉼표로 구분하여 입력하세요. 사용자가 메일 주소 확인에 성공하면 메일 주소를 바꿀 수 있습니다.',
+ 'reg_confirm_restrict_domain_placeholder' => '차단한 도메인 없음',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => '새로운 책에 적용할 기본 정렬 규칙을 선택하세요. 이 선택은 기존 책에는 영향을 주지 않고, 기존 책의 설정은 책마다 변경할 수 있습니다.',
+ 'sorting_rules' => '정렬 규칙',
+ 'sorting_rules_desc' => '현재 시스템에 미리 정의된 정렬 규칙의 목록입니다.',
+ 'sort_rule_assigned_to_x_books' => ':count 책에 정렬 규칙 적용',
+ 'sort_rule_create' => '정렬 규칙 생성하기',
+ 'sort_rule_edit' => '정렬 규칙 수정하기',
+ 'sort_rule_delete' => '정렬 규칙 삭제하기',
+ 'sort_rule_delete_desc' => '시스템에서 이 정렬 규칙을 삭제합니다. 이 정렬 규칙을 사용하는 책들은 수동 정렬 사용으로 변경됩니다.',
+ 'sort_rule_delete_warn_books' => '이 정렬 규칙은 현재 :count 권의 책에 적용되고 있습니다. 이 정렬 규칙을 정말 삭제하시겠습니까?',
+ 'sort_rule_delete_warn_default' => '이 정렬 규칙은 현재 책들에 기본으로 적용되고 있습니다. 정말 삭제하시겠습니까?',
+ 'sort_rule_details' => '정렬 규칙 세부사항',
+ 'sort_rule_details_desc' => '이 정렬 규칙의 이름을 지어주세요. 이 이름은 사용자가 정렬할 때 나타납니다.',
+ 'sort_rule_operations' => '정렬 규칙',
+ 'sort_rule_operations_desc' => '사용 가능한 작업 목록에서 이동하여 수행할 정렬 작업을 구성합니다. 사용 시 위에서 아래로 순서대로 작업이 적용됩니다. 여기에서 변경한 내용은 저장 시 할당된 모든 책에 적용됩니다.',
+ 'sort_rule_available_operations' => '사용 가능한 정렬 규칙',
+ 'sort_rule_available_operations_empty' => '사용 가능한 정렬 규칙 없음',
+ 'sort_rule_configured_operations' => '정렬 규칙 설정',
+ 'sort_rule_configured_operations_empty' => '"사용 가능한 정렬 규칙"에서 추가하기',
+ 'sort_rule_op_asc' => '(오름차순)',
+ 'sort_rule_op_desc' => '(내림차순)',
+ 'sort_rule_op_name' => '이름순 - 가나다',
+ 'sort_rule_op_name_numeric' => '이름순 - 숫자',
+ 'sort_rule_op_created_date' => '생성일',
+ 'sort_rule_op_updated_date' => '수정일',
+ 'sort_rule_op_chapters_first' => '챕터 우선 정렬',
+ 'sort_rule_op_chapters_last' => '챕터 나중 정렬',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => '유지관리',
+ 'maint_image_cleanup' => '이미지 정리',
+ 'maint_image_cleanup_desc' => '중복인 이미지를 찾습니다. 실행하기 전에 이미지를 백업하세요.',
+ 'maint_delete_images_only_in_revisions' => '지난 버전에만 있는 이미지 지우기',
+ 'maint_image_cleanup_run' => '실행',
+ 'maint_image_cleanup_warning' => '이미지 :count개를 지우시겠습니까?',
+ 'maint_image_cleanup_success' => '이미지 :count개 삭제함',
+ 'maint_image_cleanup_nothing_found' => '삭제한 것 없음',
+ 'maint_send_test_email' => '테스트 메일 보내기',
+ 'maint_send_test_email_desc' => '메일 주소로 테스트 메일을 전송합니다.',
+ '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' => '휴지통 열기',
+ 'maint_regen_references' => '참조 재생성',
+ 'maint_regen_references_desc' => '이 작업은 데이터베이스 내에서 항목 간 참조 색인을 다시 생성합니다. 이 작업은 일반적으로 자동으로 처리되지만 오래된 콘텐츠나 비공식적인 방법으로 추가된 콘텐츠의 색인을 생성하는 데 유용할 수 있습니다.',
+ 'maint_regen_references_success' => '참조 색인이 다시 생성되었습니다!',
+ 'maint_timeout_command_note' => '참고: 이 작업을 실행하는 데 시간이 걸릴 수 있으며, 일부 웹 환경에서는 시간 초과 문제가 발생할 수 있습니다. 대신 터미널 명령을 사용하여 이 작업을 수행할 수 있습니다.',
+
+ // Recycle Bin
+ 'recycle_bin' => '휴지통',
+ 'recycle_bin_desc' => '항목을 복원하거나 영구 삭제할 수 있습니다. 권한 필터가 작동하지 않습니다.',
+ 'recycle_bin_deleted_item' => '삭제한 항목',
+ 'recycle_bin_deleted_parent' => '부모 항목',
+ '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_restore_parent' => '부모 항목 복원',
+ 'recycle_bin_destroy_notification' => ':count항목 삭제함',
+ 'recycle_bin_restore_notification' => ':count항목 복원함',
+
+ // Audit Log
+ 'audit' => '활동 기록',
+ 'audit_desc' => '이 활동 로그는 시스템에서 추적된 활동 목록을 표시합니다. 이 목록은 권한 필터가 적용되는 시스템의 유사한 활동 목록과 달리 필터링되지 않습니다.',
+ '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_ip' => 'IP 주소',
+ 'audit_table_date' => '활동 기간',
+ 'audit_date_from' => 'From',
+ 'audit_date_to' => 'To',
+
+ // Role Settings
+ 'roles' => '역할',
+ 'role_user_roles' => '이용자 역할',
+ 'roles_index_desc' => '역할은 사용자를 그룹화하고 구성원에게 시스템 권한을 제공하기 위해 사용됩니다. 사용자가 여러 역할의 구성원인 경우 부여된 권한이 중첩되며 모든 권한을 상속받게 됩니다.',
+ 'roles_x_users_assigned' => ':count 명의 사용자가 할당됨|:count 명의 사용자가 할당됨',
+ 'roles_x_permissions_provided' => ':count 개의 권한|:count 개의 권한',
+ 'roles_assigned_users' => '할당된 사용자',
+ 'roles_permissions_provided' => '제공된 권한',
+ 'role_create' => '권한 만들기',
+ 'role_delete' => '권한 제거',
+ 'role_delete_confirm' => ':roleName(을)를 지웁니다.',
+ 'role_delete_users_assigned' => '이 권한을 가진 사용자 :userCount명에 할당할 권한을 고르세요.',
+ 'role_delete_no_migration' => "할당하지 않음",
+ 'role_delete_sure' => '이 권한을 지울 건가요?',
+ 'role_edit' => '역할 수정',
+ 'role_details' => '역할 정보',
+ 'role_name' => '역할 이름',
+ 'role_desc' => '역할 설명',
+ 'role_mfa_enforced' => '다중 인증 필요',
+ 'role_external_auth_id' => '외부 인증 계정',
+ 'role_system' => '시스템 권한',
+ 'role_manage_users' => '이용자 관리하기',
+ 'role_manage_roles' => '권한 관리',
+ 'role_manage_entity_permissions' => '문서별 권한 관리',
+ 'role_manage_own_entity_permissions' => '직접 만든 문서별 권한 관리',
+ 'role_manage_page_templates' => '템플릿 관리',
+ 'role_access_api' => '시스템 접근 API',
+ 'role_manage_settings' => '사이트 설정 관리',
+ 'role_export_content' => '항목 내보내기',
+ 'role_import_content' => '내용 가져오기',
+ 'role_editor_change' => '페이지 편집기 변경',
+ 'role_notifications' => '알림 수신 및 관리',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => '권한 항목',
+ 'roles_system_warning' => '위 세 권한은 자신의 권한이나 다른 유저의 권한을 바꿀 수 있습니다.',
+ 'role_asset_desc' => '책, 챕터, 문서별 권한은 이 설정에 우선합니다.',
+ 'role_asset_admins' => '관리자 권한은 어디든 접근할 수 있지만 이 설정은 사용자 인터페이스에서 해당 활동을 표시할지 결정합니다.',
+ 'role_asset_image_view_note' => '이는 이미지 관리자 내 가시성과 관련이 있습니다. 업로드된 이미지 파일의 실제 접근은 시스템의 이미지 저장 설정에 따라 달라집니다.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => '모든 항목',
+ 'role_own' => '직접 만든 항목',
+ 'role_controlled_by_asset' => '저마다 다름',
+ 'role_save' => '저장',
+ 'role_users' => '이 역할을 가진 사용자들',
+ 'role_users_none' => '역할이 부여된 사용자가 없습니다.',
+
+ // Users
+ 'users' => '사용자',
+ 'users_index_desc' => '시스템 내에서 개별 사용자 계정을 생성하고 관리합니다. 사용자 계정은 로그인과 콘텐츠 및 활동의 속성에 사용됩니다. 접근 권한은 주로 역할 기반이지만 사용자 콘텐츠 소유권도 권한 및 접근에 영향을 줄 수 있습니다.',
+ 'user_profile' => '사용자 프로필',
+ 'users_add_new' => '사용자 만들기',
+ 'users_search' => '사용자 검색',
+ 'users_latest_activity' => '최근 활동',
+ 'users_details' => '사용자 정보',
+ 'users_details_desc' => '메일 주소로 로그인합니다.',
+ 'users_details_desc_no_email' => '사용자 이름을 바꿉니다.',
+ 'users_role' => '사용자 권한',
+ 'users_role_desc' => '이 사용자에게 할당될 역할을 선택합니다. 사용자가 여러 역할에 할당된 경우 해당 역할의 권한이 겹쳐서 적용됩니다. 할당된 역할의 모든 기능을 받게 됩니다.',
+ 'users_password' => '사용자 패스워드',
+ 'users_password_desc' => '패스워드는 8 글자를 넘어야 합니다.',
+ 'users_send_invite_text' => '패스워드 설정을 권유하는 메일을 보내거나 내가 정할 수 있습니다.',
+ 'users_send_invite_option' => '메일 보내기',
+ 'users_external_auth_id' => '외부 인증 계정',
+ 'users_external_auth_id_desc' => '외부 인증 시스템(예: SAML2, OIDC 또는 LDAP)을 사용 중인 경우 이 BookStack 사용자를 인증 시스템 계정에 연결하는 ID입니다. 기본 이메일 기반 인증을 사용하는 경우 이 필드를 무시할 수 있습니다.',
+ 'users_password_warning' => '이 사용자의 비밀번호를 변경하려는 경우에만 아래 내용을 입력하세요.',
+ 'users_system_public' => '계정 없는 모든 사용자에 할당한 사용자입니다. 이 사용자로 로그인할 수 없어요.',
+ 'users_delete' => '사용자 삭제',
+ 'users_delete_named' => ':userName 삭제',
+ 'users_delete_warning' => ':userName에 관한 데이터를 지웁니다.',
+ 'users_delete_confirm' => '이 사용자를 삭제하시겠습니까?',
+ 'users_migrate_ownership' => '소유자 바꾸기',
+ 'users_migrate_ownership_desc' => '선택한 사용자가 소유하고 있는 모든 항목을 다른 유저가 소유하게 합니다.',
+ 'users_none_selected' => '선택한 유저 없음',
+ 'users_edit' => '사용자 수정',
+ 'users_edit_profile' => '프로필 바꾸기',
+ 'users_avatar' => '프로필 이미지',
+ 'users_avatar_desc' => '이미지 규격은 256x256px 내외입니다.',
+ 'users_preferred_language' => '언어',
+ 'users_preferred_language_desc' => '문서 내용에는 아무런 영향을 주지 않습니다.',
+ 'users_social_accounts' => '소셜 계정',
+ 'users_social_accounts_desc' => '이 사용자에 대해 연결된 소셜 계정의 상태를 봅니다. 소셜 계정은 시스템 액세스를 위한 기본 인증 시스템과 함께 사용할 수 있습니다.',
+ 'users_social_accounts_info' => '다른 계정으로 간단하게 로그인하세요. 여기에서 계정 연결을 끊는 것과 소셜 계정에서 접근 권한을 취소하는 것은 다릅니다.',
+ 'users_social_connect' => '계정 연결',
+ 'users_social_disconnect' => '계정 연결 끊기',
+ 'users_social_status_connected' => '연결되었습니다.',
+ 'users_social_status_disconnected' => '연결 해제되었습니다.',
+ 'users_social_connected' => ':socialAccount(와)과 연결했습니다.',
+ 'users_social_disconnected' => ':socialAccount(와)과의 연결을 끊었습니다.',
+ 'users_api_tokens' => 'API 토큰',
+ 'users_api_tokens_desc' => 'BookStack REST API로 인증하는 데 사용되는 액세스 토큰을 생성하고 관리합니다. API에 대한 권한은 토큰이 속한 사용자를 통해 관리됩니다.',
+ 'users_api_tokens_none' => '이 사용자를 위해 생성된 API 토큰이 없습니다.',
+ 'users_api_tokens_create' => '토큰 만들기',
+ 'users_api_tokens_expires' => '만료',
+ 'users_api_tokens_docs' => 'API 설명서',
+ 'users_mfa' => '다중 인증',
+ 'users_mfa_desc' => '추가 보안 계층으로 다중 인증을 설정합니다.',
+ 'users_mfa_x_methods' => ':count 설정함|:count 설정함',
+ 'users_mfa_configure' => '설정',
+
+ // API Tokens
+ 'user_api_token_create' => 'API 토큰 만들기',
+ 'user_api_token_name' => '이름',
+ 'user_api_token_name_desc' => '알아볼 수 있는 이름을 줍니다.',
+ 'user_api_token_expiry' => '만료일',
+ 'user_api_token_expiry_desc' => '이 날짜 이후에 이 토큰이 만든 요청은 작동하지 않습니다. 공백은 만료일을 100년 후로 둡니다.',
+ 'user_api_token_create_secret_message' => '토큰을 만든 직후 "Token ID"와 "Token Secret"이 한 번만 표시되므로 안전한 장소에 보관하세요.',
+ 'user_api_token' => 'API 토큰',
+ 'user_api_token_id' => '토큰 ID',
+ 'user_api_token_id_desc' => '토큰이 API 요청 시 제공해야 할 식별자입니다. 편집 불가능한 시스템이 생성합니다.',
+ 'user_api_token_secret' => '토큰 암호',
+ 'user_api_token_secret_desc' => '토큰이 API 요청 시 제공해야 할 암호입니다. 한 번만 표시되므로 안전한 장소에 보관하세요.',
+ 'user_api_token_created' => ':timeAgo 전에 토큰 생성함',
+ 'user_api_token_updated' => ':timeAgo 전에 토큰 갱신함',
+ 'user_api_token_delete' => '토큰 삭제',
+ 'user_api_token_delete_warning' => '\':tokenName\'을 시스템에서 삭제합니다.',
+ 'user_api_token_delete_confirm' => '이 API 토큰을 삭제하시겠습니까?',
+
+ // Webhooks
+ 'webhooks' => '웹 훅',
+ 'webhooks_index_desc' => '웹훅은 시스템 내에서 특정 작업 및 이벤트가 발생할 때 외부 URL로 데이터를 전송하는 방법으로, 메시징 또는 알림 시스템과 같은 외부 플랫폼과 이벤트 기반 통합을 가능하게 합니다.',
+ 'webhooks_x_trigger_events' => ':count 개의 이벤트 트리거|:count 개의 이벤트 트리거',
+ 'webhooks_create' => '웹 훅 만들기',
+ 'webhooks_none_created' => '웹 훅이 없습니다.',
+ 'webhooks_edit' => '웹 훅 수정',
+ 'webhooks_save' => '웹 훅 저장',
+ 'webhooks_details' => '설명',
+ 'webhooks_details_desc' => '보낼 웹 훅 데이터에 대한 웹 훅 이름과 POST 엔드포인트 경로를 제공합니다.',
+ 'webhooks_events' => '이벤트',
+ 'webhooks_events_desc' => '웹 훅 호출을 트리거할 이벤트를 모두 고르세요.',
+ 'webhooks_events_warning' => '설정한 권한과 관계없이 모든 선택한 이벤트를 트리거합니다. 보안에 유의하세요.',
+ 'webhooks_events_all' => '모든 시스템 이벤트',
+ 'webhooks_name' => '웹 훅 이름',
+ 'webhooks_timeout' => '요청 시간 제한 (초)',
+ 'webhooks_endpoint' => '웹 훅 엔드포인트',
+ 'webhooks_active' => '웹 훅 활성',
+ 'webhook_events_table_header' => '이벤트',
+ 'webhooks_delete' => '웹 훅 삭제',
+ 'webhooks_delete_warning' => '\':webhookName\'을 시스템에서 지웁니다.',
+ 'webhooks_delete_confirm' => '이 웹 훅을 지울 건가요?',
+ 'webhooks_format_example' => '웹 훅 포맷 예시',
+ 'webhooks_format_example_desc' => '웹 훅 데이터를 아래 형식에 따라 설정된 엔드포인트에 JSON POST로 전송합니다. 이벤트 유형에 따라 "related_item"과 "url"을 쓸 수 있습니다.',
+ 'webhooks_status' => '웹 훅 상태',
+ 'webhooks_last_called' => '마지막 호출:',
+ 'webhooks_last_errored' => '마지막 에러:',
+ 'webhooks_last_error_message' => '마지막 에러 메시지:',
+
+ // Licensing
+ 'licenses' => '라이선스',
+ 'licenses_desc' => '이 페이지에서는 BookStack 내에서 사용되는 프로젝트 및 라이브러리 외에 BookStack 라이선스 정보를 자세히 설명합니다. 나열된 프로젝트는 개발 용도로만 사용할 수 있습니다.',
+ 'licenses_bookstack' => 'BookStack 라이선스',
+ 'licenses_php' => 'PHP 라이브러리 라이선스',
+ 'licenses_js' => 'JavaScript 라이브러리 라이선스',
+ 'licenses_other' => '기타 라이선스',
+ 'license_details' => '라이선스 세부 사항',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => '히브리어',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/ko/validation.php b/lang/ko/validation.php
new file mode 100644
index 00000000000..a60ac2f213f
--- /dev/null
+++ b/lang/ko/validation.php
@@ -0,0 +1,123 @@
+ ':attribute(을)를 허용하세요.',
+ 'active_url' => ':attribute이 유효한 URL이 아닙니다.',
+ 'after' => ':attribute(을)를 :date 후로 설정하세요.',
+ 'alpha' => ':attribute(을)를 문자로만 구성하세요.',
+ 'alpha_dash' => ':attribute(을)를 문자, 숫자, -, _로만 구성하세요.',
+ 'alpha_num' => ':attribute(을)를 문자, 숫자로만 구성하세요.',
+ 'array' => ':attribute(을)를 배열로 구성하세요.',
+ 'backup_codes' => '유효하지 않거나 사용 중인 코드입니다.',
+ 'before' => ':attribute(을)를 :date 전으로 설정하세요.',
+ 'between' => [
+ 'numeric' => ':attribute(을)를 :min~:max(으)로 구성하세요.',
+ 'file' => ':attribute(을)를 :min~:max킬로바이트로 구성하세요.',
+ 'string' => ':attribute(을)를 :min~:max바이트로 구성하세요.',
+ 'array' => ':attribute(을)를 :min~:max개로 구성하세요.',
+ ],
+ '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(으)로 끝나게 구성하세요.',
+ 'file' => ':attribute(을)를 유효한 파일로 설정하세요.',
+ 'filled' => ':attribute(을)를 구성하세요.',
+ 'gt' => [
+ 'numeric' => ':attribute(을)를 :value(이)가 넘게 구성하세요.',
+ 'file' => ':attribute(을)를 :value킬로바이트가 넘게 구성하세요.',
+ 'string' => ':attribute(을)를 :value바이트가 넘게 구성하세요.',
+ 'array' => ':attribute(을)를 :value개가 넘게 구성하세요.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute(을)를 적어도 :value(으)로 구성하세요.',
+ 'file' => ':attribute(을)를 적어도 :value킬로바이트로 구성하세요.',
+ 'string' => ':attribute(을)를 적어도 :value바이트로 구성하세요.',
+ 'array' => ':attribute(을)를 적어도 :value개로 구성하세요..',
+ ],
+ 'exists' => '고른 :attribute(이)가 유효하지 않습니다.',
+ 'image' => ':attribute(을)를 이미지로 구성하세요.',
+ 'image_extension' => ':attribute(을)를 유효한 이미지 확장자로 구성하세요.',
+ 'in' => '고른 :attribute(이)가 유효하지 않습니다.',
+ 'integer' => ':attribute(을)를 정수로 구성하세요.',
+ 'ip' => ':attribute(을)를 유효한 IP 주소로 구성하세요.',
+ 'ipv4' => ':attribute(을)를 유효한 IPv4 주소로 구성하세요.',
+ 'ipv6' => ':attribute(을)를 유효한 IPv6 주소로 구성하세요.',
+ 'json' => ':attribute(을)를 유효한 JSON으로 구성하세요.',
+ 'lt' => [
+ 'numeric' => ':attribute(을)를 :value(이)가 안 되게 구성하세요.',
+ 'file' => ':attribute(을)를 :value킬로바이트가 안 되게 구성하세요.',
+ 'string' => ':attribute(을)를 :value바이트가 안 되게 구성하세요.',
+ 'array' => ':attribute(을)를 :value개가 안 되게 구성하세요.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute(을)를 많아야 :max(으)로 구성하세요.',
+ 'file' => ':attribute(을)를 많아야 :max킬로바이트로 구성하세요.',
+ 'string' => ':attribute(을)를 많아야 :max바이트로 구성하세요.',
+ 'array' => ':attribute(을)를 많아야 :max개로 구성하세요.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute(을)를 많아야 :max(으)로 구성하세요.',
+ 'file' => ':attribute(을)를 많아야 :max킬로바이트로 구성하세요.',
+ 'string' => ':attribute(을)를 많아야 :max바이트로 구성하세요.',
+ 'array' => ':attribute(을)를 많아야 :max개로 구성하세요.',
+ ],
+ 'mimes' => ':attribute(을)를 :values 형식으로 구성하세요.',
+ 'min' => [
+ 'numeric' => ':attribute(을)를 적어도 :value(으)로 구성하세요.',
+ 'file' => ':attribute(을)를 적어도 :value킬로바이트로 구성하세요.',
+ 'string' => ':attribute(을)를 적어도 :value바이트로 구성하세요.',
+ 'array' => ':attribute(을)를 적어도 :value개로 구성하세요..',
+ ],
+ 'not_in' => '고른 :attribute(이)가 유효하지 않습니다.',
+ 'not_regex' => ':attribute(은)는 유효하지 않은 형식입니다.',
+ 'numeric' => ':attribute(을)를 숫자로만 구성하세요.',
+ 'regex' => ':attribute(은)는 유효하지 않은 형식입니다.',
+ 'required' => ':attribute(을)를 구성하세요.',
+ 'required_if' => ':other(이)가 :value일 때 :attribute(을)를 구성해야 합니다.',
+ 'required_with' => ':values(이)가 있을 때 :attribute(을)를 구성해야 합니다.',
+ 'required_with_all' => ':values(이)가 모두 있을 때 :attribute(을)를 구성해야 합니다.',
+ 'required_without' => ':values(이)가 없을 때 :attribute(을)를 구성해야 합니다.',
+ 'required_without_all' => ':values(이)가 모두 없을 때 :attribute(을)를 구성해야 합니다.',
+ 'same' => ':attribute(와)과 :other(을)를 똑같이 구성하세요.',
+ 'safe_url' => '안전하지 않은 URL입니다.',
+ 'size' => [
+ 'numeric' => ':attribute(을)를 :size(으)로 구성하세요.',
+ 'file' => ':attribute(을)를 :size킬로바이트로 구성하세요.',
+ 'string' => ':attribute(을)를 :size바이트로 구성하세요.',
+ 'array' => ':attribute(을)를 :size개로 구성하세요..',
+ ],
+ 'string' => ':attribute(을)를 문자로 구성하세요.',
+ 'timezone' => ':attribute(을)를 유효한 시간대로 구성하세요.',
+ 'totp' => '유효하지 않거나 만료된 코드입니다.',
+ 'unique' => ':attribute(은)는 이미 있습니다.',
+ 'url' => ':attribute(은)는 유효하지 않은 형식입니다.',
+ 'uploaded' => '파일 크기가 서버에서 허용하는 수치를 넘습니다.',
+
+ 'zip_file' => ':attribute은(는) 컨텐츠 ZIP 파일 내의 객체 유형에 대해 고유해야 합니다.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => ':attribute은(는) :validTypes, found :foundType 유형의 파일을 참조해야 합니다.',
+ 'zip_model_expected' => '데이터 객체가 필요하지만 ":type" 타입이 발견되었습니다.',
+ 'zip_unique' => ':attribute은(는) 컨텐츠 ZIP 파일 내의 객체 유형에 대해 고유해야 합니다.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => '같은 패스워드를 다시 입력하세요.',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/ku/activities.php b/lang/ku/activities.php
new file mode 100644
index 00000000000..4362fc02958
--- /dev/null
+++ b/lang/ku/activities.php
@@ -0,0 +1,140 @@
+ 'created page',
+ 'page_create_notification' => 'Page successfully created',
+ 'page_update' => 'updated page',
+ 'page_update_notification' => 'Page successfully updated',
+ 'page_delete' => 'deleted page',
+ 'page_delete_notification' => 'Page successfully deleted',
+ 'page_restore' => 'restored page',
+ 'page_restore_notification' => 'Page successfully restored',
+ 'page_move' => 'moved page',
+ 'page_move_notification' => 'Page successfully moved',
+
+ // Chapters
+ 'chapter_create' => 'created chapter',
+ 'chapter_create_notification' => 'Chapter successfully created',
+ 'chapter_update' => 'updated chapter',
+ 'chapter_update_notification' => 'Chapter successfully updated',
+ 'chapter_delete' => 'deleted chapter',
+ 'chapter_delete_notification' => 'Chapter successfully deleted',
+ 'chapter_move' => 'moved chapter',
+ 'chapter_move_notification' => 'Chapter successfully moved',
+
+ // Books
+ 'book_create' => 'created book',
+ 'book_create_notification' => 'Book successfully created',
+ 'book_create_from_chapter' => 'converted chapter to book',
+ 'book_create_from_chapter_notification' => 'Chapter successfully converted to a book',
+ 'book_update' => 'updated book',
+ 'book_update_notification' => 'Book successfully updated',
+ 'book_delete' => 'deleted book',
+ 'book_delete_notification' => 'Book successfully deleted',
+ 'book_sort' => 'sorted book',
+ 'book_sort_notification' => 'Book successfully re-sorted',
+
+ // Bookshelves
+ 'bookshelf_create' => 'created shelf',
+ 'bookshelf_create_notification' => 'Shelf successfully created',
+ 'bookshelf_create_from_book' => 'converted book to shelf',
+ 'bookshelf_create_from_book_notification' => 'Book successfully converted to a shelf',
+ 'bookshelf_update' => 'updated shelf',
+ 'bookshelf_update_notification' => 'Shelf successfully updated',
+ 'bookshelf_delete' => 'deleted shelf',
+ 'bookshelf_delete_notification' => 'Shelf successfully deleted',
+
+ // Revisions
+ 'revision_restore' => 'restored revision',
+ 'revision_delete' => 'deleted revision',
+ 'revision_delete_notification' => 'Revision successfully deleted',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" has been added to your favourites',
+ 'favourite_remove_notification' => '":name" has been removed from your favourites',
+
+ // Watching
+ 'watch_update_level_notification' => 'Watch preferences successfully updated',
+
+ // Auth
+ 'auth_login' => 'logged in',
+ 'auth_register' => 'registered as new user',
+ 'auth_password_reset_request' => 'requested user password reset',
+ 'auth_password_reset_update' => 'reset user password',
+ 'mfa_setup_method' => 'configured MFA method',
+ 'mfa_setup_method_notification' => 'Multi-factor method successfully configured',
+ 'mfa_remove_method' => 'removed MFA method',
+ 'mfa_remove_method_notification' => 'Multi-factor method successfully removed',
+
+ // Settings
+ 'settings_update' => 'updated settings',
+ 'settings_update_notification' => 'Settings successfully updated',
+ 'maintenance_action_run' => 'ran maintenance action',
+
+ // Webhooks
+ 'webhook_create' => 'created webhook',
+ 'webhook_create_notification' => 'Webhook successfully created',
+ 'webhook_update' => 'updated webhook',
+ 'webhook_update_notification' => 'Webhook successfully updated',
+ 'webhook_delete' => 'deleted webhook',
+ 'webhook_delete_notification' => 'Webhook successfully deleted',
+
+ // Imports
+ 'import_create' => 'created import',
+ 'import_create_notification' => 'Import successfully uploaded',
+ 'import_run' => 'updated import',
+ 'import_run_notification' => 'Content successfully imported',
+ 'import_delete' => 'deleted import',
+ 'import_delete_notification' => 'Import successfully deleted',
+
+ // Users
+ 'user_create' => 'created user',
+ 'user_create_notification' => 'User successfully created',
+ 'user_update' => 'updated user',
+ 'user_update_notification' => 'User successfully updated',
+ 'user_delete' => 'deleted user',
+ 'user_delete_notification' => 'User successfully removed',
+
+ // API Tokens
+ 'api_token_create' => 'created API token',
+ 'api_token_create_notification' => 'API token successfully created',
+ 'api_token_update' => 'updated API token',
+ 'api_token_update_notification' => 'API token successfully updated',
+ 'api_token_delete' => 'deleted API token',
+ 'api_token_delete_notification' => 'API token successfully deleted',
+
+ // Roles
+ 'role_create' => 'created role',
+ 'role_create_notification' => 'Role successfully created',
+ 'role_update' => 'updated role',
+ 'role_update_notification' => 'Role successfully updated',
+ 'role_delete' => 'deleted role',
+ 'role_delete_notification' => 'Role successfully deleted',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'emptied recycle bin',
+ 'recycle_bin_restore' => 'restored from recycle bin',
+ 'recycle_bin_destroy' => 'removed from recycle bin',
+
+ // Comments
+ 'commented_on' => 'commented on',
+ 'comment_create' => 'added comment',
+ 'comment_update' => 'updated comment',
+ 'comment_delete' => 'deleted comment',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'updated permissions',
+];
diff --git a/lang/ku/auth.php b/lang/ku/auth.php
new file mode 100644
index 00000000000..369e06f93ed
--- /dev/null
+++ b/lang/ku/auth.php
@@ -0,0 +1,117 @@
+ 'ئەم بەکارهێنەرە نەدۆزرایەوە.',
+ 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
+
+ // Login & Register
+ 'sign_up' => 'Sign up',
+ 'log_in' => 'Log in',
+ 'log_in_with' => 'Login with :socialDriver',
+ 'sign_up_with' => 'Sign up with :socialDriver',
+ 'logout' => 'Logout',
+
+ 'name' => 'Name',
+ 'username' => 'Username',
+ 'email' => 'Email',
+ 'password' => 'Password',
+ 'password_confirm' => 'Confirm Password',
+ 'password_hint' => 'Must be at least 8 characters',
+ 'forgot_password' => 'Forgot Password?',
+ 'remember_me' => 'Remember Me',
+ 'ldap_email_hint' => 'Please enter an email to use for this account.',
+ 'create_account' => 'Create Account',
+ 'already_have_account' => 'Already have an account?',
+ 'dont_have_account' => 'Don\'t have an account?',
+ 'social_login' => 'Social Login',
+ 'social_registration' => 'Social Registration',
+ 'social_registration_text' => 'Register and sign in using another service.',
+
+ 'register_thanks' => 'Thanks for registering!',
+ 'register_confirm' => 'Please check your email and click the confirmation button to access :appName.',
+ 'registrations_disabled' => 'Registrations are currently disabled',
+ 'registration_email_domain_invalid' => 'That email domain does not have access to this application',
+ 'register_success' => 'Thanks for signing up! You are now registered and signed in.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Attempting Login',
+ 'auto_init_starting_desc' => 'We\'re contacting your authentication system to start the login process. If there\'s no progress after 5 seconds you can try clicking the link below.',
+ 'auto_init_start_link' => 'Proceed with authentication',
+
+ // Password Reset
+ 'reset_password' => 'Reset Password',
+ 'reset_password_send_instructions' => 'Enter your email below and you will be sent an email with a password reset link.',
+ 'reset_password_send_button' => 'Send Reset Link',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
+ 'reset_password_success' => 'Your password has been successfully reset.',
+ 'email_reset_subject' => 'Reset your :appName password',
+ 'email_reset_text' => 'You are receiving this email because we received a password reset request for your account.',
+ 'email_reset_not_requested' => 'If you did not request a password reset, no further action is required.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Confirm your email on :appName',
+ 'email_confirm_greeting' => 'Thanks for joining :appName!',
+ 'email_confirm_text' => 'Please confirm your email address by clicking the button below:',
+ 'email_confirm_action' => 'ئیمێڵەکەت دووبارە بنووسەوە',
+ 'email_confirm_send_error' => 'Email confirmation required but the system could not send the email. Contact the admin to ensure email is set up correctly.',
+ 'email_confirm_success' => 'Your email has been confirmed! You should now be able to login using this email address.',
+ 'email_confirm_resent' => 'Confirmation email resent, Please check your inbox.',
+ 'email_confirm_thanks' => 'Thanks for confirming!',
+ 'email_confirm_thanks_desc' => 'Please wait a moment while your confirmation is handled. If you are not redirected after 3 seconds press the "Continue" link below to proceed.',
+
+ 'email_not_confirmed' => 'Email Address Not Confirmed',
+ 'email_not_confirmed_text' => 'Your email address has not yet been confirmed.',
+ 'email_not_confirmed_click_link' => 'Please click the link in the email that was sent shortly after you registered.',
+ 'email_not_confirmed_resend' => 'If you cannot find the email you can re-send the confirmation email by submitting the form below.',
+ 'email_not_confirmed_resend_button' => 'Resend Confirmation Email',
+
+ // User Invite
+ 'user_invite_email_subject' => 'You have been invited to join :appName!',
+ 'user_invite_email_greeting' => 'An account has been created for you on :appName.',
+ 'user_invite_email_text' => 'Click the button below to set an account password and gain access:',
+ 'user_invite_email_action' => 'Set Account Password',
+ 'user_invite_page_welcome' => 'Welcome to :appName!',
+ 'user_invite_page_text' => 'To finalise your account and gain access you need to set a password which will be used to log-in to :appName on future visits.',
+ 'user_invite_page_confirm_button' => 'Confirm Password',
+ 'user_invite_success_login' => 'Password set, you should now be able to login using your set password to access :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Setup Multi-Factor Authentication',
+ 'mfa_setup_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'mfa_setup_configured' => 'Already configured',
+ 'mfa_setup_reconfigure' => 'Reconfigure',
+ 'mfa_setup_remove_confirmation' => 'Are you sure you want to remove this multi-factor authentication method?',
+ 'mfa_setup_action' => 'Setup',
+ 'mfa_backup_codes_usage_limit_warning' => 'You have less than 5 backup codes remaining, Please generate and store a new set before you run out of codes to prevent being locked out of your account.',
+ 'mfa_option_totp_title' => 'Mobile App',
+ 'mfa_option_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Backup Codes',
+ 'mfa_option_backup_codes_desc' => 'Generates a set of one-time-use backup codes which you\'ll enter on login to verify your identity. Make sure to store these in a safe & secure place.',
+ 'mfa_gen_confirm_and_enable' => 'Confirm and Enable',
+ 'mfa_gen_backup_codes_title' => 'Backup Codes Setup',
+ 'mfa_gen_backup_codes_desc' => 'Store the below list of codes in a safe place. When accessing the system you\'ll be able to use one of the codes as a second authentication mechanism.',
+ 'mfa_gen_backup_codes_download' => 'Download Codes',
+ 'mfa_gen_backup_codes_usage_warning' => 'Each code can only be used once',
+ 'mfa_gen_totp_title' => 'Mobile App Setup',
+ 'mfa_gen_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Scan the QR code below using your preferred authentication app to get started.',
+ 'mfa_gen_totp_verify_setup' => 'Verify Setup',
+ 'mfa_gen_totp_verify_setup_desc' => 'Verify that all is working by entering a code, generated within your authentication app, in the input box below:',
+ 'mfa_gen_totp_provide_code_here' => 'Provide your app generated code here',
+ 'mfa_verify_access' => 'Verify Access',
+ 'mfa_verify_access_desc' => 'Your user account requires you to confirm your identity via an additional level of verification before you\'re granted access. Verify using one of your configured methods to continue.',
+ 'mfa_verify_no_methods' => 'No Methods Configured',
+ 'mfa_verify_no_methods_desc' => 'No multi-factor authentication methods could be found for your account. You\'ll need to set up at least one method before you gain access.',
+ 'mfa_verify_use_totp' => 'Verify using a mobile app',
+ 'mfa_verify_use_backup_codes' => 'Verify using a backup code',
+ 'mfa_verify_backup_code' => 'Backup Code',
+ 'mfa_verify_backup_code_desc' => 'Enter one of your remaining backup codes below:',
+ 'mfa_verify_backup_code_enter_here' => 'Enter backup code here',
+ 'mfa_verify_totp_desc' => 'Enter the code, generated using your mobile app, below:',
+ 'mfa_setup_login_notification' => 'Multi-factor method configured, Please now login again using the configured method.',
+];
diff --git a/lang/ku/common.php b/lang/ku/common.php
new file mode 100644
index 00000000000..8d799d028bc
--- /dev/null
+++ b/lang/ku/common.php
@@ -0,0 +1,115 @@
+ 'لابردن',
+ 'close' => 'داخستن',
+ 'confirm' => 'دڵنیام',
+ 'back' => 'گەڕانەوە',
+ 'save' => 'پاشەکەوتکردن',
+ 'continue' => 'بەردەوامبە',
+ 'select' => 'هەڵبژێرە',
+ 'toggle_all' => 'Toggle All',
+ 'more' => 'زیاتر',
+
+ // Form Labels
+ 'name' => 'ناو',
+ 'description' => 'وردەکاری',
+ 'role' => 'توانا',
+ 'cover_image' => 'وێنەی کەڤەر',
+ 'cover_image_description' => 'This image should be approximately 440x250px although it will be flexibly scaled & cropped to fit the user interface in different scenarios as required, so actual dimensions for display will differ.',
+
+ // Actions
+ 'actions' => 'کردارەکان',
+ 'view' => 'بینین',
+ 'view_all' => 'بینینی هەموو',
+ 'new' => 'نوێ',
+ 'create' => 'دروستکردن',
+ 'update' => 'نوێکردنەوە',
+ 'edit' => 'دەسکاریکردن',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'ڕیزکردن',
+ 'move' => 'جوڵاندن',
+ 'copy' => 'لەبەرگرتنەوە',
+ 'reply' => 'وەڵامدانەوە',
+ 'delete' => 'سڕینەوە',
+ 'delete_confirm' => 'دڵنیام لە سڕینەوە',
+ 'search' => 'گەڕان',
+ 'search_clear' => 'پاککردنهوهی گهڕان',
+ 'reset' => 'ڕێکخستنەوە',
+ 'remove' => 'لابردن',
+ 'add' => 'زیادکردن',
+ 'configure' => 'شێوەپێدان',
+ 'manage' => 'بەڕیوەبردن',
+ 'fullscreen' => 'پڕ شاشە',
+ 'favourite' => 'ئارەزووەکان',
+ 'unfavourite' => 'Unfavourite',
+ 'next' => 'دواتر',
+ 'previous' => 'پێشتر',
+ 'filter_active' => 'Active Filter:',
+ 'filter_clear' => 'Clear Filter',
+ 'download' => 'دابەزاندن',
+ 'open_in_tab' => 'Open in Tab',
+ 'open' => 'کردنهوه',
+
+ // Sort Options
+ 'sort_options' => 'Sort Options',
+ 'sort_direction_toggle' => 'Sort Direction Toggle',
+ 'sort_ascending' => 'Sort Ascending',
+ 'sort_descending' => 'Sort Descending',
+ 'sort_name' => 'ناو',
+ 'sort_default' => 'Default',
+ 'sort_created_at' => 'Created Date',
+ 'sort_updated_at' => 'Updated Date',
+
+ // Misc
+ 'deleted_user' => 'Deleted User',
+ 'no_activity' => 'No activity to show',
+ 'no_items' => 'No items available',
+ 'back_to_top' => 'گەڕانەوە بۆ سەرەوە',
+ 'skip_to_main_content' => 'Skip to main content',
+ 'toggle_details' => 'Toggle Details',
+ 'toggle_thumbnails' => 'Toggle Thumbnails',
+ 'details' => 'وردەکاریەکان',
+ 'grid_view' => 'Grid View',
+ 'list_view' => 'List View',
+ 'default' => 'Default',
+ 'breadcrumb' => 'Breadcrumb',
+ 'status' => 'Status',
+ 'status_active' => 'Active',
+ 'status_inactive' => 'Inactive',
+ 'never' => 'Never',
+ 'none' => 'هیچ',
+
+ // Header
+ 'homepage' => 'پەرەی سەرەكی',
+ 'header_menu_expand' => 'Expand Header Menu',
+ 'profile_menu' => 'Profile Menu',
+ 'view_profile' => 'View Profile',
+ 'edit_profile' => 'ڕێکخستنی دۆسیەی تایبەت',
+ 'dark_mode' => 'جۆری ڕەش',
+ 'light_mode' => 'دۆخی ڕووناک',
+ 'global_search' => 'Global Search',
+
+ // Layout tabs
+ 'tab_info' => 'Info',
+ 'tab_info_label' => 'Tab: Show Secondary Information',
+ 'tab_content' => 'ناوەڕۆک',
+ 'tab_content_label' => 'Tab: Show Primary Content',
+
+ // Email Content
+ 'email_action_help' => 'If you’re having trouble clicking the ":actionText" button, copy and paste the URL below into your web browser:',
+ 'email_rights' => 'All rights reserved',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'ڕێبازی مافی کەسیی',
+ 'terms_of_service' => 'مەرجەکانی خزمەت',
+
+ // OpenSearch
+ 'opensearch_description' => 'Search :appName',
+];
diff --git a/lang/ku/components.php b/lang/ku/components.php
new file mode 100644
index 00000000000..c33b1d0b791
--- /dev/null
+++ b/lang/ku/components.php
@@ -0,0 +1,46 @@
+ 'Image Select',
+ 'image_list' => 'Image List',
+ 'image_details' => 'Image Details',
+ 'image_upload' => 'Upload Image',
+ 'image_intro' => 'Here you can select and manage images that have been previously uploaded to the system.',
+ 'image_intro_upload' => 'Upload a new image by dragging an image file into this window, or by using the "Upload Image" button above.',
+ 'image_all' => 'All',
+ 'image_all_title' => 'View all images',
+ 'image_book_title' => 'View images uploaded to this book',
+ 'image_page_title' => 'View images uploaded to this page',
+ 'image_search_hint' => 'Search by image name',
+ 'image_uploaded' => 'Uploaded :uploadedDate',
+ 'image_uploaded_by' => 'Uploaded by :userName',
+ 'image_uploaded_to' => 'Uploaded to :pageLink',
+ 'image_updated' => 'Updated :updateDate',
+ 'image_load_more' => 'Load More',
+ 'image_image_name' => 'Image Name',
+ 'image_delete_used' => 'This image is used in the pages below.',
+ 'image_delete_confirm_text' => 'Are you sure you want to delete this image?',
+ 'image_select_image' => 'Select Image',
+ 'image_dropzone' => 'Drop images or click here to upload',
+ 'image_dropzone_drop' => 'Drop images here to upload',
+ 'images_deleted' => 'Images Deleted',
+ 'image_preview' => 'Image Preview',
+ 'image_upload_success' => 'Image uploaded successfully',
+ 'image_update_success' => 'Image details successfully updated',
+ 'image_delete_success' => 'Image successfully deleted',
+ 'image_replace' => 'Replace Image',
+ 'image_replace_success' => 'Image file successfully updated',
+ 'image_rebuild_thumbs' => 'Regenerate Size Variations',
+ 'image_rebuild_thumbs_success' => 'Image size variations successfully rebuilt!',
+
+ // Code Editor
+ 'code_editor' => 'Edit Code',
+ 'code_language' => 'Code Language',
+ 'code_content' => 'Code Content',
+ 'code_session_history' => 'Session History',
+ 'code_save' => 'Save Code',
+];
diff --git a/lang/ku/editor.php b/lang/ku/editor.php
new file mode 100644
index 00000000000..0d250e9a7bd
--- /dev/null
+++ b/lang/ku/editor.php
@@ -0,0 +1,182 @@
+ 'General',
+ 'advanced' => 'Advanced',
+ 'none' => 'None',
+ 'cancel' => 'Cancel',
+ 'save' => 'Save',
+ 'close' => 'Close',
+ 'apply' => 'Apply',
+ 'undo' => 'Undo',
+ 'redo' => 'Redo',
+ 'left' => 'Left',
+ 'center' => 'Center',
+ 'right' => 'Right',
+ 'top' => 'Top',
+ 'middle' => 'Middle',
+ 'bottom' => 'Bottom',
+ 'width' => 'Width',
+ 'height' => 'Height',
+ 'More' => 'More',
+ 'select' => 'Select...',
+
+ // Toolbar
+ 'formats' => 'Formats',
+ 'header_large' => 'Large Header',
+ 'header_medium' => 'Medium Header',
+ 'header_small' => 'Small Header',
+ 'header_tiny' => 'Tiny Header',
+ 'paragraph' => 'Paragraph',
+ 'blockquote' => 'Blockquote',
+ 'inline_code' => 'Inline code',
+ 'callouts' => 'Callouts',
+ 'callout_information' => 'Information',
+ 'callout_success' => 'Success',
+ 'callout_warning' => 'Warning',
+ 'callout_danger' => 'Danger',
+ 'bold' => 'Bold',
+ 'italic' => 'Italic',
+ 'underline' => 'Underline',
+ 'strikethrough' => 'Strikethrough',
+ 'superscript' => 'Superscript',
+ 'subscript' => 'Subscript',
+ 'text_color' => 'Text color',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Custom color',
+ 'remove_color' => 'Remove color',
+ 'background_color' => 'Background color',
+ 'align_left' => 'Align left',
+ 'align_center' => 'Align center',
+ 'align_right' => 'Align right',
+ 'align_justify' => 'Justify',
+ 'list_bullet' => 'Bullet list',
+ 'list_numbered' => 'Numbered list',
+ 'list_task' => 'Task list',
+ 'indent_increase' => 'Increase indent',
+ 'indent_decrease' => 'Decrease indent',
+ 'table' => 'Table',
+ 'insert_image' => 'Insert image',
+ 'insert_image_title' => 'Insert/Edit Image',
+ 'insert_link' => 'Insert/edit link',
+ 'insert_link_title' => 'Insert/Edit Link',
+ 'insert_horizontal_line' => 'Insert horizontal line',
+ 'insert_code_block' => 'Insert code block',
+ 'edit_code_block' => 'Edit code block',
+ 'insert_drawing' => 'Insert/edit drawing',
+ 'drawing_manager' => 'Drawing manager',
+ 'insert_media' => 'Insert/edit media',
+ 'insert_media_title' => 'Insert/Edit Media',
+ 'clear_formatting' => 'Clear formatting',
+ 'source_code' => 'Source code',
+ 'source_code_title' => 'Source Code',
+ 'fullscreen' => 'Fullscreen',
+ 'image_options' => 'Image options',
+
+ // Tables
+ 'table_properties' => 'Table properties',
+ 'table_properties_title' => 'Table Properties',
+ 'delete_table' => 'Delete table',
+ 'table_clear_formatting' => 'Clear table formatting',
+ 'resize_to_contents' => 'Resize to contents',
+ 'row_header' => 'Row header',
+ 'insert_row_before' => 'Insert row before',
+ 'insert_row_after' => 'Insert row after',
+ 'delete_row' => 'Delete row',
+ 'insert_column_before' => 'Insert column before',
+ 'insert_column_after' => 'Insert column after',
+ 'delete_column' => 'Delete column',
+ 'table_cell' => 'Cell',
+ 'table_row' => 'Row',
+ 'table_column' => 'Column',
+ 'cell_properties' => 'Cell properties',
+ 'cell_properties_title' => 'Cell Properties',
+ 'cell_type' => 'Cell type',
+ 'cell_type_cell' => 'Cell',
+ 'cell_scope' => 'Scope',
+ 'cell_type_header' => 'Header cell',
+ 'merge_cells' => 'Merge cells',
+ 'split_cell' => 'Split cell',
+ 'table_row_group' => 'Row Group',
+ 'table_column_group' => 'Column Group',
+ 'horizontal_align' => 'Horizontal align',
+ 'vertical_align' => 'Vertical align',
+ 'border_width' => 'Border width',
+ 'border_style' => 'Border style',
+ 'border_color' => 'Border color',
+ 'row_properties' => 'Row properties',
+ 'row_properties_title' => 'Row Properties',
+ 'cut_row' => 'Cut row',
+ 'copy_row' => 'Copy row',
+ 'paste_row_before' => 'Paste row before',
+ 'paste_row_after' => 'Paste row after',
+ 'row_type' => 'Row type',
+ 'row_type_header' => 'Header',
+ 'row_type_body' => 'Body',
+ 'row_type_footer' => 'Footer',
+ 'alignment' => 'Alignment',
+ 'cut_column' => 'Cut column',
+ 'copy_column' => 'Copy column',
+ 'paste_column_before' => 'Paste column before',
+ 'paste_column_after' => 'Paste column after',
+ 'cell_padding' => 'Cell padding',
+ 'cell_spacing' => 'Cell spacing',
+ 'caption' => 'Caption',
+ 'show_caption' => 'Show caption',
+ 'constrain' => 'Constrain proportions',
+ 'cell_border_solid' => 'Solid',
+ 'cell_border_dotted' => 'Dotted',
+ 'cell_border_dashed' => 'Dashed',
+ 'cell_border_double' => 'Double',
+ 'cell_border_groove' => 'Groove',
+ 'cell_border_ridge' => 'Ridge',
+ 'cell_border_inset' => 'Inset',
+ 'cell_border_outset' => 'Outset',
+ 'cell_border_none' => 'None',
+ 'cell_border_hidden' => 'Hidden',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Source',
+ 'alt_desc' => 'Alternative description',
+ 'embed' => 'Embed',
+ 'paste_embed' => 'Paste your embed code below:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Text to display',
+ 'title' => 'Title',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Open link',
+ 'open_link_in' => 'Open link in...',
+ 'open_link_current' => 'Current window',
+ 'open_link_new' => 'New window',
+ 'remove_link' => 'Remove link',
+ 'insert_collapsible' => 'Insert collapsible block',
+ 'collapsible_unwrap' => 'Unwrap',
+ 'edit_label' => 'Edit label',
+ 'toggle_open_closed' => 'Toggle open/closed',
+ 'collapsible_edit' => 'Edit collapsible block',
+ 'toggle_label' => 'Toggle label',
+
+ // About view
+ 'about' => 'About the editor',
+ 'about_title' => 'About the WYSIWYG Editor',
+ 'editor_license' => 'Editor License & Copyright',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'This editor is built using :tinyLink which is provided under the MIT license.',
+ 'editor_tiny_license_link' => 'The copyright and license details of TinyMCE can be found here.',
+ 'save_continue' => 'Save Page & Continue',
+ 'callouts_cycle' => '(Keep pressing to toggle through types)',
+ 'link_selector' => 'Link to content',
+ 'shortcuts' => 'Shortcuts',
+ 'shortcut' => 'Shortcut',
+ 'shortcuts_intro' => 'The following shortcuts are available in the editor:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Description',
+];
diff --git a/lang/ku/entities.php b/lang/ku/entities.php
new file mode 100644
index 00000000000..74c50be3b2f
--- /dev/null
+++ b/lang/ku/entities.php
@@ -0,0 +1,476 @@
+ 'Recently Created',
+ 'recently_created_pages' => 'Recently Created Pages',
+ 'recently_updated_pages' => 'Recently Updated Pages',
+ 'recently_created_chapters' => 'Recently Created Chapters',
+ 'recently_created_books' => 'Recently Created Books',
+ 'recently_created_shelves' => 'Recently Created Shelves',
+ 'recently_update' => 'Recently Updated',
+ 'recently_viewed' => 'Recently Viewed',
+ 'recent_activity' => 'Recent Activity',
+ 'create_now' => 'Create one now',
+ 'revisions' => 'Revisions',
+ 'meta_revision' => 'Revision #:revisionCount',
+ 'meta_created' => 'Created :timeLength',
+ 'meta_created_name' => 'Created :timeLength by :user',
+ 'meta_updated' => 'Updated :timeLength',
+ 'meta_updated_name' => 'Updated :timeLength by :user',
+ 'meta_owned_name' => 'Owned by :user',
+ 'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
+ 'entity_select' => 'Entity Select',
+ 'entity_select_lack_permission' => 'You don\'t have the required permissions to select this item',
+ 'images' => 'Images',
+ 'my_recent_drafts' => 'My Recent Drafts',
+ 'my_recently_viewed' => 'My Recently Viewed',
+ 'my_most_viewed_favourites' => 'My Most Viewed Favourites',
+ 'my_favourites' => 'My Favourites',
+ 'no_pages_viewed' => 'You have not viewed any pages',
+ 'no_pages_recently_created' => 'No pages have been recently created',
+ 'no_pages_recently_updated' => 'No pages have been recently updated',
+ 'export' => 'Export',
+ 'export_html' => 'Contained Web File',
+ 'export_pdf' => 'PDF File',
+ 'export_text' => 'Plain Text File',
+ 'export_md' => 'Markdown File',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Permissions',
+ 'permissions_desc' => 'Set permissions here to override the default permissions provided by user roles.',
+ 'permissions_book_cascade' => 'Permissions set on books will automatically cascade to child chapters and pages, unless they have their own permissions defined.',
+ 'permissions_chapter_cascade' => 'Permissions set on chapters will automatically cascade to child pages, unless they have their own permissions defined.',
+ 'permissions_save' => 'Save Permissions',
+ 'permissions_owner' => 'Owner',
+ 'permissions_role_everyone_else' => 'Everyone Else',
+ 'permissions_role_everyone_else_desc' => 'Set permissions for all roles not specifically overridden.',
+ 'permissions_role_override' => 'Override permissions for role',
+ 'permissions_inherit_defaults' => 'Inherit defaults',
+
+ // Search
+ 'search_results' => 'Search Results',
+ 'search_total_results_found' => ':count result found|:count total results found',
+ 'search_clear' => 'Clear Search',
+ 'search_no_pages' => 'No pages matched this search',
+ 'search_for_term' => 'Search for :term',
+ 'search_more' => 'More Results',
+ 'search_advanced' => 'Advanced Search',
+ 'search_terms' => 'Search Terms',
+ 'search_content_type' => 'Content Type',
+ 'search_exact_matches' => 'Exact Matches',
+ 'search_tags' => 'Tag Searches',
+ 'search_options' => 'Options',
+ 'search_viewed_by_me' => 'Viewed by me',
+ 'search_not_viewed_by_me' => 'Not viewed by me',
+ 'search_permissions_set' => 'Permissions set',
+ 'search_created_by_me' => 'Created by me',
+ 'search_updated_by_me' => 'Updated by me',
+ 'search_owned_by_me' => 'Owned by me',
+ 'search_date_options' => 'Date Options',
+ 'search_updated_before' => 'Updated before',
+ 'search_updated_after' => 'Updated after',
+ 'search_created_before' => 'Created before',
+ 'search_created_after' => 'Created after',
+ 'search_set_date' => 'Set Date',
+ 'search_update' => 'Update Search',
+
+ // Shelves
+ 'shelf' => 'Shelf',
+ 'shelves' => 'Shelves',
+ 'x_shelves' => ':count Shelf|:count Shelves',
+ 'shelves_empty' => 'No shelves have been created',
+ 'shelves_create' => 'Create New Shelf',
+ 'shelves_popular' => 'Popular Shelves',
+ 'shelves_new' => 'New Shelves',
+ 'shelves_new_action' => 'New Shelf',
+ 'shelves_popular_empty' => 'The most popular shelves will appear here.',
+ 'shelves_new_empty' => 'The most recently created shelves will appear here.',
+ 'shelves_save' => 'Save Shelf',
+ 'shelves_books' => 'Books on this shelf',
+ 'shelves_add_books' => 'Add books to this shelf',
+ 'shelves_drag_books' => 'Drag books below to add them to this shelf',
+ 'shelves_empty_contents' => 'This shelf has no books assigned to it',
+ 'shelves_edit_and_assign' => 'Edit shelf to assign books',
+ 'shelves_edit_named' => 'Edit Shelf :name',
+ 'shelves_edit' => 'Edit Shelf',
+ 'shelves_delete' => 'Delete Shelf',
+ 'shelves_delete_named' => 'Delete Shelf :name',
+ 'shelves_delete_explain' => "This will delete the shelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Are you sure you want to delete this shelf?',
+ 'shelves_permissions' => 'Shelf Permissions',
+ 'shelves_permissions_updated' => 'Shelf Permissions Updated',
+ 'shelves_permissions_active' => 'Shelf Permissions Active',
+ 'shelves_permissions_cascade_warning' => 'Permissions on shelves do not automatically cascade to contained books. This is because a book can exist on multiple shelves. Permissions can however be copied down to child books using the option found below.',
+ 'shelves_permissions_create' => 'Shelf create permissions are only used for copying permissions to child books using the action below. They do not control the ability to create books.',
+ 'shelves_copy_permissions_to_books' => 'Copy Permissions to Books',
+ 'shelves_copy_permissions' => 'Copy Permissions',
+ 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this shelf to all books contained within. Before activating, ensure any changes to the permissions of this shelf have been saved.',
+ 'shelves_copy_permission_success' => 'Shelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'Book',
+ 'books' => 'Books',
+ 'x_books' => ':count Book|:count Books',
+ 'books_empty' => 'No books have been created',
+ 'books_popular' => 'Popular Books',
+ 'books_recent' => 'Recent Books',
+ 'books_new' => 'New Books',
+ 'books_new_action' => 'New Book',
+ 'books_popular_empty' => 'The most popular books will appear here.',
+ 'books_new_empty' => 'The most recently created books will appear here.',
+ 'books_create' => 'Create New Book',
+ 'books_delete' => 'Delete Book',
+ 'books_delete_named' => 'Delete Book :bookName',
+ 'books_delete_explain' => 'This will delete the book with the name \':bookName\'. All pages and chapters will be removed.',
+ 'books_delete_confirmation' => 'Are you sure you want to delete this book?',
+ 'books_edit' => 'Edit Book',
+ 'books_edit_named' => 'Edit Book :bookName',
+ 'books_form_book_name' => 'Book Name',
+ 'books_save' => 'Save Book',
+ 'books_permissions' => 'Book Permissions',
+ 'books_permissions_updated' => 'Book Permissions Updated',
+ 'books_empty_contents' => 'No pages or chapters have been created for this book.',
+ 'books_empty_create_page' => 'Create a new page',
+ 'books_empty_sort_current_book' => 'Sort the current book',
+ 'books_empty_add_chapter' => 'Add a chapter',
+ 'books_permissions_active' => 'Book Permissions Active',
+ 'books_search_this' => 'Search this book',
+ 'books_navigation' => 'Book Navigation',
+ 'books_sort' => 'Sort Book Contents',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Sort Book :bookName',
+ 'books_sort_name' => 'Sort by Name',
+ 'books_sort_created' => 'Sort by Created Date',
+ 'books_sort_updated' => 'Sort by Updated Date',
+ 'books_sort_chapters_first' => 'Chapters First',
+ 'books_sort_chapters_last' => 'Chapters Last',
+ 'books_sort_show_other' => 'Show Other Books',
+ 'books_sort_save' => 'Save New Order',
+ 'books_sort_show_other_desc' => 'Add other books here to include them in the sort operation, and allow easy cross-book reorganisation.',
+ 'books_sort_move_up' => 'Move Up',
+ 'books_sort_move_down' => 'Move Down',
+ 'books_sort_move_prev_book' => 'Move to Previous Book',
+ 'books_sort_move_next_book' => 'Move to Next Book',
+ 'books_sort_move_prev_chapter' => 'Move Into Previous Chapter',
+ 'books_sort_move_next_chapter' => 'Move Into Next Chapter',
+ 'books_sort_move_book_start' => 'Move to Start of Book',
+ 'books_sort_move_book_end' => 'Move to End of Book',
+ 'books_sort_move_before_chapter' => 'Move to Before Chapter',
+ 'books_sort_move_after_chapter' => 'Move to After Chapter',
+ 'books_copy' => 'Copy Book',
+ 'books_copy_success' => 'Book successfully copied',
+
+ // Chapters
+ 'chapter' => 'Chapter',
+ 'chapters' => 'Chapters',
+ 'x_chapters' => ':count Chapter|:count Chapters',
+ 'chapters_popular' => 'Popular Chapters',
+ 'chapters_new' => 'New Chapter',
+ 'chapters_create' => 'Create New Chapter',
+ 'chapters_delete' => 'Delete Chapter',
+ 'chapters_delete_named' => 'Delete Chapter :chapterName',
+ 'chapters_delete_explain' => 'This will delete the chapter with the name \':chapterName\'. All pages that exist within this chapter will also be deleted.',
+ 'chapters_delete_confirm' => 'Are you sure you want to delete this chapter?',
+ 'chapters_edit' => 'Edit Chapter',
+ 'chapters_edit_named' => 'Edit Chapter :chapterName',
+ 'chapters_save' => 'Save Chapter',
+ 'chapters_move' => 'Move Chapter',
+ 'chapters_move_named' => 'Move Chapter :chapterName',
+ 'chapters_copy' => 'Copy Chapter',
+ 'chapters_copy_success' => 'Chapter successfully copied',
+ 'chapters_permissions' => 'Chapter Permissions',
+ 'chapters_empty' => 'No pages are currently in this chapter.',
+ 'chapters_permissions_active' => 'Chapter Permissions Active',
+ 'chapters_permissions_success' => 'Chapter Permissions Updated',
+ 'chapters_search_this' => 'Search this chapter',
+ 'chapter_sort_book' => 'Sort Book',
+
+ // Pages
+ 'page' => 'Page',
+ 'pages' => 'Pages',
+ 'x_pages' => ':count Page|:count Pages',
+ 'pages_popular' => 'Popular Pages',
+ 'pages_new' => 'New Page',
+ 'pages_attachments' => 'Attachments',
+ 'pages_navigation' => 'Page Navigation',
+ 'pages_delete' => 'Delete Page',
+ 'pages_delete_named' => 'Delete Page :pageName',
+ 'pages_delete_draft_named' => 'Delete Draft Page :pageName',
+ 'pages_delete_draft' => 'Delete Draft Page',
+ 'pages_delete_success' => 'Page deleted',
+ 'pages_delete_draft_success' => 'Draft page deleted',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Are you sure you want to delete this page?',
+ 'pages_delete_draft_confirm' => 'Are you sure you want to delete this draft page?',
+ 'pages_editing_named' => 'Editing Page :pageName',
+ 'pages_edit_draft_options' => 'Draft Options',
+ 'pages_edit_save_draft' => 'Save Draft',
+ 'pages_edit_draft' => 'Edit Page Draft',
+ 'pages_editing_draft' => 'Editing Draft',
+ 'pages_editing_page' => 'Editing Page',
+ 'pages_edit_draft_save_at' => 'Draft saved at ',
+ 'pages_edit_delete_draft' => 'Delete Draft',
+ 'pages_edit_delete_draft_confirm' => 'Are you sure you want to delete your draft page changes? All of your changes, since the last full save, will be lost and the editor will be updated with the latest page non-draft save state.',
+ 'pages_edit_discard_draft' => 'Discard Draft',
+ 'pages_edit_switch_to_markdown' => 'Switch to Markdown Editor',
+ 'pages_edit_switch_to_markdown_clean' => '(Clean Content)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stable Content)',
+ 'pages_edit_switch_to_wysiwyg' => 'Switch to WYSIWYG Editor',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Set Changelog',
+ 'pages_edit_enter_changelog_desc' => 'Enter a brief description of the changes you\'ve made',
+ 'pages_edit_enter_changelog' => 'Enter Changelog',
+ 'pages_editor_switch_title' => 'Switch Editor',
+ 'pages_editor_switch_are_you_sure' => 'Are you sure you want to change the editor for this page?',
+ 'pages_editor_switch_consider_following' => 'Consider the following when changing editors:',
+ 'pages_editor_switch_consideration_a' => 'Once saved, the new editor option will be used by any future editors, including those that may not be able to change editor type themselves.',
+ 'pages_editor_switch_consideration_b' => 'This can potentially lead to a loss of detail and syntax in certain circumstances.',
+ 'pages_editor_switch_consideration_c' => 'Tag or changelog changes, made since last save, won\'t persist across this change.',
+ 'pages_save' => 'Save Page',
+ 'pages_title' => 'Page Title',
+ 'pages_name' => 'Page Name',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Preview',
+ 'pages_md_insert_image' => 'Insert Image',
+ 'pages_md_insert_link' => 'Insert Entity Link',
+ 'pages_md_insert_drawing' => 'Insert Drawing',
+ 'pages_md_show_preview' => 'Show preview',
+ 'pages_md_sync_scroll' => 'Sync preview scroll',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Unsaved Drawing Found',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'Page is not in a chapter',
+ 'pages_move' => 'Move Page',
+ 'pages_copy' => 'Copy Page',
+ 'pages_copy_desination' => 'Copy Destination',
+ 'pages_copy_success' => 'Page successfully copied',
+ 'pages_permissions' => 'Page Permissions',
+ 'pages_permissions_success' => 'Page permissions updated',
+ 'pages_revision' => 'Revision',
+ 'pages_revisions' => 'Page Revisions',
+ 'pages_revisions_desc' => 'Listed below are all the past revisions of this page. You can look back upon, compare, and restore old page versions if permissions allow. The full history of the page may not be fully reflected here since, depending on system configuration, old revisions could be auto-deleted.',
+ 'pages_revisions_named' => 'Page Revisions for :pageName',
+ 'pages_revision_named' => 'Page Revision for :pageName',
+ 'pages_revision_restored_from' => 'Restored from #:id; :summary',
+ 'pages_revisions_created_by' => 'Created By',
+ 'pages_revisions_date' => 'Revision Date',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revision Number',
+ 'pages_revisions_numbered' => 'Revision #:id',
+ 'pages_revisions_numbered_changes' => 'Revision #:id Changes',
+ 'pages_revisions_editor' => 'Editor Type',
+ 'pages_revisions_changelog' => 'Changelog',
+ 'pages_revisions_changes' => 'Changes',
+ 'pages_revisions_current' => 'Current Version',
+ 'pages_revisions_preview' => 'Preview',
+ 'pages_revisions_restore' => 'Restore',
+ 'pages_revisions_none' => 'This page has no revisions',
+ 'pages_copy_link' => 'Copy Link',
+ 'pages_edit_content_link' => 'Jump to section in editor',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Page Section Options',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Page Permissions Active',
+ 'pages_initial_revision' => 'Initial publish',
+ 'pages_references_update_revision' => 'System auto-update of internal links',
+ 'pages_initial_name' => 'New Page',
+ 'pages_editing_draft_notification' => 'You are currently editing a draft that was last saved :timeDiff.',
+ 'pages_draft_edited_notification' => 'This page has been updated by since that time. It is recommended that you discard this draft.',
+ 'pages_draft_page_changed_since_creation' => 'This page has been updated since this draft was created. It is recommended that you discard this draft or take care not to overwrite any page changes.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count users have started editing this page',
+ 'start_b' => ':userName has started editing this page',
+ 'time_a' => 'since the page was last updated',
+ 'time_b' => 'in the last :minCount minutes',
+ 'message' => ':start :time. Take care not to overwrite each other\'s updates!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'Specific Page',
+ 'pages_is_template' => 'Page Template',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'Page Tags',
+ 'chapter_tags' => 'Chapter Tags',
+ 'book_tags' => 'Book Tags',
+ 'shelf_tags' => 'Shelf Tags',
+ 'tag' => 'Tag',
+ 'tags' => 'Tags',
+ 'tags_index_desc' => 'Tags can be applied to content within the system to apply a flexible form of categorization. Tags can have both a key and value, with the value being optional. Once applied, content can then be queried using the tag name and value.',
+ 'tag_name' => 'Tag Name',
+ 'tag_value' => 'Tag Value (Optional)',
+ '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' => 'Add another tag',
+ 'tags_remove' => 'Remove this tag',
+ 'tags_usages' => 'Total tag usages',
+ 'tags_assigned_pages' => 'Assigned to Pages',
+ 'tags_assigned_chapters' => 'Assigned to Chapters',
+ 'tags_assigned_books' => 'Assigned to Books',
+ 'tags_assigned_shelves' => 'Assigned to Shelves',
+ 'tags_x_unique_values' => ':count unique values',
+ 'tags_all_values' => 'All values',
+ 'tags_view_tags' => 'View Tags',
+ 'tags_view_existing_tags' => 'View existing tags',
+ 'tags_list_empty_hint' => 'Tags can be assigned via the page editor sidebar or while editing the details of a book, chapter or shelf.',
+ 'attachments' => 'Attachments',
+ 'attachments_explain' => 'Upload some files or attach some links to display on your page. These are visible in the page sidebar.',
+ 'attachments_explain_instant_save' => 'Changes here are saved instantly.',
+ 'attachments_upload' => 'Upload File',
+ 'attachments_link' => 'Attach Link',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'Set Link',
+ 'attachments_delete' => 'Are you sure you want to delete this attachment?',
+ 'attachments_dropzone' => 'Drop files here to upload',
+ 'attachments_no_files' => 'No files have been uploaded',
+ 'attachments_explain_link' => 'You can attach a link if you\'d prefer not to upload a file. This can be a link to another page or a link to a file in the cloud.',
+ 'attachments_link_name' => 'Link Name',
+ 'attachment_link' => 'Attachment link',
+ 'attachments_link_url' => 'Link to file',
+ 'attachments_link_url_hint' => 'Url of site or file',
+ 'attach' => 'Attach',
+ 'attachments_insert_link' => 'Add Attachment Link to Page',
+ 'attachments_edit_file' => 'Edit File',
+ 'attachments_edit_file_name' => 'File Name',
+ 'attachments_edit_drop_upload' => 'Drop files or click here to upload and overwrite',
+ 'attachments_order_updated' => 'Attachment order updated',
+ 'attachments_updated_success' => 'Attachment details updated',
+ 'attachments_deleted' => 'Attachment deleted',
+ 'attachments_file_uploaded' => 'File successfully uploaded',
+ 'attachments_file_updated' => 'File successfully updated',
+ 'attachments_link_attached' => 'Link successfully attached to page',
+ 'templates' => 'Templates',
+ 'templates_set_as_template' => 'Page is a template',
+ 'templates_explain_set_as_template' => 'You can set this page as a template so its contents be utilized when creating other pages. Other users will be able to use this template if they have view permissions for this page.',
+ 'templates_replace_content' => 'Replace page content',
+ 'templates_append_content' => 'Append to page content',
+ 'templates_prepend_content' => 'Prepend to page content',
+
+ // Profile View
+ 'profile_user_for_x' => 'User for :time',
+ 'profile_created_content' => 'Created Content',
+ 'profile_not_created_pages' => ':userName has not created any pages',
+ 'profile_not_created_chapters' => ':userName has not created any chapters',
+ 'profile_not_created_books' => ':userName has not created any books',
+ 'profile_not_created_shelves' => ':userName has not created any shelves',
+
+ // Comments
+ 'comment' => 'Comment',
+ 'comments' => 'Comments',
+ 'comment_add' => 'Add Comment',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Leave a comment here',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Save Comment',
+ 'comment_new' => 'New Comment',
+ 'comment_created' => 'commented :createDiff',
+ 'comment_updated' => 'Updated :updateDiff by :username',
+ 'comment_updated_indicator' => 'Updated',
+ 'comment_deleted_success' => 'Comment deleted',
+ 'comment_created_success' => 'Comment added',
+ 'comment_updated_success' => 'Comment updated',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Are you sure you want to delete this comment?',
+ 'comment_in_reply_to' => 'In reply to :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Here are the comments that have been left on this page. Comments can be added & managed when viewing the saved page.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Are you sure you want to delete this revision?',
+ 'revision_restore_confirm' => 'Are you sure you want to restore this revision? The current page contents will be replaced.',
+ 'revision_cannot_delete_latest' => 'Cannot delete the latest revision.',
+
+ // Copy view
+ 'copy_consider' => 'Please consider the below when copying content.',
+ 'copy_consider_permissions' => 'Custom permission settings will not be copied.',
+ 'copy_consider_owner' => 'You will become the owner of all copied content.',
+ 'copy_consider_images' => 'Page image files will not be duplicated & the original images will retain their relation to the page they were originally uploaded to.',
+ 'copy_consider_attachments' => 'Page attachments will not be copied.',
+ 'copy_consider_access' => 'A change of location, owner or permissions may result in this content being accessible to those previously without access.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Convert to Shelf',
+ 'convert_to_shelf_contents_desc' => 'You can convert this book to a new shelf with the same contents. Chapters contained within this book will be converted to new books. If this book contains any pages, that are not in a chapter, this book will be renamed and contain such pages, and this book will become part of the new shelf.',
+ 'convert_to_shelf_permissions_desc' => 'Any permissions set on this book will be copied to the new shelf and to all new child books that don\'t have their own permissions enforced. Note that permissions on shelves do not auto-cascade to content within, as they do for books.',
+ 'convert_book' => 'Convert Book',
+ 'convert_book_confirm' => 'Are you sure you want to convert this book?',
+ 'convert_undo_warning' => 'This cannot be as easily undone.',
+ 'convert_to_book' => 'Convert to Book',
+ 'convert_to_book_desc' => 'You can convert this chapter to a new book with the same contents. Any permissions set on this chapter will be copied to the new book but any inherited permissions, from the parent book, will not be copied which could lead to a change of access control.',
+ 'convert_chapter' => 'Convert Chapter',
+ 'convert_chapter_confirm' => 'Are you sure you want to convert this chapter?',
+
+ // References
+ 'references' => 'References',
+ 'references_none' => 'There are no tracked references to this item.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Watch',
+ 'watch_title_default' => 'Default Preferences',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignore',
+ 'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
+ 'watch_title_new' => 'New Pages',
+ 'watch_desc_new' => 'Notify when any new page is created within this item.',
+ 'watch_title_updates' => 'All Page Updates',
+ 'watch_desc_updates' => 'Notify upon all new pages and page changes.',
+ 'watch_desc_updates_page' => 'Notify upon all page changes.',
+ 'watch_title_comments' => 'All Page Updates & Comments',
+ 'watch_desc_comments' => 'Notify upon all new pages, page changes and new comments.',
+ 'watch_desc_comments_page' => 'Notify upon page changes and new comments.',
+ 'watch_change_default' => 'Change default notification preferences',
+ 'watch_detail_ignore' => 'Ignoring notifications',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/ku/errors.php b/lang/ku/errors.php
new file mode 100644
index 00000000000..20537d59f0c
--- /dev/null
+++ b/lang/ku/errors.php
@@ -0,0 +1,135 @@
+ 'You do not have permission to access the requested page.',
+ 'permissionJson' => 'You do not have permission to perform the requested action.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'A user with the email :email already exists but with different credentials.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'Email has already been confirmed, Try logging in.',
+ 'email_confirmation_invalid' => 'This confirmation token is not valid or has already been used, Please try registering again.',
+ 'email_confirmation_expired' => 'The confirmation token has expired, A new confirmation email has been sent.',
+ 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed',
+ 'ldap_fail_anonymous' => 'LDAP access failed using anonymous bind',
+ 'ldap_fail_authed' => 'LDAP access failed using given dn & password details',
+ 'ldap_extension_not_installed' => 'LDAP PHP extension not installed',
+ 'ldap_cannot_connect' => 'Cannot connect to ldap server, Initial connection failed',
+ 'saml_already_logged_in' => 'Already logged in',
+ 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.',
+ 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'oidc_already_logged_in' => 'Already logged in',
+ 'oidc_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'oidc_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'social_no_action_defined' => 'No action defined',
+ 'social_login_bad_response' => "Error received during :socialAccount login: \n:error",
+ 'social_account_in_use' => 'This :socialAccount account is already in use, Try logging in via the :socialAccount option.',
+ 'social_account_email_in_use' => 'The email :email is already in use. If you already have an account you can connect your :socialAccount account from your profile settings.',
+ 'social_account_existing' => 'This :socialAccount is already attached to your profile.',
+ 'social_account_already_used_existing' => 'This :socialAccount account is already used by another user.',
+ 'social_account_not_used' => 'This :socialAccount account is not linked to any users. Please attach it in your profile settings. ',
+ 'social_account_register_instructions' => 'If you do not yet have an account, You can register an account using the :socialAccount option.',
+ 'social_driver_not_found' => 'Social driver not found',
+ 'social_driver_not_configured' => 'Your :socialAccount social settings are not configured correctly.',
+ 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // System
+ 'path_not_writable' => 'File path :filePath could not be uploaded to. Ensure it is writable to the server.',
+ 'cannot_get_image_from_url' => 'Cannot get image from :url',
+ 'cannot_create_thumbs' => 'The server cannot create thumbnails. Please check you have the GD PHP extension installed.',
+ 'server_upload_limit' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+ 'server_post_limit' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.',
+ 'uploaded' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'An error occurred uploading the image',
+ 'image_upload_type_error' => 'The image type being uploaded is invalid',
+ 'image_upload_replace_type' => 'Image file replacements must be of the same type',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Drawing data could not be loaded. The drawing file might no longer exist or you may not have permission to access it.',
+
+ // Attachments
+ 'attachment_not_found' => 'Attachment not found',
+ 'attachment_upload_error' => 'An error occurred uploading the attachment file',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Failed to save draft. Ensure you have internet connection before saving this page',
+ 'page_draft_delete_fail' => 'Failed to delete page draft and fetch current page saved content',
+ 'page_custom_home_deletion' => 'Cannot delete a page while it is set as a homepage',
+
+ // Entities
+ 'entity_not_found' => 'Entity not found',
+ 'bookshelf_not_found' => 'Shelf not found',
+ 'book_not_found' => 'Book not found',
+ 'page_not_found' => 'Page not found',
+ 'chapter_not_found' => 'Chapter not found',
+ 'selected_book_not_found' => 'The selected book was not found',
+ 'selected_book_chapter_not_found' => 'The selected Book or Chapter was not found',
+ 'guests_cannot_save_drafts' => 'Guests cannot save drafts',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'You cannot delete the only admin',
+ 'users_cannot_delete_guest' => 'You cannot delete the guest user',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'This role cannot be edited',
+ 'role_system_cannot_be_deleted' => 'This role is a system role and cannot be deleted',
+ 'role_registration_default_cannot_delete' => 'This role cannot be deleted while set as the default registration role',
+ 'role_cannot_remove_only_admin' => 'This user is the only user assigned to the administrator role. Assign the administrator role to another user before attempting to remove it here.',
+
+ // Comments
+ 'comment_list' => 'An error occurred while fetching the comments.',
+ 'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.',
+ 'comment_add' => 'An error occurred while adding / updating the comment.',
+ 'comment_delete' => 'An error occurred while deleting the comment.',
+ 'empty_comment' => 'Cannot add an empty comment.',
+
+ // Error pages
+ '404_page_not_found' => 'Page Not Found',
+ 'sorry_page_not_found' => 'Sorry, The page you were looking for could not be found.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
+ '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' => 'Return to home',
+ 'error_occurred' => 'An Error Occurred',
+ 'app_down' => ':appName is down right now',
+ 'back_soon' => 'It will be back up soon.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'No authorization token found on the request',
+ 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect',
+ 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token',
+ 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
+ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
+ 'api_user_token_expired' => 'The authorization token used has expired',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'The URL does not match the configured allowed SSR hosts',
+];
diff --git a/lang/ku/notifications.php b/lang/ku/notifications.php
new file mode 100644
index 00000000000..563ac24e84d
--- /dev/null
+++ b/lang/ku/notifications.php
@@ -0,0 +1,29 @@
+ 'New comment on page: :pageName',
+ 'new_comment_intro' => 'A user has commented on a page in :appName:',
+ 'new_page_subject' => 'New page: :pageName',
+ 'new_page_intro' => 'A new page has been created in :appName:',
+ 'updated_page_subject' => 'Updated page: :pageName',
+ 'updated_page_intro' => 'A page has been updated in :appName:',
+ 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Page Name:',
+ 'detail_page_path' => 'Page Path:',
+ 'detail_commenter' => 'Commenter:',
+ 'detail_comment' => 'Comment:',
+ 'detail_created_by' => 'Created By:',
+ 'detail_updated_by' => 'Updated By:',
+
+ 'action_view_comment' => 'View Comment',
+ 'action_view_page' => 'View Page',
+
+ 'footer_reason' => 'This notification was sent to you because :link cover this type of activity for this item.',
+ 'footer_reason_link' => 'your notification preferences',
+];
diff --git a/resources/lang/th/pagination.php b/lang/ku/pagination.php
similarity index 100%
rename from resources/lang/th/pagination.php
rename to lang/ku/pagination.php
diff --git a/resources/lang/th/passwords.php b/lang/ku/passwords.php
similarity index 100%
rename from resources/lang/th/passwords.php
rename to lang/ku/passwords.php
diff --git a/lang/ku/preferences.php b/lang/ku/preferences.php
new file mode 100644
index 00000000000..f4459d738e4
--- /dev/null
+++ b/lang/ku/preferences.php
@@ -0,0 +1,52 @@
+ 'My Account',
+
+ 'shortcuts' => 'Shortcuts',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Here you can enable or disable keyboard system interface shortcuts, used for navigation and actions.',
+ 'shortcuts_customize_desc' => 'You can customize each of the shortcuts below. Just press your desired key combination after selecting the input for a shortcut.',
+ 'shortcuts_toggle_label' => 'Keyboard shortcuts enabled',
+ 'shortcuts_section_navigation' => 'Navigation',
+ 'shortcuts_section_actions' => 'Common Actions',
+ 'shortcuts_save' => 'Save Shortcuts',
+ 'shortcuts_overlay_desc' => 'Note: When shortcuts are enabled a helper overlay is available via pressing "?" which will highlight the available shortcuts for actions currently visible on the screen.',
+ 'shortcuts_update_success' => 'Shortcut preferences have been updated!',
+ 'shortcuts_overview_desc' => 'Manage keyboard shortcuts you can use to navigate the system user interface.',
+
+ 'notifications' => 'Notification Preferences',
+ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.',
+ 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own',
+ 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notify upon replies to my comments',
+ 'notifications_save' => 'Save Preferences',
+ 'notifications_update_success' => 'Notification preferences have been updated!',
+ 'notifications_watched' => 'Watched & Ignored Items',
+ 'notifications_watched_desc' => 'Below are the items that have custom watch preferences applied. To update your preferences for these, view the item then find the watch options in the sidebar.',
+
+ 'auth' => 'Access & Security',
+ 'auth_change_password' => 'Change Password',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Password has been updated!',
+
+ 'profile' => 'Profile Details',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'View Public Profile',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Delete Account',
+ 'delete_my_account' => 'Delete My Account',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/ku/settings.php b/lang/ku/settings.php
new file mode 100644
index 00000000000..c4d1eb136eb
--- /dev/null
+++ b/lang/ku/settings.php
@@ -0,0 +1,374 @@
+ 'Settings',
+ 'settings_save' => 'Save Settings',
+ 'system_version' => 'System Version',
+ 'categories' => 'Categories',
+
+ // App Settings
+ 'app_customization' => 'Customization',
+ 'app_features_security' => 'Features & Security',
+ 'app_name' => 'Application Name',
+ 'app_name_desc' => 'This name is shown in the header and in any system-sent emails.',
+ 'app_name_header' => 'Show name in header',
+ 'app_public_access' => 'Public Access',
+ 'app_public_access_desc' => 'Enabling this option will allow visitors, that are not logged-in, to access content in your BookStack instance.',
+ 'app_public_access_desc_guest' => 'Access for public visitors can be controlled through the "Guest" user.',
+ 'app_public_access_toggle' => 'Allow public access',
+ 'app_public_viewing' => 'Allow public viewing?',
+ 'app_secure_images' => 'Higher Security Image Uploads',
+ 'app_secure_images_toggle' => 'Enable higher security image uploads',
+ 'app_secure_images_desc' => 'For performance reasons, all images are public. This option adds a random, hard-to-guess string in front of image urls. Ensure directory indexes are not enabled to prevent easy access.',
+ 'app_default_editor' => 'Default Page Editor',
+ 'app_default_editor_desc' => 'Select which editor will be used by default when editing new pages. This can be overridden at a page level where permissions allow.',
+ 'app_custom_html' => 'Custom HTML Head Content',
+ 'app_custom_html_desc' => 'Any content added here will be inserted into the bottom of the section of every page. This is handy for overriding styles or adding analytics code.',
+ 'app_custom_html_disabled_notice' => 'Custom HTML head content is disabled on this settings page to ensure any breaking changes can be reverted.',
+ 'app_logo' => 'Application Logo',
+ 'app_logo_desc' => 'This is used in the application header bar, among other areas. This image should be 86px in height. Large images will be scaled down.',
+ 'app_icon' => 'Application Icon',
+ 'app_icon_desc' => 'This icon is used for browser tabs and shortcut icons. This should be a 256px square PNG image.',
+ '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::" 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' => 'Disable Comments',
+ 'app_disable_comments_toggle' => 'Disable comments',
+ 'app_disable_comments_desc' => 'Disables comments across all pages in the application. Existing comments are not shown.',
+
+ // Color settings
+ 'color_scheme' => 'Application Color Scheme',
+ 'color_scheme_desc' => 'Set the colors to use in the application user interface. Colors can be configured separately for dark and light modes to best fit the theme and ensure legibility.',
+ 'ui_colors_desc' => 'Set the application primary color and default link color. The primary color is mainly used for the header banner, buttons and interface decorations. The default link color is used for text-based links and actions, both within written content and in the application interface.',
+ 'app_color' => 'Primary Color',
+ 'link_color' => 'Default Link Color',
+ 'content_colors_desc' => 'Set colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'bookshelf_color' => 'Shelf Color',
+ 'book_color' => 'Book Color',
+ 'chapter_color' => 'Chapter Color',
+ 'page_color' => 'Page Color',
+ 'page_draft_color' => 'Page Draft Color',
+
+ // Registration Settings
+ 'reg_settings' => 'Registration',
+ 'reg_enable' => 'Enable Registration',
+ 'reg_enable_toggle' => 'Enable registration',
+ 'reg_enable_desc' => 'When registration is enabled user will be able to sign themselves up as an application user. Upon registration they are given a single, default user role.',
+ 'reg_default_role' => 'Default user role after registration',
+ 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_email_confirmation' => 'Email Confirmation',
+ 'reg_email_confirmation_toggle' => 'Require email confirmation',
+ 'reg_confirm_email_desc' => 'If domain restriction is used then email confirmation will be required and this option will be ignored.',
+ 'reg_confirm_restrict_domain' => 'Domain Restriction',
+ 'reg_confirm_restrict_domain_desc' => 'Enter a comma separated list of email domains you would like to restrict registration to. Users will be sent an email to confirm their address before being allowed to interact with the application. Note that users will be able to change their email addresses after successful registration.',
+ 'reg_confirm_restrict_domain_placeholder' => 'No restriction set',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Maintenance',
+ 'maint_image_cleanup' => 'Cleanup Images',
+ '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' => 'Also delete images that only exist in old page revisions',
+ 'maint_image_cleanup_run' => 'Run Cleanup',
+ 'maint_image_cleanup_warning' => ':count potentially unused images were found. Are you sure you want to delete these images?',
+ 'maint_image_cleanup_success' => ':count potentially unused images found and deleted!',
+ '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_regen_references' => 'Regenerate References',
+ 'maint_regen_references_desc' => 'This action will rebuild the cross-item reference index within the database. This is usually handled automatically but this action can be useful to index old content or content added via unofficial methods.',
+ 'maint_regen_references_success' => 'Reference index has been regenerated!',
+ 'maint_timeout_command_note' => 'Note: This action can take time to run, which can lead to timeout issues in some web environments. As an alternative, this action be performed using a terminal command.',
+
+ // 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_parent' => 'Parent',
+ '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 from the system, along with any child elements listed below, 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_restore_parent' => 'Restore Parent',
+ '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 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_table_related' => 'Related Item or Detail',
+ 'audit_table_ip' => 'IP Address',
+ 'audit_table_date' => 'Activity Date',
+ 'audit_date_from' => 'Date Range From',
+ 'audit_date_to' => 'Date Range To',
+
+ // Role Settings
+ 'roles' => 'Roles',
+ 'role_user_roles' => 'User Roles',
+ 'roles_index_desc' => 'Roles are used to group users & provide system permission to their members. When a user is a member of multiple roles the privileges granted will stack and the user will inherit all abilities.',
+ 'roles_x_users_assigned' => ':count user assigned|:count users assigned',
+ 'roles_x_permissions_provided' => ':count permission|:count permissions',
+ 'roles_assigned_users' => 'Assigned Users',
+ 'roles_permissions_provided' => 'Provided Permissions',
+ 'role_create' => 'Create New Role',
+ '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_edit' => 'Edit Role',
+ 'role_details' => 'Role Details',
+ 'role_name' => 'Role Name',
+ 'role_desc' => 'Short Description of Role',
+ 'role_mfa_enforced' => 'Requires Multi-Factor Authentication',
+ 'role_external_auth_id' => 'External Authentication IDs',
+ 'role_system' => 'System Permissions',
+ 'role_manage_users' => 'Manage users',
+ 'role_manage_roles' => 'Manage roles & role permissions',
+ 'role_manage_entity_permissions' => 'Manage all book, chapter & page permissions',
+ 'role_manage_own_entity_permissions' => 'Manage permissions on own book, chapter & pages',
+ 'role_manage_page_templates' => 'Manage page templates',
+ 'role_access_api' => 'Access system API',
+ 'role_manage_settings' => 'Manage app settings',
+ 'role_export_content' => 'Export content',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Change page editor',
+ 'role_notifications' => 'Receive & manage notifications',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Asset Permissions',
+ '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' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.',
+ 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.',
+ 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'All',
+ 'role_own' => 'Own',
+ 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to',
+ 'role_save' => 'Save Role',
+ 'role_users' => 'Users in this role',
+ 'role_users_none' => 'No users are currently assigned to this role',
+
+ // Users
+ 'users' => 'Users',
+ 'users_index_desc' => 'Create & manage individual user accounts within the system. User accounts are used for login and attribution of content & activity. Access permissions are primarily role-based but user content ownership, among other factors, may also affect permissions & access.',
+ 'user_profile' => 'User Profile',
+ 'users_add_new' => 'Add New User',
+ 'users_search' => 'Search Users',
+ 'users_latest_activity' => 'Latest Activity',
+ 'users_details' => 'User 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',
+ 'users_role_desc' => 'Select which roles this user will be assigned to. If a user is assigned to multiple roles the permissions from those roles will stack and they will receive all abilities of the assigned roles.',
+ 'users_password' => 'User Password',
+ 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 8 characters long.',
+ 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.',
+ 'users_send_invite_option' => 'Send user invite email',
+ 'users_external_auth_id' => 'External Authentication ID',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ '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_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_edit' => 'Edit User',
+ 'users_edit_profile' => 'Edit Profile',
+ 'users_avatar' => 'User Avatar',
+ 'users_avatar_desc' => 'Select an image to represent this user. This should be approx 256px square.',
+ 'users_preferred_language' => 'Preferred Language',
+ 'users_preferred_language_desc' => 'This option will change the language used for the user-interface of the application. This will not affect any user-created content.',
+ 'users_social_accounts' => 'Social Accounts',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not revoke previously authorized access. Revoke access from your profile settings on the connected social account.',
+ 'users_social_connect' => 'Connect Account',
+ 'users_social_disconnect' => 'Disconnect Account',
+ 'users_social_status_connected' => 'Connected',
+ 'users_social_status_disconnected' => 'Disconnected',
+ 'users_social_connected' => ':socialAccount account was successfully attached to your profile.',
+ 'users_social_disconnected' => ':socialAccount account was successfully disconnected from your profile.',
+ 'users_api_tokens' => 'API Tokens',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'No API tokens have been created for this user',
+ 'users_api_tokens_create' => 'Create Token',
+ 'users_api_tokens_expires' => 'Expires',
+ 'users_api_tokens_docs' => 'API Documentation',
+ 'users_mfa' => 'Multi-Factor Authentication',
+ 'users_mfa_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'users_mfa_x_methods' => ':count method configured|:count methods configured',
+ 'users_mfa_configure' => 'Configure Methods',
+
+ // API Tokens
+ 'user_api_token_create' => 'Create API Token',
+ 'user_api_token_name' => 'Name',
+ 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
+ 'user_api_token_expiry' => 'Expiry Date',
+ 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
+ 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
+ 'user_api_token' => 'API Token',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
+ 'user_api_token_secret' => 'Token Secret',
+ 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
+ 'user_api_token_created' => 'Token created :timeAgo',
+ 'user_api_token_updated' => 'Token updated :timeAgo',
+ 'user_api_token_delete' => 'Delete Token',
+ 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
+ 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks are a way to send data to external URLs when certain actions and events occur within the system which allows event-based integration with external platforms such as messaging or notification systems.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'Create New Webhook',
+ 'webhooks_none_created' => 'No webhooks have yet been created.',
+ 'webhooks_edit' => 'Edit Webhook',
+ 'webhooks_save' => 'Save Webhook',
+ 'webhooks_details' => 'Webhook Details',
+ 'webhooks_details_desc' => 'Provide a user friendly name and a POST endpoint as a location for the webhook data to be sent to.',
+ 'webhooks_events' => 'Webhook Events',
+ 'webhooks_events_desc' => 'Select all the events that should trigger this webhook to be called.',
+ 'webhooks_events_warning' => 'Keep in mind that these events will be triggered for all selected events, even if custom permissions are applied. Ensure that use of this webhook won\'t expose confidential content.',
+ 'webhooks_events_all' => 'All system events',
+ 'webhooks_name' => 'Webhook Name',
+ 'webhooks_timeout' => 'Webhook Request Timeout (Seconds)',
+ 'webhooks_endpoint' => 'Webhook Endpoint',
+ 'webhooks_active' => 'Webhook Active',
+ 'webhook_events_table_header' => 'Events',
+ 'webhooks_delete' => 'Delete Webhook',
+ 'webhooks_delete_warning' => 'This will fully delete this webhook, with the name \':webhookName\', from the system.',
+ 'webhooks_delete_confirm' => 'Are you sure you want to delete this webhook?',
+ 'webhooks_format_example' => 'Webhook Format Example',
+ 'webhooks_format_example_desc' => 'Webhook data is sent as a POST request to the configured endpoint as JSON following the format below. The "related_item" and "url" properties are optional and will depend on the type of event triggered.',
+ 'webhooks_status' => 'Webhook Status',
+ 'webhooks_last_called' => 'Last Called:',
+ 'webhooks_last_errored' => 'Last Errored:',
+ 'webhooks_last_error_message' => 'Last Error Message:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/ku/validation.php b/lang/ku/validation.php
new file mode 100644
index 00000000000..ff028525df3
--- /dev/null
+++ b/lang/ku/validation.php
@@ -0,0 +1,123 @@
+ '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.',
+ 'backup_codes' => 'The provided code is not valid or has already been used.',
+ 'before' => 'The :attribute must be a date before :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.',
+ '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',
+ 'file' => 'The :attribute must be provided as a valid file.',
+ 'filled' => 'The :attribute field is required.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ 'array' => 'The :attribute may not have more than :max items.',
+ ],
+ 'mimes' => 'The :attribute must be a file of type: :values.',
+ 'min' => [
+ 'numeric' => 'The :attribute must be at least :min.',
+ 'file' => 'The :attribute must be at least :min kilobytes.',
+ 'string' => 'The :attribute must be at least :min characters.',
+ 'array' => 'The :attribute must have at least :min items.',
+ ],
+ 'not_in' => 'The selected :attribute is invalid.',
+ 'not_regex' => 'The :attribute format is invalid.',
+ 'numeric' => 'The :attribute must be a number.',
+ 'regex' => 'The :attribute format is invalid.',
+ 'required' => 'The :attribute field is required.',
+ 'required_if' => 'The :attribute field is required when :other is :value.',
+ 'required_with' => 'The :attribute field is required when :values is present.',
+ 'required_with_all' => 'The :attribute field is required when :values is present.',
+ 'required_without' => 'The :attribute field is required when :values is not present.',
+ 'required_without_all' => 'The :attribute field is required when none of :values are present.',
+ 'same' => 'The :attribute and :other must match.',
+ 'safe_url' => 'The provided link may not be safe.',
+ 'size' => [
+ 'numeric' => 'The :attribute must be :size.',
+ 'file' => 'The :attribute must be :size kilobytes.',
+ 'string' => 'The :attribute must be :size characters.',
+ 'array' => 'The :attribute must contain :size items.',
+ ],
+ 'string' => 'The :attribute must be a string.',
+ 'timezone' => 'The :attribute must be a valid zone.',
+ 'totp' => 'The provided code is not valid or has expired.',
+ 'unique' => 'The :attribute has already been taken.',
+ 'url' => 'The :attribute format is invalid.',
+ 'uploaded' => 'The file could not be uploaded. The server may not accept files of this size.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Password confirmation required',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/lt/activities.php b/lang/lt/activities.php
new file mode 100644
index 00000000000..a808171bb6d
--- /dev/null
+++ b/lang/lt/activities.php
@@ -0,0 +1,140 @@
+ 'sukurtas puslapis',
+ 'page_create_notification' => 'Page successfully created',
+ 'page_update' => 'atnaujintas puslapis',
+ 'page_update_notification' => 'Page successfully updated',
+ 'page_delete' => 'ištrintas puslapis',
+ 'page_delete_notification' => 'Page successfully deleted',
+ 'page_restore' => 'atkurtas puslapis',
+ 'page_restore_notification' => 'Page successfully restored',
+ 'page_move' => 'perkeltas puslapis',
+ 'page_move_notification' => 'Page successfully moved',
+
+ // Chapters
+ 'chapter_create' => 'sukurtas skyrius',
+ 'chapter_create_notification' => 'Chapter successfully created',
+ 'chapter_update' => 'atnaujintas skyrius',
+ 'chapter_update_notification' => 'Chapter successfully updated',
+ 'chapter_delete' => 'ištrintas skyrius',
+ 'chapter_delete_notification' => 'Chapter successfully deleted',
+ 'chapter_move' => 'perkeltas skyrius',
+ 'chapter_move_notification' => 'Chapter successfully moved',
+
+ // Books
+ 'book_create' => 'sukurta knyga',
+ 'book_create_notification' => 'Book successfully created',
+ 'book_create_from_chapter' => 'converted chapter to book',
+ 'book_create_from_chapter_notification' => 'Chapter successfully converted to a book',
+ 'book_update' => 'atnaujinta knyga',
+ 'book_update_notification' => 'Book successfully updated',
+ 'book_delete' => 'ištrinta knyga',
+ 'book_delete_notification' => 'Book successfully deleted',
+ 'book_sort' => 'surūšiuota knyga',
+ 'book_sort_notification' => 'Book successfully re-sorted',
+
+ // Bookshelves
+ 'bookshelf_create' => 'created shelf',
+ 'bookshelf_create_notification' => 'Shelf successfully created',
+ 'bookshelf_create_from_book' => 'converted book to shelf',
+ 'bookshelf_create_from_book_notification' => 'Book successfully converted to a shelf',
+ 'bookshelf_update' => 'updated shelf',
+ 'bookshelf_update_notification' => 'Shelf successfully updated',
+ 'bookshelf_delete' => 'deleted shelf',
+ 'bookshelf_delete_notification' => 'Shelf successfully deleted',
+
+ // Revisions
+ 'revision_restore' => 'restored revision',
+ 'revision_delete' => 'deleted revision',
+ 'revision_delete_notification' => 'Revision successfully deleted',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" has been added to your favourites',
+ 'favourite_remove_notification' => '":name" has been removed from your favourites',
+
+ // Watching
+ 'watch_update_level_notification' => 'Watch preferences successfully updated',
+
+ // Auth
+ 'auth_login' => 'logged in',
+ 'auth_register' => 'registered as new user',
+ 'auth_password_reset_request' => 'requested user password reset',
+ 'auth_password_reset_update' => 'reset user password',
+ 'mfa_setup_method' => 'configured MFA method',
+ 'mfa_setup_method_notification' => 'Multi-factor method successfully configured',
+ 'mfa_remove_method' => 'removed MFA method',
+ 'mfa_remove_method_notification' => 'Multi-factor method successfully removed',
+
+ // Settings
+ 'settings_update' => 'updated settings',
+ 'settings_update_notification' => 'Settings successfully updated',
+ 'maintenance_action_run' => 'ran maintenance action',
+
+ // Webhooks
+ 'webhook_create' => 'created webhook',
+ 'webhook_create_notification' => 'Webhook successfully created',
+ 'webhook_update' => 'updated webhook',
+ 'webhook_update_notification' => 'Webhook successfully updated',
+ 'webhook_delete' => 'deleted webhook',
+ 'webhook_delete_notification' => 'Webhook successfully deleted',
+
+ // Imports
+ 'import_create' => 'created import',
+ 'import_create_notification' => 'Import successfully uploaded',
+ 'import_run' => 'updated import',
+ 'import_run_notification' => 'Content successfully imported',
+ 'import_delete' => 'deleted import',
+ 'import_delete_notification' => 'Import successfully deleted',
+
+ // Users
+ 'user_create' => 'created user',
+ 'user_create_notification' => 'User successfully created',
+ 'user_update' => 'updated user',
+ 'user_update_notification' => 'User successfully updated',
+ 'user_delete' => 'deleted user',
+ 'user_delete_notification' => 'User successfully removed',
+
+ // API Tokens
+ 'api_token_create' => 'created API token',
+ 'api_token_create_notification' => 'API token successfully created',
+ 'api_token_update' => 'updated API token',
+ 'api_token_update_notification' => 'API token successfully updated',
+ 'api_token_delete' => 'deleted API token',
+ 'api_token_delete_notification' => 'API token successfully deleted',
+
+ // Roles
+ 'role_create' => 'created role',
+ 'role_create_notification' => 'Role successfully created',
+ 'role_update' => 'updated role',
+ 'role_update_notification' => 'Role successfully updated',
+ 'role_delete' => 'deleted role',
+ 'role_delete_notification' => 'Role successfully deleted',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'emptied recycle bin',
+ 'recycle_bin_restore' => 'restored from recycle bin',
+ 'recycle_bin_destroy' => 'removed from recycle bin',
+
+ // Comments
+ 'commented_on' => 'pakomentavo',
+ 'comment_create' => 'added comment',
+ 'comment_update' => 'updated comment',
+ 'comment_delete' => 'deleted comment',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'atnaujinti leidimai',
+];
diff --git a/lang/lt/auth.php b/lang/lt/auth.php
new file mode 100644
index 00000000000..a2f7f466846
--- /dev/null
+++ b/lang/lt/auth.php
@@ -0,0 +1,117 @@
+ 'Šie įgaliojimai neatitinka mūsų įrašų.',
+ 'throttle' => 'Per daug prisijungimo bandymų. Prašome pabandyti dar kartą po :seconds sekundžių.',
+
+ // Login & Register
+ 'sign_up' => 'Užsiregistruoti',
+ 'log_in' => 'Prisijungti',
+ 'log_in_with' => 'Prisijungti su :socialDriver',
+ 'sign_up_with' => 'Užsiregistruoti su :socialDriver',
+ 'logout' => 'Atsijungti',
+
+ 'name' => 'Pavadinimas',
+ 'username' => 'Vartotojo vardas',
+ 'email' => 'Elektroninis paštas',
+ 'password' => 'Slaptažodis',
+ 'password_confirm' => 'Patvirtinti slaptažodį',
+ 'password_hint' => 'Must be at least 8 characters',
+ 'forgot_password' => 'Pamiršote slaptažodį?',
+ 'remember_me' => 'Prisimink mane',
+ 'ldap_email_hint' => 'Prašome įvesti elektroninį paštą, kad galėtume naudotis šia paskyra.',
+ 'create_account' => 'Sukurti paskyrą',
+ 'already_have_account' => 'Jau turite paskyrą?',
+ 'dont_have_account' => 'Neturite paskyros?',
+ 'social_login' => 'Socialinis prisijungimas',
+ 'social_registration' => 'Socialinė registracija',
+ 'social_registration_text' => 'Užsiregistruoti ir prisijungti naudojantis kita paslauga.',
+
+ 'register_thanks' => 'Ačiū, kad užsiregistravote!',
+ 'register_confirm' => 'Prašome patikrinti savo elektroninį paštą ir paspausti patvirtinimo mygtuką, kad gautumėte leidimą į :appName.',
+ 'registrations_disabled' => 'Registracijos šiuo metu negalimos',
+ 'registration_email_domain_invalid' => 'Elektroninio pašto domenas neturi prieigos prie šios programos',
+ 'register_success' => 'Ačiū už prisijungimą! Dabar jūs užsiregistravote ir prisijungėte.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Attempting Login',
+ 'auto_init_starting_desc' => 'We\'re contacting your authentication system to start the login process. If there\'s no progress after 5 seconds you can try clicking the link below.',
+ 'auto_init_start_link' => 'Proceed with authentication',
+
+ // Password Reset
+ 'reset_password' => 'Pakeisti slaptažodį',
+ 'reset_password_send_instructions' => 'Įveskite savo elektroninį paštą žemiau ir jums bus išsiųstas elektroninis laiškas su slaptažodžio nustatymo nuoroda.',
+ 'reset_password_send_button' => 'Atsiųsti atsatymo nuorodą',
+ 'reset_password_sent' => 'Slaptažodžio nustatymo nuoroda bus išsiųsta :email jeigu elektroninio pašto adresas bus rastas sistemoje.',
+ 'reset_password_success' => 'Jūsų slaptažodis buvo sėkmingai atnaujintas.',
+ 'email_reset_subject' => 'Atnaujinti jūsų :appName slaptažodį',
+ 'email_reset_text' => 'Šį laišką gaunate, nes mes gavome slaptažodžio atnaujinimo užklausą iš jūsų paskyros.',
+ 'email_reset_not_requested' => 'Jeigu jums nereikia slaptažodžio atnaujinimo, tolimesnių veiksmų atlikti nereikia.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Patvirtinkite savo elektroninį paštą :appName',
+ 'email_confirm_greeting' => 'Ačiū už prisijungimą prie :appName!',
+ 'email_confirm_text' => 'Prašome patvirtinti savo elektroninio pašto adresą paspaudus mygtuką žemiau:',
+ 'email_confirm_action' => 'Patvirtinkite elektroninį paštą',
+ 'email_confirm_send_error' => 'Būtinas elektroninio laiško patviritnimas, bet sistema negali išsiųsti laiško. Susisiekite su administratoriumi, kad užtikrintumėte, jog elektroninis paštas atsinaujino teisingai.',
+ 'email_confirm_success' => 'Your email has been confirmed! You should now be able to login using this email address.',
+ 'email_confirm_resent' => 'Elektroninio pašto patvirtinimas persiųstas, prašome patikrinti pašto dėžutę.',
+ 'email_confirm_thanks' => 'Thanks for confirming!',
+ 'email_confirm_thanks_desc' => 'Please wait a moment while your confirmation is handled. If you are not redirected after 3 seconds press the "Continue" link below to proceed.',
+
+ 'email_not_confirmed' => 'Elektroninis paštas nepatvirtintas',
+ 'email_not_confirmed_text' => 'Jūsų elektroninis paštas dar vis nepatvirtintas.',
+ 'email_not_confirmed_click_link' => 'Prašome paspausti nuorodą elektroniniame pašte, kuri buvo išsiųsta iš karto po registracijos.',
+ 'email_not_confirmed_resend' => 'Jeigu nerandate elektroninio laiško, galite dar kartą išsiųsti patvirtinimo elektroninį laišką, pateikdami žemiau esančią formą.',
+ 'email_not_confirmed_resend_button' => 'Persiųsti patvirtinimo laišką',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Jūs buvote pakviestas prisijungti prie :appName!',
+ 'user_invite_email_greeting' => 'Paskyra buvo sukurta jums :appName.',
+ 'user_invite_email_text' => 'Paspauskite mygtuką žemiau, kad sukurtumėte paskyros slaptažodį ir gautumėte prieigą:',
+ 'user_invite_email_action' => 'Sukurti paskyros slaptažodį',
+ 'user_invite_page_welcome' => 'Sveiki atvykę į :appName!',
+ 'user_invite_page_text' => 'Norėdami galutinai pabaigti paskyrą ir gauti prieigą jums reikia nustatyti slaptažodį, kuris bus naudojamas prisijungiant prie :appName ateities vizitų metu.',
+ 'user_invite_page_confirm_button' => 'Patvirtinti slaptažodį',
+ 'user_invite_success_login' => 'Password set, you should now be able to login using your set password to access :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Setup Multi-Factor Authentication',
+ 'mfa_setup_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'mfa_setup_configured' => 'Already configured',
+ 'mfa_setup_reconfigure' => 'Reconfigure',
+ 'mfa_setup_remove_confirmation' => 'Are you sure you want to remove this multi-factor authentication method?',
+ 'mfa_setup_action' => 'Setup',
+ 'mfa_backup_codes_usage_limit_warning' => 'You have less than 5 backup codes remaining, Please generate and store a new set before you run out of codes to prevent being locked out of your account.',
+ 'mfa_option_totp_title' => 'Mobile App',
+ 'mfa_option_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Backup Codes',
+ 'mfa_option_backup_codes_desc' => 'Generates a set of one-time-use backup codes which you\'ll enter on login to verify your identity. Make sure to store these in a safe & secure place.',
+ 'mfa_gen_confirm_and_enable' => 'Confirm and Enable',
+ 'mfa_gen_backup_codes_title' => 'Backup Codes Setup',
+ 'mfa_gen_backup_codes_desc' => 'Store the below list of codes in a safe place. When accessing the system you\'ll be able to use one of the codes as a second authentication mechanism.',
+ 'mfa_gen_backup_codes_download' => 'Download Codes',
+ 'mfa_gen_backup_codes_usage_warning' => 'Each code can only be used once',
+ 'mfa_gen_totp_title' => 'Mobile App Setup',
+ 'mfa_gen_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Scan the QR code below using your preferred authentication app to get started.',
+ 'mfa_gen_totp_verify_setup' => 'Verify Setup',
+ 'mfa_gen_totp_verify_setup_desc' => 'Verify that all is working by entering a code, generated within your authentication app, in the input box below:',
+ 'mfa_gen_totp_provide_code_here' => 'Provide your app generated code here',
+ 'mfa_verify_access' => 'Verify Access',
+ 'mfa_verify_access_desc' => 'Your user account requires you to confirm your identity via an additional level of verification before you\'re granted access. Verify using one of your configured methods to continue.',
+ 'mfa_verify_no_methods' => 'No Methods Configured',
+ 'mfa_verify_no_methods_desc' => 'No multi-factor authentication methods could be found for your account. You\'ll need to set up at least one method before you gain access.',
+ 'mfa_verify_use_totp' => 'Verify using a mobile app',
+ 'mfa_verify_use_backup_codes' => 'Verify using a backup code',
+ 'mfa_verify_backup_code' => 'Backup Code',
+ 'mfa_verify_backup_code_desc' => 'Enter one of your remaining backup codes below:',
+ 'mfa_verify_backup_code_enter_here' => 'Enter backup code here',
+ 'mfa_verify_totp_desc' => 'Enter the code, generated using your mobile app, below:',
+ 'mfa_setup_login_notification' => 'Multi-factor method configured, Please now login again using the configured method.',
+];
diff --git a/lang/lt/common.php b/lang/lt/common.php
new file mode 100644
index 00000000000..bbafc347c59
--- /dev/null
+++ b/lang/lt/common.php
@@ -0,0 +1,115 @@
+ 'Atšaukti',
+ 'close' => 'Uždaryti',
+ 'confirm' => 'Patvirtinti',
+ 'back' => 'Grįžti',
+ 'save' => 'Išsaugoti',
+ 'continue' => 'Praleisti',
+ 'select' => 'Pasirinkti',
+ 'toggle_all' => 'Perjungti visus',
+ 'more' => 'Daugiau',
+
+ // Form Labels
+ 'name' => 'Pavadinimas',
+ 'description' => 'Apibūdinimas',
+ 'role' => 'Vaidmuo',
+ 'cover_image' => 'Viršelio nuotrauka',
+ 'cover_image_description' => 'This image should be approximately 440x250px although it will be flexibly scaled & cropped to fit the user interface in different scenarios as required, so actual dimensions for display will differ.',
+
+ // Actions
+ 'actions' => 'Veiksmai',
+ 'view' => 'Rodyti',
+ 'view_all' => 'Rodyti visus',
+ 'new' => 'New',
+ 'create' => 'Sukurti',
+ 'update' => 'Atnaujinti',
+ 'edit' => 'Redaguoti',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Rūšiuoti',
+ 'move' => 'Perkelti',
+ 'copy' => 'Kopijuoti',
+ 'reply' => 'Atsakyti',
+ 'delete' => 'Ištrinti',
+ 'delete_confirm' => 'Patvirtinti ištrynimą',
+ 'search' => 'Paieška',
+ 'search_clear' => 'Išvalyti paiešką',
+ 'reset' => 'Atsatyti',
+ 'remove' => 'Pašalinti',
+ 'add' => 'Pridėti',
+ 'configure' => 'Configure',
+ 'manage' => 'Manage',
+ 'fullscreen' => 'Visas ekranas',
+ 'favourite' => 'Favourite',
+ 'unfavourite' => 'Unfavourite',
+ 'next' => 'Next',
+ 'previous' => 'Previous',
+ 'filter_active' => 'Active Filter:',
+ 'filter_clear' => 'Clear Filter',
+ 'download' => 'Download',
+ 'open_in_tab' => 'Open in Tab',
+ 'open' => 'Open',
+
+ // Sort Options
+ 'sort_options' => 'Rūšiuoti pasirinkimus',
+ 'sort_direction_toggle' => 'Rūšiuoti krypties perjungimus',
+ 'sort_ascending' => 'Rūšiuoti didėjančia tvarka',
+ 'sort_descending' => 'Rūšiuoti mažėjančia tvarka',
+ 'sort_name' => 'Pavadinimas',
+ 'sort_default' => 'Numatytas',
+ 'sort_created_at' => 'Sukurta data',
+ 'sort_updated_at' => 'Atnaujinta data',
+
+ // Misc
+ 'deleted_user' => 'Ištrinti naudotoją',
+ 'no_activity' => 'Nėra veiklų',
+ 'no_items' => 'Nėra elementų',
+ 'back_to_top' => 'Grįžti į pradžią',
+ 'skip_to_main_content' => 'Skip to main content',
+ 'toggle_details' => 'Perjungti detales',
+ 'toggle_thumbnails' => 'Perjungti miniatūras',
+ 'details' => 'Detalės',
+ 'grid_view' => 'Tinklelio vaizdas',
+ 'list_view' => 'Sąrašas',
+ 'default' => 'Numatytas',
+ 'breadcrumb' => 'Duonos rėžis',
+ 'status' => 'Status',
+ 'status_active' => 'Active',
+ 'status_inactive' => 'Inactive',
+ 'never' => 'Never',
+ 'none' => 'None',
+
+ // Header
+ 'homepage' => 'Homepage',
+ 'header_menu_expand' => 'Plėsti antraštės meniu',
+ 'profile_menu' => 'Profilio meniu',
+ 'view_profile' => 'Rodyti porofilį',
+ 'edit_profile' => 'Redaguoti profilį',
+ 'dark_mode' => 'Tamsus rėžimas',
+ 'light_mode' => 'Šviesus rėžimas',
+ 'global_search' => 'Global Search',
+
+ // Layout tabs
+ 'tab_info' => 'Informacija',
+ 'tab_info_label' => 'Skirtukas: Rodyti antrinę informaciją',
+ 'tab_content' => 'Turinys',
+ 'tab_content_label' => 'Skirtukas: Rodyti pirminę informaciją',
+
+ // Email Content
+ 'email_action_help' => 'Jeigu kyla problemų spaudžiant :actionText: mygtuką, nukopijuokite ir įklijuokite URL į savo naršyklę.',
+ 'email_rights' => 'Visos teisės rezervuotos',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Privatumo politika',
+ 'terms_of_service' => 'Paslaugų teikimo paslaugos',
+
+ // OpenSearch
+ 'opensearch_description' => 'Search :appName',
+];
diff --git a/lang/lt/components.php b/lang/lt/components.php
new file mode 100644
index 00000000000..0b938a3dd04
--- /dev/null
+++ b/lang/lt/components.php
@@ -0,0 +1,46 @@
+ 'Nuotraukų pasirinkimas',
+ 'image_list' => 'Image List',
+ 'image_details' => 'Image Details',
+ 'image_upload' => 'Upload Image',
+ 'image_intro' => 'Here you can select and manage images that have been previously uploaded to the system.',
+ 'image_intro_upload' => 'Upload a new image by dragging an image file into this window, or by using the "Upload Image" button above.',
+ 'image_all' => 'Visi',
+ 'image_all_title' => 'Rodyti visas nuotraukas',
+ 'image_book_title' => 'Peržiūrėti nuotraukas, įkeltas į šią knygą',
+ 'image_page_title' => 'Peržiūrėti nuotraukas, įkeltas į šį puslapį',
+ 'image_search_hint' => 'Ieškoti pagal nuotraukos pavadinimą',
+ 'image_uploaded' => 'Įkelta :uploadedDate',
+ 'image_uploaded_by' => 'Uploaded by :userName',
+ 'image_uploaded_to' => 'Uploaded to :pageLink',
+ 'image_updated' => 'Updated :updateDate',
+ 'image_load_more' => 'Rodyti daugiau',
+ 'image_image_name' => 'Nuotraukos pavadinimas',
+ 'image_delete_used' => 'Ši nuotrauka yra naudojama puslapyje žemiau.',
+ 'image_delete_confirm_text' => 'Ar jūs esate tikri, kad norite ištrinti šią nuotrauką?',
+ 'image_select_image' => 'Pasirinkti nuotrauką',
+ 'image_dropzone' => 'Tempkite nuotraukas arba spauskite šia, kad įkeltumėte',
+ 'image_dropzone_drop' => 'Drop images here to upload',
+ 'images_deleted' => 'Nuotraukos ištrintos',
+ 'image_preview' => 'Nuotraukų peržiūra',
+ 'image_upload_success' => 'Nuotrauka įkelta sėkmingai',
+ 'image_update_success' => 'Nuotraukos detalės sėkmingai atnaujintos',
+ 'image_delete_success' => 'Nuotrauka sėkmingai ištrinti',
+ 'image_replace' => 'Replace Image',
+ 'image_replace_success' => 'Image file successfully updated',
+ 'image_rebuild_thumbs' => 'Regenerate Size Variations',
+ 'image_rebuild_thumbs_success' => 'Image size variations successfully rebuilt!',
+
+ // Code Editor
+ 'code_editor' => 'Redaguoti kodą',
+ 'code_language' => 'Kodo kalba',
+ 'code_content' => 'Kodo turinys',
+ 'code_session_history' => 'Sesijos istorija',
+ 'code_save' => 'Išsaugoti kodą',
+];
diff --git a/lang/lt/editor.php b/lang/lt/editor.php
new file mode 100644
index 00000000000..0541908195c
--- /dev/null
+++ b/lang/lt/editor.php
@@ -0,0 +1,182 @@
+ 'General',
+ 'advanced' => 'Advanced',
+ 'none' => 'None',
+ 'cancel' => 'Cancel',
+ 'save' => 'Save',
+ 'close' => 'Close',
+ 'apply' => 'Apply',
+ 'undo' => 'Undo',
+ 'redo' => 'Redo',
+ 'left' => 'Left',
+ 'center' => 'Center',
+ 'right' => 'Right',
+ 'top' => 'Top',
+ 'middle' => 'Middle',
+ 'bottom' => 'Bottom',
+ 'width' => 'Width',
+ 'height' => 'Height',
+ 'More' => 'More',
+ 'select' => 'Select...',
+
+ // Toolbar
+ 'formats' => 'Formats',
+ 'header_large' => 'Large Header',
+ 'header_medium' => 'Medium Header',
+ 'header_small' => 'Small Header',
+ 'header_tiny' => 'Tiny Header',
+ 'paragraph' => 'Paragraph',
+ 'blockquote' => 'Blockquote',
+ 'inline_code' => 'Inline code',
+ 'callouts' => 'Callouts',
+ 'callout_information' => 'Informacija',
+ 'callout_success' => 'Success',
+ 'callout_warning' => 'Warning',
+ 'callout_danger' => 'Danger',
+ 'bold' => 'Bold',
+ 'italic' => 'Italic',
+ 'underline' => 'Underline',
+ 'strikethrough' => 'Strikethrough',
+ 'superscript' => 'Superscript',
+ 'subscript' => 'Subscript',
+ 'text_color' => 'Text color',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Custom color',
+ 'remove_color' => 'Remove color',
+ 'background_color' => 'Background color',
+ 'align_left' => 'Align left',
+ 'align_center' => 'Align center',
+ 'align_right' => 'Align right',
+ 'align_justify' => 'Justify',
+ 'list_bullet' => 'Bullet list',
+ 'list_numbered' => 'Numbered list',
+ 'list_task' => 'Task list',
+ 'indent_increase' => 'Increase indent',
+ 'indent_decrease' => 'Decrease indent',
+ 'table' => 'Lentelė',
+ 'insert_image' => 'Insert image',
+ 'insert_image_title' => 'Insert/Edit Image',
+ 'insert_link' => 'Insert/edit link',
+ 'insert_link_title' => 'Insert/Edit Link',
+ 'insert_horizontal_line' => 'Insert horizontal line',
+ 'insert_code_block' => 'Insert code block',
+ 'edit_code_block' => 'Edit code block',
+ 'insert_drawing' => 'Insert/edit drawing',
+ 'drawing_manager' => 'Drawing manager',
+ 'insert_media' => 'Insert/edit media',
+ 'insert_media_title' => 'Insert/Edit Media',
+ 'clear_formatting' => 'Clear formatting',
+ 'source_code' => 'Source code',
+ 'source_code_title' => 'Source Code',
+ 'fullscreen' => 'Fullscreen',
+ 'image_options' => 'Image options',
+
+ // Tables
+ 'table_properties' => 'Table properties',
+ 'table_properties_title' => 'Table Properties',
+ 'delete_table' => 'Delete table',
+ 'table_clear_formatting' => 'Clear table formatting',
+ 'resize_to_contents' => 'Resize to contents',
+ 'row_header' => 'Row header',
+ 'insert_row_before' => 'Insert row before',
+ 'insert_row_after' => 'Insert row after',
+ 'delete_row' => 'Delete row',
+ 'insert_column_before' => 'Insert column before',
+ 'insert_column_after' => 'Insert column after',
+ 'delete_column' => 'Delete column',
+ 'table_cell' => 'Cell',
+ 'table_row' => 'Row',
+ 'table_column' => 'Column',
+ 'cell_properties' => 'Cell properties',
+ 'cell_properties_title' => 'Cell Properties',
+ 'cell_type' => 'Cell type',
+ 'cell_type_cell' => 'Cell',
+ 'cell_scope' => 'Scope',
+ 'cell_type_header' => 'Header cell',
+ 'merge_cells' => 'Merge cells',
+ 'split_cell' => 'Split cell',
+ 'table_row_group' => 'Row Group',
+ 'table_column_group' => 'Column Group',
+ 'horizontal_align' => 'Horizontal align',
+ 'vertical_align' => 'Vertical align',
+ 'border_width' => 'Border width',
+ 'border_style' => 'Border style',
+ 'border_color' => 'Border color',
+ 'row_properties' => 'Row properties',
+ 'row_properties_title' => 'Row Properties',
+ 'cut_row' => 'Cut row',
+ 'copy_row' => 'Copy row',
+ 'paste_row_before' => 'Paste row before',
+ 'paste_row_after' => 'Paste row after',
+ 'row_type' => 'Row type',
+ 'row_type_header' => 'Header',
+ 'row_type_body' => 'Body',
+ 'row_type_footer' => 'Footer',
+ 'alignment' => 'Alignment',
+ 'cut_column' => 'Cut column',
+ 'copy_column' => 'Copy column',
+ 'paste_column_before' => 'Paste column before',
+ 'paste_column_after' => 'Paste column after',
+ 'cell_padding' => 'Cell padding',
+ 'cell_spacing' => 'Cell spacing',
+ 'caption' => 'Caption',
+ 'show_caption' => 'Show caption',
+ 'constrain' => 'Constrain proportions',
+ 'cell_border_solid' => 'Solid',
+ 'cell_border_dotted' => 'Dotted',
+ 'cell_border_dashed' => 'Dashed',
+ 'cell_border_double' => 'Double',
+ 'cell_border_groove' => 'Groove',
+ 'cell_border_ridge' => 'Ridge',
+ 'cell_border_inset' => 'Inset',
+ 'cell_border_outset' => 'Outset',
+ 'cell_border_none' => 'None',
+ 'cell_border_hidden' => 'Hidden',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Source',
+ 'alt_desc' => 'Alternative description',
+ 'embed' => 'Embed',
+ 'paste_embed' => 'Paste your embed code below:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Text to display',
+ 'title' => 'Title',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Atverti nuorodą',
+ 'open_link_in' => 'Atverti nuorodą...',
+ 'open_link_current' => 'Current window',
+ 'open_link_new' => 'Naujame lange',
+ 'remove_link' => 'Pašalinti nuorodą',
+ 'insert_collapsible' => 'Insert collapsible block',
+ 'collapsible_unwrap' => 'Unwrap',
+ 'edit_label' => 'Edit label',
+ 'toggle_open_closed' => 'Toggle open/closed',
+ 'collapsible_edit' => 'Edit collapsible block',
+ 'toggle_label' => 'Toggle label',
+
+ // About view
+ 'about' => 'Apie redaktorių',
+ 'about_title' => 'Apie WYSIWYG redaktorių',
+ 'editor_license' => 'Editor License & Copyright',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'This editor is built using :tinyLink which is provided under the MIT license.',
+ 'editor_tiny_license_link' => 'The copyright and license details of TinyMCE can be found here.',
+ 'save_continue' => 'Išsaugoti puslapį ir tęsti',
+ 'callouts_cycle' => '(Keep pressing to toggle through types)',
+ 'link_selector' => 'Link to content',
+ 'shortcuts' => 'Shortcuts',
+ 'shortcut' => 'Shortcut',
+ 'shortcuts_intro' => 'The following shortcuts are available in the editor:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Description',
+];
diff --git a/lang/lt/entities.php b/lang/lt/entities.php
new file mode 100644
index 00000000000..6c4472d85a7
--- /dev/null
+++ b/lang/lt/entities.php
@@ -0,0 +1,476 @@
+ 'Neseniai sukurtas',
+ 'recently_created_pages' => 'Neseniai sukurti puslapiai',
+ 'recently_updated_pages' => 'Neseniai atnaujinti puslapiai',
+ 'recently_created_chapters' => 'Neseniai sukurti skyriai',
+ 'recently_created_books' => 'Neseniai sukurtos knygos',
+ 'recently_created_shelves' => 'Neseniai sukurtos lentynos',
+ 'recently_update' => 'Neseniai atnaujinta',
+ 'recently_viewed' => 'Neseniai peržiūrėta',
+ 'recent_activity' => 'Paskutiniai veiksmai',
+ 'create_now' => 'Sukurti vieną dabar',
+ 'revisions' => 'Pataisymai',
+ 'meta_revision' => 'Pataisymas #:revisionCount',
+ 'meta_created' => 'Sukurta :timeLength',
+ 'meta_created_name' => 'Sukurta :timeLength naudotojo :user',
+ 'meta_updated' => 'Atnaujintas :timeLength',
+ 'meta_updated_name' => 'Atnaujinta :timeLength naudotojo :user',
+ 'meta_owned_name' => 'Priklauso :user',
+ 'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
+ 'entity_select' => 'Pasirinkti subjektą',
+ 'entity_select_lack_permission' => 'You don\'t have the required permissions to select this item',
+ 'images' => 'Nuotraukos',
+ 'my_recent_drafts' => 'Naujausi išsaugoti juodraščiai',
+ 'my_recently_viewed' => 'Neseniai peržiūrėti',
+ 'my_most_viewed_favourites' => 'My Most Viewed Favourites',
+ 'my_favourites' => 'Mėgstamiausi',
+ 'no_pages_viewed' => 'Jūs neperžiūrėjote nei vieno puslapio',
+ 'no_pages_recently_created' => 'Nebuvos sukurta jokių puslapių',
+ 'no_pages_recently_updated' => 'Nebuvo atnaujinta jokių puslapių',
+ 'export' => 'Eksportuoti',
+ 'export_html' => 'Sudėtinis žiniatinklio failas',
+ 'export_pdf' => 'PDF failas',
+ 'export_text' => 'Paprastas failo tekstas',
+ 'export_md' => 'Markdown File',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Leidimai',
+ 'permissions_desc' => 'Set permissions here to override the default permissions provided by user roles.',
+ 'permissions_book_cascade' => 'Permissions set on books will automatically cascade to child chapters and pages, unless they have their own permissions defined.',
+ 'permissions_chapter_cascade' => 'Permissions set on chapters will automatically cascade to child pages, unless they have their own permissions defined.',
+ 'permissions_save' => 'Išsaugoti leidimus',
+ 'permissions_owner' => 'Savininkas',
+ 'permissions_role_everyone_else' => 'Everyone Else',
+ 'permissions_role_everyone_else_desc' => 'Set permissions for all roles not specifically overridden.',
+ 'permissions_role_override' => 'Override permissions for role',
+ 'permissions_inherit_defaults' => 'Inherit defaults',
+
+ // Search
+ 'search_results' => 'Ieškoti rezultatų',
+ 'search_total_results_found' => ':count rastas rezultatas|:count iš viso rezultatų rasta',
+ 'search_clear' => 'Išvalyti paiešką',
+ 'search_no_pages' => 'Nėra puslapių pagal šią paiešką',
+ 'search_for_term' => 'Ieškoti pagal :term',
+ 'search_more' => 'Daugiau rezultatų',
+ 'search_advanced' => 'Išplėstinė paieška',
+ 'search_terms' => 'Ieškoti terminų',
+ 'search_content_type' => 'Turinio tipas',
+ 'search_exact_matches' => 'Tikslūs atitikmenys',
+ 'search_tags' => 'Žymių paieškos',
+ 'search_options' => 'Parinktys',
+ 'search_viewed_by_me' => 'Mano peržiūrėta',
+ 'search_not_viewed_by_me' => 'Mano neperžiūrėta',
+ 'search_permissions_set' => 'Nustatyti leidimus',
+ 'search_created_by_me' => 'Mano sukurta',
+ 'search_updated_by_me' => 'Mano atnaujinimas',
+ 'search_owned_by_me' => 'Priklauso man',
+ 'search_date_options' => 'Datos parinktys',
+ 'search_updated_before' => 'Atnaujinta prieš',
+ 'search_updated_after' => 'Atnaujinta po',
+ 'search_created_before' => 'Sukurta prieš',
+ 'search_created_after' => 'Sukurta po',
+ 'search_set_date' => 'Nustatyti datą',
+ 'search_update' => 'Atnaujinti paiešką',
+
+ // Shelves
+ 'shelf' => 'Lentyna',
+ 'shelves' => 'Lentynos',
+ 'x_shelves' => ':count lentyna|:count lentynos',
+ 'shelves_empty' => 'Nebuvo sukurtos jokios lentynos',
+ 'shelves_create' => 'Sukurti naują lentyną',
+ 'shelves_popular' => 'Populiarios lentynos',
+ 'shelves_new' => 'Naujos lentynos',
+ 'shelves_new_action' => 'Nauja lentyna',
+ 'shelves_popular_empty' => 'Populiariausios knygos pasirodys čia.',
+ 'shelves_new_empty' => 'Visai neseniai sukurtos lentynos pasirodys čia.',
+ 'shelves_save' => 'Išsaugoti lenyną',
+ 'shelves_books' => 'Knygos šioje lentynoje',
+ 'shelves_add_books' => 'Pridėti knygas į šią lentyną',
+ 'shelves_drag_books' => 'Drag books below to add them to this shelf',
+ 'shelves_empty_contents' => 'Ši lentyną neturi jokių pridėtų knygų',
+ 'shelves_edit_and_assign' => 'Redaguoti lentyną, kad pridėti knygų',
+ 'shelves_edit_named' => 'Edit Shelf :name',
+ 'shelves_edit' => 'Edit Shelf',
+ 'shelves_delete' => 'Delete Shelf',
+ 'shelves_delete_named' => 'Delete Shelf :name',
+ 'shelves_delete_explain' => "This will delete the shelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Are you sure you want to delete this shelf?',
+ 'shelves_permissions' => 'Shelf Permissions',
+ 'shelves_permissions_updated' => 'Shelf Permissions Updated',
+ 'shelves_permissions_active' => 'Shelf Permissions Active',
+ 'shelves_permissions_cascade_warning' => 'Permissions on shelves do not automatically cascade to contained books. This is because a book can exist on multiple shelves. Permissions can however be copied down to child books using the option found below.',
+ 'shelves_permissions_create' => 'Shelf create permissions are only used for copying permissions to child books using the action below. They do not control the ability to create books.',
+ 'shelves_copy_permissions_to_books' => 'Kopijuoti leidimus knygoms',
+ 'shelves_copy_permissions' => 'Kopijuoti leidimus',
+ 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this shelf to all books contained within. Before activating, ensure any changes to the permissions of this shelf have been saved.',
+ 'shelves_copy_permission_success' => 'Shelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'Knyga',
+ 'books' => 'Knygos',
+ 'x_books' => ':count knyga|:count knygos',
+ 'books_empty' => 'Nebuvo sukurta jokių knygų',
+ 'books_popular' => 'Populiarios knygos',
+ 'books_recent' => 'Naujos knygos',
+ 'books_new' => 'Naujos knygos',
+ 'books_new_action' => 'Nauja knyga',
+ 'books_popular_empty' => 'Čia pasirodys pačios populiariausios knygos.',
+ 'books_new_empty' => 'Čia pasirodys naujausios sukurtos knygos',
+ 'books_create' => 'Sukurti naują knygą',
+ 'books_delete' => 'Ištrinti knygą',
+ 'books_delete_named' => 'Ištrinti knygą :bookName',
+ 'books_delete_explain' => 'Tai ištrins knygą su pavadinimu \':bookName\'. Visi puslapiai ir skyriai bus pašalinti.',
+ 'books_delete_confirmation' => 'Ar jūs esate tikri, kad norite ištrinti šią knygą?',
+ 'books_edit' => 'Redaguoti knygą',
+ 'books_edit_named' => 'Redaguoti knygą :bookName',
+ 'books_form_book_name' => 'Knygos pavadinimas',
+ 'books_save' => 'Išsaugoti knygą',
+ 'books_permissions' => 'Knygos leidimas',
+ 'books_permissions_updated' => 'Knygos leidimas atnaujintas',
+ 'books_empty_contents' => 'Jokių puslapių ar skyrių nebuvo skurta šiai knygai',
+ 'books_empty_create_page' => 'Sukurti naują puslapį',
+ 'books_empty_sort_current_book' => 'Rūšiuoti dabartinę knygą',
+ 'books_empty_add_chapter' => 'Pridėti skyrių',
+ 'books_permissions_active' => 'Knygos leidimas aktyvus',
+ 'books_search_this' => 'Ieškoti šioje knygoje',
+ 'books_navigation' => 'Knygos naršymas',
+ 'books_sort' => 'Rūšiuoti pagal knygos turinį',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Rūšiuoti knygą :bookName',
+ 'books_sort_name' => 'Rūšiuoti pagal vardą',
+ 'books_sort_created' => 'Rūšiuoti pagal sukūrimo datą',
+ 'books_sort_updated' => 'Rūšiuoti pagal atnaujinimo datą',
+ 'books_sort_chapters_first' => 'Skyriaus pradžia',
+ 'books_sort_chapters_last' => 'Skyriaus pabaiga',
+ 'books_sort_show_other' => 'Rodyti kitas knygas',
+ 'books_sort_save' => 'Išsaugoti naują įsakymą',
+ 'books_sort_show_other_desc' => 'Add other books here to include them in the sort operation, and allow easy cross-book reorganisation.',
+ 'books_sort_move_up' => 'Move Up',
+ 'books_sort_move_down' => 'Move Down',
+ 'books_sort_move_prev_book' => 'Move to Previous Book',
+ 'books_sort_move_next_book' => 'Move to Next Book',
+ 'books_sort_move_prev_chapter' => 'Move Into Previous Chapter',
+ 'books_sort_move_next_chapter' => 'Move Into Next Chapter',
+ 'books_sort_move_book_start' => 'Move to Start of Book',
+ 'books_sort_move_book_end' => 'Move to End of Book',
+ 'books_sort_move_before_chapter' => 'Move to Before Chapter',
+ 'books_sort_move_after_chapter' => 'Move to After Chapter',
+ 'books_copy' => 'Copy Book',
+ 'books_copy_success' => 'Book successfully copied',
+
+ // Chapters
+ 'chapter' => 'Skyrius',
+ 'chapters' => 'Skyriai',
+ 'x_chapters' => ':count skyrius|:count skyriai',
+ 'chapters_popular' => 'Populiarūs skyriai',
+ 'chapters_new' => 'Naujas skyrius',
+ 'chapters_create' => 'Sukurti naują skyrių',
+ 'chapters_delete' => 'Ištrinti skyrių',
+ 'chapters_delete_named' => 'Ištrinti skyrių :chapterName',
+ 'chapters_delete_explain' => 'Tai ištrins skyrių su pavadinimu \':chapterName\. Visi puslapiai, esantys šiame skyriuje, taip pat bus ištrinti.',
+ 'chapters_delete_confirm' => 'Ar esate tikri, jog norite ištrinti šį skyrių?',
+ 'chapters_edit' => 'Redaguoti skyrių',
+ 'chapters_edit_named' => 'Redaguoti skyrių :chapterName',
+ 'chapters_save' => 'Išsaugoti skyrių',
+ 'chapters_move' => 'Perkelti skyrių',
+ 'chapters_move_named' => 'Perkelti skyrių :chapterName',
+ 'chapters_copy' => 'Copy Chapter',
+ 'chapters_copy_success' => 'Chapter successfully copied',
+ 'chapters_permissions' => 'Skyriaus leidimai',
+ 'chapters_empty' => 'Šiuo metu skyriuje nėra puslapių',
+ 'chapters_permissions_active' => 'Skyriaus leidimai aktyvūs',
+ 'chapters_permissions_success' => 'Skyriaus leidimai atnaujinti',
+ 'chapters_search_this' => 'Ieškoti šio skyriaus',
+ 'chapter_sort_book' => 'Sort Book',
+
+ // Pages
+ 'page' => 'Puslapis',
+ 'pages' => 'Puslapiai',
+ 'x_pages' => ':count puslapis|:count puslapiai',
+ 'pages_popular' => 'Populiarūs puslapiai',
+ 'pages_new' => 'Naujas puslapis',
+ 'pages_attachments' => 'Priedai',
+ 'pages_navigation' => 'Puslapių navigacija',
+ 'pages_delete' => 'Ištrinti puslapį',
+ 'pages_delete_named' => 'Ištrinti puslapį :pageName',
+ 'pages_delete_draft_named' => 'Ištrinti juodraščio puslapį :pageName',
+ 'pages_delete_draft' => 'Ištrinti juodraščio puslapį',
+ 'pages_delete_success' => 'Puslapis ištrintas',
+ 'pages_delete_draft_success' => 'Juodraščio puslapis ištrintas',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Ar esate tikri, kad norite ištrinti šį puslapį?',
+ 'pages_delete_draft_confirm' => 'Ar esate tikri, kad norite ištrinti šį juodraščio puslapį?',
+ 'pages_editing_named' => 'Redaguojamas puslapis :pageName',
+ 'pages_edit_draft_options' => 'Juodrasčio pasirinkimai',
+ 'pages_edit_save_draft' => 'Išsaugoti juodraštį',
+ 'pages_edit_draft' => 'Redaguoti juodraščio puslapį',
+ 'pages_editing_draft' => 'Redaguojamas juodraštis',
+ 'pages_editing_page' => 'Redaguojamas puslapis',
+ 'pages_edit_draft_save_at' => 'Juodraštis išsaugotas',
+ 'pages_edit_delete_draft' => 'Ištrinti juodraštį',
+ 'pages_edit_delete_draft_confirm' => 'Are you sure you want to delete your draft page changes? All of your changes, since the last full save, will be lost and the editor will be updated with the latest page non-draft save state.',
+ 'pages_edit_discard_draft' => 'Išmesti juodraštį',
+ 'pages_edit_switch_to_markdown' => 'Switch to Markdown Editor',
+ 'pages_edit_switch_to_markdown_clean' => '(Clean Content)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stable Content)',
+ 'pages_edit_switch_to_wysiwyg' => 'Switch to WYSIWYG Editor',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Nustatyti keitimo žurnalą',
+ 'pages_edit_enter_changelog_desc' => 'Įveskite trumpus, jūsų atliktus, pokyčių aprašymus',
+ 'pages_edit_enter_changelog' => 'Įeiti į keitimo žurnalą',
+ 'pages_editor_switch_title' => 'Switch Editor',
+ 'pages_editor_switch_are_you_sure' => 'Are you sure you want to change the editor for this page?',
+ 'pages_editor_switch_consider_following' => 'Consider the following when changing editors:',
+ 'pages_editor_switch_consideration_a' => 'Once saved, the new editor option will be used by any future editors, including those that may not be able to change editor type themselves.',
+ 'pages_editor_switch_consideration_b' => 'This can potentially lead to a loss of detail and syntax in certain circumstances.',
+ 'pages_editor_switch_consideration_c' => 'Tag or changelog changes, made since last save, won\'t persist across this change.',
+ 'pages_save' => 'Išsaugoti puslapį',
+ 'pages_title' => 'Puslapio antraštė',
+ 'pages_name' => 'Puslapio pavadinimas',
+ 'pages_md_editor' => 'Redaguotojas',
+ 'pages_md_preview' => 'Peržiūra',
+ 'pages_md_insert_image' => 'Įterpti nuotrauką',
+ 'pages_md_insert_link' => 'Įterpti subjekto nuorodą',
+ 'pages_md_insert_drawing' => 'Įterpti piešinį',
+ 'pages_md_show_preview' => 'Show preview',
+ 'pages_md_sync_scroll' => 'Sync preview scroll',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Unsaved Drawing Found',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'Puslapio nėra skyriuje',
+ 'pages_move' => 'Perkelti puslapį',
+ 'pages_copy' => 'Nukopijuoti puslapį',
+ 'pages_copy_desination' => 'Nukopijuoti tikslą',
+ 'pages_copy_success' => 'Puslapis sėkmingai nukopijuotas',
+ 'pages_permissions' => 'Puslapio leidimai',
+ 'pages_permissions_success' => 'Puslapio leidimai atnaujinti',
+ 'pages_revision' => 'Peržiūra',
+ 'pages_revisions' => 'Puslapio peržiūros',
+ 'pages_revisions_desc' => 'Listed below are all the past revisions of this page. You can look back upon, compare, and restore old page versions if permissions allow. The full history of the page may not be fully reflected here since, depending on system configuration, old revisions could be auto-deleted.',
+ 'pages_revisions_named' => 'Peržiūros puslapio :pageName',
+ 'pages_revision_named' => 'Peržiūra puslapio :pageName',
+ 'pages_revision_restored_from' => 'Atkurta iš #:id; :summary',
+ 'pages_revisions_created_by' => 'Sukurta',
+ 'pages_revisions_date' => 'Peržiūros data',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revision Number',
+ 'pages_revisions_numbered' => 'Peržiūra #:id',
+ 'pages_revisions_numbered_changes' => 'Peržiūros #:id pokyčiai',
+ 'pages_revisions_editor' => 'Editor Type',
+ 'pages_revisions_changelog' => 'Keitimo žurnalas',
+ 'pages_revisions_changes' => 'Pakeitimai',
+ 'pages_revisions_current' => 'Dabartinė versija',
+ 'pages_revisions_preview' => 'Peržiūra',
+ 'pages_revisions_restore' => 'Atkurti',
+ 'pages_revisions_none' => 'Šis puslapis neturi peržiūrų',
+ 'pages_copy_link' => 'Kopijuoti nuorodą',
+ 'pages_edit_content_link' => 'Jump to section in editor',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Page Section Options',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Puslapio leidimai aktyvūs',
+ 'pages_initial_revision' => 'Pradinis skelbimas',
+ 'pages_references_update_revision' => 'System auto-update of internal links',
+ 'pages_initial_name' => 'Naujas puslapis',
+ 'pages_editing_draft_notification' => 'Dabar jūs redaguojate juodraštį, kuris paskutinį kartą buvo išsaugotas :timeDiff',
+ 'pages_draft_edited_notification' => 'Šis puslapis buvo redaguotas iki to laiko. Rekomenduojame jums išmesti šį juodraštį.',
+ 'pages_draft_page_changed_since_creation' => 'This page has been updated since this draft was created. It is recommended that you discard this draft or take care not to overwrite any page changes.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count naudotojai pradėjo redaguoti šį puslapį',
+ 'start_b' => ':userName pradėjo redaguoti šį puslapį',
+ 'time_a' => 'nuo puslapio paskutinio atnaujinimo',
+ 'time_b' => 'paskutinėmis :minCount minutėmis',
+ 'message' => ':start :time. Pasistenkite neperrašyti vienas kito atnaujinimų!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'Specifinis puslapis',
+ 'pages_is_template' => 'Puslapio šablonas',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'Puslapio žymos',
+ 'chapter_tags' => 'Skyriaus žymos',
+ 'book_tags' => 'Knygos žymos',
+ 'shelf_tags' => 'Lentynų žymos',
+ 'tag' => 'Žymos',
+ 'tags' => 'Žymės',
+ 'tags_index_desc' => 'Tags can be applied to content within the system to apply a flexible form of categorization. Tags can have both a key and value, with the value being optional. Once applied, content can then be queried using the tag name and value.',
+ 'tag_name' => 'Žymės pavadinimas',
+ 'tag_value' => 'Žymos vertė (neprivaloma)',
+ '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' => 'Pridėti kitą žymą',
+ 'tags_remove' => 'Pridėti kitą žymą',
+ 'tags_usages' => 'Total tag usages',
+ 'tags_assigned_pages' => 'Assigned to Pages',
+ 'tags_assigned_chapters' => 'Assigned to Chapters',
+ 'tags_assigned_books' => 'Assigned to Books',
+ 'tags_assigned_shelves' => 'Assigned to Shelves',
+ 'tags_x_unique_values' => ':count unique values',
+ 'tags_all_values' => 'Visos reikšmės',
+ 'tags_view_tags' => 'Peržiūrėti žymes',
+ 'tags_view_existing_tags' => 'View existing tags',
+ 'tags_list_empty_hint' => 'Tags can be assigned via the page editor sidebar or while editing the details of a book, chapter or shelf.',
+ 'attachments' => 'Priedai',
+ 'attachments_explain' => 'Įkelkite kelis failus arba pridėkite nuorodas savo puslapyje. Jie matomi puslapio šoninėje juostoje.',
+ 'attachments_explain_instant_save' => 'Pakeitimai čia yra išsaugomi akimirksniu.',
+ 'attachments_upload' => 'Įkelti failą',
+ 'attachments_link' => 'Pridėti nuorodą',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'Nustatyti nuorodą',
+ 'attachments_delete' => 'Ar esate tikri, kad norite ištrinti šį priedą?',
+ 'attachments_dropzone' => 'Drop files here to upload',
+ 'attachments_no_files' => 'Failai nebuvo įkelti',
+ 'attachments_explain_link' => 'Jūs galite pridėti nuorodas, jei nenorite įkelti failo. Tai gali būti nuoroda į kitą puslapį arba nuoroda į failą debesyje.',
+ 'attachments_link_name' => 'Nuorodos pavadinimas',
+ 'attachment_link' => 'Priedo nuoroda',
+ 'attachments_link_url' => 'Nuoroda į failą',
+ 'attachments_link_url_hint' => 'URL į failą',
+ 'attach' => 'Pridėti',
+ 'attachments_insert_link' => 'Pridėti priedo nuorodą į puslapį',
+ 'attachments_edit_file' => 'Redaguoti failą',
+ 'attachments_edit_file_name' => 'Failo pavadinimas',
+ 'attachments_edit_drop_upload' => 'Numesti failus arba spausti čia ir atsisiųsti ir perrašyti',
+ 'attachments_order_updated' => 'Atnaujintas priedų išsidėstymas',
+ 'attachments_updated_success' => 'Priedų detalės atnaujintos',
+ 'attachments_deleted' => 'Priedas ištrintas',
+ 'attachments_file_uploaded' => 'Failas sėkmingai įkeltas',
+ 'attachments_file_updated' => 'Failas sėkmingai atnaujintas',
+ 'attachments_link_attached' => 'Nuoroda sėkmingai pridėta puslapyje',
+ 'templates' => 'Šablonai',
+ 'templates_set_as_template' => 'Puslapis yra šablonas',
+ 'templates_explain_set_as_template' => 'Jūs galite nustatyti šį puslapį kaip šabloną, jo turinys bus panaudotas, kuriant kitus puslapius. Kiti naudotojai galės naudotis šiuo šablonu, jei turės peržiūros leidimą šiam puslapiui.',
+ 'templates_replace_content' => 'Pakeisti puslapio turinį',
+ 'templates_append_content' => 'Papildyti puslapio turinį',
+ 'templates_prepend_content' => 'Priklauso nuo puslapio turinio',
+
+ // Profile View
+ 'profile_user_for_x' => 'Naudotojas :time',
+ 'profile_created_content' => 'Sukurtas tyrinys',
+ 'profile_not_created_pages' => ':userName nesukūrė jokio puslapio',
+ 'profile_not_created_chapters' => ':userName nesukūrė jokio skyriaus',
+ 'profile_not_created_books' => ':userName nesukūrė jokios knygos',
+ 'profile_not_created_shelves' => ':userName nesukūrė jokių lentynų',
+
+ // Comments
+ 'comment' => 'Komentaras',
+ 'comments' => 'Komentarai',
+ 'comment_add' => 'Pridėti komentarą',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Palikite komentarą čia',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Išsaugoti komentarą',
+ 'comment_new' => 'Naujas komentaras',
+ 'comment_created' => 'Pakomentuota :createDiff',
+ 'comment_updated' => 'Atnaujinta :updateDiff pagal :username',
+ 'comment_updated_indicator' => 'Updated',
+ 'comment_deleted_success' => 'Komentaras ištrintas',
+ 'comment_created_success' => 'Komentaras pridėtas',
+ 'comment_updated_success' => 'Komentaras atnaujintas',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Esate tikri, kad norite ištrinti šį komentarą?',
+ 'comment_in_reply_to' => 'Atsakydamas į :commentId',
+ 'comment_reference' => 'Nuoroda',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Here are the comments that have been left on this page. Comments can be added & managed when viewing the saved page.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Esate tikri, kad norite ištrinti šią peržiūrą?',
+ 'revision_restore_confirm' => 'Esate tikri, kad norite atkurti šią peržiūrą? Dabartinis puslapio turinys bus pakeistas.',
+ 'revision_cannot_delete_latest' => 'Negalima išrinti vėliausios peržiūros',
+
+ // Copy view
+ 'copy_consider' => 'Please consider the below when copying content.',
+ 'copy_consider_permissions' => 'Custom permission settings will not be copied.',
+ 'copy_consider_owner' => 'You will become the owner of all copied content.',
+ 'copy_consider_images' => 'Page image files will not be duplicated & the original images will retain their relation to the page they were originally uploaded to.',
+ 'copy_consider_attachments' => 'Page attachments will not be copied.',
+ 'copy_consider_access' => 'A change of location, owner or permissions may result in this content being accessible to those previously without access.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Convert to Shelf',
+ 'convert_to_shelf_contents_desc' => 'You can convert this book to a new shelf with the same contents. Chapters contained within this book will be converted to new books. If this book contains any pages, that are not in a chapter, this book will be renamed and contain such pages, and this book will become part of the new shelf.',
+ 'convert_to_shelf_permissions_desc' => 'Any permissions set on this book will be copied to the new shelf and to all new child books that don\'t have their own permissions enforced. Note that permissions on shelves do not auto-cascade to content within, as they do for books.',
+ 'convert_book' => 'Convert Book',
+ 'convert_book_confirm' => 'Are you sure you want to convert this book?',
+ 'convert_undo_warning' => 'This cannot be as easily undone.',
+ 'convert_to_book' => 'Convert to Book',
+ 'convert_to_book_desc' => 'You can convert this chapter to a new book with the same contents. Any permissions set on this chapter will be copied to the new book but any inherited permissions, from the parent book, will not be copied which could lead to a change of access control.',
+ 'convert_chapter' => 'Convert Chapter',
+ 'convert_chapter_confirm' => 'Are you sure you want to convert this chapter?',
+
+ // References
+ 'references' => 'Nuorodos',
+ 'references_none' => 'There are no tracked references to this item.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Watch',
+ 'watch_title_default' => 'Default Preferences',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignore',
+ 'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
+ 'watch_title_new' => 'New Pages',
+ 'watch_desc_new' => 'Notify when any new page is created within this item.',
+ 'watch_title_updates' => 'All Page Updates',
+ 'watch_desc_updates' => 'Notify upon all new pages and page changes.',
+ 'watch_desc_updates_page' => 'Notify upon all page changes.',
+ 'watch_title_comments' => 'All Page Updates & Comments',
+ 'watch_desc_comments' => 'Notify upon all new pages, page changes and new comments.',
+ 'watch_desc_comments_page' => 'Notify upon page changes and new comments.',
+ 'watch_change_default' => 'Change default notification preferences',
+ 'watch_detail_ignore' => 'Ignoring notifications',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/lt/errors.php b/lang/lt/errors.php
new file mode 100644
index 00000000000..c962c27f2f5
--- /dev/null
+++ b/lang/lt/errors.php
@@ -0,0 +1,135 @@
+ 'Jūs neturite leidimo atidaryti šio puslapio.',
+ 'permissionJson' => 'Jūs neturite leidimo atlikti prašomo veiksmo.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Naudotojo elektroninis paštas :email jau egzistuoja, bet su kitokiais įgaliojimais.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'Elektroninis paštas jau buvo patvirtintas, pabandykite prisijungti.',
+ 'email_confirmation_invalid' => 'Šis patvirtinimo prieigos raktas negalioja arba jau buvo panaudotas, prašome bandykite vėl registruotis.',
+ 'email_confirmation_expired' => 'Šis patvirtinimo prieigos raktas baigė galioti, naujas patvirtinimo laiškas jau išsiųstas elektroniniu paštu.',
+ 'email_confirmation_awaiting' => 'Elektroninio pašto adresą paskyrai reikia patvirtinti',
+ 'ldap_fail_anonymous' => 'Nepavyko pasiekti LDAP naudojant anoniminį susiejimą',
+ 'ldap_fail_authed' => 'Nepavyko pasiekti LDAP naudojant išsamią dn ir slaptažodžio informaciją',
+ 'ldap_extension_not_installed' => 'LDAP PHP išplėtimas neįdiegtas',
+ 'ldap_cannot_connect' => 'Negalima prisijungti prie LDAP serverio, nepavyko prisijungti',
+ 'saml_already_logged_in' => 'Jau prisijungta',
+ 'saml_no_email_address' => 'Nerandamas šio naudotojo elektroninio pašto adresas išorinės autentifikavimo sistemos pateiktuose duomenyse',
+ 'saml_invalid_response_id' => 'Prašymas iš išorinės autentifikavimo sistemos nėra atpažintas proceso, kurį pradėjo ši programa. Naršymas po prisijungimo gali sukelti šią problemą.',
+ 'saml_fail_authed' => 'Prisijungimas, naudojant :system nepavyko, sistema nepateikė sėkmingo leidimo.',
+ 'oidc_already_logged_in' => 'Jau prisijungta',
+ 'oidc_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'oidc_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'social_no_action_defined' => 'Neapibrėžtas joks veiksmas',
+ 'social_login_bad_response' => "Error received during :socialAccount login: \n:error",
+ 'social_account_in_use' => 'Ši :socialAccount paskyra jau yra naudojama, pabandykite prisijungti per :socialAccount pasirinkimą.',
+ 'social_account_email_in_use' => 'Elektroninis paštas :email jau yra naudojamas. Jei jūs jau turite paskyrą, galite prijungti savo :socialAccount paskyrą iš savo profilio nustatymų.',
+ 'social_account_existing' => 'Šis :socialAccount jau yra pridėtas prie jūsų profilio.',
+ 'social_account_already_used_existing' => 'Ši :socialAccount paskyra jau yra naudojama kito naudotojo.',
+ 'social_account_not_used' => 'Ši :socialAccount paskyra nėra susieta su jokiais naudotojais. Prašome, pridėkite ją į savo profilio nustatymus.',
+ 'social_account_register_instructions' => 'Jei dar neturite paskyros, galite užregistruoti paskyrą, naudojant :socialAccount pasirinkimą.',
+ 'social_driver_not_found' => 'Socialinis diskas nerastas',
+ 'social_driver_not_configured' => 'Jūsų :socialAccount socaliniai nustatymai sukonfigūruoti neteisingai.',
+ 'invite_token_expired' => 'Ši kvietimo nuoroda baigė galioti. Vietoj to, jūs galite bandyti iš naujo nustatyti savo paskyros slaptažodį.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // System
+ 'path_not_writable' => 'Į failo kelią :filePath negalima įkelti. Įsitikinkite, kad jis yra įrašomas į serverį.',
+ 'cannot_get_image_from_url' => 'Negalima gauti vaizdo iš :url',
+ 'cannot_create_thumbs' => 'Serveris negali sukurti miniatiūros. Prašome patikrinkite, ar turite įdiegtą GD PHP plėtinį.',
+ 'server_upload_limit' => 'Serveris neleidžia įkelti tokio dydžio failų. Prašome bandykite mažesnį failo dydį.',
+ 'server_post_limit' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.',
+ 'uploaded' => 'Serveris neleidžia įkelti tokio dydžio failų. Prašome bandykite mažesnį failo dydį.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Įvyko klaida įkeliant vaizdą',
+ 'image_upload_type_error' => 'Vaizdo tipas, kurį norima įkelti, yra neteisingas',
+ 'image_upload_replace_type' => 'Image file replacements must be of the same type',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Drawing data could not be loaded. The drawing file might no longer exist or you may not have permission to access it.',
+
+ // Attachments
+ 'attachment_not_found' => 'Priedas nerastas',
+ 'attachment_upload_error' => 'An error occurred uploading the attachment file',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Juodraščio išsaugoti nepavyko. Įsitikinkite, jog turite interneto ryšį prieš išsaugant šį paslapį.',
+ 'page_draft_delete_fail' => 'Failed to delete page draft and fetch current page saved content',
+ 'page_custom_home_deletion' => 'Negalima ištrinti šio puslapio, kol jis yra nustatytas kaip pagrindinis puslapis',
+
+ // Entities
+ 'entity_not_found' => 'Subjektas nerastas',
+ 'bookshelf_not_found' => 'Shelf not found',
+ 'book_not_found' => 'Knyga nerasta',
+ 'page_not_found' => 'Puslapis nerastas',
+ 'chapter_not_found' => 'Skyrius nerastas',
+ 'selected_book_not_found' => 'Pasirinkta knyga nerasta',
+ 'selected_book_chapter_not_found' => 'Pasirinkta knyga ar skyrius buvo nerasti',
+ 'guests_cannot_save_drafts' => 'Svečiai negali išsaugoti juodraščių',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Negalite ištrinti vienintelio administratoriaus',
+ 'users_cannot_delete_guest' => 'Negalite ištrinti svečio naudotojo',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Šio vaidmens negalima redaguoti',
+ 'role_system_cannot_be_deleted' => 'Šis vaidmuo yra sistemos vaidmuo ir jo negalima ištrinti',
+ 'role_registration_default_cannot_delete' => 'Šis vaidmuo negali būti ištrintas, kai yra nustatytas kaip numatytasis registracijos vaidmuo',
+ 'role_cannot_remove_only_admin' => 'Šis naudotojas yra vienintelis naudotojas, kuriam yra paskirtas administratoriaus vaidmuo. Paskirkite administratoriaus vaidmenį kitam naudotojui prieš bandant jį pašalinti.',
+
+ // Comments
+ 'comment_list' => 'Gaunant komentarus įvyko klaida.',
+ 'cannot_add_comment_to_draft' => 'Negalite pridėti komentaro juodraštyje',
+ 'comment_add' => 'Klaido įvyko pridedant/atnaujinant komantarą.',
+ 'comment_delete' => 'Trinant komentarą įvyko klaida.',
+ 'empty_comment' => 'Negalite pridėti tuščio komentaro.',
+
+ // Error pages
+ '404_page_not_found' => 'Puslapis nerastas',
+ 'sorry_page_not_found' => 'Atleiskite, puslapis, kurio ieškote, nerastas.',
+ 'sorry_page_not_found_permission_warning' => 'Jei tikėjotės, kad šis puslapis egzistuoja, galbūt neturite leidimo jo peržiūrėti.',
+ 'image_not_found' => 'Paveikslėlis nerastas',
+ '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' => 'Grįžti į namus',
+ 'error_occurred' => 'Įvyko klaida',
+ 'app_down' => ':appName dabar yra apačioje',
+ 'back_soon' => 'Tai sugrįž greitai',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Užklausoje nerastas įgaliojimo prieigos raktas',
+ 'api_bad_authorization_format' => 'Užklausoje rastas prieigos raktas, tačiau formatas yra neteisingas',
+ 'api_user_token_not_found' => 'Pateiktam prieigos raktui nebuvo rastas atitinkamas API prieigos raktas',
+ 'api_incorrect_token_secret' => 'Pateiktas panaudoto API žetono slėpinys yra neteisingas',
+ 'api_user_no_api_permission' => 'API prieigos rakto savininkas neturi leidimo daryti API skambučius',
+ 'api_user_token_expired' => 'Prieigos rakto naudojimas baigė galioti',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Siunčiant bandymo email: įvyko klaida',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'The URL does not match the configured allowed SSR hosts',
+];
diff --git a/lang/lt/notifications.php b/lang/lt/notifications.php
new file mode 100644
index 00000000000..5f938c3970b
--- /dev/null
+++ b/lang/lt/notifications.php
@@ -0,0 +1,29 @@
+ 'New comment on page: :pageName',
+ 'new_comment_intro' => 'A user has commented on a page in :appName:',
+ 'new_page_subject' => 'Naujas puslapis: :pageName',
+ 'new_page_intro' => 'A new page has been created in :appName:',
+ 'updated_page_subject' => 'Updated page: :pageName',
+ 'updated_page_intro' => 'A page has been updated in :appName:',
+ 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Puslapio pavadinimas:',
+ 'detail_page_path' => 'Page Path:',
+ 'detail_commenter' => 'Commenter:',
+ 'detail_comment' => 'Komentaras:',
+ 'detail_created_by' => 'Sukurta:',
+ 'detail_updated_by' => 'Atnaujinta:',
+
+ 'action_view_comment' => 'View Comment',
+ 'action_view_page' => 'Peržiūrėti puslapį',
+
+ 'footer_reason' => 'This notification was sent to you because :link cover this type of activity for this item.',
+ 'footer_reason_link' => 'your notification preferences',
+];
diff --git a/lang/lt/pagination.php b/lang/lt/pagination.php
new file mode 100644
index 00000000000..f962f12bb3c
--- /dev/null
+++ b/lang/lt/pagination.php
@@ -0,0 +1,12 @@
+ '« Ankstesnis',
+ 'next' => 'Kitas »',
+
+];
diff --git a/lang/lt/passwords.php b/lang/lt/passwords.php
new file mode 100644
index 00000000000..e661c020fa3
--- /dev/null
+++ b/lang/lt/passwords.php
@@ -0,0 +1,15 @@
+ 'Slaptažodis privalo būti mažiausiai aštuonių simbolių ir atitikti patvirtinimą.',
+ 'user' => "Nerastas vartotojas pagal šį el. pašto adresą.",
+ 'token' => 'Slaptažodžio nustatymo raktas yra neteisingas šiam elektroninio pašto adresui.',
+ 'sent' => 'Elektroniniu paštu Jums išsiųsta slaptažodžio atkūrimo nuoroda!',
+ 'reset' => 'Jūsų slaptažodis buvo atkurtas!',
+
+];
diff --git a/lang/lt/preferences.php b/lang/lt/preferences.php
new file mode 100644
index 00000000000..7f591cdab57
--- /dev/null
+++ b/lang/lt/preferences.php
@@ -0,0 +1,52 @@
+ 'Mano paskyra',
+
+ 'shortcuts' => 'Shortcuts',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Here you can enable or disable keyboard system interface shortcuts, used for navigation and actions.',
+ 'shortcuts_customize_desc' => 'You can customize each of the shortcuts below. Just press your desired key combination after selecting the input for a shortcut.',
+ 'shortcuts_toggle_label' => 'Keyboard shortcuts enabled',
+ 'shortcuts_section_navigation' => 'Navigacija',
+ 'shortcuts_section_actions' => 'Common Actions',
+ 'shortcuts_save' => 'Save Shortcuts',
+ 'shortcuts_overlay_desc' => 'Note: When shortcuts are enabled a helper overlay is available via pressing "?" which will highlight the available shortcuts for actions currently visible on the screen.',
+ 'shortcuts_update_success' => 'Shortcut preferences have been updated!',
+ 'shortcuts_overview_desc' => 'Manage keyboard shortcuts you can use to navigate the system user interface.',
+
+ 'notifications' => 'Notification Preferences',
+ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.',
+ 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own',
+ 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notify upon replies to my comments',
+ 'notifications_save' => 'Išsaugoti nuostatas',
+ 'notifications_update_success' => 'Notification preferences have been updated!',
+ 'notifications_watched' => 'Watched & Ignored Items',
+ 'notifications_watched_desc' => 'Below are the items that have custom watch preferences applied. To update your preferences for these, view the item then find the watch options in the sidebar.',
+
+ 'auth' => 'Prieiga ir saugumas',
+ 'auth_change_password' => 'Pasikeisti slaptažodį',
+ 'auth_change_password_desc' => 'Pakeistas slaptažodis bus naudojamas prisijungti prie aplikacijos. Slaptažodis turi būti bent 8 simbolių ilgio.',
+ 'auth_change_password_success' => 'Slaptažodis atnaujintas!',
+
+ 'profile' => 'Profilio informacija',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'Rodyti viešąjį profilį',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Ištrinti paskyrą',
+ 'delete_my_account' => 'Ištrinti mano paskyrą',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/lt/settings.php b/lang/lt/settings.php
new file mode 100644
index 00000000000..f797e567ec1
--- /dev/null
+++ b/lang/lt/settings.php
@@ -0,0 +1,374 @@
+ 'Nustatymai',
+ 'settings_save' => 'Išsaugoti nustatymus',
+ 'system_version' => 'Sistemos versija',
+ 'categories' => 'Kategorijos',
+
+ // App Settings
+ 'app_customization' => 'Tinkinimas',
+ 'app_features_security' => 'Funkcijos ir sauga',
+ 'app_name' => 'Programos pavadinimas',
+ 'app_name_desc' => 'Šis pavadinimas yra rodomas antraštėje ir bet kuriuose sistemos siunčiamuose elektroniniuose laiškuose.',
+ 'app_name_header' => 'Rodyti pavadinimą antraštėje',
+ 'app_public_access' => 'Vieša prieiga',
+ 'app_public_access_desc' => 'Įjungus šią parinktį lankytojai, kurie nėra prisijungę, galės pasiekti BookStack egzemplioriaus turinį.',
+ 'app_public_access_desc_guest' => 'Prieiga viešiems lankytojams gali būti kontroliuojama per "Svečio" naudotoją.',
+ 'app_public_access_toggle' => 'Leisti viešą prieigą',
+ 'app_public_viewing' => 'Leisti viešą žiūrėjimą?',
+ 'app_secure_images' => 'Didesnio saugumo vaizdų įkėlimai',
+ 'app_secure_images_toggle' => 'Įgalinti didesnio saugumo vaizdų įkėlimus',
+ 'app_secure_images_desc' => 'Dėl veiklos priežasčių, visi vaizdai yra vieši. Šis pasirinkimas prideda atsitiktinę, sunkiai atspėjamą eilutę prieš vaizdo URL. Įsitikinkite, kad katalogų rodyklės neįgalintos, kad prieiga būtų lengvesnė.',
+ 'app_default_editor' => 'Default Page Editor',
+ 'app_default_editor_desc' => 'Select which editor will be used by default when editing new pages. This can be overridden at a page level where permissions allow.',
+ 'app_custom_html' => 'Pasirinktinis HTL antraštės turinys',
+ 'app_custom_html_desc' => 'Bet koks čia pridedamas turinys bus prisegamas apačioje kiekvieno puslapio skyriuje. Tai yra patogu svarbesniems stiliams arba pridedant analizės kodą.',
+ 'app_custom_html_disabled_notice' => 'Pasirinktinis HTML antraštės turinys yra išjungtas šiame nustatymų puslapyje užtikrinti, kad bet kokie negeri pokyčiai galėtų būti anuliuojami.',
+ 'app_logo' => 'Programos logotipas',
+ 'app_logo_desc' => 'This is used in the application header bar, among other areas. This image should be 86px in height. Large images will be scaled down.',
+ 'app_icon' => 'Application Icon',
+ 'app_icon_desc' => 'This icon is used for browser tabs and shortcut icons. This should be a 256px square PNG image.',
+ 'app_homepage' => 'Programos pagrindinis puslapis',
+ 'app_homepage_desc' => 'Pasirinkite vaizdą rodyti pagrindiniame paslapyje vietoj numatyto vaizdo. Puslapio leidimai yra ignoruojami pasirinktiems puslapiams.',
+ 'app_homepage_select' => 'Pasirinkti puslapį',
+ 'app_footer_links' => 'Poraštės nuorodos',
+ 'app_footer_links_desc' => 'Pridėkite nuorodas, kurias norite pridėti svetainės poraštėje. Jos bus rodomos daugelio puslapių apačioje, įskaitant ir tuos, kurie nereikalauja prisijungimo. Jūs galite naudoti etiktę "trans::", kad naudotis sistemos apibrėžtais vertimais. Pavyzdžiui: naudojimasis "trans::common.privacy_policy" bus pateiktas išverstu tekstu "Privatumo Politika" ir ""trans::common.terms_of_service" bus pateikta išverstu tekstu "Paslaugų Teikimo Sąlygos".',
+ 'app_footer_links_label' => 'Etiketės nuoroda',
+ 'app_footer_links_url' => 'Nuoroda URL',
+ 'app_footer_links_add' => 'Pridėti poraštes nuorodą',
+ 'app_disable_comments' => 'Išjungti komentarus',
+ 'app_disable_comments_toggle' => 'Išjungti komentarus',
+ 'app_disable_comments_desc' => 'Išjungti komentarus visuose programos puslapiuose. Esantys komentarai nerodomi.',
+
+ // Color settings
+ 'color_scheme' => 'Application Color Scheme',
+ 'color_scheme_desc' => 'Set the colors to use in the application user interface. Colors can be configured separately for dark and light modes to best fit the theme and ensure legibility.',
+ 'ui_colors_desc' => 'Set the application primary color and default link color. The primary color is mainly used for the header banner, buttons and interface decorations. The default link color is used for text-based links and actions, both within written content and in the application interface.',
+ 'app_color' => 'Primary Color',
+ 'link_color' => 'Default Link Color',
+ 'content_colors_desc' => 'Set colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'bookshelf_color' => 'Lentynos spalva',
+ 'book_color' => 'Knygos spalva',
+ 'chapter_color' => 'Skyriaus spalva',
+ 'page_color' => 'Puslapio spalva',
+ 'page_draft_color' => 'Puslapio juodraščio spalva',
+
+ // Registration Settings
+ 'reg_settings' => 'Registracija',
+ 'reg_enable' => 'Įgalinti registraciją',
+ 'reg_enable_toggle' => 'Įgalinti registraciją',
+ 'reg_enable_desc' => 'Kai registracija yra įgalinta, naudotojai gali prisiregistruoti kaip programos naudotojai. Registruojantis jiems suteikiamas vienintelis, nematytasis naudotojo vaidmuo.',
+ 'reg_default_role' => 'Numatytasis naudotojo vaidmuo po registracijos',
+ 'reg_enable_external_warning' => 'Ankstesnė parinktis nepaisoma, kai išorinis LDAP arba SAML autentifikavimas yra aktyvus. Vartotojo paskyra neegzistuojantiems nariams bus automatiškai sukurta, jei autentifikavimas naudojant naudojamą išorinę sistemą bus sėkmingas.',
+ 'reg_email_confirmation' => 'Elektroninio pašto patvirtinimas',
+ 'reg_email_confirmation_toggle' => 'Reikalauja elektroninio pašto patvirtinimo',
+ 'reg_confirm_email_desc' => 'Jei naudojamas domeno apribojimas, tada elektroninio pašto patvirtinimas bus reikalaujamas ir ši parinktis bus ignoruojama.',
+ 'reg_confirm_restrict_domain' => 'Domeno apribojimas',
+ 'reg_confirm_restrict_domain_desc' => 'Įveskite kableliais atskirtą elektroninio pašto domenų, kurių registravimą norite apriboti, sąrašą. Vartotojai išsiųs elektorinį laišką, kad patvirtintumėte jų adresą prieš leidžiant naudotis programa. Prisiminkite, kad vartotojai galės pakeisti savo elektroninius paštus po sėkmingos registracijos.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Nėra jokių apribojimų',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Priežiūra',
+ 'maint_image_cleanup' => 'Išvalykite vaizdus',
+ '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' => 'Taip pat ištrinkite vaizdus, kurie yra tik senuose puslapių pataisymuose',
+ 'maint_image_cleanup_run' => 'Paleisti valymą',
+ 'maint_image_cleanup_warning' => ':count potencialiai nepanaudoti vaizdai rasti. Ar esate tikri, kad norite ištrinti šiuos vaizdus?',
+ 'maint_image_cleanup_success' => ':count potencialiai nepanaudoti vaizdai rasti ir ištrinti!',
+ 'maint_image_cleanup_nothing_found' => 'Nerasta nepanaudotų vaizdų, niekas neištrinta!',
+ 'maint_send_test_email' => 'Siųsti bandomąjį elektroninį laišką',
+ 'maint_send_test_email_desc' => 'ai siunčia bandomąjį elektroninį laišką elektroninio pašto adresu, nurodytu jūsų profilyje.',
+ 'maint_send_test_email_run' => 'Siųsti bandomąjį elektroninį laišką',
+ 'maint_send_test_email_success' => 'Elektroninis laiškas išsiųstas :address',
+ 'maint_send_test_email_mail_subject' => 'Bandomasis elektroninis laiškas',
+ 'maint_send_test_email_mail_greeting' => 'Elektroninio laiško pristatymas veikia!',
+ 'maint_send_test_email_mail_text' => 'Sveikiname! Kadangi gavote šį elektroninio pašto pranešimą, jūsų elektroninio pašto nustatymai buvo sukonfigūruoti teisingai.',
+ 'maint_recycle_bin_desc' => 'Ištrintos lentynos, knygos, skyriai ir puslapiai yra perkeliami į šiukšliadėžę tam, kad jie galėtų būti atkurti arba ištrinti visam laikui. Senesni elementai, esantys šiukšliadėžėje, gali būti automatiškai panaikinti po tam tikro laiko priklausomai nuo sistemos konfigūracijos.',
+ 'maint_recycle_bin_open' => 'Atidaryti šiukšliadėžę',
+ 'maint_regen_references' => 'Regenerate References',
+ 'maint_regen_references_desc' => 'This action will rebuild the cross-item reference index within the database. This is usually handled automatically but this action can be useful to index old content or content added via unofficial methods.',
+ 'maint_regen_references_success' => 'Reference index has been regenerated!',
+ 'maint_timeout_command_note' => 'Note: This action can take time to run, which can lead to timeout issues in some web environments. As an alternative, this action be performed using a terminal command.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Šiukšliadėžė',
+ 'recycle_bin_desc' => 'Čia gali atkurti elementus, kurie buvo ištrinti arba pasirinkti pašalinti juos iš sistemos visam laikui. Šis sąrašas yra nefiltruotas kaip kitie panašus veiklos sąrašai sistemoje, kuriems yra taikomi leidimo filtrai.',
+ 'recycle_bin_deleted_item' => 'Ištrintas elementas',
+ 'recycle_bin_deleted_parent' => 'Parent',
+ 'recycle_bin_deleted_by' => 'Ištrynė',
+ 'recycle_bin_deleted_at' => 'Panaikinimo laikas',
+ 'recycle_bin_permanently_delete' => 'Ištrinti visam laikui',
+ 'recycle_bin_restore' => 'Atkurti',
+ 'recycle_bin_contents_empty' => 'Šiukšliadėžė šiuo metu yra tuščia',
+ 'recycle_bin_empty' => 'Ištuštinti šiukšliadėžę',
+ 'recycle_bin_empty_confirm' => 'Tai visam laikui sunaikins visus elementus, esančius šiukšliadėžėje, įskaitant kiekvieno elemento turinį. Ar esate tikri, jog norite ištuštinti šiukšliadėžę?',
+ 'recycle_bin_destroy_confirm' => 'This action will permanently delete this item from the system, along with any child elements listed below, and you will not be able to restore this content. Are you sure you want to permanently delete this item?',
+ 'recycle_bin_destroy_list' => 'Elementai panaikinimui',
+ 'recycle_bin_restore_list' => 'Elementai atkūrimui',
+ 'recycle_bin_restore_confirm' => 'Šis veiksmas atkurs ištrintą elementą ir perkels jį atgal į jo originalią vietą. Jei originali vieta buvo ištrinta ir šiuo metu yra šiukšliadėžėje, ji taip pat turės būti atkurta.',
+ 'recycle_bin_restore_deleted_parent' => 'Pagrindinis elementas buvo ištrintas. Šie elementai liks ištrinti iki tol, kol bus atkurtas pagrindinis elementas.',
+ 'recycle_bin_restore_parent' => 'Restore Parent',
+ 'recycle_bin_destroy_notification' => 'Ištrinti :count visus elementus, esančius šiukšliadėžėje.',
+ 'recycle_bin_restore_notification' => 'Atkurti :count visus elementus, esančius šiukšliadėžėje.',
+
+ // Audit Log
+ 'audit' => 'Audito seka',
+ 'audit_desc' => 'Ši audito seka rodo sąrašą veiklų, rastų sistemoje. Šis sąrašas yra nefiltruotas kaip kitie panašus veiklos sąrašai sistemoje, kuriems yra taikomi leidimo filtrai.',
+ 'audit_event_filter' => 'Įvykio filtras',
+ 'audit_event_filter_no_filter' => 'Be filtrų',
+ 'audit_deleted_item' => 'Ištrintas elementas',
+ 'audit_deleted_item_name' => 'Vardas: :name',
+ 'audit_table_user' => 'Naudotojas',
+ 'audit_table_event' => 'Įvykis',
+ 'audit_table_related' => 'Susijęs elementas arba detalė',
+ 'audit_table_ip' => 'IP Address',
+ 'audit_table_date' => 'Veiklos data',
+ 'audit_date_from' => 'Datos seka nuo',
+ 'audit_date_to' => 'Datos seka iki',
+
+ // Role Settings
+ 'roles' => 'Vaidmenys',
+ 'role_user_roles' => 'Naudotojo vaidmenys',
+ 'roles_index_desc' => 'Roles are used to group users & provide system permission to their members. When a user is a member of multiple roles the privileges granted will stack and the user will inherit all abilities.',
+ 'roles_x_users_assigned' => ':count user assigned|:count users assigned',
+ 'roles_x_permissions_provided' => ':count permission|:count permissions',
+ 'roles_assigned_users' => 'Assigned Users',
+ 'roles_permissions_provided' => 'Provided Permissions',
+ 'role_create' => 'Sukurti naują vaidmenį',
+ 'role_delete' => 'Ištrinti vaidmenį',
+ 'role_delete_confirm' => 'Tai ištrins vaidmenį vardu\':roleName\'.',
+ 'role_delete_users_assigned' => 'Šis vaidmuo turi :userCount naudotojus priskirtus prie jo. Jeigu norite naudotojus perkelti iš šio vaidmens, pasirinkite naują vaidmenį apačioje.',
+ 'role_delete_no_migration' => "Don't migrate users",
+ 'role_delete_sure' => 'Ar esate tikri, jog norite ištrinti šį vaidmenį?',
+ 'role_edit' => 'Redaguoti vaidmenį',
+ 'role_details' => 'Vaidmens detalės',
+ 'role_name' => 'Vaidmens pavadinimas',
+ 'role_desc' => 'Trumpas vaidmens aprašymas',
+ 'role_mfa_enforced' => 'Requires Multi-Factor Authentication',
+ 'role_external_auth_id' => 'Išorinio autentifikavimo ID',
+ 'role_system' => 'Sistemos leidimai',
+ 'role_manage_users' => 'Tvarkyti naudotojus',
+ 'role_manage_roles' => 'Tvarkyti vaidmenis ir vaidmenų leidimus',
+ 'role_manage_entity_permissions' => 'Tvarkyti visus knygų, skyrių ir puslapių leidimus',
+ 'role_manage_own_entity_permissions' => 'Tvarkyti savo knygos, skyriaus ir puslapių leidimus',
+ 'role_manage_page_templates' => 'Tvarkyti puslapių šablonus',
+ 'role_access_api' => 'Gauti prieigą prie sistemos API',
+ 'role_manage_settings' => 'Tvarkyti programos nustatymus',
+ 'role_export_content' => 'Export content',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Change page editor',
+ 'role_notifications' => 'Receive & manage notifications',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Nuosavybės leidimai',
+ 'roles_system_warning' => 'Būkite sąmoningi, kad prieiga prie bet kurio iš trijų leidimų viršuje gali leisti naudotojui pakeisti jų pačių privilegijas arba kitų privilegijas sistemoje. Paskirkite vaidmenis su šiais leidimais tik patikimiems naudotojams.',
+ 'role_asset_desc' => 'Šie leidimai kontroliuoja numatytą prieigą į nuosavybę, esančią sistemoje. Knygų, skyrių ir puslapių leidimai nepaisys šių leidimų.',
+ 'role_asset_admins' => 'Administratoriams automatiškai yra suteikiama prieiga prie viso turinio, tačiau šie pasirinkimai gali rodyti arba slėpti vartotojo sąsajos parinktis.',
+ 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Visi',
+ 'role_own' => 'Nuosavi',
+ 'role_controlled_by_asset' => 'Kontroliuojami nuosavybės, į kurią yra įkelti',
+ 'role_save' => 'Išsaugoti vaidmenį',
+ 'role_users' => 'Naudotojai šiame vaidmenyje',
+ 'role_users_none' => 'Šiuo metu prie šio vaidmens nėra priskirta naudotojų',
+
+ // Users
+ 'users' => 'Naudotojai',
+ 'users_index_desc' => 'Create & manage individual user accounts within the system. User accounts are used for login and attribution of content & activity. Access permissions are primarily role-based but user content ownership, among other factors, may also affect permissions & access.',
+ 'user_profile' => 'Naudotojo profilis',
+ 'users_add_new' => 'Pridėti naują naudotoją',
+ 'users_search' => 'Ieškoti naudotojų',
+ 'users_latest_activity' => 'Naujausia veikla',
+ 'users_details' => 'Naudotojo detalės',
+ 'users_details_desc' => 'Nustatykite rodomąjį vardą ir elektroninio pašto adresą šiam naudotojui. Šis elektroninio pašto adresas bus naudojamas prisijungimui prie aplikacijos.',
+ 'users_details_desc_no_email' => 'Nustatykite rodomąjį vardą šiam naudotojui, kad kiti galėtų jį atpažinti.',
+ 'users_role' => 'Naudotojo vaidmenys',
+ 'users_role_desc' => 'Pasirinkite, prie kokių vaidmenų bus priskirtas šis naudotojas. Jeigu naudotojas yra priskirtas prie kelių vaidmenų, leidimai iš tų vaidmenų susidės ir jie gaus visus priskirtų vaidmenų gebėjimus.',
+ 'users_password' => 'Naudotojo slaptažodis',
+ 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 8 characters long.',
+ 'users_send_invite_text' => 'Jūs galite pasirinkti nusiųsti šiam naudotojui kvietimą elektroniniu paštu, kuris leistų jiems patiems susikurti slaptažodį. Priešingu atveju slaptažodį galite sukurti patys.',
+ 'users_send_invite_option' => 'Nusiųsti naudotojui kvietimą elektroniniu paštu',
+ 'users_external_auth_id' => 'Išorinio autentifikavimo ID',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ 'users_system_public' => 'Šis naudotojas atstovauja svečius, kurie aplanko jūsų egzempliorių. Jis negali būti naudojamas prisijungimui, tačiau yra priskiriamas automatiškai.',
+ 'users_delete' => 'Ištrinti naudotoją',
+ 'users_delete_named' => 'Ištrinti naudotoją :userName',
+ 'users_delete_warning' => 'Tai pilnai ištrins šį naudotoją vardu \':userName\' iš sistemos.',
+ 'users_delete_confirm' => 'Ar esate tikri, jog norite ištrinti šį naudotoją?',
+ 'users_migrate_ownership' => 'Perkelti nuosavybę',
+ 'users_migrate_ownership_desc' => 'Pasirinkite naudotoją, jeigu norite, kad kitas naudotojas taptų visų elementų, šiuo metu priklausančių šiam naudotojui, savininku.',
+ 'users_none_selected' => 'Naudotojas nepasirinktas',
+ 'users_edit' => 'Redaguoti naudotoją',
+ 'users_edit_profile' => 'Redaguoti profilį',
+ 'users_avatar' => 'Naudotojo pseudoportretas',
+ 'users_avatar_desc' => 'Pasirinkite nuotrauką, pavaizduojančią šį naudotoją. Nuotrauka turi būti maždaug 256px kvadratas.',
+ 'users_preferred_language' => 'Norima kalba',
+ 'users_preferred_language_desc' => 'Ši parinktis pakeis kalbą, naudojamą naudotojo sąsajoje aplikacijoje. Tai neturės įtakos jokiam vartotojo sukurtam turiniui.',
+ 'users_social_accounts' => 'Socialinės paskyros',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Čia galite susieti savo kitas paskyras greitesniam ir lengvesniam prisijungimui. Atjungus paskyrą čia neatšaukiama anksčiau leista prieiga. Atšaukite prieigą iš profilio nustatymų prijungtoje socialinėje paskyroje.',
+ 'users_social_connect' => 'Susieti paskyrą',
+ 'users_social_disconnect' => 'Atskirti paskyrą',
+ 'users_social_status_connected' => 'Connected',
+ 'users_social_status_disconnected' => 'Disconnected',
+ 'users_social_connected' => ':socialAccount paskyra buvo sėkmingai susieta su jūsų profiliu.',
+ 'users_social_disconnected' => ':socialAccount paskyra buvo sėkmingai atskirta nuo jūsu profilio.',
+ 'users_api_tokens' => 'API sąsajos prieigos raktai',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'Jokie API sąsajos prieigos raktai nebuvo sukurti šiam naudotojui',
+ 'users_api_tokens_create' => 'Sukurti prieigos raktą',
+ 'users_api_tokens_expires' => 'Baigia galioti',
+ 'users_api_tokens_docs' => 'API dokumentacija',
+ 'users_mfa' => 'Multi-Factor Authentication',
+ 'users_mfa_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'users_mfa_x_methods' => ':count method configured|:count methods configured',
+ 'users_mfa_configure' => 'Configure Methods',
+
+ // API Tokens
+ 'user_api_token_create' => 'Sukurti API sąsajos prieigos raktą',
+ 'user_api_token_name' => 'Pavadinimas',
+ 'user_api_token_name_desc' => 'Suteikite savo prieigos raktui perskaitomą pavadinimą kaip priminimą ateičiai apie jo numatytą tikslą.',
+ 'user_api_token_expiry' => 'Galiojimo laikas',
+ 'user_api_token_expiry_desc' => 'Nustatykite datą kada šis prieigos raktas baigs galioti. Po šios datos, prašymai, atlikti naudojant šį prieigos raktą daugiau nebeveiks. Jeigu šį laukelį paliksite tuščią, galiojimo laikas bus nustatytas 100 metų į ateitį.',
+ 'user_api_token_create_secret_message' => 'Iš karto sukūrus šį prieigos raktą, bus sukurtas ir rodomas "Priegos rakto ID" ir "Prieigos rakto slėpinys". Prieigos rakto slėpinys bus rodomas tik vieną kartą, todėl būtinai nukopijuokite jį kur nors saugioje vietoje.',
+ 'user_api_token' => 'API sąsajos prieigos raktas',
+ 'user_api_token_id' => 'Prieigos rakto ID',
+ 'user_api_token_id_desc' => 'Tai neredaguojamas sistemos sugeneruotas identifikatorius šiam prieigos raktui, kurį reikės pateikti API užklausose.',
+ 'user_api_token_secret' => 'Priegos rakto slėpinys',
+ 'user_api_token_secret_desc' => 'Tai yra sistemos sukurtas šio priegos rakto slėpinys, kurią reikės pateikti API užklausose. Tai bus rodoma tik šį kartą, todėl nukopijuokite šią vertę į saugią vietą.',
+ 'user_api_token_created' => 'Prieigos raktas sukurtas :timeAgo',
+ 'user_api_token_updated' => 'Prieigos raktas atnaujintas :timeAgo',
+ 'user_api_token_delete' => 'Ištrinti prieigos raktą',
+ 'user_api_token_delete_warning' => 'Tai pilnai ištrins šį API sąsajos prieigos raktą pavadinimu \':tokenName\' iš sistemos.',
+ 'user_api_token_delete_confirm' => 'Ar esate tikri, jog norite ištrinti šį API sąsajos prieigos raktą?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks are a way to send data to external URLs when certain actions and events occur within the system which allows event-based integration with external platforms such as messaging or notification systems.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'Create New Webhook',
+ 'webhooks_none_created' => 'No webhooks have yet been created.',
+ 'webhooks_edit' => 'Edit Webhook',
+ 'webhooks_save' => 'Save Webhook',
+ 'webhooks_details' => 'Webhook Details',
+ 'webhooks_details_desc' => 'Provide a user friendly name and a POST endpoint as a location for the webhook data to be sent to.',
+ 'webhooks_events' => 'Webhook Events',
+ 'webhooks_events_desc' => 'Select all the events that should trigger this webhook to be called.',
+ 'webhooks_events_warning' => 'Keep in mind that these events will be triggered for all selected events, even if custom permissions are applied. Ensure that use of this webhook won\'t expose confidential content.',
+ 'webhooks_events_all' => 'All system events',
+ 'webhooks_name' => 'Webhook Name',
+ 'webhooks_timeout' => 'Webhook Request Timeout (Seconds)',
+ 'webhooks_endpoint' => 'Webhook Endpoint',
+ 'webhooks_active' => 'Webhook Active',
+ 'webhook_events_table_header' => 'Events',
+ 'webhooks_delete' => 'Delete Webhook',
+ 'webhooks_delete_warning' => 'This will fully delete this webhook, with the name \':webhookName\', from the system.',
+ 'webhooks_delete_confirm' => 'Are you sure you want to delete this webhook?',
+ 'webhooks_format_example' => 'Webhook Format Example',
+ 'webhooks_format_example_desc' => 'Webhook data is sent as a POST request to the configured endpoint as JSON following the format below. The "related_item" and "url" properties are optional and will depend on the type of event triggered.',
+ 'webhooks_status' => 'Webhook Status',
+ 'webhooks_last_called' => 'Last Called:',
+ 'webhooks_last_errored' => 'Last Errored:',
+ 'webhooks_last_error_message' => 'Last Error Message:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/lt/validation.php b/lang/lt/validation.php
new file mode 100644
index 00000000000..65e5936c2c4
--- /dev/null
+++ b/lang/lt/validation.php
@@ -0,0 +1,123 @@
+ ':attribute turi būti priimtas.',
+ 'active_url' => ':attribute nėra tinkamas URL.',
+ 'after' => ':attribute turi būti data po :date.',
+ 'alpha' => ':attribute turi būti sudarytis tik iš raidžių.',
+ 'alpha_dash' => ':attribute turi būti sudarytas tik iš raidžių, skaičių, brūkšnelių ir pabraukimų.',
+ 'alpha_num' => ':attribute turi būti sudarytas tik iš raidžių ir skaičių.',
+ 'array' => ':attribute turi būti masyvas.',
+ 'backup_codes' => 'The provided code is not valid or has already been used.',
+ 'before' => ':attribute turi būti data anksčiau negu :date.',
+ 'between' => [
+ 'numeric' => ':attribute turi būti tarp :min ir :max.',
+ 'file' => ':attribute turi būti tarp :min ir :max kilobaitų.',
+ 'string' => ':attribute turi būti tarp :min ir :max simbolių.',
+ 'array' => ':attribute turi turėti tarp :min ir :max elementų.',
+ ],
+ 'boolean' => ':attribute laukas turi būti tiesa arba melas.',
+ 'confirmed' => ':attribute patvirtinimas nesutampa.',
+ 'date' => ':attribute nėra tinkama data.',
+ 'date_format' => ':attribute neatitinka formato :format.',
+ 'different' => ':attribute ir :other turi būti skirtingi.',
+ 'digits' => ':attribute turi būti :digits skaitmenų.',
+ 'digits_between' => ':attribute turi būti tarp :min ir :max skaitmenų.',
+ 'email' => ':attribute turi būti tinkamas elektroninio pašto adresas.',
+ 'ends_with' => ':attribute turi pasibaigti vienu iš šių: :values',
+ 'file' => 'The :attribute must be provided as a valid file.',
+ 'filled' => ':attribute laukas yra privalomas.',
+ 'gt' => [
+ 'numeric' => ':attribute turi būti didesnis negu :value.',
+ 'file' => ':attribute turi būti didesnis negu :value kilobaitai.',
+ 'string' => ':attribute turi būti didesnis negu :value simboliai.',
+ 'array' => ':attribute turi turėti daugiau negu :value elementus.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute turi būti didesnis negu arba lygus :value.',
+ 'file' => ':attribute turi būti didesnis negu arba lygus :value kilobaitams.',
+ 'string' => ':attribute turi būti didesnis negu arba lygus :value simboliams.',
+ 'array' => ':attribute turi turėti :value elementus arba daugiau.',
+ ],
+ 'exists' => 'Pasirinktas :attribute yra klaidingas.',
+ 'image' => ':attribute turi būti paveikslėlis.',
+ 'image_extension' => ':attribute turi būti tinkamas ir palaikomas vaizdo plėtinys.',
+ 'in' => 'Pasirinktas :attribute yra klaidingas.',
+ 'integer' => ':attribute turi būti sveikasis skaičius.',
+ 'ip' => ':attribute turi būti tinkamas IP adresas.',
+ 'ipv4' => ':attribute turi būti tinkamas IPv4 adresas.',
+ 'ipv6' => ':attribute turi būti tinkamas IPv6 adresas.',
+ 'json' => ':attribute turi būti tinkama JSON eilutė.',
+ 'lt' => [
+ 'numeric' => ':attribute turi būti mažiau negu :value.',
+ 'file' => ':attribute turi būti mažiau negu :value kilobaitai.',
+ 'string' => ':attribute turi būti mažiau negu :value simboliai.',
+ 'array' => ':attribute turi turėti mažiau negu :value elementus.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute turi būti mažiau arba lygus :value.',
+ 'file' => ':attribute turi būti mažiau arba lygus :value kilobaitams.',
+ 'string' => ':attribute turi būti mažiau arba lygus :value simboliams.',
+ 'array' => ':attribute negali turėti daugiau negu :value elementų.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute negali būti didesnis negu :max.',
+ 'file' => ':attribute negali būti didesnis negu :max kilobaitai.',
+ 'string' => ':attribute negali būti didesnis negu :max simboliai.',
+ 'array' => ':attribute negali turėti daugiau negu :max elementų.',
+ ],
+ 'mimes' => ':attribute turi būti tipo failas: :values.',
+ 'min' => [
+ 'numeric' => ':attribute turi būti mažiausiai :min.',
+ 'file' => ':attribute turi būti mažiausiai :min kilobaitų.',
+ 'string' => ':attribute turi būti mažiausiai :min simbolių.',
+ 'array' => ':attribute turi turėti mažiausiai :min elementus.',
+ ],
+ 'not_in' => 'Pasirinktas :attribute yra klaidingas.',
+ 'not_regex' => ':attribute formatas yra klaidingas.',
+ 'numeric' => ':attribute turi būti skaičius.',
+ 'regex' => ':attribute formatas yra klaidingas.',
+ 'required' => ':attribute laukas yra privalomas.',
+ 'required_if' => ':attribute laukas yra privalomas kai :other yra :value.',
+ 'required_with' => ':attribute laukas yra privalomas kai :values yra.',
+ 'required_with_all' => ':attribute laukas yra privalomas kai :values yra.',
+ 'required_without' => ':attribute laukas yra privalomas kai nėra :values.',
+ 'required_without_all' => ':attribute laukas yra privalomas kai nėra nei vienos :values.',
+ 'same' => ':attribute ir :other turi sutapti.',
+ 'safe_url' => 'Pateikta nuoroda gali būti nesaugi.',
+ 'size' => [
+ 'numeric' => ':attribute turi būti :size.',
+ 'file' => ':attribute turi būti :size kilobaitų.',
+ 'string' => ':attribute turi būti :size simbolių.',
+ 'array' => ':attribute turi turėti :size elementus.',
+ ],
+ 'string' => ':attribute turi būti eilutė.',
+ 'timezone' => ':attribute turi būti tinkama zona.',
+ 'totp' => 'The provided code is not valid or has expired.',
+ 'unique' => ':attribute jau yra paimtas.',
+ 'url' => ':attribute formatas yra klaidingas.',
+ 'uploaded' => 'Šis failas negali būti įkeltas. Serveris gali nepriimti tokio dydžio failų.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Reikalingas slaptažodžio patvirtinimas',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/lv/activities.php b/lang/lv/activities.php
new file mode 100644
index 00000000000..38d9ae21766
--- /dev/null
+++ b/lang/lv/activities.php
@@ -0,0 +1,140 @@
+ 'izveidoja lapu',
+ 'page_create_notification' => 'Lapa veiksmīgi izveidota',
+ 'page_update' => 'atjaunoja lapu',
+ 'page_update_notification' => 'Lapa veiksmīgi atjaunināta',
+ 'page_delete' => 'izdzēsa lapu',
+ 'page_delete_notification' => 'Lapa veiksmīgi dzēsta',
+ 'page_restore' => 'atjaunoja lapu',
+ 'page_restore_notification' => 'Lapa veiksmīgi atjaunota',
+ 'page_move' => 'pārvietoja lapu',
+ 'page_move_notification' => 'Lapa veiksmīgi pārvietota',
+
+ // Chapters
+ 'chapter_create' => 'izveidoja nodaļu',
+ 'chapter_create_notification' => 'Nodaļa veiksmīgi izveidota',
+ 'chapter_update' => 'atjaunoja nodaļu',
+ 'chapter_update_notification' => 'Nodaļa veiksmīgi atjaunināta',
+ 'chapter_delete' => 'izdzēsa nodaļu',
+ 'chapter_delete_notification' => 'Nodaļa veiksmīgi dzēsta',
+ 'chapter_move' => 'pārvietoja nodaļu',
+ 'chapter_move_notification' => 'Nodaļa veiksmīgi pārvietota',
+
+ // Books
+ 'book_create' => 'izveidoja grāmatu',
+ 'book_create_notification' => 'Grāmata veiksmīgi izveidota',
+ 'book_create_from_chapter' => 'pārveidojā nodaļu par grāmatu',
+ 'book_create_from_chapter_notification' => 'Nodaļa veiksmīgi pārveidota par grāmatu',
+ 'book_update' => 'atjaunoja grāmatu',
+ 'book_update_notification' => 'Grāmata veiksmīgi atjaunināta',
+ 'book_delete' => 'izdzēsa grāmatu',
+ 'book_delete_notification' => 'Grāmata veiksmīgi dzēsta',
+ 'book_sort' => 'kārtoja grāmatu',
+ 'book_sort_notification' => 'Grāmata veiksmīgi pārkārtota',
+
+ // Bookshelves
+ 'bookshelf_create' => 'izveidoja plauktu',
+ 'bookshelf_create_notification' => 'Plaukts veiksmīgi izveidots',
+ 'bookshelf_create_from_book' => 'pārveidoja grāmatu par plauktu',
+ 'bookshelf_create_from_book_notification' => 'Grāmata veiksmīgi pārveidota par plauktu',
+ 'bookshelf_update' => 'atjaunoja plauktu',
+ 'bookshelf_update_notification' => 'Plaukts veiksmīgi atjaunināts',
+ 'bookshelf_delete' => 'izdzēsa plauktu',
+ 'bookshelf_delete_notification' => 'Plaukts veiksmīgi dzēsts',
+
+ // Revisions
+ 'revision_restore' => 'versija atjaunota',
+ 'revision_delete' => 'versija dzēsta',
+ 'revision_delete_notification' => 'Versija veiksmīgi dzēsta',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" ir pievienots jūsu favorītiem',
+ 'favourite_remove_notification' => '":name" ir izņemts no jūsu favorītiem',
+
+ // Watching
+ 'watch_update_level_notification' => 'Skatīšanas uzstādījumi veiksmīgi atjaunināti',
+
+ // Auth
+ 'auth_login' => 'pieteicies',
+ 'auth_register' => 'reģistrējies kā jauns lietotājs',
+ 'auth_password_reset_request' => 'pieprasīja lietotāja paroles atiestatīšanu',
+ 'auth_password_reset_update' => 'atiestatīja lietotāja paroli',
+ 'mfa_setup_method' => 'uzstādīja MFA metodi',
+ 'mfa_setup_method_notification' => '2FA funkcija aktivizēta',
+ 'mfa_remove_method' => 'noņēma MFA metodi',
+ 'mfa_remove_method_notification' => '2FA funkcija noņemta',
+
+ // Settings
+ 'settings_update' => 'atjaunoja uzstādījumus',
+ 'settings_update_notification' => 'Uzstādījums veiksmīgi atjaunināts',
+ 'maintenance_action_run' => 'veica apkopes darbību',
+
+ // Webhooks
+ 'webhook_create' => 'izveidoja webhook',
+ 'webhook_create_notification' => 'Webhook veiksmīgi izveidots',
+ 'webhook_update' => 'atjaunināja webhook',
+ 'webhook_update_notification' => 'Webhook veiksmīgi atjaunināts',
+ 'webhook_delete' => 'izdzēsa webhook',
+ 'webhook_delete_notification' => 'Webhook veiksmīgi izdzēsts',
+
+ // Imports
+ 'import_create' => 'izveidoja importu',
+ 'import_create_notification' => 'Imports veiksmīgi augšupielādēts',
+ 'import_run' => 'atjaunoja importu',
+ 'import_run_notification' => 'Saturs veiksmīgi importēts',
+ 'import_delete' => 'izdzēsa importu',
+ 'import_delete_notification' => 'Imports veiksmīgi dzēsts',
+
+ // Users
+ 'user_create' => 'izveidoja lietotāju',
+ 'user_create_notification' => 'Lietotājs veiksmīgi izveidots',
+ 'user_update' => 'atjaunoja lietotāju',
+ 'user_update_notification' => 'Lietotājs veiksmīgi atjaunināts',
+ 'user_delete' => 'dzēsa lietotāju',
+ 'user_delete_notification' => 'Lietotājs veiksmīgi dzēsts',
+
+ // API Tokens
+ 'api_token_create' => 'izveidoja API žetonu',
+ 'api_token_create_notification' => 'API žetons veiksmīgi izveidots',
+ 'api_token_update' => 'atjaunoja API žetonu',
+ 'api_token_update_notification' => 'API žetons veiksmīgi atjaunināts',
+ 'api_token_delete' => 'izdzēsa API žetonu',
+ 'api_token_delete_notification' => 'API žetons veiksmīgi dzēsts',
+
+ // Roles
+ 'role_create' => 'izveidoja lomu',
+ 'role_create_notification' => 'Loma veiksmīgi izveidota',
+ 'role_update' => 'atjaunoja lomu',
+ 'role_update_notification' => 'Loma veiksmīgi atjaunināta',
+ 'role_delete' => 'dzēsa lomu',
+ 'role_delete_notification' => 'Loma veiksmīgi dzēsta',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'iztukšoja atkritni',
+ 'recycle_bin_restore' => 'atjaunoja no atkritnes',
+ 'recycle_bin_destroy' => 'izdzēsa no atkritnes',
+
+ // Comments
+ 'commented_on' => 'komentēts',
+ 'comment_create' => 'pievienoja komentāru',
+ 'comment_update' => 'atjaunoja komentārju',
+ 'comment_delete' => 'dzēsa komentāru',
+
+ // Sort Rules
+ 'sort_rule_create' => 'izveidoja kārtošanas nosacījumu',
+ 'sort_rule_create_notification' => 'Kārtošanas nosacījums veiksmīgi izveidots',
+ 'sort_rule_update' => 'atjaunoja kārtošanas nosacījumu',
+ 'sort_rule_update_notification' => 'Kārtošanas nosacījums veiksmīgi atjaunots',
+ 'sort_rule_delete' => 'izdzēsa kārtošanas nosacījumu',
+ 'sort_rule_delete_notification' => 'Kārtošanas nosacījums veiksmīgi dzēsts',
+
+ // Other
+ 'permissions_update' => 'atjaunoja atļaujas',
+];
diff --git a/lang/lv/auth.php b/lang/lv/auth.php
new file mode 100644
index 00000000000..71b92ac0109
--- /dev/null
+++ b/lang/lv/auth.php
@@ -0,0 +1,117 @@
+ 'Šie reģistrācijas dati neatbilst mūsu ierakstiem.',
+ 'throttle' => 'Pārāk daudz pieteikšanās mēģinājumu. Lūdzu, mēģiniet vēlreiz pēc :seconds seconds.',
+
+ // Login & Register
+ 'sign_up' => 'Reģistrēties',
+ 'log_in' => 'Ielogoties',
+ 'log_in_with' => 'Ielogoties ar :socialDriver',
+ 'sign_up_with' => 'Pieteikties ar :socialDriver',
+ 'logout' => 'Iziet',
+
+ 'name' => 'Vārds',
+ 'username' => 'Lietotājvārds',
+ 'email' => 'E-pasts',
+ 'password' => 'Parole',
+ 'password_confirm' => 'Apstiprināt paroli',
+ 'password_hint' => 'Jābūt vismaz 8 rakstzīmēm',
+ 'forgot_password' => 'Aizmirsta parole?',
+ 'remember_me' => 'Atcerēties mani',
+ 'ldap_email_hint' => 'Lūdzu ievadiet e-pastu, kuru izmantosiet šim profilam.',
+ 'create_account' => 'Izveidot profilu',
+ 'already_have_account' => 'Jau ir profils?',
+ 'dont_have_account' => 'Nav profila?',
+ 'social_login' => 'Pieteikšanās ar sociālo tīklu profilu',
+ 'social_registration' => 'Reģistrēšanās ar sociālo profilu',
+ 'social_registration_text' => 'Reģistrēties vai pieteikties izmantojot citu servisu.',
+
+ 'register_thanks' => 'Paldies par reģistrāciju!',
+ 'register_confirm' => 'Lūdzu, pārbaudiet savu e-pastu un nospiediet apstiprināšanas pogu, lai piekļūtu :appName.',
+ 'registrations_disabled' => 'Reģistrācija ir izslēgta',
+ 'registration_email_domain_invalid' => 'E-pasta domēnam nav piekļuves pie šīs aplikācijas',
+ 'register_success' => 'Paldies par reģistrēšanos! Tagad varat pieslēgties.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Mēģina pierakstīties',
+ 'auto_init_starting_desc' => 'Sazināmies ar jūsu autentifikācijas sistēmu, lai uzsāktu pierakstīšanās procesu. Ja 5 sekunžu laikā nekas nav noticis, mēģiniet klikšķināt zemāk esošo saiti.',
+ 'auto_init_start_link' => 'Turpināt autentifikāciju',
+
+ // Password Reset
+ 'reset_password' => 'Atiestatīt paroli',
+ 'reset_password_send_instructions' => 'Ievadiet savu e-pastu zemāk un nosūtīsim e-pastu ar paroles atiestatīšanas saiti.',
+ 'reset_password_send_button' => 'Nosūtīt atiestatīšanas saiti',
+ 'reset_password_sent' => 'Paroles atiestatīšanas saite tiks nosūtīta uz :email, ja šāds e-pasts būs derīgs.',
+ 'reset_password_success' => 'Jūsu parole ir veiksmīgi atiestatīta.',
+ 'email_reset_subject' => 'Atiestatīt :appName paroli',
+ 'email_reset_text' => 'Jūs saņemat šo e-pastu, jo mēs saņēmām Jūsu profila paroles atiestatīšanas pieprasījumu.',
+ 'email_reset_not_requested' => 'Ja Jūs nepieprasījāt paroles atiestatīšanu, tad tālākas darbības nav nepieciešamas.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Apstiprinat savu :appName e-pastu',
+ 'email_confirm_greeting' => 'Paldies, ka pievienojāties :appName!',
+ 'email_confirm_text' => 'Lūdzu apstipriniet savu e-pastu nospiežot zemāk redzamo pogu:',
+ 'email_confirm_action' => 'Apstiprināt e-pastu',
+ 'email_confirm_send_error' => 'E-pasta apriprināšana ir nepieciešama, bet sistēma nevarēja e-pastu nosūtīt. Lūdzu sazinaties ar administratoru, lai pārliecinātos, ka e-pasts ir iestatīts pareizi.',
+ 'email_confirm_success' => 'Jūsu epasta adrese ir apstiprināta! Jums tagad jābūt iespējai pieslēgties, izmantojot šo epasta adresi.',
+ 'email_confirm_resent' => 'Apstiprinājuma vēstule tika nosūtīta. Lūdzu, pārbaudiet jūsu e-pastu.',
+ 'email_confirm_thanks' => 'Paldies par apstiprinājumu!',
+ 'email_confirm_thanks_desc' => 'Lūdzu uzgaidiet, kamēr jūsu apstiprinājums tiek apstrādāts. Ja netiekat novirzīts 3 sekunžu laikā, spiediet saiti "Turpināt", lai dotos tālāk.',
+
+ 'email_not_confirmed' => 'E-pasts nav apstiprināts',
+ 'email_not_confirmed_text' => 'Jūsu e-pasta adrese vēl nav apstiprināta.',
+ 'email_not_confirmed_click_link' => 'Lūdzu, noklikšķiniet uz saiti nosūtītajā e-pastā pēc reģistrēšanās.',
+ 'email_not_confirmed_resend' => 'Ja neredzi e-pastu, tad vari atkārtoti nosūtīt apstiprinājuma e-pastu iesniedzot zemāk redzamo formu.',
+ 'email_not_confirmed_resend_button' => 'Atkārtoti nosūtīt apstiprinājuma e-pastu',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Tu esi uzaicināts pievienoties :appName!',
+ 'user_invite_email_greeting' => 'Jūsu :appName profils ir izveidots.',
+ 'user_invite_email_text' => 'Lūdzu, nospiediet zemāk redzamo pogu, lai izveidotu paroli un iegūtu piekļuvi:',
+ 'user_invite_email_action' => 'Iestatīt profila paroli',
+ 'user_invite_page_welcome' => 'Sveicināti :appName!',
+ 'user_invite_page_text' => 'Lai pabeigtu profila izveidi un piekļūtu :appName ir jāizveido parole.',
+ 'user_invite_page_confirm_button' => 'Apstiprināt paroli',
+ 'user_invite_success_login' => 'Parole ir uzstādīta, jums tagad jābūt iespējai pieslēgties izmantojot uzstādīto paroli, lai piekļūtu :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Iestati divfaktoru autentifikāciju (2FA)',
+ 'mfa_setup_desc' => 'Iestati divfaktoru autentifikāciju kā papildus drošību tavam lietotāja kontam.',
+ 'mfa_setup_configured' => 'Divfaktoru autentifikācija jau ir nokonfigurēta',
+ 'mfa_setup_reconfigure' => 'Mainīt 2FA konfigurāciju',
+ 'mfa_setup_remove_confirmation' => 'Vai esi drošs, ka vēlies noņemt divfaktoru autentifikāciju?',
+ 'mfa_setup_action' => 'Iestatījumi',
+ 'mfa_backup_codes_usage_limit_warning' => 'Jums atlikuši mazāk kā 5 rezerves kodi. Lūdzu izveidojiet jaunu kodu komplektu pirms tie visi izlietoti, lai izvairītos no izslēgšanas no jūsu konta.',
+ 'mfa_option_totp_title' => 'Mobilā aplikācija',
+ 'mfa_option_totp_desc' => 'Lai lietotu vairākfaktoru autentifikāciju, jums būs nepieciešama mobilā aplikācija, kas atbalsta TOTP, piemēram, Google Authenticator, Authy vai Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Rezerves kodi',
+ 'mfa_option_backup_codes_desc' => 'Izveido vienreizējas lietošanas rezerves kodus, ko var izmantot pierakstoties, lai apstiprinātu savu identitāti. Pārliecinieties, ka tie ir noglabāti drošā vietā.',
+ 'mfa_gen_confirm_and_enable' => 'Apstiprināt un ieslēgt',
+ 'mfa_gen_backup_codes_title' => 'Rezerves kodu iestatījumi',
+ 'mfa_gen_backup_codes_desc' => 'Noglabājiet zemāk esošo kodu sarakstu drošā vietā. Kad piekļūsiet sistēmai, jūs varēsiet izmantot vienu no kodiem kā papildus autentifikācijas mehānismu.',
+ 'mfa_gen_backup_codes_download' => 'Lejupielādēt kodus',
+ 'mfa_gen_backup_codes_usage_warning' => 'Katru kodu var izmantot tikai vienreiz',
+ 'mfa_gen_totp_title' => 'Mobilās aplikācijas iestatījumi',
+ 'mfa_gen_totp_desc' => 'Lai lietotu vairākfaktoru autentifikāciju, jums būs nepieciešama mobilā aplikācija, kas atbalsta TOTP, piemēram, Google Authenticator, Authy vai Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Skenējiet zemāk esošo kvadrātkodu (QR) izmantojot savu autentifikācijas aplikāciju.',
+ 'mfa_gen_totp_verify_setup' => 'Verificēt iestatījumus',
+ 'mfa_gen_totp_verify_setup_desc' => 'Pārbaudiet, ka viss darbojas, zemāk esošajā laukā ievadot kodu, ko izveidojusi jūsu autentifikācijas aplikācijā:',
+ 'mfa_gen_totp_provide_code_here' => 'Norādīet jūsu aplikācijā izveidoto kodu šeit',
+ 'mfa_verify_access' => 'Verificēt piekļuvi',
+ 'mfa_verify_access_desc' => 'Jūsu lietotāja kontam nepieciešams verificēt jūsu identitāti ar papildus pārbaudes līmeni pirms piešķirta piekļuve. Verificējiet, izmantojot vienu no uzstādītajām metodēm, lai turpinātu.',
+ 'mfa_verify_no_methods' => 'Nav iestatīta neviena metode',
+ 'mfa_verify_no_methods_desc' => 'Jūsu kontam nav iestatīta neviena vairākfaktoru autentifikācijas metode. Jums būs nepieciešams iestatīt vismaz vienu metodi, lai iegūtu piekļuvi.',
+ 'mfa_verify_use_totp' => 'Verificēt, izmantojot mobilo aplikāciju',
+ 'mfa_verify_use_backup_codes' => 'Verificēt, izmantojot rezerves kodu',
+ 'mfa_verify_backup_code' => 'Rezerves kods',
+ 'mfa_verify_backup_code_desc' => 'Zemāk ievadiet vienu no jūsu atlikušajiem rezerves kodiem:',
+ 'mfa_verify_backup_code_enter_here' => 'Ievadiet rezerves kodu šeit',
+ 'mfa_verify_totp_desc' => 'Zemāk ievadiet kodu, kas izveidots mobilajā aplikācijā:',
+ 'mfa_setup_login_notification' => 'Vairākfaktoru metode iestatīta, lūdzu pieslēdzieties atkal izmantojot iestatīto metodi.',
+];
diff --git a/lang/lv/common.php b/lang/lv/common.php
new file mode 100644
index 00000000000..4917ad3d717
--- /dev/null
+++ b/lang/lv/common.php
@@ -0,0 +1,115 @@
+ 'Atcelt',
+ 'close' => 'Aizvērt',
+ 'confirm' => 'Apstiprināt',
+ 'back' => 'Atpakaļ',
+ 'save' => 'Saglabāt',
+ 'continue' => 'Turpināt',
+ 'select' => 'Atlasīt',
+ 'toggle_all' => 'Iezīmēt visus',
+ 'more' => 'Vairāk',
+
+ // Form Labels
+ 'name' => 'Nosaukums',
+ 'description' => 'Apraksts',
+ 'role' => 'Loma',
+ 'cover_image' => 'Vāka attēls',
+ 'cover_image_description' => 'Šim attēlam jābūt apmēram 440x250px izmērā, taču tas tiks pielāgots lietotāja saskarnei dažādos scenārijos pēc nepieciešamības, un attēla izmēri tad var atšķirties.',
+
+ // Actions
+ 'actions' => 'Darbības',
+ 'view' => 'Skatīt',
+ 'view_all' => 'Skatīt visus',
+ 'new' => 'Jauns',
+ 'create' => 'Izveidot',
+ 'update' => 'Atjaunināt',
+ 'edit' => 'Rediģēt',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Kārtot',
+ 'move' => 'Pārvietot',
+ 'copy' => 'Kopēt',
+ 'reply' => 'Atbildēt',
+ 'delete' => 'Dzēst',
+ 'delete_confirm' => 'Apstipriniet dzēšanu',
+ 'search' => 'Meklēt',
+ 'search_clear' => 'Notīrīt meklēšanu',
+ 'reset' => 'Atiestatīt',
+ 'remove' => 'Noņemt',
+ 'add' => 'Pievienot',
+ 'configure' => 'Mainīt konfigurāciju',
+ 'manage' => 'Pārvaldīt',
+ 'fullscreen' => 'Pilnekrāns',
+ 'favourite' => 'Pievienot favorītiem',
+ 'unfavourite' => 'Noņemt no favorītiem',
+ 'next' => 'Nākamais',
+ 'previous' => 'Iepriekšējais',
+ 'filter_active' => 'Aktīvais filtrs:',
+ 'filter_clear' => 'Notīrīt filtru',
+ 'download' => 'Lejupielādēt',
+ 'open_in_tab' => 'Atvērt cilnē',
+ 'open' => 'Atvērt',
+
+ // Sort Options
+ 'sort_options' => 'Kārtošanas Opcijas',
+ 'sort_direction_toggle' => 'Pārslēgt kārtošanas virzienu',
+ 'sort_ascending' => 'Kārtot Augoši',
+ 'sort_descending' => 'Kārtot Dilstoši',
+ 'sort_name' => 'Vārds',
+ 'sort_default' => 'Noklusējums',
+ 'sort_created_at' => 'Izveidošanas Datums',
+ 'sort_updated_at' => 'Atjaunināšanas datums',
+
+ // Misc
+ 'deleted_user' => 'Dzēsts lietotājs',
+ 'no_activity' => 'Nav skatāmu darbību',
+ 'no_items' => 'Vienumi nav pieejami',
+ 'back_to_top' => 'Uz augšu',
+ 'skip_to_main_content' => 'Pāriet uz saturu',
+ 'toggle_details' => 'Rādīt aprakstu',
+ 'toggle_thumbnails' => 'Iezīmēt sīkatēlus',
+ 'details' => 'Sīkāka informācija',
+ 'grid_view' => 'Režģa Skats',
+ 'list_view' => 'Saraksta Skats',
+ 'default' => 'Noklusējums',
+ 'breadcrumb' => 'Navigācija',
+ 'status' => 'Statuss',
+ 'status_active' => 'Aktīvs',
+ 'status_inactive' => 'Neaktīvs',
+ 'never' => 'Nekad',
+ 'none' => 'Neviens',
+
+ // Header
+ 'homepage' => 'Sākumlapa',
+ 'header_menu_expand' => 'Izvērst galvenes izvēlni',
+ 'profile_menu' => 'Profila izvēlne',
+ 'view_profile' => 'Apskatīt profilu',
+ 'edit_profile' => 'Rediģēt profilu',
+ 'dark_mode' => 'Tumšais režīms',
+ 'light_mode' => 'Gaišais režīms',
+ 'global_search' => 'Vispārējā meklēšana',
+
+ // Layout tabs
+ 'tab_info' => 'Informācija',
+ 'tab_info_label' => 'Tab: Rādīt sekundāro informāciju',
+ 'tab_content' => 'Saturs',
+ 'tab_content_label' => 'Tab: Rādīt galveno saturu',
+
+ // Email Content
+ 'email_action_help' => 'Ja ir problēmas noklikšķināt ":actionText" pogu, nokopē un ievieto saiti savā interneta pārlūkā:',
+ 'email_rights' => 'Visas tiesības aizsargātas',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Privātuma politika',
+ 'terms_of_service' => 'Pakalpojuma noteikumi',
+
+ // OpenSearch
+ 'opensearch_description' => 'Meklēt :appName',
+];
diff --git a/lang/lv/components.php b/lang/lv/components.php
new file mode 100644
index 00000000000..5a7197687cd
--- /dev/null
+++ b/lang/lv/components.php
@@ -0,0 +1,46 @@
+ 'Attēla izvēle',
+ 'image_list' => 'Attēlu saraksts',
+ 'image_details' => 'Attēla dati',
+ 'image_upload' => 'Augšupielādēt attēlu',
+ 'image_intro' => 'Šeit jūs varat izvēlēties un pārvaldīt attēlus, kuri iepriekš tika aplugšupielādēti sistēmā.',
+ 'image_intro_upload' => 'Augšupielādējiet jaunu attēlu ievelkot attēla failu šajā logā vai izmantojot "Augšupielādēt attēlu" pogu augstāk.',
+ 'image_all' => 'Visi',
+ 'image_all_title' => 'Skatīt visus attēlus',
+ 'image_book_title' => 'Apskatīt augšupielādētos attēlus šajā grāmatā',
+ 'image_page_title' => 'Apskatīt augšupielādētos attēlus šajā lapā',
+ 'image_search_hint' => 'Meklēt pēc attēla vārda',
+ 'image_uploaded' => 'Augšupielādēts :uploadedDate',
+ 'image_uploaded_by' => 'Augšupielādēja :userName',
+ 'image_uploaded_to' => 'Augšupielādēja :pageLink',
+ 'image_updated' => 'Atjaunots :updateDate',
+ 'image_load_more' => 'Ielādēt vairāk',
+ 'image_image_name' => 'Attēla nosaukums',
+ 'image_delete_used' => 'Šis attēls ir ievietots zemāk redzamajās lapās.',
+ 'image_delete_confirm_text' => 'Vai tiešām vēlaties dzēst šo attēlu?',
+ 'image_select_image' => 'Atlasīt attēlu',
+ 'image_dropzone' => 'Ievilkt attēlu vai klikšķinat šeit, lai augšupielādētu',
+ 'image_dropzone_drop' => 'Ievelciet attēlus šeit, lai augšupielādētu',
+ 'images_deleted' => 'Dzēstie attēli',
+ 'image_preview' => 'Attēla priekšskatījums',
+ 'image_upload_success' => 'Attēls ir veiksmīgi augšupielādēts',
+ 'image_update_success' => 'Attēlā informācija ir veiksmīgi atjunināta',
+ 'image_delete_success' => 'Attēls veiksmīgi dzēsts',
+ 'image_replace' => 'Nomainīt bildi',
+ 'image_replace_success' => 'Attēla fails veiksmīgi atjaunots',
+ 'image_rebuild_thumbs' => 'No jauna izveidot attēla dažādu izmēru variantus',
+ 'image_rebuild_thumbs_success' => 'Attēlu varianti veiksmīgi atjaunoti!',
+
+ // Code Editor
+ 'code_editor' => 'Rediģēt kodu',
+ 'code_language' => 'Koda valoda',
+ 'code_content' => 'Koda teksts',
+ 'code_session_history' => 'Sesijas vēsture',
+ 'code_save' => 'Saglabāt kodu',
+];
diff --git a/lang/lv/editor.php b/lang/lv/editor.php
new file mode 100644
index 00000000000..8b2907ddd2a
--- /dev/null
+++ b/lang/lv/editor.php
@@ -0,0 +1,182 @@
+ 'Vispārīgi',
+ 'advanced' => 'Papildu iespējas',
+ 'none' => 'Neviens',
+ 'cancel' => 'Atcelt',
+ 'save' => 'Saglabāt',
+ 'close' => 'Aizvērt',
+ 'apply' => 'Pielietot',
+ 'undo' => 'Atsaukt',
+ 'redo' => 'Atcelt atsaukšanu',
+ 'left' => 'Pa kreisi',
+ 'center' => 'Centrā',
+ 'right' => 'Pa labi',
+ 'top' => 'Augšā',
+ 'middle' => 'Vidū',
+ 'bottom' => 'Apakšā',
+ 'width' => 'Platums',
+ 'height' => 'Augstums',
+ 'More' => 'Vairāk',
+ 'select' => 'Atlasīt...',
+
+ // Toolbar
+ 'formats' => 'Formāti',
+ 'header_large' => 'Liels virsraksts',
+ 'header_medium' => 'Vidējs virsraksts',
+ 'header_small' => 'Mazs virsraksts',
+ 'header_tiny' => 'Ļoti mazs virsraksts',
+ 'paragraph' => 'Rindkopa',
+ 'blockquote' => 'Citāts',
+ 'inline_code' => 'Kods iekļauts rindā',
+ 'callouts' => 'Norādes',
+ 'callout_information' => 'Informācija',
+ 'callout_success' => 'Veiksmīgi',
+ 'callout_warning' => 'Brīdinājums',
+ 'callout_danger' => 'Bīstami',
+ 'bold' => 'Treknraksts',
+ 'italic' => 'Slīpraksts',
+ 'underline' => 'Pasvītrojums',
+ 'strikethrough' => 'Pārsvītrojums',
+ 'superscript' => 'Augšraksts',
+ 'subscript' => 'Apakšraksts',
+ 'text_color' => 'Teksta krāsa',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Pielāgot krāsu',
+ 'remove_color' => 'Noņemt krāsu',
+ 'background_color' => 'Fona krāsa',
+ 'align_left' => 'Līdzināt pa kreisi',
+ 'align_center' => 'Līdzināt pa vidu',
+ 'align_right' => 'Līdzināt pa labi',
+ 'align_justify' => 'Līdzināt gar abām malām',
+ 'list_bullet' => 'Nenumurēts saraksts',
+ 'list_numbered' => 'Numurēts saraksts',
+ 'list_task' => 'Uzdevumu saraksts',
+ 'indent_increase' => 'Palielināt atkāpi',
+ 'indent_decrease' => 'Samazināt atkāpi',
+ 'table' => 'Tabula',
+ 'insert_image' => 'Ievietot attēlu',
+ 'insert_image_title' => 'Ievietot/rediģēt attēlu',
+ 'insert_link' => 'Ievietot/rediģēt saiti',
+ 'insert_link_title' => 'Ievietot/rediģēt saiti',
+ 'insert_horizontal_line' => 'Ievietot horizontālu līniju',
+ 'insert_code_block' => 'Ievietot koda bloku',
+ 'edit_code_block' => 'Rediģēt koda bloku',
+ 'insert_drawing' => 'Ievietot/rediģēt zīmējumu',
+ 'drawing_manager' => 'Zīmēšanas pārvaldnieks',
+ 'insert_media' => 'Ievietot/rediģēt mediju',
+ 'insert_media_title' => 'Ievietot/rediģēt mediju',
+ 'clear_formatting' => 'Notīrīt noformējumu',
+ 'source_code' => 'Pirmkods',
+ 'source_code_title' => 'Pirmkods',
+ 'fullscreen' => 'Pilnekrāns',
+ 'image_options' => 'Attēla uzstādījumu',
+
+ // Tables
+ 'table_properties' => 'Tabulas īpašības',
+ 'table_properties_title' => 'Tabulas īpašības',
+ 'delete_table' => 'Dzēst tabulu',
+ 'table_clear_formatting' => 'Notīrīt tabulas formatējumu',
+ 'resize_to_contents' => 'Pielāgot izmēru saturam',
+ 'row_header' => 'Rindas galvene',
+ 'insert_row_before' => 'Ievietot rindu augstāk',
+ 'insert_row_after' => 'Ievietot rindu zemāk',
+ 'delete_row' => 'Dzēst rindu',
+ 'insert_column_before' => 'Ievietot kolonnu pirms',
+ 'insert_column_after' => 'Ievietot kolonnu pēc',
+ 'delete_column' => 'Dzēst kolonnu',
+ 'table_cell' => 'Šūna',
+ 'table_row' => 'Rinda',
+ 'table_column' => 'Kolonna',
+ 'cell_properties' => 'Šūnas īpašības',
+ 'cell_properties_title' => 'Šūnas īpašības',
+ 'cell_type' => 'Šūnas tips',
+ 'cell_type_cell' => 'Šūna',
+ 'cell_scope' => 'Darbības lauks',
+ 'cell_type_header' => 'Galvenes šūna',
+ 'merge_cells' => 'Sapludināt šūnas',
+ 'split_cell' => 'Sadalīt šūnas',
+ 'table_row_group' => 'Rindu grupa',
+ 'table_column_group' => 'Kolonnu grupa',
+ 'horizontal_align' => 'Horizontāls novietojums',
+ 'vertical_align' => 'Vertikāls novietojums',
+ 'border_width' => 'Apmales platums',
+ 'border_style' => 'Apmales veids',
+ 'border_color' => 'Apmales krāsa',
+ 'row_properties' => 'Rindas īpašības',
+ 'row_properties_title' => 'Rindas īpašības',
+ 'cut_row' => 'Izgriezt rindu',
+ 'copy_row' => 'Kopēt rindu',
+ 'paste_row_before' => 'Ielīmēt rindu augstāk',
+ 'paste_row_after' => 'Ielīmēt rindu zemāk',
+ 'row_type' => 'Rindas tips',
+ 'row_type_header' => 'Galvene',
+ 'row_type_body' => 'Pamata saturs',
+ 'row_type_footer' => 'Kājene',
+ 'alignment' => 'Līdzināšana',
+ 'cut_column' => 'Izgriezt kolonnu',
+ 'copy_column' => 'Kopēt kolonnu',
+ 'paste_column_before' => 'Ielīmēt kolonnu pirms',
+ 'paste_column_after' => 'Ielīmēt kolonnu pēc',
+ 'cell_padding' => 'Šūnu iekšējais attālums',
+ 'cell_spacing' => 'Šūnu attālums',
+ 'caption' => 'Virsraksts',
+ 'show_caption' => 'Parādīt virsrakstu',
+ 'constrain' => 'Saglabāt proporcijas',
+ 'cell_border_solid' => 'Pilna',
+ 'cell_border_dotted' => 'Punktēta',
+ 'cell_border_dashed' => 'Raustīta līnija',
+ 'cell_border_double' => 'Dubulta',
+ 'cell_border_groove' => 'Iedoba',
+ 'cell_border_ridge' => 'Izcelta',
+ 'cell_border_inset' => 'Iespiesta',
+ 'cell_border_outset' => 'Pacelta',
+ 'cell_border_none' => 'Nekas',
+ 'cell_border_hidden' => 'Paslēpts',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Avots',
+ 'alt_desc' => 'Alternatīvais apraksts',
+ 'embed' => 'Iekļaut',
+ 'paste_embed' => 'Iekopējiet savu iekļaušanas kodu zemāk:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Attēlojamais teksts',
+ 'title' => 'Nosaukums',
+ 'browse_links' => 'Pārlūkot saites',
+ 'open_link' => 'Atvērt saiti',
+ 'open_link_in' => 'Atvērt saiti...',
+ 'open_link_current' => 'Šis logs',
+ 'open_link_new' => 'Jauns logs',
+ 'remove_link' => 'Noņemt saiti',
+ 'insert_collapsible' => 'Ievietot sakļaujamu bloku',
+ 'collapsible_unwrap' => 'Attīt',
+ 'edit_label' => 'Rediģēt marķējumu',
+ 'toggle_open_closed' => 'Pārslēgt atvērts/aizvērts',
+ 'collapsible_edit' => 'Rediģēt sakļaujamu bloku',
+ 'toggle_label' => 'Pārslēgt marķējumu',
+
+ // About view
+ 'about' => 'Par redaktoru',
+ 'about_title' => 'Par WYSIWYG redaktoru',
+ 'editor_license' => 'Redaktora licence un autortiesības',
+ 'editor_lexical_license' => 'Šis redaktors ir izveidots, izmantojot :tinyLink, kas ir publicēts ar MIT licenci.',
+ 'editor_lexical_license_link' => 'Pilnu licences informāciju var atrast šeit.',
+ 'editor_tiny_license' => 'Šis redaktors ir izveidots, izmantojot :tinyLink, kas ir publicēts ar MIT licenci.',
+ 'editor_tiny_license_link' => 'TinyMCE autortiesības un licences detaļas var atrast šeit.',
+ 'save_continue' => 'Saglabāt lapu un turpināt',
+ 'callouts_cycle' => '(Turpiniet spiest, lai pārslēgtu tipus)',
+ 'link_selector' => 'Saite uz saturu',
+ 'shortcuts' => 'Saīsnes',
+ 'shortcut' => 'Saīsne',
+ 'shortcuts_intro' => 'Šajā redaktorā pieejamas šādas saīsnes:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Apraksts',
+];
diff --git a/lang/lv/entities.php b/lang/lv/entities.php
new file mode 100644
index 00000000000..5f921048e52
--- /dev/null
+++ b/lang/lv/entities.php
@@ -0,0 +1,476 @@
+ 'Nesen izveidots',
+ 'recently_created_pages' => 'Nesen izveidotās lapas',
+ 'recently_updated_pages' => 'Nesen atjauninātās lapas',
+ 'recently_created_chapters' => 'Nesen izveidotās nodaļas',
+ 'recently_created_books' => 'Nesen izveidotās grāmatas',
+ 'recently_created_shelves' => 'Nesen izveidotie plaukti',
+ 'recently_update' => 'Nesen atjaunināts',
+ 'recently_viewed' => 'Nesen skatītie',
+ 'recent_activity' => 'Pēdējās aktivitātes',
+ 'create_now' => 'Izveidot tagad',
+ 'revisions' => 'Revīzijas',
+ 'meta_revision' => 'Revīzija #:revisionCount',
+ 'meta_created' => 'Izveidots :timeLength',
+ 'meta_created_name' => ':user izveidojis pirms :timeLength',
+ 'meta_updated' => 'Atjaunināts :timeLength',
+ 'meta_updated_name' => ':user atjauninājis pirms :timeLength',
+ 'meta_owned_name' => 'Īpašnieks :user',
+ 'meta_reference_count' => 'Atsauce :count vienumā|Atsauce :count vienumos',
+ 'entity_select' => 'Izvēlēties vienumu',
+ 'entity_select_lack_permission' => 'Jums nav nepieciešamās piekļuves tiesības, lai izvēlētu šo vienumu',
+ 'images' => 'Attēli',
+ 'my_recent_drafts' => 'Mani melnraksti',
+ 'my_recently_viewed' => 'Mani nesen skatītie',
+ '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',
+ 'no_pages_recently_updated' => 'Nav atjaunināta neviena lapa',
+ 'export' => 'Eksportēt',
+ 'export_html' => 'Pilna satura web fails',
+ 'export_pdf' => 'PDF fails',
+ 'export_text' => 'Vienkāršs teksta fails',
+ 'export_md' => 'Markdown fails',
+ 'export_zip' => 'Pārceļams ZIP arhīvs',
+ 'default_template' => 'Noklusētā lapas sagatave',
+ 'default_template_explain' => 'Norādīt lapas sagatavi, kas tiks izmantota kā noklusētais saturs visām jaunājām lapām šajā grāmatā. Ņemiet vērā, ka tā tiks izmantota tikai tad, ja lapas veidotājam ir skatīšanas tiesības izvēlētajai sagatavei.',
+ 'default_template_select' => 'Izvēlēt sagataves lapu',
+ 'import' => 'Importēt',
+ 'import_validate' => 'Pārbaudīt importu',
+ 'import_desc' => 'Importēt grāmatas, nodaļas un lapas izmantojot pārceļamu ZIP arhīvu no šīs vai citas sistēmas instances. Izvēlietites ZIP failu, lai turpinātu. Kad fails ir augšupielādēts un pārbaudīts, jūs varēsiet veikt importa uzstādījumus un to apstiprināt nākamajā skatā.',
+ 'import_zip_select' => 'Izvēlieties ZIP failu, ko augšupielādēt',
+ 'import_zip_validation_errors' => 'Pārbaudot ZIP failu atrastas šādas kļūdas:',
+ 'import_pending' => 'Gaidošie importi',
+ 'import_pending_none' => 'Neviens imports nav uzsākts.',
+ 'import_continue' => 'Turpināt importu',
+ 'import_continue_desc' => 'Pārlūkot saturu, kas tiktu importēts no augšupielādētā ZIP faila. Kad esat gatavs, palaidiet importu, lai pievienotu tā saturu šai sistēmai. Augšupielādētais ZIP fails tiks automātiski izvākts pēc veiksmīga importa.',
+ 'import_details' => 'Importa detaļas',
+ 'import_run' => 'Palaist importu',
+ 'import_size' => ':size importa ZIP izmērs',
+ 'import_uploaded_at' => 'Augšupielādes laiks :relativeTime',
+ 'import_uploaded_by' => 'Augšupielādēja',
+ 'import_location' => 'Importa vieta',
+ 'import_location_desc' => 'Izvēlieties mērķa vietu jūsu importētajam saturam. Jums būs nepieciešamas attiecīgās piekļuves tiesības, lai izveidotu saturu izvēlētajā vietā.',
+ 'import_delete_confirm' => 'Vai tiešām vēlaties dzēst šo importu?',
+ 'import_delete_desc' => 'Šis izdzēsīs augšupielādēto importa ZIP failu, un šo darbību nevarēs atcelt.',
+ 'import_errors' => 'Importa kļūdas',
+ 'import_errors_desc' => 'Importa mēģinājumā atgadījās šīs kļūdas:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Atļaujas',
+ 'permissions_desc' => 'Uzstādīt tiesības šeit, lai aizvietotu noklusētās tiesības no lietotāju lomām.',
+ 'permissions_book_cascade' => 'Piekļuves tiesības, kas uzstādītas grāmatām, automātiski tiks piešķirtas pakārtotajām nodaļām un lapām, ja vien tām nav atsevišķi norādītas savas piekļuves tiesības.',
+ 'permissions_chapter_cascade' => 'Piekļuves tiesības, kas uzstādītas nodaļām, automātiski tiks piešķirtas pakārtotajām lapām, ja vien tām nav atsevišķi norādītas savas piekļuves tiesības.',
+ 'permissions_save' => 'Saglabāt atļaujas',
+ 'permissions_owner' => 'Īpašnieks',
+ 'permissions_role_everyone_else' => 'Visi pārējie',
+ 'permissions_role_everyone_else_desc' => 'Set permissions for all roles not specifically overridden.',
+ 'permissions_role_override' => 'Aizvietot lomas tiesības',
+ 'permissions_inherit_defaults' => 'Mantot noklusētās vērtības',
+
+ // Search
+ 'search_results' => 'Meklēšanas rezultāti',
+ 'search_total_results_found' => ':count meklēšanas rezultāts|:count meklēšanas rezultāti',
+ 'search_clear' => 'Notīrīt meklēšanu',
+ 'search_no_pages' => 'Neviena lapa neatbilst meklēšanai',
+ 'search_for_term' => 'Meklēt :term',
+ 'search_more' => 'Vairāk rezultāti',
+ 'search_advanced' => 'Paplašināta meklēšana',
+ 'search_terms' => 'Meklēšanas parametri',
+ 'search_content_type' => 'Satura tips',
+ 'search_exact_matches' => 'Precīza atbilstība',
+ 'search_tags' => 'Birku meklēšana',
+ 'search_options' => 'Iestatījumi',
+ 'search_viewed_by_me' => 'Manis apskatītie',
+ 'search_not_viewed_by_me' => 'Neesmu skatījis',
+ 'search_permissions_set' => 'Iestatītās atļaujas',
+ 'search_created_by_me' => 'Manis izveidotie',
+ 'search_updated_by_me' => 'Manis atjauninātie',
+ 'search_owned_by_me' => 'Es esmu īpašnieks',
+ 'search_date_options' => 'Datuma iestatījumi',
+ 'search_updated_before' => 'Atjaunināts pirms',
+ 'search_updated_after' => 'Atjaunināts pēc',
+ 'search_created_before' => 'Izveidots pirms',
+ 'search_created_after' => 'Izveidots pēc',
+ 'search_set_date' => 'Norādīt datumu',
+ 'search_update' => 'Atjaunināt meklētāju',
+
+ // Shelves
+ 'shelf' => 'Plaukts',
+ 'shelves' => 'Plaukti',
+ 'x_shelves' => ':count Plaukts|:count Plaukti',
+ 'shelves_empty' => 'Neviens plaukts nav izveidots',
+ 'shelves_create' => 'Izveidot jaunu plauktu',
+ 'shelves_popular' => 'Populāri plaukti',
+ 'shelves_new' => 'Jauni plaukti',
+ 'shelves_new_action' => 'Jauns plaukts',
+ 'shelves_popular_empty' => 'Populārākie plaukti tiks rādīti šeit.',
+ 'shelves_new_empty' => 'Pēdējie izveidotie plaukti tiks rādīti šeit.',
+ 'shelves_save' => 'Saglabāt plauktu',
+ 'shelves_books' => 'Grāmatas šajā plauktā',
+ 'shelves_add_books' => 'Pievienot grāmatas šim plauktam',
+ 'shelves_drag_books' => 'Ievelciet grāmatas zemāk, lai novietotu tās šajā plauktā',
+ 'shelves_empty_contents' => 'Šim gŗamatplauktam nav pievienotu grāmatu',
+ 'shelves_edit_and_assign' => 'Labot plauktu, lai tam pievienotu grāmatas',
+ 'shelves_edit_named' => 'Rediģēt plauktu :name',
+ 'shelves_edit' => 'Rediģēt plauktu',
+ 'shelves_delete' => 'Dzēst plauktu',
+ 'shelves_delete_named' => 'Dzēst plauktu :name',
+ 'shelves_delete_explain' => "Tiks dzēsts plaukts ar nosaukumu \":name\". Tajā ievietotās grāmatas netiks dzēstas.",
+ 'shelves_delete_confirmation' => 'Vai esat pārliecināts, ka vēlaties dzēst šo plauktu?',
+ 'shelves_permissions' => 'Plaukta atļaujas',
+ 'shelves_permissions_updated' => 'Plaukta atļaujas atjauninātas',
+ 'shelves_permissions_active' => 'Plaukta atļaujas ir aktīvas',
+ 'shelves_permissions_cascade_warning' => 'Plauktu piekļuves tiesības netiek automātiski piešķirtas tajā esošajām grāmatām. Tas ir tāpēc, ka grāmata var vienlaicīgi atrasties vairākos plauktos. Tomēr piekļuves tiesības var nokopēt uz plauktam pievienotajām grāmatām, izmantojot zemāk atrodamo opciju.',
+ 'shelves_permissions_create' => 'Plaukta veidošanas tiesības tiek izmantotas tikai, lai kopētu tiesības uz pakārtotajām grāmatām, izmantojot zemāk esošo darbību. Tās nekontrolē iespēju izveidot jaunas grāmatas.',
+ 'shelves_copy_permissions_to_books' => 'Kopēt grāmatplaukta atļaujas uz grāmatām',
+ 'shelves_copy_permissions' => 'Kopēt atļaujas',
+ 'shelves_copy_permissions_explain' => 'Pašreizējās plaukta piekļuves tiesības tiks piemērotas visām tajā esošajām grāmatām. Pirms ieslēgšanas pārliecinieties, ka visas izmaiņas plaukta piekļuves tiesības ir saglabātas.',
+ 'shelves_copy_permission_success' => 'Plaukta piekļuves tiesības kopētas uz :count grāmatām',
+
+ // Books
+ 'book' => 'Grāmata',
+ 'books' => 'Grāmatas',
+ 'x_books' => ':count grāmata|:count grāmatas',
+ 'books_empty' => 'Neviena grāmata nav izveidota',
+ 'books_popular' => 'Populārās grāmatas',
+ 'books_recent' => 'Nesenās grāmatas',
+ 'books_new' => 'Jaunas grāmatas',
+ 'books_new_action' => 'Jauna grāmata',
+ 'books_popular_empty' => 'Populārākās grāmatas tiks rādītas šeit.',
+ 'books_new_empty' => 'Pēdējās izveidotās grāmatas tiks rādītas šeit.',
+ 'books_create' => 'Izveidot jaunu grāmatu',
+ 'books_delete' => 'Dzēst grāmatu',
+ 'books_delete_named' => 'Dzēst grāmatu :bookName',
+ 'books_delete_explain' => 'Šī darbība izdzēsīs grāmatu \':bookName\'. Visas lapas un nodaļas tiks izdzēstas.',
+ 'books_delete_confirmation' => 'Vai esat pārliecināts, ka vēlaties dzēst šo grāmatu?',
+ 'books_edit' => 'Labot grāmatu',
+ 'books_edit_named' => 'Labot grāmatu :bookName',
+ 'books_form_book_name' => 'Grāmatas nosaukums',
+ 'books_save' => 'Saglabāt grāmatu',
+ 'books_permissions' => 'Grāmatas atļaujas',
+ 'books_permissions_updated' => 'Grāmatas atļaujas atjauninātas',
+ 'books_empty_contents' => 'Lapas vai nodaļas vēl nav izveidotas šai grāmatai.',
+ 'books_empty_create_page' => 'Izveidot jaunu lapu',
+ 'books_empty_sort_current_book' => 'Kārtot šo grāmatu',
+ 'books_empty_add_chapter' => 'Pievienot nodaļu',
+ 'books_permissions_active' => 'Grāmatas atļaujas ir aktīvas',
+ 'books_search_this' => 'Meklēt šajā grāmatā',
+ 'books_navigation' => 'Grāmatas navigācija',
+ 'books_sort' => 'Kārtot grāmatas saturu',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Kārtot grāmatu :bookName',
+ 'books_sort_name' => 'Kārtot pēc nosaukuma',
+ 'books_sort_created' => 'Kārtot pēc izveidošanas datuma',
+ 'books_sort_updated' => 'Kārtot pēc atjaunināšanas datuma',
+ 'books_sort_chapters_first' => 'Nodaļas pirmās',
+ 'books_sort_chapters_last' => 'Nodaļas pēdējās',
+ 'books_sort_show_other' => 'Rādīt citas grāmatas',
+ 'books_sort_save' => 'Saglabāt jauno kārtību',
+ 'books_sort_show_other_desc' => 'Pievienojiet citas grāmatas šeit, lai tās iekļautu kārtošanā un pieļautu vienkāršāku satura organizēšanu starp grāmatām.',
+ 'books_sort_move_up' => 'Pārvietot uz augšu',
+ 'books_sort_move_down' => 'Pārvietot uz leju',
+ 'books_sort_move_prev_book' => 'Pārvietot uz iepriekšējo grāmatu',
+ 'books_sort_move_next_book' => 'Pārvietot uz nākamo grāmatu',
+ 'books_sort_move_prev_chapter' => 'Pārvietot uz iepriekšējo nodaļu',
+ 'books_sort_move_next_chapter' => 'Pārvietot uz nākamo nodaļu',
+ 'books_sort_move_book_start' => 'Pārvietot uz grāmatas sākumu',
+ 'books_sort_move_book_end' => 'Pārvietot uz grāmatas beigām',
+ 'books_sort_move_before_chapter' => 'Pārvietot pirms nodaļas',
+ 'books_sort_move_after_chapter' => 'Pārvietot pēc nodaļas',
+ 'books_copy' => 'Kopēt grāmatu',
+ 'books_copy_success' => 'Grāmata veiksmīgi nokopēta',
+
+ // Chapters
+ 'chapter' => 'Nodaļa',
+ 'chapters' => 'Nodaļas',
+ 'x_chapters' => ':count nodaļa|:count nodaļas',
+ 'chapters_popular' => 'Populāras nodaļas',
+ 'chapters_new' => 'Jauna nodaļa',
+ 'chapters_create' => 'Izveidot jaunu nodaļu',
+ 'chapters_delete' => 'Dzēst nodaļu',
+ 'chapters_delete_named' => 'Dzēst nodaļu :chapterName',
+ 'chapters_delete_explain' => 'Šī darbība dzēsīs nodaļu \':chapterName\'. Visas tajā esošās lapas arī tiks dzēstas.',
+ 'chapters_delete_confirm' => 'Vai esat pārliecināts, ka vēlaties dzēst šo nodaļu?',
+ 'chapters_edit' => 'Labot nodaļu',
+ 'chapters_edit_named' => 'Labot nodaļu :chapterName',
+ 'chapters_save' => 'Saglabāt nodaļu',
+ 'chapters_move' => 'Pārvietot nodaļu',
+ 'chapters_move_named' => 'Pārvietot nodaļu :chapterName',
+ 'chapters_copy' => 'Kopēt nodaļu',
+ 'chapters_copy_success' => 'Nodaļa veiksmīgi nokopēta',
+ 'chapters_permissions' => 'Nodaļas atļaujas',
+ 'chapters_empty' => 'Šajā nodaļā nav pievienotu lapu.',
+ 'chapters_permissions_active' => 'Nodaļas atļaujas ir aktīvas',
+ 'chapters_permissions_success' => 'Nodaļas atļaujas ir atjauninātas',
+ 'chapters_search_this' => 'Meklēt šajā nodaļā',
+ 'chapter_sort_book' => 'Kārtot grāmatu',
+
+ // Pages
+ 'page' => 'Lapa',
+ 'pages' => 'Lapas',
+ 'x_pages' => ':count lapa|:count lapas',
+ 'pages_popular' => 'Populātas lapas',
+ 'pages_new' => 'Jauna lapa',
+ 'pages_attachments' => 'Pielikumi',
+ 'pages_navigation' => 'Lapas navigācija',
+ 'pages_delete' => 'Dzēst lapu',
+ 'pages_delete_named' => 'Dzēst lapu :pageName',
+ 'pages_delete_draft_named' => 'Dzēst :pageName melnrakstu',
+ 'pages_delete_draft' => 'Dzēst melnrakstu',
+ 'pages_delete_success' => 'Lapa ir dzēsta',
+ 'pages_delete_draft_success' => 'Melnraksts ir dzēsts',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Vai esat pārliecināts, ka vēlaties dzēst šo lapu?',
+ 'pages_delete_draft_confirm' => 'Vai esat pārliecināts, ka vēlaties dzēst šo melnrakstu?',
+ 'pages_editing_named' => 'Rediģē lapu :pageName',
+ 'pages_edit_draft_options' => 'Melnraksta iestatījumi',
+ 'pages_edit_save_draft' => 'Saglabāt melnrakstu',
+ 'pages_edit_draft' => 'Labot melnrakstu',
+ 'pages_editing_draft' => 'Labo melnrakstu',
+ 'pages_editing_page' => 'Labo lapu',
+ 'pages_edit_draft_save_at' => 'Melnraksts saglabāts ',
+ 'pages_edit_delete_draft' => 'Dzēst melnrakstu',
+ 'pages_edit_delete_draft_confirm' => 'Vai tiešām vēlaties dzēst savas uzmetuma izmaiņas? Visas jūsu izmaiņas kopš pēdējās saglabāšanas pazudīs un redaktors tiks atjaunos ar pēdējo saglabātu lapas saturu.',
+ 'pages_edit_discard_draft' => 'Atmest malnrakstu',
+ 'pages_edit_switch_to_markdown' => 'Pārslēgties uz Markdown redaktoru',
+ 'pages_edit_switch_to_markdown_clean' => '(Iztīrītais saturs)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stabilais saturs)',
+ 'pages_edit_switch_to_wysiwyg' => 'Pārslēgties uz WYSIWYG redaktoru',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Pārslēgties uz jauno WYSIWYG redaktoru',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Pievienot izmaiņu aprakstu',
+ 'pages_edit_enter_changelog_desc' => 'Ievadi nelielu aprakstu par vaiktajām izmaiņām',
+ 'pages_edit_enter_changelog' => 'Izmaiņu apraksts',
+ 'pages_editor_switch_title' => 'Pārslēgt redaktoru',
+ 'pages_editor_switch_are_you_sure' => 'Vai tiešām vēlaties pārslēgt šai lapai lietojamo redaktoru?',
+ 'pages_editor_switch_consider_following' => 'Pārslēdzot redaktorus, ņemiet vērā:',
+ 'pages_editor_switch_consideration_a' => 'Pēc saglabāšanas jaunā redaktora izvēle tiks izmantota nākotnē visiem lietotājiem, tai skaitā tiem, kam var nebūt tiesības pašiem mainīt redaktora veidu.',
+ 'pages_editor_switch_consideration_b' => 'Tas var noteiktos apstākļos novest pie iespējamiem noformējuma un sintakses zudumiem.',
+ 'pages_editor_switch_consideration_c' => 'Birku vai izmaiņu saraksta ieraksti, kas veikti kopš pēdējās saglabāšanas, nesaglabāsies kopā ar šīm izmaiņām.',
+ 'pages_save' => 'Saglabāt lapu',
+ 'pages_title' => 'Lapas virsraksts',
+ 'pages_name' => 'Lapas nosaukums',
+ 'pages_md_editor' => 'Redaktors',
+ 'pages_md_preview' => 'Priekšskatījums',
+ 'pages_md_insert_image' => 'Ievietot attēlu',
+ 'pages_md_insert_link' => 'Ievietot vienuma saiti',
+ 'pages_md_insert_drawing' => 'Ievietot zīmējumu',
+ 'pages_md_show_preview' => 'Rādīt priekšskatu',
+ 'pages_md_sync_scroll' => 'Sync preview scroll',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Atrasts nesaglabāts attēls',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'Lapa nav nodaļā',
+ 'pages_move' => 'Pārvietot lapu',
+ 'pages_copy' => 'Kopēt lapu',
+ 'pages_copy_desination' => 'Kopijas mērķa vieta',
+ 'pages_copy_success' => 'Lapa veiksmīgi nokopēta',
+ 'pages_permissions' => 'Lapas atļaujas',
+ 'pages_permissions_success' => 'Lapas atļaujas atjauninātas',
+ 'pages_revision' => 'Revīzijas',
+ 'pages_revisions' => 'Lapas revīzijas',
+ 'pages_revisions_desc' => 'Zemāk norādītas visas šīs lapas pagātnes versijas. Jūs varat pārskatīt, salīdzināt un atjaunot vecākas versijas, ja to atļauj jūsu piekļuves tiesības. Pilna lapas vēsture varētu netikt attēlota, jo, atkarībā no sistēmas uzstādījumiem, vecākas versijas varētu būt dzēstas automātiski.',
+ 'pages_revisions_named' => ':pageName lapas revīzijas',
+ 'pages_revision_named' => ':pageName lapas revīzija',
+ 'pages_revision_restored_from' => 'Atjaunots no #:id; :summary',
+ 'pages_revisions_created_by' => 'Izveidoja',
+ 'pages_revisions_date' => 'Revīzijas datums',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Versijas numurs',
+ 'pages_revisions_numbered' => 'Revīzija #:id',
+ 'pages_revisions_numbered_changes' => 'Revīzijas #:id izmaiņas',
+ 'pages_revisions_editor' => 'Redaktora veids',
+ 'pages_revisions_changelog' => 'Izmaiņu žurnāls',
+ 'pages_revisions_changes' => 'Izmaiņas',
+ 'pages_revisions_current' => 'Pašreizējā versija',
+ 'pages_revisions_preview' => 'Priekšskatījums',
+ 'pages_revisions_restore' => 'Atjaunot',
+ 'pages_revisions_none' => 'Šai lapai nav revīziju',
+ 'pages_copy_link' => 'Kopēt saiti',
+ 'pages_edit_content_link' => 'Pārlekt uz sadaļu redaktorā',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Lapas sadaļas uzstādījumi',
+ 'pages_pointer_permalink' => 'Lapas sadaļas saite',
+ 'pages_pointer_include_tag' => 'Lapas sadaļas iekļaušanas tags',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Lapas atļaujas ir aktīvas',
+ 'pages_initial_revision' => 'Sākotnējā publikācija',
+ 'pages_references_update_revision' => 'Automātiska iekšējo saišu atjaunināšana',
+ 'pages_initial_name' => 'Jauna lapa',
+ 'pages_editing_draft_notification' => 'Jūs pašlaik veicat izmaiņas melnrakstā, kurš pēdējo reizi ir saglabāts :timeDiff.',
+ 'pages_draft_edited_notification' => 'Šī lapa ir tikusi atjaunināta. Šo melnrakstu ieteicams atmest.',
+ 'pages_draft_page_changed_since_creation' => 'Šī lapa ir izmainīta kopš šī uzmetuma izveidošanas. Ieteicams šo uzmetumu dzēst, lai netiktu pazaudētas veiktās izmaiņas.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count lietotāji pašlaik veic izmaiņas šajā lapā',
+ 'start_b' => ':userName veic izmaiņas šajā lapā',
+ 'time_a' => 'kopš šī lapa pēdējo reizi ir atjaunināta',
+ 'time_b' => 'pēdējās :minCount minūtēs',
+ 'message' => ':start :time. Esat uzmanīgi, lai neaizstātu viens otra izmaiņas!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'Konkrēta lapa',
+ 'pages_is_template' => 'Lapas šablons',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Pārslēgt sānjoslu',
+ 'page_tags' => 'Lapas birkas',
+ 'chapter_tags' => 'Nodaļas birkas',
+ 'book_tags' => 'Grāmatas birkas',
+ 'shelf_tags' => 'Plauktu birkas',
+ 'tag' => 'Birka',
+ 'tags' => 'Birkas',
+ 'tags_index_desc' => 'Tags can be applied to content within the system to apply a flexible form of categorization. Tags can have both a key and value, with the value being optional. Once applied, content can then be queried using the tag name and value.',
+ 'tag_name' => 'Birkas nosaukums',
+ 'tag_value' => 'Birkas papildvērtība (neobligāta)',
+ 'tags_explain' => "Pievieno birkas, lai precīzāk grupētu saturu.\n Tu vari pievienot papildus vērtību birkai vēl precīzākai grupēšanai.",
+ 'tags_add' => 'Pievienot vēlvienu birku',
+ 'tags_remove' => 'Noņemt šo birku',
+ 'tags_usages' => 'Kopējais birku lietojums',
+ 'tags_assigned_pages' => 'Pievienotas lapām',
+ 'tags_assigned_chapters' => 'Pievienotas nodaļām',
+ 'tags_assigned_books' => 'Pievienotas grāmatām',
+ 'tags_assigned_shelves' => 'Pievienotas plauktiem',
+ 'tags_x_unique_values' => ':count unikālas vērtības',
+ 'tags_all_values' => 'Visas vērtības',
+ 'tags_view_tags' => 'Skatīt birkas',
+ 'tags_view_existing_tags' => 'Skatīt esošās birkas',
+ 'tags_list_empty_hint' => 'Birkas var pievienot lapas redaktora sānu kolonnā vai rediģējot grāmatas, nodaļas vai plaukta detaļas.',
+ 'attachments' => 'Pielikumi',
+ 'attachments_explain' => 'Augšupielādējiet dažus failus vai pievieno saites, kas tiks parādītas jūsu lapā. Tie būs redzami lapas sānjoslā.',
+ 'attachments_explain_instant_save' => 'Izmaiņas šeit tiek saglabātas nekavējoties.',
+ 'attachments_upload' => 'Augšupielādēt failu',
+ 'attachments_link' => 'Pievienot saiti',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'Uzstādīt saiti',
+ 'attachments_delete' => 'Vai tiešām vēlaties dzēst šo pielikumu?',
+ 'attachments_dropzone' => 'Ievelciet failus šeit, lai augšupielādētu',
+ 'attachments_no_files' => 'Neviens fails nav augšupielādēts',
+ 'attachments_explain_link' => 'Ja nevēlaties augšupielādēt failu, varat pievienot saiti. Tā var būt saite uz citu lapu vai saite uz failu mākonī.',
+ 'attachments_link_name' => 'Saites nosaukums',
+ 'attachment_link' => 'Pielikuma saite',
+ 'attachments_link_url' => 'Saite uz failu',
+ 'attachments_link_url_hint' => 'Web lapas vai faila URL',
+ 'attach' => 'Pievienot',
+ 'attachments_insert_link' => 'Pievienot pielikuma saiti lapai',
+ 'attachments_edit_file' => 'Rediģēt failu',
+ 'attachments_edit_file_name' => 'Faila nosaukums',
+ 'attachments_edit_drop_upload' => 'Ievelc failus vai spied šeit, lai augšupielādētu vai aizstātu failus',
+ 'attachments_order_updated' => 'Pielikuma secība ir atjaunināta',
+ 'attachments_updated_success' => 'Pielikuma informācja ir atjaunināta',
+ 'attachments_deleted' => 'Pielikums dzēsts',
+ 'attachments_file_uploaded' => 'Fails veiksmīgi augšupielādēts',
+ 'attachments_file_updated' => 'Fails veiksmīgi atjaunināts',
+ 'attachments_link_attached' => 'Hipersaite veismīgi pievienota lapai',
+ 'templates' => 'Šabloni',
+ 'templates_set_as_template' => 'Šī lapa ir šablons',
+ 'templates_explain_set_as_template' => 'Jūs varat iestatīt šo lapu kā veidni, lai tās saturs tiktu izmantots, veidojot citas lapas. Citi lietotāji varēs izmantot šo veidni, ja viņiem būs atļauja piekļūt šai lapai.',
+ 'templates_replace_content' => 'Aizstāt lapas saturu',
+ 'templates_append_content' => 'Pievienot lapas saturam (beigās)',
+ 'templates_prepend_content' => 'Pievienot lapas saturam (sākumā)',
+
+ // Profile View
+ 'profile_user_for_x' => 'Lietotājs jau :time',
+ 'profile_created_content' => 'Izveidotais saturs',
+ 'profile_not_created_pages' => ':userName nav izveidojis lapas',
+ 'profile_not_created_chapters' => ':userName nav izveidojis nodalas',
+ 'profile_not_created_books' => ':userName nav izveidojis grāmatas',
+ 'profile_not_created_shelves' => ':userName nav izveidojis grāmatplauktus',
+
+ // Comments
+ 'comment' => 'Komentārs',
+ 'comments' => 'Komentāri',
+ 'comment_add' => 'Pievienot komentāru',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Pievieno komentāru',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Saglabāt komentāru',
+ 'comment_new' => 'Jauns komentārs',
+ 'comment_created' => 'komentējis :createDiff',
+ 'comment_updated' => ':username atjauninājis pirms :updateDiff',
+ 'comment_updated_indicator' => 'Atjaunots',
+ 'comment_deleted_success' => 'Komentārs ir dzēsts',
+ 'comment_created_success' => 'Komentārs ir pievienots',
+ 'comment_updated_success' => 'Komentārs ir atjaunināts',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Vai esat pārliecināts, ka vēlaties dzēst šo komentāru?',
+ 'comment_in_reply_to' => 'Atbildēt uz :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Here are the comments that have been left on this page. Comments can be added & managed when viewing the saved page.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Vai esat pārliecināts, ka vēlaties dzēst šo revīziju?',
+ 'revision_restore_confirm' => 'Vai tiešām vēlaties atjaunot šo revīziju? Pašreizējais lapas saturs tiks aizvietots.',
+ 'revision_cannot_delete_latest' => 'Nevar dzēst pašreizējo revīziju.',
+
+ // Copy view
+ 'copy_consider' => 'Kopējot saturu, lūdzu ņemiet vērā tālāk minēto.',
+ 'copy_consider_permissions' => 'Pielāgoti tiesību uzstādījumi netiks nokopēti.',
+ 'copy_consider_owner' => 'Jūs kļūsiet par visa kopētā satura īpašnieku.',
+ 'copy_consider_images' => 'Lapas attēlu faili netiks kopēti un sākotnējie attēli saglabās savu saistību ar lapu, kurai tie tika sākotnēji pievienoti.',
+ 'copy_consider_attachments' => 'Lapai pievienotie faili netiks nokopēti.',
+ 'copy_consider_access' => 'Atrašanās vietas, īpašnieka vai piekļuves tiesību izmaiņas var padarīt šo saturu pieejamu citiem, kam iepriekš nav dota piekļuve.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Pārveidot par plauktu',
+ 'convert_to_shelf_contents_desc' => 'Jūs varat pārveidot šo grāmatu par jaunu plauktu ar to pašu saturu. Nodaļas šajā grāmatā tiks pārveidots par jaunām grāmatām. Ja šī grāmata satur atsevišķas lapas, kas neietilpst nevienā nodaļā, tiks izveidota atsevišķa grāmata ar šādām lapām, kas tiks ievietota jaunajā plauktā.',
+ 'convert_to_shelf_permissions_desc' => 'Any permissions set on this book will be copied to the new shelf and to all new child books that don\'t have their own permissions enforced. Note that permissions on shelves do not auto-cascade to content within, as they do for books.',
+ 'convert_book' => 'Pārveidot grāmatu',
+ 'convert_book_confirm' => 'Vai tiešām vēlaties pārveidot šo grāmatu?',
+ 'convert_undo_warning' => 'To nav iespiejāms vienkārši atcelt.',
+ 'convert_to_book' => 'Pārveidot par grāmatu',
+ 'convert_to_book_desc' => 'Jūs varat pārveidot šo nodaļu par grāmatu ar tādu pašu saturu. Visas piekļuves tiesības, kas uzstādītas šai nodaļai, tiks kopētas uz jauno grāmatu, taču piekļuves tiesības, kas tiek uzstādītas pašreizējai grāmatai kopumā, netiks kopētas, tā kā ir iespējams, ka jaunajai grāmati var būt citas piekļuves tiesības.',
+ 'convert_chapter' => 'Pārveidot nodaļu',
+ 'convert_chapter_confirm' => 'Vai tiešām vēlaties pārveidot šo nodaļu?',
+
+ // References
+ 'references' => 'Atsauces',
+ 'references_none' => 'Uz šo vienumu nav atrasta neviena atsauce.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Vērot',
+ 'watch_title_default' => 'Noklusētie uzstādījumi',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignorēt',
+ 'watch_desc_ignore' => 'Ignorēt visus paziņojumus, tai skaitā arī tādus, kas uzstādīti lietotāja uzstādījumos.',
+ 'watch_title_new' => 'Jaunas lapas',
+ 'watch_desc_new' => 'Notify when any new page is created within this item.',
+ 'watch_title_updates' => 'Visi lapu atjauninājumi',
+ 'watch_desc_updates' => 'Paziņot par visām jaunām lapām un lapu izmaiņām.',
+ 'watch_desc_updates_page' => 'Paziņot par visām lapu izmaiņām.',
+ 'watch_title_comments' => 'Visi lapu atjauninājumi un komentāri',
+ 'watch_desc_comments' => 'Paziņot par visām jaunām lapām, lapu izmaiņām un jauniem komentāriem.',
+ 'watch_desc_comments_page' => 'Paziņot par lapu izmaiņām un jauniem komentāriem.',
+ 'watch_change_default' => 'Izmainīt noklusētos paziņojumu uzstādījumus',
+ 'watch_detail_ignore' => 'Ignorēt paziņojumus',
+ 'watch_detail_new' => 'Vērot jaunas lapas',
+ 'watch_detail_updates' => 'Vērot jaunas lapas un atjauninājumus',
+ 'watch_detail_comments' => 'Vērot jaunas lapas, atjauninājumus un komentārus',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/lv/errors.php b/lang/lv/errors.php
new file mode 100644
index 00000000000..a11b5754c9c
--- /dev/null
+++ b/lang/lv/errors.php
@@ -0,0 +1,135 @@
+ 'Jums nav atļauts piekļūt šai lapai.',
+ 'permissionJson' => 'Jums nav atļauts veikt konkrēto darbību.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Lietotājs ar epastu :email bet ar citiem piekļuves datiem jau eksistē.',
+ 'auth_pre_register_theme_prevention' => 'Lietotāja kontu nevar reģistrēt ar norādītajām detaļām',
+ 'email_already_confirmed' => 'Epasts jau ir apstiprināts, mēģini ielogoties.',
+ 'email_confirmation_invalid' => 'Šis apstiprinājuma žetons nav derīgs vai jau ir izmantots. Lūdzu, mēģiniet reģistrēties vēlreiz.',
+ 'email_confirmation_expired' => 'Apstiprinājuma žetona derīguma termiņš ir beidzies. Ir nosūtīts jauns apstiprinājuma e-pasts.',
+ 'email_confirmation_awaiting' => 'Šī konta e-pasta adresei ir nepieciešms apstiprinājums',
+ 'ldap_fail_anonymous' => 'LDAP piekļuve neveiksmīga izmantojot anonymous bind',
+ 'ldap_fail_authed' => 'LDAP piekļuve neveiksmīga izmantojot norādīto dn un paroli',
+ 'ldap_extension_not_installed' => 'LDAP PHP paplašinājums nav instalēts',
+ 'ldap_cannot_connect' => 'Nav iespējams pieslēgties LDAP serverim, sākotnējais pieslēgums neveiksmīgs',
+ 'saml_already_logged_in' => 'Jau ielogojies',
+ 'saml_no_email_address' => 'Ārējās autentifikācijas sistēmas sniegtajos datos nevarēja atrast šī lietotāja e-pasta adresi',
+ 'saml_invalid_response_id' => 'Ārējās autentifikācijas sistēmas pieprasījums neatpazīst procesu, kuru sākusi šī lietojumprogramma. Pārvietojoties atpakaļ pēc pieteikšanās var rasties šāda problēma.',
+ 'saml_fail_authed' => 'Piekļuve ar :system neizdevās, sistēma nepieļāva veiksmīgu autorizāciju',
+ 'oidc_already_logged_in' => 'Jau esat ielogojies',
+ 'oidc_no_email_address' => 'Ārējās autentifikācijas sistēmas sniegtajos datos nevarēja atrast šī lietotāja e-pasta adresi',
+ 'oidc_fail_authed' => 'Piekļuve ar :system neizdevās, sistēma nepieļāva veiksmīgu autorizāciju',
+ 'social_no_action_defined' => 'Darbības nav definētas',
+ 'social_login_bad_response' => "Saņemta kļūda izmantojot :socialAccount piekļuvi:\n:error",
+ 'social_account_in_use' => 'Šis :socialAccount konts jau tiek izmantots, mēģiniet ieiet ar :socialAccount piekļuves iespēju.',
+ 'social_account_email_in_use' => 'Šis epasts :email jau tiek izmantots. Ja jums jau ir konts, jūs varat pieslēgt savu :socialAccount kontu savos profila uzstādījumos.',
+ 'social_account_existing' => 'Šis :socialAccount konts jau ir piesaistīts jūsu profilam.',
+ 'social_account_already_used_existing' => 'Šo :socialAccount konts jau ir piesaistīts citam lietotājam.',
+ 'social_account_not_used' => 'Šis :socialAccount konts nav piesaistīts nevienam lietotājām. Lūdzu pievienojiet to savos profila uzstādījumos. ',
+ 'social_account_register_instructions' => 'Ja jums vēl nav savs konts, jūs varat reģistrēt kontu izmantojot :socialAccount piekļuvi.',
+ 'social_driver_not_found' => 'Sociālā tīkla savienojums nav atrasts',
+ 'social_driver_not_configured' => 'Jūsu :socialAccount sociālie iestatījumi nav uzstādīti pareizi.',
+ 'invite_token_expired' => 'Šī uzaicinājuma saite ir novecojusi. Tā vietā jūs varat mēģināt atiestatīt sava konta paroli.',
+ 'login_user_not_found' => 'Šai darbībai netika atrasts lietotājs.',
+
+ // System
+ 'path_not_writable' => 'Faila ceļā :filePath nav iespējams ielādēt failus. Lūdzu pārliecinieties, ka serverim tur ir rakstīšanas tiesības.',
+ 'cannot_get_image_from_url' => 'Nevar iegūt bildi no :url',
+ 'cannot_create_thumbs' => 'Serveris nevar izveidot samazinātus attēlus. Lūdzu pārbaudiet, vai ir uzstādīts PHP GD paplašinājums.',
+ 'server_upload_limit' => 'Serveris neatļauj šāda izmēra failu ielādi. Lūdzu mēģiniet mazāka izmēra failu.',
+ 'server_post_limit' => 'Serveris nevar apstrādāt šāda izmēra datus. Lūdzu mēģiniet vēlreiz ar mazāku datu apjomu vai mazāku failu.',
+ 'uploaded' => 'Serveris neatļauj šāda izmēra failu ielādi. Lūdzu mēģiniet mazāka izmēra failu.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Radās kļūda augšupielādējot attēlu',
+ 'image_upload_type_error' => 'Ielādējamā attēla tips nav derīgs',
+ 'image_upload_replace_type' => 'Aizvietojot attēlu tipiem ir jābūt vienādiem',
+ 'image_upload_memory_limit' => 'Neizdevās apstrādāt attēla ielādi vai izveidot attēlu variantus sistēmas resursu ierobežojumu dēļ.',
+ 'image_thumbnail_memory_limit' => 'Neizdevās izveidot attēla dažādu izmēru variantus sistēmas resursu ierobežojumu dēļ.',
+ 'image_gallery_thumbnail_memory_limit' => 'Neizdevās izveidot galerijas sīktēlus sistēmas resursu ierobežojumu dēļ.',
+ 'drawing_data_not_found' => 'Attēla datus nevarēja ielādēt. Attēla fails, iespējams, vairs neeksistē, vai arī jums varētu nebūt piekļuves tiesības tam.',
+
+ // Attachments
+ 'attachment_not_found' => 'Pielikums nav atrasts',
+ 'attachment_upload_error' => 'Radās kļūda augšupielādējot pievienoto failu',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Neizdevās saglabāt uzmetumu. Pārliecinieties, ka jūsu interneta pieslēgums ir aktīvs pirms saglabājiet šo lapu',
+ 'page_draft_delete_fail' => 'Neizdevās izdzēst lapas melnrakstu un iegūt pašreizējās lapas saglabāto saturu',
+ 'page_custom_home_deletion' => 'Nav iespējams izdzēst lapu kamēr tā ir uzstādīta kā sākumlapa',
+
+ // Entities
+ 'entity_not_found' => 'Vienība nav atrasta',
+ 'bookshelf_not_found' => 'Plaukts nav atrasts',
+ 'book_not_found' => 'Grāmata nav atrasta',
+ 'page_not_found' => 'Lapa nav atrasta',
+ 'chapter_not_found' => 'Nodaļa nav atrasta',
+ 'selected_book_not_found' => 'Iezīmētā grāmata nav atrasta',
+ 'selected_book_chapter_not_found' => 'Izvēlētā grāmata vai nodaļa nav atrasta',
+ 'guests_cannot_save_drafts' => 'Viesi nevar saglabāt melnrakstus',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Jūs nevarat dzēst vienīgo administratoru',
+ 'users_cannot_delete_guest' => 'Jūs nevarat dzēst lietotāju "viesis"',
+ 'users_could_not_send_invite' => 'Neizdevās izveidot lietotāju, jo neizdevās nosūtīt ielūguma epastu',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Šo lomu nevar rediģēt',
+ 'role_system_cannot_be_deleted' => 'Šī ir sistēmas loma un nevar tikt izdzēsta',
+ 'role_registration_default_cannot_delete' => 'Šī loma nevar tikt izdzēsta, kamēr tā uzstādīta kā noklusētā reģistrācijas loma',
+ 'role_cannot_remove_only_admin' => 'Šis ir vienīgais lietotājs, kam norādīta administratora loma. Pievienojiet administratora lomu citam lietotājam pirms mēģiniet to izslēgt šeit.',
+
+ // Comments
+ 'comment_list' => 'Radās kļūda ielasot komentārus.',
+ 'cannot_add_comment_to_draft' => 'Melnrakstam nevar pievienot komentārus.',
+ 'comment_add' => 'Radās kļūda pievienojot/atjaunojot komentāru.',
+ 'comment_delete' => 'Radās kļūda dzēšot komentāru.',
+ 'empty_comment' => 'Nevar pievienot tukšu komentāru.',
+
+ // Error pages
+ '404_page_not_found' => 'Lapa nav atrasta',
+ 'sorry_page_not_found' => 'Atvainojiet, meklētā lapa nav atrasta.',
+ 'sorry_page_not_found_permission_warning' => 'Ja šai lapai būtu bijis te jābūt, jums var nebūt pietiekamas piekļuves tiesības, lai to apskatītu.',
+ 'image_not_found' => 'Attēls nav atrasts',
+ 'image_not_found_subtitle' => 'Atvainojiet, meklētais attēla fails nav atrasts.',
+ 'image_not_found_details' => 'Ja attēlam būtu jābūt pieejamam, iespējams, tas ir ticis izdzēsts.',
+ 'return_home' => 'Atgriezties uz sākumu',
+ 'error_occurred' => 'Radusies kļūda',
+ 'app_down' => ':appName pagaidām nav pieejams',
+ 'back_soon' => 'Drīz būs atkal pieejams.',
+
+ // Import
+ 'import_zip_cant_read' => 'Nevarēja nolasīt ZIP failu.',
+ 'import_zip_cant_decode_data' => 'Nevarēja atrast un nolasīt data.json saturu ZIP failā.',
+ 'import_zip_no_data' => 'ZIP faila datos nav atrasts grāmatu, nodaļu vai lapu saturs.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'ZIP faila imports ir neveiksmīgs ar šādām kļūdām:',
+ 'import_zip_failed_notification' => 'ZIP faila imports ir neveiksmīgs.',
+ 'import_perms_books' => 'Jums nav nepieciešamo tiesību izveidot grāmatas.',
+ 'import_perms_chapters' => 'Jums nav nepieciešamo tiesību izveidot nodaļas.',
+ 'import_perms_pages' => 'Jums nav nepieciešamo tiesību izveidot lapas.',
+ 'import_perms_images' => 'Jums nav nepieciešamo tiesību izviedot attēlus.',
+ 'import_perms_attachments' => 'Jums nav nepieciešamo tiesību izveidot pielikumus.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Pieprasījumā nav atrasts autorizācijas žetons',
+ 'api_bad_authorization_format' => 'Pieprasījumā atrasts autorizācijas žetons, taču tā formāts nav pareizs',
+ 'api_user_token_not_found' => 'Nav atrasts norādītajam autorizācijas žetonam atbilstošs API žetons',
+ 'api_incorrect_token_secret' => 'Norādītā slepenā atslēga izmantotajam API žetonam nav pareiza',
+ 'api_user_no_api_permission' => 'Izmantotā API žetona īpašniekam nav tiesības veikt API izsaukumus',
+ 'api_user_token_expired' => 'Autorizācijas žetona derīguma termiņš ir izbeidzies',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Radusies kļūda sūtot testa epastu:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'Adrese (URL) nesakrīt ar atļautajām SSR adresēm',
+];
diff --git a/lang/lv/notifications.php b/lang/lv/notifications.php
new file mode 100644
index 00000000000..7233822a46f
--- /dev/null
+++ b/lang/lv/notifications.php
@@ -0,0 +1,29 @@
+ 'Jauns komentārs lapā: :pageName',
+ 'new_comment_intro' => ':appName: lietotājs komentējis lapu',
+ 'new_page_subject' => 'Jauna lapa: :pageName',
+ 'new_page_intro' => 'Jauna lapa izveidota :appName:',
+ 'updated_page_subject' => 'Atjaunināta lapa: :pageName',
+ 'updated_page_intro' => 'Lapa atjaunināta :appName:',
+ 'updated_page_debounce' => 'Lai novērstu pārliecīgu paziņojumu sūtīšanu, uz laiku jums tiks pārtraukti paziņojumi par turpmākiem šī lietotāja labojumiem šai lapai.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Lapas nosaukums:',
+ 'detail_page_path' => 'Ceļš uz lapu:',
+ 'detail_commenter' => 'Komentētājs:',
+ 'detail_comment' => 'Komentārs:',
+ 'detail_created_by' => 'Izveidoja:',
+ 'detail_updated_by' => 'Atjaunināja:',
+
+ 'action_view_comment' => 'Skatīt komentāru',
+ 'action_view_page' => 'Skatīt lapu',
+
+ 'footer_reason' => 'Šis paziņojums nosūtīts tāpēc, ka :link paredz šādu aktivitāti šai vienībai.',
+ 'footer_reason_link' => 'paziņojumu vēlamie iestatījumi',
+];
diff --git a/resources/lang/lv/pagination.php b/lang/lv/pagination.php
similarity index 100%
rename from resources/lang/lv/pagination.php
rename to lang/lv/pagination.php
diff --git a/resources/lang/lv/passwords.php b/lang/lv/passwords.php
similarity index 100%
rename from resources/lang/lv/passwords.php
rename to lang/lv/passwords.php
diff --git a/lang/lv/preferences.php b/lang/lv/preferences.php
new file mode 100644
index 00000000000..3c107d5fa01
--- /dev/null
+++ b/lang/lv/preferences.php
@@ -0,0 +1,52 @@
+ 'Mans konts',
+
+ 'shortcuts' => 'Saīsnes',
+ 'shortcuts_interface' => 'Saskarnes īsceļu iestatījumi',
+ 'shortcuts_toggle_desc' => 'Šeit jūs varat ieslēgt vai izslēgt sistēmas saskarnes klaviatūras īsceļus, kas tiek izmantoti navigācijai un darbībām.',
+ 'shortcuts_customize_desc' => 'Jūs varat pielāgot katru no zemāk esošajiem īsceļiem. Vienkārši nospiediet nepieciešamo pogu kombināciju pēc tam, kad izvēlēts īsceļa ievadlauks.',
+ 'shortcuts_toggle_label' => 'Klaviatūras saīsnes ieslēgtas',
+ 'shortcuts_section_navigation' => 'Navigācija',
+ 'shortcuts_section_actions' => 'Biežākās darbības',
+ 'shortcuts_save' => 'Saglabāt saīsnes',
+ 'shortcuts_overlay_desc' => 'Piezīme: kad īsceļi ir ieslēgti, ir pieejams palīdzības lodziņš, kas parādās, nospiežot "?". Tas attēlos pieejamos īsceļus tajā brīdī pieejamajām darbībām.',
+ 'shortcuts_update_success' => 'Saīsņu uzstādījumi ir saglabāt!',
+ 'shortcuts_overview_desc' => 'Pārvaldīt klaviatūras īsceļus, ko var izmantot sistēmas saskarnes navigācijai.',
+
+ 'notifications' => 'Paziņojumu iestatījumi',
+ 'notifications_desc' => 'Pārvaldiet epasta paziņojumus, ko saņemsiet, kad sistēmā tiek veiktas noteiktas darbības.',
+ 'notifications_opt_own_page_changes' => 'Paziņot par izmaiņām manās lapās',
+ 'notifications_opt_own_page_comments' => 'Paziņot par komentāriem manās lapās',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Paziņot par atbildēm uz maniem komentāriem',
+ 'notifications_save' => 'Saglabāt iestatījumus',
+ 'notifications_update_success' => 'Paziņojumu iestatījumi ir atjaunoti!',
+ 'notifications_watched' => 'Vērotie un ignorētie vienumi',
+ 'notifications_watched_desc' => 'Zemāk ir vienumi, kam piemēroti īpaši vērošanas nosacījumi. Lai atjaunintātu savus uzstādījums šiem, apskatiet vienumu un tad sameklējiet vērošanas uzstādījumus sānu kolonnā.',
+
+ 'auth' => 'Piekļuve un drošība',
+ 'auth_change_password' => 'Mainīt paroli',
+ 'auth_change_password_desc' => 'Mainīt paroli, ko izmantojat, lai piekļūtu aplikācijai. Tai jābūt vismaz 8 simbolus garai.',
+ 'auth_change_password_success' => 'Parole ir nomainīta!',
+
+ 'profile' => 'Profila informācija',
+ 'profile_desc' => 'Pārvaldiet sava konta detaļas, kas jūs attēlo citiem lietotājiem, kā arī detaļas, kas tiek izmantotas saziņai un sistēmas pielāgošanai.',
+ 'profile_view_public' => 'Skatīt publisko profilu',
+ 'profile_name_desc' => 'Uzstādiet savu vārdu, kas tiks parādīts citiem lietotājiem sistēmā pie jūsu darbībām un jums piederošā satura.',
+ 'profile_email_desc' => 'Šis epasts tiks izmantots paziņojumiem un sistēmas piekļuvei, atkarībā no sistēmā uzstādītās autentifikācijas metodes.',
+ 'profile_email_no_permission' => 'Diemžēl jums nav tiesību mainīt savu epasta adresi. Ja vēlaties to mainīt, jums jāsazinās ar administratoru, lai tas nomaina šo adresi.',
+ 'profile_avatar_desc' => 'Izvēlieties attēlu, kas tiks izmantots, lai jūs attēlotu citiem sistēmas lietotājiem. Ideālā gadījumā šim attēlam jābūt kvadrātaveida, apmēram 256px platumā un augstumā.',
+ 'profile_admin_options' => 'Administratora iestatījumi',
+ 'profile_admin_options_desc' => 'Papildus administratora iestatījumus, kā piemēram, lomu piešķiršanu, var atrast jūsu lietotāja kontā ejot uz "Uzstādījumu > Lietotāji".',
+
+ 'delete_account' => 'Dzēst kontu',
+ 'delete_my_account' => 'Izdzēst manu kontu',
+ 'delete_my_account_desc' => 'Šī darbība pilnībā izdzēsīs jūsu lietotāja kontu no sistēmas. Jūs vairs nevarēsiet piekļūt kontam, atcelt šo darbību vai atjaunot kontu. Jūsu izveidotais saturs, piemēram, izveidotās lapas un augšupielādētie attēli, tiks saglabāts.',
+ 'delete_my_account_warning' => 'Vai tiešām vēlaties dzēst savu kontu?',
+];
diff --git a/lang/lv/settings.php b/lang/lv/settings.php
new file mode 100644
index 00000000000..9dc6bf402bd
--- /dev/null
+++ b/lang/lv/settings.php
@@ -0,0 +1,374 @@
+ 'Iestatījumi',
+ 'settings_save' => 'Saglabāt iestatījumus',
+ 'system_version' => 'Sistēmas versija',
+ 'categories' => 'Kategorijas',
+
+ // App Settings
+ 'app_customization' => 'Pielāgojumi',
+ 'app_features_security' => 'Funkcijas un drošība',
+ 'app_name' => 'Lietotnes nosaukums',
+ 'app_name_desc' => 'Šis vārds tiks rādīts navigācijas joslā un sistēmas sūtītajis e-pastos.',
+ 'app_name_header' => 'Rādīt vārdu navigācijas joslā',
+ 'app_public_access' => 'Publiska piekļuve',
+ 'app_public_access_desc' => 'Šīs opcijas ieslēgšana ļaus neautorizētiem apmeklētājiem piekļūt jūsu BookStack saturam.',
+ 'app_public_access_desc_guest' => 'Publisku apmeklētāju piekļuvi var kontrolēt "Guest" (Viesa) lietotāja uzstādījumos.',
+ 'app_public_access_toggle' => 'Atļaut publisku piekļuvi',
+ 'app_public_viewing' => 'Atļaut publisku piekļuvi?',
+ 'app_secure_images' => 'Paaugstinātas drošības attēlu ielāde',
+ 'app_secure_images_toggle' => 'Ieslēgt paaugstinātas drošības attēlu ielādi',
+ 'app_secure_images_desc' => 'Ātrdarbības nolūkos attēli ir publiski pieejami. Šī opcija pievieno nejaušu grūti uzminamu teksta virkni attēlu adresēs. Pārliecinieties kā ir izslēgta direktoriju pārlūkošana, lai nepieļautu vieglu piekļuvi šiem failiem.',
+ 'app_default_editor' => 'Noklusētais lapu redaktors',
+ 'app_default_editor_desc' => 'Izvēlieties noklusēto redaktoru jaunu lapu rediģēšanai. To iespējams norādīt arī lapu līmenī, ja piekļuves tiesības to atļauj.',
+ 'app_custom_html' => 'Pielāgot HTML head saturu',
+ 'app_custom_html_desc' => 'Šis saturs tiks pievienots sadaļas apakšā visām lapām. Tas ir noderīgi papildinot CSS stilus vai pievienojot analītikas kodu.',
+ 'app_custom_html_disabled_notice' => 'Pielāgots HTML head saturs ir izslēgts šajā uzstādījumu lapā, lai nodrošinātu, ka iespējams atcelt jebkādas kritiskas izmaiņas.',
+ 'app_logo' => 'Lietotnes logo',
+ 'app_logo_desc' => 'Tas tiek izmantots lietotnes galvenē un citās vietās. Attēlam jābūt 86px augstam, lieli attēli tiks samazināti.',
+ 'app_icon' => 'Lietotnes ikona',
+ 'app_icon_desc' => 'Ikona tiek izmantota pārlūka cilnēm un īsceļiem. Tai jābūt 256px kvadrātveida PNG attēlam.',
+ 'app_homepage' => 'Aplikācijas sākumlapa',
+ 'app_homepage_desc' => 'Izvēlēties skatu, ko rādīt sākumlapā noklusētā skata vietā. Lapas piekļuves tiesības izvēlētajai lapai netiks ņemtas vērā.',
+ 'app_homepage_select' => 'Izvēlēties lapu',
+ 'app_footer_links' => 'Kājenes saites',
+ 'app_footer_links_desc' => 'Pievienot saites, ko attēlot lapas kājenē. Tās tiks attēlotas lielākās daļas lapu apakšā, ieskaitot tās, kas pieejamas bez reģistrācijas. Jūs varat izmantot nosaukumu "trans::", lai izmantotu sistēmā definētus tulkojumus. Piemēram, "trans::common.privacy_policy" tiks aizvietots ar tulkoto tekstu "Privātuma politika" un "trans::common.terms_of_service" kļūs par "Lietošanas noteikumi".',
+ 'app_footer_links_label' => 'Saites nosaukums',
+ 'app_footer_links_url' => 'Saites URL',
+ 'app_footer_links_add' => 'Pievienot kājenes saiti',
+ 'app_disable_comments' => 'Izslēgt komentārus',
+ 'app_disable_comments_toggle' => 'Izslēgt komentārus',
+ 'app_disable_comments_desc' => 'Atslēdz komentārus visās aplikācijas lapās. Jau eksistējoši komentāri netiks attēloti.',
+
+ // Color settings
+ 'color_scheme' => 'Lietotnes krāsu shēma',
+ 'color_scheme_desc' => 'Uzstādiet krāsas, ko izmantot aplikācijas lietotātja saskarnē. Krāsas var uzstādīt atsevišķi gaišajam un tumšajam režīmam, lai labāk iederētos vizuālajā tēmā un nodrošinātu lasāmību.',
+ 'ui_colors_desc' => 'Uzstādiem aplikācijas primāro krāsu un noklusēto saišu krāsu. Primārā krāsa tiek izmantota galvenokārt lapas galvenē, uz pogām un saskarnes dekoratīvajos elementos. Noklusētā saišu krāsa tiek lietota teksta saitēm un darbībām gan izveidotajā saturā, gan aplikācijas saskarnē.',
+ 'app_color' => 'Pamatkrāsa',
+ 'link_color' => 'Noklusētā saišu krāsa',
+ 'content_colors_desc' => 'Norādīt krāsas visiem lapas hierarhijas elementiem. Lasāmības labad ieteicams izvēlēties krāsas ar līdzīgu spilgtumu kā noklusētajām.',
+ 'bookshelf_color' => 'Plaukta krāsa',
+ 'book_color' => 'Grāmatas krāsa',
+ 'chapter_color' => 'Nodaļas krāsa',
+ 'page_color' => 'Lapas krāsa',
+ 'page_draft_color' => 'Lapas uzmetuma krāsa',
+
+ // Registration Settings
+ 'reg_settings' => 'Reģistrācija',
+ 'reg_enable' => 'Iespējot reģistrāciju',
+ 'reg_enable_toggle' => 'Iespējot reģistrāciju',
+ 'reg_enable_desc' => 'Kad reģistrācija ir ieslēgta, lietotāji varēs paši reģistrēties kā aplikācijas lietotāji. Pēc reģistrācijas tiem tiks piešķirta noklusētā lietotāja loma.',
+ 'reg_default_role' => 'Noklusētā lietotāja loma pēc reģistrācijas',
+ 'reg_enable_external_warning' => 'Šis uzstādījums tiek ignorēts kamēr tiek izmantota ārēja LDAP vai SAML autentifikācija. Tiks izveidoti lietotāju konti neeksistējošiem leitotājiem, ja autentifikācija pret ārējo sistēmu būs veiksmīga.',
+ 'reg_email_confirmation' => 'E-pasta apstiprinājums',
+ 'reg_email_confirmation_toggle' => 'Pieprasīt epasta apstiprināšanu',
+ 'reg_confirm_email_desc' => 'Ja ieslēgts domēnu ierobežojums, tad būs nepieciešama epasta apstiprināšana un šis uzstādījums tiks ignorēts.',
+ 'reg_confirm_restrict_domain' => 'Domēnu ierobežojums',
+ 'reg_confirm_restrict_domain_desc' => 'Ievadiet ar komatiem atdalītu sarakstu ar epasta domēniem, kam jūs gribētu atļaut reģistrāciju. Lietotājiem tiks nosūtīts epasts, lai apstiprinātu tā adresi pirms tiks ļauts darboties ar aplikāciju. Ņemiet vērā, ka lietotāji varēs nomainīt savu epasta adresi pēc veiksmīgas reģistrācijas.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Nav ierobežojumu',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Izvēlieties noklusēto kārtošanas nosacījumu, ko pielietot jaunām grāmatām. Šis neskars jau esošas grāmatas, un to var izmainīt grāmatas iestatījumos.',
+ 'sorting_rules' => 'Kārtošanas noteikumi',
+ 'sorting_rules_desc' => 'Šīs ir iepriekš noteiktas kārtošanas darbības, ko var pielietot saturam šajā sistēmā.',
+ 'sort_rule_assigned_to_x_books' => 'Pielietots :count grāmatai|Pielietots :count grāmatām',
+ 'sort_rule_create' => 'Izveidot kārtošanas nosacījumu',
+ 'sort_rule_edit' => 'Rediģēt kārtošanas nosacījumu',
+ 'sort_rule_delete' => 'Dzēst kārtošanas nosacījumu',
+ 'sort_rule_delete_desc' => 'Izņemt šo kārtošanas nosacījumu no sistēmas. Grāmatām tiks atjaunota manuāla kārtošana.',
+ 'sort_rule_delete_warn_books' => 'Šis kārtošanas nosacījums pašlaik tiek izmantots :count grāmatām. Vai tiešām vēlaties to dzēst?',
+ 'sort_rule_delete_warn_default' => 'Šis kārtošanas nosacījums pašlaik ir norādīts kā noklusētais. Vai tiešām vēlaties to dzēst?',
+ 'sort_rule_details' => 'Kārtošanas nosacījuma detaļas',
+ 'sort_rule_details_desc' => 'Uzstādiet nosaukumu šim kārtošanas nosacījumam, kas parādīsies sarakstā, kad lietotājs izvēlēsies kārtošanas veidu.',
+ 'sort_rule_operations' => 'Kārtošanas darbības',
+ 'sort_rule_operations_desc' => 'Konfigurējiet kārtošanas darbības pārvelkot tās no pieejamo darb\'biu saraksta. Lietošanas procesā darbības tiks piemērotas saraksta kārtībā no augšas uz apakšu. Jekbādas izmaiņas šeit tiks piemērotas grāmatās, kur šis piemērots, pie saglabāšanas.',
+ 'sort_rule_available_operations' => 'Pieejamās darbības',
+ 'sort_rule_available_operations_empty' => 'Nav atlikušas darbības',
+ 'sort_rule_configured_operations' => 'Uzstādītās darbības',
+ 'sort_rule_configured_operations_empty' => 'Ievelciet/pievienojiet darbības no "Pieejamo darbību" saraksta',
+ 'sort_rule_op_asc' => '(Pieaug.)',
+ 'sort_rule_op_desc' => '(Dilst.)',
+ 'sort_rule_op_name' => 'Nosaukums - alfabētiski',
+ 'sort_rule_op_name_numeric' => 'Nosaukums - numuriski',
+ 'sort_rule_op_created_date' => 'Izveidošanas datums',
+ 'sort_rule_op_updated_date' => 'Atjaunināšanas datums',
+ 'sort_rule_op_chapters_first' => 'Nodaļas pirmās',
+ 'sort_rule_op_chapters_last' => 'Nodaļas pēdējās',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Apkope',
+ 'maint_image_cleanup' => 'Tīrīt neizmantotās bildes',
+ 'maint_image_cleanup_desc' => 'Pārbauda lapu un lapu versiju saturu, lai noteiktu, kuri attēli pašlaik tiek izmantoti, un kuri nav nepieciešami. Pārliecinieties, ka ir veikta pilna datubāzes un attēlu rezerves kopija pirms šīs darbības.',
+ 'maint_delete_images_only_in_revisions' => 'Dzēst arī attēlus, kas izmantoti tikai vecās lapu satura versijās',
+ 'maint_image_cleanup_run' => 'Veikt tīrīšanu',
+ 'maint_image_cleanup_warning' => ':count iespējami neizmantoti attēli atrasti. Vai tiešām vēlaties izdzēst šos attēlus?',
+ 'maint_image_cleanup_success' => ':count iespējami neizmantoti attēli atrasti un izdzēsti!',
+ 'maint_image_cleanup_nothing_found' => 'Nav atrasti neizmantoti attēli, nekas netika izdzēsts!',
+ 'maint_send_test_email' => 'Nosūtīt testa epastu',
+ 'maint_send_test_email_desc' => 'Nosūtīt testa epastu uz jūsu profilā norādīto epasta adresi.',
+ 'maint_send_test_email_run' => 'Nosūtīt testa epastu',
+ 'maint_send_test_email_success' => 'Epasts nosūtīts uz :address',
+ 'maint_send_test_email_mail_subject' => 'Testa epasts',
+ 'maint_send_test_email_mail_greeting' => 'Izskatās, ka epasta piegāde strādā!',
+ 'maint_send_test_email_mail_text' => 'Apsveicam! Tā kā jūs saņēmāt šo epasta paziņojumu, jūsu epasta uzstādījumi šķiet pareizi.',
+ 'maint_recycle_bin_desc' => 'Dzēstie plaukti, grāmatas, nodaļas un lapas ir pārceltas uz miskasti, lai tos varētu atjaunot vai izdzēst pilnībā. Vecākas vienības miskastē var tikt automātiski dzēstas pēc kāda laika atkarībā no sistēmas uzstādījumiem.',
+ 'maint_recycle_bin_open' => 'Atvērt miskasti',
+ 'maint_regen_references' => 'Atjaunot atsauces',
+ 'maint_regen_references_desc' => 'Šī darbība no jauna izveidos atsauču indeksu datubāzē. Tas parasti notiek automātiski, taču šī darbība var palīdzēt, lai indeksētu vecāku saturu vai saturu, kas pievienots, izmantojot nestandarta metodes.',
+ 'maint_regen_references_success' => 'Atsauču indekss ir izveidots!',
+ 'maint_timeout_command_note' => 'Piezīme: Šī darbība var prasīt ilgāku laiku, kas var radīt pieprasījuma laika kļūmes (timeout) pie noteiktiem interneta vietnes uzstādījumiem. Alternatīva var būt veikt šo darbību, izmantojot termināla komandu.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Miskaste',
+ 'recycle_bin_desc' => 'Te jūs varat atjaunot dzēstās vienības vai arī izdzēst tās no sistēmas pilnībā. Šis saraksts nav filtrēts atšķirībā no līdzīgiem darbību sarakstiem sistēmā, kur ir piemēroti piekļuves tiesību filtri.',
+ 'recycle_bin_deleted_item' => 'Dzēsta vienība',
+ 'recycle_bin_deleted_parent' => 'Augstāks līmenis',
+ 'recycle_bin_deleted_by' => 'Izdzēsa',
+ 'recycle_bin_deleted_at' => 'Dzēšanas laiks',
+ 'recycle_bin_permanently_delete' => 'Neatgriezeniski izdzēst',
+ 'recycle_bin_restore' => 'Atjaunot',
+ 'recycle_bin_contents_empty' => 'Miskaste ir tukša',
+ 'recycle_bin_empty' => 'Iztīrīt miskasti',
+ 'recycle_bin_empty_confirm' => 'Šī darbība pilnībā dzēsīs visas vienības miskastē, ieskaitot saturu, kas ievietots katrā no šīm vienībām. Vai tiešām vēlaties dzēst visu miskastes saturu?',
+ 'recycle_bin_destroy_confirm' => 'Šī darbība pilnībā no sistēmas izdzēsis šo vienību kopā ar tai pakārtotajiem elementiem, un jūs nevarēsiet šo saturu atjaunot. Vai tiešām vēlaties pilnībā izdzēst šo vienību?',
+ 'recycle_bin_destroy_list' => 'Dzēšamās vienības',
+ 'recycle_bin_restore_list' => 'Atjaunojamās vienības',
+ 'recycle_bin_restore_confirm' => 'Šī darbība atjaunos dzēsto vienību, tai skaitā visus tai pakārtotos elementus, uz tās sākotnējo atrašanās vietu. Ja sākotnējā atrašanās vieta ir izdzēsta un atrodas miskastē, būs nepieciešams atjaunot arī to.',
+ 'recycle_bin_restore_deleted_parent' => 'Šo elementu saturošā vienība arī ir dzēsta. Tas paliks dzēsts līdz šī saturošā vienība arī ir atjaunota.',
+ 'recycle_bin_restore_parent' => 'Atjaunot augstāku līmeni',
+ 'recycle_bin_destroy_notification' => 'Dzēstas kopā :count vienības no miskastes.',
+ 'recycle_bin_restore_notification' => 'Atjaunotas kopā :count vienības no miskastes.',
+
+ // Audit Log
+ 'audit' => 'Auditācijas pieraksti',
+ 'audit_desc' => 'Šie auditācijas pieraksti attēlo sarakstu ar sistēmā reģistrētajām aktivitātēm. Šis saraksts nav filtrēts atšķirībā no līdzīgiem aktivitāšu sarakstiem sistēmā, kur ir piemēroti atļauto darbību filtri.',
+ 'audit_event_filter' => 'Notikumu filtrs',
+ 'audit_event_filter_no_filter' => 'Bez filtra',
+ 'audit_deleted_item' => 'Dzēsta vienība',
+ 'audit_deleted_item_name' => 'Vārds: :name',
+ 'audit_table_user' => 'Lietotājs',
+ 'audit_table_event' => 'Notikums',
+ 'audit_table_related' => 'Saistīta vienība vai detaļa',
+ 'audit_table_ip' => 'IP adrese',
+ 'audit_table_date' => 'Notikuma datums',
+ 'audit_date_from' => 'Datums no',
+ 'audit_date_to' => 'Datums līdz',
+
+ // Role Settings
+ 'roles' => 'Grupas',
+ 'role_user_roles' => 'Lietotāju grupas',
+ 'roles_index_desc' => 'Lomas tiek izmantotas, lai sagrupētu lietotājus un piešķirtu piekļuves tiesības to dalībniekiem. Kad lietotājs ir vairāku lomu dalībnieks, piešķirtās tiesības tiks summētas un lietotājam būs visas tiesības.',
+ 'roles_x_users_assigned' => ':count lietotājam piešķirts|:count lietotājiem piešķirts',
+ 'roles_x_permissions_provided' => ':count tiesības|:count tiesības',
+ 'roles_assigned_users' => 'Pievienotie lietotāji',
+ 'roles_permissions_provided' => 'Piešķirtās tiesības',
+ 'role_create' => 'Izveidot jaunu grupu',
+ 'role_delete' => 'Dzēst grupu',
+ 'role_delete_confirm' => 'Loma \':roleName\' tiks dzēsta.',
+ 'role_delete_users_assigned' => 'Šajā grupā ir pievienoti :userCount lietotāji. Ja vēlaties pārvietot lietotājus no šīs grupas, tad izvēlaties kādu no zemāk redzamajām grupām.',
+ 'role_delete_no_migration' => "Nepārvietot lietotājus",
+ 'role_delete_sure' => 'Vai tiešām vēlaties dzēst grupu?',
+ 'role_edit' => 'Rediģēt grupu',
+ 'role_details' => 'Informācija par grupu',
+ 'role_name' => 'Grupas nosaukums',
+ 'role_desc' => 'Īss grupas apaksts',
+ 'role_mfa_enforced' => 'Nepieciešama vairākfaktoru autentifikācija',
+ 'role_external_auth_id' => 'Ārējais autentifikācijas ID',
+ 'role_system' => 'Sistēmas atļaujas',
+ 'role_manage_users' => 'Pārvaldīt lietotājus',
+ 'role_manage_roles' => 'Pārvaldīt grupas un grupu atļaujas',
+ 'role_manage_entity_permissions' => 'Pārvaldīt visu grāmatu, nodaļu un lapu atļaujas',
+ 'role_manage_own_entity_permissions' => 'Pārvaldīt atļaujas savām grāmatām, nodaļām un lapām',
+ 'role_manage_page_templates' => 'Pārvaldīt lapas veidnes',
+ 'role_access_api' => 'Piekļūt sistēmas API',
+ 'role_manage_settings' => 'Pārvaldīt iestatījumus',
+ 'role_export_content' => 'Eksportēt saturu',
+ 'role_import_content' => 'Importēt saturu',
+ 'role_editor_change' => 'Mainīt lapu redaktoru',
+ 'role_notifications' => 'Saņemt un pārvaldīt paziņojumus',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Resursa piekļuves tiesības',
+ 'roles_system_warning' => 'Jebkuras no trīs augstāk redzamajām atļaujām dod iespēju lietotājam mainīt savas un citu lietotāju sistēmas atļaujas. Pievieno šīs grupu atļaujas tikai tiem lietotājiem, kuriem uzticies.',
+ 'role_asset_desc' => 'Šīs piekļuves tiesības kontrolē noklusēto piekļuvi sistēmas resursiem. Grāmatām, nodaļām un lapām norādītās tiesības būs pārākas par šīm.',
+ 'role_asset_admins' => 'Administratoriem automātiski ir piekļuve visam saturam, bet šie uzstādījumi var noslēpt vai parādīt lietotāja saskarnes iespējas.',
+ 'role_asset_image_view_note' => 'Šis ir saistīts ar redzamību attēlu pārvaldniekā. Faktiskā piekļuve augšupielādēto attēlu failiem būs atkarīga no sistēmas attēlu glabātuves uzstādījuma.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Visi',
+ 'role_own' => 'Savi',
+ 'role_controlled_by_asset' => 'Kontrolē resurss, uz ko tie ir augšupielādēti',
+ 'role_save' => 'Saglabāt grupu',
+ 'role_users' => 'Lietotāji šajā grupā',
+ 'role_users_none' => 'Pagaidām neviens lietotājs nav pievienots šai grupai',
+
+ // Users
+ 'users' => 'Lietotāji',
+ 'users_index_desc' => 'Izveidot un pārvaldīt atsevišķus lietotāju kontus sistēmā. Lietotāju konti tiek izmantoti piekļuvei un satura un aktivitāšu piesaistei. Piekļuves tiesības ir pamatā balstītas uz lomām, bet lietotāju veidotā satura piederība, cita starpā, arī var ietekmēt piekļuvi un tiesības.',
+ 'user_profile' => 'Lietotāja profils',
+ 'users_add_new' => 'Pievienot jaunu lietotāju',
+ 'users_search' => 'Meklēt lietotājus',
+ 'users_latest_activity' => 'Pēdējās aktivitātes',
+ 'users_details' => 'Lietotāja informācija',
+ 'users_details_desc' => 'Uzstādīt attēlojamo vārdu un epast adresi šim lietotājam. Epasta adresi varēs izmantot, lai piekļūtu aplikācijai.',
+ 'users_details_desc_no_email' => 'Uzstādiet attēlojamu vārdu šim lietotājam, lai citi varētu viņu atpazīt.',
+ 'users_role' => 'Lietotāju grupas',
+ 'users_role_desc' => 'Izvēlēties kurām grupām pievienot lietotāju. Ja lietotājs ir pievienots vairākām grupām, tad lietotājam būs pieejamas visu grupu atļaujas.',
+ 'users_password' => 'Lietotāja parole',
+ 'users_password_desc' => 'Uzstādiet paroli, ar ko piekļūt aplikācijai. Tai jābūt vismaz 8 simbolus garai.',
+ 'users_send_invite_text' => 'Jūs varat izvēlētes vai nosūtīt šim lietotājam uzaicinājuma epastu, kas ļauj tam uzstādīt savu paroli pašam, vai arī varat uzstādīt paroli tagad.',
+ 'users_send_invite_option' => 'Nosūtīt lietotāja uzaicinājuma epastu',
+ 'users_external_auth_id' => 'Ārējais autentifikācijas ID',
+ 'users_external_auth_id_desc' => 'Kad tiek izmantota ārēja autentifikācijas sistēma (piemēram, SAML2, OIDC vai LDAP), šis ir identifikators (ID), kas sasaista šo BookStack lietotāja kontu ar autentifikācijas sistēmas kontu. Jūs varat ignorēt šo lauku, ja izmantojat noklusēto autentifikāciju ar epasta adresi.',
+ 'users_password_warning' => 'Aizpildiet tikai tad, ja vēlaties mainīt paroli šim lietotājam.',
+ 'users_system_public' => 'Šis lietotājs apzīmē visus viesus, kas apmeklēs jūsu lapu. To nevar izmantot lapas piekļuvei un tas tiek norādīts automātiski.',
+ 'users_delete' => 'Dzēst lietotāju',
+ 'users_delete_named' => 'Dzēst lietotāju :userName',
+ 'users_delete_warning' => 'Šī darbība pilnībā izdzēsīs lietotāju \':userName\' no sistēmas.',
+ 'users_delete_confirm' => 'Vai tiešām vēlaties dzēst šo lietotāju?',
+ 'users_migrate_ownership' => 'Pārcelt īpašumtiesības',
+ 'users_migrate_ownership_desc' => 'Izvēlieties lietotāju, ja vēlaties citam lietotājam pārcelt pašlaik šim lietotājam piederošās vienības.',
+ 'users_none_selected' => 'Nav izvēlēts lietotājs',
+ 'users_edit' => 'Rediģēt lietotāju',
+ 'users_edit_profile' => 'Rediģēt profilu',
+ 'users_avatar' => 'Lietotāja attēls',
+ 'users_avatar_desc' => 'Izvēlieties attēlu šim lietotājam. Tam vajadzētu būt apmēram 256px kvadrātam.',
+ 'users_preferred_language' => 'Vēlamā valoda',
+ 'users_preferred_language_desc' => 'Šis uzstādījums nomainīs valodu, kas izmantota aplikācijas lietotāja saskarnē. Tas neietekmēs neko no lietotāju radītā satura.',
+ 'users_social_accounts' => 'Sociālie konti',
+ 'users_social_accounts_desc' => 'Skatīt piesaistīto sociālo kontu statusu šim lietotājam. Sociālos kontus var izmantot piekļuvei papildus primārajai autentifikācijas sistēmai.',
+ 'users_social_accounts_info' => 'Te jūs varat pieslēgt citus kontus ātrākai un ērtākai piekļuvei. Konta atvienošana no šejienes neatceļ šai aplikācijai dotās tiesības šī konta piekļuvei. Atvienojtiet piekļuvi arī no jūsu profila uzstādījumiem pievienotajā sociālajā kontā.',
+ 'users_social_connect' => 'Pievienot kontu',
+ 'users_social_disconnect' => 'Atvienot kontu',
+ 'users_social_status_connected' => 'Savienots',
+ 'users_social_status_disconnected' => 'Atvienots',
+ 'users_social_connected' => ':socialAccount konts veiksmīgi pieslēgts jūsu profilam.',
+ 'users_social_disconnected' => ':socialAccount konts veiksmīgi atslēgts no jūsu profila.',
+ 'users_api_tokens' => 'API žetoni',
+ 'users_api_tokens_desc' => 'Izveidot un pārvaldīt piekļuves žetonus, lai autentificētos ar BookStack REST API. API tiesības ir tās pašas, kas lietotāja kontam, kam pieder šis žetons.',
+ 'users_api_tokens_none' => 'Šim lietotājam nav izveidotu API žetonu',
+ 'users_api_tokens_create' => 'Izveidot žetonu',
+ 'users_api_tokens_expires' => 'Derīguma termiņš',
+ 'users_api_tokens_docs' => 'API dokumentācija',
+ 'users_mfa' => 'Vairākfaktoru autentifikācija',
+ 'users_mfa_desc' => 'Iestati vairākfaktoru autentifikāciju kā papildus drošības līmeni tavam lietotāja kontam.',
+ 'users_mfa_x_methods' => ':count metode iestatīta|:count metodes iestatītas',
+ 'users_mfa_configure' => 'Iestatīt metodes',
+
+ // API Tokens
+ 'user_api_token_create' => 'Izveidot API žetonu',
+ 'user_api_token_name' => 'Vārds',
+ 'user_api_token_name_desc' => 'Uzstādiet nolasāmu nosaukumu savam žetonam, lai nākotnē atgadinātu par tā pielietojumu.',
+ 'user_api_token_expiry' => 'Derīgs līdz',
+ 'user_api_token_expiry_desc' => 'Uzstādiet datumu, kad beidzas žetona derīguma termiņš. Pieprasījumi, kas veikti pēc šī datuma ar šo žetonu vairs nedarbosies. Atstājot lauku tukšu, tiks uzstādīts derīguma termiņš 100 gadu nākotnē.',
+ 'user_api_token_create_secret_message' => 'Uzreiz pēc žetona izveidošanas tiks parādīts žetona ID un žetona noslēpums. Šis noslēpums tiks attēlots tikai vienreiz, tāpēc pārliecinieties, ka tā vērtība ir nokopēta uz kādu citu drošu vietu pirms turpināšanas.',
+ 'user_api_token' => 'API žetons',
+ 'user_api_token_id' => 'Žetona ID',
+ 'user_api_token_id_desc' => 'Šis ir neizmaināms sistēmas ģenerēts identifikators šim žetonam, kas būs jānorāda API pieprasījumos.',
+ 'user_api_token_secret' => 'Žetona noslēpums',
+ 'user_api_token_secret_desc' => 'Šis ir sistēmas ģenerēts noslēpums šim žetonam, ko būs nepieciešams norādīt API pieprasījumos. Tas tiks attēlots tikai vienu reizi, tāpēc nokopējiet to uz kādu citu drošu vietu.',
+ 'user_api_token_created' => 'Žetons izveidots :timeAgo',
+ 'user_api_token_updated' => 'Žetons atjaunināts :timeAgo',
+ 'user_api_token_delete' => 'Dzēst žetonu',
+ 'user_api_token_delete_warning' => 'Šī darbība pilnībā izdzēsīs API žetonu \':tokenName\' no sistēmas.',
+ 'user_api_token_delete_confirm' => 'Vai tiešām vēlaties dzēst šo API žetonu?',
+
+ // Webhooks
+ 'webhooks' => 'Webhook',
+ 'webhooks_index_desc' => 'Webhook ir veids, kā nosūtīt datus ārējām adresēm (URL) pie noteiktām darbībām vai notikumiem sistēmā. Tas ļauj īstenot uz notikumiem balstītu integrāciju ar ārējām platformām, kā piemēram, apziņošanas sistēmām.',
+ 'webhooks_x_trigger_events' => ':count notikums|:count notikumi',
+ 'webhooks_create' => 'Izveidot jaunu webhook',
+ 'webhooks_none_created' => 'Nav izveidots neviens webhook.',
+ 'webhooks_edit' => 'Labot webhook',
+ 'webhooks_save' => 'Saglabāt webhook',
+ 'webhooks_details' => 'Webhook detaļas',
+ 'webhooks_details_desc' => 'Norādiet lietotājiem draudzīgu nosaukumu un POST adresi (endpoint), uz ko nosūtīt webhook datus.',
+ 'webhooks_events' => 'Webhook notikumi',
+ 'webhooks_events_desc' => 'Izvēlieties visus notikumus, kas izsauks šo webhook.',
+ 'webhooks_events_warning' => 'Ņemiet vērā, ka šie notikumi tiks palaisti visiem izvēlētajiem notikumiem, pat ja norādītas pielāgotas piekļuves tiesības. Pārliecineities, ka webhook lietošana neatklās ierobežotas pieejamības saturu.',
+ 'webhooks_events_all' => 'Visi sistēmas notikumi',
+ 'webhooks_name' => 'Webhook nosaukums',
+ 'webhooks_timeout' => 'Webhook pieprasījuma laika ierobežojums (sekundēs)',
+ 'webhooks_endpoint' => 'Webhook adrese (endpoint)',
+ 'webhooks_active' => 'Webhook aktīvs',
+ 'webhook_events_table_header' => 'Notikumi',
+ 'webhooks_delete' => 'Dzēst webhook',
+ 'webhooks_delete_warning' => 'Webhook ar nosaukumu \':webhookName\' tiks pilnībā dzēsts no sistēmas.',
+ 'webhooks_delete_confirm' => 'Vai tiešām vēlaties dzēst šo webhook?',
+ 'webhooks_format_example' => 'Webhook formāta piemērs',
+ 'webhooks_format_example_desc' => 'Webhook dati tiek nosūtīti kā POST pieprasījums norādītajai endpoint adresei kā JSON tālāk norādītajā formātā. "related_item" un "url" īpašības nav obligātas un ir atkarīgas no palaistā notikuma veida.',
+ 'webhooks_status' => 'Webhook statuss',
+ 'webhooks_last_called' => 'Pēdejoreiz izsaukts:',
+ 'webhooks_last_errored' => 'Pedējoreiz kļūda:',
+ 'webhooks_last_error_message' => 'Pēdējais kļūdas paziņojums:',
+
+ // Licensing
+ 'licenses' => 'Licences',
+ 'licenses_desc' => 'Šī lapa attēlo BookStack licences informāciju, kā arī licences citiem projektiem un bibliotēkām, kas tiek izmantoti BookStack. Daļa no minētajiem projektiem var būt izmantoti tikai izstrādē.',
+ 'licenses_bookstack' => 'BookStack licence',
+ 'licenses_php' => 'PHP bibliotēku licences',
+ 'licenses_js' => 'JavaScript bibliotēku licences',
+ 'licenses_other' => 'Citas licences',
+ 'license_details' => 'Licences informācija',
+
+ //! 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' => 'Katalāņu',
+ 'cs' => 'Česky',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Igauņu',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/lv/validation.php b/lang/lv/validation.php
new file mode 100644
index 00000000000..befad5eeb9a
--- /dev/null
+++ b/lang/lv/validation.php
@@ -0,0 +1,123 @@
+ ':attribute ir jāapstiprina.',
+ 'active_url' => ':attribute nav derīgs URL.',
+ 'after' => ':attribute ir jābūt datumam pēc :date.',
+ 'alpha' => ':attribute var saturēt tikai burtus.',
+ 'alpha_dash' => ':attribute var saturēt tikai burtus, ciparus, domuzīmes un apakš svītras.',
+ 'alpha_num' => ':attribute var saturēt tikai burtus un ciparus.',
+ 'array' => ':attribute ir jābūt masīvam.',
+ 'backup_codes' => 'Ievadītais kods nav derīgs vai arī jau ir izmantots.',
+ 'before' => ':attribute jābūt datumam pirms :date.',
+ 'between' => [
+ 'numeric' => ':attribute jābūt starp :min un :max.',
+ 'file' => ':attribute jābūt starp :min un :max kilobaitiem.',
+ 'string' => ':attribute jābūt starp :min un :max rakstzīmēm.',
+ 'array' => 'Atribūtam jābūt starp: min un: max vienumiem.',
+ ],
+ 'boolean' => ':attribute jābūt True vai False.',
+ 'confirmed' => ':attribute apstiprinājums nesakrīt.',
+ 'date' => ':attribute nav derīgs datums.',
+ 'date_format' => ':attribute neatbilst formātam :format.',
+ 'different' => ':attribute un :other jābūt atšķirīgiem.',
+ 'digits' => ':attribute jābūt :digits cipariem.',
+ 'digits_between' => ':attribute jābūt starp :min un :max cipariem.',
+ 'email' => ':attribute jābūt derīgai e-pasta adresei.',
+ 'ends_with' => ':attribute jābeidzas ar vienu no :values',
+ 'file' => ':attribute jābūt derīgam failam.',
+ 'filled' => ':attribute lauks ir obligāts.',
+ 'gt' => [
+ 'numeric' => ':attribute jābūt lielākam kā :value.',
+ 'file' => ':attribute jābūt lielākam kā :value kilobaitiem.',
+ 'string' => ':attribute jābūt lielākam kā :value rakstzīmēm.',
+ 'array' => ':attribute jāsatur vairāk kā :value vienības.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute jābūt lielākam vai vienādam ar :value.',
+ 'file' => ':attribute jābūt lielākam vai vienādam ar :value kilobaitiem.',
+ 'string' => ':attribute jābūt lielākam vai vienādam ar :value rakstzīmēm.',
+ 'array' => ':attribute jāsatur :value vai vairāk vienumus.',
+ ],
+ 'exists' => 'Izvēlētais :attribute ir nederīgs.',
+ 'image' => ':attribute jābūt attēlam.',
+ 'image_extension' => ':attribute jābūt derīgam un atbalstītam bildes paplašinājumam.',
+ 'in' => 'Iezīmētais :attribute ir nederīgs.',
+ 'integer' => ':attribute ir jābūt veselam skaitlim.',
+ 'ip' => ':attribute jābūt derīgai IP adresei.',
+ 'ipv4' => ':attribute jābūt derīgai IPv4 adresei.',
+ 'ipv6' => ':attribute jābūt derīgai IPv6 adresei.',
+ 'json' => ':attribute jābūt derīgai JSON virknei.',
+ 'lt' => [
+ 'numeric' => ':attribute jābūt mazākam par :value.',
+ 'file' => ':attribute jābūt mazāk kā :value kilobaitiem.',
+ 'string' => ':attribute jābūt mazāk kā :value rakstzīmēm.',
+ 'array' => ':attribute jāsatur mazāk kā :value vienības.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute jābūt mazākam vai vienādam ar :value.',
+ 'file' => ':attribute jābūt mazākam vai vienādam ar :value kilobaitiem.',
+ 'string' => ':attribute jābūt mazākam vai vienādam ar :value rakstzīmēm.',
+ 'array' => ':attribute nedrīkst pārsniegt :value vienības.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute nevar būt lielāks kā :max.',
+ 'file' => ':attribute nedrīkst būt lielāks kā :max kilobaiti.',
+ 'string' => ':attribute nedrīkst būt lielāks kā :max rakstzīmēm.',
+ 'array' => ':attribute nedrīkst būt lielāks kā :max vienumi.',
+ ],
+ 'mimes' => ':attribute jābūt faila tipam: :values.',
+ 'min' => [
+ 'numeric' => ':attribute ir jābūt vismaz :min.',
+ 'file' => ':attribute jābūt vismaz :min kilobaitiem.',
+ 'string' => ':attribute ir jābūt vismaz :min rakstzīmēm.',
+ 'array' => ':attribute ir jābūt vismaz :min vienībām.',
+ ],
+ 'not_in' => 'Izvēlētais: atribūts ir nederīgs.',
+ 'not_regex' => ':attribute formāts nav derīgs.',
+ 'numeric' => ':attribute ir jābūt skaitlim.',
+ 'regex' => ':attribute formāts nav derīgs.',
+ 'required' => ':attribute lauks ir obligāts.',
+ 'required_if' => ':attribute lauks ir nepieciešams, kad :other ir :value.',
+ 'required_with' => ':attribute lauks ir obligāts, ja ir :values.',
+ 'required_with_all' => ':attribute lauks ir obligāts, ja ir :values.',
+ 'required_without' => ':attribute lauks ir obligāts, ja nav :values.',
+ 'required_without_all' => ':attribute lauks ir obligāts, ja nav neviena no :values.',
+ 'same' => ':attribute un :other jāsakrīt.',
+ 'safe_url' => 'Norādītā saite var būt nedroša.',
+ 'size' => [
+ 'numeric' => ':attribute ir jābūt :size.',
+ 'file' => ':attribute jābūt :size kilobaiti.',
+ 'string' => ':attribute jābūt :size rakstzīmēm.',
+ 'array' => ':attribute jāsatur :size vienības.',
+ ],
+ 'string' => ':attribute jābūt teksta virknei.',
+ 'timezone' => ':attribute jābūt derīgai zonai.',
+ 'totp' => 'Ievadītais kods nav derīgs.',
+ 'unique' => ':attribute jau ir aizņemts.',
+ 'url' => ':attribute formāts nav derīgs.',
+ 'uploaded' => 'Fails netika ielādēts. Serveris nevar pieņemt šāda izmēra failus.',
+
+ 'zip_file' => ':attribute ir jāatsaucas uz failu ZIP arhīvā.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => ':attribute ir jāatsaucas uz failu ar tipu :validTypes, bet atrasts :foundType.',
+ 'zip_model_expected' => 'Sagaidīts datu objekts, bet atrasts ":type".',
+ 'zip_unique' => ':attribute jābūt unikālam šim objekta tipam ZIP arhīvā.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Nepieciešams paroles apstiprinājums',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/nb/activities.php b/lang/nb/activities.php
new file mode 100644
index 00000000000..fd4de53216e
--- /dev/null
+++ b/lang/nb/activities.php
@@ -0,0 +1,141 @@
+ 'opprettet side',
+ 'page_create_notification' => 'Siden ble opprettet',
+ 'page_update' => 'oppdaterte side',
+ 'page_update_notification' => 'Siden ble oppdatert',
+ 'page_delete' => 'slettet side',
+ 'page_delete_notification' => 'Siden ble slettet',
+ 'page_restore' => 'gjenopprettet side',
+ 'page_restore_notification' => 'Siden ble gjenopprettet',
+ 'page_move' => 'flyttet side',
+ 'page_move_notification' => 'Siden ble flyttet',
+
+ // Chapters
+ 'chapter_create' => 'opprettet kapittel',
+ 'chapter_create_notification' => 'Kapittelet ble opprettet',
+ 'chapter_update' => 'oppdaterte kapittel',
+ 'chapter_update_notification' => 'Kapittelet ble oppdatert',
+ 'chapter_delete' => 'slettet kapittel',
+ 'chapter_delete_notification' => 'Kapittelet ble slettet',
+ 'chapter_move' => 'flyttet kapittel
+ ',
+ 'chapter_move_notification' => 'Kapitelet ble flyttet',
+
+ // Books
+ 'book_create' => 'opprettet bok',
+ 'book_create_notification' => 'Boken ble opprettet',
+ 'book_create_from_chapter' => 'konverterte kapittelet til bok',
+ 'book_create_from_chapter_notification' => 'Kapittelet ble konvertert til en bok',
+ 'book_update' => 'oppdaterte bok',
+ 'book_update_notification' => 'Boken ble oppdatert',
+ 'book_delete' => 'slettet bok',
+ 'book_delete_notification' => 'Boken ble slettet',
+ 'book_sort' => 'sorterte bok',
+ 'book_sort_notification' => 'Boken ble omsortert',
+
+ // Bookshelves
+ 'bookshelf_create' => 'opprettet hylle',
+ 'bookshelf_create_notification' => 'Hylllen ble opprettet',
+ 'bookshelf_create_from_book' => 'endret fra bok til hylle',
+ 'bookshelf_create_from_book_notification' => 'Boken ble konvertert til en bokhylle',
+ 'bookshelf_update' => 'oppdatert hylle',
+ 'bookshelf_update_notification' => 'Hyllen ble oppdatert',
+ 'bookshelf_delete' => 'slettet hylle',
+ 'bookshelf_delete_notification' => 'Hyllen ble slettet',
+
+ // Revisions
+ 'revision_restore' => 'gjenopprettet revisjon',
+ 'revision_delete' => 'slettet revisjon',
+ 'revision_delete_notification' => 'Revisjon slettet',
+
+ // Favourites
+ 'favourite_add_notification' => '«:name» ble lagt til i dine favoritter',
+ 'favourite_remove_notification' => '«:name» ble fjernet fra dine favoritter',
+
+ // Watching
+ 'watch_update_level_notification' => 'Overvåkingsinnstillingene ble oppdatert',
+
+ // Auth
+ 'auth_login' => 'logget inn',
+ 'auth_register' => 'registrert som ny bruker',
+ 'auth_password_reset_request' => 'etterspurt tilbakestilling av passord',
+ 'auth_password_reset_update' => 'tilbakestill bruker passord',
+ 'mfa_setup_method' => 'konfigurert MFA-metode',
+ 'mfa_setup_method_notification' => 'Flerfaktor-metoden ble konfigurert',
+ 'mfa_remove_method' => 'fjernet MFA-metode',
+ 'mfa_remove_method_notification' => 'Flerfaktor-metoden ble fjernet',
+
+ // Settings
+ 'settings_update' => 'oppdaterte innstillinger',
+ 'settings_update_notification' => 'Innstillingene er oppdatert',
+ 'maintenance_action_run' => 'kjørte vedlikeholdshandling',
+
+ // Webhooks
+ 'webhook_create' => 'opprettet webhook',
+ 'webhook_create_notification' => 'Webhook ble opprettet',
+ 'webhook_update' => 'oppdatert webhook',
+ 'webhook_update_notification' => 'Webhook ble oppdatert',
+ 'webhook_delete' => 'slettet webhook',
+ 'webhook_delete_notification' => 'Webhook ble slettet',
+
+ // Imports
+ 'import_create' => 'import opprettet',
+ 'import_create_notification' => 'Importen ble opplastet',
+ 'import_run' => 'oppdatert import',
+ 'import_run_notification' => 'Innhold importert',
+ 'import_delete' => 'import slettet',
+ 'import_delete_notification' => 'Importering ble slettet',
+
+ // Users
+ 'user_create' => 'opprettet bruker',
+ 'user_create_notification' => 'Bruker ble opprettet',
+ 'user_update' => 'oppdatert bruker',
+ 'user_update_notification' => 'Brukeren ble oppdatert',
+ 'user_delete' => 'slettet bruker',
+ 'user_delete_notification' => 'Brukeren ble fjernet',
+
+ // API Tokens
+ 'api_token_create' => 'opprettet API-nøkkel',
+ 'api_token_create_notification' => 'API-token er opprettet',
+ 'api_token_update' => 'oppdaterte API-nøkkel',
+ 'api_token_update_notification' => 'API-token oppdatert',
+ 'api_token_delete' => 'slettet API-nøkkel',
+ 'api_token_delete_notification' => 'API-token ble slettet',
+
+ // Roles
+ 'role_create' => 'opprettet rolle',
+ 'role_create_notification' => 'Rollen ble opprettet',
+ 'role_update' => 'oppdatert rolle',
+ 'role_update_notification' => 'Rollen ble oppdatert',
+ 'role_delete' => 'slettet rolle',
+ 'role_delete_notification' => 'Rollen ble fjernet',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'tømt resirkulering bin',
+ 'recycle_bin_restore' => 'gjenopprettet fra papirkurven',
+ 'recycle_bin_destroy' => 'fjernet fra papirkurven',
+
+ // Comments
+ 'commented_on' => 'kommenterte på',
+ 'comment_create' => 'lagt til kommentar',
+ 'comment_update' => 'oppdatert kommentar',
+ 'comment_delete' => 'slettet kommentar',
+
+ // Sort Rules
+ 'sort_rule_create' => 'opprettet sorteringsregel',
+ 'sort_rule_create_notification' => 'Sorteringsregel opprettet med suksess',
+ 'sort_rule_update' => 'oppdatert sorteringsregel',
+ 'sort_rule_update_notification' => 'Sorteringsregel oppdatert med suksess',
+ 'sort_rule_delete' => 'slettet sorteringsregel',
+ 'sort_rule_delete_notification' => 'Sorteringsregel slettet med suksess',
+
+ // Other
+ 'permissions_update' => 'oppdaterte tilganger',
+];
diff --git a/lang/nb/auth.php b/lang/nb/auth.php
new file mode 100644
index 00000000000..125e6daf5d4
--- /dev/null
+++ b/lang/nb/auth.php
@@ -0,0 +1,117 @@
+ 'Disse detaljene samsvarer ikke med det vi har på bok.',
+ 'throttle' => 'For mange forsøk, prøv igjen om :seconds sekunder.',
+
+ // Login & Register
+ 'sign_up' => 'Registrer deg',
+ 'log_in' => 'Logg inn',
+ 'log_in_with' => 'Logg inn med :socialDriver',
+ 'sign_up_with' => 'Registrer med :socialDriver',
+ 'logout' => 'Logg ut',
+
+ 'name' => 'Navn',
+ 'username' => 'Brukernavn',
+ 'email' => 'E-post',
+ 'password' => 'Passord',
+ 'password_confirm' => 'Bekreft passord',
+ 'password_hint' => 'Må være minst 8 tegn',
+ 'forgot_password' => 'Glemt passord?',
+ 'remember_me' => 'Husk meg',
+ 'ldap_email_hint' => 'Oppgi en e-post for denne kontoen.',
+ 'create_account' => 'Opprett konto',
+ 'already_have_account' => 'Har du allerede en konto?',
+ 'dont_have_account' => 'Mangler du en konto?',
+ 'social_login' => 'Sosiale kontoer',
+ 'social_registration' => 'Registrer via sosiale kontoer',
+ 'social_registration_text' => 'Bruk en annen tjeneste for å registrere deg.',
+
+ 'register_thanks' => 'Takk for at du registrerte deg!',
+ 'register_confirm' => 'Sjekk e-posten din for informasjon som gir deg tilgang til :appName.',
+ 'registrations_disabled' => 'Registrering er deaktivert.',
+ 'registration_email_domain_invalid' => 'Du kan ikke bruke det domenet for å registrere en konto.',
+ 'register_success' => 'Takk for registreringen! Du kan nå logge inn på tjenesten.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Forsøker innlogging',
+ 'auto_init_starting_desc' => 'Vi kontakter autentiseringssystemet ditt for å påbegynne innloggingsprosessen. Dersom det ikke er noe fremdrift i løpet av fem sekunder kan du trykke på lenken under.',
+ 'auto_init_start_link' => 'Fortsett med autentisering',
+
+ // Password Reset
+ 'reset_password' => 'Nullstille passord',
+ 'reset_password_send_instructions' => 'Oppgi e-posten som er koblet til kontoen din, så sender vi en epost hvor du kan nullstille passordet.',
+ 'reset_password_send_button' => 'Send nullstillingslenke',
+ 'reset_password_sent' => 'En nullstillingslenke ble sendt til :email om den eksisterer i systemet.',
+ 'reset_password_success' => 'Passordet ble nullstilt.',
+ 'email_reset_subject' => 'Nullstill ditt :appName passord',
+ 'email_reset_text' => 'Du mottar denne eposten fordi det er blitt bedt om en nullstilling av passord på denne kontoen.',
+ 'email_reset_not_requested' => 'Om det ikke var deg, så trenger du ikke foreta deg noe.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Bekreft epost-adressen for :appName',
+ 'email_confirm_greeting' => 'Takk for at du registrerte deg for :appName!',
+ 'email_confirm_text' => 'Bekreft e-posten din ved å trykke på knappen nedenfor:',
+ 'email_confirm_action' => 'Bekreft e-post',
+ 'email_confirm_send_error' => 'Bekreftelse er krevd av systemet, men systemet kan ikke sende disse. Kontakt admin for å løse problemet.',
+ 'email_confirm_success' => 'Epost-adressen din er verifisert! Du kan nå logge inn ved å bruke denne ved innlogging.',
+ 'email_confirm_resent' => 'Bekreftelsespost ble sendt, sjekk innboksen din.',
+ 'email_confirm_thanks' => 'Takk for verifiseringen!',
+ 'email_confirm_thanks_desc' => 'Vent et øyeblikk mens verifiseringen blir utført. Om du ikke blir videresendt i løpet av tre sekunder kan du trykke «Fortsett» nedenfor.',
+
+ 'email_not_confirmed' => 'E-posten er ikke bekreftet.',
+ 'email_not_confirmed_text' => 'Epost-adressen er ennå ikke bekreftet.',
+ 'email_not_confirmed_click_link' => 'Trykk på lenken i e-posten du fikk vedrørende din registrering.',
+ 'email_not_confirmed_resend' => 'Om du ikke finner den i innboksen eller søppelboksen, kan du få tilsendt ny ved å trykke på knappen under.',
+ 'email_not_confirmed_resend_button' => 'Send bekreftelsespost på nytt',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Du har blitt invitert til :appName!',
+ 'user_invite_email_greeting' => 'En konto har blitt opprettet for deg på :appName.',
+ 'user_invite_email_text' => 'Trykk på knappen under for å opprette et sikkert passord:',
+ 'user_invite_email_action' => 'Angi passord',
+ 'user_invite_page_welcome' => 'Velkommen til :appName!',
+ 'user_invite_page_text' => 'For å fullføre prosessen må du oppgi et passord som sikrer din konto på :appName for fremtidige besøk.',
+ 'user_invite_page_confirm_button' => 'Bekreft passord',
+ 'user_invite_success_login' => 'Passordet ble satt, du skal nå kunne logge inn med ditt nye passord for å få tilgang til :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Konfigurer flerfaktor-autentisering',
+ 'mfa_setup_desc' => 'Konfigurer flerfaktor-autentisering som et ekstra lag med sikkerhet for brukerkontoen din.',
+ 'mfa_setup_configured' => 'Allerede konfigurert',
+ 'mfa_setup_reconfigure' => 'Omkonfigurer',
+ 'mfa_setup_remove_confirmation' => 'Er du sikker på at du vil deaktivere denne flerfaktor-autentiseringsmetoden?',
+ 'mfa_setup_action' => 'Konfigurasjon',
+ 'mfa_backup_codes_usage_limit_warning' => 'Du har mindre enn 5 sikkerhetskoder igjen; vennligst generer og lagre ett nytt sett før du går tom for koder, for å unngå å bli låst ute av kontoen din.',
+ 'mfa_option_totp_title' => 'Mobilapplikasjon',
+ 'mfa_option_totp_desc' => 'For å bruke flerfaktorautentisering trenger du en mobilapplikasjon som støtter TOTP-teknologien, slik som Google Authenticator, Authy eller Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Sikkerhetskoder',
+ 'mfa_option_backup_codes_desc' => 'Genererer et sett med engangskoder som du kan bruke ved innlogging for å bekrefte identiteten din. Sørg for å lagre disse på et sikkert sted.',
+ 'mfa_gen_confirm_and_enable' => 'Bekreft og aktiver',
+ 'mfa_gen_backup_codes_title' => 'Konfigurasjon av sikkerhetskoder',
+ 'mfa_gen_backup_codes_desc' => 'Lagre nedeforstående liste med koder på et trygt sted. Når du skal ha tilgang til systemet kan du bruke en av disse som en faktor under innlogging.',
+ 'mfa_gen_backup_codes_download' => 'Last ned koder',
+ 'mfa_gen_backup_codes_usage_warning' => 'Hver kode kan kun brukes en gang',
+ 'mfa_gen_totp_title' => 'Oppsett for mobilapplikasjon',
+ 'mfa_gen_totp_desc' => 'For å bruke flerfaktorautentisering trenger du en mobilapplikasjon som støtter TOTP-teknologien, slik som Google Authenticator, Authy eller Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Scan QR-koden nedenfor med valgt TOTP-applikasjon for å starte.',
+ 'mfa_gen_totp_verify_setup' => 'Bekreft oppsett',
+ 'mfa_gen_totp_verify_setup_desc' => 'Bekreft at oppsettet fungerer ved å skrive inn koden fra TOTP-applikasjonen i boksen nedenfor:',
+ 'mfa_gen_totp_provide_code_here' => 'Skriv inn den genererte koden her',
+ 'mfa_verify_access' => 'Bekreft tilgang',
+ 'mfa_verify_access_desc' => 'Brukerkontoen din krever at du bekrefter din identitet med en ekstra autentiseringsfaktor før du får tilgang. Bekreft identiteten med en av dine konfigurerte metoder for å fortsette.',
+ 'mfa_verify_no_methods' => 'Ingen metoder er konfigurert',
+ 'mfa_verify_no_methods_desc' => 'Ingen flerfaktorautentiseringsmetoder er satt opp for din konto. Du må sette opp minst en metode for å få tilgang.',
+ 'mfa_verify_use_totp' => 'Bekreft med mobilapplikasjon',
+ 'mfa_verify_use_backup_codes' => 'Bekreft med sikkerhetskode',
+ 'mfa_verify_backup_code' => 'Sikkerhetskode',
+ 'mfa_verify_backup_code_desc' => 'Skriv inn en av dine ubrukte sikkerhetskoder under:',
+ 'mfa_verify_backup_code_enter_here' => 'Skriv inn sikkerhetskode her',
+ 'mfa_verify_totp_desc' => 'Skriv inn koden, generert ved hjelp av mobilapplikasjonen, nedenfor:',
+ 'mfa_setup_login_notification' => 'Flerfaktorautentisering er konfigurert, vennligst logg inn på nytt med denne metoden.',
+];
diff --git a/lang/nb/common.php b/lang/nb/common.php
new file mode 100644
index 00000000000..f4f804e4478
--- /dev/null
+++ b/lang/nb/common.php
@@ -0,0 +1,115 @@
+ 'Avbryt',
+ 'close' => 'Lukk',
+ 'confirm' => 'Bekreft',
+ 'back' => 'Tilbake',
+ 'save' => 'Lagre',
+ 'continue' => 'Fortsett',
+ 'select' => 'Velg',
+ 'toggle_all' => 'Bytt alle',
+ 'more' => 'Mer',
+
+ // Form Labels
+ 'name' => 'Navn',
+ 'description' => 'Beskrivelse',
+ 'role' => 'Rolle',
+ 'cover_image' => 'Forside',
+ 'cover_image_description' => 'Dette bildet bør være omtrent 440x250px selv om det vil bli fleksibelt skalert og beskjært slik at brukergrensesnittet passer til forskjellige scenarier ved behov. Dette betyr at de faktiske dimensjonene for visning varierer.',
+
+ // Actions
+ 'actions' => 'Handlinger',
+ 'view' => 'Vis',
+ 'view_all' => 'Vis alle',
+ 'new' => 'Ny',
+ 'create' => 'Opprett',
+ 'update' => 'Oppdater',
+ 'edit' => 'Rediger',
+ 'archive' => 'Arkiver',
+ 'unarchive' => 'Av-arkiver',
+ 'sort' => 'Sortér',
+ 'move' => 'Flytt',
+ 'copy' => 'Kopier',
+ 'reply' => 'Svar',
+ 'delete' => 'Slett',
+ 'delete_confirm' => 'Bekreft sletting',
+ 'search' => 'Søk',
+ 'search_clear' => 'Nullstill søk',
+ 'reset' => 'Nullstill',
+ 'remove' => 'Fjern',
+ 'add' => 'Legg til',
+ 'configure' => 'Konfigurer',
+ 'manage' => 'Administrer',
+ 'fullscreen' => 'Fullskjerm',
+ 'favourite' => 'Favoriser',
+ 'unfavourite' => 'Avfavoriser',
+ 'next' => 'Neste',
+ 'previous' => 'Forrige',
+ 'filter_active' => 'Aktivt filter:',
+ 'filter_clear' => 'Tøm filter',
+ 'download' => 'Last ned',
+ 'open_in_tab' => 'Åpne i fane',
+ 'open' => 'Åpne',
+
+ // Sort Options
+ 'sort_options' => 'Sorteringsalternativer',
+ 'sort_direction_toggle' => 'Sorteringsretning',
+ 'sort_ascending' => 'Stigende sortering',
+ 'sort_descending' => 'Synkende sortering',
+ 'sort_name' => 'Navn',
+ 'sort_default' => 'Standard',
+ 'sort_created_at' => 'Dato opprettet',
+ 'sort_updated_at' => 'Dato oppdatert',
+
+ // Misc
+ 'deleted_user' => 'Slett bruker',
+ 'no_activity' => 'Ingen aktivitet å vise',
+ 'no_items' => 'Ingen ting å vise',
+ 'back_to_top' => 'Hopp til toppen',
+ 'skip_to_main_content' => 'Gå til hovedinnhold',
+ 'toggle_details' => 'Vis/skjul detaljer',
+ 'toggle_thumbnails' => 'Vis/skjul miniatyrbilder',
+ 'details' => 'Detaljer',
+ 'grid_view' => 'Rutenettvisning',
+ 'list_view' => 'Listevisning',
+ 'default' => 'Standard',
+ 'breadcrumb' => 'Brødsmuler',
+ 'status' => 'Status',
+ 'status_active' => 'Aktiv',
+ 'status_inactive' => 'Inaktiv',
+ 'never' => 'Aldri',
+ 'none' => 'Ingen',
+
+ // Header
+ 'homepage' => 'Hjemmeside',
+ 'header_menu_expand' => 'Utvid toppmeny',
+ 'profile_menu' => 'Profilmeny',
+ 'view_profile' => 'Vis profil',
+ 'edit_profile' => 'Endre Profile',
+ 'dark_mode' => 'Kveldsmodus',
+ 'light_mode' => 'Dagmodus',
+ 'global_search' => 'Globalt søk',
+
+ // Layout tabs
+ 'tab_info' => 'Informasjon',
+ 'tab_info_label' => 'Fane: Vis tilleggsinfo',
+ 'tab_content' => 'Innhold',
+ 'tab_content_label' => 'Fane: Vis hovedinnhold',
+
+ // Email Content
+ 'email_action_help' => 'Om du har problemer med å trykke på «:actionText»-knappen, bruk nettadressen under for å gå direkte dit:',
+ 'email_rights' => 'Kopibeskyttet',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Personvernregler',
+ 'terms_of_service' => 'Bruksvilkår',
+
+ // OpenSearch
+ 'opensearch_description' => 'Søk :appName',
+];
diff --git a/lang/nb/components.php b/lang/nb/components.php
new file mode 100644
index 00000000000..e424e649396
--- /dev/null
+++ b/lang/nb/components.php
@@ -0,0 +1,46 @@
+ 'Velg bilde',
+ 'image_list' => 'Bilde liste',
+ 'image_details' => 'Bildedetaljer',
+ 'image_upload' => 'Last opp bilde',
+ 'image_intro' => 'Her kan du velge og behandle bilder som tidligere har blitt lastet opp til systemet.',
+ 'image_intro_upload' => 'Last opp et nytt bilde ved å dra et bilde i dette vinduet, eller ved å bruke knappen "Last opp bilde" ovenfor.',
+ 'image_all' => 'Alle',
+ 'image_all_title' => 'Vis alle bilder',
+ 'image_book_title' => 'Vis bilder som er lastet opp i denne boken',
+ 'image_page_title' => 'Vis bilder lastet opp til denne siden',
+ 'image_search_hint' => 'Søk på bilder etter navn',
+ 'image_uploaded' => 'Opplastet :uploadedDate',
+ 'image_uploaded_by' => 'Lastet opp av :userName',
+ 'image_uploaded_to' => 'Lastet opp til :pageLink',
+ 'image_updated' => 'Oppdatert :updateDate',
+ 'image_load_more' => 'Last inn flere',
+ 'image_image_name' => 'Bildenavn',
+ 'image_delete_used' => 'Dette bildet er brukt på sidene nedenfor.',
+ 'image_delete_confirm_text' => 'Vil du slette dette bildet?',
+ 'image_select_image' => 'Velg bilde',
+ 'image_dropzone' => 'Dra og slipp eller trykk her for å laste opp bilder',
+ 'image_dropzone_drop' => 'Slipp bilder her for å laste opp',
+ 'images_deleted' => 'Bilder slettet',
+ 'image_preview' => 'Hurtigvisning av bilder',
+ 'image_upload_success' => 'Bilde ble lastet opp',
+ 'image_update_success' => 'Bildedetaljer ble oppdatert',
+ 'image_delete_success' => 'Bilde ble slettet',
+ 'image_replace' => 'Erstatt bilde',
+ 'image_replace_success' => 'Bildefil ble oppdatert',
+ 'image_rebuild_thumbs' => 'Regenerer størrelsesvarianter',
+ 'image_rebuild_thumbs_success' => 'Variasjoner i bildestørrelse var gjenoppbygget!',
+
+ // Code Editor
+ 'code_editor' => 'Endre kode',
+ 'code_language' => 'Kodespråk',
+ 'code_content' => 'Kodeinnhold',
+ 'code_session_history' => 'Sesjonshistorikk',
+ 'code_save' => 'Lagre kode',
+];
diff --git a/lang/nb/editor.php b/lang/nb/editor.php
new file mode 100644
index 00000000000..23a788d71ee
--- /dev/null
+++ b/lang/nb/editor.php
@@ -0,0 +1,182 @@
+ 'Generelt',
+ 'advanced' => 'Avansert',
+ 'none' => 'Ingen',
+ 'cancel' => 'Avbryt',
+ 'save' => 'Lagre',
+ 'close' => 'Lukk',
+ 'apply' => 'Bruk',
+ 'undo' => 'Angre',
+ 'redo' => 'Gjør om',
+ 'left' => 'Venstre',
+ 'center' => 'Sentrert',
+ 'right' => 'Høyre',
+ 'top' => 'Topp',
+ 'middle' => 'Sentrert',
+ 'bottom' => 'Bunn',
+ 'width' => 'Bredde',
+ 'height' => 'Høyde',
+ 'More' => 'Mer',
+ 'select' => 'Velg …',
+
+ // Toolbar
+ 'formats' => 'Formater',
+ 'header_large' => 'Stor overskrift',
+ 'header_medium' => 'Medium overskrift',
+ 'header_small' => 'Liten overskrift',
+ 'header_tiny' => 'Bitteliten overskrift',
+ 'paragraph' => 'Avsnitt',
+ 'blockquote' => 'Blokksitat',
+ 'inline_code' => 'Kodesetning',
+ 'callouts' => 'Notabene',
+ 'callout_information' => 'Informasjon',
+ 'callout_success' => 'Positiv',
+ 'callout_warning' => 'Advarsel',
+ 'callout_danger' => 'Negativ',
+ 'bold' => 'Fet',
+ 'italic' => 'Kursiv',
+ 'underline' => 'Understrek',
+ 'strikethrough' => 'Strek over',
+ 'superscript' => 'Hevet skrift',
+ 'subscript' => 'Senket skrift',
+ 'text_color' => 'Tekstfarge',
+ 'highlight_color' => 'Uthevingsfarge',
+ 'custom_color' => 'Egenvalgt farge',
+ 'remove_color' => 'Fjern farge',
+ 'background_color' => 'Bakgrunnsfarge',
+ 'align_left' => 'Venstrejustering',
+ 'align_center' => 'Midtstilling',
+ 'align_right' => 'Høyrejustering',
+ 'align_justify' => 'Blokkjustering',
+ 'list_bullet' => 'Punktliste',
+ 'list_numbered' => 'Nummerert liste',
+ 'list_task' => 'Oppgaveliste',
+ 'indent_increase' => 'Øk innrykk',
+ 'indent_decrease' => 'Redusér innrykk',
+ 'table' => 'Tabell',
+ 'insert_image' => 'Sett inn bilde',
+ 'insert_image_title' => 'Sett inn/redigér bilde',
+ 'insert_link' => 'Sett inn/redigér lenke',
+ 'insert_link_title' => 'Sett inn/redigér lenke',
+ 'insert_horizontal_line' => 'Sett inn horisontal linje',
+ 'insert_code_block' => 'Sett inn kodeblokk',
+ 'edit_code_block' => 'Redigér kodeblokk',
+ 'insert_drawing' => 'Sett inn/redigér tegning',
+ 'drawing_manager' => 'Tegningsbehandling',
+ 'insert_media' => 'Sett inn/redigér media',
+ 'insert_media_title' => 'Sett inn/redigér media',
+ 'clear_formatting' => 'Rens formattering',
+ 'source_code' => 'Kildekode',
+ 'source_code_title' => 'Kildekode',
+ 'fullscreen' => 'Fullskjerm',
+ 'image_options' => 'Bildealternativer',
+
+ // Tables
+ 'table_properties' => 'Tabellegenskaper',
+ 'table_properties_title' => 'Tabellegenskaper',
+ 'delete_table' => 'Slett tabell',
+ 'table_clear_formatting' => 'Fjern tabellformatering',
+ 'resize_to_contents' => 'Endre størrelsen til innhold',
+ 'row_header' => 'Radoverskrift',
+ 'insert_row_before' => 'Sett inn rad før',
+ 'insert_row_after' => 'Sett inn rad etter',
+ 'delete_row' => 'Slett rad',
+ 'insert_column_before' => 'Sett inn kolonne før',
+ 'insert_column_after' => 'Sett inn kolonne etter',
+ 'delete_column' => 'Slett kolonne',
+ 'table_cell' => 'Celle',
+ 'table_row' => 'Rad',
+ 'table_column' => 'Kolonne',
+ 'cell_properties' => 'Celle-egenskaper',
+ 'cell_properties_title' => 'Celle-egenskaper',
+ 'cell_type' => 'Celletype',
+ 'cell_type_cell' => 'Celle',
+ 'cell_scope' => 'Omfang',
+ 'cell_type_header' => 'Topptekst-celle',
+ 'merge_cells' => 'Slå sammen celler',
+ 'split_cell' => 'Del celle',
+ 'table_row_group' => 'Radgruppe',
+ 'table_column_group' => 'Kolonnegruppe',
+ 'horizontal_align' => 'Horisontal justering',
+ 'vertical_align' => 'Vertikal justering',
+ 'border_width' => 'Kantbredde',
+ 'border_style' => 'Kantstil',
+ 'border_color' => 'Kantfarge',
+ 'row_properties' => 'Radegenskaper',
+ 'row_properties_title' => 'Radegenskaper',
+ 'cut_row' => 'Klipp ut rad',
+ 'copy_row' => 'Kopiér rad',
+ 'paste_row_before' => 'Lim rad inn før',
+ 'paste_row_after' => 'Lim rad inn etter',
+ 'row_type' => 'Radtype',
+ 'row_type_header' => 'Topptekst',
+ 'row_type_body' => 'Hovedtekst',
+ 'row_type_footer' => 'Bunntekst',
+ 'alignment' => 'Justering',
+ 'cut_column' => 'Klipp ut kolonne',
+ 'copy_column' => 'Kopiér kolonne',
+ 'paste_column_before' => 'Lim kolonne inn før',
+ 'paste_column_after' => 'Lim kolonne inn etter',
+ 'cell_padding' => 'Celleutfylling',
+ 'cell_spacing' => 'Celleavstand',
+ 'caption' => 'Overskrift',
+ 'show_caption' => 'Vis overskrift',
+ 'constrain' => 'Behold proporsjoner',
+ 'cell_border_solid' => 'Heltrukket',
+ 'cell_border_dotted' => 'Prikker',
+ 'cell_border_dashed' => 'Stipler',
+ 'cell_border_double' => 'Dobbel',
+ 'cell_border_groove' => 'Rille',
+ 'cell_border_ridge' => 'Kant',
+ 'cell_border_inset' => 'Nedsenk',
+ 'cell_border_outset' => 'Uthev',
+ 'cell_border_none' => 'Ingen',
+ 'cell_border_hidden' => 'Skjult bredde',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Kilde',
+ 'alt_desc' => 'Alternativ beskrivelse',
+ 'embed' => 'Bygg inn',
+ 'paste_embed' => 'Lim inn koden din her:',
+ 'url' => 'Nettlenke',
+ 'text_to_display' => 'Synlig tekst',
+ 'title' => 'Tittel',
+ 'browse_links' => 'Bla gjennom linker',
+ 'open_link' => 'Åpne lenke',
+ 'open_link_in' => 'Åpne i ...',
+ 'open_link_current' => 'Samme vindu',
+ 'open_link_new' => 'Nytt vindu',
+ 'remove_link' => 'Fjern lenke',
+ 'insert_collapsible' => 'Sett inn sammenleggbar blokk',
+ 'collapsible_unwrap' => 'Pakk ut',
+ 'edit_label' => 'Rediger etikett',
+ 'toggle_open_closed' => 'Veksle åpen/lukket',
+ 'collapsible_edit' => 'Rediger sammenleggbar blokk',
+ 'toggle_label' => 'Veksle etikettsynlighet',
+
+ // About view
+ 'about' => 'Om tekstredigeringsprogrammet',
+ 'about_title' => 'Om HDSEHDF-tekstredigeringsprogrammet',
+ 'editor_license' => 'Tekstbehandlerlisens og opphavsrett',
+ 'editor_lexical_license' => 'Denne redaktoren er bygget som en fork av :lexicalLink, som er distribuert under MIT-lisensen.',
+ 'editor_lexical_license_link' => 'Full lisensinformasjon finner du her.',
+ 'editor_tiny_license' => 'Denne tekstredigereren er laget med :tinyLink som er lisensiert under MIT.',
+ 'editor_tiny_license_link' => 'Informasjon om opphavsrett og lisens for TinyMCE finnes her.',
+ 'save_continue' => 'Lagre side og fortsett',
+ 'callouts_cycle' => '(Fortsett å trykke for å veksle mellom typer)',
+ 'link_selector' => 'Lenke til innhold',
+ 'shortcuts' => 'Snarveier',
+ 'shortcut' => 'Snarvei',
+ 'shortcuts_intro' => 'Følgende snarveier er tilgjengelige i tekstredigeringsverktøyet:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(MacOS)',
+ 'description' => 'Beskrivelse',
+];
diff --git a/lang/nb/entities.php b/lang/nb/entities.php
new file mode 100644
index 00000000000..cf0fdffded0
--- /dev/null
+++ b/lang/nb/entities.php
@@ -0,0 +1,476 @@
+ 'Nylig opprettet',
+ 'recently_created_pages' => 'Nylig opprettede sider',
+ 'recently_updated_pages' => 'Nylig oppdaterte sider',
+ 'recently_created_chapters' => 'Nylig opprettede kapitler',
+ 'recently_created_books' => 'Nylig opprettede bøker',
+ 'recently_created_shelves' => 'Nylig opprettede bokhyller',
+ 'recently_update' => 'Nylig oppdatert',
+ 'recently_viewed' => 'Nylig vist',
+ 'recent_activity' => 'Nylig aktivitet',
+ 'create_now' => 'Opprett en nå',
+ 'revisions' => 'Revisjoner',
+ 'meta_revision' => 'Revisjon #:revisionCount',
+ 'meta_created' => 'Opprettet :timeLength',
+ 'meta_created_name' => 'Opprettet :timeLength av :user',
+ 'meta_updated' => 'Oppdatert :timeLength',
+ 'meta_updated_name' => 'Oppdatert :timeLength av :user',
+ 'meta_owned_name' => 'Eies av :user',
+ 'meta_reference_count' => 'Sitert på :count side|Sitert på :count sider',
+ 'entity_select' => 'Velg entitet',
+ 'entity_select_lack_permission' => 'Du har ikke tilgang til å velge dette elementet',
+ 'images' => 'Bilder',
+ 'my_recent_drafts' => 'Mine nylige utkast',
+ 'my_recently_viewed' => 'Mine nylige visninger',
+ 'my_most_viewed_favourites' => 'Mine mest sette favoritter',
+ 'my_favourites' => 'Mine favoritter',
+ 'no_pages_viewed' => 'Du har ikke sett på noen sider',
+ 'no_pages_recently_created' => 'Ingen sider har nylig blitt opprettet',
+ 'no_pages_recently_updated' => 'Ingen sider har nylig blitt oppdatert',
+ 'export' => 'Eksporter',
+ 'export_html' => 'Nettside med alt',
+ 'export_pdf' => 'PDF Fil',
+ 'export_text' => 'Tekstfil',
+ 'export_md' => 'Markdownfil',
+ 'export_zip' => 'Flyttbar ZIP',
+ 'default_template' => 'Standard sidemal',
+ 'default_template_explain' => 'Tildel en sidemal som vil bli brukt som standardinnhold for alle nye sider i denne boken. Husk dette vil kun bli brukt hvis sideskaperen har tilgang til den valgte malsiden.',
+ 'default_template_select' => 'Velg en malside',
+ 'import' => 'Import',
+ 'import_validate' => 'Valider Import',
+ 'import_desc' => 'Importer bøker, kapitler & sider ved å bruke en flyttbar zip-eksport fra samme eller en annen forekomst. Velg en ZIP-fil for å fortsette. Når filen har blitt lastet opp og validert vil du kunne konfigurere & bekrefte importen i neste visning.',
+ 'import_zip_select' => 'Velg ZIP-filen som skal lastes opp',
+ 'import_zip_validation_errors' => 'Feil ble funnet under validering av den angitte ZIP-filen:',
+ 'import_pending' => 'Venter på import',
+ 'import_pending_none' => 'Ingen importer er startet.',
+ 'import_continue' => 'Fortsett import',
+ 'import_continue_desc' => 'Gjennomgå innholdet på grunn av at det importeres fra den opplastede ZIP-filen. Når klar, kjøre importen for å legge til innholdet i dette systemet. Den opplastede ZIP-importfilen vil automatisk bli fjernet ved vellykket import.',
+ 'import_details' => 'Importer detaljer',
+ 'import_run' => 'Kjør Import',
+ 'import_size' => ':size Import ZIP størrelse',
+ 'import_uploaded_at' => 'Opplastet :relativeTime',
+ 'import_uploaded_by' => 'Lastet opp av',
+ 'import_location' => 'Import posisjon',
+ 'import_location_desc' => 'Velg en mållokasjon for ditt importerte innhold. Du vil trenge relevante tillatelser for å opprette innenfor den posisjonen du velger.',
+ 'import_delete_confirm' => 'Er du sikker på at du vil slette denne importen?',
+ 'import_delete_desc' => 'Dette vil slette den opplastede importen av ZIP-filen og kan ikke angres.',
+ 'import_errors' => 'Import feil',
+ 'import_errors_desc' => 'Feil oppstod under importforsøket:',
+ 'breadcrumb_siblings_for_page' => 'Naviger relaterte sider',
+ 'breadcrumb_siblings_for_chapter' => 'Naviger relaterte kapitler',
+ 'breadcrumb_siblings_for_book' => 'Naviger relaterte bøker',
+ 'breadcrumb_siblings_for_bookshelf' => 'Naviger relaterte hyller',
+
+ // Permissions and restrictions
+ 'permissions' => 'Tilganger',
+ 'permissions_desc' => 'Endringer gjort her vil overstyre standardrettigheter gitt via brukerroller.',
+ 'permissions_book_cascade' => 'Rettigheter satt på bøker vil automatisk arves ned til sidenivå. Du kan overstyre arv ved å definere egne rettigheter på kapitler eller sider.',
+ 'permissions_chapter_cascade' => 'Rettigheter satt på kapitler vil automatisk arves ned til sider. Du kan overstyre arv ved å definere rettigheter på enkeltsider.',
+ 'permissions_save' => 'Lagre tillatelser',
+ 'permissions_owner' => 'Eier',
+ 'permissions_role_everyone_else' => 'Alle andre',
+ 'permissions_role_everyone_else_desc' => 'Angi rettigheter for alle roller som ikke blir overstyrt (arvede rettigheter).',
+ 'permissions_role_override' => 'Overstyr rettigheter for rolle',
+ 'permissions_inherit_defaults' => 'Arv standardrettigheter',
+
+ // Search
+ 'search_results' => 'Søkeresultater',
+ 'search_total_results_found' => ':count resultater funnet|:count totalt',
+ 'search_clear' => 'Nullstill søk',
+ 'search_no_pages' => 'Ingen sider passer med søket',
+ 'search_for_term' => 'Søk etter :term',
+ 'search_more' => 'Flere resultater',
+ 'search_advanced' => 'Avansert søk',
+ 'search_terms' => 'Søkeord',
+ 'search_content_type' => 'Innholdstype',
+ 'search_exact_matches' => 'Eksakte ord',
+ 'search_tags' => 'Søk på merker',
+ 'search_options' => 'Alternativer',
+ 'search_viewed_by_me' => 'Sett av meg',
+ 'search_not_viewed_by_me' => 'Ikke sett av meg',
+ 'search_permissions_set' => 'Tilganger er angitt',
+ 'search_created_by_me' => 'Opprettet av meg',
+ 'search_updated_by_me' => 'Oppdatert av meg',
+ 'search_owned_by_me' => 'Eid av meg',
+ 'search_date_options' => 'Datoalternativer',
+ 'search_updated_before' => 'Oppdatert før',
+ 'search_updated_after' => 'Oppdatert etter',
+ 'search_created_before' => 'Opprettet før',
+ 'search_created_after' => 'Opprettet etter',
+ 'search_set_date' => 'Angi dato',
+ 'search_update' => 'Oppdater søk',
+
+ // Shelves
+ 'shelf' => 'Hylle',
+ 'shelves' => 'Hyller',
+ 'x_shelves' => ':count hylle|:count hyller',
+ 'shelves_empty' => 'Ingen bokhyller er opprettet',
+ 'shelves_create' => 'Opprett ny bokhylle',
+ 'shelves_popular' => 'Populære bokhyller',
+ 'shelves_new' => 'Nye bokhyller',
+ 'shelves_new_action' => 'Ny bokhylle',
+ 'shelves_popular_empty' => 'De mest populære bokhyllene blir vist her.',
+ 'shelves_new_empty' => 'Nylig opprettede bokhyller vises her.',
+ 'shelves_save' => 'Lagre hylle',
+ 'shelves_books' => 'Bøker på denne hyllen',
+ 'shelves_add_books' => 'Legg til bøker på denne hyllen',
+ 'shelves_drag_books' => 'Dra og slipp bøker nedenfor for å legge dem til i denne hyllen',
+ 'shelves_empty_contents' => 'INgen bøker er stablet i denne hylla',
+ 'shelves_edit_and_assign' => 'Endre hylla for å legge til bøker',
+ 'shelves_edit_named' => 'Rediger :name (hylle)',
+ 'shelves_edit' => 'Rediger hylle',
+ 'shelves_delete' => 'Fjern hylle',
+ 'shelves_delete_named' => 'Fjern :name (hylle)',
+ 'shelves_delete_explain' => "Dette vil fjerne hyllen «:name». Bøkene på hyllen vil ikke bli slettet fra systemet.",
+ 'shelves_delete_confirmation' => 'Er du sikker på at du vil fjerne denne hyllen?',
+ 'shelves_permissions' => 'Hyllerettigheter',
+ 'shelves_permissions_updated' => 'Oppdaterte hyllerettigheter',
+ 'shelves_permissions_active' => 'Aktiverte hyllerettigheter',
+ 'shelves_permissions_cascade_warning' => 'Rettigheter på en hylle blir ikke automatisk arvet av bøker på hylla. Dette er fordi en bok kan finnes på flere hyller samtidig. Rettigheter kan likevel kopieres til bøker på hylla ved å bruke alternativene under.',
+ 'shelves_permissions_create' => 'Bokhylle-tillatelser brukes kun for kopiering av tillatelser til under-bøker ved hjelp av handlingen nedenfor. De kontrollerer ikke muligheten til å lage bøker.',
+ 'shelves_copy_permissions_to_books' => 'Kopier tilganger til bøkene på hylla',
+ 'shelves_copy_permissions' => 'Kopier tilganger',
+ 'shelves_copy_permissions_explain' => 'Dette vil kopiere rettighetene på denne hylla til alle bøkene som er plassert på den. Før du starter kopieringen bør du sjekke at rettighetene på hylla er lagret først.',
+ 'shelves_copy_permission_success' => 'Rettighetene ble kopiert til :count bøker',
+
+ // Books
+ 'book' => 'Bok',
+ 'books' => 'Bøker',
+ 'x_books' => ':count bok|:count bøker',
+ 'books_empty' => 'Ingen bøker er skrevet',
+ 'books_popular' => 'Populære bøker',
+ 'books_recent' => 'Nylige bøker',
+ 'books_new' => 'Nye bøker',
+ 'books_new_action' => 'Ny bok',
+ 'books_popular_empty' => 'De mest populære bøkene',
+ 'books_new_empty' => 'Siste utgivelser vises her.',
+ 'books_create' => 'Skriv ny bok',
+ 'books_delete' => 'Brenn bok',
+ 'books_delete_named' => 'Brenn boken :bookName',
+ 'books_delete_explain' => 'Dette vil brenne boken «:bookName». Alle sider i boken vil fordufte for godt.',
+ 'books_delete_confirmation' => 'Er du sikker på at du vil brenne boken?',
+ 'books_edit' => 'Endre bok',
+ 'books_edit_named' => 'Endre boken :bookName',
+ 'books_form_book_name' => 'Boktittel',
+ 'books_save' => 'Lagre bok',
+ 'books_permissions' => 'Boktilganger',
+ 'books_permissions_updated' => 'Boktilganger oppdatert',
+ 'books_empty_contents' => 'Ingen sider eller kapitler finnes i denne boken.',
+ 'books_empty_create_page' => 'Skriv en ny side',
+ 'books_empty_sort_current_book' => 'Sorter innholdet i boken',
+ 'books_empty_add_chapter' => 'Start på nytt kapittel',
+ 'books_permissions_active' => 'Boktilganger er aktive',
+ 'books_search_this' => 'Søk i boken',
+ 'books_navigation' => 'Boknavigasjon',
+ 'books_sort' => 'Sorter bokinnhold',
+ 'books_sort_desc' => 'Flytt kapitler og sider innen en bok for å reorganisere innholdet. Andre bøker kan legges til, noe som gjør det enkelt å flytte kapitler og sider mellom bøkene. Valgfritt kan en automatisk sorteringsregel settes for å automatisk sortere innholdet i denne boken ved endringer.',
+ 'books_sort_auto_sort' => 'Automatisk sorteringsalternativ',
+ 'books_sort_auto_sort_active' => 'Automatisk sortering aktiv: :sortName',
+ 'books_sort_named' => 'Omorganisér :bookName (bok)',
+ 'books_sort_name' => 'Sorter på navn',
+ 'books_sort_created' => 'Sorter på opprettet dato',
+ 'books_sort_updated' => 'Sorter på oppdatert dato',
+ 'books_sort_chapters_first' => 'Kapitler først',
+ 'books_sort_chapters_last' => 'Kapitler sist',
+ 'books_sort_show_other' => 'Vis andre bøker',
+ 'books_sort_save' => 'Lagre sortering',
+ 'books_sort_show_other_desc' => 'Legg til andre bøker her for å inkludere dem i omorganiseringen og muliggjør enkel flytting på tvers av dem.',
+ 'books_sort_move_up' => 'Flytt opp',
+ 'books_sort_move_down' => 'Flytt ned',
+ 'books_sort_move_prev_book' => 'Flytt til forrige bok',
+ 'books_sort_move_next_book' => 'Flytt til neste bok',
+ 'books_sort_move_prev_chapter' => 'Flytt inn i forrige kapittel',
+ 'books_sort_move_next_chapter' => 'Flytt inn i neste kapittel',
+ 'books_sort_move_book_start' => 'Flytt til starten av boken',
+ 'books_sort_move_book_end' => 'Flytt til slutten av boken',
+ 'books_sort_move_before_chapter' => 'Flytt før kapittel',
+ 'books_sort_move_after_chapter' => 'Flytt etter kapittel',
+ 'books_copy' => 'Kopiér bok',
+ 'books_copy_success' => 'Boken ble kopiert',
+
+ // Chapters
+ 'chapter' => 'Kapittel',
+ 'chapters' => 'Kapitler',
+ 'x_chapters' => ':count kapittel|:count kapitler',
+ 'chapters_popular' => 'Populære kapitler',
+ 'chapters_new' => 'Nytt kapittel',
+ 'chapters_create' => 'Skriv nytt kapittel',
+ 'chapters_delete' => 'Riv ut kapittel',
+ 'chapters_delete_named' => 'Slett :chapterName (kapittel)',
+ 'chapters_delete_explain' => 'Dette vil slette «:chapterName» (kapittel). Alle sider i kapittelet vil også slettes.',
+ 'chapters_delete_confirm' => 'Er du sikker på at du vil slette dette kapittelet?',
+ 'chapters_edit' => 'Redigér kapittel',
+ 'chapters_edit_named' => 'Redigér :chapterName (kapittel)',
+ 'chapters_save' => 'Lagre kapittel',
+ 'chapters_move' => 'Flytt kapittel',
+ 'chapters_move_named' => 'Flytt :chapterName (kapittel)',
+ 'chapters_copy' => 'Kopiér kapittel',
+ 'chapters_copy_success' => 'Kapitelet ble kopiert',
+ 'chapters_permissions' => 'Kapitteltilganger',
+ 'chapters_empty' => 'Det finnes ingen sider i dette kapittelet.',
+ 'chapters_permissions_active' => 'Kapitteltilganger er aktivert',
+ 'chapters_permissions_success' => 'Kapitteltilgager er oppdatert',
+ 'chapters_search_this' => 'Søk i dette kapittelet',
+ 'chapter_sort_book' => 'Omorganisér bok',
+
+ // Pages
+ 'page' => 'Side',
+ 'pages' => 'Sider',
+ 'x_pages' => ':count side|:count sider',
+ 'pages_popular' => 'Populære sider',
+ 'pages_new' => 'Ny side',
+ 'pages_attachments' => 'Vedlegg',
+ 'pages_navigation' => 'Sidenavigasjon',
+ 'pages_delete' => 'Slett side',
+ 'pages_delete_named' => 'Slett :pageName (side)',
+ 'pages_delete_draft_named' => 'Slett utkastet :pageName (side)',
+ 'pages_delete_draft' => 'Slett utkastet',
+ 'pages_delete_success' => 'Siden er slettet',
+ 'pages_delete_draft_success' => 'Sideutkastet ble slettet',
+ 'pages_delete_warning_template' => 'Denne siden er i aktiv bruk som en bok eller kapittelstandard sidemal. Disse bøkene eller kapitlene vil ikke lenger ha en standardmal som er tilordnet etter at denne siden er slettet.',
+ 'pages_delete_confirm' => 'Er du sikker på at du vil slette siden?',
+ 'pages_delete_draft_confirm' => 'Er du sikker på at du vil slette utkastet?',
+ 'pages_editing_named' => 'Redigerer :pageName (side)',
+ 'pages_edit_draft_options' => 'Utkastsalternativer',
+ 'pages_edit_save_draft' => 'Lagre utkast',
+ 'pages_edit_draft' => 'Redigér utkast',
+ 'pages_editing_draft' => 'Redigerer utkast',
+ 'pages_editing_page' => 'Redigerer side',
+ 'pages_edit_draft_save_at' => 'Sist lagret ',
+ 'pages_edit_delete_draft' => 'Slett utkast',
+ 'pages_edit_delete_draft_confirm' => 'Er du sikker på at du vil slette utkastendringer i utkastet? Alle dine endringer, siden siste lagring vil gå tapt, og editoren vil bli oppdatert med den siste siden uten utkast til lagring.',
+ 'pages_edit_discard_draft' => 'Tilbakestill endring',
+ 'pages_edit_switch_to_markdown' => 'Bytt til Markdown tekstredigering',
+ 'pages_edit_switch_to_markdown_clean' => '(Renset innhold)',
+ 'pages_edit_switch_to_markdown_stable' => '(Urørt innhold)',
+ 'pages_edit_switch_to_wysiwyg' => 'Bytt til WYSIWYG tekstredigering',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Bytt til ny WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(under Beta-testing)',
+ 'pages_edit_set_changelog' => 'Angi endringslogg',
+ 'pages_edit_enter_changelog_desc' => 'Gi en kort beskrivelse av endringene dine',
+ 'pages_edit_enter_changelog' => 'Se endringslogg',
+ 'pages_editor_switch_title' => 'Bytt tekstredigeringsprogram',
+ 'pages_editor_switch_are_you_sure' => 'Er du sikker på at du vil bytte tekstredigeringsprogram for denne siden?',
+ 'pages_editor_switch_consider_following' => 'Husk dette når du bytter tekstredigeringsprogram:',
+ 'pages_editor_switch_consideration_a' => 'Når du bytter, vil den nye tekstredigereren bli satt for alle fremtidige redaktører. Dette inkluderer alle redaktører som ikke kan endre type selv.',
+ 'pages_editor_switch_consideration_b' => 'Dette kan potensielt føre til tap av formatdetaljer eller syntaks i noen tilfeller.',
+ 'pages_editor_switch_consideration_c' => 'Etikett- eller redigeringslogg-endringer loggført siden siste lagring vil ikke føres videre etter endringen.',
+ 'pages_save' => 'Lagre side',
+ 'pages_title' => 'Sidetittel',
+ 'pages_name' => 'Sidenavn',
+ 'pages_md_editor' => 'Tekstbehandler',
+ 'pages_md_preview' => 'Forhåndsvisning',
+ 'pages_md_insert_image' => 'Sett inn bilde',
+ 'pages_md_insert_link' => 'Sett inn lenke',
+ 'pages_md_insert_drawing' => 'Sett inn tegning',
+ 'pages_md_show_preview' => 'Forhåndsvisning',
+ 'pages_md_sync_scroll' => 'Synkroniser forhåndsvisningsrulle',
+ 'pages_md_plain_editor' => 'Redigeringsverktøy for klartekst',
+ 'pages_drawing_unsaved' => 'Ulagret tegning funnet',
+ 'pages_drawing_unsaved_confirm' => 'Ulagret tegningsdata ble funnet fra en tidligere mislykket lagring. Vil du gjenopprette og fortsette å redigere denne ulagrede tegningen?',
+ 'pages_not_in_chapter' => 'Siden tilhører ingen kapittel',
+ 'pages_move' => 'Flytt side',
+ 'pages_copy' => 'Kopiér side',
+ 'pages_copy_desination' => 'Destinasjon',
+ 'pages_copy_success' => 'Siden ble flyttet',
+ 'pages_permissions' => 'Sidetilganger',
+ 'pages_permissions_success' => 'Sidens tilganger ble endret',
+ 'pages_revision' => 'Revisjon',
+ 'pages_revisions' => 'Sidens revisjoner',
+ 'pages_revisions_desc' => 'Oppført nedenfor er alle tidligere revisjoner av denne siden. Du kan se tilbake igjen, sammenligne og gjenopprette tidligere sideversjoner hvis du tillater det. Den hele sidens historikk kan kanskje ikke gjenspeiles fullstendig her, avhengig av systemkonfigurasjonen, kan gamle revisjoner bli slettet automatisk.',
+ 'pages_revisions_named' => 'Revisjoner for :pageName',
+ 'pages_revision_named' => 'Revisjoner for :pageName',
+ 'pages_revision_restored_from' => 'Gjenopprettet fra #:id; :summary',
+ 'pages_revisions_created_by' => 'Skrevet av',
+ 'pages_revisions_date' => 'Revideringsdato',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revisjonsnummer',
+ 'pages_revisions_numbered' => 'Revisjon #:id',
+ 'pages_revisions_numbered_changes' => 'Endringer på revisjon #:id',
+ 'pages_revisions_editor' => 'Tekstredigeringstype',
+ 'pages_revisions_changelog' => 'Endringslogg',
+ 'pages_revisions_changes' => 'Endringer',
+ 'pages_revisions_current' => 'Siste versjon',
+ 'pages_revisions_preview' => 'Forhåndsvisning',
+ 'pages_revisions_restore' => 'Gjenopprett',
+ 'pages_revisions_none' => 'Denne siden har ingen revisjoner',
+ 'pages_copy_link' => 'Kopier lenke',
+ 'pages_edit_content_link' => 'Hopp til seksjonen i tekstbehandleren',
+ 'pages_pointer_enter_mode' => 'Gå til seksjonen velg modus',
+ 'pages_pointer_label' => 'Sidens seksjon alternativer',
+ 'pages_pointer_permalink' => 'Sideseksjons permalenke',
+ 'pages_pointer_include_tag' => 'Sideseksjonen inkluderer Tag',
+ 'pages_pointer_toggle_link' => 'Permalenke modus, trykk for å vise inkluderer tag',
+ 'pages_pointer_toggle_include' => 'Inkluder tag-modus, trykk for å vise permalenke',
+ 'pages_permissions_active' => 'Sidetilganger er aktive',
+ 'pages_initial_revision' => 'Første publisering',
+ 'pages_references_update_revision' => 'Automatisk oppdatering av interne lenker',
+ 'pages_initial_name' => 'Ny side',
+ 'pages_editing_draft_notification' => 'Du skriver på et utkast som sist ble lagret :timeDiff.',
+ 'pages_draft_edited_notification' => 'Siden har blitt endret siden du startet. Det anbefales at du forkaster dine endringer.',
+ 'pages_draft_page_changed_since_creation' => 'Denne siden er blitt oppdatert etter at dette utkastet ble opprettet. Det anbefales at du forkaster dette utkastet, eller er ekstra forsiktig slik at du ikke overskriver noen sideendringer.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count forfattere har begynt å endre denne siden.',
+ 'start_b' => ':userName skriver på siden for øyeblikket',
+ 'time_a' => 'siden sist siden ble oppdatert',
+ 'time_b' => 'i løpet av de siste :minCount minuttene',
+ 'message' => ':start :time. Prøv å ikke overskriv hverandres endringer!',
+ ],
+ 'pages_draft_discarded' => 'Utkastet er forkastet! Redigeringsprogrammet er oppdatert med gjeldende sideinnhold',
+ 'pages_draft_deleted' => 'Utkast slettet! Redigeringsprogrammet er oppdatert med gjeldende sideinnhold',
+ 'pages_specific' => 'Bestemt side',
+ 'pages_is_template' => 'Sidemal',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Bytt sidestolpe',
+ 'page_tags' => 'Sidemerker',
+ 'chapter_tags' => 'Kapittelmerker',
+ 'book_tags' => 'Bokmerker',
+ 'shelf_tags' => 'Hyllemerker',
+ 'tag' => 'Merke',
+ 'tags' => 'Merker',
+ 'tags_index_desc' => 'Merker kan brukes på innhold i systemet for å anvende en kategorisering på en fleksibel måte. Etiketter kan ha både en nøkkel og verdi, med valgfri. Når det er brukt, kan innhold sjekkes ved hjelp av taggnavn og verdi.',
+ 'tag_name' => 'Merketittel',
+ 'tag_value' => 'Merkeverdi (Valgfritt)',
+ 'tags_explain' => "Legg til merker for å kategorisere innholdet ditt. \n Du kan legge til merkeverdier for å beskrive dem ytterligere.",
+ 'tags_add' => 'Legg til flere merker',
+ 'tags_remove' => 'Fjern merke',
+ 'tags_usages' => 'Totalt emneordbruk',
+ 'tags_assigned_pages' => 'Tilordnet sider',
+ 'tags_assigned_chapters' => 'Tildelt til kapitler',
+ 'tags_assigned_books' => 'Tilordnet til bøker',
+ 'tags_assigned_shelves' => 'Tilordnet hyller',
+ 'tags_x_unique_values' => ':count unike verdier',
+ 'tags_all_values' => 'Alle verdier',
+ 'tags_view_tags' => 'Vis etiketter',
+ 'tags_view_existing_tags' => 'Vis eksisterende etiketter',
+ 'tags_list_empty_hint' => 'Etiketter kan tilordnes via sidepanelet, eller mens du redigerer detaljene for en hylle, bok eller kapittel.',
+ 'attachments' => 'Vedlegg',
+ 'attachments_explain' => 'Last opp vedlegg eller legg til lenker for å berike innholdet. Disse vil vises i sidestolpen på siden.',
+ 'attachments_explain_instant_save' => 'Endringer her blir lagret med en gang.',
+ 'attachments_upload' => 'Last opp vedlegg',
+ 'attachments_link' => 'Fest lenke',
+ 'attachments_upload_drop' => 'Alternativt kan du dra og slippe en fil her for å laste den opp som et vedlegg.',
+ 'attachments_set_link' => 'Angi lenke',
+ 'attachments_delete' => 'Er du sikker på at du vil fjerne vedlegget?',
+ 'attachments_dropzone' => 'Slipp filer her for å laste opp',
+ 'attachments_no_files' => 'Ingen vedlegg er lastet opp',
+ 'attachments_explain_link' => 'Du kan feste lenker til denne. Det kan være henvisning til andre sider, bøker etc. eller lenker fra nettet.',
+ 'attachments_link_name' => 'Lenkenavn',
+ 'attachment_link' => 'Vedleggslenke',
+ 'attachments_link_url' => 'Lenke til vedlegg',
+ 'attachments_link_url_hint' => 'Adresse til lenke eller vedlegg',
+ 'attach' => 'Fest',
+ 'attachments_insert_link' => 'Fest vedleggslenke',
+ 'attachments_edit_file' => 'Endre vedlegg',
+ 'attachments_edit_file_name' => 'Vedleggsnavn',
+ 'attachments_edit_drop_upload' => 'Dra og slipp eller trykk her for å oppdatere eller overskrive',
+ 'attachments_order_updated' => 'Vedleggssortering endret',
+ 'attachments_updated_success' => 'Vedleggsdetaljer endret',
+ 'attachments_deleted' => 'Vedlegg fjernet',
+ 'attachments_file_uploaded' => 'Vedlegg ble lastet opp',
+ 'attachments_file_updated' => 'Vedlegget ble oppdatert',
+ 'attachments_link_attached' => 'Lenken ble festet til siden',
+ 'templates' => 'Maler',
+ 'templates_set_as_template' => 'Siden er en mal',
+ 'templates_explain_set_as_template' => 'Du kan angi denne siden som en mal slik at innholdet kan brukes når du oppretter andre sider. Andre brukere vil kunne bruke denne malen hvis de har visningstillatelser for denne siden.',
+ 'templates_replace_content' => 'Bytt sideinnhold',
+ 'templates_append_content' => 'Legg til neders på siden',
+ 'templates_prepend_content' => 'Legg til øverst på siden',
+
+ // Profile View
+ 'profile_user_for_x' => 'Medlem i :time',
+ 'profile_created_content' => 'Har skrevet',
+ 'profile_not_created_pages' => ':userName har ikke forfattet noen sider',
+ 'profile_not_created_chapters' => ':userName har ikke opprettet noen kapitler',
+ 'profile_not_created_books' => ':userName har ikke laget noen bøker',
+ 'profile_not_created_shelves' => ':userName har ikke hengt opp noen hyller',
+
+ // Comments
+ 'comment' => 'Kommentar',
+ 'comments' => 'Kommentarer',
+ 'comment_add' => 'Skriv kommentar',
+ 'comment_none' => 'Ingen kommentarer å vise',
+ 'comment_placeholder' => 'Skriv en kommentar her',
+ 'comment_thread_count' => ':count Kommentar Tråd|:count Kommentar Tråder',
+ 'comment_archived_count' => ':count Arkivert',
+ 'comment_archived_threads' => 'Arkiverte tråder',
+ 'comment_save' => 'Publiser kommentar',
+ 'comment_new' => 'Ny kommentar',
+ 'comment_created' => 'kommenterte :createDiff',
+ 'comment_updated' => 'Oppdatert :updateDiff av :username',
+ 'comment_updated_indicator' => 'Oppdatert',
+ 'comment_deleted_success' => 'Kommentar fjernet',
+ 'comment_created_success' => 'Kommentar skrevet',
+ 'comment_updated_success' => 'Kommentar endret',
+ 'comment_archive_success' => 'Kommentar arkivert',
+ 'comment_unarchive_success' => 'Kommentar uarkivert',
+ 'comment_view' => 'Vis kommentar',
+ 'comment_jump_to_thread' => 'Gå til tråd',
+ 'comment_delete_confirm' => 'Er du sikker på at du vil fjerne kommentaren?',
+ 'comment_in_reply_to' => 'Som svar til :commentId',
+ 'comment_reference' => 'Referanse',
+ 'comment_reference_outdated' => '(Utdatert)',
+ 'comment_editor_explain' => 'Her er kommentarene som er på denne siden. Kommentarer kan legges til og administreres når du ser på den lagrede siden.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Vil du slette revisjonen?',
+ 'revision_restore_confirm' => 'Vil du gjenopprette revisjonen? Innholdet på siden vil bli overskrevet med denne revisjonen.',
+ 'revision_cannot_delete_latest' => 'CKan ikke slette siste revisjon.',
+
+ // Copy view
+ 'copy_consider' => 'Vennligst vurder nedenfor når du kopierer innholdet.',
+ 'copy_consider_permissions' => 'Egendefinerte tilgangsinnstillinger vil ikke bli kopiert.',
+ 'copy_consider_owner' => 'Du vil bli eier av alt kopiert innhold.',
+ 'copy_consider_images' => 'Sidebildefiler vil ikke bli duplisert og de opprinnelige bildene beholder relasjonen til siden de opprinnelig ble lastet opp til.',
+ 'copy_consider_attachments' => 'Sidevedlegg vil ikke bli kopiert.',
+ 'copy_consider_access' => 'Endring av sted, eier eller rettigheter kan føre til at innholdet er tilgjengelig for dem som tidligere har vært uten adgang.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Konverter til bokhylle',
+ 'convert_to_shelf_contents_desc' => 'Du kan konvertere denne boken til en ny hylle med samme innhold. Kapitteler i denne boken vil bli konvertert til nye bøker. Hvis boken inneholder noen sider, som ikke er i et kapitler, boka blir omdøpt og med slike sider, og boka blir en del av den nye bokhyllen.',
+ 'convert_to_shelf_permissions_desc' => 'Eventuelle tillatelser som er satt på denne boka, vil bli kopiert til ny hylle og til alle nye under-bøker som ikke har egne tillatelser satt. Vær oppmerksom på at tillatelser på hyllene ikke skjuler automatisk innhold innenfor, da de gjør for bøker.',
+ 'convert_book' => 'Konverter bok',
+ 'convert_book_confirm' => 'Er du sikker på at du vil konvertere denne boken?',
+ 'convert_undo_warning' => 'Dette kan ikke bli så lett å angre.',
+ 'convert_to_book' => 'Konverter til bok',
+ 'convert_to_book_desc' => 'Du kan konvertere kapittelet til en ny bok med samme innhold. Alle tillatelser som er angitt i dette kapittelet vil bli kopiert til den nye boken, men alle arvede tillatelser, fra overordnet bok vil ikke kopieres noe som kan føre til en endring av tilgangskontroll.',
+ 'convert_chapter' => 'Konverter kapittel',
+ 'convert_chapter_confirm' => 'Er du sikker på at du vil konvertere dette kapittelet?',
+
+ // References
+ 'references' => 'Referanser',
+ 'references_none' => 'Det er ingen sporede referanser til dette elementet.',
+ 'references_to_desc' => 'Nedenfor vises alle de kjente sidene i systemet som lenker til denne oppføringen.',
+
+ // Watch Options
+ 'watch' => 'Overvåk',
+ 'watch_title_default' => 'Standardinnstillinger',
+ 'watch_desc_default' => 'Bytt til dine standardinnstilleringer for varsling.',
+ 'watch_title_ignore' => 'Ignorer',
+ 'watch_desc_ignore' => 'Ignorer alle varslinger, inkludert de fra preferanser for brukernivå.',
+ 'watch_title_new' => 'Nye sider',
+ 'watch_desc_new' => 'Varsle når en ny side er opprettet innenfor dette elementet.',
+ 'watch_title_updates' => 'Alle sideoppdateringer',
+ 'watch_desc_updates' => 'Varsle på alle nye sider og endringer av siden.',
+ 'watch_desc_updates_page' => 'Varsle ved alle sideendringer.',
+ 'watch_title_comments' => 'Alle sideoppdateringer og kommentarer',
+ 'watch_desc_comments' => 'Varsle om alle nye sider, endringer på side og nye kommentarer.',
+ 'watch_desc_comments_page' => 'Varsle ved sideendringer og nye kommentarer.',
+ 'watch_change_default' => 'Endre standard varslingsinnstillinger',
+ 'watch_detail_ignore' => 'Ignorerer varsler',
+ 'watch_detail_new' => 'Varsling for nye sider',
+ 'watch_detail_updates' => 'Varsling for nye sider og oppdateringer',
+ 'watch_detail_comments' => 'Varsling for nye sider, oppdateringer og kommentarer',
+ 'watch_detail_parent_book' => 'Overvåker via overordnet bok',
+ 'watch_detail_parent_book_ignore' => 'Ignorerer via overordnet bok',
+ 'watch_detail_parent_chapter' => 'Overvåker via overordnet kapittel',
+ 'watch_detail_parent_chapter_ignore' => 'Ignorerer via overordnet kapittel',
+];
diff --git a/lang/nb/errors.php b/lang/nb/errors.php
new file mode 100644
index 00000000000..111a20418cd
--- /dev/null
+++ b/lang/nb/errors.php
@@ -0,0 +1,135 @@
+ 'Du har ikke tilgang til å se denne siden.',
+ 'permissionJson' => 'Du har ikke tilgang til å utføre denne handlingen.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'En konto med :email finnes allerede, men har andre detaljer.',
+ 'auth_pre_register_theme_prevention' => 'Brukerkonto kunne ikke bli registrert for de angitte opplysningene',
+ 'email_already_confirmed' => 'E-posten er allerede bekreftet, du kan forsøke å logge inn.',
+ 'email_confirmation_invalid' => 'Denne bekreftelseskoden er allerede benyttet eller utgått. Prøv å registrere på nytt.',
+ 'email_confirmation_expired' => 'Bekreftelseskoden er allerede utgått, en ny e-post er sendt.',
+ 'email_confirmation_awaiting' => 'Du må bekrefte e-posten for denne kontoen.',
+ 'ldap_fail_anonymous' => 'LDAP kan ikke benyttes med anonym tilgang for denne tjeneren.',
+ 'ldap_fail_authed' => 'LDAP tilgang feilet med angitt DN',
+ 'ldap_extension_not_installed' => 'LDAP PHP modulen er ikke installert.',
+ 'ldap_cannot_connect' => 'Klarer ikke koble til LDAP på denne adressen',
+ 'saml_already_logged_in' => 'Allerede logget inn',
+ 'saml_no_email_address' => 'Denne kontoinformasjonen finnes ikke i det eksterne autentiseringssystemet.',
+ 'saml_invalid_response_id' => 'Forespørselen fra det eksterne autentiseringssystemet gjenkjennes ikke av en prosess som startes av dette programmet. Å navigere tilbake etter pålogging kan forårsake dette problemet.',
+ 'saml_fail_authed' => 'Innlogging gjennom :system feilet. Fikk ikke kontakt med autentiseringstjeneren.',
+ 'oidc_already_logged_in' => 'Allerede logget inn',
+ 'oidc_no_email_address' => 'Finner ikke en e-postadresse, for denne brukeren, i dataene som leveres av det eksterne autentiseringssystemet',
+ 'oidc_fail_authed' => 'Innlogging ved hjelp av :system feilet, systemet ga ikke vellykket godkjenning',
+ 'social_no_action_defined' => 'Ingen handlinger er definert',
+ 'social_login_bad_response' => "Feilmelding mottat fra :socialAccount innloggingstjeneste: \n:error",
+ 'social_account_in_use' => 'Denne :socialAccount kontoen er allerede registrert, Prøv å logge inn med :socialAccount alternativet.',
+ 'social_account_email_in_use' => 'E-posten :email er allerede i bruk. Har du allerede en konto hos :socialAccount kan dette angis fra profilsiden din.',
+ 'social_account_existing' => 'Denne :socialAccount er allerede koblet til din konto.',
+ 'social_account_already_used_existing' => 'Denne :socialAccount kontoen brukes allerede av noen andre.',
+ 'social_account_not_used' => 'Denne :socialAccount konten er ikke koblet til noen konto, angi denne i profilinnstillingene dine. ',
+ 'social_account_register_instructions' => 'Har du ikke en konto her ennå, kan du benytte :socialAccount alternativet for å registrere deg.',
+ 'social_driver_not_found' => 'Autentiseringstjeneste fra sosiale medier er ikke installert',
+ 'social_driver_not_configured' => 'Dine :socialAccount innstilliner er ikke angitt.',
+ 'invite_token_expired' => 'Invitasjonslenken har utgått, du kan forsøke å be om nytt passord istede.',
+ 'login_user_not_found' => 'En bruker for denne handlingen ble ikke funnet.',
+
+ // System
+ 'path_not_writable' => 'Filstien :filePath aksepterer ikke filer, du må sjekke filstitilganger i systemet.',
+ 'cannot_get_image_from_url' => 'Kan ikke hente bilde fra :url',
+ 'cannot_create_thumbs' => 'Kan ikke opprette miniatyrbilder. GD PHP er ikke installert.',
+ 'server_upload_limit' => 'Vedlegget er for stort, forsøk med et mindre vedlegg.',
+ 'server_post_limit' => 'Serveren kan ikke motta det denne mengde data. Prøv igjen med mindre data eller en mindre fil.',
+ 'uploaded' => 'Tjenesten aksepterer ikke vedlegg som er så stor.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Bildet kunne ikke lastes opp, forsøk igjen.',
+ 'image_upload_type_error' => 'Bildeformatet støttes ikke, forsøk med et annet format.',
+ 'image_upload_replace_type' => 'Bildeerstatning må være av samme type',
+ 'image_upload_memory_limit' => 'Kunne ikke håndtere bildeopplasting og/eller lage miniatyrbilder på grunn av systemressursgrensen.',
+ 'image_thumbnail_memory_limit' => 'Kunne ikke opprette variasjoner i bildestørrelse på grunn av systemressursgrensen.',
+ 'image_gallery_thumbnail_memory_limit' => 'Kunne ikke opprette miniatyrbilder på grunn av systemressursgrensene.',
+ 'drawing_data_not_found' => 'Tegningsdata kunne ikke lastes. Det er mulig at tegningsfilen ikke finnes lenger, eller du har ikke rettigheter til å få tilgang til den.',
+
+ // Attachments
+ 'attachment_not_found' => 'Vedlegget ble ikke funnet',
+ 'attachment_upload_error' => 'En feil har oppstått ved opplasting av vedleggsfil',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Kunne ikke lagre utkastet, forsikre deg om at du er tilkoblet tjeneren (Har du nettilgang?)',
+ 'page_draft_delete_fail' => 'Kunne ikke slette sideutkast og hente gjeldende side lagret innhold',
+ 'page_custom_home_deletion' => 'Kan ikke slette en side som er satt som forside.',
+
+ // Entities
+ 'entity_not_found' => 'Entitet ble ikke funnet',
+ 'bookshelf_not_found' => 'Bokhyllen ble ikke funnet',
+ 'book_not_found' => 'Boken ble ikke funnet',
+ 'page_not_found' => 'Siden ble ikke funnet',
+ 'chapter_not_found' => 'Kapittel ble ikke funnet',
+ 'selected_book_not_found' => 'Den valgte boken eksisterer ikke',
+ 'selected_book_chapter_not_found' => 'Den valgte boken eller kapittelet eksisterer ikke',
+ 'guests_cannot_save_drafts' => 'Gjester kan ikke lagre utkast',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Du kan ikke slette den eneste administratoren',
+ 'users_cannot_delete_guest' => 'Du kan ikke slette gjestebrukeren (Du kan deaktivere offentlig visning istede)',
+ 'users_could_not_send_invite' => 'Kunne ikke opprette bruker fordi invitasjons e-post ikke kunne sendes',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Denne rollen kan ikke endres',
+ 'role_system_cannot_be_deleted' => 'Denne systemrollen kan ikke slettes',
+ 'role_registration_default_cannot_delete' => 'Du kan ikke slette en rolle som er satt som registreringsrolle (rollen nye kontoer får når de registrerer seg)',
+ 'role_cannot_remove_only_admin' => 'Denne brukeren er den eneste brukeren som er tildelt administratorrollen. Tilordne administratorrollen til en annen bruker før du prøver å fjerne den her.',
+
+ // Comments
+ 'comment_list' => 'Det oppstod en feil under henting av kommentarene.',
+ 'cannot_add_comment_to_draft' => 'Du kan ikke legge til kommentarer i et utkast.',
+ 'comment_add' => 'Det oppsto en feil da kommentaren skulle legges til / oppdateres.',
+ 'comment_delete' => 'Det oppstod en feil under sletting av kommentaren.',
+ 'empty_comment' => 'Kan ikke legge til en tom kommentar.',
+
+ // Error pages
+ '404_page_not_found' => 'Siden finnes ikke',
+ 'sorry_page_not_found' => 'Beklager, siden du leter etter ble ikke funnet.',
+ 'sorry_page_not_found_permission_warning' => 'Hvis du forventet at denne siden skulle eksistere, har du kanskje ikke tillatelse til å se den.',
+ 'image_not_found' => 'Bildet ble ikke funnet',
+ 'image_not_found_subtitle' => 'Beklager, bildefilen du ser etter ble ikke funnet.',
+ 'image_not_found_details' => 'Om du forventet at dette bildet skal eksistere, er det mulig det er slettet.',
+ 'return_home' => 'Gå til hovedside',
+ 'error_occurred' => 'En feil oppsto',
+ 'app_down' => ':appName er nede for øyeblikket',
+ 'back_soon' => 'Den vil snart komme tilbake.',
+
+ // Import
+ 'import_zip_cant_read' => 'Kunne ikke lese ZIP-filen.',
+ 'import_zip_cant_decode_data' => 'Kunne ikke finne og dekode ZIP data.json innhold.',
+ 'import_zip_no_data' => 'ZIP-fildata har ingen forventet bok, kapittel eller sideinnhold.',
+ 'import_zip_data_too_large' => 'ZIP data.json innholdet overskrider maksimal filstørrelse for opplasting.',
+ 'import_validation_failed' => 'Import av ZIP feilet i å validere med feil:',
+ 'import_zip_failed_notification' => 'Kunne ikke importere ZIP-fil.',
+ 'import_perms_books' => 'Du mangler nødvendige tillatelser for å lage bøker.',
+ 'import_perms_chapters' => 'Du mangler de nødvendige tillatelsene for å opprette kapittel.',
+ 'import_perms_pages' => 'Du mangler nødvendige tillatelser for å opprette sider.',
+ 'import_perms_images' => 'Du mangler de nødvendige tillatelsene for å opprette bilder.',
+ 'import_perms_attachments' => 'Du mangler nødvendig tillatelse for å opprette vedlegg.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Ingen autorisasjonstoken ble funnet på forespørselen',
+ 'api_bad_authorization_format' => 'Det ble funnet et autorisasjonstoken på forespørselen, men formatet virket feil',
+ 'api_user_token_not_found' => 'Ingen samsvarende API-token ble funnet for det angitte autorisasjonstokenet',
+ 'api_incorrect_token_secret' => 'Hemmeligheten som er gitt for det gitte brukte API-tokenet er feil',
+ 'api_user_no_api_permission' => 'Eieren av det brukte API-tokenet har ikke tillatelse til å ringe API-samtaler',
+ 'api_user_token_expired' => 'Autorisasjonstokenet som er brukt, har utløpt',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Feil kastet når du sendte en test-e-post:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'URLen samsvarer ikke med de konfigurerte SSR-vertene',
+];
diff --git a/lang/nb/notifications.php b/lang/nb/notifications.php
new file mode 100644
index 00000000000..47dc34a7150
--- /dev/null
+++ b/lang/nb/notifications.php
@@ -0,0 +1,29 @@
+ 'Ny kommentar på siden: :pageName',
+ 'new_comment_intro' => 'En bruker har kommentert en side i :appName:',
+ 'new_page_subject' => 'Ny side: :pageName',
+ 'new_page_intro' => 'En ny side er opprettet i :appName:',
+ 'updated_page_subject' => 'Oppdatert side: :pageName',
+ 'updated_page_intro' => 'En side er oppdatert i :appName:',
+ 'updated_page_debounce' => 'For å forhindre mange varslinger, vil du ikke få nye varslinger for endringer på denne siden fra samme forfatter.',
+ 'comment_mention_subject' => 'Du har blitt nevnt i en kommentar på siden: :pageName',
+ 'comment_mention_intro' => 'Du har blitt nevnt i en kommentar på :appName:',
+
+ 'detail_page_name' => 'Sidenavn:',
+ 'detail_page_path' => 'Side bane:',
+ 'detail_commenter' => 'Kommentar fra:',
+ 'detail_comment' => 'Kommentar:',
+ 'detail_created_by' => 'Opprettet av:',
+ 'detail_updated_by' => 'Oppdatert av:',
+
+ 'action_view_comment' => 'Vis kommentar',
+ 'action_view_page' => 'Se side',
+
+ 'footer_reason' => 'Denne meldingen ble sendt til deg fordi :link dekker denne typen aktivitet for dette elementet.',
+ 'footer_reason_link' => 'dine varslingsinnstillinger',
+];
diff --git a/resources/lang/nb/pagination.php b/lang/nb/pagination.php
similarity index 100%
rename from resources/lang/nb/pagination.php
rename to lang/nb/pagination.php
diff --git a/resources/lang/nb/passwords.php b/lang/nb/passwords.php
similarity index 100%
rename from resources/lang/nb/passwords.php
rename to lang/nb/passwords.php
diff --git a/lang/nb/preferences.php b/lang/nb/preferences.php
new file mode 100644
index 00000000000..b41675caf89
--- /dev/null
+++ b/lang/nb/preferences.php
@@ -0,0 +1,52 @@
+ 'Min konto',
+
+ 'shortcuts' => 'Snarveier',
+ 'shortcuts_interface' => 'Innstillinger for UI snarveier',
+ 'shortcuts_toggle_desc' => 'Her kan du aktivere eller deaktivere snarveier for tastatur system som brukes til navigasjon og handlinger.',
+ 'shortcuts_customize_desc' => 'Du kan tilpasse hver av snarveiene nedenfor. Trykk på ønsket nøkkelkombinasjon etter å ha valgt inndata for en snarvei.',
+ 'shortcuts_toggle_label' => 'Tastatursnarveier aktivert',
+ 'shortcuts_section_navigation' => 'Navigasjon',
+ 'shortcuts_section_actions' => 'Vanlige handlinger',
+ 'shortcuts_save' => 'Lagre snarveier',
+ 'shortcuts_overlay_desc' => 'Merk: Når snarveier er aktivert er et hjelperoverlegg tilgjengelig via å trykke "?" som vil fremheve de tilgjengelige snarveiene som for øyeblikket er synlige på skjermen.',
+ 'shortcuts_update_success' => 'Snarvei innstillinger er oppdatert!',
+ 'shortcuts_overview_desc' => 'Behandle tastatursnarveier du kan bruke for å navigere i systembrukergrensesnittet.',
+
+ 'notifications' => 'Innstillinger for varsling',
+ 'notifications_desc' => 'Kontroller e-postvarslene du mottar når en bestemt aktivitet utføres i systemet.',
+ 'notifications_opt_own_page_changes' => 'Varsle ved endringer til sider jeg eier',
+ 'notifications_opt_own_page_comments' => 'Varsle om kommentarer på sider jeg eier',
+ 'notifications_opt_comment_mentions' => 'Varsle når jeg blir nevnt i en kommentar',
+ 'notifications_opt_comment_replies' => 'Varsle ved svar på mine kommentarer',
+ 'notifications_save' => 'Lagre innstillinger',
+ 'notifications_update_success' => 'Varslingsinnstillingene er oppdatert!',
+ 'notifications_watched' => 'Overvåka & ignorerte elementer',
+ 'notifications_watched_desc' => 'Nedenfor er elementene som har egendefinerte varslingsinnstillinger i bruk. For å oppdatere innstillingene for disse, se elementet, finn varslingsalternativene i sidepanelet.',
+
+ 'auth' => 'Tilgang og sikkerhet',
+ 'auth_change_password' => 'Endre passord',
+ 'auth_change_password_desc' => 'Endre passordet du bruker for å logge inn med. Dette må være minst 8 tegn langt.',
+ 'auth_change_password_success' => 'Passordet har blitt oppdatert!',
+
+ 'profile' => 'Profildetaljer',
+ 'profile_desc' => 'Gi opplysningene om kontoen din som representerer deg til andre brukere, i tillegg til opplysninger som brukes til kommunikasjon og systempersonalisering.',
+ 'profile_view_public' => 'Vis offentlig profil',
+ 'profile_name_desc' => 'Tilpass visningsnavn som vil være synlig for andre brukere i systemet ved hjelp av aktiviteten du utfører, og innholdet du eier.',
+ 'profile_email_desc' => 'Denne e-posten brukes for varsler, og avhengig av aktiv systemautentisering, systemtilgang.',
+ 'profile_email_no_permission' => 'Du har dessverre ikke tillatelse til å endre e-postadressen din. Hvis du ønsker å endre dette, må du be om en administrator om å endre dette for deg.',
+ 'profile_avatar_desc' => 'Velg et bilde som skal brukes til å representere deg selv til andre i systemet. Ideelt sett bør dette bildet være kvadratisk og ca. 256 px i bredde og høyde.',
+ 'profile_admin_options' => 'Alternativer for administrator',
+ 'profile_admin_options_desc' => 'Du finner flere alternativer på administratornivå, som de som skal administrere rolletildelinger, for din brukerkonto i området "Innstillinger > Brukere" i applikasjonen.',
+
+ 'delete_account' => 'Slett konto',
+ 'delete_my_account' => 'Slett kontoen min',
+ 'delete_my_account_desc' => 'Dette vil slette din brukerkonto fra systemet. Du vil ikke kunne gjenopprette denne kontoen eller tilbakestille denne handlingen. Innhold du har opprettet, som f. eks. opprettede sider og opplastede bilder, vil forbli uendret.',
+ 'delete_my_account_warning' => 'Er du sikker på at du vil slette kontoen din?',
+];
diff --git a/lang/nb/settings.php b/lang/nb/settings.php
new file mode 100644
index 00000000000..5fcaaaca6c1
--- /dev/null
+++ b/lang/nb/settings.php
@@ -0,0 +1,374 @@
+ 'Innstillinger',
+ 'settings_save' => 'Lagre innstillinger',
+ 'system_version' => 'System versjon',
+ 'categories' => 'Kategorier',
+
+ // App Settings
+ 'app_customization' => 'Tilpassing',
+ 'app_features_security' => 'Funksjoner og sikkerhet',
+ 'app_name' => 'Applikasjonsnavn',
+ 'app_name_desc' => 'Dette navnet vises i overskriften og i alle e-postmeldinger som sendes av systemet.',
+ 'app_name_header' => 'Vis navn i topptekst',
+ 'app_public_access' => 'Offentlig tilgang',
+ 'app_public_access_desc' => 'Hvis du aktiverer dette alternativet, kan besøkende, som ikke er logget på, få tilgang til innhold i din BookStack-forekomst.',
+ 'app_public_access_desc_guest' => 'Tilgang for offentlige besøkende kan kontrolleres gjennom "Gjest" -brukeren.',
+ 'app_public_access_toggle' => 'Tillat offentlig tilgang',
+ 'app_public_viewing' => 'Tillat offentlig visning?',
+ 'app_secure_images' => 'Høyere sikkerhet på bildeopplastinger',
+ 'app_secure_images_toggle' => 'Enable høyere sikkerhet på bildeopplastinger',
+ 'app_secure_images_desc' => 'Av ytelsesgrunner er alle bilder offentlige. Dette alternativet legger til en tilfeldig streng som er vanskelig å gjette foran bildets nettadresser. Forsikre deg om at katalogindekser ikke er aktivert for å forhindre enkel tilgang.',
+ 'app_default_editor' => 'Standard sideredigeringsprogram',
+ 'app_default_editor_desc' => 'Velg hvilken tekstbehandler som skal brukes som standard når du redigerer nye sider. Dette kan overskrives på et sidenivå der tillatelser tillates.',
+ 'app_custom_html' => 'Tilpasset HTML-hodeinnhold',
+ 'app_custom_html_desc' => 'Alt innhold som legges til her, blir satt inn i bunnen av -delen på hver side. Dette er praktisk for å overstyre stiler eller legge til analysekode.',
+ 'app_custom_html_disabled_notice' => 'Tilpasset HTML-hodeinnhold er deaktivert på denne innstillingssiden for å sikre at eventuelle endringer ødelegger noe, kan tilbakestilles.',
+ 'app_logo' => 'Applikasjonslogo',
+ 'app_logo_desc' => 'Dette brukes i programtoppfeltet blant andre områder. Dette bildet skal være 86px i høyde. Store bilder vil bli skalert ned.',
+ 'app_icon' => 'Applikasjons ikon',
+ 'app_icon_desc' => 'Dette ikonet brukes for nettleserfaner og snarveisikoner. Dette bør være et bilde på 256 px kvadrat PNG.',
+ 'app_homepage' => 'Applikasjonens hjemmeside',
+ 'app_homepage_desc' => 'Velg en visning som skal vises på hjemmesiden i stedet for standardvisningen. Sidetillatelser ignoreres for utvalgte sider.',
+ 'app_homepage_select' => 'Velg en side',
+ 'app_footer_links' => 'Fotlenker',
+ 'app_footer_links_desc' => 'Legg til fotlenker i sidens fotområde. Disse vil vises nederst på de fleste sider, inkludert sider som ikke krever innlogging. Du kan bruke «trans::» etiketter for system-definerte oversettelser. For eksempel: Bruk «trans::common.privacy_policy» for å vise teksten «Personvernregler» og «trans::common.terms_of_service» for å vise teksten «Bruksvilkår».',
+ 'app_footer_links_label' => 'Lenketekst',
+ 'app_footer_links_url' => 'Lenke',
+ 'app_footer_links_add' => 'Legg til fotlenke',
+ 'app_disable_comments' => 'Deaktiver kommentarer',
+ 'app_disable_comments_toggle' => 'Deaktiver kommentarer',
+ 'app_disable_comments_desc' => 'Deaktiver kommentarer på tvers av alle sidene i applikasjonen. Eksisterende kommentarer vises ikke.',
+
+ // Color settings
+ 'color_scheme' => 'Applikasjonens farge oppsett',
+ 'color_scheme_desc' => 'Sett farger for å bruke i programmets brukergrensesnitt. Farger kan konfigureres separat for mørke og lysmoduser for å passe best inn temaet og sørge for lesbarhet.',
+ 'ui_colors_desc' => 'Angi primær farge for programmet og standard link farge. Primær farge brukes hovedsakelig for toppbanner, knapper og grensesnittets dekorasjoner. Standardfargen for koblinger brukes for tekstbaserte lenker og handlinger, både i skriftlig innhold og i programgrensesnittet.',
+ 'app_color' => 'Primær farge',
+ 'link_color' => 'Standard koblingsfarge',
+ 'content_colors_desc' => 'Angi farger for alle elementer i organiseringshierarkiet. Velger du farger med lik lysstyrke til standard farger anbefales for lesbarhet.',
+ 'bookshelf_color' => 'Hyllefarge',
+ 'book_color' => 'Bokfarge',
+ 'chapter_color' => 'Kapittelfarge',
+ 'page_color' => 'Sidefarge',
+ 'page_draft_color' => 'Sideutkastsfarge',
+
+ // Registration Settings
+ 'reg_settings' => 'Registrering',
+ 'reg_enable' => 'Tillat registrering',
+ 'reg_enable_toggle' => 'Tillat registrering',
+ 'reg_enable_desc' => 'Når registrering er aktivert vil brukeren kunne registrere seg som applikasjonsbruker. Ved registrering får de en standard brukerrolle.',
+ 'reg_default_role' => 'Standard brukerrolle etter registrering',
+ 'reg_enable_external_warning' => 'Alternativet ovenfor ignoreres mens ekstern LDAP- eller SAML-autentisering er aktiv. Brukerkontoer for ikke-eksisterende medlemmer blir automatisk opprettet hvis autentisering mot det eksterne systemet i bruk lykkes.',
+ 'reg_email_confirmation' => 'E-postbekreftelse',
+ 'reg_email_confirmation_toggle' => 'Krev e-postbekreftelse',
+ 'reg_confirm_email_desc' => 'Hvis domenebegrensning brukes, vil e-postbekreftelse være nødvendig, og dette alternativet vil bli ignorert.',
+ 'reg_confirm_restrict_domain' => 'Domenebegrensning',
+ 'reg_confirm_restrict_domain_desc' => 'Skriv inn en kommaseparert liste over e-postdomener du vil begrense registreringen til. Brukerne vil bli sendt en e-post for å bekrefte adressen deres før de får lov til å kommunisere med applikasjonen. Vær oppmerksom på at brukere vil kunne endre e-postadressene sine etter vellykket registrering.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Ingen begrensninger er satt',
+
+ // Sorting Settings
+ 'sorting' => 'Lister & Sortering',
+ 'sorting_book_default' => 'Standard regel for boksortering',
+ 'sorting_book_default_desc' => 'Velg standard sorteringsregelen som skal brukes for nye bøker. Dette vil ikke påvirke eksisterende bøker, og kan overstyres per bok.',
+ 'sorting_rules' => 'Sorteringsregler',
+ 'sorting_rules_desc' => 'Dette er forhåndsdefinerte sorteringsoperasjoner som kan brukes på innhold i systemet.',
+ 'sort_rule_assigned_to_x_books' => 'Tildelt til :count bok|Tildelt til :count bøker',
+ 'sort_rule_create' => 'Opprett sorteringsregel',
+ 'sort_rule_edit' => 'Rediger sorteringsregel',
+ 'sort_rule_delete' => 'Slett sorteringsregel',
+ 'sort_rule_delete_desc' => 'Fjern denne sorteringsregelen fra systemet. Bøker som bruker denne sorteringsregelen vil gå tilbake til manuell sortering.',
+ 'sort_rule_delete_warn_books' => 'Denne sorteringsregelen brukes for øyeblikket på :count bok/bøker. Er du sikker på at du vil slette denne?',
+ 'sort_rule_delete_warn_default' => 'Denne sorteringsregelen brukes for øyeblikket som standard for bøker. Er du sikker på at du vil slette denne?',
+ 'sort_rule_details' => 'Detaljer om sorteringsregel',
+ 'sort_rule_details_desc' => 'Angi et navn for denne sorteringsregelen, som vil vises i lister når brukerne velger en sorteringsmetode.',
+ 'sort_rule_operations' => 'Sorteringsoperasjoner',
+ 'sort_rule_operations_desc' => 'Konfigurer sorteringshandlinger ved å flytte dem fra listen over tilgjengelige operasjoner. Ved bruk vil operasjonene bli brukt i rekkefølge, fra topp til bunn. Eventuelle endringer gjort her vil bli brukt for alle tildelte bøker når du lagrer.',
+ 'sort_rule_available_operations' => 'Tilgjengelige operasjoner',
+ 'sort_rule_available_operations_empty' => 'Ingen gjenværende operasjoner',
+ 'sort_rule_configured_operations' => 'Konfigurerte operasjoner',
+ 'sort_rule_configured_operations_empty' => 'Dra/legg til operasjoner fra listen "Tilgjengelige operasjoner"',
+ 'sort_rule_op_asc' => '(Stigende)',
+ 'sort_rule_op_desc' => '(Synkende)',
+ 'sort_rule_op_name' => 'Navn - Alfabetisk',
+ 'sort_rule_op_name_numeric' => 'Navn - Numerisk',
+ 'sort_rule_op_created_date' => 'Dato opprettet',
+ 'sort_rule_op_updated_date' => 'Dato oppdatert',
+ 'sort_rule_op_chapters_first' => 'Kapitler først',
+ 'sort_rule_op_chapters_last' => 'Kapitler sist',
+ 'sorting_page_limits' => 'Visningsgrenser for hver side',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Vedlikehold',
+ 'maint_image_cleanup' => 'Bildeopprydding',
+ 'maint_image_cleanup_desc' => 'Skanner side og revisjonsinnhold for å sjekke hvilke bilder og tegninger som for øyeblikket er i bruk, og hvilke bilder som er overflødige. Forsikre deg om at du lager en full database og sikkerhetskopiering av bilder før du kjører denne.',
+ 'maint_delete_images_only_in_revisions' => 'Slett også bilder som bare finnes i game siderevisjoner',
+ 'maint_image_cleanup_run' => 'Kjør opprydding',
+ 'maint_image_cleanup_warning' => ':count potensielt ubrukte bilder ble funnet. Er du sikker på at du vil slette disse bildene?',
+ 'maint_image_cleanup_success' => ':count potensielt ubrukte bilder funnet og slettet!',
+ 'maint_image_cleanup_nothing_found' => 'Ingen ubrukte bilder funnet, ingenting slettet!',
+ 'maint_send_test_email' => 'Send en test-e-post',
+ 'maint_send_test_email_desc' => 'Dette sender en test-e-post til din e-postadresse som er angitt i profilen din.',
+ 'maint_send_test_email_run' => 'Send en test-e-post',
+ 'maint_send_test_email_success' => 'Send en test-e-post til :address',
+ 'maint_send_test_email_mail_subject' => 'Test-e-post',
+ 'maint_send_test_email_mail_greeting' => 'E-postsending ser ut til å fungere!',
+ 'maint_send_test_email_mail_text' => 'Gratulerer! Da du mottok dette e-postvarselet, ser det ut til at e-postinnstillingene dine er konfigurert riktig.',
+ 'maint_recycle_bin_desc' => 'Slettede hyller, bøker, kapitler og sider kastes i papirkurven så de kan bli gjenopprettet eller slettet permanent. Eldre utgaver i papirkurven kan slettes automatisk etter en stund, avhengig av systemkonfigurasjonen.',
+ 'maint_recycle_bin_open' => 'Åpne papirkurven',
+ 'maint_regen_references' => 'Regenerer referanser',
+ 'maint_regen_references_desc' => 'Denne handlingen gjenoppbygger referanseindeksen for krysselement i databasen. Dette håndteres vanligvis automatisk, men denne handlingen kan være nyttig for å indeksere gammelt innhold eller innhold lagt til via uoffisielle metoder.',
+ 'maint_regen_references_success' => 'Referanseindeksen har blitt regenerert!',
+ 'maint_timeout_command_note' => 'Merk: Denne handlingen kan ta tid å kjøre, noe som kan føre til tidsavbruddsmessige problemer i noen webomgivelser. Dette gjøres som et alternativ ved hjelp av en terminalkommando.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Papirkurven',
+ 'recycle_bin_desc' => 'Her kan du gjenopprette ting du har kastet i papirkurven eller velge å slette dem permanent fra systemet. Denne listen er ikke filtrert i motsetning til lignende lister i systemet hvor tilgangskontroll overholdes.',
+ 'recycle_bin_deleted_item' => 'Kastet element',
+ 'recycle_bin_deleted_parent' => 'Overordnet',
+ 'recycle_bin_deleted_by' => 'Kastet av',
+ 'recycle_bin_deleted_at' => 'Kastet den',
+ 'recycle_bin_permanently_delete' => 'Slett permanent',
+ 'recycle_bin_restore' => 'Gjenopprett',
+ 'recycle_bin_contents_empty' => 'Papirkurven er for øyeblikket tom',
+ 'recycle_bin_empty' => 'Tøm papirkurven',
+ 'recycle_bin_empty_confirm' => 'Dette vil slette alle elementene i papirkurven permanent. Dette inkluderer innhold i hvert element. Er du sikker på at du vil tømme papirkurven?',
+ 'recycle_bin_destroy_confirm' => 'Denne handlingen vil slette dette elementet permanent fra systemet, sammen med alle underelementer listet nedenfor, og du vil ikke kunne gjenopprette dette innholdet. Er du sikker på at du vil slette dette permanent?',
+ 'recycle_bin_destroy_list' => 'Elementer som skal slettes',
+ 'recycle_bin_restore_list' => 'Elementer som skal gjenopprettes',
+ 'recycle_bin_restore_confirm' => 'Denne handlingen vil hente opp elementet fra papirkurven, inkludert underliggende innhold, til sin opprinnelige sted. Om den opprinnelige plassen har blitt slettet i mellomtiden og nå befinner seg i papirkurven, vil også dette bli hentet opp igjen.',
+ 'recycle_bin_restore_deleted_parent' => 'Det overordnede elementet var også kastet i papirkurven. Disse elementene vil forbli kastet inntil det overordnede også hentes opp igjen.',
+ 'recycle_bin_restore_parent' => 'Gjenopprett overodnet',
+ 'recycle_bin_destroy_notification' => 'Slettet :count elementer fra papirkurven.',
+ 'recycle_bin_restore_notification' => 'Gjenopprettet :count elementer fra papirkurven.',
+
+ // Audit Log
+ 'audit' => 'Revisjonslogg',
+ 'audit_desc' => 'Denne revisjonsloggen viser en liste over aktiviteter som spores i systemet. Denne listen er ufiltrert i motsetning til lignende aktivitetslister i systemet der tillatelsesfiltre brukes.',
+ 'audit_event_filter' => 'Hendelsesfilter',
+ 'audit_event_filter_no_filter' => 'Ingen filter',
+ 'audit_deleted_item' => 'Slettet ting',
+ 'audit_deleted_item_name' => 'Navn: :name',
+ 'audit_table_user' => 'Kontoholder',
+ 'audit_table_event' => 'Hendelse',
+ 'audit_table_related' => 'Relaterte elementer eller detaljer',
+ 'audit_table_ip' => 'IP Adresse',
+ 'audit_table_date' => 'Aktivitetsdato',
+ 'audit_date_from' => 'Datoperiode fra',
+ 'audit_date_to' => 'Datoperiode til',
+
+ // Role Settings
+ 'roles' => 'Roller',
+ 'role_user_roles' => 'Kontoroller',
+ 'roles_index_desc' => 'Roller brukes til å gruppere brukere og gi systemtilgang til medlemmene. Når en bruker er medlem av flere roller, vil de tildelte rettighetene samles inn, og brukeren vil arve alle evner.',
+ 'roles_x_users_assigned' => ':count bruker tildelt|:count brukere tildelt',
+ 'roles_x_permissions_provided' => ':count tillatelse|:count tillatelser',
+ 'roles_assigned_users' => 'Tilordnede brukere',
+ 'roles_permissions_provided' => 'Tilbudte rettigheter',
+ 'role_create' => 'Opprett ny rolle',
+ 'role_delete' => 'Slett rolle',
+ 'role_delete_confirm' => 'Dette vil slette rollen «:roleName».',
+ 'role_delete_users_assigned' => 'Denne rollen har :userCount kontoer koblet opp mot seg. Velg hvilke rolle du vil flytte disse til.',
+ 'role_delete_no_migration' => "Ikke flytt kontoer",
+ 'role_delete_sure' => 'Er du sikker på at du vil slette rollen?',
+ 'role_edit' => 'Endre rolle',
+ 'role_details' => 'Rolledetaljer',
+ 'role_name' => 'Rollenavn',
+ 'role_desc' => 'Kort beskrivelse av rolle',
+ 'role_mfa_enforced' => 'Krever flerfaktorautentisering',
+ 'role_external_auth_id' => 'Ekstern godkjennings-ID',
+ 'role_system' => 'Systemtilganger',
+ 'role_manage_users' => 'Behandle kontoer',
+ 'role_manage_roles' => 'Behandle roller og rolletilganger',
+ 'role_manage_entity_permissions' => 'Behandle bok-, kapittel- og sidetilganger',
+ 'role_manage_own_entity_permissions' => 'Behandle tilganger på egne verk',
+ 'role_manage_page_templates' => 'Behandle sidemaler',
+ 'role_access_api' => 'Systemtilgang API',
+ 'role_manage_settings' => 'Behandle applikasjonsinnstillinger',
+ 'role_export_content' => 'Eksporter innhold',
+ 'role_import_content' => 'Import innhold',
+ 'role_editor_change' => 'Endre sideredigering',
+ 'role_notifications' => 'Motta og administrere varslinger',
+ 'role_permission_note_users_and_roles' => 'Disse tillatelsene vil teknisk sett også gi mulighet til å se & søke etter brukere & roller i systemet.',
+ 'role_asset' => 'Eiendomstillatelser',
+ 'roles_system_warning' => 'Vær oppmerksom på at tilgang til noen av de ovennevnte tre tillatelsene kan tillate en bruker å endre sine egne rettigheter eller rettighetene til andre i systemet. Bare tildel roller med disse tillatelsene til pålitelige brukere.',
+ 'role_asset_desc' => 'Disse tillatelsene kontrollerer standard tilgang til eiendelene i systemet. Tillatelser til bøker, kapitler og sider overstyrer disse tillatelsene.',
+ 'role_asset_admins' => 'Administratorer får automatisk tilgang til alt innhold, men disse alternativene kan vise eller skjule UI-alternativer.',
+ 'role_asset_image_view_note' => 'Dette gjelder synlighet innenfor bilde-administrasjonen. Faktisk tilgang på opplastede bildefiler vil være avhengig av valget for systemlagring av bildet.',
+ 'role_asset_users_note' => 'Disse tillatelsene vil teknisk sett også gi mulighet til å se & søke etter brukere i systemet.',
+ 'role_all' => 'Alle',
+ 'role_own' => 'Egne',
+ 'role_controlled_by_asset' => 'Kontrollert av eiendelen de er lastet opp til',
+ 'role_save' => 'Lagre rolle',
+ 'role_users' => 'Kontoholdere med denne rollen',
+ 'role_users_none' => 'Ingen kontoholdere er gitt denne rollen',
+
+ // Users
+ 'users' => 'Brukere',
+ 'users_index_desc' => 'Opprett og administrer individuelle brukerkontoer innenfor systemet. Brukerkontoer brukes for innlogging og navngivelse av innhold og aktivitet. Tilgangstillatelser er primært rollebasert, men brukerinnhold eierskap, blant andre faktorer, kan også påvirke tillatelser og tilgang.',
+ 'user_profile' => 'Profil',
+ 'users_add_new' => 'Register ny konto',
+ 'users_search' => 'Søk i kontoer',
+ 'users_latest_activity' => 'Siste aktivitet',
+ 'users_details' => 'Kontodetaljer',
+ 'users_details_desc' => 'Angi et visningsnavn og en e-postadresse for denne kontoholderen. E-postadressen vil bli brukt til å logge på applikasjonen.',
+ 'users_details_desc_no_email' => 'Angi et visningsnavn for denne kontoholderen slik at andre kan gjenkjenne dem.',
+ 'users_role' => 'Roller',
+ 'users_role_desc' => 'Velg hvilke roller denne kontoholderen vil bli tildelt. Hvis en kontoholderen er tildelt flere roller, vil tillatelsene fra disse rollene stable seg, og de vil motta alle evnene til de tildelte rollene.',
+ 'users_password' => 'Passord',
+ 'users_password_desc' => 'Angi et passord som brukes til å logge inn til programmet. Dette må være minst 8 tegn langt.',
+ 'users_send_invite_text' => 'Du kan velge å sende denne kontoholderen en invitasjons-e-post som lar dem angi sitt eget passord, ellers kan du selv angi passordet.',
+ 'users_send_invite_option' => 'Send invitasjonsmelding',
+ 'users_external_auth_id' => 'Ekstern godkjennings-ID',
+ 'users_external_auth_id_desc' => 'Når et eksternt autentiseringssystem er i bruk (som SAML2, OIDC eller LDAP) er dette er ID-en som kobles til denne Bookstack-brukeren til autentiseringssystemkontoen. Du kan ignorere dette feltet hvis du bruker standard e-postbasert autentisering.',
+ 'users_password_warning' => 'Fyll bare ut nedenfor hvis du vil endre passordet for denne brukeren.',
+ 'users_system_public' => 'Denne brukeren representerer alle gjester som besøker appliaksjonen din. Den kan ikke brukes til å logge på, men tildeles automatisk.',
+ 'users_delete' => 'Slett konto',
+ 'users_delete_named' => 'Slett kontoen :userName',
+ 'users_delete_warning' => 'Dette vil fullstendig slette denne brukeren med navnet «:userName» fra systemet.',
+ 'users_delete_confirm' => 'Er du sikker på at du vil slette denne kontoen?',
+ 'users_migrate_ownership' => 'Overfør eierskap',
+ 'users_migrate_ownership_desc' => 'Velg en bruker her, som du ønsker skal ta eierskap over alle elementene som er eid av denne brukeren.',
+ 'users_none_selected' => 'Ingen bruker valgt',
+ 'users_edit' => 'Rediger konto',
+ 'users_edit_profile' => 'Rediger profil',
+ 'users_avatar' => 'Kontobilde',
+ 'users_avatar_desc' => 'Velg et bilde for å representere denne kontoholderen. Dette skal være omtrent 256px kvadrat.',
+ 'users_preferred_language' => 'Foretrukket språk',
+ 'users_preferred_language_desc' => 'Dette alternativet vil endre språket som brukes til brukergrensesnittet til applikasjonen. Dette påvirker ikke noe brukeropprettet innhold.',
+ 'users_social_accounts' => 'Sosiale kontoer',
+ 'users_social_accounts_desc' => 'Vis status for de tilkoblede sosiale kontoene for denne brukeren. Sosiale kontoer kan brukes i tillegg til det primære autentiseringssystemet for systemtilgang.',
+ 'users_social_accounts_info' => 'Her kan du koble andre kontoer for raskere og enklere pålogging. Hvis du frakobler en konto her, tilbakekaller ikke dette tidligere autorisert tilgang. Tilbakekall tilgang fra profilinnstillingene dine på den tilkoblede sosiale kontoen.',
+ 'users_social_connect' => 'Koble til konto',
+ 'users_social_disconnect' => 'Koble fra konto',
+ 'users_social_status_connected' => 'Tilkoblet',
+ 'users_social_status_disconnected' => 'Frakoblet',
+ 'users_social_connected' => ':socialAccount ble lagt til din konto.',
+ 'users_social_disconnected' => ':socialAccount ble koblet fra din konto.',
+ 'users_api_tokens' => 'API-nøkler',
+ 'users_api_tokens_desc' => 'Opprett og håndter tilgangstokener som brukes til å godkjenne med BookStack REST API. Tillatelser til API blir administrert via brukeren som tokenet tilhører.',
+ 'users_api_tokens_none' => 'Ingen API-nøkler finnes for denne kontoen',
+ 'users_api_tokens_create' => 'Opprett nøkkel',
+ 'users_api_tokens_expires' => 'Utløper',
+ 'users_api_tokens_docs' => 'API-dokumentasjon',
+ 'users_mfa' => 'Flerfaktorautentisering',
+ 'users_mfa_desc' => 'Konfigurer flerfaktorautentisering som et ekstra lag med sikkerhet for din konto.',
+ 'users_mfa_x_methods' => ':count metode konfigurert|:count metoder konfigurert',
+ 'users_mfa_configure' => 'Konfigurer metoder',
+
+ // API Tokens
+ 'user_api_token_create' => 'Opprett API-nøkkel',
+ 'user_api_token_name' => 'Navn',
+ 'user_api_token_name_desc' => 'Gi nøkkelen et lesbart navn som en fremtidig påminnelse om det tiltenkte formålet.',
+ 'user_api_token_expiry' => 'Utløpsdato',
+ 'user_api_token_expiry_desc' => 'Angi en dato da denne nøkkelen utløper. Etter denne datoen vil forespørsler som er gjort med denne nøkkelen ikke lenger fungere. Å la dette feltet stå tomt vil sette utløpsdato 100 år inn i fremtiden.',
+ 'user_api_token_create_secret_message' => 'Umiddelbart etter å ha opprettet denne nøkkelen vil en identifikator og hemmelighet bli generert og vist. Hemmeligheten vil bare vises en gang, så husk å kopiere verdien til et trygt sted før du fortsetter.',
+ 'user_api_token' => 'API-nøkkel',
+ 'user_api_token_id' => 'Identifikator',
+ 'user_api_token_id_desc' => 'Dette er en ikke-redigerbar systemgenerert identifikator for denne nøkkelen som må oppgis i API-forespørsler.',
+ 'user_api_token_secret' => 'Hemmelighet',
+ 'user_api_token_secret_desc' => 'Dette er en systemgenerert hemmelighet for denne nøkkelen som må leveres i API-forespørsler. Dette vises bare denne gangen, så kopier denne verdien til et trygt sted.',
+ 'user_api_token_created' => 'Nøkkel opprettet :timeAgo',
+ 'user_api_token_updated' => 'Nøkkel oppdatert :timeAgo',
+ 'user_api_token_delete' => 'Slett nøkkel',
+ 'user_api_token_delete_warning' => 'Dette vil slette API-nøkkelen \':tokenName\' fra systemet.',
+ 'user_api_token_delete_confirm' => 'Sikker på at du vil slette nøkkelen?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks er en måte å sende data til eksterne nettadresser når bestemte handlinger og hendelser oppstår i systemet som gjør det mulig å integrer med eksterne plattformer som meldingssystemer eller varslingssystemer.',
+ 'webhooks_x_trigger_events' => ':count utløsende hendelse:count utløsende hendelser',
+ 'webhooks_create' => 'Lag ny Webhook',
+ 'webhooks_none_created' => 'Ingen webhooks er opprettet ennå.',
+ 'webhooks_edit' => 'Rediger webhook',
+ 'webhooks_save' => 'Lagre Webhook',
+ 'webhooks_details' => 'Webhook detaljer',
+ 'webhooks_details_desc' => 'Gi et brukervennlig navn og et POST endepunkt som et sted der webhook-dataene skal sendes til.',
+ 'webhooks_events' => 'Webhook hendelser',
+ 'webhooks_events_desc' => 'Velg alle hendelsene som skal utløse denne webhook som skal kalles.',
+ 'webhooks_events_warning' => 'Husk at disse hendelsene vil bli utløst for alle valgte hendelser, selv om egendefinerte tillatelser brukes. Pass på at bruk av denne webhooken ikke vil utsette konfidensiell innhold.',
+ 'webhooks_events_all' => 'Alle systemhendelser',
+ 'webhooks_name' => 'Webhook navn',
+ 'webhooks_timeout' => 'Tidsavbrudd for Webhook forespørsler (sekunder)',
+ 'webhooks_endpoint' => 'Webhook endepunkt',
+ 'webhooks_active' => 'Webhook aktiv',
+ 'webhook_events_table_header' => 'Hendelser',
+ 'webhooks_delete' => 'Slett webhook',
+ 'webhooks_delete_warning' => 'Dette vil slette webhook, med navnet \':webhookName\', fra systemet.',
+ 'webhooks_delete_confirm' => 'Er du sikker på at du vil slette denne webhooken?',
+ 'webhooks_format_example' => 'Webhook formattering eksempel',
+ 'webhooks_format_example_desc' => 'Webhook-data sendes som en POST-forespørsel til det konfigurerte endepunktet som JSON ved hjelp av formatet nedenfor. «related_item» og «url» egenskaper er valgfrie og vil avhenge av hvilken type hendelse som utløses.',
+ 'webhooks_status' => 'Webhook status',
+ 'webhooks_last_called' => 'Sist ringt:',
+ 'webhooks_last_errored' => 'Siste feil:',
+ 'webhooks_last_error_message' => 'Siste feilmelding:',
+
+ // Licensing
+ 'licenses' => 'Lisenser',
+ 'licenses_desc' => 'Denne siden detaljerer lisensinformasjonen for BookStack, i tillegg til prosjektene & bibliotekene som brukes i BookStack. Mange av de oppførte prosjektene kan bare brukes i utviklingssammenheng.',
+ 'licenses_bookstack' => 'BookStack lisens',
+ 'licenses_php' => 'PHP Bibliotek lisenser',
+ 'licenses_js' => 'JavaScript bibliotek-lisenser',
+ 'licenses_other' => 'Andre lisenser',
+ 'license_details' => 'Lisens detaljer',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/nb/validation.php b/lang/nb/validation.php
new file mode 100644
index 00000000000..09f25d0459d
--- /dev/null
+++ b/lang/nb/validation.php
@@ -0,0 +1,123 @@
+ ':attribute må aksepteres.',
+ 'active_url' => ':attribute er ikke en godkjent URL.',
+ 'after' => ':attribute må være en dato etter :date.',
+ 'alpha' => ':attribute kan kun inneholde bokstaver.',
+ 'alpha_dash' => ':attribute kan kunne inneholde bokstaver, tall, bindestreker eller understreker.',
+ 'alpha_num' => ':attribute kan kun inneholde bokstaver og tall.',
+ 'array' => ':attribute må være en liste.',
+ 'backup_codes' => 'Den angitte koden er ikke gyldig, eller er allerede benyttet.',
+ 'before' => ':attribute må være en dato før :date.',
+ 'between' => [
+ 'numeric' => ':attribute må være mellom :min og :max.',
+ 'file' => ':attribute må være mellom :min og :max kilobytes.',
+ 'string' => ':attribute må være mellom :min og :max tegn.',
+ 'array' => ':attribute må være mellom :min og :max ting.',
+ ],
+ 'boolean' => ':attribute feltet kan bare være sann eller falsk.',
+ 'confirmed' => ':attribute bekreftelsen samsvarer ikke.',
+ 'date' => ':attribute er ikke en gyldig dato.',
+ 'date_format' => ':attribute samsvarer ikke med :format.',
+ 'different' => ':attribute og :other må være forskjellige.',
+ 'digits' => ':attribute må være :digits tall.',
+ 'digits_between' => ':attribute må være mellomg :min og :max tall.',
+ 'email' => ':attribute må være en gyldig e-post.',
+ 'ends_with' => ':attribute må slutte med en av verdiene: :values',
+ 'file' => 'Attributtet :attribute må angis som en gyldig fil.',
+ 'filled' => ':attribute feltet er påkrevd.',
+ 'gt' => [
+ 'numeric' => ':attribute må være større enn :value.',
+ 'file' => ':attribute må være større enn :value kilobytes.',
+ 'string' => ':attribute må være større enn :value tegn.',
+ 'array' => ':attribute må ha mer en :value ting.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute må være større enn eller lik :value.',
+ 'file' => ':attribute må være større enn eller lik :value kilobytes.',
+ 'string' => ':attribute må være større enn eller lik :value tegn.',
+ 'array' => ':attribute må ha :value eller flere ting.',
+ ],
+ 'exists' => 'Den valgte :attribute er ugyldig.',
+ 'image' => ':attribute må være et bilde.',
+ 'image_extension' => ':attribute må ha støttet formattype.',
+ 'in' => 'Den valgte :attribute er ugyldig.',
+ 'integer' => ':attribute må være et heltall',
+ 'ip' => ':attribute må være en gyldig IP adresse.',
+ 'ipv4' => ':attribute må være en gyldig IPv4 adresse.',
+ 'ipv6' => ':attribute må være en gyldig IPv6 adresse.',
+ 'json' => ':attribute må være en gyldig JSON tekststreng.',
+ 'lt' => [
+ 'numeric' => ':attribute må være mindre enn :value.',
+ 'file' => ':attribute må være mindre enn :value kilobytes.',
+ 'string' => ':attribute må være mindre enn :value tegn.',
+ 'array' => ':attribute må ha mindre enn :value ting.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute må være mindre enn eller lik :value.',
+ 'file' => ':attribute må være mindre enn eller lik :value kilobytes.',
+ 'string' => ':attribute må være mindre enn eller lik :value characters.',
+ 'array' => ':attribute må ha mindre enn eller lik :value ting.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute kan ikke være større enn :max.',
+ 'file' => ':attribute kan ikke være større enn :max kilobytes.',
+ 'string' => ':attribute kan ikke være større enn :max tegn.',
+ 'array' => ':attribute kan ikke inneholde mer enn :max ting.',
+ ],
+ 'mimes' => ':attribute må være en fil av typen: :values.',
+ 'min' => [
+ 'numeric' => ':attribute må være på minst :min.',
+ 'file' => ':attribute må være på minst :min kilobytes.',
+ 'string' => ':attribute må være på minst :min tegn.',
+ 'array' => ':attribute må minst ha :min ting.',
+ ],
+ 'not_in' => 'Den valgte :attribute er ugyldig.',
+ 'not_regex' => ':attribute format er ugyldig.',
+ 'numeric' => ':attribute må være et nummer.',
+ 'regex' => ':attribute format er ugyldig.',
+ 'required' => ':attribute feltet er påkrevt.',
+ 'required_if' => ':attribute feltet er påkrevt når :other er :value.',
+ 'required_with' => ':attribute feltet er påkrevt når :values er tilgjengelig.',
+ 'required_with_all' => ':attribute feltet er påkrevt når :values er tilgjengelig',
+ 'required_without' => ':attribute feltet er påkrevt når :values ikke er tilgjengelig.',
+ 'required_without_all' => ':attribute feltet er påkrevt når ingen av :values er tilgjengelig.',
+ 'same' => ':attribute og :other må samsvare.',
+ 'safe_url' => 'Den angitte lenken kan være farlig.',
+ 'size' => [
+ 'numeric' => ':attribute må være :size.',
+ 'file' => ':attribute må være :size kilobytes.',
+ 'string' => ':attribute må være :size tegn.',
+ 'array' => ':attribute må inneholde :size ting.',
+ ],
+ 'string' => ':attribute må være en tekststreng.',
+ 'timezone' => ':attribute må være en tidssone.',
+ 'totp' => 'Den angitte koden er ikke gyldig eller har utløpt.',
+ 'unique' => ':attribute har allerede blitt tatt.',
+ 'url' => ':attribute format er ugyldig.',
+ 'uploaded' => 'kunne ikke lastes opp, tjeneren støtter ikke filer av denne størrelsen.',
+
+ 'zip_file' => 'Attributtet :attribute må henvises til en fil i ZIP.',
+ 'zip_file_size' => 'Filen :attribute må ikke overstige :size MB.',
+ 'zip_file_mime' => 'Attributtet :attribute må referere en fil av typen :validTypes, som ble funnet :foundType.',
+ 'zip_model_expected' => 'Data objekt forventet, men ":type" funnet.',
+ 'zip_unique' => 'Attributtet :attribute må være unikt for objekttypen i ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'passordbekreftelse er påkrevd',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/ne/activities.php b/lang/ne/activities.php
new file mode 100644
index 00000000000..4b4edf7be3a
--- /dev/null
+++ b/lang/ne/activities.php
@@ -0,0 +1,140 @@
+ 'पाना सिर्जना गरियो',
+ 'page_create_notification' => 'पाना सफलतापूर्वक सिर्जना गरियो',
+ 'page_update' => 'पाना अद्यावधिक गरियो',
+ 'page_update_notification' => 'पाना सफलतापूर्वक अद्यावधिक गरियो',
+ 'page_delete' => 'पाना हटाइयो',
+ 'page_delete_notification' => 'पाना सफलतापूर्वक हटाइयो',
+ 'page_restore' => 'पाना पुनर्स्थापित गरियो',
+ 'page_restore_notification' => 'पाना सफलतापूर्वक पुनर्स्थापित गरियो',
+ 'page_move' => 'पाना सारियो',
+ 'page_move_notification' => 'पाना सफलतापूर्वक सारियो',
+
+ // Chapters
+ 'chapter_create' => 'अध्याय सिर्जना गरियो',
+ 'chapter_create_notification' => 'अध्याय सफलतापूर्वक सिर्जना गरियो',
+ 'chapter_update' => 'अध्याय अद्यावधिक गरियो',
+ 'chapter_update_notification' => 'अध्याय सफलतापूर्वक अद्यावधिक गरियो',
+ 'chapter_delete' => 'अध्याय हटाइयो',
+ 'chapter_delete_notification' => 'अध्याय सफलतापूर्वक हटाइयो',
+ 'chapter_move' => 'अध्याय सारियो',
+ 'chapter_move_notification' => 'अध्याय सफलतापूर्वक सारियो',
+
+ // Books
+ 'book_create' => 'पुस्तक सिर्जना गरियो',
+ 'book_create_notification' => 'पुस्तक सफलतापूर्वक सिर्जना गरियो',
+ 'book_create_from_chapter' => 'अध्यायलाई पुस्तकमा परिणत गरियो',
+ 'book_create_from_chapter_notification' => 'अध्यायलाई पुस्तकमा सफलतापूर्वक परिणत गरियो',
+ 'book_update' => 'पुस्तक अद्यावधिक गरियो',
+ 'book_update_notification' => 'पुस्तक सफलतापूर्वक अद्यावधिक गरियो',
+ 'book_delete' => 'पुस्तक हटाइयो',
+ 'book_delete_notification' => 'पुस्तक सफलतापूर्वक हटाइयो',
+ 'book_sort' => 'पुस्तक क्रमबद्ध गरियो',
+ 'book_sort_notification' => 'पुस्तक सफलतापूर्वक क्रमबद्ध गरियो',
+
+ // Bookshelves
+ 'bookshelf_create' => 'दराज बनाइयो',
+ 'bookshelf_create_notification' => 'दराज सफलतापूर्वक बनाइयो',
+ 'bookshelf_create_from_book' => 'पुस्तकलाई दराजमा परिणत गरियो',
+ 'bookshelf_create_from_book_notification' => 'पुस्तकलाई दराजमा सफलतापूर्वक परिणत गरियो',
+ 'bookshelf_update' => 'दराज अद्यावधिक गरियो',
+ 'bookshelf_update_notification' => 'दराज सफलतापूर्वक अद्यावधिक गरियो',
+ 'bookshelf_delete' => 'दराज हटाइयो',
+ 'bookshelf_delete_notification' => 'दराज सफलतापूर्वक हटाइयो',
+
+ // Revisions
+ 'revision_restore' => 'संशोधन पुनर्स्थापित गरियो',
+ 'revision_delete' => 'संशोधन हटाइयो',
+ 'revision_delete_notification' => 'संशोधन सफलतापूर्वक हटाइयो',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" तपाईंको मनपर्नेमा थपिएको छ',
+ 'favourite_remove_notification' => '":name" तपाईंको मनपर्नेबाट हटाइएको छ',
+
+ // Watching
+ 'watch_update_level_notification' => 'हेर्ने अभिरुचि सफलतापूर्वक अद्यावधिक गरियो',
+
+ // Auth
+ 'auth_login' => 'लग इन भयो',
+ 'auth_register' => 'नयाँ प्रयोगकर्ता रूपमा दर्ता गरियो',
+ 'auth_password_reset_request' => 'प्रयोगकर्ताको पासवर्ड रिसेटको अनुरोध गरियो',
+ 'auth_password_reset_update' => 'प्रयोगकर्ता पासवर्ड रिसेट गर्नुहोस्',
+ 'mfa_setup_method' => 'MFA विधि सेटअप गरियो',
+ 'mfa_setup_method_notification' => 'बहु-कारक प्रमाणीकरण विधि सफलतापूर्वक सेटअप गरियो',
+ 'mfa_remove_method' => 'MFA हटाइयो',
+ 'mfa_remove_method_notification' => 'बहु-कारक प्रमाणीकरण विधि सफलतापूर्वक हटाइयो',
+
+ // Settings
+ 'settings_update' => 'सेटिङहरू अद्यावधिक गरियो',
+ 'settings_update_notification' => 'सेटिङहरू सफलतापूर्वक अद्यावधिक गरियो',
+ 'maintenance_action_run' => 'मर्मत कार्य सञ्चालन गरियो',
+
+ // Webhooks
+ 'webhook_create' => 'वेबहुक सिर्जना गरियो',
+ 'webhook_create_notification' => 'वेबहुक सफलतापूर्वक सिर्जना गरियो',
+ 'webhook_update' => 'वेबहुकअद्यावधिक गरियो',
+ 'webhook_update_notification' => 'वेबहुक सफलतापूर्वक अद्यावधिक गरियो',
+ 'webhook_delete' => 'वेबहुक हटाइयो',
+ 'webhook_delete_notification' => 'वेबहुक सफलतापूर्वक हटाइयो',
+
+ // Imports
+ 'import_create' => 'आयात सिर्जना गरियो',
+ 'import_create_notification' => 'आयात सफलतापूर्वक अपलोड गरियो',
+ 'import_run' => 'आयात अद्यावधिक गरियो',
+ 'import_run_notification' => 'सामग्री सफलतापूर्वक आयात गरियो',
+ 'import_delete' => 'आयात हटाइयो',
+ 'import_delete_notification' => 'आयात सफलतापूर्वक हटाइयो',
+
+ // Users
+ 'user_create' => 'प्रयोगकर्ता सिर्जना गरियो',
+ 'user_create_notification' => 'प्रयोगकर्ता सफलतापूर्वक सिर्जना गरियो',
+ 'user_update' => 'प्रयोगकर्ता अद्यावधिक गरियो',
+ 'user_update_notification' => 'प्रयोगकर्ता सफलतापूर्वक अद्यावधिक गरियो',
+ 'user_delete' => 'प्रयोगकर्ता हटाइयो',
+ 'user_delete_notification' => 'प्रयोगकर्ता सफलतापूर्वक हटाइयो',
+
+ // API Tokens
+ 'api_token_create' => 'API टोकन सिर्जना गरियो',
+ 'api_token_create_notification' => 'API टोकन सफलतापूर्वक सिर्जना गरियो',
+ 'api_token_update' => 'API टोकन अद्यावधिक गरियो',
+ 'api_token_update_notification' => 'API टोकन सफलतापूर्वक अद्यावधिक गरियो',
+ 'api_token_delete' => 'API टोकन हटाइयो',
+ 'api_token_delete_notification' => 'API टोकन सफलतापूर्वक हटाइयो',
+
+ // Roles
+ 'role_create' => 'भूमिका सिर्जना गरियो',
+ 'role_create_notification' => 'भूमिका सफलतापूर्वक सिर्जना गरियो',
+ 'role_update' => 'भूमिका अद्यावधिक गरियो',
+ 'role_update_notification' => 'भूमिका सफलतापूर्वक अद्यावधिक गरियो',
+ 'role_delete' => 'भूमिका हटाइयो',
+ 'role_delete_notification' => 'भूमिका सफलतापूर्वक हटाइयो',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'पुनः प्रयोगको डब्बा खाली गरियो',
+ 'recycle_bin_restore' => 'पुनः प्रयोगको डब्बाबाट पुनर्स्थापित गरियो',
+ 'recycle_bin_destroy' => 'पुनः प्रयोगको डब्बाबाट हटाइयो',
+
+ // Comments
+ 'commented_on' => 'मा टिप्पणी गरियो',
+ 'comment_create' => 'टिप्पणी थपियो',
+ 'comment_update' => 'टिप्पणी अद्यावधिक गरियो',
+ 'comment_delete' => 'टिप्पणी मेटाइयो',
+
+ // Sort Rules
+ 'sort_rule_create' => 'क्रम नियम सिर्जना गरियो',
+ 'sort_rule_create_notification' => 'क्रम नियम सफलतापूर्वक सिर्जना गरियो',
+ 'sort_rule_update' => 'क्रम नियम अद्यावधिक गरियो',
+ 'sort_rule_update_notification' => 'क्रम नियम सफलतापूर्वक अद्यावधिक गरियो',
+ 'sort_rule_delete' => 'क्रम नियम हटाइयो',
+ 'sort_rule_delete_notification' => 'क्रम नियम सफलतापूर्वक हटाइयो',
+
+ // Other
+ 'permissions_update' => 'अनुमतिहरू अद्यावधिक गरियो',
+];
diff --git a/lang/ne/auth.php b/lang/ne/auth.php
new file mode 100644
index 00000000000..cd875a226cb
--- /dev/null
+++ b/lang/ne/auth.php
@@ -0,0 +1,117 @@
+ 'यी प्रमाणिकरण जानकारी हाम्रो अभिलेखसँग मेल खाँदैन।',
+ 'throttle' => 'लगइन प्रयासहरूको संख्या धेरै भएको छ। कृपया :seconds सेकेन्ड पछि पुनः प्रयास गर्नुहोस्।',
+
+ // Login & Register
+ 'sign_up' => 'साइन अप गर्नुहोस्',
+ 'log_in' => 'लग इन गर्नुहोस्',
+ 'log_in_with' => ':socialDriver मार्फत लगइन गर्नुहोस्',
+ 'sign_up_with' => ':socialDriver प्रयोग गरेर साइन अप गर्नुहोस्',
+ 'logout' => 'लगआउट',
+
+ 'name' => 'नाम',
+ 'username' => 'प्रयोगकर्ता नाम',
+ 'email' => 'ईमेल',
+ 'password' => 'पासवर्ड',
+ 'password_confirm' => 'पासवर्ड पक्का गर्नुहोस्',
+ 'password_hint' => 'कम्तिमा 8 अङ्कको हुनुपर्छ',
+ 'forgot_password' => 'पासवर्ड भुल्नुभयो?',
+ 'remember_me' => 'मलाई सम्झनुहोस्',
+ 'ldap_email_hint' => 'कृपया यस खाताको लागि प्रयोग गर्नको लागि इमेल प्रविष्ट गर्नुहोस्।',
+ 'create_account' => 'खाता बनाउनुहोस्',
+ 'already_have_account' => 'तपाईंको पहिले नै खाता छ?',
+ 'dont_have_account' => 'के तपाईंको खाता छैन?',
+ 'social_login' => 'सामाजिक लगइन',
+ 'social_registration' => 'सामाजिक दर्ता',
+ 'social_registration_text' => 'अर्को सेवाबाट दर्ता गर्नुहोस् र लगइन गर्नुहोस्।',
+
+ 'register_thanks' => 'दर्ता गर्नुभएकोमा धन्यवाद!',
+ 'register_confirm' => 'कृपया तपाईंको इमेल जाँच गर्नुहोस् र :appName मा पहुँच पाउनको लागि पुष्टिकरण बटनमा क्लिक गर्नुहोस्।',
+ 'registrations_disabled' => 'दर्ता हाल बन्द गरिएको छ',
+ 'registration_email_domain_invalid' => 'त्यो इमेल डोमेनलाई यस आवेदनमा पहुँच छैन',
+ 'register_success' => 'साइन अप गर्नुभएकोमा धन्यवाद! तपाईं अब दर्ता र लगइन भइसकेका हुनुहुन्छ।',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'लगइन प्रयास गर्दै',
+ 'auto_init_starting_desc' => 'हामी तपाईंको प्रमाणीकरण प्रणालीलाई लगइन प्रक्रिया सुरु गर्नका लागि सम्पर्क गर्दैछौं। यदि 5 सेकेन्डपछि प्रगति हुँदैन भने तलको लिङ्कमा क्लिक गर्न प्रयास गर्नुहोस्।',
+ 'auto_init_start_link' => 'प्रमाणीकरणसँग अगाडि बढ्नुहोस्',
+
+ // Password Reset
+ 'reset_password' => 'पासवर्ड रिसेट गर्नुहोस्',
+ 'reset_password_send_instructions' => 'तपाईंको इमेल तल प्रविष्ट गर्नुहोस् र तपाईंलाई पासवर्ड रिसेट लिङ्क सहितको इमेल पठाइनेछ।',
+ 'reset_password_send_button' => 'रिसेट लिङ्क पठाउनुहोस्',
+ 'reset_password_sent' => ':email इमेलमा पासवर्ड रिसेट लिङ्क पठाइनेछ यदि त्यो इमेल ठेगाना प्रणालीमा फेला पारिन्छ भने।',
+ 'reset_password_success' => 'तपाईंको पासवर्ड सफलतापूर्वक रिसेट गरिएको छ।',
+ 'email_reset_subject' => ':appName पासवर्ड रिसेट गर्नुहोस्',
+ 'email_reset_text' => 'तपाईं यो इमेल प्राप्त गर्दै हुनुहुन्छ किनकि हामीले तपाईंको खाताको लागि पासवर्ड रिसेट अनुरोध प्राप्त गर्यौं।',
+ 'email_reset_not_requested' => 'यदि तपाईंले पासवर्ड रिसेट अनुरोध गर्नुभएको छैन भने, अगाडि कुनै कार्य आवश्यक पर्दैन।',
+
+ // Email Confirmation
+ 'email_confirm_subject' => ':appName मा तपाईंको इमेल पुष्टि गर्नुहोस्',
+ 'email_confirm_greeting' => ':appName मा सामेल हुनुभएकोमा धन्यवाद!',
+ 'email_confirm_text' => 'कृपया तलको बटनमा क्लिक गरेर तपाईंको इमेल ठेगाना पुष्टि गर्नुहोस्:',
+ 'email_confirm_action' => 'इमेल पुष्टि गर्नुहोस्',
+ 'email_confirm_send_error' => 'इमेल पुष्टिकरण आवश्यक छ तर प्रणालीले इमेल पठाउन सकेन। इमेल सही तरिकाले सेटअप गरिएको छ भनी सुनिश्चित गर्न प्रशासकलाई सम्पर्क गर्नुहोस्।',
+ 'email_confirm_success' => 'तपाईंको इमेल पुष्टि भएको छ! अब तपाईं यो इमेल ठेगाना प्रयोग गरेर लगइन गर्न सक्षम हुनुहुनेछ।',
+ 'email_confirm_resent' => 'पुष्टिकरण इमेल पुनः पठाइएको छ, कृपया तपाईंको इनबक्स जाँच गर्नुहोस्।',
+ 'email_confirm_thanks' => 'पुष्टिकरणको लागि धन्यवाद!',
+ 'email_confirm_thanks_desc' => 'कृपया केही समय कुर्नुहोस् जबकि तपाईंको पुष्टिकरण प्रक्रिया गरिन्छ। यदि तपाईंलाई 3 सेकेन्ड पछि पुनः रिडिरेक्ट गरिएको छैन भने, तलको "अगाडि बढ्नुहोस्" लिङ्कमा क्लिक गर्नुहोस्।',
+
+ 'email_not_confirmed' => 'इमेल ठेगाना पुष्टि गरिएको छैन',
+ 'email_not_confirmed_text' => 'तपाईंको इमेल ठेगाना अझै पुष्टि भएको छैन।',
+ 'email_not_confirmed_click_link' => 'कृपया तपाईंले दर्ता गर्दा पठाइएको इमेलमा रहेको लिङ्कमा क्लिक गर्नुहोस्।',
+ 'email_not_confirmed_resend' => 'यदि तपाईंलाई इमेल भेट्न गाह्रो भइरहेको छ भने, तपाईं तलको फारम द्वारा पुष्टिकरण इमेल पुनः पठाउन सक्नुहुन्छ।',
+ 'email_not_confirmed_resend_button' => 'पुष्टिकरण इमेल पुनः पठाउनुहोस्',
+
+ // User Invite
+ 'user_invite_email_subject' => ':appName मा सामेल हुनका लागि तपाईंलाई आमन्त्रित गरिएको छ!',
+ 'user_invite_email_greeting' => ':appName मा तपाईंको खाता सिर्जना गरिएको छ।',
+ 'user_invite_email_text' => 'खाता पासवर्ड सेट गर्न र पहुँच प्राप्त गर्न तलको बटनमा क्लिक गर्नुहोस्:',
+ 'user_invite_email_action' => 'खाता पासवर्ड सेट गर्नुहोस्',
+ 'user_invite_page_welcome' => ':appName मा स्वागत छ!',
+ 'user_invite_page_text' => 'तपाईंको खाता अन्तिम रूप दिन र पहुँच प्राप्त गर्न तपाईंलाई पासवर्ड सेट गर्न आवश्यक छ जुन भविष्यका भ्रमणमा :appName मा लगइन गर्न प्रयोग हुनेछ।',
+ 'user_invite_page_confirm_button' => 'पासवर्ड पक्का गर्नुहोस्',
+ 'user_invite_success_login' => 'पासवर्ड सेट गरिएको छ, तपाईं अब तपाईंको सेट गरिएको पासवर्ड प्रयोग गरेर :appName मा लगइन गर्न सक्षम हुनुहुनेछ!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'मल्टि-फ्याक्टर प्रमाणीकरण सेटअप गर्नुहोस्',
+ 'mfa_setup_desc' => 'तपाईंको प्रयोगकर्ता खाता सुरक्षा थप गर्न मल्टि-फ्याक्टर प्रमाणीकरण सेटअप गर्नुहोस्।',
+ 'mfa_setup_configured' => 'पहिले नै कन्फिगर गरिएको',
+ 'mfa_setup_reconfigure' => 'पुनः कन्फिगर गर्नुहोस्',
+ 'mfa_setup_remove_confirmation' => 'के तपाईं यो मल्टि-फ्याक्टर प्रमाणीकरण विधि हटाउन चाहानुहुन्छ?',
+ 'mfa_setup_action' => 'सेटअप',
+ 'mfa_backup_codes_usage_limit_warning' => 'तपाईंको ५ भन्दा कम ब्याकअप कोड बाँकी छन्, कृपया नयाँ सेट उत्पन्न गर्नुहोस् र सुरक्षित स्थानमा राख्नुहोस् ताकि तपाईंको खाता लकडाउन नहोस्।',
+ 'mfa_option_totp_title' => 'मोबाइल एप',
+ 'mfa_option_totp_desc' => 'मल्टि-फ्याक्टर प्रमाणीकरण प्रयोग गर्नको लागि तपाईंलाई Google Authenticator, Authy वा Microsoft Authenticator जस्ता TOTP समर्थित मोबाइल एपको आवश्यकता पर्छ।',
+ 'mfa_option_backup_codes_title' => 'ब्याकअप कोड',
+ 'mfa_option_backup_codes_desc' => 'एक सेट ब्याकअप कोड उत्पन्न गर्दछ जसलाई तपाईंले लगइन गर्दा आफ्नो पहिचान प्रमाणित गर्न प्रयोग गर्नुहुनेछ। यी सुरक्षित स्थानमा राख्नुहोस्।',
+ 'mfa_gen_confirm_and_enable' => 'पुष्टिकरण र सक्षम गर्नुहोस्',
+ 'mfa_gen_backup_codes_title' => 'ब्याकअप कोड सेटअप',
+ 'mfa_gen_backup_codes_desc' => 'तलको कोडहरूको सूची सुरक्षित स्थानमा राख्नुहोस्। प्रणालीमा पहुँच गर्दा तपाईंले एक कोडलाई दोस्रो प्रमाणीकरण विधिका रूपमा प्रयोग गर्नुहुनेछ।',
+ 'mfa_gen_backup_codes_download' => 'कोडहरू डाउनलोड गर्नुहोस्',
+ 'mfa_gen_backup_codes_usage_warning' => 'प्रत्येक कोड एक पटक मात्र प्रयोग गर्न सकिन्छ।',
+ 'mfa_gen_totp_title' => 'मोबाइल एप सेटअप',
+ 'mfa_gen_totp_desc' => 'मल्टि-फ्याक्टर प्रमाणीकरण प्रयोग गर्नको लागि तपाईंलाई Google Authenticator, Authy वा Microsoft Authenticator जस्ता TOTP समर्थित मोबाइल एपको आवश्यकता पर्छ।',
+ 'mfa_gen_totp_scan' => 'सुरु गर्नको लागि तलको QR कोड स्क्यान गर्नुहोस्।',
+ 'mfa_gen_totp_verify_setup' => 'सेटअप प्रमाणित गर्नुहोस्',
+ 'mfa_gen_totp_verify_setup_desc' => 'सुनिश्चित गर्नका लागि एक कोड प्रविष्ट गर्नुहोस्, तपाईंको प्रमाणीकरण एपबाट उत्पन्न गरिएको, तलको इनपुट बक्समा:',
+ 'mfa_gen_totp_provide_code_here' => 'तपाईंको एपबाट उत्पन्न गरिएको कोड यहाँ प्रदान गर्नुहोस्।',
+ 'mfa_verify_access' => 'पहुँच प्रमाणित गर्नुहोस्',
+ 'mfa_verify_access_desc' => 'तपाईंको प्रयोगकर्ता खाता थप प्रमाणीकरणको माध्यमबाट आफ्नो पहिचान प्रमाणित गर्नको लागि आवश्यक छ। कृपया अगाडि बढ्नको लागि तपाईंको कन्फिगर गरिएको विधि प्रयोग गर्नुहोस्।',
+ 'mfa_verify_no_methods' => 'कुनै तरिका कन्फिगर गरिएको छैन',
+ 'mfa_verify_no_methods_desc' => 'तपाईंको खातामा मल्टि-फ्याक्टर प्रमाणीकरण विधिहरू फेला परेका छैनन्। तपाईंलाई पहुँच प्राप्त गर्न कम्तिमा एक विधि सेटअप गर्न आवश्यक छ।',
+ 'mfa_verify_use_totp' => 'मोबाइल एप प्रयोग गरेर प्रमाणित गर्नुहोस्',
+ 'mfa_verify_use_backup_codes' => 'ब्याकअप कोड प्रयोग गरेर प्रमाणित गर्नुहोस्',
+ 'mfa_verify_backup_code' => 'ब्याकअप कोड',
+ 'mfa_verify_backup_code_desc' => 'तल तपाईंको बाँकी रहेका ब्याकअप कोडहरू मध्ये एउटा प्रविष्ट गर्नुहोस्:',
+ 'mfa_verify_backup_code_enter_here' => 'यहाँ ब्याकअप कोड प्रविष्ट गर्नुहोस्',
+ 'mfa_verify_totp_desc' => 'तपाईंको मोबाइल एपबाट उत्पन्न गरिएको कोड तल प्रविष्ट गर्नुहोस्:',
+ 'mfa_setup_login_notification' => 'मल्टि-फ्याक्टर विधि कन्फिगर गरिएको छ, कृपया अब कन्फिगर गरिएको विधि प्रयोग गरेर फेरि लगइन गर्नुहोस्।',
+];
diff --git a/lang/ne/common.php b/lang/ne/common.php
new file mode 100644
index 00000000000..696ddc6b4dc
--- /dev/null
+++ b/lang/ne/common.php
@@ -0,0 +1,115 @@
+ 'रद्द गर्नुहोस्',
+ 'close' => 'बन्द गर्नुहोस्',
+ 'confirm' => 'पुष्टि गर्नुहोस्',
+ 'back' => 'फिर्ता',
+ 'save' => 'सेभ गर्नुहोस्',
+ 'continue' => 'जारी राख्नुहोस्',
+ 'select' => 'छान्नुहोस्',
+ 'toggle_all' => 'सबै टगल गर्नुहोस्',
+ 'more' => 'थप',
+
+ // Form Labels
+ 'name' => 'नाम',
+ 'description' => 'विवरण',
+ 'role' => 'भूमिका',
+ 'cover_image' => 'आवरण चित्र',
+ 'cover_image_description' => 'यो चित्र करिब 440x250px हुनुपर्छ, यद्यपि यो प्रयोगकर्ता इन्टरफेसमा आवश्यकताअनुसार लचिलो रूपमा स्केल र काटिने भएकाले देखिने वास्तविक आकार फरक हुन सक्छ।',
+
+ // Actions
+ 'actions' => 'कार्यहरू',
+ 'view' => 'हेर्नुहोस्',
+ 'view_all' => 'सबै हेर्नुहोस्',
+ 'new' => 'नयाँ',
+ 'create' => 'सिर्जना गर्नुहोस्',
+ 'update' => 'अद्यावधिक गर्नुहोस्',
+ 'edit' => 'सम्पादन गर्नुहोस्',
+ 'archive' => 'अभिलेख राख्नुहोस्',
+ 'unarchive' => 'अभिलेख हटाउनुहोस्',
+ 'sort' => 'क्रमबद्ध गर्नुहोस्',
+ 'move' => 'सार्नुहोस्',
+ 'copy' => 'प्रतिलिपि गर्नुहोस्',
+ 'reply' => 'जवाफ दिनुहोस्',
+ 'delete' => 'हटाउनुहोस्',
+ 'delete_confirm' => 'हटाउने पुष्टि गर्नुहोस्',
+ 'search' => 'खोज्नुहोस्',
+ 'search_clear' => 'खोज हटाउनुहोस्',
+ 'reset' => 'रीसेट गर्नुहोस्',
+ 'remove' => 'हटाउनुहोस्',
+ 'add' => 'थप्नुहोस्',
+ 'configure' => 'कन्फिगर गर्नुहोस्',
+ 'manage' => 'व्यवस्थापन गर्नुहोस्',
+ 'fullscreen' => 'पूर्ण स्क्रिन',
+ 'favourite' => 'मनपर्ने',
+ 'unfavourite' => 'मनपर्नेबाट हटाउनुहोस्',
+ 'next' => 'अर्को',
+ 'previous' => 'अघिल्लो',
+ 'filter_active' => 'सक्रिय फिल्टर:',
+ 'filter_clear' => 'फिल्टर हटाउनुहोस्',
+ 'download' => 'डाउनलोड गर्नुहोस्',
+ 'open_in_tab' => 'ट्याबमा खोल्नुहोस्',
+ 'open' => 'खोल्नुहोस्',
+
+ // Sort Options
+ 'sort_options' => 'क्रमबद्ध विकल्पहरू',
+ 'sort_direction_toggle' => 'क्रमबद्ध दिशा टगल',
+ 'sort_ascending' => 'बढ्दो क्रममा क्रमबद्ध गर्नुहोस्',
+ 'sort_descending' => 'घट्दो क्रममा क्रमबद्ध गर्नुहोस्',
+ 'sort_name' => 'नाम',
+ 'sort_default' => 'पूर्वनिर्धारित',
+ 'sort_created_at' => 'सिर्जना मिति',
+ 'sort_updated_at' => 'अद्यावधिक मिति',
+
+ // Misc
+ 'deleted_user' => 'हटाइएको प्रयोगकर्ता',
+ 'no_activity' => 'देखाउनका लागि कुनै गतिविधि छैन',
+ 'no_items' => 'कुनै वस्तुहरू उपलब्ध छैनन्',
+ 'back_to_top' => 'शीर्षमा फर्कनुहोस्',
+ 'skip_to_main_content' => 'मुख्य सामग्रीमा जानुहोस्',
+ 'toggle_details' => 'विवरण टगल गर्नुहोस्',
+ 'toggle_thumbnails' => 'थम्बनेल टगल गर्नुहोस्',
+ 'details' => 'विवरण',
+ 'grid_view' => 'ग्रिड दृश्य',
+ 'list_view' => 'सूची दृश्य',
+ 'default' => 'पूर्वनिर्धारित',
+ 'breadcrumb' => 'ब्रेडक्रम्ब',
+ 'status' => 'स्थिति',
+ 'status_active' => 'सक्रिय',
+ 'status_inactive' => 'निष्क्रिय',
+ 'never' => 'कहिल्यै होइन',
+ 'none' => 'कुनै पनि होइन',
+
+ // Header
+ 'homepage' => 'गृहपृष्ठ',
+ 'header_menu_expand' => 'हेडर मेनु विस्तार गर्नुहोस्',
+ 'profile_menu' => 'प्रोफाइल मेनु',
+ 'view_profile' => 'प्रोफाइल हेर्नुहोस्',
+ 'edit_profile' => 'प्रोफाइल सम्पादन गर्नुहोस्',
+ 'dark_mode' => 'गाढा मोड',
+ 'light_mode' => 'हल्का मोड',
+ 'global_search' => 'विश्वव्यापी खोज',
+
+ // Layout tabs
+ 'tab_info' => 'जानकारी',
+ 'tab_info_label' => 'ट्याब: द्वितीय जानकारी देखाउनुहोस्',
+ 'tab_content' => 'सामग्री',
+ 'tab_content_label' => 'ट्याब: प्राथमिक सामग्री देखाउनुहोस्',
+
+ // Email Content
+ 'email_action_help' => 'यदि तपाईं ":actionText" बटनमा क्लिक गर्न समस्या भइरहेको छ भने, तलको URL आफ्नो वेब ब्राउजरमा कपी गरेर पेस्ट गर्नुहोस्:',
+ 'email_rights' => 'सर्वाधिकार सुरक्षित',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'गोपनीयता नीति',
+ 'terms_of_service' => 'सेवा सर्तहरू',
+
+ // OpenSearch
+ 'opensearch_description' => ':appName खोज्नुहोस्',
+];
diff --git a/lang/ne/components.php b/lang/ne/components.php
new file mode 100644
index 00000000000..d488842e481
--- /dev/null
+++ b/lang/ne/components.php
@@ -0,0 +1,46 @@
+ 'चित्र चयन गर्नुहोस्',
+ 'image_list' => 'चित्र सूची',
+ 'image_details' => 'चित्र विवरण',
+ 'image_upload' => 'चित्र अपलोड गर्नुहोस्',
+ 'image_intro' => 'यहाँ तपाईंले पहिले अपलोड गरिएका चित्रहरू चयन र व्यवस्थापन गर्न सक्नुहुन्छ।',
+ 'image_intro_upload' => '"चित्र अपलोड गर्नुहोस्" बटन प्रयोग गरेर वा चित्र फाइललाई यो विन्डोमा तानेर नयाँ चित्र अपलोड गर्नुहोस्।',
+ 'image_all' => 'सबै',
+ 'image_all_title' => 'सबै चित्रहरू हेर्नुहोस्',
+ 'image_book_title' => 'यस पुस्तकमा अपलोड गरिएका चित्रहरू हेर्नुहोस्',
+ 'image_page_title' => 'यस पृष्ठमा अपलोड गरिएका चित्रहरू हेर्नुहोस्',
+ 'image_search_hint' => 'चित्र नामद्वारा खोज्नुहोस्',
+ 'image_uploaded' => 'अपलोड गरिएको :uploadedDate',
+ 'image_uploaded_by' => ':userName द्वारा अपलोड गरिएको',
+ 'image_uploaded_to' => ':pageLink मा अपलोड गरिएको',
+ 'image_updated' => 'अद्यावधिक गरिएको :updateDate',
+ 'image_load_more' => 'थप लोड गर्नुहोस्',
+ 'image_image_name' => 'चित्र नाम',
+ 'image_delete_used' => 'यो चित्र तलका पृष्ठहरूमा प्रयोग भइरहेको छ।',
+ 'image_delete_confirm_text' => 'के तपाईं यो चित्र मेटाउन निश्चित हुनुहुन्छ?',
+ 'image_select_image' => 'चित्र चयन गर्नुहोस्',
+ 'image_dropzone' => 'चित्र ड्रप गर्नुहोस् वा अपलोड गर्न यहाँ क्लिक गर्नुहोस्',
+ 'image_dropzone_drop' => 'अपलोड गर्न यहाँ चित्र ड्रप गर्नुहोस्',
+ 'images_deleted' => 'चित्रहरू मेटाइयो',
+ 'image_preview' => 'चित्र पूर्वावलोकन',
+ 'image_upload_success' => 'चित्र सफलतापूर्वक अपलोड गरियो',
+ 'image_update_success' => 'चित्र विवरण सफलतापूर्वक अद्यावधिक गरियो',
+ 'image_delete_success' => 'चित्र सफलतापूर्वक मेटाइयो',
+ 'image_replace' => 'चित्र प्रतिस्थापन गर्नुहोस्',
+ 'image_replace_success' => 'चित्र फाइल सफलतापूर्वक अद्यावधिक गरियो',
+ 'image_rebuild_thumbs' => 'आकारका भेरिएसनहरू पुनर्निर्माण गर्नुहोस्',
+ 'image_rebuild_thumbs_success' => 'चित्र आकार भेरिएसनहरू सफलतापूर्वक पुनर्निर्माण गरियो!',
+
+ // Code Editor
+ 'code_editor' => 'कोड सम्पादन गर्नुहोस्',
+ 'code_language' => 'कोड भाषा',
+ 'code_content' => 'कोड सामग्री',
+ 'code_session_history' => 'सेसन इतिहास',
+ 'code_save' => 'कोड सेभ गर्नुहोस्',
+];
diff --git a/lang/ne/editor.php b/lang/ne/editor.php
new file mode 100644
index 00000000000..f3b760ba8ea
--- /dev/null
+++ b/lang/ne/editor.php
@@ -0,0 +1,182 @@
+ 'सामान्य',
+ 'advanced' => 'उन्नत',
+ 'none' => 'कुनै पनि छैन',
+ 'cancel' => 'रद्द गर्नुहोस्',
+ 'save' => 'सेभ गर्नुहोस्',
+ 'close' => 'बन्द गर्नुहोस्',
+ 'apply' => 'लागु गर्नुहोस्',
+ 'undo' => 'पूर्ववत् गर्नुहोस्',
+ 'redo' => 'पुन: गर्नुहोस्',
+ 'left' => 'बायाँ',
+ 'center' => 'केन्द्र',
+ 'right' => 'दायाँ',
+ 'top' => 'माथि',
+ 'middle' => 'बीच',
+ 'bottom' => 'तल',
+ 'width' => 'चौडाइ',
+ 'height' => 'उचाइ',
+ 'More' => 'थप',
+ 'select' => 'छान्नुहोस्...',
+
+ // Toolbar
+ 'formats' => 'ढाँचा',
+ 'header_large' => 'ठुलो शीर्षक',
+ 'header_medium' => 'मध्यम शीर्षक',
+ 'header_small' => 'सानो शीर्षक',
+ 'header_tiny' => 'अत्यन्त सानो शीर्षक',
+ 'paragraph' => 'प्याराग्राफ',
+ 'blockquote' => 'ब्लकउद्धरण',
+ 'inline_code' => 'इनलाइन कोड',
+ 'callouts' => 'कौलआउटहरू',
+ 'callout_information' => 'सूचना',
+ 'callout_success' => 'सफलता',
+ 'callout_warning' => 'चेतावनी',
+ 'callout_danger' => 'खतरा',
+ 'bold' => 'मोठो अक्षर',
+ 'italic' => 'तेरियो',
+ 'underline' => 'रेखाङ्कन',
+ 'strikethrough' => 'रेखाले काटिएको',
+ 'superscript' => 'सुपरस्क्रिप्ट',
+ 'subscript' => 'सबस्क्रिप्ट',
+ 'text_color' => 'पाठको रंग',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'अनुकूलित रंग',
+ 'remove_color' => 'रंग हटाउनुहोस्',
+ 'background_color' => 'पृष्ठभूमि रंग',
+ 'align_left' => 'बायाँ संरेखण',
+ 'align_center' => 'केन्द्र संरेखण',
+ 'align_right' => 'दायाँ संरेखण',
+ 'align_justify' => 'समायोजन',
+ 'list_bullet' => 'बुलेट सूची',
+ 'list_numbered' => 'संख्याबद्ध सूची',
+ 'list_task' => 'कार्य सूची',
+ 'indent_increase' => 'इनडेन्ट बढाउनुहोस्',
+ 'indent_decrease' => 'इनडेन्ट घटाउनुहोस्',
+ 'table' => 'टेबल',
+ 'insert_image' => 'चित्र राख्नुहोस्',
+ 'insert_image_title' => 'चित्र राख्नुहोस्/सम्पादन गर्नुहोस्',
+ 'insert_link' => 'लिंक राख्नुहोस्/सम्पादन गर्नुहोस्',
+ 'insert_link_title' => 'लिंक राख्नुहोस्/सम्पादन गर्नुहोस्',
+ 'insert_horizontal_line' => 'क्षैतिज रेखा राख्नुहोस्',
+ 'insert_code_block' => 'कोड ब्लक राख्नुहोस्',
+ 'edit_code_block' => 'कोड ब्लक सम्पादन गर्नुहोस्',
+ 'insert_drawing' => 'ड्रइङ राख्नुहोस्/सम्पादन गर्नुहोस्',
+ 'drawing_manager' => 'ड्रइङ व्यवस्थापक',
+ 'insert_media' => 'मिडिया राख्नुहोस्/सम्पादन गर्नुहोस्',
+ 'insert_media_title' => 'मिडिया राख्नुहोस्/सम्पादन गर्नुहोस्',
+ 'clear_formatting' => 'ढाँचा सफा गर्नुहोस्',
+ 'source_code' => 'स्रोत कोड',
+ 'source_code_title' => 'स्रोत कोड',
+ 'fullscreen' => 'पूर्ण स्क्रीन',
+ 'image_options' => 'चित्र विकल्प',
+
+ // Tables
+ 'table_properties' => 'टेबल गुणहरू',
+ 'table_properties_title' => 'टेबल गुणहरू',
+ 'delete_table' => 'टेबल मेटाउनुहोस्',
+ 'table_clear_formatting' => 'टेबलको ढाँचा सफा गर्नुहोस्',
+ 'resize_to_contents' => 'सामग्री अनुसार आकार मिलाउनुहोस्',
+ 'row_header' => 'पङ्क्ति शीर्षक',
+ 'insert_row_before' => 'अगाडिको पङ्क्ति राख्नुहोस्',
+ 'insert_row_after' => 'पछिको पङ्क्ति राख्नुहोस्',
+ 'delete_row' => 'पङ्क्ति मेटाउनुहोस्',
+ 'insert_column_before' => 'अगाडिको स्तम्भ राख्नुहोस्',
+ 'insert_column_after' => 'पछिको स्तम्भ राख्नुहोस्',
+ 'delete_column' => 'स्तम्भ मेटाउनुहोस्',
+ 'table_cell' => 'सेल',
+ 'table_row' => 'पङ्क्ति',
+ 'table_column' => 'स्तम्भ',
+ 'cell_properties' => 'सेल गुणहरू',
+ 'cell_properties_title' => 'सेल गुणहरू',
+ 'cell_type' => 'सेल प्रकार',
+ 'cell_type_cell' => 'सेल',
+ 'cell_scope' => 'स्कोप',
+ 'cell_type_header' => 'शीर्षक सेल',
+ 'merge_cells' => 'सेल मर्ज गर्नुहोस्',
+ 'split_cell' => 'सेल विभाजन गर्नुहोस्',
+ 'table_row_group' => 'पङ्क्ति समूह',
+ 'table_column_group' => 'स्तम्भ समूह',
+ 'horizontal_align' => 'क्षैतिज संरेखण',
+ 'vertical_align' => 'उर्ध्वाधर संरेखण',
+ 'border_width' => 'बोर्डर चौडाइ',
+ 'border_style' => 'बोर्डर शैली',
+ 'border_color' => 'बोर्डर रंग',
+ 'row_properties' => 'पङ्क्ति गुणहरू',
+ 'row_properties_title' => 'पङ्क्ति गुणहरू',
+ 'cut_row' => 'पङ्क्ति काट्नुहोस्',
+ 'copy_row' => 'पङ्क्ति कपी गर्नुहोस्',
+ 'paste_row_before' => 'अगाडिको पङ्क्तिमा पेस्ट गर्नुहोस्',
+ 'paste_row_after' => 'पछिको पङ्क्तिमा पेस्ट गर्नुहोस्',
+ 'row_type' => 'पङ्क्ति प्रकार',
+ 'row_type_header' => 'शीर्षक',
+ 'row_type_body' => 'शरीर',
+ 'row_type_footer' => 'तल',
+ 'alignment' => 'संरेखण',
+ 'cut_column' => 'स्तम्भ काट्नुहोस्',
+ 'copy_column' => 'स्तम्भ कपी गर्नुहोस्',
+ 'paste_column_before' => 'अगाडिको स्तम्भमा पेस्ट गर्नुहोस्',
+ 'paste_column_after' => 'पछिको स्तम्भमा पेस्ट गर्नुहोस्',
+ 'cell_padding' => 'सेल प्याडिङ',
+ 'cell_spacing' => 'सेल स्पेसिङ',
+ 'caption' => 'क्याप्सन',
+ 'show_caption' => 'क्याप्सन देखाउनुहोस्',
+ 'constrain' => 'अनुपात सीमित गर्नुहोस्',
+ 'cell_border_solid' => 'ठोस',
+ 'cell_border_dotted' => 'डटेड',
+ 'cell_border_dashed' => 'ड्यास्ड',
+ 'cell_border_double' => 'डबल',
+ 'cell_border_groove' => 'ग्रूभ',
+ 'cell_border_ridge' => 'रिज',
+ 'cell_border_inset' => 'इनसेट',
+ 'cell_border_outset' => 'आउटसेट',
+ 'cell_border_none' => 'कुनै पनि छैन',
+ 'cell_border_hidden' => 'लुकेको',
+
+ // Images, links, details/summary & embed
+ 'source' => 'स्रोत',
+ 'alt_desc' => 'वैकल्पिक विवरण',
+ 'embed' => 'एम्बेड',
+ 'paste_embed' => 'तपाईंको एम्बेड कोड तल टाँस्नुहोस्:',
+ 'url' => 'URL',
+ 'text_to_display' => 'देखाउने पाठ',
+ 'title' => 'शीर्षक',
+ 'browse_links' => 'लिंकहरू ब्राउज गर्नुहोस्',
+ 'open_link' => 'लिंक खोल्नुहोस्',
+ 'open_link_in' => 'लिंक खोल्नुहोस् ...',
+ 'open_link_current' => 'हालको विन्डो',
+ 'open_link_new' => 'नयाँ विन्डो',
+ 'remove_link' => 'लिंक हटाउनुहोस्',
+ 'insert_collapsible' => 'टुंगो लाग्ने ब्लक राख्नुहोस्',
+ 'collapsible_unwrap' => 'अनर्याप गर्नुहोस्',
+ 'edit_label' => 'लेबल सम्पादन गर्नुहोस्',
+ 'toggle_open_closed' => 'खोल्ने/बन्द गर्ने टगल गर्नुहोस्',
+ 'collapsible_edit' => 'टुंगो लाग्ने ब्लक सम्पादन गर्नुहोस्',
+ 'toggle_label' => 'लेबल टगल गर्नुहोस्',
+
+ // About view
+ 'about' => 'संपादकको बारेमा',
+ 'about_title' => 'WYSIWYG संपादकको बारेमा',
+ 'editor_license' => 'संपादक अनुमति र कपीराइट',
+ 'editor_lexical_license' => 'यो संपादक :lexicalLink को फोर्कको रूपमा निर्माण गरिएको हो जुन MIT लाइसेन्स अन्तर्गत वितरण गरिएको छ।',
+ 'editor_lexical_license_link' => 'पूरा लाइसेन्स विवरण यहाँ भेट्न सकिन्छ।',
+ 'editor_tiny_license' => 'यो संपादक :tinyLink प्रयोग गरेर निर्माण गरिएको हो जुन MIT लाइसेन्स अन्तर्गत उपलब्ध छ।',
+ 'editor_tiny_license_link' => 'TinyMCE को कपीराइट र लाइसेन्स विवरण यहाँ भेट्न सकिन्छ।',
+ 'save_continue' => 'पृष्ठ सेभ गरी जारी राख्नुहोस्',
+ 'callouts_cycle' => '(प्रकारहरू टगल गर्न थिचिरहनुहोस्)',
+ 'link_selector' => 'सामग्रीमा लिंक',
+ 'shortcuts' => 'सर्टकटहरू',
+ 'shortcut' => 'सर्टकट',
+ 'shortcuts_intro' => 'संपादकमा निम्न सर्टकटहरू उपलब्ध छन्:',
+ 'windows_linux' => '(विन्डोज/लिनक्स)',
+ 'mac' => '(म्याक)',
+ 'description' => 'विवरण',
+];
diff --git a/lang/ne/entities.php b/lang/ne/entities.php
new file mode 100644
index 00000000000..88b202deed3
--- /dev/null
+++ b/lang/ne/entities.php
@@ -0,0 +1,476 @@
+ 'हालैमा सिर्जना गरिएको',
+ 'recently_created_pages' => 'हालैमा सिर्जना गरिएका पाना',
+ 'recently_updated_pages' => 'हालैमा अद्यावधिक गरिएका पाना',
+ 'recently_created_chapters' => 'हालैमा सिर्जना गरिएका अध्यायहरू',
+ 'recently_created_books' => 'हालैमा सिर्जना गरिएका पुस्तकहरू',
+ 'recently_created_shelves' => 'हालैमा सिर्जना गरिएका दराजहरू',
+ 'recently_update' => 'हालैमा अद्यावधिक गरिएको',
+ 'recently_viewed' => 'हालैमा हेरिएको',
+ 'recent_activity' => 'हालको गतिविधि',
+ 'create_now' => 'अहिले सिर्जना गर्नुहोस्',
+ 'revisions' => 'संशोधनहरू',
+ 'meta_revision' => 'संशोधन #:revisionCount',
+ 'meta_created' => 'सिर्जना गरिएको :timeLength',
+ 'meta_created_name' => ':user द्वारा सिर्जना गरिएको :timeLength',
+ 'meta_updated' => 'अद्यावधिक गरिएको :timeLength',
+ 'meta_updated_name' => ':user द्वारा अद्यावधिक गरिएको :timeLength',
+ 'meta_owned_name' => ':user द्वारा स्वामित्व गरिएको',
+ 'meta_reference_count' => ':count वस्तु द्वारा सन्दर्भित|:count वस्तुहरू द्वारा सन्दर्भित',
+ 'entity_select' => 'इकाई चयन',
+ 'entity_select_lack_permission' => 'तपाईंलाई यो वस्तु चयन गर्नको लागि आवश्यक अनुमति छैन',
+ 'images' => 'छविहरू',
+ 'my_recent_drafts' => 'मेरो हालका मस्यौदाहरू',
+ 'my_recently_viewed' => 'मेरो हालै हेरिएका पाना',
+ 'my_most_viewed_favourites' => 'मेरो सबैभन्दा हेरिएका मनपर्ने',
+ 'my_favourites' => 'मेरो मनपर्ने',
+ 'no_pages_viewed' => 'तपाईंले कुनै पाना हेरिसकेको छैन',
+ 'no_pages_recently_created' => 'हालै कुनै पाना सिर्जना गरिएको छैन',
+ 'no_pages_recently_updated' => 'हालै कुनै पाना अद्यावधिक गरिएको छैन',
+ 'export' => 'निर्यात',
+ 'export_html' => 'समाविष्ट वेब फाइल',
+ 'export_pdf' => 'PDF फाइल',
+ 'export_text' => 'साधारण टेक्स्ट फाइल',
+ 'export_md' => 'Markdown फाइल',
+ 'export_zip' => 'पोर्टेबल ZIP',
+ 'default_template' => 'पूर्वनिर्धारित पृष्ठ ढाँचा',
+ 'default_template_explain' => 'यस वस्तु भित्र सिर्जना गरिएका सबै पानाहरूको लागि पूर्वनिर्धारित सामग्रीको रूपमा प्रयोग हुने पृष्ठ ढाँचाको चयन गर्नुहोस्। ध्यान दिनुहोस् कि यो केवल प्रयोगकर्ता चयन गरेको ढाँचाको पृष्ठलाई हेर्ने अनुमति पाउँदा मात्र लागू हुनेछ।',
+ 'default_template_select' => 'पृष्ठ ढाँचा चयन गर्नुहोस्',
+ 'import' => 'आयात',
+ 'import_validate' => 'आयात प्रमाणित गर्नुहोस्',
+ 'import_desc' => 'पुस्तकहरू, अध्यायहरू र पृष्ठहरूलाई पोर्टेबल ZIP निर्यातको माध्यमबाट आयात गर्नुहोस्, चाहे त्यसैको, वा अन्य कुनै उदाहरणको। ZIP फाइल चयन गर्न जारी राख्नुहोस्। फाइल अपलोड र प्रमाणित भएपछि, तपाईंलाई आयातको कन्फिगर र पुष्टि गर्ने विकल्प हुनेछ।',
+ 'import_zip_select' => 'अपलोड गर्न ZIP फाइल चयन गर्नुहोस्',
+ 'import_zip_validation_errors' => 'प्रदान गरिएको ZIP फाइल प्रमाणित गर्दा निम्न त्रुटिहरू भेटिएका छन्:',
+ 'import_pending' => 'पर्खाइमा रहेका आयातहरू',
+ 'import_pending_none' => 'कुनै आयात सुरू गरिएको छैन।',
+ 'import_continue' => 'आयात जारी राख्नुहोस्',
+ 'import_continue_desc' => 'अपलोड गरिएको ZIP फाइलबाट आयात गरिने सामग्रीको समीक्षा गर्नुहोस्। तयार भएपछि, आयात सञ्चालन गर्नुहोस् र यसको सामग्री यस प्रणालीमा थप्नुहोस्। सफल आयातपछि, अपलोड गरिएको ZIP आयात फाइल स्वचालित रूपमा मेटाइनेछ।',
+ 'import_details' => 'आयात विवरण',
+ 'import_run' => 'आयात सञ्चालन गर्नुहोस्',
+ 'import_size' => ':size आयात ZIP साइज',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'अनुमतिहरू',
+ 'permissions_desc' => 'यहाँ अनुमतिहरू सेट गर्नुहोस् जसले प्रयोगकर्ता भूमिकाद्वारा प्रदान गरिएका डिफल्ट अनुमतिहरूलाई ओभरराइड गर्दछ।',
+ 'permissions_book_cascade' => 'पुस्तकहरूमा सेट गरिएका अनुमतिहरू स्वचालित रूपमा सन्तान अध्यायहरू र पृष्ठहरूमा लागू हुनेछन्, जबसम्म तिनीहरूले आफ्नै अनुमतिहरू परिभाषित नगरेका हुँदैन।',
+ 'permissions_chapter_cascade' => 'अध्याीयमा सेट गरिएका अनुमतिहरू स्वचालित रूपमा सन्तान पृष्ठहरूमा लागू हुनेछन्, जबसम्म तिनीहरूले आफ्नै अनुमतिहरू परिभाषित नगरेका हुँदैन।',
+ 'permissions_save' => 'अनुमतिहरू बचत गर्नुहोस्',
+ 'permissions_owner' => 'स्वामी',
+ 'permissions_role_everyone_else' => 'अरु सबै',
+ 'permissions_role_everyone_else_desc' => 'प्रयोगकर्ता भूमिकामा विशेष रूपमा ओभरराइड नगरेको सबैका लागि अनुमतिहरू सेट गर्नुहोस्।',
+ 'permissions_role_override' => 'भूमिकाका लागि अनुमतिहरू ओभरराइड गर्नुहोस्',
+ 'permissions_inherit_defaults' => 'डिफल्टहरू मर्नुहोस्',
+
+ // Search
+ 'search_results' => 'खोज परिणामहरू',
+ 'search_total_results_found' => ':count परिणाम फेला परे|:count कुल परिणामहरू फेला परे',
+ 'search_clear' => 'खोज मेटाउनुहोस्',
+ 'search_no_pages' => 'कुनै पाना यस खोजसँग मेल खाएका छैनन्',
+ 'search_for_term' => ':term को लागि खोजी गर्नुहोस्',
+ 'search_more' => 'थप परिणामहरू',
+ 'search_advanced' => 'उन्नत खोजी',
+ 'search_terms' => 'खोजी शब्दहरू',
+ 'search_content_type' => 'सामग्री प्रकार',
+ 'search_exact_matches' => 'सटीक मेलहरू',
+ 'search_tags' => 'ट्याग खोजी',
+ 'search_options' => 'विकल्पहरू',
+ 'search_viewed_by_me' => 'मैले हेरेको',
+ 'search_not_viewed_by_me' => 'मैले नहेरेको',
+ 'search_permissions_set' => 'अनुमतिहरू सेट गरिएका',
+ 'search_created_by_me' => 'मैले सिर्जना गरेको',
+ 'search_updated_by_me' => 'मैले अद्यावधिक गरेको',
+ 'search_owned_by_me' => 'मैले स्वामित्व गरेको',
+ 'search_date_options' => 'मिति विकल्पहरू',
+ 'search_updated_before' => 'अद्यावधिक गरिएको अघि',
+ 'search_updated_after' => 'अद्यावधिक गरिएको पछि',
+ 'search_created_before' => 'सिर्जना गरिएको अघि',
+ 'search_created_after' => 'सिर्जना गरिएको पछि',
+ 'search_set_date' => 'मिति सेट गर्नुहोस्',
+ 'search_update' => 'खोज अपडेट गर्नुहोस्',
+
+ // Shelves
+ 'shelf' => 'दराज',
+ 'shelves' => 'दराजहरू',
+ 'x_shelves' => ':count दराज|:count दराजहरू',
+ 'shelves_empty' => 'कुनै दराज सिर्जना गरिएको छैन',
+ 'shelves_create' => 'नयाँ दराज सिर्जना गर्नुहोस्',
+ 'shelves_popular' => 'लोकप्रिय दराजहरू',
+ 'shelves_new' => 'नयाँ दराजहरू',
+ 'shelves_new_action' => 'नयाँ दराज',
+ 'shelves_popular_empty' => 'यहाँ सबैभन्दा लोकप्रिय दराजहरू देखिनेछन्।',
+ 'shelves_new_empty' => 'यहाँ सबैभन्दा नयाँ सिर्जना गरिएका दराजहरू देखिनेछन्।',
+ 'shelves_save' => 'दराज बचत गर्नुहोस्',
+ 'shelves_books' => 'यस दराजमा पुस्तकहरू',
+ 'shelves_add_books' => 'यस दराजमा पुस्तकहरू थप्नुहोस्',
+ 'shelves_drag_books' => 'पुस्तकहरू तल तान्नुहोस् यस दराजमा थप्नका लागि',
+ 'shelves_empty_contents' => 'यस दराजमा कुनै पुस्तकहरू असाइन गरिएको छैन',
+ 'shelves_edit_and_assign' => 'दराज सम्पादन गरेर पुस्तकहरू असाइन गर्नुहोस्',
+ 'shelves_edit_named' => 'दराज सम्पादन गर्नुहोस् :name',
+ 'shelves_edit' => 'दराज सम्पादन गर्नुहोस्',
+ 'shelves_delete' => 'दराज मेट्नुहोस्',
+ 'shelves_delete_named' => 'दराज मेट्नुहोस् :name',
+ 'shelves_delete_explain' => "यसले ':name' नामक दराज मेट्नेछ। समावेश गरिएका पुस्तकहरू मेटिने छैनन्।",
+ 'shelves_delete_confirmation' => 'के तपाईं यकिन हुनुहुन्छ कि तपाईं यस दराजलाई मेट्न चाहनुहुन्छ?',
+ 'shelves_permissions' => 'दराज अनुमतिहरू',
+ 'shelves_permissions_updated' => 'दराज अनुमतिहरू अद्यावधिक गरिएका',
+ 'shelves_permissions_active' => 'दराज अनुमतिहरू सक्रिय',
+ 'shelves_permissions_cascade_warning' => 'दराजमा सेट गरिएका अनुमतिहरू स्वचालित रूपमा समाविष्ट पुस्तकहरूमा क्यास्केड हुँदैनन्। यो कारणले कि पुस्तक एक भन्दा धेरै दराजमा अस्तित्वमा हुन सक्छ।',
+ 'shelves_permissions_create' => 'दराज सिर्जना अनुमतिहरू केवल बालक पुस्तकहरूमा अनुमतिहरूको कपी गर्नको लागि प्रयोग गरिन्छ। यी अनुमतिहरू पुस्तक सिर्जना गर्नको लागि छैन।',
+ 'shelves_copy_permissions_to_books' => 'पुस्तकहरूमा अनुमतिहरूको कपी गर्नुहोस्',
+ 'shelves_copy_permissions' => 'अनुमतिहरूको कपी गर्नुहोस्',
+ 'shelves_copy_permissions_explain' => 'यसले यस दराजको वर्तमान अनुमतिहरूलाई यसमा समावेश गरिएका सबै पुस्तकहरूमा लागू गर्नेछ। कृपया सुनिश्चित गर्नुहोस् कि कुनै पनि परिवर्तनहरू सेभ भएका छन्।',
+ 'shelves_copy_permission_success' => ':count पुस्तकहरूमा दराज अनुमतिहरू कपी गरिएका',
+
+ // Books
+ 'book' => 'पुस्तक',
+ 'books' => 'पुस्तकहरू',
+ 'x_books' => ':count पुस्तक|:count पुस्तकहरू',
+ 'books_empty' => 'कुनै पुस्तकहरू सिर्जना गरिएका छैनन्',
+ 'books_popular' => 'लोकप्रिय पुस्तकहरू',
+ 'books_recent' => 'हालका पुस्तकहरू',
+ 'books_new' => 'नयाँ पुस्तकहरू',
+ 'books_new_action' => 'नयाँ पुस्तक',
+ 'books_popular_empty' => 'यहाँ सबैभन्दा लोकप्रिय पुस्तकहरू देखा पर्नेछन्।',
+ 'books_new_empty' => 'यहाँ सबैभन्दा हालसालै सिर्जना गरिएका पुस्तकहरू देखा पर्नेछन्।',
+ 'books_create' => 'नयाँ पुस्तक सिर्जना गर्नुहोस्',
+ 'books_delete' => 'पुस्तक मेट्नुहोस्',
+ 'books_delete_named' => 'पुस्तक मेट्नुहोस् :bookName',
+ 'books_delete_explain' => 'यो पुस्तकलाई नाम \':bookName\' मेट्नेछ। सबै पृष्ठहरू र अध्यायहरू हटाइनेछन्।',
+ 'books_delete_confirmation' => 'के तपाईं पक्का हुनुहुन्छ कि तपाईं यस पुस्तकलाई मेट्न चाहनुहुन्छ?',
+ 'books_edit' => 'पुस्तक सम्पादन गर्नुहोस्',
+ 'books_edit_named' => 'पुस्तक सम्पादन गर्नुहोस् :bookName',
+ 'books_form_book_name' => 'पुस्तकको नाम',
+ 'books_save' => 'पुस्तक बचत गर्नुहोस्',
+ 'books_permissions' => 'पुस्तक अनुमतिहरू',
+ 'books_permissions_updated' => 'पुस्तक अनुमतिहरू अद्यावधिक गरियो',
+ 'books_empty_contents' => 'यस पुस्तकको लागि कुनै पृष्ठहरू वा अध्यायहरू सिर्जना गरिएका छैनन्।',
+ 'books_empty_create_page' => 'नयाँ पृष्ठ सिर्जना गर्नुहोस्',
+ 'books_empty_sort_current_book' => 'हालको पुस्तकलाई वर्गीकृत गर्नुहोस्',
+ 'books_empty_add_chapter' => 'अध्याय थप्नुहोस्',
+ 'books_permissions_active' => 'पुस्तक अनुमतिहरू सक्रिय छन्',
+ 'books_search_this' => 'यस पुस्तकमा खोजी गर्नुहोस्',
+ 'books_navigation' => 'पुस्तक नेभिगेशन',
+ '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_chapters_first' => 'पहिले अध्यायहरू',
+ 'books_sort_chapters_last' => 'अन्तिममा अध्यायहरू',
+ 'books_sort_show_other' => 'अन्य पुस्तकहरू देखाउनुहोस्',
+ 'books_sort_save' => 'नयाँ क्रम बचत गर्नुहोस्',
+ 'books_sort_show_other_desc' => 'यहाँ अन्य पुस्तकहरू थप्नुहोस् जसले वर्गीकरण प्रक्रिया समावेश गर्न र पुस्तकहरू बीच सामग्री सजिलै पुनः व्यवस्थित गर्न मद्दत पुर्याउँछ।',
+ 'books_sort_move_up' => 'माथि सार्नुहोस्',
+ 'books_sort_move_down' => 'तल सार्नुहोस्',
+ 'books_sort_move_prev_book' => 'अघिल्लो पुस्तकमा सार्नुहोस्',
+ 'books_sort_move_next_book' => 'अर्को पुस्तकमा सार्नुहोस्',
+ 'books_sort_move_prev_chapter' => 'अघिल्लो अध्यायमा सार्नुहोस्',
+ 'books_sort_move_next_chapter' => 'अर्को अध्यायमा सार्नुहोस्',
+ 'books_sort_move_book_start' => 'पुस्तकको सुरुवातमा सार्नुहोस्',
+ 'books_sort_move_book_end' => 'पुस्तकको अन्त्यमा सार्नुहोस्',
+ 'books_sort_move_before_chapter' => 'अध्यानको अघि सार्नुहोस्',
+ 'books_sort_move_after_chapter' => 'अध्यानको पछि सार्नुहोस्',
+ 'books_copy' => 'पुस्तक प्रतिलिपि गर्नुहोस्',
+ 'books_copy_success' => 'पुस्तक सफलतापूर्वक प्रतिलिपि गरियो',
+
+ // Chapters
+ 'chapter' => 'अध्याय',
+ 'chapters' => 'अध्यायहरू',
+ 'x_chapters' => ':count अध्याय|:count अध्यायहरू',
+ 'chapters_popular' => 'लोकप्रिय अध्यायहरू',
+ 'chapters_new' => 'नयाँ अध्याय',
+ 'chapters_create' => 'नयाँ अध्याय सिर्जना गर्नुहोस्',
+ 'chapters_delete' => 'अध्याय मेट्नुहोस्',
+ 'chapters_delete_named' => 'अध्याय मेट्नुहोस् :chapterName',
+ 'chapters_delete_explain' => 'यसले \':chapterName\' नामक अध्याय मेट्नेछ। यस अध्यायमा रहेका सबै पृष्ठहरू पनि मेटिनेछन्।',
+ 'chapters_delete_confirm' => 'के तपाईं यस अध्यायलाई मेट्न चाहनुहुन्छ?',
+ 'chapters_edit' => 'अध्याय सम्पादन गर्नुहोस्',
+ 'chapters_edit_named' => 'अध्याय सम्पादन गर्नुहोस् :chapterName',
+ 'chapters_save' => 'अध्याय बचत गर्नुहोस्',
+ 'chapters_move' => 'अध्याय सार्नुहोस्',
+ 'chapters_move_named' => 'अध्याय सार्नुहोस् :chapterName',
+ 'chapters_copy' => 'अध्याय प्रतिलिपि गर्नुहोस्',
+ 'chapters_copy_success' => 'अध्याय सफलतापूर्वक प्रतिलिपि गरिएको',
+ 'chapters_permissions' => 'अध्याय अनुमतिहरू',
+ 'chapters_empty' => 'हाल यस अध्यायमा कुनै पृष्ठहरू छैनन्।',
+ 'chapters_permissions_active' => 'अध्याय अनुमतिहरू सक्रिय छन्',
+ 'chapters_permissions_success' => 'अध्याय अनुमतिहरू अद्यावधिक गरिएका',
+ 'chapters_search_this' => 'यस अध्यायको खोजी गर्नुहोस्',
+ 'chapter_sort_book' => 'पुस्तक सॉर्ट गर्नुहोस्',
+
+ // Pages
+ 'page' => 'पाना',
+ 'pages' => 'पानाहरू',
+ 'x_pages' => ':count पाना|:count पानाहरू',
+ 'pages_popular' => 'लोकप्रिय पानाहरू',
+ 'pages_new' => 'नयाँ पाना',
+ 'pages_attachments' => 'जोडिएका फाइलहरू',
+ 'pages_navigation' => 'पाना नेविगेसन',
+ 'pages_delete' => 'पाना मेट्नुहोस्',
+ 'pages_delete_named' => 'पाना मेट्नुहोस् :pageName',
+ 'pages_delete_draft_named' => 'मस्यौदा पाना मेट्नुहोस् :pageName',
+ 'pages_delete_draft' => 'मस्यौदा पाना मेट्नुहोस्',
+ 'pages_delete_success' => 'पाना मेटियो',
+ 'pages_delete_draft_success' => 'मस्यौदा पाना मेटियो',
+ 'pages_delete_warning_template' => 'यो पाना पुस्तक वा अध्यायको डिफल्ट पृष्ठ ढाँचाको रूपमा सक्रिय छ। यो पाना मेटिएपछि, ती पुस्तक वा अध्यायहरूमा डिफल्ट पृष्ठ ढाँचाको असाइनमेन्ट हट्नेछ।',
+ 'pages_delete_confirm' => 'के तपाईं यस पानालाई मेट्न चाहनुहुन्छ?',
+ 'pages_delete_draft_confirm' => 'के तपाईं मस्यौदा पानालाई मेट्न चाहनुहुन्छ?',
+ 'pages_editing_named' => 'पाना सम्पादन गर्दै :pageName',
+ 'pages_edit_draft_options' => 'मस्यौदा विकल्पहरू',
+ 'pages_edit_save_draft' => 'मस्यौदा बचत गर्नुहोस्',
+ 'pages_edit_draft' => 'पाना मस्यौदा सम्पादन गर्नुहोस्',
+ 'pages_editing_draft' => 'मस्यौदा सम्पादन गर्दै',
+ 'pages_editing_page' => 'पाना सम्पादन गर्दै',
+ 'pages_edit_draft_save_at' => 'मस्यौदा :time मा बचत गरिएको',
+ 'pages_edit_delete_draft' => 'मस्यौदा मेट्नुहोस्',
+ 'pages_edit_delete_draft_confirm' => 'के तपाईं आफ्नो मस्यौदा परिवर्तनहरू मेट्न चाहनुहुन्छ? सबै परिवर्तनहरू, अन्तिम पूर्ण बचतको पछि, हराउनेछन्।',
+ 'pages_edit_discard_draft' => 'मस्यौदा त्याग्नुहोस्',
+ 'pages_edit_switch_to_markdown' => 'Markdown सम्पादकमा स्विच गर्नुहोस्',
+ '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 मा स्विच गर्नुहोस्',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(बीटा परीक्षणमा)',
+ 'pages_edit_set_changelog' => 'चेंजलग सेट गर्नुहोस्',
+ 'pages_edit_enter_changelog_desc' => 'तपाईंले गरेका परिवर्तनहरूको छोटो विवरण लेख्नुहोस्',
+ 'pages_edit_enter_changelog' => 'चेंजलग लेख्नुहोस्',
+ 'pages_editor_switch_title' => 'संपादक स्विच गर्नुहोस्',
+ 'pages_editor_switch_are_you_sure' => 'के तपाईं पक्का हुनुहुन्छ कि तपाईं यस पानाको सम्पादक परिवर्तन गर्न चाहनुहुन्छ?',
+ 'pages_editor_switch_consider_following' => 'सम्पादक परिवर्तन गर्दा निम्न कुरा ध्यानमा राख्नुहोस्:',
+ 'pages_editor_switch_consideration_a' => 'एकपटक बचत भएपछि, नयाँ सम्पादक विकल्प भविष्यका सम्पादकहरूमा प्रयोग हुनेछ, जसमा त्यस्ता सम्पादकहरू पनि समावेश छन् जुन आफूले सम्पादकको प्रकार परिवर्तन गर्न सक्षम छैनन्।',
+ 'pages_editor_switch_consideration_b' => 'यसले केही परिस्थितिहरूमा विवरण र सिन्ट्याक्सको हानि हुन सक्छ।',
+ 'pages_editor_switch_consideration_c' => 'ट्याग वा चेंजलग परिवर्तनहरू, अन्तिम बचत पछि, यो परिवर्तनमा कायम रहनेछैन।',
+ 'pages_save' => 'पाना बचत गर्नुहोस्',
+ 'pages_title' => 'पाना शीर्षक',
+ 'pages_name' => 'पाना नाम',
+ 'pages_md_editor' => 'संपादक',
+ 'pages_md_preview' => 'पूर्वावलोकन',
+ 'pages_md_insert_image' => 'छवि समावेश गर्नुहोस्',
+ 'pages_md_insert_link' => 'संगठन लिंक समावेश गर्नुहोस्',
+ 'pages_md_insert_drawing' => 'चित्र समावेश गर्नुहोस्',
+ 'pages_md_show_preview' => 'पूर्वावलोकन देखाउनुहोस्',
+ 'pages_md_sync_scroll' => 'पूर्वावलोकन स्क्रोल सिंक गर्नुहोस्',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'असुरक्षित चित्र भेटियो',
+ 'pages_drawing_unsaved_confirm' => 'अघिल्लो असफल चित्र बचत प्रयासबाट असुरक्षित चित्र डेटा भेटिएको छ। के तपाईं यस असुरक्षित चित्रलाई पुनर्स्थापना गरेर सम्पादन गर्न चाहनुहुन्छ?',
+ 'pages_not_in_chapter' => 'पाना कुनै अध्यायमा छैन',
+ 'pages_move' => 'पाना सार्नुहोस्',
+ 'pages_copy' => 'पाना प्रतिलिपि गर्नुहोस्',
+ 'pages_copy_desination' => 'प्रतिलिपि गन्तव्य',
+ 'pages_copy_success' => 'पाना सफलतापूर्वक प्रतिलिपि गरियो',
+ 'pages_permissions' => 'पाना अनुमतिहरू',
+ 'pages_permissions_success' => 'पाना अनुमतिहरू अद्यावधिक गरिएका',
+ 'pages_revision' => 'संशोधन',
+ 'pages_revisions' => 'पाना संशोधनहरू',
+ 'pages_revisions_desc' => 'तल सूचीबद्ध गरिएको छ यो पानाका सबै पुराना संशोधनहरू। तपाईं पुराना पृष्ठ संस्करणहरू फर्केर हेर्न, तुलना गर्न र पुनर्स्थापना गर्न सक्नुहुन्छ, यदि अनुमतिहरूले अनुमति दिएको छ भने। प्रणाली कन्फिगरेसनको आधारमा पुराना संशोधनहरू स्वचालित रूपमा मेटिने हुन सक्छ।',
+ 'pages_revisions_named' => ':pageName का पाना संशोधनहरू',
+ 'pages_revision_named' => ':pageName का पाना संशोधन',
+ 'pages_revision_restored_from' => 'पुनर्स्थापित गरिएको #:id; :summary',
+ 'pages_revisions_created_by' => 'द्वारा सिर्जना गरिएको',
+ 'pages_revisions_date' => 'संशोधन मिति',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'संशोधन संख्या',
+ 'pages_revisions_numbered' => 'संशोधन #:id',
+ 'pages_revisions_numbered_changes' => 'संशोधन #:id परिवर्तनहरू',
+ 'pages_revisions_editor' => 'संपादक प्रकार',
+ 'pages_revisions_changelog' => 'चेंजलग',
+ 'pages_revisions_changes' => 'परिवर्तनहरू',
+ 'pages_revisions_current' => 'हालको संस्करण:',
+ 'pages_revisions_preview' => 'पूर्वावलोकन गर्नुहोस्',
+ 'pages_revisions_restore' => 'पुनर्स्थापित गर्नुहोस्',
+ 'pages_revisions_none' => 'यस पानामा कुनै संशोधन छैन',
+ 'pages_copy_link' => 'लिंक प्रतिलिपि गर्नुहोस्',
+ 'pages_edit_content_link' => 'संपादकमा खण्डमा जानुहोस्',
+ 'pages_pointer_enter_mode' => 'खण्ड चयन मोडमा जानुहोस्',
+ 'pages_pointer_label' => 'पाना खण्ड विकल्पहरू',
+ 'pages_pointer_permalink' => 'पाना खण्ड स्थायी लिंक',
+ 'pages_pointer_include_tag' => 'पाना खण्ड समावेश ट्याग',
+ 'pages_pointer_toggle_link' => 'स्थायी लिंक मोड, समावेश ट्याग देखाउनका लागि थिच्नुहोस्',
+ 'pages_pointer_toggle_include' => 'समावेश ट्याग मोड, स्थायी लिंक देखाउनका लागि थिच्नुहोस्',
+ 'pages_permissions_active' => 'पाना अनुमतिहरू सक्रिय छन्',
+ 'pages_initial_revision' => 'प्रारम्भिक प्रकाशन',
+ 'pages_references_update_revision' => 'आन्तरिक लिंकहरूको प्रणाली स्वचालित अद्यावधिक',
+ 'pages_initial_name' => 'नयाँ पाना',
+ 'pages_editing_draft_notification' => 'तपाईं हाल एक मस्यौदा सम्पादन गर्दै हुनुहुन्छ जुन अन्तिम पटक :timeDiff मा बचत गरिएको थियो।',
+ 'pages_draft_edited_notification' => 'यो पाना त्यस समय पछि अद्यावधिक गरिएको छ। यस मस्यौदालाई त्याग्नु उचित हुनेछ।',
+ 'pages_draft_page_changed_since_creation' => 'यो पाना मस्यौदा सिर्जना भएपछि अद्यावधिक गरिएको छ। यस मस्यौदालाई त्याग्नुपर्छ वा कुनै पाना परिवर्तनहरू मेटिन नदिनुहोस्।',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count प्रयोगकर्ताले यस पानालाई सम्पादन सुरु गरेका छन्',
+ 'start_b' => ':userName ले यस पानालाई सम्पादन सुरु गरेका छन्',
+ 'time_a' => 'पृष्ठ अन्तिम पटक अद्यावधिक भएको समयदेखि',
+ 'time_b' => ':minCount मिनेटहरूको भित्र',
+ 'message' => ':start :time। कृपया एकअर्काका अपडेटहरू मेट्नुहोस्!',
+ ],
+ 'pages_draft_discarded' => 'मस्यौदा त्यागियो! सम्पादक वर्तमान पाना सामग्रीसँग अद्यावधिक गरिएको छ',
+ 'pages_draft_deleted' => 'मस्यौदा मेटियो! सम्पादक वर्तमान पाना सामग्रीसँग अद्यावधिक गरिएको छ',
+ 'pages_specific' => 'विशिष्ट पाना',
+ 'pages_is_template' => 'पाना ढांचा',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'साइडबार टगल गर्नुहोस्',
+ 'page_tags' => 'पाना ट्यागहरू',
+ 'chapter_tags' => 'अध्याय ट्यागहरू',
+ 'book_tags' => 'पुस्तक ट्यागहरू',
+ 'shelf_tags' => 'शेल्फ ट्यागहरू',
+ 'tag' => 'ट्याग',
+ 'tags' => 'ट्यागहरू',
+ 'tags_index_desc' => 'ट्यागहरू सिस्टममा सामग्रीसँग लचिलो प्रकारको वर्गीकरण लागू गर्न प्रयोग गर्न सकिन्छ। ट्यागहरूमा किम्बो मान र मान हो सक्छ, जसले वैकल्पिक हुन्छ। एकपटक लागू भए पछि, सामग्रीलाई ट्यागको नाम र मान प्रयोग गरेर खोजी गर्न सकिन्छ।',
+ 'tag_name' => 'ट्याग नाम',
+ 'tag_value' => 'ट्याग मान (वैकल्पिक)',
+ 'tags_explain' => "आफ्नो सामग्रीलाई राम्रोसँग वर्गीकरण गर्न केही ट्यागहरू थप्नुहोस्। \n तपाई थप संगठनको लागि ट्यागको मान पनि असाइन गर्न सक्नुहुन्छ।",
+ 'tags_add' => 'अर्को ट्याग थप्नुहोस्',
+ 'tags_remove' => 'यो ट्याग हटाउनुहोस्',
+ 'tags_usages' => 'कुल ट्याग प्रयोगहरू',
+ 'tags_assigned_pages' => 'पानामा असाइन गरिएको',
+ 'tags_assigned_chapters' => 'अध्यायहरूमा असाइन गरिएको',
+ 'tags_assigned_books' => 'पुस्तकहरूमा असाइन गरिएको',
+ 'tags_assigned_shelves' => 'शेल्फहरूमा असाइन गरिएको',
+ 'tags_x_unique_values' => ':count अनन्य मानहरू',
+ 'tags_all_values' => 'सबै मानहरू',
+ 'tags_view_tags' => 'ट्यागहरू हेर्नुहोस्',
+ 'tags_view_existing_tags' => 'अस्तित्वमा रहेका ट्यागहरू हेर्नुहोस्',
+ 'tags_list_empty_hint' => 'ट्यागहरू पृष्ठ सम्पादक साइडबार वा पुस्तक, अध्याय वा शेल्फको विवरण सम्पादन गर्दा असाइन गर्न सकिन्छ।',
+ 'attachments' => 'जोडिएका फाइलहरू',
+ 'attachments_explain' => 'केही फाइलहरू अपलोड गर्नुहोस् वा केही लिङ्कहरू जोड्नुहोस् जसलाई तपाईंको पानामा देखाउन चाहनुहुन्छ। यी पृष्ठ साइडबारमा देखिनेछन्।',
+ 'attachments_explain_instant_save' => 'यहाँका परिवर्तनहरू तुरुन्तै बचत हुन्छन्।',
+ 'attachments_upload' => 'फाइल अपलोड गर्नुहोस्',
+ 'attachments_link' => 'लिङ्क जोड्नुहोस्',
+ 'attachments_upload_drop' => 'वैकल्पिक रूपमा तपाईं यहाँ एक फाइल ड्र्याग र ड्रप गरेर अपलोड गर्न सक्नुहुन्छ।',
+ 'attachments_set_link' => 'लिङ्क सेट गर्नुहोस्',
+ 'attachments_delete' => 'के तपाईं यो जोडिएको फाइल मेट्न चाहनुहुन्छ?',
+ 'attachments_dropzone' => 'यहाँ फाइलहरू ड्र्याग गर्न र अपलोड गर्नको लागि ड्रप गर्नुहोस्',
+ 'attachments_no_files' => 'कुनै फाइलहरू अपलोड गरिएको छैन',
+ 'attachments_explain_link' => 'यदि तपाईंले कुनै फाइल अपलोड नगरीकन लिङ्क जोड्न चाहनुहुन्छ भने, तपाईं यसलाई थप्न सक्नुहुन्छ। यो अर्को पृष्ठको लिङ्क वा क्लाउडमा राखिएको फाइलको लिङ्क हुन सक्छ।',
+ 'attachments_link_name' => 'लिङ्कको नाम',
+ 'attachment_link' => 'जोडिएको फाइल लिङ्क',
+ 'attachments_link_url' => 'फाइलको लिङ्क',
+ 'attachments_link_url_hint' => 'साइट वा फाइलको URL',
+ 'attach' => 'जोड्नुहोस्',
+ 'attachments_insert_link' => 'पृष्ठमा जोडिएको फाइलको लिङ्क थप्नुहोस्',
+ 'attachments_edit_file' => 'फाइल सम्पादन गर्नुहोस्',
+ 'attachments_edit_file_name' => 'फाइलको नाम',
+ 'attachments_edit_drop_upload' => 'फाइलहरू ड्र्याग गर्नुहोस् वा यहाँ क्लिक गरेर अपलोड र ओभरराइट गर्नुहोस्',
+ 'attachments_order_updated' => 'जोडिएको फाइलहरूको क्रम अद्यावधिक गरियो',
+ 'attachments_updated_success' => 'जोडिएको फाइलको विवरण अद्यावधिक गरियो',
+ 'attachments_deleted' => 'जोडिएको फाइल मेटियो',
+ 'attachments_file_uploaded' => 'फाइल सफलतापूर्वक अपलोड गरिएको',
+ 'attachments_file_updated' => 'फाइल सफलतापूर्वक अद्यावधिक गरिएको',
+ 'attachments_link_attached' => 'लिङ्क सफलतापूर्वक पृष्ठसँग जोडिएको',
+ 'templates' => 'ढाँचाहरू',
+ 'templates_set_as_template' => 'पाना ढाँचाको रूपमा सेट गर्नुहोस्',
+ 'templates_explain_set_as_template' => 'तपाईं यस पानालाई ढाँचाको रूपमा सेट गर्न सक्नुहुन्छ ताकि यसको सामग्रीलाई अन्य पानाहरू सिर्जना गर्दा प्रयोग गर्न सकिन्छ। अन्य प्रयोगकर्ताहरू यस ढाँचालाई तब मात्र प्रयोग गर्न सक्छन् जब उनीहरूलाई यस पानाको भ्यू अनुमति छ।',
+ 'templates_replace_content' => 'पाना सामग्री प्रतिस्थापन गर्नुहोस्',
+ 'templates_append_content' => 'पाना सामग्रीमा थप्नुहोस्',
+ 'templates_prepend_content' => 'पाना सामग्री अगाडि थप्नुहोस्',
+
+ // Profile View
+ 'profile_user_for_x' => ':time का लागि प्रयोगकर्ता',
+ 'profile_created_content' => 'सिर्जना गरिएको सामग्री',
+ 'profile_not_created_pages' => ':userName ले कुनै पानाहरू सिर्जना गरेका छैनन्',
+ 'profile_not_created_chapters' => ':userName ले कुनै अध्यायहरू सिर्जना गरेका छैनन्',
+ 'profile_not_created_books' => ':userName ले कुनै पुस्तकहरू सिर्जना गरेका छैनन्',
+ 'profile_not_created_shelves' => ':userName ले कुनै शेल्फहरू सिर्जना गरेका छैनन्',
+
+ // Comments
+ 'comment' => 'टिप्पणी',
+ 'comments' => 'टिप्पणीहरू',
+ 'comment_add' => 'टिप्पणी थप्नुहोस्',
+ 'comment_none' => 'प्रदर्शन गर्न कुनै टिप्पणी छैन',
+ 'comment_placeholder' => 'यहाँ टिप्पणी छोड्नुहोस्',
+ 'comment_thread_count' => 'टिप्पणीहरू',
+ 'comment_archived_count' => ':count पुरानो',
+ 'comment_archived_threads' => 'पुरानो थ्रेडहरू',
+ 'comment_save' => 'टिप्पणी सेभ गर्नुहोस्',
+ 'comment_new' => 'नयाँ टिप्पणी',
+ 'comment_created' => ':createDiff मा टिप्पणी गरियो',
+ 'comment_updated' => ':updateDiff मा :username द्वारा अद्यावधिक गरिएको',
+ 'comment_updated_indicator' => 'अद्यावधिक गरिएको',
+ 'comment_deleted_success' => 'टिप्पणी मेटियो',
+ 'comment_created_success' => 'टिप्पणी थपियो',
+ 'comment_updated_success' => 'टिप्पणी अद्यावधिक गरियो',
+ 'comment_archive_success' => 'टिप्पणी पुरानो गरियो',
+ 'comment_unarchive_success' => 'टिप्पणी पुनः सक्रिय गरियो',
+ 'comment_view' => 'टिप्पणी हेर्नुहोस्',
+ 'comment_jump_to_thread' => 'थ्रेडमा जानुहोस्',
+ 'comment_delete_confirm' => 'के तपाईं यस टिप्पणीलाई मेट्न चाहनुहुन्छ?',
+ 'comment_in_reply_to' => ':commentId को जवाफमा',
+ 'comment_reference' => 'सन्दर्भ',
+ 'comment_reference_outdated' => '(अप्रचलित)',
+ 'comment_editor_explain' => 'यहाँ पृष्ठमा छोडिएका टिप्पणीहरू छन्। बचत गरिएको पृष्ठ हेरिरहँदा टिप्पणीहरू थप्न र व्यवस्थापन गर्न सकिन्छ।',
+
+ // Revision
+ 'revision_delete_confirm' => 'के तपाईं यस संशोधनलाई मेट्न चाहनुहुन्छ?',
+ 'revision_restore_confirm' => 'के तपाईं यस संशोधनलाई पुनर्स्थापित गर्न चाहनुहुन्छ? हालको पृष्ठ सामग्री प्रतिस्थापित हुनेछ।',
+ 'revision_cannot_delete_latest' => 'अन्तिम संशोधन मेट्न सकिदैन।',
+
+ // Copy view
+ 'copy_consider' => 'कृपया सामग्री प्रतिलिपि गर्दा तलका कुराहरू विचार गर्नुहोस्।',
+ 'copy_consider_permissions' => 'कस्टम अनुमति सेटिङहरू प्रतिलिपि गरिने छैन।',
+ 'copy_consider_owner' => 'तपाईं सबै प्रतिलिपि गरिएका सामग्रीका मालिक बन्नुहुनेछ।',
+ 'copy_consider_images' => 'पृष्ठ चित्र फाइलहरू नक्कल गरिने छैनन् र मौलिक चित्रहरूले ती पृष्ठसँगको सम्बन्ध कायम राख्नेछन् जहाँ तिनीहरू पहिले अपलोड गरिएको थिए।',
+ 'copy_consider_attachments' => 'पृष्ठ जडानहरू प्रतिलिपि गरिने छैनन्।',
+ 'copy_consider_access' => 'स्थान, मालिक वा अनुमतिहरूको परिवर्तनले यस सामग्रीलाई पहिले पहुँच नभएका प्रयोगकर्ताहरूलाई उपलब्ध गराउन सक्छ।',
+
+ // Conversions
+ 'convert_to_shelf' => 'शेल्फमा रूपान्तरण गर्नुहोस्',
+ 'convert_to_shelf_contents_desc' => 'तपाईं यस पुस्तकलाई समान सामग्रीसँग नयाँ शेल्फमा रूपान्तरण गर्न सक्नुहुन्छ। यस पुस्तकमा भएका अध्यायहरू नयाँ पुस्तकहरूमा रूपान्तरण गरिनेछन्। यदि यस पुस्तकमा कुनै पृष्ठहरू छन् जुन कुनै अध्यायमा छैनन् भने, यस पुस्तकको नाम परिवर्तन गरिनेछ र ती पृष्ठहरू समावेश गरिनेछन्, र यस पुस्तकलाई नयाँ शेल्फको हिस्सा बनाइनेछ।',
+ 'convert_to_shelf_permissions_desc' => 'यस पुस्तकमा सेट गरिएका कुनै पनि अनुमतिहरू नयाँ शेल्फ र सबै नयाँ बाल पुस्तकहरूमा प्रतिलिपि गरिनेछन् जुन आफ्ना अनुमतिहरू लागू गरेका छैनन्। ध्यान दिनुहोस् कि शेल्फहरूमा अनुमतिहरू स्वत: सामग्रीमा लागू हुँदैनन्, जस्तै पुस्तकहरूमा।',
+ 'convert_book' => 'पुस्तक रूपान्तरण गर्नुहोस्',
+ 'convert_book_confirm' => 'के तपाईं पक्का हुनुहुन्छ कि तपाईं यस पुस्तकलाई रूपान्तरण गर्न चाहनुहुन्छ?',
+ 'convert_undo_warning' => 'यो सजिलै उल्टाउन सकिँदैन।',
+ 'convert_to_book' => 'पुस्तकमा रूपान्तरण गर्नुहोस्',
+ 'convert_to_book_desc' => 'तपाईं यस अध्यायलाई समान सामग्रीसँग नयाँ पुस्तकमा रूपान्तरण गर्न सक्नुहुन्छ। यस अध्यायमा सेट गरिएका कुनै पनि अनुमतिहरू नयाँ पुस्तकमा प्रतिलिपि गरिनेछन्, तर कुनै पनि पितृ पुस्तकबाट परिग्रहीत अनुमतिहरू प्रतिलिपि गरिने छैनन्, जसले पहुँच नियन्त्रणमा परिवर्तन ल्याउन सक्छ।',
+ 'convert_chapter' => 'अध्याय रूपान्तरण गर्नुहोस्',
+ 'convert_chapter_confirm' => 'के तपाईं पक्का हुनुहुन्छ कि तपाईं यस अध्यायलाई रूपान्तरण गर्न चाहनुहुन्छ?',
+
+ // References
+ 'references' => 'सन्दर्भहरू',
+ 'references_none' => 'यस वस्तुमा कुनै ट्र्याक गरिएको सन्दर्भहरू छैनन्।',
+ 'references_to_desc' => 'तल सूचीबद्ध गरिएको छ सबै जानिएको सामग्री प्रणालीमा जुन यस वस्तुसँग लिंक गरिएको छ।',
+
+ // Watch Options
+ 'watch' => 'हेर्नुहोस्',
+ 'watch_title_default' => 'पूर्वनिर्धारित प्राथमिकताहरू',
+ 'watch_desc_default' => 'हेर्नुहोस् केवल तपाईंका पूर्वनिर्धारित सूचनाको प्राथमिकताहरूमा फर्कनुहोस्।',
+ 'watch_title_ignore' => 'बेवास्ता गर्नुहोस्',
+ 'watch_desc_ignore' => 'सभी सूचनाहरू बेवास्ता गर्नुहोस्, प्रयोगकर्ता-स्तरका प्राथमिकताहरू सहित।',
+ 'watch_title_new' => 'नयाँ पृष्ठहरू',
+ 'watch_desc_new' => 'जब यस वस्तुमा कुनै नयाँ पृष्ठ सिर्जना गरिन्छ भने सूचित गर्नुहोस्।',
+ 'watch_title_updates' => 'सभी पृष्ठ अपडेटहरू',
+ 'watch_desc_updates' => 'सभी नयाँ पृष्ठ र पृष्ठ परिवर्तनहरूमा सूचित गर्नुहोस्।',
+ 'watch_desc_updates_page' => 'सभी पृष्ठ परिवर्तनहरूमा सूचित गर्नुहोस्।',
+ 'watch_title_comments' => 'सभी पृष्ठ अपडेटहरू र टिप्पणियाँ',
+ 'watch_desc_comments' => 'सभी नयाँ पृष्ठहरू, पृष्ठ परिवर्तनहरू र नयाँ टिप्पणीहरूमा सूचित गर्नुहोस्।',
+ 'watch_desc_comments_page' => 'पृष्ठ परिवर्तनहरू र नयाँ टिप्पणीहरूमा सूचित गर्नुहोस्।',
+ 'watch_change_default' => 'पूर्वनिर्धारित सूचनाका प्राथमिकताहरू परिवर्तन गर्नुहोस्',
+ 'watch_detail_ignore' => 'सूचनाहरू बेवास्ता गर्दै',
+ 'watch_detail_new' => 'नयाँ पृष्ठहरू हेर्नुहोस्',
+ 'watch_detail_updates' => 'नयाँ पृष्ठहरू र अपडेटहरू हेर्नुहोस्',
+ 'watch_detail_comments' => 'नयाँ पृष्ठहरू, अपडेटहरू र टिप्पणीहरू हेर्नुहोस्',
+ 'watch_detail_parent_book' => 'पितृ पुस्तक मार्फत हेर्नुहोस्',
+ 'watch_detail_parent_book_ignore' => 'पितृ पुस्तक मार्फत बेवास्ता गर्दै',
+ 'watch_detail_parent_chapter' => 'पितृ अध्याय मार्फत हेर्नुहोस्',
+ 'watch_detail_parent_chapter_ignore' => 'पितृ अध्याय मार्फत बेवास्ता गर्दै',
+];
diff --git a/lang/ne/errors.php b/lang/ne/errors.php
new file mode 100644
index 00000000000..d221f610434
--- /dev/null
+++ b/lang/ne/errors.php
@@ -0,0 +1,135 @@
+ 'तपाईंले अनुरोध गरिएको पाना पहुँच गर्नको लागि अनुमति प्राप्त गर्नुभएको छैन।',
+ 'permissionJson' => 'तपाईंले अनुरोध गरिएको क्रियाकलाप गर्नको लागि अनुमति प्राप्त गर्नुभएको छैन।',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'इमेल :email संग पहिले नै प्रयोगकर्ता अस्तित्वमा छ तर फरक प्रमाणपत्रहरूका साथ।',
+ 'auth_pre_register_theme_prevention' => 'प्रदत्त विवरणका लागि प्रयोगकर्ता खाता दर्ता गर्न सकिएन।',
+ 'email_already_confirmed' => 'इमेल पहिले नै प्रमाणित भइसकेको छ, कृपया लगइन प्रयास गर्नुहोस्।',
+ 'email_confirmation_invalid' => 'यो पुष्टि टोकन अवैध छ वा पहिले नै प्रयोग भइसकेको छ, कृपया पुनः दर्ता प्रयास गर्नुहोस्।',
+ 'email_confirmation_expired' => 'पुष्टि टोकन समाप्त भइसकेको छ, नयाँ पुष्टि इमेल पठाइएको छ।',
+ 'email_confirmation_awaiting' => 'यो खाताको इमेल ठेगाना प्रमाणित गर्न बाँकी छ।',
+ 'ldap_fail_anonymous' => 'LDAP पहुँच अज्ञात बाइन्ड प्रयोग गरेर असफल भएको छ।',
+ 'ldap_fail_authed' => 'LDAP पहुँच निर्दिष्ट dn र पासवर्ड विवरण प्रयोग गरेर असफल भएको छ।',
+ 'ldap_extension_not_installed' => 'LDAP PHP एक्स्टेन्सन इन्स्टल गरिएको छैन।',
+ 'ldap_cannot_connect' => 'LDAP सर्भरमा जडान गर्न सकिएन, आरम्भिक जडान असफल भएको छ।',
+ 'saml_already_logged_in' => 'पहिले नै लगइन हुनुहुन्छ।',
+ 'saml_no_email_address' => 'बाह्य प्रमाणीकरण प्रणालीले प्रदान गरेको डाटामा यस प्रयोगकर्ताको इमेल ठेगाना भेट्न सकिएन।',
+ 'saml_invalid_response_id' => 'बाह्य प्रमाणीकरण प्रणालीबाट आएको अनुरोध यस एप्लिकेशनद्वारा सुरु गरिएको प्रक्रिया द्वारा मान्यता प्राप्त छैन। लगइन पछि फर्किने प्रयास गर्दा यो समस्या उत्पन्न हुन सक्छ।',
+ 'saml_fail_authed' => ':system प्रयोग गरेर लगइन असफल भएको छ, प्रणालीले सफल प्रमाणिकरण प्रदान गरेको छैन।',
+ 'oidc_already_logged_in' => 'पहिले नै लगइन हुनुहुन्छ।',
+ 'oidc_no_email_address' => 'बाह्य प्रमाणीकरण प्रणालीले प्रदान गरेको डाटामा यस प्रयोगकर्ताको इमेल ठेगाना भेट्न सकिएन।',
+ 'oidc_fail_authed' => ':system प्रयोग गरेर लगइन असफल भएको छ, प्रणालीले सफल प्रमाणिकरण प्रदान गरेको छैन।',
+ 'social_no_action_defined' => 'कोई क्रियाकलाप परिभाषित गरिएको छैन।',
+ 'social_login_bad_response' => ":socialAccount लगइनको समयमा त्रुटि प्राप्त: \n:error",
+ 'social_account_in_use' => 'यो :socialAccount खाता पहिले नै प्रयोगमा छ, कृपया :socialAccount विकल्प मार्फत लगइन प्रयास गर्नुहोस्।',
+ 'social_account_email_in_use' => 'इमेल :email पहिले नै प्रयोगमा छ। यदि तपाईंको खाता छ भने, तपाईं आफ्नो प्रोफाइल सेटिङमा :socialAccount खाता जडान गर्न सक्नुहुन्छ।',
+ 'social_account_existing' => 'यो :socialAccount तपाईंको प्रोफाइलसँग पहिले नै जडान गरिएको छ।',
+ 'social_account_already_used_existing' => 'यो :socialAccount खाता पहिले नै अर्को प्रयोगकर्ताद्वारा प्रयोगमा छ।',
+ 'social_account_not_used' => 'यो :socialAccount खाता कुनै प्रयोगकर्तासँग जडान गरिएको छैन। कृपया यसलाई आफ्नो प्रोफाइल सेटिङमा जडान गर्नुहोस्।',
+ 'social_account_register_instructions' => 'यदि तपाईंको खाता छैन भने, तपाईं :socialAccount विकल्प प्रयोग गरेर खाता दर्ता गर्न सक्नुहुन्छ।',
+ 'social_driver_not_found' => 'सामाजिक ड्राइभर फेला पारिएको छैन।',
+ 'social_driver_not_configured' => 'तपाईंको :socialAccount सामाजिक सेटिङ सही तरिकाले कन्फिगर गरिएको छैन।',
+ 'invite_token_expired' => 'यो निमन्त्रणा लिंक समाप्त भइसकेको छ। तपाईं सट्टा आफ्नो खाता पासवर्ड रिसेट गर्न प्रयास गर्न सक्नुहुन्छ।',
+ 'login_user_not_found' => 'यो क्रियाकलापका लागि प्रयोगकर्ता फेला पारिएको छैन।',
+
+ // System
+ 'path_not_writable' => 'फाइल पथ :filePath मा अपलोड गर्न सकिएन। कृपया यो पथ सर्भरमा लेख्न योग्य बनाउन सुनिश्चित गर्नुहोस्।',
+ 'cannot_get_image_from_url' => ':url बाट चित्र प्राप्त गर्न सकिएन।',
+ 'cannot_create_thumbs' => 'सर्भरले थम्बनेल बनाउन सक्दैन। कृपया तपाईंको सिस्टममा GD PHP एक्स्टेन्सन इन्स्टल गरिएको छ भनेर जाँच गर्नुहोस्।',
+ 'server_upload_limit' => 'सर्भरले यस आकारको अपलोड अनुमति दिंदैन। कृपया सानो फाइल आकारको प्रयास गर्नुहोस्।',
+ 'server_post_limit' => 'सर्भरले दिएको डेटा आकार प्राप्त गर्न सक्दैन। कृपया कम डेटा वा सानो फाइलको प्रयास गर्नुहोस्।',
+ 'uploaded' => 'सर्भरले यस आकारको अपलोड अनुमति दिंदैन। कृपया सानो फाइल आकारको प्रयास गर्नुहोस्।',
+
+ // Drawing & Images
+ 'image_upload_error' => 'चित्र अपलोड गर्दा त्रुटि भयो।',
+ 'image_upload_type_error' => 'अपलोड गरिएको चित्र प्रकार अवैध छ।',
+ 'image_upload_replace_type' => 'चित्र फाइल प्रतिस्थापनहरू समान प्रकारका हुनुपर्छ।',
+ 'image_upload_memory_limit' => 'चित्र अपलोड गर्न र/वा थम्बनेल बनाउन असफल भएको छ, यो प्रणाली संसाधन सीमाहरूको कारणले हो।',
+ 'image_thumbnail_memory_limit' => 'चित्रको आकार भिन्नताहरू बनाउन असफल भएको छ, यो प्रणाली संसाधन सीमाहरूको कारणले हो।',
+ 'image_gallery_thumbnail_memory_limit' => 'ग्यालरी थम्बनेल बनाउन असफल भएको छ, यो प्रणाली संसाधन सीमाहरूको कारणले हो।',
+ 'drawing_data_not_found' => 'चित्रको डाटा लोड गर्न सकिएन। चित्र फाइल अब अस्तित्वमा नभएको हुन सक्छ वा तपाईंलाई यसमा पहुँचको अनुमति नहुन सक्छ।',
+
+ // Attachments
+ 'attachment_not_found' => 'जोडिएको फाइल फेला परेन।',
+ 'attachment_upload_error' => 'जोडिएको फाइल अपलोड गर्दा त्रुटि भयो।',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'ड्राफ्ट बचत गर्न असफल भयो। यो पाना बचत गर्नु अघि कृपया इन्टरनेट जडान सुनिश्चित गर्नुहोस्।',
+ 'page_draft_delete_fail' => 'पाना ड्राफ्ट मेटाउन र वर्तमान पाना सामग्री ल्याउन असफल भयो।',
+ 'page_custom_home_deletion' => 'एक पाना लाई होमपाना को रूपमा सेट गर्दा मेटाउन सकिँदैन।',
+
+ // Entities
+ 'entity_not_found' => 'इकाई फेला परेन।',
+ 'bookshelf_not_found' => 'शेल्फ फेला परेन।',
+ 'book_not_found' => 'पुस्तक फेला परेन।',
+ 'page_not_found' => 'पाना फेला परेन।',
+ 'chapter_not_found' => 'अध्याय फेला परेन।',
+ 'selected_book_not_found' => 'चयन गरिएको पुस्तक फेला परेन।',
+ 'selected_book_chapter_not_found' => 'चयन गरिएको पुस्तक वा अध्याय फेला परेन।',
+ 'guests_cannot_save_drafts' => 'अतिथिहरू ड्राफ्टहरू बचत गर्न सक्दैनन्।',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'तपाईं केवल व्यवस्थापक भएको प्रयोगकर्तालाई मेटाउन सक्दैनौं।',
+ 'users_cannot_delete_guest' => 'तपाईं अतिथि प्रयोगकर्तालाई मेटाउन सक्दैनौं।',
+ 'users_could_not_send_invite' => 'प्रयोगकर्ता सिर्जना गर्न सकिएन, निमन्त्रणा इमेल पठाउन असफल भयो।',
+
+ // Roles
+ 'role_cannot_be_edited' => 'यो भूमिका सम्पादन गर्न सकिँदैन।',
+ 'role_system_cannot_be_deleted' => 'यो भूमिका एक प्रणाली भूमिका हो र मेटाउन सकिँदैन।',
+ 'role_registration_default_cannot_delete' => 'यो भूमिका दर्ता गरेको डिफल्ट भूमिका भएकोले मेटाउन सकिँदैन।',
+ 'role_cannot_remove_only_admin' => 'यो प्रयोगकर्ता व्यवस्थापक भूमिकामा मात्र एकमात्र प्रयोगकर्ता हो। यसलाई हटाउन प्रयास गर्नु अघि अर्को प्रयोगकर्तालाई व्यवस्थापक भूमिका दिनुहोस्।',
+
+ // Comments
+ 'comment_list' => 'टिप्पणीहरू प्राप्त गर्दा त्रुटि भयो।',
+ 'cannot_add_comment_to_draft' => 'तपाईं ड्राफ्टमा टिप्पणी थप्न सक्नुहुन्न।',
+ 'comment_add' => 'टिप्पणी थप्दा / अद्यावधिक गर्दा त्रुटि भयो।',
+ 'comment_delete' => 'टिप्पणी मेट्दा त्रुटि भयो।',
+ 'empty_comment' => 'खाली टिप्पणी थप्न सकिँदैन।',
+
+ // Error pages
+ '404_page_not_found' => 'पाना फेला परेन।',
+ 'sorry_page_not_found' => 'माफ गर्नुहोस्, तपाईंले खोज्नुभएको पाना फेला परेन।',
+ 'sorry_page_not_found_permission_warning' => 'यदि तपाईंलाई यो पाना अस्तित्वमा हुनु पर्ने आशा थियो भने, तपाईंलाई यसलाई हेर्न अनुमति नहुन सक्छ।',
+ 'image_not_found' => 'चित्र फेला परेन।',
+ 'image_not_found_subtitle' => 'माफ गर्नुहोस्, तपाईंले खोज्नुभएको चित्र फाइल फेला परेन।',
+ 'image_not_found_details' => 'यदि तपाईंले यो चित्र फेला पार्नु पर्ने आशा राख्नु भएको थियो भने, यो मेटिएको हुन सक्छ।',
+ 'return_home' => 'गृहपृष्ठमा फर्कनुहोस्',
+ 'error_occurred' => 'एउटा त्रुटि भयो।',
+ 'app_down' => ':appName अहिले डाउन छ।',
+ 'back_soon' => 'यो चाँडै पुनः सक्रिय हुनेछ।',
+
+ // Import
+ 'import_zip_cant_read' => 'ZIP फाइल पढ्न सकिएन।',
+ 'import_zip_cant_decode_data' => 'ZIP डाटा.json सामग्री पत्ता लाग्न र डिकोड गर्न सकिएन।',
+ 'import_zip_no_data' => 'ZIP फाइल डाटामा अपेक्षित पुस्तक, अध्याय वा पाना सामग्री छैन।',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'आयात ZIP प्रमाणीकरण असफल भयो। त्रुटिहरू छन्:',
+ 'import_zip_failed_notification' => 'ZIP फाइल आयात गर्न असफल भयो।',
+ 'import_perms_books' => 'तपाईंलाई पुस्तकहरू सिर्जना गर्न आवश्यक अनुमति छैन।',
+ 'import_perms_chapters' => 'तपाईंलाई अध्यायहरू सिर्जना गर्न आवश्यक अनुमति छैन।',
+ 'import_perms_pages' => 'तपाईंलाई पाना सिर्जना गर्न आवश्यक अनुमति छैन।',
+ 'import_perms_images' => 'तपाईंलाई चित्रहरू सिर्जना गर्न आवश्यक अनुमति छैन।',
+ 'import_perms_attachments' => 'तपाईंलाई अनुलग्नकहरू सिर्जना गर्न आवश्यक अनुमति छैन।',
+
+ // API errors
+ 'api_no_authorization_found' => 'अनुरोधमा कुनै प्रमाणीकरण टोकन फेला परेन।',
+ 'api_bad_authorization_format' => 'अनुरोधमा प्रमाणीकरण टोकन फेला परे तापनि यसको ढाँचा गलत देखिन्छ।',
+ 'api_user_token_not_found' => 'दिएको प्रमाणीकरण टोकनको लागि मिल्दो API टोकन फेला परेन।',
+ 'api_incorrect_token_secret' => 'दिइएको API टोकनको लागि प्रदान गरिएको गोप्य सही छैन।',
+ 'api_user_no_api_permission' => 'API टोकनको मालिकसँग API कल गर्ने अनुमति छैन।',
+ 'api_user_token_expired' => 'प्रमाणीकरण टोकन समाप्त भइसकेको छ।',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'टेस्ट इमेल पठाउँदा त्रुटि:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'URL कन्फिगर गरिएका अनुमत SSR होस्टसँग मेल खाँदैन।',
+];
diff --git a/lang/ne/notifications.php b/lang/ne/notifications.php
new file mode 100644
index 00000000000..a4eb6983262
--- /dev/null
+++ b/lang/ne/notifications.php
@@ -0,0 +1,29 @@
+ 'नयाँ टिप्पणी: :pageName पानामा',
+ 'new_comment_intro' => 'एक प्रयोगकर्ताले :appName मा रहेको पानामा टिप्पणी गरेका छन्:',
+ 'new_page_subject' => 'नयाँ पाना: :pageName',
+ 'new_page_intro' => ':appName मा नयाँ पाना बनाइएको छ',
+ 'updated_page_subject' => 'पाना अपडेट भयो: :pageName',
+ 'updated_page_intro' => ':appName मा पाना अपडेट गरिएको छ',
+ 'updated_page_debounce' => 'धेरै सूचना नपरोस् भनेर, केही समयको लागि एउटै सम्पादकबाट हुने थप सम्पादनहरूका सूचना तपाईंलाई पठाइने छैन।',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'पानाको नाम:',
+ 'detail_page_path' => 'पानाको स्थान:',
+ 'detail_commenter' => 'टिप्पणी गर्ने:',
+ 'detail_comment' => 'टिप्पणी:',
+ 'detail_created_by' => 'बनाउने व्यक्ति:',
+ 'detail_updated_by' => 'अपडेट गर्ने व्यक्ति:',
+
+ 'action_view_comment' => 'टिप्पणी हेर्नुहोस्',
+ 'action_view_page' => 'पाना हेर्नुहोस्',
+
+ 'footer_reason' => 'तपाईंलाई यो सूचना :link अनुसार पठाइएको हो, जुन यस प्रकारको गतिविधिमा लागु हुन्छ।',
+ 'footer_reason_link' => 'तपाईंको सूचना प्राथमिकता',
+];
diff --git a/lang/ne/pagination.php b/lang/ne/pagination.php
new file mode 100644
index 00000000000..3da50cb08d8
--- /dev/null
+++ b/lang/ne/pagination.php
@@ -0,0 +1,12 @@
+ '« अघिल्लो',
+ 'next' => 'अर्को »',
+
+];
diff --git a/lang/ne/passwords.php b/lang/ne/passwords.php
new file mode 100644
index 00000000000..684201a8e56
--- /dev/null
+++ b/lang/ne/passwords.php
@@ -0,0 +1,15 @@
+ 'पासवर्ड कम्तिमा ८ वर्णको हुनु पर्छ र दाेहाेर्याइएकाे पासवर्ड संग मेल खानु पर्छ।',
+ 'user' => "हामीले त्यो इमेल ठेगाना भएको प्रयोगकर्ता फेला पार्न सकेनौं।",
+ 'token' => 'यस इमेल ठेगानाको लागि पासवर्ड रिसेट टोकन अमान्य छ।',
+ 'sent' => 'हामीले तपाईंको पासवर्ड रिसेट लिङ्क इमेल गरेका छौं!',
+ 'reset' => 'पासवर्ड रिसेट भयो!',
+
+];
diff --git a/lang/ne/preferences.php b/lang/ne/preferences.php
new file mode 100644
index 00000000000..2efdafc9f5c
--- /dev/null
+++ b/lang/ne/preferences.php
@@ -0,0 +1,52 @@
+ 'मेरो खाता',
+
+ 'shortcuts' => 'सर्टकटहरू',
+ 'shortcuts_interface' => 'UI सर्टकट प्राथमिकताहरू',
+ 'shortcuts_toggle_desc' => 'यहाँ तपाईं किबोर्ड प्रणाली इन्टरफेस सर्टकटहरू सक्षम वा असक्षम गर्न सक्नुहुन्छ, जुन नेभिगेशन र क्रियाकलापहरूको लागि प्रयोग गरिन्छ।',
+ 'shortcuts_customize_desc' => 'तपाईं तलका प्रत्येक सर्टकटलाई अनुकूलित गर्न सक्नुहुन्छ। केवल सर्टकटको इनपुट चयन गरेपछि आफ्नो इच्छित कीबोर्ड संयोजन थिच्नुहोस्।',
+ 'shortcuts_toggle_label' => 'किबोर्ड सर्टकट सक्षम छ',
+ 'shortcuts_section_navigation' => 'नेभिगेशन',
+ 'shortcuts_section_actions' => 'साधारण क्रियाकलापहरू',
+ 'shortcuts_save' => 'सर्टकटहरू बचत गर्नुहोस्',
+ 'shortcuts_overlay_desc' => 'नोट: जब सर्टकटहरू सक्षम हुन्छन्, तब "?" थिचेर एक सहायक ओभरले देखाइन्छ जसले स्क्रीनमा हाल देखिएका क्रियाकलापहरूको लागि उपलब्ध सर्टकटहरू हाइलाइट गर्दछ।',
+ 'shortcuts_update_success' => 'सर्टकट प्राथमिकताहरू अपडेट गरिएका छन्!',
+ 'shortcuts_overview_desc' => 'प्रणाली प्रयोगकर्ता इन्टरफेसमा नेभिगेट गर्न तपाईंले प्रयोग गर्न सक्ने किबोर्ड सर्टकटहरू व्यवस्थापन गर्नुहोस्।',
+
+ 'notifications' => 'सूचना प्राथमिकताहरू',
+ 'notifications_desc' => 'प्रणालीमा केही क्रियाकलापहरू गर्दा तपाईंलाई प्राप्त हुने इमेल सूचनाहरू नियन्त्रण गर्नुहोस्।',
+ 'notifications_opt_own_page_changes' => 'मैले स्वामित्व राख्ने पृष्ठहरूमा परिवर्तन हुँदा सूचित गर्नुहोस्',
+ 'notifications_opt_own_page_comments' => 'मैले स्वामित्व राख्ने पृष्ठहरूमा टिप्पणी हुँदा सूचित गर्नुहोस्',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'मेरो टिप्पणीहरूमा उत्तर आएको बेला सूचित गर्नुहोस्',
+ 'notifications_save' => 'प्राथमिकताहरू बचत गर्नुहोस्',
+ 'notifications_update_success' => 'सूचना प्राथमिकताहरू अपडेट गरिएका छन्!',
+ 'notifications_watched' => 'हेर्ने र बेवास्ता गरिएका सामग्रीहरू',
+ 'notifications_watched_desc' => 'तल ती सामग्रीहरू छन् जसमा कस्टम वाच प्राथमिकताहरू लागू गरिएका छन्। यीलाई अपडेट गर्नको लागि सामग्री हेरेर, साइडबारमा वाच विकल्पहरू फेला पार्नुहोस्।',
+
+ 'auth' => 'प्रवेश र सुरक्षा',
+ 'auth_change_password' => 'पासवर्ड परिवर्तन गर्नुहोस्',
+ 'auth_change_password_desc' => 'तपाईंको एप्लिकेसनमा लगइन गर्न प्रयोग गरिने पासवर्ड परिवर्तन गर्नुहोस्। यो कम्तिमा ८ अक्षर लामो हुनुपर्छ।',
+ 'auth_change_password_success' => 'पासवर्ड अपडेट गरियो!',
+
+ 'profile' => 'प्रोफाइल विवरण',
+ 'profile_desc' => 'तपाईंको खाता विवरण व्यवस्थापन गर्नुहोस् जसले तपाईंलाई अन्य प्रयोगकर्ताहरूको लागि प्रतिनिधित्व गर्दछ, साथै सम्पर्क र प्रणाली अनुकूलनका लागि प्रयोग गरिने विवरणहरू।',
+ 'profile_view_public' => 'सार्वजनिक प्रोफाइल हेर्नुहोस्',
+ 'profile_name_desc' => 'तपाईंको प्रदर्शन नाम कन्फिगर गर्नुहोस् जुन प्रणालीमा अन्य प्रयोगकर्ताहरूलाई तपाईंको क्रियाकलाप र स्वामित्व भएको सामग्रीमार्फत देखिनेछ।',
+ 'profile_email_desc' => 'यो इमेल सूचनाहरूको लागि प्रयोग हुनेछ र, सक्रिय प्रणाली प्रमाणिकरणमा निर्भर गर्दै, प्रणाली प्रवेशको लागि पनि प्रयोग हुनेछ।',
+ 'profile_email_no_permission' => 'दुर्भाग्यवश तपाईंलाई तपाईंको इमेल ठेगाना परिवर्तन गर्ने अनुमति छैन। यदि तपाईं यसलाई परिवर्तन गर्न चाहनुहुन्छ भने, तपाईंलाई एक व्यवस्थापकलाई अनुरोध गर्नु पर्नेछ।',
+ 'profile_avatar_desc' => 'तपाईंको प्रतिनिधित्व गर्नको लागि एक छवि चयन गर्नुहोस् जुन प्रणालीमा अन्य प्रयोगकर्ताहरूलाई तपाईंको रूपमा देखाउनेछ। यस छविको आकार वर्गाकार र लगभग २५६px चौडाइ र उचाइ भएको हुनु पर्छ।',
+ 'profile_admin_options' => 'व्यवस्थापक विकल्पहरू',
+ 'profile_admin_options_desc' => 'अधिकार व्यवस्थापन जस्ता अतिरिक्त व्यवस्थापक-स्तरका विकल्पहरू तपाईंको प्रयोगकर्ता खाता "सेटिंग्स > प्रयोगकर्ताहरू" क्षेत्रमा फेला पार्न सकिन्छ।',
+
+ 'delete_account' => 'खाता मेटाउनुहोस्',
+ 'delete_my_account' => 'मेरो खाता मेटाउनुहोस्',
+ 'delete_my_account_desc' => 'यसले तपाईंको प्रयोगकर्ता खाता प्रणालीबाट पूर्ण रूपमा मेटाउनेछ। तपाईं यो खाता पुन: प्राप्त गर्न वा यो क्रियाकलापलाई फर्काउन सक्नुहुन्न। तपाईंले सिर्जना गरेको सामग्री, जस्तै सिर्जना गरिएका पृष्ठहरू र अपलोड गरिएका चित्रहरू, बाँकी रहनेछन्।',
+ 'delete_my_account_warning' => 'के तपाईं यो खाता मेटाउन निश्चित हुनुहुन्छ?',
+];
diff --git a/lang/ne/settings.php b/lang/ne/settings.php
new file mode 100644
index 00000000000..dbc7d8e9fc9
--- /dev/null
+++ b/lang/ne/settings.php
@@ -0,0 +1,374 @@
+ 'सेटिङ्ग',
+ 'settings_save' => 'सेटिङ्ग सुरक्षित गर्नुहोस्',
+ 'system_version' => 'सिस्टम संस्करण',
+ 'categories' => 'क्याटोगोरीहरु',
+
+ // App Settings
+ 'app_customization' => 'अनुकूलन',
+ 'app_features_security' => 'फिचरहरू र सुरक्षा',
+ 'app_name' => 'एप्लिकेसन नाम',
+ 'app_name_desc' => 'यो नाम हेडरमा र कुनै पनि प्रणालीले पठाएको इमेलमा देखाइनेछ।',
+ 'app_name_header' => 'हेडरमा नाम देखाउनुहोस्',
+ 'app_public_access' => 'सार्वजनिक पहुँच',
+ 'app_public_access_desc' => 'यो विकल्प सक्षम गर्दा, लगइन नगरेका आगन्तुकहरूले तपाईंको BookStack मा सामग्री पहुँच गर्न सक्नेछन्।',
+ 'app_public_access_desc_guest' => 'सार्वजनिक आगन्तुकहरूको पहुँच "Guest" प्रयोगकर्ताबाट नियन्त्रण गर्न सकिन्छ।',
+ 'app_public_access_toggle' => 'सार्वजनिक पहुँच अनुमति दिनुहोस्',
+ 'app_public_viewing' => 'सार्वजनिक हेर्न अनुमति दिनुहोस्?',
+ 'app_secure_images' => 'उच्च सुरक्षा छवि अपलोडहरू',
+ 'app_secure_images_toggle' => 'उच्च सुरक्षा छवि अपलोडहरू सक्षम गर्नुहोस्',
+ 'app_secure_images_desc' => 'प्रदर्शन कारणहरूका लागि, सबै छविहरू सार्वजनिक हुन्छन्। यो विकल्पले छवि URL अगाडि एउटा अनियमित, अनुमान गर्न गाह्रो स्ट्रिङ थप्छ। सजिलो पहुँच रोक्न निर्देशिका सूचीकरण निष्क्रिय गर्नुहोस्।',
+ 'app_default_editor' => 'डिफल्ट पृष्ठ सम्पादक',
+ 'app_default_editor_desc' => 'नयाँ पृष्ठ सम्पादन गर्दा डिफल्ट रूपमा प्रयोग हुने सम्पादक चयन गर्नुहोस्। अनुमति अनुसार पृष्ठ स्तरमा यो परिवर्तन गर्न सकिन्छ।',
+ 'app_custom_html' => 'कस्टम HTML हेड सामग्री',
+ 'app_custom_html_desc' => 'यहाँ थपिएको कुनै पनि सामग्री प्रत्येक पृष्ठको सेक्सनको तल्लो भागमा समावेश हुनेछ। स्टाइल ओभरराइड वा एनालिटिक्स कोड थप्न उपयोगी।',
+ 'app_custom_html_disabled_notice' => 'कस्टम HTML हेड सामग्री यस सेटिङ पृष्ठमा असक्षम गरिएको छ ताकि कुनै समस्या भएमा फर्काउन सकियोस्।',
+ 'app_logo' => 'एप्लिकेसन लोगो',
+ 'app_logo_desc' => 'यो एप्लिकेसन हेडर बार लगायत अन्य ठाउँहरूमा प्रयोग हुन्छ। यो छवि ८६px उचाइको हुनु पर्नेछ। ठूलो छविहरू सानो गरिनेछ।',
+ 'app_icon' => 'एप्लिकेसन आइकन',
+ 'app_icon_desc' => 'यो आइकन ब्राउजर ट्याब र छोटोमार्ग आइकनहरूका लागि प्रयोग हुन्छ। PNG २५६px वर्गाकार छवि हुनुपर्छ।',
+ 'app_homepage' => 'एप्लिकेसन होमपेज',
+ 'app_homepage_desc' => 'डिफल्ट दृश्यको सट्टा होमपेजमा देखाउनको लागि कुनै दृश्य चयन गर्नुहोस्। चयन गरिएका पृष्ठहरूको अनुमति बेवास्ता गरिनेछ।',
+ 'app_homepage_select' => 'पृष्ठ चयन गर्नुहोस्',
+ 'app_footer_links' => 'फुटर लिंकहरू',
+ 'app_footer_links_desc' => 'साइटको फुटरमा देखाउन लिंकहरू थप्नुहोस्। यी प्रायः पृष्ठहरूको तल्लो भागमा देखिनेछन्, जसमा लगइन आवश्यक नभएका पृष्ठहरू पनि समावेश छन्। "trans::" ले प्रणाली-परिभाषित अनुवाद प्रयोग गर्न सकिन्छ। उदाहरण: "trans::common.privacy_policy" ले "गोपनीयता नीति" र "trans::common.terms_of_service" ले "सेवा सर्तहरू" देखाउनेछ।',
+ 'app_footer_links_label' => 'लिंक लेबल',
+ 'app_footer_links_url' => 'लिंक URL',
+ 'app_footer_links_add' => 'फुटर लिंक थप्नुहोस्',
+ 'app_disable_comments' => 'टिप्पणीहरू असक्षम पार्नुहोस्',
+ 'app_disable_comments_toggle' => 'टिप्पणीहरू असक्षम पार्नुहोस्',
+ 'app_disable_comments_desc' => 'एप्लिकेसनका सबै पृष्ठहरूमा टिप्पणीहरू असक्षम पार्दछ। अस्तित्वमा रहेका टिप्पणीहरू देखाइने छैनन्।',
+
+ // Color settings
+ 'color_scheme' => 'एप्लिकेसन रंग योजना',
+ 'color_scheme_desc' => 'एप्लिकेसनको प्रयोगकर्ता इन्टरफेसमा प्रयोग हुने रंगहरू सेट गर्नुहोस्। रंगहरू डार्क र लाइट मोडका लागि अलग्गै सेट गर्न सकिन्छ जसले विषयवस्तु र पठनीयता सुधार गर्छ।',
+ 'ui_colors_desc' => 'एप्लिकेसनको मुख्य रंग र डिफल्ट लिंक रंग सेट गर्नुहोस्। मुख्य रंग मुख्य रूपमा हेडर ब्यानर, बटनहरू र इन्टरफेस सजावटमा प्रयोग हुन्छ। डिफल्ट लिंक रंग लेखिएको सामग्री र इन्टरफेस दुवैमा प्रयोग हुन्छ।',
+ 'app_color' => 'मुख्य रंग',
+ 'link_color' => 'डिफल्ट लिंक रंग',
+ 'content_colors_desc' => 'पृष्ठ संगठन संरचनाका सबै तत्वहरूका लागि रंग सेट गर्नुहोस्। पठनीयताको लागि डिफल्ट रंगहरूसँग मिल्दोजुल्दो चमक छनौट गर्न सुझाव दिइन्छ।',
+ 'bookshelf_color' => 'शेल्फ रंग',
+ 'book_color' => 'पुस्तक रंग',
+ 'chapter_color' => 'अध्याय रंग',
+ 'page_color' => 'पृष्ठ रंग',
+ 'page_draft_color' => 'पृष्ठ मसौदा रंग',
+
+ // Registration Settings
+ 'reg_settings' => 'दर्ता',
+ 'reg_enable' => 'दर्ता सक्षम गर्नुहोस्',
+ 'reg_enable_toggle' => 'दर्ता सक्षम गर्नुहोस्',
+ 'reg_enable_desc' => 'दर्ता सक्षम हुँदा प्रयोगकर्ताले आफैंलाई एप्लिकेसन प्रयोगकर्ताको रूपमा दर्ता गर्न सक्नेछन्। दर्ता हुँदा तिनीहरूलाई डिफल्ट प्रयोगकर्ता भूमिका दिइन्छ।',
+ 'reg_default_role' => 'दर्ता पछि डिफल्ट प्रयोगकर्ता भूमिका',
+ 'reg_enable_external_warning' => 'बाह्य LDAP वा SAML प्रमाणीकरण सक्रिय हुँदा माथि उल्लेखित विकल्प बेवास्ता गरिनेछ। प्रमाणीकरण सफल भएमा गैर-अस्तित्व प्रयोगकर्ताका खाताहरू स्वचालित सिर्जना हुनेछ।',
+ 'reg_email_confirmation' => 'इमेल पुष्टि',
+ 'reg_email_confirmation_toggle' => 'इमेल पुष्टि आवश्यक छ',
+ 'reg_confirm_email_desc' => 'यदि डोमेन प्रतिबन्ध प्रयोग गरिएको छ भने इमेल पुष्टि आवश्यक हुनेछ र यो विकल्प बेवास्ता गरिनेछ।',
+ 'reg_confirm_restrict_domain' => 'डोमेन प्रतिबन्ध',
+ 'reg_confirm_restrict_domain_desc' => 'दर्ता सीमित गर्न चाहनु भएको इमेल डोमेन्सलाई अल्पविरामले छुट्याएर प्रविष्ट गर्नुहोस्। प्रयोगकर्ताहरूलाई ठेगाना पुष्टि गर्न इमेल पठाइनेछ। दर्ता सफल भएपछि प्रयोगकर्ताले इमेल ठेगाना परिवर्तन गर्न सक्नेछन्।',
+ 'reg_confirm_restrict_domain_placeholder' => 'कुनै प्रतिबन्ध छैन',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'नयाँ पुस्तकहरूमा लागु गर्न डिफल्ट क्रम नियम चयन गर्नुहोस्। यो अस्तित्वमा रहेका पुस्तकहरूमा असर पार्दैन र पुस्तक अनुसार ओभरराइड गर्न सकिन्छ।',
+ 'sorting_rules' => 'क्रम नियमहरू',
+ 'sorting_rules_desc' => 'यी पूर्वनिर्धारित क्रम सञ्चालनहरू हुन् जुन प्रणालीमा सामग्रीमा लागू गर्न सकिन्छ।',
+ 'sort_rule_assigned_to_x_books' => ':count पुस्तकमा लागू गरिएको|:count पुस्तकहरूमा लागू गरिएको',
+ 'sort_rule_create' => 'क्रम नियम सिर्जना गर्नुहोस्',
+ 'sort_rule_edit' => 'क्रम नियम सम्पादन गर्नुहोस्',
+ 'sort_rule_delete' => 'क्रम नियम मेटाउनुहोस्',
+ 'sort_rule_delete_desc' => 'यस क्रम नियमलाई प्रणालीबाट हटाउनुहोस्। यस नियम प्रयोग गरिएका पुस्तकहरू म्यानुअल क्रमबद्धतामा फर्कनेछन्।',
+ 'sort_rule_delete_warn_books' => 'यो क्रम नियम हाल :count पुस्तक(हरू) मा प्रयोग भैरहेको छ। के तपाईं पक्का यो मेटाउन चाहनुहुन्छ?',
+ 'sort_rule_delete_warn_default' => 'यो क्रम नियम हाल पुस्तकहरूको डिफल्ट रूपमा प्रयोग भैरहेको छ। के तपाईं पक्का यो मेटाउन चाहनुहुन्छ?',
+ 'sort_rule_details' => 'क्रम नियम विवरण',
+ 'sort_rule_details_desc' => 'यस क्रम नियमको नाम सेट गर्नुहोस्, जुन प्रयोगकर्ताहरूले क्रम छनौट गर्दा सूचिमा देखिनेछ।',
+ 'sort_rule_operations' => 'क्रम सञ्चालनहरू',
+ 'sort_rule_operations_desc' => 'उपलब्ध सञ्चालनहरूको सूचीबाट क्रम क्रियाकलापहरू सेट गर्नुहोस्। प्रयोग गर्दा, माथिबाट तल सम्म क्रमसँगै लागू गरिनेछ। यहाँ गरिएको कुनै पनि परिवर्तन सुरक्षित गर्दा सबै लागू पुस्तकहरूमा लागु हुनेछ।',
+ 'sort_rule_available_operations' => 'उपलब्ध सञ्चालनहरू',
+ 'sort_rule_available_operations_empty' => 'कोही सञ्चालन बाँकी छैनन्',
+ 'sort_rule_configured_operations' => 'कन्फिगर गरिएको सञ्चालनहरू',
+ 'sort_rule_configured_operations_empty' => '"उपलब्ध सञ्चालनहरू" सूचीबाट सञ्चालनहरू तान्नुहोस्/थप्नुहोस्',
+ 'sort_rule_op_asc' => '(Ascending)',
+ 'sort_rule_op_desc' => '(Descending)',
+ 'sort_rule_op_name' => 'नाम - वर्णानुक्रम',
+ 'sort_rule_op_name_numeric' => 'नाम - सङ्ख्यात्मक',
+ 'sort_rule_op_created_date' => 'सिर्जना मिति',
+ 'sort_rule_op_updated_date' => 'अपडेट मिति',
+ 'sort_rule_op_chapters_first' => 'पहिले अध्यायहरू',
+ 'sort_rule_op_chapters_last' => 'अन्त्यमा अध्यायहरू',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'सम्भार',
+ 'maint_image_cleanup' => 'छविहरू सफा गर्नुहोस्',
+ 'maint_image_cleanup_desc' => 'पृष्ठ र संस्करण सामग्री स्क्यान गरी कुन छविहरू र चित्रहरू प्रयोगमा छन् र कुनहरू अनावश्यक छन् जाँच गर्दछ। यो सञ्चालन अघि पूर्ण डाटाबेस र छवि ब्याकअप बनाउनुहोस्।',
+ 'maint_delete_images_only_in_revisions' => 'पुराना पृष्ठ संस्करणहरूमा मात्र रहेका छविहरू पनि मेटाउनुहोस्',
+ 'maint_image_cleanup_run' => 'सफा गर्ने प्रक्रिया सुरु गर्नुहोस्',
+ 'maint_image_cleanup_warning' => ':count सम्भावित अप्रयुक्त छविहरू फेला परे। के तपाईं पक्का यी छविहरू मेटाउन चाहनुहुन्छ?',
+ 'maint_image_cleanup_success' => ':count सम्भावित अप्रयुक्त छविहरू फेला परे र मेटाइयो!',
+ 'maint_image_cleanup_nothing_found' => 'कुनै अप्रयुक्त छवि फेला परेन, केही मेटाइएन!',
+ 'maint_send_test_email' => 'परीक्षण इमेल पठाउनुहोस्',
+ 'maint_send_test_email_desc' => 'यो तपाईको प्रोफाइलमा दिइएको इमेल ठेगानामा परीक्षण इमेल पठाउँछ।',
+ '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' => 'रीसायकल बिन खोल्नुहोस्',
+ 'maint_regen_references' => 'सन्दर्भहरू पुनः उत्पन्न गर्नुहोस्',
+ 'maint_regen_references_desc' => 'यो क्रियाले डाटाबेस भित्र वस्तुहरू बीचको सन्दर्भ सूचकांक पुनः बनाउँछ। सामान्यतया यो स्वतः हुन्छ, तर पुराना वा अनअधिकारिक विधिबाट थपिएको सामग्रीलाई सूचीकृत गर्न उपयोगी हुन्छ।',
+ 'maint_regen_references_success' => 'सन्दर्भ सूचकांक पुनः उत्पन्न गरियो!',
+ 'maint_timeout_command_note' => 'सूचना: यो क्रियामा समय लाग्न सक्छ जसले केही वेब वातावरणहरूमा टाइमआउट समस्या ल्याउन सक्छ। विकल्पको रूपमा टर्मिनल कमाण्ड प्रयोग गरेर गर्न सकिन्छ।',
+
+ // Recycle Bin
+ 'recycle_bin' => 'रीसायकल बिन',
+ 'recycle_bin_desc' => 'यहाँ तपाईंले मेटाइएका वस्तुहरू पुनर्स्थापना गर्न वा प्रणालीबाट स्थायी रूपमा हटाउन सक्नुहुन्छ। यो सूची प्रणालीका अन्य गतिविधि सूचिहरू जस्तो फिल्टर नभएको छ।',
+ 'recycle_bin_deleted_item' => 'मेटाइएको वस्तु',
+ 'recycle_bin_deleted_parent' => 'मूल',
+ '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_restore_parent' => 'मूल पुनर्स्थापना गर्नुहोस्',
+ 'recycle_bin_destroy_notification' => 'रिसायकल बिनबाट कुल :count वस्तुहरू मेटाइयो।',
+ 'recycle_bin_restore_notification' => 'रिसायकल बिनबाट कुल :count वस्तुहरू पुनर्स्थापित गरियो।',
+
+ // Audit Log
+ 'audit' => 'अडिट लग',
+ 'audit_desc' => 'यो अडिट लग प्रणालीमा ट्र्याक गरिएका गतिविधिहरूको सूची देखाउँछ। यो सूची प्रणालीका समान गतिविधि सूचीहरू भन्दा फरक फिल्टररहित हुन्छ।',
+ '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_ip' => 'IP ठेगाना',
+ 'audit_table_date' => 'गतिविधि मिति',
+ 'audit_date_from' => 'मिति दायरा सुरु',
+ 'audit_date_to' => 'मिति दायरा अन्त्य',
+
+ // Role Settings
+ 'roles' => 'भूमिकाहरू',
+ 'role_user_roles' => 'प्रयोगकर्ता भूमिका',
+ 'roles_index_desc' => 'भूमिकाहरू प्रयोगकर्ताहरूलाई समूहमा राख्न र उनीहरूको सदस्यलाई प्रणाली अनुमति दिन प्रयोग हुन्छ। यदि कुनै प्रयोगकर्ता धेरै भूमिका मा छ भने तिनका अधिकारहरू जोडिनेछन् र सबै क्षमता प्राप्त हुनेछन्।',
+ 'roles_x_users_assigned' => ':count प्रयोगकर्तालाई भूमिका दिइयो|:count प्रयोगकर्ताहरूलाई भूमिका दिइयो',
+ 'roles_x_permissions_provided' => ':count अनुमति दिइयो|:count अनुमति दिइयो',
+ 'roles_assigned_users' => 'दिइएका प्रयोगकर्ताहरू',
+ 'roles_permissions_provided' => 'दिइएका अनुमति',
+ 'role_create' => 'नयाँ भूमिका सिर्जना गर्नुहोस्',
+ 'role_delete' => 'भूमिका मेटाउनुहोस्',
+ 'role_delete_confirm' => 'यसले \':roleName\' नामको भूमिका मेटाउनेछ।',
+ 'role_delete_users_assigned' => 'यस भूमिकामा :userCount प्रयोगकर्ता छन्। यदि तपाईंले यी प्रयोगकर्ताहरूलाई अर्को भूमिकामा सार्न चाहनुहुन्छ भने तल नयाँ भूमिका चयन गर्नुहोस्।',
+ 'role_delete_no_migration' => "प्रयोगकर्ताहरू सार्नु हुँदैन",
+ 'role_delete_sure' => 'के तपाईं पक्का यो भूमिका मेटाउन चाहनुहुन्छ?',
+ 'role_edit' => 'भूमिका सम्पादन गर्नुहोस्',
+ 'role_details' => 'भूमिका विवरण',
+ 'role_name' => 'भूमिका नाम',
+ 'role_desc' => 'भूमिकाको संक्षिप्त विवरण',
+ 'role_mfa_enforced' => 'बहु-फ्याक्टर प्रमाणीकरण आवश्यक',
+ 'role_external_auth_id' => 'बाह्य प्रमाणीकरण ID हरू',
+ 'role_system' => 'प्रणाली अनुमति',
+ 'role_manage_users' => 'प्रयोगकर्ताहरू व्यवस्थापन गर्नुहोस्',
+ 'role_manage_roles' => 'भूमिका र अनुमति व्यवस्थापन गर्नुहोस्',
+ 'role_manage_entity_permissions' => 'सबै पुस्तक, अध्याय र पृष्ठ अनुमति व्यवस्थापन गर्नुहोस्',
+ 'role_manage_own_entity_permissions' => 'आफ्नो पुस्तक, अध्याय र पृष्ठ अनुमति व्यवस्थापन गर्नुहोस्',
+ 'role_manage_page_templates' => 'पृष्ठ टेम्प्लेट व्यवस्थापन गर्नुहोस्',
+ 'role_access_api' => 'प्रणाली API पहुँच',
+ 'role_manage_settings' => 'एप सेटिङ व्यवस्थापन गर्नुहोस्',
+ 'role_export_content' => 'सामग्री निर्यात गर्नुहोस्',
+ 'role_import_content' => 'सामग्री आयात गर्नुहोस्',
+ 'role_editor_change' => 'पृष्ठ सम्पादक परिवर्तन गर्नुहोस्',
+ 'role_notifications' => 'सूचनाहरू प्राप्त र व्यवस्थापन गर्नुहोस्',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'संपत्ति अनुमति',
+ 'roles_system_warning' => 'माथिका कुनै पनि तीन अनुमति प्रयोगकर्ताले आफैं वा अरूका अधिकार परिवर्तन गर्न सक्छन्। यी अनुमति भएको भूमिका मात्र भरपर्दो प्रयोगकर्तालाई दिनुहोस्।',
+ 'role_asset_desc' => 'यी अनुमतिले प्रणालीभित्र सम्पत्तिमा डिफल्ट पहुँच नियन्त्रण गर्छ। पुस्तक, अध्याय र पृष्ठमा अनुमति यी भन्दा प्राथमिक हुन्छ।',
+ 'role_asset_admins' => 'प्रशासनकर्ताहरूलाई सबै सामग्रीमा स्वतः पहुँच दिइन्छ, यी विकल्पहरूले UI मा देखिने वा लुकेका विकल्पहरू मात्र प्रभाव पार्न सक्छ।',
+ 'role_asset_image_view_note' => 'यो छवि व्यवस्थापक भित्रको दृश्यता सम्बन्धि हो। अपलोड गरिएको छविमा वास्तविक पहुँच प्रणालीको छवि भण्डारण विकल्प अनुसार हुन्छ।',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'सबै',
+ 'role_own' => 'आफ्नो',
+ 'role_controlled_by_asset' => 'अपलोड गरिएको सम्पत्तिले नियन्त्रण गरेको',
+ 'role_save' => 'भूमिका सुरक्षित गर्नुहोस्',
+ 'role_users' => 'यस भूमिकाका प्रयोगकर्ताहरू',
+ 'role_users_none' => 'यो भूमिकामा हाल कुनै प्रयोगकर्ता छैन',
+
+ // Users
+ 'users' => 'प्रयोगकर्ताहरू',
+ 'users_index_desc' => 'प्रणालीमा व्यक्तिगत प्रयोगकर्ता खाता सिर्जना र व्यवस्थापन गर्नुहोस्। प्रयोगकर्ता खाता लगइन र सामग्री तथा गतिविधि जिम्मेवारीका लागि प्रयोग हुन्छ। पहुँच अनुमतिहरू मुख्यतया भूमिकामा आधारित छन् तर प्रयोगकर्ताको सामग्री स्वामित्वले पनि असर गर्न सक्छ।',
+ 'user_profile' => 'प्रयोगकर्ता प्रोफाइल',
+ 'users_add_new' => 'नयाँ प्रयोगकर्ता थप्नुहोस्',
+ 'users_search' => 'प्रयोगकर्ताहरू खोज्नुहोस्',
+ 'users_latest_activity' => 'हालैको गतिविधि',
+ 'users_details' => 'प्रयोगकर्ता विवरण',
+ 'users_details_desc' => 'यस प्रयोगकर्ताको प्रदर्शन नाम र इमेल ठेगाना सेट गर्नुहोस्। इमेल ठेगाना लगइनका लागि प्रयोग हुनेछ।',
+ 'users_details_desc_no_email' => 'यो प्रयोगकर्तालाई अरूले चिन्नेगरी प्रदर्शन नाम सेट गर्नुहोस्।',
+ 'users_role' => 'प्रयोगकर्ता भूमिका',
+ 'users_role_desc' => 'यो प्रयोगकर्तालाई दिइने भूमिका चयन गर्नुहोस्। प्रयोगकर्ताले धेरै भूमिका पाएमा सबै भूमिका अधिकारहरू जोडिनेछन्।',
+ 'users_password' => 'प्रयोगकर्ता पासवर्ड',
+ 'users_password_desc' => 'लगइनका लागि कम्तिमा ८ वर्ण लामो पासवर्ड सेट गर्नुहोस्।',
+ 'users_send_invite_text' => 'तपाईं यो प्रयोगकर्तालाई निमन्त्रणा इमेल पठाउन सक्नुहुन्छ जसले उनीहरूलाई आफ्नै पासवर्ड सेट गर्न अनुमति दिन्छ, नभए तपाईंले आफैं पासवर्ड सेट गर्न सक्नुहुन्छ।',
+ 'users_send_invite_option' => 'प्रयोगकर्तालाई निमन्त्रणा इमेल पठाउनुहोस्',
+ 'users_external_auth_id' => 'बाह्य प्रमाणीकरण ID',
+ 'users_external_auth_id_desc' => 'जब बाह्य प्रमाणीकरण प्रणाली प्रयोग हुन्छ (जस्तै SAML2, OIDC, LDAP), यो ID ले यो BookStack प्रयोगकर्तालाई सम्बन्धित प्रणाली खातासँग जोड्छ। सामान्य इमेल प्रमाणीकरणमा यो फिल्ड आवश्यक छैन।',
+ 'users_password_warning' => 'यो प्रयोगकर्ताको पासवर्ड परिवर्तन गर्न मात्र तल भर्नुहोस्।',
+ 'users_system_public' => 'यो प्रयोगकर्ता कुनै पनि पाहुना प्रयोगकर्तालाई प्रतिनिधित्व गर्दछ। यसले लगइन गर्न सक्दैन तर स्वतः दिइन्छ।',
+ 'users_delete' => 'प्रयोगकर्ता मेटाउनुहोस्',
+ 'users_delete_named' => ':userName प्रयोगकर्ता मेटाउनुहोस्',
+ 'users_delete_warning' => 'यसले \':userName\' नामको प्रयोगकर्तालाई प्रणालीबाट पूर्ण रूपमा मेटाउनेछ।',
+ 'users_delete_confirm' => 'के तपाईं पक्का यो प्रयोगकर्ता मेटाउन चाहनुहुन्छ?',
+ 'users_migrate_ownership' => 'स्वामित्व सार्नुहोस्',
+ 'users_migrate_ownership_desc' => 'यहाँ अर्को प्रयोगकर्ता चयन गर्नुहोस् जसले यस प्रयोगकर्ताका सबै वस्तुहरूको स्वामित्व पाओस्।',
+ 'users_none_selected' => 'कुनै प्रयोगकर्ता चयन गरिएको छैन',
+ 'users_edit' => 'प्रयोगकर्ता सम्पादन गर्नुहोस्',
+ 'users_edit_profile' => 'प्रोफाइल सम्पादन गर्नुहोस्',
+ 'users_avatar' => 'प्रयोगकर्ता अवतार',
+ 'users_avatar_desc' => 'यो प्रयोगकर्तालाई प्रतिनिधित्व गर्न एउटा चित्र चयन गर्नुहोस्। करिब २५६px वर्गाकार हुनु पर्छ।',
+ 'users_preferred_language' => 'रुचाइको भाषा',
+ 'users_preferred_language_desc' => 'यस विकल्पले एपको यूजर-इन्टरफेसको भाषा परिवर्तन गर्नेछ। प्रयोगकर्ताले सिर्जना गरेको सामग्रीमा असर पार्दैन।',
+ 'users_social_accounts' => 'सामाजिक खाता',
+ 'users_social_accounts_desc' => 'यो प्रयोगकर्ताका जडित सामाजिक खाताहरूको स्थिति हेर्नुहोस्। सामाजिक खाताहरू प्रमाणीकरणका लागि प्राथमिक प्रणालीसँगै प्रयोग गर्न सकिन्छ।',
+ 'users_social_accounts_info' => 'यहाँ तपाईं आफ्नो अन्य खाताहरू छिटो र सजिलो लगइनका लागि जोड्न सक्नुहुन्छ। यहाँबाट खाता डिस्कनेक्ट गर्दा पूर्व अनुमति रद्द हुँदैन। अनुमति रद्द गर्न सामाजिक खाताको सेटिङ प्रयोग गर्नुहोस्।',
+ 'users_social_connect' => 'खाता जडान गर्नुहोस्',
+ 'users_social_disconnect' => 'खाता डिस्कनेक्ट गर्नुहोस्',
+ 'users_social_status_connected' => 'जडान गरिएको',
+ 'users_social_status_disconnected' => 'डिस्कनेक्ट गरिएको',
+ 'users_social_connected' => ':socialAccount खाता सफलतापूर्वक प्रोफाइलमा जोडियो।',
+ 'users_social_disconnected' => ':socialAccount खाता सफलतापूर्वक प्रोफाइलबाट हटाइयो।',
+ 'users_api_tokens' => 'API टोकनहरू',
+ 'users_api_tokens_desc' => 'BookStack REST API सँग प्रमाणीकरण गर्न प्रयोग गरिने पहुँच टोकनहरू सिर्जना र व्यवस्थापन गर्नुहोस्। API अनुमतिहरू टोकनधारक प्रयोगकर्ताबाट व्यवस्थापन हुन्छ।',
+ 'users_api_tokens_none' => 'यस प्रयोगकर्ताका लागि कुनै API टोकन सिर्जना गरिएको छैन',
+ 'users_api_tokens_create' => 'टोकन सिर्जना गर्नुहोस्',
+ 'users_api_tokens_expires' => 'म्याद समाप्त',
+ 'users_api_tokens_docs' => 'API कागजातहरू',
+ 'users_mfa' => 'बहु-फ्याक्टर प्रमाणीकरण',
+ 'users_mfa_desc' => 'तपाईंको प्रयोगकर्ता खाताको लागि थप सुरक्षा तहको रूपमा बहु-फ्याक्टर प्रमाणीकरण सेटअप गर्नुहोस्।',
+ 'users_mfa_x_methods' => ':count विधि सेटअप गरिएको|:count विधिहरू सेटअप गरिएको',
+ 'users_mfa_configure' => 'विधिहरू सेटअप गर्नुहोस्',
+
+ // API Tokens
+ 'user_api_token_create' => 'API टोकन सिर्जना गर्नुहोस्',
+ 'user_api_token_name' => 'नाम',
+ 'user_api_token_name_desc' => 'यो टोकनको उद्देश्य सम्झनको लागि भविष्यमा सम्झन सकिने नाम दिनुहोस्।',
+ 'user_api_token_expiry' => 'म्याद समाप्ति मिति',
+ 'user_api_token_expiry_desc' => 'यो टोकनको म्याद समाप्त हुने मिति सेट गर्नुहोस्। यस मितिपछि, यस टोकनको प्रयोग गरेर गरिएका अनुरोधहरू काम गर्दैनन्। यो फिल्ड खाली छोड्दा भविष्यमा १०० वर्षको म्याद सेट हुनेछ।',
+ 'user_api_token_create_secret_message' => 'यो टोकन सिर्जना गरेपछि "Token ID" र "Token Secret" जनरेट र प्रदर्शन गरिनेछ। यो गोप्य जानकारी एक पटक मात्र देखाइनेछ, त्यसैले कृपया यसलाई सुरक्षित स्थानमा प्रतिलिपि गर्नुहोस् र त्यसपछि मात्र अगाडि बढ्नुहोस्।',
+ 'user_api_token' => 'API टोकन',
+ 'user_api_token_id' => 'टोकन ID',
+ 'user_api_token_id_desc' => 'यो टोकनको लागि प्रणालीद्वारा उत्पन्न गरिएको अ-सम्पादनयोग्य पहिचान हो, जुन API अनुरोधहरूमा प्रदान गर्न आवश्यक हुनेछ।',
+ 'user_api_token_secret' => 'टोकन गोप्य जानकारी',
+ 'user_api_token_secret_desc' => 'यो टोकनको लागि प्रणालीद्वारा उत्पन्न गरिएको गोप्य जानकारी हो, जुन API अनुरोधहरूमा प्रदान गर्न आवश्यक हुनेछ। यसलाई केवल एक पटक मात्र देखाइनेछ, त्यसैले कृपया यसलाई सुरक्षित स्थानमा प्रतिलिपि गर्नुहोस्।',
+ 'user_api_token_created' => 'टोकन सिर्जना भएको :timeAgo',
+ 'user_api_token_updated' => 'टोकन अपडेट भएको :timeAgo',
+ 'user_api_token_delete' => 'टोकन मेटाउनुहोस्',
+ 'user_api_token_delete_warning' => 'यसले \':tokenName\' नामको API टोकनलाई पूर्ण रूपमा प्रणालीबाट मेटाउनेछ।',
+ 'user_api_token_delete_confirm' => 'के तपाईं पक्का यो API टोकन मेटाउन चाहनुहुन्छ?',
+
+ // Webhooks
+ 'webhooks' => 'वेबहुक्स',
+ 'webhooks_index_desc' => 'वेबहुक्स भनेको प्रणाली भित्रका केही क्रियाकलाप र घटनाहरू हुँदा बाह्य URL हरूमा डेटा पठाउने विधि हो, जसले बाह्य प्लेटफर्महरूसँग जस्तै सन्देश वा सूचनासम्बन्धी सिस्टमहरूसँग घटनामा आधारित एकीकरणलाई अनुमति दिन्छ।',
+ 'webhooks_x_trigger_events' => ':count ट्रिगर घटना|:count ट्रिगर घटनाहरू',
+ 'webhooks_create' => 'नयाँ वेबहुक सिर्जना गर्नुहोस्',
+ 'webhooks_none_created' => 'अझै कुनै वेबहुक सिर्जना गरिएको छैन।',
+ 'webhooks_edit' => 'वेबहुक सम्पादन गर्नुहोस्',
+ 'webhooks_save' => 'वेबहुक बचत गर्नुहोस्',
+ 'webhooks_details' => 'वेबहुक विवरण',
+ 'webhooks_details_desc' => 'एक प्रयोगकर्ता मैत्री नाम र एक POST इन्डप्वाइंट दिनुहोस् जसलाई वेबहुकको डेटा पठाइने स्थानको रूपमा प्रयोग हुनेछ।',
+ 'webhooks_events' => 'वेबहुक घटनाहरू',
+ 'webhooks_events_desc' => 'यी घटनाहरू चयन गर्नुहोस् जसले यो वेबहुकलाई ट्रिगर गर्नुपर्नेछ।',
+ 'webhooks_events_warning' => 'ध्यान दिनुहोस् कि यी घटनाहरू चयन गरेपछि सबै चयन गरिएका घटनाहरूको लागि वेबहुक ट्रिगर हुनेछ, भले नै कस्टम अनुमतिहरू लागू गरिएका छन्। यो वेबहुक प्रयोग गर्दा गोपनीय सामग्रीको जोखिम नहोस् भन्ने कुरा सुनिश्चित गर्नुहोस्।',
+ 'webhooks_events_all' => 'सिस्टमका सबै घटनाहरू',
+ 'webhooks_name' => 'वेबहुक नाम',
+ 'webhooks_timeout' => 'वेबहुक अनुरोध म्याद समाप्ति (सेकेन्ड)',
+ 'webhooks_endpoint' => 'वेबहुक इन्डप्वाइंट',
+ 'webhooks_active' => 'वेबहुक सक्रिय',
+ 'webhook_events_table_header' => 'घटनाहरू',
+ 'webhooks_delete' => 'वेबहुक मेटाउनुहोस्',
+ 'webhooks_delete_warning' => 'यसले \':webhookName\' नामको वेबहुकलाई प्रणालीबाट पूर्ण रूपमा मेटाउनेछ।',
+ 'webhooks_delete_confirm' => 'के तपाईं पक्का यो वेबहुक मेटाउन चाहनुहुन्छ?',
+ 'webhooks_format_example' => 'वेबहुक ढाँचाको उदाहरण',
+ 'webhooks_format_example_desc' => 'वेबहुक डेटा POST अनुरोधको रूपमा JSON ढाँचामा निर्धारित इन्डप्वाइंटमा पठाइन्छ। "related_item" र "url" गुणहरू वैकल्पिक छन् र यो ट्रिगर गरिएको घटनाको प्रकारमा निर्भर गर्नेछ।',
+ 'webhooks_status' => 'वेबहुक स्थिति',
+ 'webhooks_last_called' => 'अन्तिम पटक कल गरिएको: ',
+ 'webhooks_last_errored' => 'अन्तिम पटक एरर भएको: ',
+ 'webhooks_last_error_message' => 'अन्तिम एरर सन्देश: ',
+
+ // Licensing
+ 'licenses' => 'लाइसन्स',
+ 'licenses_desc' => 'यस पृष्ठमा BookStack को लाइसेन्स जानकारी र BookStack भित्र प्रयोग भएका परियोजना र पुस्तकालयहरूको जानकारी दिइएको छ। सूचीबद्ध भएका धेरै परियोजनाहरूले केवल विकासको सन्दर्भमा मात्र प्रयोग गर्न सकिन्छ।',
+ 'licenses_bookstack' => 'BookStack लाइसेन्स',
+ 'licenses_php' => 'PHP पुस्तकालय लाइसेन्स',
+ 'licenses_js' => 'JavaScript पुस्तकालय लाइसेन्स',
+ 'licenses_other' => 'अन्य लाइसेन्स',
+ 'license_details' => 'लाइसेन्स विवरण',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/ne/validation.php b/lang/ne/validation.php
new file mode 100644
index 00000000000..ed61d3d6ff3
--- /dev/null
+++ b/lang/ne/validation.php
@@ -0,0 +1,123 @@
+ ':attribute स्वीकार गर्नुपर्छ।',
+ 'active_url' => ':attribute मान्य URL होइन।',
+ 'after' => ':attribute मिति :date पछिको हुनुपर्छ।',
+ 'alpha' => ':attribute मा अक्षर मात्र हुनुपर्छ।',
+ 'alpha_dash' => ':attribute मा अक्षर, अंक, ड्यास (-) र अन्डरस्कोर (_) मात्र हुनुपर्छ।',
+ 'alpha_num' => ':attribute मा अक्षर र अंक मात्र हुनुपर्छ।',
+ 'array' => ':attribute array हुनुपर्छ।',
+ 'backup_codes' => 'दिइएको कोड गलत छ वा पहिल्यै प्रयोग भइसकेको छ।',
+ 'before' => ':attribute मिति :date भन्दा पहिला हुनुपर्छ।',
+ 'between' => [
+ 'numeric' => ':attribute :min देखि :max बीचमा हुनुपर्छ।',
+ 'file' => ':attribute :min देखि :max किलोबाइट बीचमा हुनुपर्छ।',
+ 'string' => ':attribute :min देखि :max क्यारेक्टरबीच हुनुपर्छ।',
+ 'array' => ':attribute मा :min देखि :max वस्तुहरू हुनुपर्छ।',
+ ],
+ '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',
+ 'file' => ':attribute मान्य फाइल हुनुपर्छ।',
+ 'filled' => ':attribute आवश्यक छ।',
+ 'gt' => [
+ 'numeric' => ':attribute :value भन्दा बढी हुनुपर्छ।',
+ 'file' => ':attribute :value किलोबाइटभन्दा बढी हुनुपर्छ।',
+ 'string' => ':attribute :value क्यारेक्टरभन्दा बढी हुनुपर्छ।',
+ 'array' => ':attribute मा :value भन्दा बढी वस्तुहरू हुनुपर्छ।',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute :value भन्दा बढी वा बराबर हुनुपर्छ।',
+ 'file' => ':attribute :value किलोबाइटभन्दा बढी वा बराबर हुनुपर्छ।',
+ 'string' => ':attribute :value क्यारेक्टरभन्दा बढी वा बराबर हुनुपर्छ।',
+ 'array' => ':attribute मा कम्तीमा :value वस्तुहरू हुनुपर्छ।',
+ ],
+ 'exists' => 'चयन गरिएको :attribute अमान्य छ।',
+ 'image' => ':attribute एउटा तस्बिर हुनुपर्छ।',
+ 'image_extension' => ':attribute मा मान्य र समर्थित तस्बिर विस्तार (extension) हुनुपर्छ।',
+ 'in' => 'चयन गरिएको :attribute अमान्य छ।',
+ 'integer' => ':attribute पूर्णांक (integer) हुनुपर्छ।',
+ 'ip' => ':attribute मान्य IP ठेगाना हुनुपर्छ।',
+ 'ipv4' => ':attribute मान्य IPv4 ठेगाना हुनुपर्छ।',
+ 'ipv6' => ':attribute मान्य IPv6 ठेगाना हुनुपर्छ।',
+ 'json' => ':attribute मान्य JSON स्ट्रिङ हुनुपर्छ।',
+ 'lt' => [
+ 'numeric' => ':attribute :value भन्दा कम हुनुपर्छ।',
+ 'file' => ':attribute :value किलोबाइटभन्दा कम हुनुपर्छ।',
+ 'string' => ':attribute :value क्यारेक्टरभन्दा कम हुनुपर्छ।',
+ 'array' => ':attribute मा :value भन्दा कम वस्तुहरू हुनुपर्छ।',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute :value भन्दा कम वा बराबर हुनुपर्छ।',
+ 'file' => ':attribute :value किलोबाइटभन्दा कम वा बराबर हुनुपर्छ।',
+ 'string' => ':attribute :value क्यारेक्टरभन्दा कम वा बराबर हुनुपर्छ।',
+ 'array' => ':attribute मा :value भन्दा बढी वस्तुहरू हुनु हुँदैन।',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute :max भन्दा बढी हुन सक्दैन।',
+ 'file' => ':attribute :max किलोबाइटभन्दा बढी हुन सक्दैन।',
+ 'string' => ':attribute :max क्यारेक्टरभन्दा बढी हुन सक्दैन।',
+ 'array' => ':attribute मा :max भन्दा बढी वस्तुहरू हुनु हुँदैन।',
+ ],
+ 'mimes' => ':attribute फाइलको प्रकार :values हुनुपर्छ।',
+ 'min' => [
+ 'numeric' => ':attribute कम्तीमा :min हुनुपर्छ।',
+ 'file' => ':attribute कम्तीमा :min किलोबाइट हुनुपर्छ।',
+ 'string' => ':attribute कम्तीमा :min क्यारेक्टर हुनुपर्छ।',
+ 'array' => ':attribute मा कम्तीमा :min वस्तुहरू हुनुपर्छ।',
+ ],
+ 'not_in' => 'चयन गरिएको :attribute अमान्य छ।',
+ 'not_regex' => ':attribute को ढाँचा अमान्य छ।',
+ 'numeric' => ':attribute संख्या हुनुपर्छ।',
+ 'regex' => ':attribute ढाँचा अमान्य छ।',
+ 'required' => ':attribute आवश्यक छ।',
+ 'required_if' => ':other :value हुँदा :attribute आवश्यक हुन्छ।',
+ 'required_with' => ':values भएमा :attribute आवश्यक छ।',
+ 'required_with_all' => ':values भएमा :attribute आवश्यक छ।',
+ 'required_without' => ':values नभएमा :attribute आवश्यक छ।',
+ 'required_without_all' => ':values मध्ये कुनै पनि नभएमा :attribute आवश्यक छ।',
+ 'same' => ':attribute र :other मिल्नुपर्छ।',
+ 'safe_url' => 'दिएको लिङ्क सुरक्षित नहुन सक्छ।',
+ 'size' => [
+ 'numeric' => ':attribute ठीक :size हुनुपर्छ।',
+ 'file' => ':attribute ठीक :size किलोबाइट हुनुपर्छ।',
+ 'string' => ':attribute ठीक :size क्यारेक्टर हुनुपर्छ।',
+ 'array' => ':attribute मा ठीक :size वस्तुहरू हुनुपर्छ।',
+ ],
+ 'string' => ':attribute स्ट्रिङ (पाठ) हुनुपर्छ।',
+ 'timezone' => ':attribute मान्य समय क्षेत्र (timezone) हुनुपर्छ।',
+ 'totp' => 'दिएको कोड गलत छ वा सकिएको छ।',
+ 'unique' => ':attribute पहिल्यै प्रयोग भइसकेको छ।',
+ 'url' => ':attribute को ढाँचा अमान्य छ।',
+ 'uploaded' => 'फाइल अपलोड हुन सकेन। सर्भरले यस्तो साइज स्वीकार नगर्न सक्छ।',
+
+ 'zip_file' => ':attribute ले ZIP फाइलभित्रको फाइल देखाउनु पर्छ।',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => ':attribute मा :validTypes प्रकारको फाइल हुनुपर्छ, तर :foundType भेटियो।',
+ 'zip_model_expected' => 'डेटा वस्तु चाहिएको थियो तर ":type" भेटियो।',
+ 'zip_unique' => ':attribute ZIP भित्रको वस्तु प्रकारको लागि अद्वितीय हुनुपर्छ।',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'पासवर्ड पुष्टि आवश्यक छ।',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/nl/activities.php b/lang/nl/activities.php
new file mode 100644
index 00000000000..230c7a58b3a
--- /dev/null
+++ b/lang/nl/activities.php
@@ -0,0 +1,140 @@
+ 'maakte pagina',
+ 'page_create_notification' => 'Pagina succesvol aangemaakt',
+ 'page_update' => 'wijzigde pagina',
+ 'page_update_notification' => 'Pagina succesvol bijgewerkt',
+ 'page_delete' => 'verwijderde pagina',
+ 'page_delete_notification' => 'Pagina succesvol verwijderd',
+ 'page_restore' => 'herstelde pagina',
+ 'page_restore_notification' => 'Pagina succesvol hersteld',
+ 'page_move' => 'verplaatste pagina',
+ 'page_move_notification' => 'Pagina succesvol verplaatst',
+
+ // Chapters
+ 'chapter_create' => 'maakte hoofdstuk',
+ 'chapter_create_notification' => 'Hoofdstuk succesvol aangemaakt',
+ 'chapter_update' => 'wijzigde hoofdstuk',
+ 'chapter_update_notification' => 'Hoofdstuk succesvol bijgewerkt',
+ 'chapter_delete' => 'verwijderde hoofdstuk',
+ 'chapter_delete_notification' => 'Hoofdstuk succesvol verwijderd',
+ 'chapter_move' => 'verplaatste hoofdstuk',
+ 'chapter_move_notification' => 'Hoofdstuk succesvol verplaatst',
+
+ // Books
+ 'book_create' => 'maakte boek',
+ 'book_create_notification' => 'Boek succesvol aangemaakt',
+ 'book_create_from_chapter' => 'converteerde hoofdstuk naar boek',
+ 'book_create_from_chapter_notification' => 'Hoofdstuk succesvol geconverteerd naar een boek',
+ 'book_update' => 'wijzigde boek',
+ 'book_update_notification' => 'Boek succesvol bijgewerkt',
+ 'book_delete' => 'verwijderde boek',
+ 'book_delete_notification' => 'Boek succesvol verwijderd',
+ 'book_sort' => 'sorteerde boek',
+ 'book_sort_notification' => 'Boek succesvol opnieuw gesorteerd',
+
+ // Bookshelves
+ 'bookshelf_create' => 'maakte boekenplank aan',
+ 'bookshelf_create_notification' => 'Boekenplank succesvol aangemaakt',
+ 'bookshelf_create_from_book' => 'converteerde boek naar boekenplank',
+ 'bookshelf_create_from_book_notification' => 'Boek succesvol geconverteerd naar boekenplank',
+ 'bookshelf_update' => 'werkte boekenplank bij',
+ 'bookshelf_update_notification' => 'Boekenplank succesvol bijgewerkt',
+ 'bookshelf_delete' => 'verwijderde boekenplank',
+ 'bookshelf_delete_notification' => 'Boekenplank succesvol verwijderd',
+
+ // Revisions
+ 'revision_restore' => 'herstelde revisie',
+ 'revision_delete' => 'verwijderde revisie',
+ 'revision_delete_notification' => 'Revisie succesvol verwijderd',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" is toegevoegd aan je favorieten',
+ 'favourite_remove_notification' => '":name" is verwijderd uit je favorieten',
+
+ // Watching
+ 'watch_update_level_notification' => 'Volg voorkeuren succesvol aangepast',
+
+ // Auth
+ 'auth_login' => 'logde in',
+ 'auth_register' => 'registreerde als nieuwe gebruiker',
+ 'auth_password_reset_request' => 'vraagde een nieuw gebruikerswachtwoord aan',
+ 'auth_password_reset_update' => 'stelde gebruikerswachtwoord opnieuw in',
+ 'mfa_setup_method' => 'stelde meervoudige verificatie methode in',
+ 'mfa_setup_method_notification' => 'Meervoudige verificatie methode succesvol geconfigureerd',
+ 'mfa_remove_method' => 'verwijderde meervoudige verificatie methode',
+ 'mfa_remove_method_notification' => 'Meervoudige verificatie methode is succesvol verwijderd',
+
+ // Settings
+ 'settings_update' => 'werkte instellingen bij',
+ 'settings_update_notification' => 'Instellingen succesvol bijgewerkt',
+ 'maintenance_action_run' => 'voerde onderhoudsactie uit',
+
+ // Webhooks
+ 'webhook_create' => 'maakte webhook aan',
+ 'webhook_create_notification' => 'Webhook succesvol aangemaakt',
+ 'webhook_update' => 'werkte webhook bij',
+ 'webhook_update_notification' => 'Webhook succesvol bijgewerkt',
+ 'webhook_delete' => 'verwijderde webhook',
+ 'webhook_delete_notification' => 'Webhook succesvol verwijderd',
+
+ // Imports
+ 'import_create' => 'maakte import',
+ 'import_create_notification' => 'Import succesvol geüpload',
+ 'import_run' => 'wijzigde import',
+ 'import_run_notification' => 'Inhoud succesvol geïmporteerd',
+ 'import_delete' => 'verwijderde import',
+ 'import_delete_notification' => 'Import succesvol verwijderd',
+
+ // Users
+ 'user_create' => 'maakte gebruiker aan',
+ 'user_create_notification' => 'Gebruiker succesvol aangemaakt',
+ 'user_update' => 'werkte gebruiker bij',
+ 'user_update_notification' => 'Gebruiker succesvol bijgewerkt',
+ 'user_delete' => 'verwijderde gebruiker',
+ 'user_delete_notification' => 'Gebruiker succesvol verwijderd',
+
+ // API Tokens
+ 'api_token_create' => 'API-token aangemaakt',
+ 'api_token_create_notification' => 'API-token succesvol aangemaakt',
+ 'api_token_update' => 'wijzigde API-token',
+ 'api_token_update_notification' => 'API-token succesvol bijgewerkt',
+ 'api_token_delete' => 'verwijderde API-token',
+ 'api_token_delete_notification' => 'API-token succesvol verwijderd',
+
+ // Roles
+ 'role_create' => 'maakte rol aan',
+ 'role_create_notification' => 'Rol succesvol aangemaakt',
+ 'role_update' => 'werkte rol bij',
+ 'role_update_notification' => 'Rol succesvol bijgewerkt',
+ 'role_delete' => 'verwijderde rol',
+ 'role_delete_notification' => 'Rol succesvol verwijderd',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'leegde prullenbak',
+ 'recycle_bin_restore' => 'herstelde van prullenbak',
+ 'recycle_bin_destroy' => 'verwijderde van prullenbak',
+
+ // Comments
+ 'commented_on' => 'plaatste opmerking in',
+ 'comment_create' => 'voegde opmerking toe',
+ 'comment_update' => 'paste opmerking aan',
+ 'comment_delete' => 'verwijderde opmerking',
+
+ // Sort Rules
+ 'sort_rule_create' => 'maakte soorteerregel',
+ 'sort_rule_create_notification' => 'Sorteerregel succesvol aangemaakt',
+ 'sort_rule_update' => 'wijzigde sorteerregel',
+ 'sort_rule_update_notification' => 'Sorteerregel succesvol bijgewerkt',
+ 'sort_rule_delete' => 'verwijderde sorteerregel',
+ 'sort_rule_delete_notification' => 'Sorteerregel succesvol verwijderd',
+
+ // Other
+ 'permissions_update' => 'wijzigde machtigingen',
+];
diff --git a/lang/nl/auth.php b/lang/nl/auth.php
new file mode 100644
index 00000000000..12c6b6c7bff
--- /dev/null
+++ b/lang/nl/auth.php
@@ -0,0 +1,117 @@
+ 'Deze inloggegevens zijn niet bij ons bekend.',
+ 'throttle' => 'Te veel inlogpogingen! Probeer het opnieuw na :seconds seconden.',
+
+ // Login & Register
+ 'sign_up' => 'Registreer',
+ 'log_in' => 'Log in',
+ 'log_in_with' => 'Log in met :socialDriver',
+ 'sign_up_with' => 'Registreer met :socialDriver',
+ 'logout' => 'Log uit',
+
+ 'name' => 'Naam',
+ 'username' => 'Gebruikersnaam',
+ 'email' => 'E-mail',
+ 'password' => 'Wachtwoord',
+ 'password_confirm' => 'Wachtwoord Bevestigen',
+ 'password_hint' => 'Moet uit minstens 8 tekens bestaan',
+ 'forgot_password' => 'Wachtwoord vergeten?',
+ 'remember_me' => 'Onthoud Mij',
+ 'ldap_email_hint' => 'Geef een e-mailadres op voor dit account.',
+ 'create_account' => 'Account aanmaken',
+ 'already_have_account' => 'Heb je al een account?',
+ 'dont_have_account' => 'Nog geen account?',
+ 'social_login' => 'Aanmelden via een sociaal netwerk',
+ 'social_registration' => 'Registratie via een sociaal netwerk',
+ 'social_registration_text' => 'Registreer en log in met een andere service.',
+
+ 'register_thanks' => 'Bedankt voor het registreren!',
+ 'register_confirm' => 'Controleer je e-mail en klik op de bevestigingsknop om toegang te krijgen tot :appName.',
+ 'registrations_disabled' => 'Registratie is momenteel niet mogelijk',
+ 'registration_email_domain_invalid' => 'Dit e-maildomein wordt niet toegelaten tot deze applicatie',
+ 'register_success' => 'Bedankt voor het aanmelden! Je bent nu geregistreerd en ingelogd.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Proberen in te loggen',
+ 'auto_init_starting_desc' => 'We maken contact met je authenticatiesysteem om het inlogproces te starten. Als er na 5 seconden geen vooruitgang is, kun je proberen op de onderstaande link te klikken.',
+ 'auto_init_start_link' => 'Ga verder met authenticatie',
+
+ // Password Reset
+ 'reset_password' => 'Wachtwoord Herstellen',
+ 'reset_password_send_instructions' => 'Geef je e-mailadres op en er wordt een link gestuurd om je wachtwoord te herstellen.',
+ 'reset_password_send_button' => 'Stuur Herstel Link',
+ 'reset_password_sent' => 'Een wachtwoordherstel-link zal worden verstuurd naar :email als dat e-mailadres in het systeem gevonden is.',
+ 'reset_password_success' => 'Je wachtwoord is succesvol hersteld.',
+ 'email_reset_subject' => 'Herstel je wachtwoord van :appName',
+ 'email_reset_text' => 'Je ontvangt deze e-mail omdat we een wachtwoordherstelverzoek voor uw account hebben ontvangen.',
+ 'email_reset_not_requested' => 'Als je geen wachtwoordherstel hebt aangevraagd, hoef je niets te doen.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Bevestig je e-mailadres op :appName',
+ 'email_confirm_greeting' => 'Bedankt voor je aanmelding op :appName!',
+ 'email_confirm_text' => 'Bevestig je e-mailadres door op onderstaande knop te drukken:',
+ 'email_confirm_action' => 'Bevestig je e-mail',
+ 'email_confirm_send_error' => 'Een e-mailbevestiging is vereist, maar het systeem kon de e-mail niet verzenden. Neem contact op met de beheerder.',
+ 'email_confirm_success' => 'Je e-mailadres is bevestigd! Je zou nu moeten kunnen inloggen met dit e-mailadres.',
+ 'email_confirm_resent' => 'Bevestigingsmail opnieuw verzonden, controleer je inbox.',
+ 'email_confirm_thanks' => 'Bedankt voor de bevestiging!',
+ 'email_confirm_thanks_desc' => 'Wacht even terwijl je bevestiging wordt behandeld. Als je na 3 seconden niet wordt doorverwezen, druk dan op de onderstaande link "Doorgaan" om verder te gaan.',
+
+ 'email_not_confirmed' => 'E-mailadres nog niet bevestigd',
+ 'email_not_confirmed_text' => 'Je e-mailadres is nog niet bevestigd.',
+ 'email_not_confirmed_click_link' => 'Klik op de link in de e-mail die vlak na je registratie is verstuurd.',
+ 'email_not_confirmed_resend' => 'Als je deze e-mail niet kunt vinden kun je deze met onderstaande formulier opnieuw verzenden.',
+ 'email_not_confirmed_resend_button' => 'Bevestigingsmail opnieuw verzenden',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Je bent uitgenodigd voor :appName!',
+ 'user_invite_email_greeting' => 'Er is een account voor je aangemaakt op :appName.',
+ 'user_invite_email_text' => 'Klik op de onderstaande knop om een account wachtwoord in te stellen en toegang te krijgen:',
+ 'user_invite_email_action' => 'Account wachtwoord instellen',
+ 'user_invite_page_welcome' => 'Welkom bij :appName!',
+ 'user_invite_page_text' => 'Om je registratie af te ronden en toegang te krijgen moet je een wachtwoord instellen dat gebruikt zal worden om in te loggen op :appName bij toekomstige bezoeken.',
+ 'user_invite_page_confirm_button' => 'Wachtwoord Bevestigen',
+ 'user_invite_success_login' => 'Wachtwoord ingesteld, je zou nu moeten kunnen inloggen met je ingestelde wachtwoord om toegang te krijgen tot :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Meervoudige verificatie instellen',
+ 'mfa_setup_desc' => 'Stel meervoudige verificatie in als een extra beveiligingslaag voor je gebruikersaccount.',
+ 'mfa_setup_configured' => 'Is al geconfigureerd',
+ 'mfa_setup_reconfigure' => 'Herconfigureren',
+ 'mfa_setup_remove_confirmation' => 'Weet je zeker dat je deze multi-factor authenticatie methode wilt verwijderen?',
+ 'mfa_setup_action' => 'Instellen',
+ 'mfa_backup_codes_usage_limit_warning' => 'Je hebt minder dan 5 back-upcodes over. Genereer en sla een nieuwe set op voordat je geen codes meer hebt om te voorkomen dat je buiten je account wordt gesloten.',
+ 'mfa_option_totp_title' => 'Mobiele app',
+ 'mfa_option_totp_desc' => 'Om meervoudige verificatie te gebruiken heb je een mobiele applicatie nodig die TOTP ondersteunt, zoals Google Authenticator, Authy of Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Back-up Codes',
+ 'mfa_option_backup_codes_desc' => 'Genereert een set met eenmalige back-upcodes die je kan invoeren om je identiteit te bevestigen. Bewaar deze op een veilige plaats.',
+ 'mfa_gen_confirm_and_enable' => 'Bevestigen en inschakelen',
+ 'mfa_gen_backup_codes_title' => 'Back-up codes instellen',
+ 'mfa_gen_backup_codes_desc' => 'Bewaar de onderstaande lijst met codes op een veilige plaats. Bij toegang tot het systeem kun je een van de codes gebruiken als tweede verificatiemechanisme.',
+ 'mfa_gen_backup_codes_download' => 'Download Codes',
+ 'mfa_gen_backup_codes_usage_warning' => 'Elke code kan slechts eenmaal gebruikt worden',
+ 'mfa_gen_totp_title' => 'Mobiele app installatie',
+ 'mfa_gen_totp_desc' => 'Om meervoudige verificatie te gebruiken heb je een mobiele applicatie nodig die TOTP ondersteunt, zoals Google Authenticator, Authy of Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Scan de onderstaande QR-code door gebruik te maken van je favoriete authenticatie-app om aan de slag te gaan.',
+ 'mfa_gen_totp_verify_setup' => 'Installatie verifiëren',
+ 'mfa_gen_totp_verify_setup_desc' => 'Controleer of alles werkt door het invoeren van een code, die wordt gegenereerd binnen je authenticatie-app, in het onderstaande invoerveld:',
+ 'mfa_gen_totp_provide_code_here' => 'Vul je app-gegenereerde code hier in',
+ 'mfa_verify_access' => 'Verifieer toegang',
+ 'mfa_verify_access_desc' => 'Je moet je identiteit bevestigen via een extra verificatieniveau voordat je toegang krijgt tot je gebruikersaccount. Verifieer met een van de door jou geconfigureerde methoden om verder te gaan.',
+ 'mfa_verify_no_methods' => 'Geen methode geconfigureerd',
+ 'mfa_verify_no_methods_desc' => 'Er konden geen meervoudige verificatie methoden voor je account gevonden worden. Je zult minstens één methode moeten instellen voordat je toegang krijgt.',
+ 'mfa_verify_use_totp' => 'Verifieer met een mobiele app',
+ 'mfa_verify_use_backup_codes' => 'Verifieer met een back-up code',
+ 'mfa_verify_backup_code' => 'Back-up code',
+ 'mfa_verify_backup_code_desc' => 'Voer één van je resterende back-up codes hieronder in:',
+ 'mfa_verify_backup_code_enter_here' => 'Voer hier de back-up code in',
+ 'mfa_verify_totp_desc' => 'Voer de code, gegenereerd met je mobiele app, hieronder in:',
+ 'mfa_setup_login_notification' => 'Meervoudige verificatie methode geconfigureerd, Gelieve opnieuw in te loggen met de geconfigureerde methode.',
+];
diff --git a/lang/nl/common.php b/lang/nl/common.php
new file mode 100644
index 00000000000..bcd7fbe0853
--- /dev/null
+++ b/lang/nl/common.php
@@ -0,0 +1,115 @@
+ 'Annuleer',
+ 'close' => 'Sluit',
+ 'confirm' => 'Bevestig',
+ 'back' => 'Terug',
+ 'save' => 'Opslaan',
+ 'continue' => 'Doorgaan',
+ 'select' => 'Selecteer',
+ 'toggle_all' => 'Wissel Alles',
+ 'more' => 'Meer',
+
+ // Form Labels
+ 'name' => 'Naam',
+ 'description' => 'Beschrijving',
+ 'role' => 'Rol',
+ 'cover_image' => 'Omslagfoto',
+ 'cover_image_description' => 'Deze afbeelding moet ongeveer 440x250 pixels zijn, hoewel deze flexibel zal worden geschaald en bijgesneden naargelang dit nodig is in de verschillende scenario\'s van de gebruikersinterface. De daadwerkelijk gebruikte afmetingen voor weergave zullen dan verschillen.',
+
+ // Actions
+ 'actions' => 'Acties',
+ 'view' => 'Bekijk',
+ 'view_all' => 'Bekijk Alle',
+ 'new' => 'Nieuw',
+ 'create' => 'Aanmaken',
+ 'update' => 'Bijwerken',
+ 'edit' => 'Bewerk',
+ 'archive' => 'Archiveer',
+ 'unarchive' => 'Terughalen',
+ 'sort' => 'Sorteer',
+ 'move' => 'Verplaats',
+ 'copy' => 'Kopieer',
+ 'reply' => 'Beantwoord',
+ 'delete' => 'Verwijder',
+ 'delete_confirm' => 'Verwijdering bevestigen',
+ 'search' => 'Zoek',
+ 'search_clear' => 'Zoekopdracht wissen',
+ 'reset' => 'Wissen',
+ 'remove' => 'Verwijder',
+ 'add' => 'Voeg toe',
+ 'configure' => 'Configureer',
+ 'manage' => 'Beheer',
+ 'fullscreen' => 'Volledig scherm',
+ 'favourite' => 'Favoriet',
+ 'unfavourite' => 'Verwijderen als favoriet',
+ 'next' => 'Volgende',
+ 'previous' => 'Vorige',
+ 'filter_active' => 'Actieve Filter:',
+ 'filter_clear' => 'Wis Filter',
+ 'download' => 'Download',
+ 'open_in_tab' => 'Open als Tabblad',
+ 'open' => 'Open',
+
+ // Sort Options
+ 'sort_options' => 'Sorteeropties',
+ 'sort_direction_toggle' => 'Sorteerrichting',
+ 'sort_ascending' => 'Sorteer Oplopend',
+ 'sort_descending' => 'Sorteer Aflopend',
+ 'sort_name' => 'Naam',
+ 'sort_default' => 'Standaard',
+ 'sort_created_at' => 'Aanmaakdatum',
+ 'sort_updated_at' => 'Bijwerkdatum',
+
+ // Misc
+ 'deleted_user' => 'Verwijderde gebruiker',
+ 'no_activity' => 'Geen activiteit om weer te geven',
+ 'no_items' => 'Geen items beschikbaar',
+ 'back_to_top' => 'Terug naar boven',
+ 'skip_to_main_content' => 'Spring naar de hoofdinhoud',
+ 'toggle_details' => 'Details weergeven',
+ 'toggle_thumbnails' => 'Miniaturen weergeven',
+ 'details' => 'Details',
+ 'grid_view' => 'Grid Weergave',
+ 'list_view' => 'Lijstweergave',
+ 'default' => 'Standaard',
+ 'breadcrumb' => 'Kruimelspoor',
+ 'status' => 'Status',
+ 'status_active' => 'Actief',
+ 'status_inactive' => 'Inactief',
+ 'never' => 'Nooit',
+ 'none' => 'Geen',
+
+ // Header
+ 'homepage' => 'Startpagina',
+ 'header_menu_expand' => 'Header menu uitvouwen',
+ 'profile_menu' => 'Profiel menu',
+ 'view_profile' => 'Profiel weergeven',
+ 'edit_profile' => 'Profiel bewerken',
+ 'dark_mode' => 'Donkere modus',
+ 'light_mode' => 'Lichte modus',
+ 'global_search' => 'Algemene zoekopdracht',
+
+ // Layout tabs
+ 'tab_info' => 'Info',
+ 'tab_info_label' => 'Tabblad: Toon secundaire informatie',
+ 'tab_content' => 'Inhoud',
+ 'tab_content_label' => 'Tabblad: Toon primaire inhoud',
+
+ // Email Content
+ 'email_action_help' => 'Als de knop ":actionText" niet werkt, kopieer en plak de onderstaande URL in je web browser:',
+ 'email_rights' => 'Alle rechten voorbehouden',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Privacybeleid',
+ 'terms_of_service' => 'Algemene voorwaarden',
+
+ // OpenSearch
+ 'opensearch_description' => 'Zoek in :appName',
+];
diff --git a/lang/nl/components.php b/lang/nl/components.php
new file mode 100644
index 00000000000..a7fdc3725ec
--- /dev/null
+++ b/lang/nl/components.php
@@ -0,0 +1,46 @@
+ 'Selecteer Afbeelding',
+ 'image_list' => 'Afbeeldingslijst',
+ 'image_details' => 'Afbeelding details',
+ 'image_upload' => 'Upload afbeelding',
+ 'image_intro' => 'Hier kan je eerder geüploade afbeeldingen selecteren en beheren.',
+ 'image_intro_upload' => 'Sleep een afbeeldingsbestand naar dit venster of gebruik de "Upload afbeelding"-knop om een afbeelding te uploaden.',
+ 'image_all' => 'Alles',
+ 'image_all_title' => 'Alle afbeeldingen weergeven',
+ 'image_book_title' => 'Bekijk afbeeldingen die naar dit boek zijn geüpload',
+ 'image_page_title' => 'Bekijk afbeeldingen geüpload naar deze pagina',
+ 'image_search_hint' => 'Zoek op afbeeldingsnaam',
+ 'image_uploaded' => 'Geüpload op :uploadedDate',
+ 'image_uploaded_by' => 'Geüpload door :userName',
+ 'image_uploaded_to' => 'Geüpload naar :pageLink',
+ 'image_updated' => ':updateDate bijgewerkt',
+ 'image_load_more' => 'Laad meer',
+ 'image_image_name' => 'Afbeeldingsnaam',
+ 'image_delete_used' => 'Deze afbeelding is op onderstaande pagina\'s in gebruik.',
+ 'image_delete_confirm_text' => 'Weet je zeker dat je deze afbeelding wilt verwijderen?',
+ 'image_select_image' => 'Kies afbeelding',
+ 'image_dropzone' => 'Sleep afbeeldingen naar hier of klik hier om te uploaden',
+ 'image_dropzone_drop' => 'Sleep hier de afbeeldingen naar toe',
+ 'images_deleted' => 'Afbeeldingen verwijderd',
+ 'image_preview' => 'Afbeelding voorbeeld',
+ 'image_upload_success' => 'Afbeelding succesvol geüpload',
+ 'image_update_success' => 'Afbeeldingsdetails succesvol bijgewerkt',
+ 'image_delete_success' => 'Afbeelding succesvol verwijderd',
+ 'image_replace' => 'Vervang Afbeelding',
+ 'image_replace_success' => 'Afbeelding succesvol bijgewerkt',
+ 'image_rebuild_thumbs' => 'Variaties in grootte opnieuw genereren',
+ 'image_rebuild_thumbs_success' => 'Variaties in afbeeldingsgrootte succesvol herbouwd!',
+
+ // Code Editor
+ 'code_editor' => 'Bewerk Code',
+ 'code_language' => 'Codetaal',
+ 'code_content' => 'Code Inhoud',
+ 'code_session_history' => 'Sessie geschiedenis',
+ 'code_save' => 'Sla code op',
+];
diff --git a/lang/nl/editor.php b/lang/nl/editor.php
new file mode 100644
index 00000000000..cc3ad108c03
--- /dev/null
+++ b/lang/nl/editor.php
@@ -0,0 +1,182 @@
+ 'Algemeen',
+ 'advanced' => 'Geavanceerd',
+ 'none' => 'Geen',
+ 'cancel' => 'Annuleer',
+ 'save' => 'Opslaan',
+ 'close' => 'Sluit',
+ 'apply' => 'Toepassen',
+ 'undo' => 'Maak ongedaan',
+ 'redo' => 'Opnieuw uitvoeren',
+ 'left' => 'Links',
+ 'center' => 'Centraal',
+ 'right' => 'Rechts',
+ 'top' => 'Boven',
+ 'middle' => 'Midden',
+ 'bottom' => 'Onder',
+ 'width' => 'Breedte',
+ 'height' => 'Hoogte',
+ 'More' => 'Meer',
+ 'select' => 'Selecteer...',
+
+ // Toolbar
+ 'formats' => 'Stijlen',
+ 'header_large' => 'Grote koptekst',
+ 'header_medium' => 'Middelgrote koptekst',
+ 'header_small' => 'Kleine koptekst',
+ 'header_tiny' => 'Erg kleine koptekst',
+ 'paragraph' => 'Standaard',
+ 'blockquote' => 'Citaat',
+ 'inline_code' => 'Inline code',
+ 'callouts' => 'Markeringen',
+ 'callout_information' => 'Informatie',
+ 'callout_success' => 'Succes',
+ 'callout_warning' => 'Waarschuwing',
+ 'callout_danger' => 'Gevaar',
+ 'bold' => 'Vet',
+ 'italic' => 'Cursief',
+ 'underline' => 'Onderstrepen',
+ 'strikethrough' => 'Doorstrepen',
+ 'superscript' => 'Superscript',
+ 'subscript' => 'Subscript',
+ 'text_color' => 'Tekstkleur',
+ 'highlight_color' => 'Accentkleur',
+ 'custom_color' => 'Aangepaste kleur',
+ 'remove_color' => 'Verwijder kleur',
+ 'background_color' => 'Tekstmarkeringskleur',
+ 'align_left' => 'Links uitlijnen',
+ 'align_center' => 'Centreren',
+ 'align_right' => 'Rechts uitlijnen',
+ 'align_justify' => 'Uitlijnen',
+ 'list_bullet' => 'Opsommingstekens',
+ 'list_numbered' => 'Genummerde lijst',
+ 'list_task' => 'Takenlijst',
+ 'indent_increase' => 'Inspringing vergroten',
+ 'indent_decrease' => 'Inspringing verkleinen',
+ 'table' => 'Tabel',
+ 'insert_image' => 'Afbeelding invoegen',
+ 'insert_image_title' => 'Afbeelding invoegen/bewerken',
+ 'insert_link' => 'Link invoegen/bewerken',
+ 'insert_link_title' => 'Link invoegen/bewerken',
+ 'insert_horizontal_line' => 'Horizontale lijn invoegen',
+ 'insert_code_block' => 'Codeblok invoegen',
+ 'edit_code_block' => 'Bewerk codeblok',
+ 'insert_drawing' => 'Tekening invoegen/bewerken',
+ 'drawing_manager' => 'Beheer tekeningen',
+ 'insert_media' => 'Media invoegen/bewerken',
+ 'insert_media_title' => 'Media invoegen/bewerken',
+ 'clear_formatting' => 'Opmaak wissen',
+ 'source_code' => 'Broncode',
+ 'source_code_title' => 'Broncode',
+ 'fullscreen' => 'Volledig scherm',
+ 'image_options' => 'Afbeeldingsopties',
+
+ // Tables
+ 'table_properties' => 'Tabeleigenschappen',
+ 'table_properties_title' => 'Tabeleigenschappen',
+ 'delete_table' => 'Verwijder tabel',
+ 'table_clear_formatting' => 'Tabel opmaak wissen',
+ 'resize_to_contents' => 'Formaat aanpassen naar inhoud',
+ 'row_header' => 'Koptekst rij',
+ 'insert_row_before' => 'Rij boven invoegen',
+ 'insert_row_after' => 'Rij onder invoegen',
+ 'delete_row' => 'Rij verwijderen',
+ 'insert_column_before' => 'Kolom links invoegen',
+ 'insert_column_after' => 'Kolom rechts invoegen',
+ 'delete_column' => 'Kolom verwijderen',
+ 'table_cell' => 'Cel',
+ 'table_row' => 'Rij',
+ 'table_column' => 'Kolom',
+ 'cell_properties' => 'Cel eigenschappen',
+ 'cell_properties_title' => 'Cel Eigenschappen',
+ 'cell_type' => 'Cel type',
+ 'cell_type_cell' => 'Cel',
+ 'cell_scope' => 'Bereik',
+ 'cell_type_header' => 'Koptekst cel',
+ 'merge_cells' => 'Cellen samenvoegen',
+ 'split_cell' => 'Cel splitsen',
+ 'table_row_group' => 'Rij groep',
+ 'table_column_group' => 'Kolom groep',
+ 'horizontal_align' => 'Horizontaal uitlijnen',
+ 'vertical_align' => 'Verticaal uitlijnen',
+ 'border_width' => 'Randbreedte',
+ 'border_style' => 'Randstijl',
+ 'border_color' => 'Randkleur',
+ 'row_properties' => 'Rij eigenschappen',
+ 'row_properties_title' => 'Rij Eigenschappen',
+ 'cut_row' => 'Knip rij',
+ 'copy_row' => 'Kopieer rij',
+ 'paste_row_before' => 'Plak rij erboven',
+ 'paste_row_after' => 'Plak rij eronder',
+ 'row_type' => 'Rij type',
+ 'row_type_header' => 'Koptekst',
+ 'row_type_body' => 'Inhoud',
+ 'row_type_footer' => 'Voettekst',
+ 'alignment' => 'Uitlijning',
+ 'cut_column' => 'Knip kolom',
+ 'copy_column' => 'Kopieer kolom',
+ 'paste_column_before' => 'Plak kolom links',
+ 'paste_column_after' => 'Plak kolom rechts',
+ 'cell_padding' => 'Cel opvulling',
+ 'cell_spacing' => 'Cel afstand',
+ 'caption' => 'Onderschrift',
+ 'show_caption' => 'Onderschrift tonen',
+ 'constrain' => 'Beperk verhoudingen',
+ 'cell_border_solid' => 'Ononderbroken',
+ 'cell_border_dotted' => 'Gestippeld',
+ 'cell_border_dashed' => 'Gestreept',
+ 'cell_border_double' => 'Dubbel',
+ 'cell_border_groove' => 'Gegroefd',
+ 'cell_border_ridge' => 'Geribbeld',
+ 'cell_border_inset' => 'Inset',
+ 'cell_border_outset' => 'Outset',
+ 'cell_border_none' => 'Geen',
+ 'cell_border_hidden' => 'Verborgen',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Bron',
+ 'alt_desc' => 'Alternatieve beschrijving',
+ 'embed' => 'Insluiten',
+ 'paste_embed' => 'Plak je insluitcode hieronder:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Weer te geven tekst',
+ 'title' => 'Titel',
+ 'browse_links' => 'Blader links',
+ 'open_link' => 'Open koppeling',
+ 'open_link_in' => 'Open koppeling in...',
+ 'open_link_current' => 'Huidig venster',
+ 'open_link_new' => 'Nieuw venster',
+ 'remove_link' => 'Verwijder koppeling',
+ 'insert_collapsible' => 'Voeg inklapbaar blok toe',
+ 'collapsible_unwrap' => 'Uitpakken',
+ 'edit_label' => 'Bewerk label',
+ 'toggle_open_closed' => 'Schakel tussen open/dicht',
+ 'collapsible_edit' => 'Bewerk inklapbaar blok',
+ 'toggle_label' => 'Schakel label aan/uit',
+
+ // About view
+ 'about' => 'Over de bewerker',
+ 'about_title' => 'Over de WYSIWYG Bewerker',
+ 'editor_license' => 'Bewerker Licentie & Copyright',
+ 'editor_lexical_license' => 'Deze editor is gemaakt als een fork van :lexicalLink welke is verstrekt onder de MIT-licentie.',
+ 'editor_lexical_license_link' => 'Volledige licentieinformatie kan hier gevonden worden.',
+ 'editor_tiny_license' => 'Deze editor is gemaakt met behulp van :tinyLink welke is verstrekt onder de MIT-licentie.',
+ 'editor_tiny_license_link' => 'De copyright- en licentiegegevens van TinyMCE vindt u hier.',
+ 'save_continue' => 'Pagina opslaan en verdergaan',
+ 'callouts_cycle' => '(Blijf drukken om door de types te wisselen)',
+ 'link_selector' => 'Koppeling naar inhoud',
+ 'shortcuts' => 'Snelkoppelingen',
+ 'shortcut' => 'Snelkoppeling',
+ 'shortcuts_intro' => 'De volgende sneltoetsen zijn beschikbaar in de bewerker:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Beschrijving',
+];
diff --git a/lang/nl/entities.php b/lang/nl/entities.php
new file mode 100644
index 00000000000..b9be1f42b3c
--- /dev/null
+++ b/lang/nl/entities.php
@@ -0,0 +1,476 @@
+ 'Recent Aangemaakt',
+ 'recently_created_pages' => 'Recent Aangemaakte Pagina\'s',
+ 'recently_updated_pages' => 'Recent bijgewerkte pagina\'s',
+ 'recently_created_chapters' => 'Recent Aangemaakte Hoofdstukken',
+ 'recently_created_books' => 'Recent Aangemaakte Boeken',
+ 'recently_created_shelves' => 'Recent Aangemaakte Boekenplanken',
+ 'recently_update' => 'Recent bijgewerkt',
+ 'recently_viewed' => 'Recent bekeken',
+ 'recent_activity' => 'Recente activiteit',
+ 'create_now' => 'Maak er nu één',
+ 'revisions' => 'Revisies',
+ 'meta_revision' => 'Revisie #:revisionCount',
+ 'meta_created' => 'Gemaakt: :timeLength',
+ 'meta_created_name' => 'Gemaakt: :timeLength door :user',
+ 'meta_updated' => 'Bijgewerkt: :timeLength',
+ 'meta_updated_name' => 'Bijgewerkt: :timeLength door :user',
+ 'meta_owned_name' => 'Eigendom van :user',
+ 'meta_reference_count' => 'Verwijzing in :count item|Verwijzing in :count items',
+ 'entity_select' => 'Entiteit selecteren',
+ 'entity_select_lack_permission' => 'Je hebt niet de vereiste machtiging om dit item te selecteren',
+ 'images' => 'Afbeeldingen',
+ 'my_recent_drafts' => 'Mijn recente concepten',
+ 'my_recently_viewed' => 'Mijn recent bekeken',
+ 'my_most_viewed_favourites' => 'Mijn meest bekeken favorieten',
+ 'my_favourites' => 'Mijn favorieten',
+ 'no_pages_viewed' => 'Je hebt nog geen pagina\'s bekeken',
+ 'no_pages_recently_created' => 'Er zijn geen recent gemaakte pagina\'s',
+ 'no_pages_recently_updated' => 'Er zijn geen pagina\'s recent bijgewerkt',
+ 'export' => 'Exporteer',
+ 'export_html' => 'Ingesloten webbestand',
+ 'export_pdf' => 'PDF bestand',
+ 'export_text' => 'Normaal tekstbestand',
+ 'export_md' => 'Markdown bestand',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Standaard Paginasjabloon',
+ 'default_template_explain' => 'Ken een paginasjabloon toe die zal worden gebruikt als de standaardinhoud voor alle pagina\'s die binnen dit item worden aangemaakt. Houd er rekening mee dat dit alleen zal worden gebruikt als de paginamaker leesrechten heeft voor de gekozen sjabloonpagina.',
+ 'default_template_select' => 'Selecteer een sjabloonpagina',
+ 'import' => 'Import',
+ 'import_validate' => 'Valideer Import',
+ 'import_desc' => 'Importeer boeken, hoofdstukken & pagina\'s met een portable Zip-export van dezelfde, of een andere omgeving. Selecteer een Zip-bestand om door te gaan. Nadat het bestand is geüpload en gecontroleerd kunt u de import configureren en doorvoeren in de volgende weergave.',
+ 'import_zip_select' => 'Selecteer een Zip-bestand om te uploaden',
+ 'import_zip_validation_errors' => 'Er zijn fouten gevonden tijdens het controleren van het Zip-bestand:',
+ 'import_pending' => 'Wachtende Imports',
+ 'import_pending_none' => 'Er zijn geen imports gestart.',
+ 'import_continue' => 'Importeren Voortzetten',
+ 'import_continue_desc' => 'Controleer de inhoud die gaat worden geïmporteerd vanuit get geüploade Zip-bestand. Voer de import door om de inhoud toe te voegen aan dit systeem. Bij een succesvolle import zal het geüploade Zip-bestand automatisch verwijderd worden.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Import Doorvoeren',
+ 'import_size' => ':size Import Zip Grootte',
+ 'import_uploaded_at' => 'Geüpload :relativeTime',
+ 'import_uploaded_by' => 'Geüpload door',
+ 'import_location' => 'Importlocatie',
+ 'import_location_desc' => 'Selecteer een locatie voor de geïmporteerde inhoud. Je hebt de bijbehorende machtigingen nodig op de importlocatie.',
+ 'import_delete_confirm' => 'Weet je zeker dat je deze import wilt verwijderen?',
+ 'import_delete_desc' => 'Dit zal het Zip-bestand van de import permanent verwijderen.',
+ 'import_errors' => 'Importeerfouten',
+ 'import_errors_desc' => 'De volgende fouten deden zich voor tijdens het importeren:',
+ 'breadcrumb_siblings_for_page' => 'Navigeer pagina\'s op hetzelfde niveau',
+ 'breadcrumb_siblings_for_chapter' => 'Navigeer hoofdstukken op hetzelfde niveau',
+ 'breadcrumb_siblings_for_book' => 'Navigeer boeken op hetzelfde niveau',
+ 'breadcrumb_siblings_for_bookshelf' => 'Navigeer boekenplanken op hetzelfde niveau',
+
+ // Permissions and restrictions
+ 'permissions' => 'Machtigingen',
+ 'permissions_desc' => 'Stel hier machtigingen in om de standaardmachtigingen van gebruikersrollen te overschrijven.',
+ 'permissions_book_cascade' => 'Machtigingen voor boeken worden automatisch doorgegeven aan hoofdstukken en pagina\'s, tenzij deze hun eigen machtigingen hebben.',
+ 'permissions_chapter_cascade' => 'Machtigingen ingesteld op hoofdstukken zullen automatisch worden doorgegeven aan onderliggende pagina\'s, tenzij deze hun eigen machtigingen hebben.',
+ 'permissions_save' => 'Machtigingen opslaan',
+ 'permissions_owner' => 'Eigenaar',
+ 'permissions_role_everyone_else' => 'De rest',
+ 'permissions_role_everyone_else_desc' => 'Stel machtigingen in voor alle rollen die niet specifiek overschreven zijn.',
+ 'permissions_role_override' => 'Overschrijf machtigingen voor rol',
+ 'permissions_inherit_defaults' => 'Standaardwaarden overnemen',
+
+ // Search
+ 'search_results' => 'Zoekresultaten',
+ 'search_total_results_found' => ':count resultaten gevonden|totaal :count resultaten gevonden',
+ 'search_clear' => 'Zoekopdracht wissen',
+ 'search_no_pages' => 'Geen pagina\'s gevonden die overeenkomen met deze zoekopdracht',
+ 'search_for_term' => 'Zoeken op :term',
+ 'search_more' => 'Meer resultaten',
+ 'search_advanced' => 'Uitgebreid zoeken',
+ 'search_terms' => 'Zoektermen',
+ 'search_content_type' => 'Inhoudstype',
+ 'search_exact_matches' => 'Exacte overeenkomsten',
+ 'search_tags' => 'Label Zoekopdrachten',
+ 'search_options' => 'Opties',
+ 'search_viewed_by_me' => 'Bekeken door mij',
+ 'search_not_viewed_by_me' => 'Niet bekeken door mij',
+ 'search_permissions_set' => 'Machtigingen ingesteld',
+ 'search_created_by_me' => 'Door mij gemaakt',
+ 'search_updated_by_me' => 'Door mij bijgewerkt',
+ 'search_owned_by_me' => 'Eigendom van mij',
+ 'search_date_options' => 'Datum opties',
+ 'search_updated_before' => 'Bijgewerkt voor',
+ 'search_updated_after' => 'Bijgewerkt na',
+ 'search_created_before' => 'Gemaakt voor',
+ 'search_created_after' => 'Gemaakt na',
+ 'search_set_date' => 'Stel datum in',
+ 'search_update' => 'Update zoekresultaten',
+
+ // Shelves
+ 'shelf' => 'Boekenplank',
+ 'shelves' => 'Boekenplanken',
+ 'x_shelves' => ':count Boekenplank|:count Boekenplanken',
+ 'shelves_empty' => 'Er zijn geen boekenplanken gemaakt',
+ 'shelves_create' => 'Nieuwe boekenplank maken',
+ 'shelves_popular' => 'Populaire boekenplanken',
+ 'shelves_new' => 'Nieuwe boekenplanken',
+ 'shelves_new_action' => 'Nieuwe boekenplank',
+ 'shelves_popular_empty' => 'Hier worden de meest populaire boekenplanken weergegeven.',
+ 'shelves_new_empty' => 'Hier worden de meest recent gemaakte boekenplanken weergegeven.',
+ 'shelves_save' => 'Boekenplank opslaan',
+ 'shelves_books' => 'Boeken op deze plank',
+ 'shelves_add_books' => 'Voeg boeken toe aan deze plank',
+ 'shelves_drag_books' => 'Sleep boeken hieronder om ze toe te voegen aan deze boekenplank',
+ 'shelves_empty_contents' => 'Aan deze plank zijn geen boeken toegewezen',
+ 'shelves_edit_and_assign' => 'Bewerk boekenplank om boeken toe te wijzen',
+ 'shelves_edit_named' => 'Bewerk Boekenplank :name',
+ 'shelves_edit' => 'Bewerk Boekenplank',
+ 'shelves_delete' => 'Verwijder Boekenplank',
+ 'shelves_delete_named' => 'Verwijder Boekenplank :name',
+ 'shelves_delete_explain' => "Dit zal de boekenplank met de naam ':naam' verwijderen. Boeken die op deze plank staan worden echter niet verwijderd.",
+ 'shelves_delete_confirmation' => 'Weet je zeker dat je deze boekenplank wilt verwijderen?',
+ 'shelves_permissions' => 'Boekenplank Machtigingen',
+ 'shelves_permissions_updated' => 'Boekenplank Machtigingen Bijgewerkt',
+ 'shelves_permissions_active' => 'Machtigingen op Boekenplank Actief',
+ 'shelves_permissions_cascade_warning' => 'De ingestelde machtigingen op deze boekenplank worden niet automatisch toegepast op de boeken van deze boekenplank. Dit is omdat een boek toegekend kan worden op meerdere boekenplanken. De machtigingen van deze boekenplank kunnen echter wel gekopieerd worden naar de boeken van deze boekenplank via de optie hieronder.',
+ 'shelves_permissions_create' => '\'Maak boekenplank\' machtigingen worden enkel gebruikt om machtigingen te kopiëren naar boeken binnenin een boekenplank door gebruik te maken van onderstaande actie. Deze machtigingen laten niet toe om een nieuw boek aan te maken.',
+ 'shelves_copy_permissions_to_books' => 'Kopieer Machtigingen naar Boeken',
+ 'shelves_copy_permissions' => 'Kopieer Machtigingen',
+ 'shelves_copy_permissions_explain' => 'Met deze actie worden de machtigingen van deze boekenplank gekopieerd naar alle boeken van deze boekenplank. Voor je deze actie uitvoert, moet je ervoor zorgen dat alle wijzigingen in de machtigingen van deze boekenplank zijn opgeslagen.',
+ 'shelves_copy_permission_success' => 'Boekenplank machtigingen gekopieerd naar :count boeken',
+
+ // Books
+ 'book' => 'Boek',
+ 'books' => 'Boeken',
+ 'x_books' => ':count Boek|:count Boeken',
+ 'books_empty' => 'Er zijn geen boeken aangemaakt',
+ 'books_popular' => 'Populaire boeken',
+ 'books_recent' => 'Recente boeken',
+ 'books_new' => 'Nieuwe boeken',
+ 'books_new_action' => 'Nieuw boek',
+ 'books_popular_empty' => 'Hier worden de meest populaire boeken weergegeven.',
+ 'books_new_empty' => 'Hier worden de meest recent gemaakte boeken weergegeven.',
+ 'books_create' => 'Nieuw boek maken',
+ 'books_delete' => 'Boek verwijderen',
+ 'books_delete_named' => 'Verwijder boek :bookName',
+ 'books_delete_explain' => 'Deze actie verwijdert het boek \':bookName\', Alle pagina\'s en hoofdstukken worden verwijderd.',
+ 'books_delete_confirmation' => 'Weet je zeker dat je dit boek wilt verwijderen?',
+ 'books_edit' => 'Boek bewerken',
+ 'books_edit_named' => 'Bewerk boek :bookName',
+ 'books_form_book_name' => 'Boek naam',
+ 'books_save' => 'Boek opslaan',
+ 'books_permissions' => 'Boek machtigingen',
+ 'books_permissions_updated' => 'Boek Machtigingen Bijgewerkt',
+ 'books_empty_contents' => 'Er zijn nog geen hoofdstukken en pagina\'s voor dit boek gemaakt.',
+ 'books_empty_create_page' => 'Nieuwe pagina maken',
+ 'books_empty_sort_current_book' => 'Boek sorteren',
+ 'books_empty_add_chapter' => 'Hoofdstuk toevoegen',
+ 'books_permissions_active' => 'Machtigingen op Boek Actief',
+ 'books_search_this' => 'Zoeken in dit boek',
+ 'books_navigation' => 'Boek navigatie',
+ 'books_sort' => 'Inhoud van het boek sorteren',
+ 'books_sort_desc' => 'Verplaats hoofdstukken en pagina\'s door het boek om ze te organiseren. Andere boeken kunnen worden toegevoegd zodat hoofdstukken en pagina\'s gemakkelijk tussen boeken kunnen worden verplaatst. Het is mogelijk om een automatische sorteerregel in te stellen die de inhoud zal sorteren bij wijzigingen.',
+ 'books_sort_auto_sort' => 'Automatisch Sorteren',
+ 'books_sort_auto_sort_active' => 'Automatisch Sorteren Actief: :sortName',
+ 'books_sort_named' => 'Sorteer boek :bookName',
+ 'books_sort_name' => 'Sorteren op naam',
+ 'books_sort_created' => 'Sorteren op datum van aanmaken',
+ 'books_sort_updated' => 'Sorteren op datum van bijgewerkt',
+ 'books_sort_chapters_first' => 'Hoofdstukken eerst',
+ 'books_sort_chapters_last' => 'Hoofdstukken laatst',
+ 'books_sort_show_other' => 'Bekijk andere boeken',
+ 'books_sort_save' => 'Nieuwe volgorde opslaan',
+ 'books_sort_show_other_desc' => 'Voeg hier andere boeken toe om ze op te nemen in de sortering, en om een gemakkelijke reorganisatie van boeken mogelijk te maken.',
+ 'books_sort_move_up' => 'Verplaats naar boven',
+ 'books_sort_move_down' => 'Verplaats naar beneden',
+ 'books_sort_move_prev_book' => 'Verplaats naar het vorige boek',
+ 'books_sort_move_next_book' => 'Verplaats naar het volgende boek',
+ 'books_sort_move_prev_chapter' => 'Verplaats naar het vorige hoofdstuk',
+ 'books_sort_move_next_chapter' => 'Verplaats naar het volgende hoofdstuk',
+ 'books_sort_move_book_start' => 'Verplaats naar het begin van het boek',
+ 'books_sort_move_book_end' => 'Verplaats naar het einde van het boek',
+ 'books_sort_move_before_chapter' => 'Verplaats naar vóór het hoofdstuk',
+ 'books_sort_move_after_chapter' => 'Verplaats naar áchter het hoofdstuk',
+ 'books_copy' => 'Kopieer Boek',
+ 'books_copy_success' => 'Boek succesvol gekopieerd',
+
+ // Chapters
+ 'chapter' => 'Hoofdstuk',
+ 'chapters' => 'Hoofdstukken',
+ 'x_chapters' => ':count Hoofdstuk|:count Hoofdstukken',
+ 'chapters_popular' => 'Populaire hoofdstukken',
+ 'chapters_new' => 'Nieuw hoofdstuk',
+ 'chapters_create' => 'Nieuw hoofdstuk maken',
+ 'chapters_delete' => 'Hoofdstuk verwijderen',
+ 'chapters_delete_named' => 'Verwijder hoofdstuk :chapterName',
+ 'chapters_delete_explain' => 'Dit verwijdert het hoofdstuk met de naam \':chapterName\'. Alle pagina\'s in dit hoofdstuk zullen ook worden verwijderd.',
+ 'chapters_delete_confirm' => 'Weet je zeker dat je dit hoofdstuk wilt verwijderen?',
+ 'chapters_edit' => 'Hoofdstuk aanpassen',
+ 'chapters_edit_named' => 'Hoofdstuk :chapterName aanpassen',
+ 'chapters_save' => 'Hoofdstuk opslaan',
+ 'chapters_move' => 'Hoofdstuk verplaatsen',
+ 'chapters_move_named' => 'Verplaatst hoofdstuk :chapterName',
+ 'chapters_copy' => 'Kopieer Hoofdstuk',
+ 'chapters_copy_success' => 'Hoofdstuk succesvol gekopieerd',
+ 'chapters_permissions' => 'Hoofdstuk Machtigingen',
+ 'chapters_empty' => 'Er zijn geen pagina\'s in dit hoofdstuk aangemaakt.',
+ 'chapters_permissions_active' => 'Hoofdstuk Machtigingen Actief',
+ 'chapters_permissions_success' => 'Hoofdstuk Machtigingen Bijgewerkt',
+ 'chapters_search_this' => 'Zoek in dit hoofdstuk',
+ 'chapter_sort_book' => 'Sorteer Boek',
+
+ // Pages
+ 'page' => 'Pagina',
+ 'pages' => 'Pagina\'s',
+ 'x_pages' => ':count Pagina|:count Pagina\'s',
+ 'pages_popular' => 'Populaire pagina\'s',
+ 'pages_new' => 'Nieuwe pagina',
+ 'pages_attachments' => 'Bijlages',
+ 'pages_navigation' => 'Pagina navigatie',
+ 'pages_delete' => 'Pagina verwijderen',
+ 'pages_delete_named' => 'Verwijder pagina :pageName',
+ 'pages_delete_draft_named' => 'Verwijder concept pagina :pageName',
+ 'pages_delete_draft' => 'Verwijder concept pagina',
+ 'pages_delete_success' => 'Pagina verwijderd',
+ 'pages_delete_draft_success' => 'Concept verwijderd',
+ 'pages_delete_warning_template' => 'Deze pagina wordt actief gebruikt als standaardsjabloon voor een boek of hoofdstuk. Nadat deze pagina is verwijderd, zullen deze boeken of hoofdstukken geen standaardsjabloon meer toegewezen hebben.',
+ 'pages_delete_confirm' => 'Weet je zeker dat je deze pagina wilt verwijderen?',
+ 'pages_delete_draft_confirm' => 'Weet je zeker dat je dit concept wilt verwijderen?',
+ 'pages_editing_named' => 'Pagina :pageName aan het bewerken',
+ 'pages_edit_draft_options' => 'Concept opties',
+ 'pages_edit_save_draft' => 'Concept opslaan',
+ 'pages_edit_draft' => 'Paginaconcept bewerken',
+ 'pages_editing_draft' => 'Concept bewerken',
+ 'pages_editing_page' => 'Concept bewerken',
+ 'pages_edit_draft_save_at' => 'Concept opgeslagen op ',
+ 'pages_edit_delete_draft' => 'Concept verwijderen',
+ 'pages_edit_delete_draft_confirm' => 'Weet je zeker dat je de wijzigingen in je concept wilt verwijderen? Al je wijzigingen sinds de laatste succesvolle bewaring gaan verloren en de editor wordt bijgewerkt met de meest recente niet-concept versie van de pagina.',
+ 'pages_edit_discard_draft' => 'Concept verwijderen',
+ 'pages_edit_switch_to_markdown' => 'Schakel naar de Markdown Bewerker',
+ 'pages_edit_switch_to_markdown_clean' => '(Opgeschoonde Inhoud)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stabiele Inhoud)',
+ 'pages_edit_switch_to_wysiwyg' => 'Schakel naar de WYSIWYG Bewerker',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Schakel naar de nieuwe WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta-testfase)',
+ 'pages_edit_set_changelog' => 'Logboek instellen',
+ 'pages_edit_enter_changelog_desc' => 'Geef een korte omschrijving van de wijzigingen die je gemaakt hebt',
+ 'pages_edit_enter_changelog' => 'Voeg toe aan logboek',
+ 'pages_editor_switch_title' => 'Schakel Bewerker',
+ 'pages_editor_switch_are_you_sure' => 'Weet je zeker dat je de bewerker voor deze pagina wilt wijzigen?',
+ 'pages_editor_switch_consider_following' => 'Houd rekening met het volgende als u van bewerker verandert:',
+ 'pages_editor_switch_consideration_a' => 'Eenmaal opgeslagen, zal de nieuwe bewerker keuze gebruikt worden door alle toekomstige gebruikers, ook diegene die zelf niet van bewerker type kunnen veranderen.',
+ 'pages_editor_switch_consideration_b' => 'Dit kan mogelijks tot een verlies van detail en syntax leiden in bepaalde omstandigheden.',
+ 'pages_editor_switch_consideration_c' => 'De veranderingen aan Labels of aan het wijzigingslogboek, sinds de laatste keer opslaan, zullen niet behouden blijven met deze wijziging.',
+ 'pages_save' => 'Pagina opslaan',
+ 'pages_title' => 'Pagina titel',
+ 'pages_name' => 'Pagina naam',
+ 'pages_md_editor' => 'Bewerker',
+ 'pages_md_preview' => 'Voorbeeld',
+ 'pages_md_insert_image' => 'Afbeelding invoegen',
+ 'pages_md_insert_link' => 'Entiteit link invoegen',
+ 'pages_md_insert_drawing' => 'Tekening invoegen',
+ 'pages_md_show_preview' => 'Toon voorbeeld',
+ 'pages_md_sync_scroll' => 'Synchroniseer scrollen van voorbeeld',
+ 'pages_md_plain_editor' => 'Normale tekst bewerker',
+ 'pages_drawing_unsaved' => 'Niet-opgeslagen Tekening Gevonden',
+ 'pages_drawing_unsaved_confirm' => 'Er zijn niet-opgeslagen tekeninggegevens gevonden van een eerdere mislukte poging om de tekening op te slaan. Wil je deze niet-opgeslagen tekening herstellen en verder bewerken?',
+ 'pages_not_in_chapter' => 'Pagina is niet in een hoofdstuk',
+ 'pages_move' => 'Pagina Verplaatsen',
+ 'pages_copy' => 'Pagina kopiëren',
+ 'pages_copy_desination' => 'Kopieër bestemming',
+ 'pages_copy_success' => 'Pagina succesvol gekopieerd',
+ 'pages_permissions' => 'Pagina Machtigingen',
+ 'pages_permissions_success' => 'Pagina machtigingen bijgewerkt',
+ 'pages_revision' => 'Revisie',
+ 'pages_revisions' => 'Pagina revisies',
+ 'pages_revisions_desc' => 'Hieronder staan alle vorige versies van deze pagina. Je kunt oude paginaversies terugkijken, vergelijken en herstellen indien de rechten dit toelaten. De volledige geschiedenis van de pagina wordt hier mogelijk niet volledig weergegeven omdat, afhankelijk van de systeemconfiguratie, oude versies al automatisch verwijderd kunnen zijn.',
+ 'pages_revisions_named' => 'Pagina revisies voor :pageName',
+ 'pages_revision_named' => 'Pagina revisie voor :pageName',
+ 'pages_revision_restored_from' => 'Hersteld van #:id; :samenvatting',
+ 'pages_revisions_created_by' => 'Gemaakt door',
+ 'pages_revisions_date' => 'Revisiedatum',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Versie Nummer',
+ 'pages_revisions_numbered' => 'Revisie #:id',
+ 'pages_revisions_numbered_changes' => 'Revisie #:id wijzigingen',
+ 'pages_revisions_editor' => 'Bewerker Type',
+ 'pages_revisions_changelog' => 'Logboek',
+ 'pages_revisions_changes' => 'Wijzigingen',
+ 'pages_revisions_current' => 'Huidige versie',
+ 'pages_revisions_preview' => 'Voorbeeld',
+ 'pages_revisions_restore' => 'Herstellen',
+ 'pages_revisions_none' => 'Deze pagina heeft geen revisies',
+ 'pages_copy_link' => 'Link kopiëren',
+ 'pages_edit_content_link' => 'Ga naar sectie in bewerker',
+ 'pages_pointer_enter_mode' => 'Open selectiemodus per onderdeel',
+ 'pages_pointer_label' => 'Pagina Onderdeel Opties',
+ 'pages_pointer_permalink' => 'Pagina Onderdeel Permalink',
+ 'pages_pointer_include_tag' => 'Pagina Onderdeel Tag Toevoeging',
+ 'pages_pointer_toggle_link' => 'Permalink modus, Druk om Tag Toevoeging te tonen',
+ 'pages_pointer_toggle_include' => 'Tag Toevoeging modus, Druk om Permalink te tonen',
+ 'pages_permissions_active' => 'Pagina Machtigingen Actief',
+ 'pages_initial_revision' => 'Eerste publicatie',
+ 'pages_references_update_revision' => 'Automatische systeemupdate van interne links',
+ 'pages_initial_name' => 'Nieuwe pagina',
+ 'pages_editing_draft_notification' => 'U bewerkt momenteel een concept dat voor het laatst is opgeslagen op :timeDiff.',
+ 'pages_draft_edited_notification' => 'Deze pagina is sindsdien bijgewerkt. Het wordt aanbevolen dat je dit concept verwijderd.',
+ 'pages_draft_page_changed_since_creation' => 'Deze pagina is bijgewerkt sinds het aanmaken van dit concept. Het wordt aanbevolen dat u dit concept verwijdert of ervoor zorgt dat u wijzigingen op de pagina niet overschrijft.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count gebruikers zijn begonnen deze pagina te bewerken',
+ 'start_b' => ':userName is begonnen met het bewerken van deze pagina',
+ 'time_a' => 'sinds de laatste pagina-update',
+ 'time_b' => 'in de laatste :minCount minuten',
+ 'message' => ':start :time. Let op om elkaars updates niet te overschrijven!',
+ ],
+ 'pages_draft_discarded' => 'Concept verworpen! De bewerker is bijgewerkt met de huidige inhoud van de pagina',
+ 'pages_draft_deleted' => 'Concept verwijderd! De bewerker is bijgewerkt met de huidige inhoud van de pagina',
+ 'pages_specific' => 'Specifieke pagina',
+ 'pages_is_template' => 'Paginasjabloon',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Zijbalk Tonen/Verbergen',
+ 'page_tags' => 'Pagina Labels',
+ 'chapter_tags' => 'Hoofdstuk Labels',
+ 'book_tags' => 'Boek Labels',
+ 'shelf_tags' => 'Boekenplank Labels',
+ 'tag' => 'Label',
+ 'tags' => 'Labels',
+ 'tags_index_desc' => 'Labels kunnen worden toegepast op inhoud binnen het systeem om een flexibele vorm van categorisering toe te passen. Labels kunnen zowel een sleutel als een waarde hebben, waarbij de waarde optioneel is. Eenmaal toegepast, kan de inhoud worden opgevraagd aan de hand van de naam en de waarde van het label.',
+ 'tag_name' => 'Labelnaam',
+ 'tag_value' => 'Labelwaarde (Optioneel)',
+ 'tags_explain' => "Voeg enkele labels toe om je inhoud beter te categoriseren.\nJe kunt een waarde aan een label toekennen voor een meer gedetailleerde organisatie.",
+ 'tags_add' => 'Voeg nog een label toe',
+ 'tags_remove' => 'Verwijder deze label',
+ 'tags_usages' => 'Totaal aantal label-toepassingen',
+ 'tags_assigned_pages' => 'Toegewezen aan pagina\'s',
+ 'tags_assigned_chapters' => 'Toegewezen aan hoofdstukken',
+ 'tags_assigned_books' => 'Toegewezen aan boeken',
+ 'tags_assigned_shelves' => 'Toegewezen aan boekenplanken',
+ 'tags_x_unique_values' => ':count unieke waarden',
+ 'tags_all_values' => 'Alle waarden',
+ 'tags_view_tags' => 'Bekijk Labels',
+ 'tags_view_existing_tags' => 'Bekijk bestaande labels',
+ 'tags_list_empty_hint' => 'Labels kunnen worden toegekend via de zijbalk van de pagina-bewerker of tijdens het bewerken van de details van een boek, hoofdstuk of boekenplank.',
+ 'attachments' => 'Bijlages',
+ 'attachments_explain' => 'Upload bijlages of voeg een link toe. Deze worden zichtbaar in het navigatiepaneel.',
+ 'attachments_explain_instant_save' => 'Wijzigingen worden meteen opgeslagen.',
+ 'attachments_upload' => 'Bestand uploaden',
+ 'attachments_link' => 'Link toevoegen',
+ 'attachments_upload_drop' => 'Je kan ook een bestand hiernaartoe slepen om het als bijlage te uploaden.',
+ 'attachments_set_link' => 'Zet link',
+ 'attachments_delete' => 'Weet je zeker dat je deze bijlage wilt verwijderen?',
+ 'attachments_dropzone' => 'Sleep hier de bestanden naar toe',
+ 'attachments_no_files' => 'Er zijn geen bestanden geüpload',
+ 'attachments_explain_link' => 'Je kunt een hyperlink toevoegen als je geen bestanden wilt uploaden. Dit kan een link naar een andere pagina op deze website zijn, maar ook een link naar een andere website.',
+ 'attachments_link_name' => 'Link naam',
+ 'attachment_link' => 'Bijlage link',
+ 'attachments_link_url' => 'Hyperlink naar bestand',
+ 'attachments_link_url_hint' => 'URL van site of bestand',
+ 'attach' => 'Toevoegen',
+ 'attachments_insert_link' => 'Bijlage hyperlink toevoegen aan pagina',
+ 'attachments_edit_file' => 'Bestand bewerken',
+ 'attachments_edit_file_name' => 'Bestandsnaam',
+ 'attachments_edit_drop_upload' => 'Sleep een bestand of klik hier om te uploaden en te overschrijven',
+ 'attachments_order_updated' => 'De volgorde van de bijlages is bijgewerkt',
+ 'attachments_updated_success' => 'Bijlage details bijgewerkt',
+ 'attachments_deleted' => 'Bijlage verwijderd',
+ 'attachments_file_uploaded' => 'Bestand succesvol geüpload',
+ 'attachments_file_updated' => 'Bestand succesvol bijgewerkt',
+ 'attachments_link_attached' => 'Hyperlink succesvol gekoppeld aan de pagina',
+ 'templates' => 'Sjablonen',
+ 'templates_set_as_template' => 'Pagina is een sjabloon',
+ 'templates_explain_set_as_template' => 'Je kan deze pagina als sjabloon instellen zodat de inhoud gebruikt kan worden bij het maken van andere pagina\'s. Andere gebruikers kunnen dit sjabloon gebruiken als ze de machtiging hebben om deze pagina te zien.',
+ 'templates_replace_content' => 'Pagina-inhoud vervangen',
+ 'templates_append_content' => 'Toevoegen aan pagina-inhoud',
+ 'templates_prepend_content' => 'Voeg vooraan toe aan pagina-inhoud',
+
+ // Profile View
+ 'profile_user_for_x' => 'Lid sinds :time',
+ 'profile_created_content' => 'Gemaakte Inhoud',
+ 'profile_not_created_pages' => ':userName heeft geen pagina\'s gemaakt',
+ 'profile_not_created_chapters' => ':userName heeft geen hoofdstukken gemaakt',
+ 'profile_not_created_books' => ':userName heeft geen boeken gemaakt',
+ 'profile_not_created_shelves' => ':userName heeft geen boekenplanken gemaakt',
+
+ // Comments
+ 'comment' => 'Opmerking',
+ 'comments' => 'Opmerkingen',
+ 'comment_add' => 'Opmerking toevoegen',
+ 'comment_none' => 'Geen opmerkingen om weer te geven',
+ 'comment_placeholder' => 'Laat hier een opmerking achter',
+ 'comment_thread_count' => ':count Opmerking Thread|:count Opmerking Threads',
+ 'comment_archived_count' => ':count Gearchiveerd',
+ 'comment_archived_threads' => 'Gearchiveerde Threads',
+ 'comment_save' => 'Sla opmerking op',
+ 'comment_new' => 'Nieuwe opmerking',
+ 'comment_created' => 'opmerking gegeven :createDiff',
+ 'comment_updated' => 'Updatet :updateDiff door :username',
+ 'comment_updated_indicator' => 'Bijgewerkt',
+ 'comment_deleted_success' => 'Opmerking verwijderd',
+ 'comment_created_success' => 'Opmerking toegevoegd',
+ 'comment_updated_success' => 'Opmerking bijgewerkt',
+ 'comment_archive_success' => 'Opmerking gearchiveerd',
+ 'comment_unarchive_success' => 'Opmerking teruggehaald',
+ 'comment_view' => 'Opmerking weergeven',
+ 'comment_jump_to_thread' => 'Ga naar thread',
+ 'comment_delete_confirm' => 'Weet je zeker dat je deze opmerking wilt verwijderen?',
+ 'comment_in_reply_to' => 'Als antwoord op :commentId',
+ 'comment_reference' => 'Verwijzing',
+ 'comment_reference_outdated' => '(Verouderd)',
+ 'comment_editor_explain' => 'Hier zijn de opmerkingen die zijn achtergelaten op deze pagina. Opmerkingen kunnen worden toegevoegd en beheerd wanneer u de opgeslagen pagina bekijkt.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Weet je zeker dat je deze revisie wilt verwijderen?',
+ 'revision_restore_confirm' => 'Weet je zeker dat je deze revisie wilt herstellen? De huidige pagina-inhoud wordt vervangen.',
+ 'revision_cannot_delete_latest' => 'Kan de laatste revisie niet verwijderen.',
+
+ // Copy view
+ 'copy_consider' => 'Houd rekening met het onderstaande wanneer u inhoud kopieert.',
+ 'copy_consider_permissions' => 'Aangepaste machtigingsinstellingen worden niet gekopieerd.',
+ 'copy_consider_owner' => 'Je wordt de eigenaar van alle gekopieerde inhoud.',
+ 'copy_consider_images' => 'Afbeeldingsbestanden worden niet gedupliceerd & de originele afbeeldingen behouden hun koppeling met de pagina waarop ze oorspronkelijk werden geüpload.',
+ 'copy_consider_attachments' => 'Pagina bijlagen worden niet gekopieerd.',
+ 'copy_consider_access' => 'Een verandering van locatie, eigenaar of machtigingen kan ertoe leiden dat deze inhoud toegankelijk wordt voor personen die eerder geen toegang hadden.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Converteer naar Boekenplank',
+ 'convert_to_shelf_contents_desc' => 'Je kunt dit boek converteren naar een nieuwe boekenplank met dezelfde inhoud. Hoofdstukken in dit boek zullen worden geconverteerd naar nieuwe boeken. Als dit boek pagina\'s bevat, die niet in een hoofdstuk staan, zal dit boek een nieuwe naam krijgen en deze pagina\'s bevatten, en zal dit boek deel gaan uitmaken van de nieuwe boekenplank.',
+ 'convert_to_shelf_permissions_desc' => 'Elke machtiging ingesteld op dit boek zal gekopieerd worden naar de nieuwe boekenplank en naar alle nieuwe onderliggende boeken die geen eigen machtiging hebben afgedwongen. Merk op dat boekenplank-machtigingen niet automatisch overdragen naar inhoud binnenin de boekenplank, zoals dat wel gebeurd bij boeken.',
+ 'convert_book' => 'Converteer Boek',
+ 'convert_book_confirm' => 'Weet je zeker dat je dit boek wil converteren?',
+ 'convert_undo_warning' => 'Dit kan niet eenvoudig ongedaan gemaakt worden.',
+ 'convert_to_book' => 'Converteer naar Boek',
+ 'convert_to_book_desc' => 'Je kan dit hoofdstuk converteren naar een nieuw boek met dezelfde inhoud. Alle machtigingen ingesteld op dit hoofdstuk zullen worden gekopieerd naar het nieuwe boek, maar alle geërfde machtigingen, van het bovenliggende boek, zullen niet worden gekopieerd, wat kan leiden tot een wijziging van de toegangscontrole.',
+ 'convert_chapter' => 'Converteer Hoofdstuk',
+ 'convert_chapter_confirm' => 'Weet je zeker dat je dit hoofdstuk wil converteren?',
+
+ // References
+ 'references' => 'Verwijzingen',
+ 'references_none' => 'Er zijn geen verwijzingen naar dit item bijgehouden.',
+ 'references_to_desc' => 'Hieronder staat alle bekende inhoud in het systeem die gekoppeld is aan dit item.',
+
+ // Watch Options
+ 'watch' => 'Volg',
+ 'watch_title_default' => 'Standaard Voorkeuren',
+ 'watch_desc_default' => 'Terugkeren naar alleen je standaardvoorkeuren voor meldingen.',
+ 'watch_title_ignore' => 'Negeer',
+ 'watch_desc_ignore' => 'Negeer alle meldingen, inclusief die van voorkeuren op gebruikersniveau.',
+ 'watch_title_new' => 'Nieuwe pagina\'s',
+ 'watch_desc_new' => 'Geef een melding wanneer er een nieuwe pagina wordt gemaakt binnen dit item.',
+ 'watch_title_updates' => 'Alle pagina updates',
+ 'watch_desc_updates' => 'Geef een melding van alle nieuwe pagina\'s en pagina wijzigingen.',
+ 'watch_desc_updates_page' => 'Geef een melding van pagina wijzigingen.',
+ 'watch_title_comments' => 'Alle Pagina Updates & Opmerkingen',
+ 'watch_desc_comments' => 'Geef een melding van alle nieuwe pagina\'s, pagina wijzigingen en nieuwe opmerkingen.',
+ 'watch_desc_comments_page' => 'Geef een melding van pagina wijzigingen en nieuwe opmerkingen.',
+ 'watch_change_default' => 'Standaardvoorkeuren voor meldingen wijzigen',
+ 'watch_detail_ignore' => 'Meldingen negeren',
+ 'watch_detail_new' => 'Nieuwe pagina\'s aan het volgen',
+ 'watch_detail_updates' => 'Nieuwe pagina\'s en aanpassingen aan het volgen',
+ 'watch_detail_comments' => 'Nieuwe pagina\'s, aanpassingen en opmerkingen aan het volgen',
+ 'watch_detail_parent_book' => 'Aan het volgen via bovenliggend boek',
+ 'watch_detail_parent_book_ignore' => 'Aan het negeren via bovenliggend boek',
+ 'watch_detail_parent_chapter' => 'Aan het volgen via bovenliggend hoofdstuk',
+ 'watch_detail_parent_chapter_ignore' => 'Aan het negeren via bovenliggend hoofdstuk',
+];
diff --git a/lang/nl/errors.php b/lang/nl/errors.php
new file mode 100644
index 00000000000..0e478fd5ac6
--- /dev/null
+++ b/lang/nl/errors.php
@@ -0,0 +1,135 @@
+ 'Je hebt geen machtiging om de gevraagde pagina te openen.',
+ 'permissionJson' => 'Je hebt geen machtiging om de gevraagde actie uit te voeren.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Er bestaat al een gebruiker met het e-mailadres :email, maar met andere inloggegevens.',
+ 'auth_pre_register_theme_prevention' => 'Het gebruikersaccount kon niet worden geregistreerd met de opgegeven informatie',
+ 'email_already_confirmed' => 'Het e-mailadres is al bevestigd, probeer in te loggen.',
+ 'email_confirmation_invalid' => 'Deze bevestigingstoken is niet geldig of al gebruikt, probeer opnieuw te registreren.',
+ 'email_confirmation_expired' => 'Het bevestigingstoken is verlopen, Er is een nieuwe bevestigingsmail verzonden.',
+ 'email_confirmation_awaiting' => 'Het e-mailadres van dit account moet worden bevestigd',
+ 'ldap_fail_anonymous' => 'LDAP-toegang met \'anonymous bind\' is mislukt',
+ 'ldap_fail_authed' => 'LDAP-toegang is mislukt met het opgegeven dn & wachtwoord',
+ 'ldap_extension_not_installed' => 'LDAP PHP-extensie is niet geïnstalleerd',
+ 'ldap_cannot_connect' => 'Kan geen verbinding maken met de ldap server, initiële verbinding is mislukt',
+ 'saml_already_logged_in' => 'Reeds ingelogd',
+ 'saml_no_email_address' => 'In de gegevens van het externe verificatiesysteem kon voor deze gebruiker geen e-mailadres gevonden worden',
+ 'saml_invalid_response_id' => 'Het verzoek van het externe authenticatiesysteem wordt niet herkend door een proces dat door deze applicatie wordt gestart. Terugkeren na inloggen kan dit probleem veroorzaken.',
+ 'saml_fail_authed' => 'Inloggen met :system mislukt, het systeem gaf geen succesvolle autorisatie',
+ 'oidc_already_logged_in' => 'Reeds ingelogd',
+ 'oidc_no_email_address' => 'In de gegevens van het externe verificatiesysteem kon voor deze gebruiker geen e-mailadres gevonden worden',
+ 'oidc_fail_authed' => 'Inloggen met :system mislukt, systeem heeft geen succesvolle autorisatie gegeven',
+ 'social_no_action_defined' => 'Geen actie gedefinieerd',
+ 'social_login_bad_response' => "Fout ontvangen tijdens :socialAccount login: \n:error",
+ 'social_account_in_use' => 'Dit :socialAccount account is al in gebruik, Probeer in te loggen met de :socialAccount optie.',
+ 'social_account_email_in_use' => 'Het e-mailadres :email is al in gebruik. Als je al een account hebt, kun je met een :socialAccount account verbinden in je profielinstellingen.',
+ 'social_account_existing' => 'Dit :socialAccount is al gekoppeld aan je profiel.',
+ 'social_account_already_used_existing' => 'Dit :socialAccount account is al gebruikt door een andere gebruiker.',
+ 'social_account_not_used' => 'Dit :socialAccount account is niet gekoppeld aan een gebruiker. Koppel het via je profielinstellingen. ',
+ 'social_account_register_instructions' => 'Als je nog geen account hebt, kun je je registreren met de :socialAccount optie.',
+ 'social_driver_not_found' => 'Social driver niet gevonden',
+ 'social_driver_not_configured' => 'Je :socialAccount instellingen zijn niet correct geconfigureerd.',
+ 'invite_token_expired' => 'Deze uitnodigingslink is verlopen. Je kunt in plaats daarvan proberen je wachtwoord te herstellen.',
+ 'login_user_not_found' => 'Er is geen gebruiker gevonden voor deze actie.',
+
+ // System
+ 'path_not_writable' => 'Bestandspad :filePath kon niet naar geüpload worden. Zorg dat je schrijfrechten op de server hebt.',
+ 'cannot_get_image_from_url' => 'Kon geen afbeelding verkrijgen van :url',
+ 'cannot_create_thumbs' => 'De server kon geen miniaturen maken. Controleer of je de GD PHP extensie geïnstalleerd hebt.',
+ 'server_upload_limit' => 'De server staat geen uploads van deze grootte toe. Probeer een kleinere bestandsgrootte.',
+ 'server_post_limit' => 'De server kan de opgegeven hoeveelheid gegevens niet ontvangen. Probeer het opnieuw met minder gegevens of een kleiner bestand.',
+ 'uploaded' => 'De server staat geen uploads van deze grootte toe. Probeer een kleinere bestandsgrootte.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Er is een fout opgetreden bij het uploaden van de afbeelding',
+ 'image_upload_type_error' => 'Het geüploade afbeeldingstype is ongeldig',
+ 'image_upload_replace_type' => 'Afbeeldingen moeten van hetzelfde type zijn',
+ 'image_upload_memory_limit' => 'Het uploaden van afbeeldingen en/of het maken van miniaturen is mislukt vanwege te beperkte systeemmiddelen.',
+ 'image_thumbnail_memory_limit' => 'Het maken van variaties in afbeeldingsgrootte is mislukt vanwege te beperkte systeemmiddelen.',
+ 'image_gallery_thumbnail_memory_limit' => 'Het maken van galerij miniaturen is mislukt vanwege te beperkte systeemmiddelen.',
+ 'drawing_data_not_found' => 'De gegevens van de tekening konden niet worden geladen. Het tekenbestand bestaat misschien niet meer of je hebt geen machtiging om het te openen.',
+
+ // Attachments
+ 'attachment_not_found' => 'Bijlage niet gevonden',
+ 'attachment_upload_error' => 'Er is een fout opgetreden bij het uploaden van het bestand',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Kon het concept niet opslaan. Zorg ervoor dat je een werkende internetverbinding hebt',
+ 'page_draft_delete_fail' => 'Het is niet gelukt om het concept van de pagina te verwijderen en de opgeslagen inhoud van de huidige pagina op te halen',
+ 'page_custom_home_deletion' => 'Een pagina die als startpagina is ingesteld, kan niet verwijderd worden',
+
+ // Entities
+ 'entity_not_found' => 'Entiteit niet gevonden',
+ 'bookshelf_not_found' => 'Boekenplank niet gevonden',
+ 'book_not_found' => 'Boek niet gevonden',
+ 'page_not_found' => 'Pagina niet gevonden',
+ 'chapter_not_found' => 'Hoofdstuk niet gevonden',
+ 'selected_book_not_found' => 'Het geselecteerde boek is niet gevonden',
+ 'selected_book_chapter_not_found' => 'Het geselecteerde boek of hoofdstuk is niet gevonden',
+ 'guests_cannot_save_drafts' => 'Gasten kunnen geen concepten opslaan',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Je kunt niet het enige admin account verwijderen',
+ 'users_cannot_delete_guest' => 'Je kunt het gastaccount niet verwijderen',
+ 'users_could_not_send_invite' => 'Kan de gebruiker niet aanmaken, uitnodigingsmail kon niet worden verzonden',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Deze rol kan niet bewerkt worden',
+ 'role_system_cannot_be_deleted' => 'Dit is een systeemrol en kan niet verwijderd worden',
+ 'role_registration_default_cannot_delete' => 'Deze rol kan niet verwijerd worden zolang dit de standaardrol na registratie is.',
+ 'role_cannot_remove_only_admin' => 'Deze gebruiker is de enige gebruiker die is toegewezen aan de beheerdersrol. Wijs de beheerdersrol toe aan een andere gebruiker voordat u probeert deze hier te verwijderen.',
+
+ // Comments
+ 'comment_list' => 'Er is een fout opgetreden tijdens het ophalen van de opmerkingen.',
+ 'cannot_add_comment_to_draft' => 'Je kunt geen opmerkingen toevoegen aan een concept.',
+ 'comment_add' => 'Er is een fout opgetreden tijdens het aanpassen / toevoegen van de opmerking.',
+ 'comment_delete' => 'Er is een fout opgetreden tijdens het verwijderen van de opmerking.',
+ 'empty_comment' => 'Kan geen lege opmerking toevoegen.',
+
+ // Error pages
+ '404_page_not_found' => 'Pagina Niet Gevonden',
+ 'sorry_page_not_found' => 'Sorry, de pagina die je zocht kan niet gevonden worden.',
+ 'sorry_page_not_found_permission_warning' => 'Als je verwachtte dat deze pagina zou bestaan, heb je misschien geen machtiging om deze te bekijken.',
+ 'image_not_found' => 'Afbeelding niet gevonden',
+ 'image_not_found_subtitle' => 'Sorry, de afbeelding die je zocht is niet beschikbaar.',
+ 'image_not_found_details' => 'Als je verwachtte dat deze afbeelding zou bestaan, dan is deze misschien verwijderd.',
+ 'return_home' => 'Terug naar home',
+ 'error_occurred' => 'Er Ging Iets Fout',
+ 'app_down' => ':appName is nu niet beschikbaar',
+ 'back_soon' => 'Komt snel weer online.',
+
+ // Import
+ 'import_zip_cant_read' => 'Kon het Zip-bestand niet lezen.',
+ 'import_zip_cant_decode_data' => 'Kon de data.json Zip-inhoud niet vinden of decoderen.',
+ 'import_zip_no_data' => 'Zip-bestand bevat niet de verwachte boek, hoofdstuk of pagina-inhoud.',
+ 'import_zip_data_too_large' => 'De inhoud van data.json in de ZIP overschrijdt de ingestelde maximum upload grootte.',
+ 'import_validation_failed' => 'De validatie van het Zip-bestand is mislukt met de volgende fouten:',
+ 'import_zip_failed_notification' => 'Importeren van het Zip-bestand is mislukt.',
+ 'import_perms_books' => 'Je mist de vereiste machtigingen om boeken te maken.',
+ 'import_perms_chapters' => 'Je mist de vereiste machtigingen om hoofdstukken te maken.',
+ 'import_perms_pages' => 'Je mist de vereiste machtigingen om pagina\'s te maken.',
+ 'import_perms_images' => 'Je mist de vereiste machtigingen om afbeeldingen toe te voegen.',
+ 'import_perms_attachments' => 'Je mist de vereiste machtigingen om bijlagen toe te voegen.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Geen autorisatie token gevonden',
+ 'api_bad_authorization_format' => 'Een autorisatie token is gevonden, maar het formaat schijnt onjuist te zijn',
+ 'api_user_token_not_found' => 'Er is geen overeenkomende API-token gevonden voor de opgegeven autorisatie token',
+ 'api_incorrect_token_secret' => 'Het opgegeven geheim voor de API-token is onjuist',
+ 'api_user_no_api_permission' => 'De eigenaar van de gebruikte API-token heeft geen machtiging om API calls te maken',
+ 'api_user_token_expired' => 'De gebruikte autorisatie token is verlopen',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Fout opgetreden bij het verzenden van een test email:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'De URL komt niet overeen met de geconfigureerde toegestane SSR-hosts',
+];
diff --git a/lang/nl/notifications.php b/lang/nl/notifications.php
new file mode 100644
index 00000000000..cccd1cca2a2
--- /dev/null
+++ b/lang/nl/notifications.php
@@ -0,0 +1,29 @@
+ 'Nieuwe opmerking op pagina: :pageName',
+ 'new_comment_intro' => 'Een gebruiker heeft een opmerking geplaatst op een pagina in :appName:',
+ 'new_page_subject' => 'Nieuwe pagina: :pageName',
+ 'new_page_intro' => 'Een nieuwe pagina is gemaakt in :appName:',
+ 'updated_page_subject' => 'Aangepaste pagina: :pageName',
+ 'updated_page_intro' => 'Een pagina werd aangepast in :appName:',
+ 'updated_page_debounce' => 'Om een stortvloed aan meldingen te voorkomen, zul je een tijdje geen meldingen ontvangen voor verdere bewerkingen van deze pagina door dezelfde redacteur.',
+ 'comment_mention_subject' => 'Je bent vermeld in een opmerking op pagina: :pageName',
+ 'comment_mention_intro' => 'Je bent vermeld in een opmerking in :appName:',
+
+ 'detail_page_name' => 'Pagina Naam:',
+ 'detail_page_path' => 'Paginapad:',
+ 'detail_commenter' => 'Commentator:',
+ 'detail_comment' => 'Opmerking:',
+ 'detail_created_by' => 'Gemaakt Door:',
+ 'detail_updated_by' => 'Aangepast Door:',
+
+ 'action_view_comment' => 'Bekijk Opmerking',
+ 'action_view_page' => 'Bekijk Pagina',
+
+ 'footer_reason' => 'Deze melding is naar je verzonden omdat :link dit type activiteit voor dit artikel dekt.',
+ 'footer_reason_link' => 'je meldingsvoorkeuren',
+];
diff --git a/resources/lang/nl/pagination.php b/lang/nl/pagination.php
similarity index 100%
rename from resources/lang/nl/pagination.php
rename to lang/nl/pagination.php
diff --git a/lang/nl/passwords.php b/lang/nl/passwords.php
new file mode 100644
index 00000000000..5223bdf39ee
--- /dev/null
+++ b/lang/nl/passwords.php
@@ -0,0 +1,15 @@
+ 'Wachtwoorden moeten uit minstens acht tekens bestaan en overeenkomen met de bevestiging.',
+ 'user' => "We kunnen geen gebruiker vinden met dat e-mailadres.",
+ 'token' => 'De wachtwoordhersteltoken is ongeldig voor dit e-mailadres.',
+ 'sent' => 'We hebben je een link gestuurd om je wachtwoord te herstellen!',
+ 'reset' => 'Je wachtwoord is hersteld!',
+
+];
diff --git a/lang/nl/preferences.php b/lang/nl/preferences.php
new file mode 100644
index 00000000000..a4a229f72d3
--- /dev/null
+++ b/lang/nl/preferences.php
@@ -0,0 +1,52 @@
+ 'Mijn account',
+
+ 'shortcuts' => 'Snelkoppelingen',
+ 'shortcuts_interface' => 'Snelkoppelingen',
+ 'shortcuts_toggle_desc' => 'Hier kun je toetscombinaties voor de gebruikersinterface in- of uitschakelen voor navigatie en acties.',
+ 'shortcuts_customize_desc' => 'Je kunt elk van de onderstaande toetsencombinaties aanpassen. Druk simpelweg op de gewenste toetscombinatie na het selecteren van de invoer voor een toetscombinatie.',
+ 'shortcuts_toggle_label' => 'Toetsencombinaties ingeschakeld',
+ 'shortcuts_section_navigation' => 'Navigatie',
+ 'shortcuts_section_actions' => 'Gebruikelijke acties',
+ 'shortcuts_save' => 'Sla Toetsencombinaties Op',
+ 'shortcuts_overlay_desc' => 'Opmerking: Wanneer toetsencombinaties zijn ingeschakeld, is een overlay beschikbaar door op "?" te drukken, die de momenteel beschikbare toetscombinaties voor acties op het scherm markeert.',
+ 'shortcuts_update_success' => 'Toetsencombinatievoorkeuren zijn bijgewerkt!',
+ 'shortcuts_overview_desc' => 'Beheer toetsenbordsnelkoppelingen om door de gebruikersinterface van het systeem te navigeren.',
+
+ 'notifications' => 'Melding Voorkeuren',
+ 'notifications_desc' => 'Bepaal welke e-mailmeldingen je ontvangt wanneer bepaalde activiteiten in het systeem worden uitgevoerd.',
+ 'notifications_opt_own_page_changes' => 'Geef melding bij wijzigingen aan pagina\'s waarvan ik de eigenaar ben',
+ 'notifications_opt_own_page_comments' => 'Geef melding van opmerkingen op pagina\'s waarvan ik de eigenaar ben',
+ 'notifications_opt_comment_mentions' => 'Geef een melding wanneer ik word vermeld in een opmerking',
+ 'notifications_opt_comment_replies' => 'Geef melding van reacties op mijn opmerkingen',
+ 'notifications_save' => 'Voorkeuren opslaan',
+ 'notifications_update_success' => 'Voorkeuren voor meldingen zijn bijgewerkt!',
+ 'notifications_watched' => 'Gevolgde & Genegeerde Items',
+ 'notifications_watched_desc' => 'Hieronder staan de items waarvoor aangepaste volgvoorkeuren zijn toegepast. Om je voorkeuren voor deze items bij te werken, bekijk je het item en zoek je naar de volgopties in de zijbalk.',
+
+ 'auth' => 'Toegang & Beveiliging',
+ 'auth_change_password' => 'Wachtwoord Wijzigen',
+ 'auth_change_password_desc' => 'Wijzig hier je wachtwoord die je gebruikt om in te loggen op de applicatie. Gebruik minimaal 8 tekens.',
+ 'auth_change_password_success' => 'Wachtwoord is bijgewerkt!',
+
+ 'profile' => 'Profielgegevens',
+ 'profile_desc' => 'De gegevens van je account beheren die je representeren naar andere gebruikers toe, evenals gegevens die worden gebruikt voor communicatie en systeempersonalisatie.',
+ 'profile_view_public' => 'Toon Publiek Profiel',
+ 'profile_name_desc' => 'Configureer je weergavenaam die zichtbaar zal zijn voor andere gebruikers in het systeem via de activiteit die je uitvoert en de inhoud die je bezit.',
+ 'profile_email_desc' => 'Dit e-mailadres wordt gebruikt voor meldingen en afhankelijk van de actieve systeemverificatie ook voor toegang tot het systeem.',
+ 'profile_email_no_permission' => 'Helaas heb je geen toestemming om je e-mailadres te wijzigen. Als je dit wilt veranderen, moet je een beheerder vragen om dit voor je te veranderen.',
+ 'profile_avatar_desc' => 'Selecteer een afbeelding waarmee je jezelf representeert naar anderen in het systeem. In het ideale geval is deze afbeelding vierkant en ongeveer 256 pixels breed en hoog.',
+ 'profile_admin_options' => 'Beheerdersopties',
+ 'profile_admin_options_desc' => 'Extra opties op beheerdersniveau, zoals die voor het beheren van roltoewijzingen zijn te vinden voor je gebruikersaccount in het gedeelte "Instellingen > Gebruikers" van de applicatie.',
+
+ 'delete_account' => 'Verwijder Account',
+ 'delete_my_account' => 'Verwijder Mijn Account',
+ 'delete_my_account_desc' => 'Dit verwijdert je gebruikersaccount volledig uit het systeem. Niemand kan het account herstellen of deze actie ongedaan maken. Inhoud die je hebt gemaakt, zoals aangemaakte pagina\'s en geüploade afbeeldingen, blijft bestaan.',
+ 'delete_my_account_warning' => 'Weet je zeker dat je je account permanent wil verwijderen?',
+];
diff --git a/lang/nl/settings.php b/lang/nl/settings.php
new file mode 100644
index 00000000000..c8d071119ff
--- /dev/null
+++ b/lang/nl/settings.php
@@ -0,0 +1,374 @@
+ 'Instellingen',
+ 'settings_save' => 'Instellingen opslaan',
+ 'system_version' => 'Systeem versie',
+ 'categories' => 'Categorieën',
+
+ // App Settings
+ 'app_customization' => 'Aanpassingen',
+ 'app_features_security' => 'Functies en beveiliging',
+ 'app_name' => 'Applicatienaam',
+ 'app_name_desc' => 'Deze naam wordt getoond in de header en in alle door het systeem verstuurde e-mails.',
+ 'app_name_header' => 'Toon naam in header',
+ 'app_public_access' => 'Openbare toegang',
+ 'app_public_access_desc' => 'Door deze optie in te schakelen kunnen bezoekers die niet ingelogd zijn toegang krijgen tot de inhoud van uw BookStack-omgeving.',
+ 'app_public_access_desc_guest' => 'De toegang voor publieke bezoekers kan worden ingesteld via de "Guest" gebruiker.',
+ 'app_public_access_toggle' => 'Openbare toegang toestaan',
+ 'app_public_viewing' => 'Publieke bezichtigingen toestaan?',
+ 'app_secure_images' => 'Uploaden van afbeeldingen met hogere beveiliging',
+ 'app_secure_images_toggle' => 'Activeer uploaden van afbeeldingen met hogere beveiliging',
+ 'app_secure_images_desc' => 'Om prestatieredenen zijn alle afbeeldingen openbaar. Deze optie voegt een willekeurige en moeilijk te raden tekst toe aan de URL\'s van de afbeeldingen. Zorg ervoor dat "directory indexes" niet ingeschakeld zijn om eenvoudige toegang te voorkomen.',
+ 'app_default_editor' => 'Standaard Pagina Bewerker',
+ 'app_default_editor_desc' => 'Selecteer welke bewerker standaard zal worden gebruikt bij het bewerken van nieuwe pagina\'s. Dit kan worden overschreven op paginaniveau als de rechten dat toestaan.',
+ 'app_custom_html' => 'Aangepaste inhoud voor het HTML head-element',
+ 'app_custom_html_desc' => 'Alle hieronder toegevoegde data wordt aan het einde van de sectie van elke pagina toegevoegd. Gebruik dit om stijlen te overschrijven of analytische code toe te voegen.',
+ 'app_custom_html_disabled_notice' => 'Bovenstaande wordt niet toegevoegd aan deze pagina om ervoor te zorgen dat je foutieve code steeds ongedaan kan maken.',
+ 'app_logo' => 'Applicatielogo',
+ 'app_logo_desc' => 'Dit wordt onder meer gebruikt in de kopbalk van de applicatie. Deze afbeelding dient 86px hoog te zijn. Grote afbeeldingen worden teruggeschaald.',
+ 'app_icon' => 'Applicatiepictogram',
+ 'app_icon_desc' => 'Dit pictogram wordt gebruikt voor browsertabbladen en snelkoppelingspictogrammen. Dit dient een 256px vierkante PNG-afbeelding te zijn.',
+ 'app_homepage' => 'Applicatie startpagina',
+ 'app_homepage_desc' => 'Selecteer een weergave om weer te geven op de startpagina in plaats van de standaard weergave. Paginamachtigingen worden genegeerd voor geselecteerde pagina\'s.',
+ 'app_homepage_select' => 'Selecteer een pagina',
+ 'app_footer_links' => 'Voettekst hyperlinks',
+ 'app_footer_links_desc' => 'Voeg hyperlinks toe aan de voettekst van de applicatie. Deze zullen onderaan de meeste pagina\'s getoond worden, ook aan pagina\'s die geen login vereisen. Je kunt een label van "trans::" gebruiken om systeem-gedefinieerde vertalingen te gebruiken. Bijvoorbeeld: Het gebruik van "trans::common.privacy_policy" zal de vertaalde tekst "Privacy Policy" opleveren en "trans::common.terms_of_service" zal de vertaalde tekst "Gebruiksvoorwaarden" opleveren.',
+ 'app_footer_links_label' => 'Link label',
+ 'app_footer_links_url' => 'Link URL',
+ 'app_footer_links_add' => 'Voettekst link toevoegen',
+ 'app_disable_comments' => 'Opmerkingen uitschakelen',
+ 'app_disable_comments_toggle' => 'Opmerkingen uitschakelen',
+ 'app_disable_comments_desc' => 'Schakel opmerkingen uit op alle pagina\'s in de applicatie. Bestaande opmerkingen worden niet getoond.',
+
+ // Color settings
+ 'color_scheme' => 'Kleurenschema van applicatie',
+ 'color_scheme_desc' => 'Stel de kleuren in voor de gebruikersinterface van de applicatie. Kleuren kunnen afzonderlijk worden geconfigureerd voor donkere en lichte modi om zo goed mogelijk bij het thema te passen en de leesbaarheid te garanderen.',
+ 'ui_colors_desc' => 'Stel de primaire kleur van de applicatie en de standaard hyperlinkkleur in. De primaire kleur wordt voornamelijk gebruikt voor de headerbanner, knoppen en interfacedecoraties. De standaard hyperlinkkleur wordt gebruikt voor tekstgebaseerde links en acties, zowel binnen geschreven inhoud als in de applicatie-interface.',
+ 'app_color' => 'Primaire kleur',
+ 'link_color' => 'Standaard hyperlinkkleur',
+ 'content_colors_desc' => 'Stel kleuren in voor alle elementen in de hiërarchie van de pagina-organisatie. Voor de leesbaarheid is het aan te raden kleuren te kiezen met eenzelfde helderheid als de standaardkleuren.',
+ 'bookshelf_color' => 'Kleur van de Boekenplank',
+ 'book_color' => 'Kleur van het Boek',
+ 'chapter_color' => 'Kleur van het Hoofdstuk',
+ 'page_color' => 'Pagina kleur',
+ 'page_draft_color' => 'Concept pagina kleur',
+
+ // Registration Settings
+ 'reg_settings' => 'Registratie',
+ 'reg_enable' => 'Registratie inschakelen',
+ 'reg_enable_toggle' => 'Registratie inschakelen',
+ 'reg_enable_desc' => 'Wanneer registratie is ingeschakeld, kunnen gebruikers zichzelf aanmelden als applicatiegebruiker. Bij registratie krijgen ze een enkele, standaard gebruikersrol.',
+ 'reg_default_role' => 'Standaard rol na registratie',
+ 'reg_enable_external_warning' => 'De optie hierboven wordt niet gebruikt terwijl externe LDAP- of SAML authenticatie actief is. Gebruikersaccounts voor niet-bestaande leden zullen automatisch worden aangemaakt wanneer authenticatie tegen het gebruikte externe systeem succesvol is.',
+ 'reg_email_confirmation' => 'E-mail bevestiging',
+ 'reg_email_confirmation_toggle' => 'E-mailbevestiging vereisen',
+ 'reg_confirm_email_desc' => 'Als domeinrestricties aan staan dan is e-maibevestiging altijd nodig. Onderstaande instelling wordt dan genegeerd.',
+ 'reg_confirm_restrict_domain' => 'Beperk registratie tot een domein',
+ 'reg_confirm_restrict_domain_desc' => 'Geef een door komma-gescheiden lijst van domeinnamen op die gebruikt mogen worden bij registratie. Gebruikers dienen de ontvangen e-mail te bevestigen voordat ze toegang krijgen tot de applicatie. Let op: Gebruikers kunnen na registratie hun e-mailadres nog steeds wijzigen.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Geen beperkingen ingesteld',
+
+ // Sorting Settings
+ 'sorting' => 'Lijsten & Sorteren',
+ 'sorting_book_default' => 'Standaard Sorteerregel Boek',
+ 'sorting_book_default_desc' => 'Selecteer de standaard sorteerregel om toe te passen op nieuwe boeken. Dit heeft geen invloed op bestaande boeken, en kan per boek worden overschreven.',
+ 'sorting_rules' => 'Sorteerregels',
+ 'sorting_rules_desc' => 'Dit zijn vooraf ingestelde sorteeroperaties die kunnen worden toegepast op inhoud in het systeem.',
+ 'sort_rule_assigned_to_x_books' => 'Toegepast op :count Boek|Toegepast op :count Boeken',
+ 'sort_rule_create' => 'Maak sorteerregel',
+ 'sort_rule_edit' => 'Bewerk sorteerregel',
+ 'sort_rule_delete' => 'Verwijder sorteerregel',
+ 'sort_rule_delete_desc' => 'Verwijder deze sorteerregel uit het systeem. Boeken die deze regel gebruiken zullen terugvallen op handmatige sortering.',
+ 'sort_rule_delete_warn_books' => 'Deze sorteerregel wordt momenteel gebruikt door :count boek(en). Weet je zeker dat je deze wilt verwijderen?',
+ 'sort_rule_delete_warn_default' => 'Deze sorteerregel wordt gebruikt als standaardregel voor boeken. Weet je zeker dat je deze wilt verwijderen?',
+ 'sort_rule_details' => 'Details sorteerregel',
+ 'sort_rule_details_desc' => 'Stel een naam in voor deze sorteerregel. Deze wordt weergegeven waar gebruikers een regel kunnen selecteren.',
+ 'sort_rule_operations' => 'Sorteeroperaties',
+ 'sort_rule_operations_desc' => 'Configureer de sorteeracties die moeten worden uitgevoerd door ze te verplaatsen van de lijst met beschikbare operaties. Bij gebruik worden de operaties toegepast in volgorde van boven naar beneden. Wijzigingen die hier worden gemaakt worden toegepast op alle toegewezen boeken.',
+ 'sort_rule_available_operations' => 'Beschikbare Operaties',
+ 'sort_rule_available_operations_empty' => 'Geen operaties over',
+ 'sort_rule_configured_operations' => 'Ingestelde Operaties',
+ 'sort_rule_configured_operations_empty' => 'Voeg operaties toe uit de "Beschikbare Operaties" lijst',
+ 'sort_rule_op_asc' => '(Oplopend)',
+ 'sort_rule_op_desc' => '(Aflopend)',
+ 'sort_rule_op_name' => 'Naam - Alfabetisch',
+ 'sort_rule_op_name_numeric' => 'Naam - Numeriek',
+ 'sort_rule_op_created_date' => 'Aanmaakdatum',
+ 'sort_rule_op_updated_date' => 'Bijwerkdatum',
+ 'sort_rule_op_chapters_first' => 'Hoofdstukken Eerst',
+ 'sort_rule_op_chapters_last' => 'Hoofdstukken Laatst',
+ 'sorting_page_limits' => 'Weergavelimiet Per Pagina',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Onderhoud',
+ 'maint_image_cleanup' => 'Afbeeldingen opschonen',
+ 'maint_image_cleanup_desc' => 'Scant pagina- en revisieinhoud om te controleren welke afbeeldingen en tekeningen momenteel worden gebruikt en welke afbeeldingen overbodig zijn. Zorg ervoor dat je een volledige database- en afbeelding back-up maakt voordat je dit uitvoert.',
+ 'maint_delete_images_only_in_revisions' => 'Ook afbeeldingen verwijderen die alleen in oude paginarevisies bestaan',
+ 'maint_image_cleanup_run' => 'Opschonen uitvoeren',
+ 'maint_image_cleanup_warning' => ':count potentieel ongebruikte afbeeldingen gevonden. Weet je zeker dat je deze afbeeldingen wilt verwijderen?',
+ 'maint_image_cleanup_success' => ':count potentieel ongebruikte afbeeldingen gevonden en verwijderd!',
+ 'maint_image_cleanup_nothing_found' => 'Geen ongebruikte afbeeldingen gevonden, niets verwijderd!',
+ 'maint_send_test_email' => 'Stuur een test e-mail',
+ 'maint_send_test_email_desc' => 'Dit verstuurt een test e-mail naar het e-mailadres dat je in je profiel hebt opgegeven.',
+ 'maint_send_test_email_run' => 'Verzend test e-mail',
+ 'maint_send_test_email_success' => 'E-mail verzonden naar :address',
+ 'maint_send_test_email_mail_subject' => 'Test E-mail',
+ 'maint_send_test_email_mail_greeting' => 'E-mailbezorging lijkt te werken!',
+ 'maint_send_test_email_mail_text' => 'Gefeliciteerd! Nu je deze e-mailmelding hebt ontvangen, lijken je e-mailinstellingen correct te zijn geconfigureerd.',
+ 'maint_recycle_bin_desc' => 'Verwijderde boekenplanken, boeken, hoofdstukken en pagina\'s worden naar de prullenbak gestuurd waar ze hersteld of definitief verwijderd kunnen worden. Oudere items in de prullenbak kunnen automatisch worden verwijderd, afhankelijk van de systeemconfiguratie.',
+ 'maint_recycle_bin_open' => 'Prullenbak openen',
+ 'maint_regen_references' => 'Verwijzingen opnieuw genereren',
+ 'maint_regen_references_desc' => 'Deze actie zal de kruisverwijzingen index binnen de database opnieuw opbouwen. Dit wordt doorgaans automatisch gedaan, maar deze actie kan nuttig zijn om oude inhoud of inhoud die via onofficiële methoden is toegevoegd te indexeren.',
+ 'maint_regen_references_success' => 'Verwijzingenindex is opnieuw gegenereerd!',
+ 'maint_timeout_command_note' => 'Let op: Het uitvoeren van deze actie kan enige tijd in beslag nemen, wat in sommige webomgevingen kan leiden tot time-outs. Als alternatief kan deze actie ook worden uitgevoerd met een terminal-commando.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Prullenbak',
+ 'recycle_bin_desc' => 'Hier kun je items herstellen die zijn verwijderd of ervoor kiezen om ze permanent uit het systeem te verwijderen. Deze lijst is ongefilterd, in tegenstelling tot vergelijkbare activiteitenlijsten in het systeem waar machtigingenfilters worden toegepast.',
+ 'recycle_bin_deleted_item' => 'Verwijderde Item',
+ 'recycle_bin_deleted_parent' => 'Bovenliggende',
+ 'recycle_bin_deleted_by' => 'Verwijderd door',
+ 'recycle_bin_deleted_at' => 'Verwijderd op',
+ 'recycle_bin_permanently_delete' => 'Permanent verwijderen',
+ 'recycle_bin_restore' => 'Herstellen',
+ 'recycle_bin_contents_empty' => 'De prullenbak is momenteel leeg',
+ 'recycle_bin_empty' => 'Prullenbak legen',
+ 'recycle_bin_empty_confirm' => 'Dit zal permanent alle items in de prullenbak vernietigen, inclusief de inhoud die in elk item zit. Weet je zeker dat je de prullenbak wil legen?',
+ 'recycle_bin_destroy_confirm' => 'Deze actie zal dit item permanent verwijderen uit het systeem, samen met onderstaande onderliggende elementen, en u zal deze inhoud niet kunnen herstellen. Bent u zeker dat u dit item permanent wilt verwijderen?',
+ 'recycle_bin_destroy_list' => 'Te vernietigen items',
+ 'recycle_bin_restore_list' => 'Items te herstellen',
+ 'recycle_bin_restore_confirm' => 'Deze actie herstelt het verwijderde item, inclusief alle onderliggende elementen, op hun oorspronkelijke locatie. Als de oorspronkelijke locatie sindsdien is verwijderd en zich nu in de prullenbak bevindt, zal ook het bovenliggende item moeten worden hersteld.',
+ 'recycle_bin_restore_deleted_parent' => 'De bovenliggende map van dit item is ook verwijderd. Dit zal verwijderd blijven tot het bovenliggende ook hersteld is.',
+ 'recycle_bin_restore_parent' => 'Herstel bovenliggende',
+ 'recycle_bin_destroy_notification' => ':count items uit de prullenbak verwijderd.',
+ 'recycle_bin_restore_notification' => ':count items uit de prullenbak hersteld.',
+
+ // Audit Log
+ 'audit' => 'Controlelogboek',
+ 'audit_desc' => 'Dit controle logboek toont een lijst van activiteiten die in het systeem zijn bijgehouden. Deze lijst is ongefilterd in tegenstelling tot soortgelijke activiteitenlijsten in het systeem waar machtigingfilters worden toegepast.',
+ 'audit_event_filter' => 'Gebeurtenis filter',
+ 'audit_event_filter_no_filter' => 'Geen filter',
+ 'audit_deleted_item' => 'Verwijderd Item',
+ 'audit_deleted_item_name' => 'Naam: :name',
+ 'audit_table_user' => 'Gebruiker',
+ 'audit_table_event' => 'Gebeurtenis',
+ 'audit_table_related' => 'Gerelateerd Item of Detail',
+ 'audit_table_ip' => 'IP-adres',
+ 'audit_table_date' => 'Activiteit datum',
+ 'audit_date_from' => 'Datum bereik vanaf',
+ 'audit_date_to' => 'Datum bereik tot',
+
+ // Role Settings
+ 'roles' => 'Rollen',
+ 'role_user_roles' => 'Gebruikersrollen',
+ 'roles_index_desc' => 'Rollen worden gebruikt om gebruikers te groeperen en systeemrechten te geven. Wanneer een gebruiker lid is van meerdere rollen worden de toegekende rechten samengevoegd en erft de gebruiker alle mogelijkheden.',
+ 'roles_x_users_assigned' => ':count gebruiker toegewezen|:count gebruikers toegewezen',
+ 'roles_x_permissions_provided' => ':count machtiging|:count machtigingen',
+ 'roles_assigned_users' => 'Toegewezen Gebruikers',
+ 'roles_permissions_provided' => 'Verleende Machtigingen',
+ 'role_create' => 'Nieuwe Rol Maken',
+ 'role_delete' => 'Rol Verwijderen',
+ 'role_delete_confirm' => 'Dit verwijdert de rol met naam: \':roleName\'.',
+ 'role_delete_users_assigned' => 'Er zijn :userCount gebruikers met deze rol. Selecteer hieronder een nieuwe rol als je deze gebruikers een andere rol wilt geven.',
+ 'role_delete_no_migration' => "Geen gebruikers migreren",
+ 'role_delete_sure' => 'Weet je zeker dat je deze rol wilt verwijderen?',
+ 'role_edit' => 'Rol Bewerken',
+ 'role_details' => 'Rol Details',
+ 'role_name' => 'Rolnaam',
+ 'role_desc' => 'Korte beschrijving van de rol',
+ 'role_mfa_enforced' => 'Meervoudige verificatie verreist',
+ 'role_external_auth_id' => 'Externe authenticatie ID\'s',
+ 'role_system' => 'Systeem Machtigingen',
+ 'role_manage_users' => 'Gebruikers beheren',
+ 'role_manage_roles' => 'Beheer rollen & machtigingen',
+ 'role_manage_entity_permissions' => 'Beheer alle machtigingen voor boeken, hoofdstukken en pagina\'s',
+ 'role_manage_own_entity_permissions' => 'Beheer machtigingen van je eigen boek, hoofdstuk & pagina\'s',
+ 'role_manage_page_templates' => 'Paginasjablonen beheren',
+ 'role_access_api' => 'Ga naar systeem API',
+ 'role_manage_settings' => 'Beheer app instellingen',
+ 'role_export_content' => 'Exporteer inhoud',
+ 'role_import_content' => 'Importeer inhoud',
+ 'role_editor_change' => 'Wijzig pagina bewerker',
+ 'role_notifications' => 'Meldingen ontvangen & beheren',
+ 'role_permission_note_users_and_roles' => 'Deze machtigingen geven technisch gezien toegang tot het weergeven van gebruikers & rollen binnen het systeem.',
+ 'role_asset' => 'Asset Machtigingen',
+ 'roles_system_warning' => 'Wees ervan bewust dat toegang tot een van de bovengenoemde drie machtigingen een gebruiker in staat kan stellen zijn eigen machtigingen of de machtigingen van anderen in het systeem kan wijzigen. Wijs alleen rollen toe met deze machtigingen aan vertrouwde gebruikers.',
+ 'role_asset_desc' => 'Deze machtigingen bepalen de standaard toegang tot de assets binnen het systeem. Machtigingen op boeken, hoofdstukken en pagina\'s overschrijven deze instelling.',
+ 'role_asset_admins' => 'Beheerders krijgen automatisch toegang tot alle inhoud, maar deze opties kunnen gebruikersinterface opties tonen of verbergen.',
+ 'role_asset_image_view_note' => 'Dit heeft betrekking op de zichtbaarheid binnen de afbeeldingsbeheerder. De werkelijke toegang tot geüploade afbeeldingsbestanden hangt af van de gekozen opslagmethode.',
+ 'role_asset_users_note' => 'Deze machtigingen geven technisch gezien toegang tot het weergeven van gebruikers binnen het systeem.',
+ 'role_all' => 'Alles',
+ 'role_own' => 'Eigen',
+ 'role_controlled_by_asset' => 'Gecontroleerd door de asset waar deze is geüpload',
+ 'role_save' => 'Rol Opslaan',
+ 'role_users' => 'Gebruikers in deze rol',
+ 'role_users_none' => 'Geen enkele gebruiker heeft deze rol',
+
+ // Users
+ 'users' => 'Gebruikers',
+ 'users_index_desc' => 'Creëer en beheer individuele gebruikersaccounts binnen het systeem. Gebruikersaccounts worden gebruikt voor aanmelding en toekenning van inhoud en activiteiten. Toegangsmachtigingen zijn voornamelijk gebaseerd op rollen, maar het eigendom van gebruikersinhoud en andere factoren kunnen ook van invloed zijn op machtigingen en toegang.',
+ 'user_profile' => 'Gebruikersprofiel',
+ 'users_add_new' => 'Gebruiker toevoegen',
+ 'users_search' => 'Gebruiker zoeken',
+ 'users_latest_activity' => 'Laatste activiteit',
+ 'users_details' => 'Gebruiker details',
+ 'users_details_desc' => 'Stel een weergavenaam en e-mailadres in voor deze gebruiker. Het e-mailadres zal worden gebruikt om in te loggen.',
+ 'users_details_desc_no_email' => 'Stel een weergavenaam in voor deze gebruiker zodat anderen deze kunnen herkennen.',
+ 'users_role' => 'Gebruikersrollen',
+ 'users_role_desc' => 'Selecteer aan welke rollen deze gebruiker zal worden toegewezen. Als een gebruiker aan meerdere rollen wordt toegewezen, worden de machtigingen van die rollen samengevoegd en krijgt hij alle mogelijkheden van de toegewezen rollen.',
+ 'users_password' => 'Wachtwoord gebruiker',
+ 'users_password_desc' => 'Stel een wachtwoord in om op de applicatie in te loggen. Dit moet minstens 8 tekens lang zijn.',
+ 'users_send_invite_text' => 'Je kunt ervoor kiezen om deze gebruiker een uitnodigingsmail te sturen waarmee hij zijn eigen wachtwoord kan instellen, anders kun je zelf zijn wachtwoord instellen.',
+ 'users_send_invite_option' => 'Stuur gebruiker uitnodigings e-mail',
+ 'users_external_auth_id' => 'Externe authenticatie ID',
+ 'users_external_auth_id_desc' => 'Wanneer een extern authenticatiesysteem wordt gebruikt (zoals SAML2, OIDC of LDAP) is dit de ID die deze BookStack-gebruiker koppelt aan het account van het authenticatiesysteem. Je kunt dit veld negeren als je de standaard op e-mail gebaseerde verificatie gebruikt.',
+ 'users_password_warning' => 'Vul onderstaande velden alleen in als je het wachtwoord voor deze gebruiker wil wijzigen.',
+ 'users_system_public' => 'Deze gebruiker vertegenwoordigt alle gastgebruikers die uw applicatie bezoeken. Hij kan niet worden gebruikt om in te loggen, maar wordt automatisch toegewezen.',
+ 'users_delete' => 'Verwijder gebruiker',
+ 'users_delete_named' => 'Verwijder gebruiker :userName',
+ 'users_delete_warning' => 'Dit zal de gebruiker \':userName\' volledig uit het systeem verwijderen.',
+ 'users_delete_confirm' => 'Weet je zeker dat je deze gebruiker wilt verwijderen?',
+ 'users_migrate_ownership' => 'Draag eigendom over',
+ 'users_migrate_ownership_desc' => 'Selecteer een gebruiker hier als u wilt dat een andere gebruiker de eigenaar wordt van alle items die momenteel eigendom zijn van deze gebruiker.',
+ 'users_none_selected' => 'Geen gebruiker geselecteerd',
+ 'users_edit' => 'Bewerk Gebruiker',
+ 'users_edit_profile' => 'Bewerk Profiel',
+ 'users_avatar' => 'Avatar',
+ 'users_avatar_desc' => 'Selecteer een afbeelding om deze gebruiker voor te stellen. Deze moet ongeveer 256px breed en vierkant zijn.',
+ 'users_preferred_language' => 'Voorkeurstaal',
+ 'users_preferred_language_desc' => 'Deze optie wijzigt de taal die gebruikt wordt voor de gebruikersinterface. Dit heeft geen invloed op door gebruikers gemaakte inhoud.',
+ 'users_social_accounts' => 'Sociale media accounts',
+ 'users_social_accounts_desc' => 'Bekijk de status van de verbonden socialmedia-accounts voor deze gebruiker. socialmedia-accounts kunnen worden gebruikt naast het primaire authenticatiesysteem voor systeemtoegang.',
+ 'users_social_accounts_info' => 'Hier kun je je andere accounts koppelen om sneller en eenvoudiger in te loggen. Als je hier een account loskoppelt, wordt de eerder gemachtigde toegang niet ingetrokken. Je kunt de toegang intrekken via je profielinstellingen op het gekoppelde socialemedia-account zelf.',
+ 'users_social_connect' => 'Account Verbinden',
+ 'users_social_disconnect' => 'Account Ontkoppelen',
+ 'users_social_status_connected' => 'Verbonden',
+ 'users_social_status_disconnected' => 'Verbroken',
+ 'users_social_connected' => ':socialAccount account succesvol aan je profiel gekoppeld.',
+ 'users_social_disconnected' => ':socialAccount account succesvol ontkoppeld van je profiel.',
+ 'users_api_tokens' => 'API-Tokens',
+ 'users_api_tokens_desc' => 'Creëer en beheer de toegangstokens die gebruikt worden om te authenticeren met de BookStack REST API. Machtigingen voor de API worden beheerd via de gebruiker waartoe het token behoort.',
+ 'users_api_tokens_none' => 'Er zijn geen API-tokens gemaakt voor deze gebruiker',
+ 'users_api_tokens_create' => 'Token aanmaken',
+ 'users_api_tokens_expires' => 'Verloopt',
+ 'users_api_tokens_docs' => 'API-Documentatie',
+ 'users_mfa' => 'Meervoudige Verificatie',
+ 'users_mfa_desc' => 'Stel meervoudige verificatie in als extra beveiligingslaag voor je gebruikersaccount.',
+ 'users_mfa_x_methods' => ':count methode geconfigureerd|:count methoden geconfigureerd',
+ 'users_mfa_configure' => 'Configureer methoden',
+
+ // API Tokens
+ 'user_api_token_create' => 'API-token aanmaken',
+ 'user_api_token_name' => 'Naam',
+ 'user_api_token_name_desc' => 'Geef je token een leesbare naam als een toekomstige herinnering aan het beoogde doel.',
+ 'user_api_token_expiry' => 'Vervaldatum',
+ 'user_api_token_expiry_desc' => 'Stel een datum in waarop deze token verloopt. Na deze datum zullen aanvragen die met deze token zijn ingediend niet langer werken. Als dit veld leeg blijft, wordt een vervaldatum van 100 jaar in de toekomst ingesteld.',
+ 'user_api_token_create_secret_message' => 'Onmiddellijk na het aanmaken van dit token zal een "Token ID" en "Token Geheim" worden gegenereerd en weergegeven. Het geheim zal slechts één keer getoond worden. Kopieer de waarde dus eerst op een veilige plaats voordat u doorgaat.',
+ 'user_api_token' => 'API-Token',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'Dit is een niet-wijzigbare, door het systeem gegenereerde identificatiecode voor dit token, die in API-verzoeken moet worden verstrekt.',
+ 'user_api_token_secret' => 'Geheime token sleutel',
+ 'user_api_token_secret_desc' => 'Dit is een door het systeem gegenereerd geheim voor dit token dat in API-verzoeken zal moeten worden verstrekt. Dit zal slechts één keer worden weergegeven, dus kopieer deze waarde naar een veilige plaats.',
+ 'user_api_token_created' => 'Token :timeAgo geleden aangemaakt',
+ 'user_api_token_updated' => 'Token :timeAgo geleden bijgewerkt',
+ 'user_api_token_delete' => 'Token Verwijderen',
+ 'user_api_token_delete_warning' => 'Dit zal de API-token met de naam \':tokenName\' volledig uit het systeem verwijderen.',
+ 'user_api_token_delete_confirm' => 'Weet je zeker dat je deze API-token wilt verwijderen?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks zijn een manier om gegevens naar externe URL\'s te sturen wanneer bepaalde acties en gebeurtenissen in het systeem plaatsvinden, wat op gebeurtenissen gebaseerde integratie met externe platforms zoals berichten- of notificatiesystemen mogelijk maakt.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'Nieuwe Webhook Maken',
+ 'webhooks_none_created' => 'Er zijn nog geen webhooks aangemaakt.',
+ 'webhooks_edit' => 'Bewerk Webhook',
+ 'webhooks_save' => 'Webhook opslaan',
+ 'webhooks_details' => 'Webhook Details',
+ 'webhooks_details_desc' => 'Geef een gebruiksvriendelijke naam en een POST eindpunt op als locatie waar de webhook gegevens naartoe gestuurd zullen worden.',
+ 'webhooks_events' => 'Webhook gebeurtenissen',
+ 'webhooks_events_desc' => 'Selecteer alle gebeurtenissen die deze webhook dient te activeren.',
+ 'webhooks_events_warning' => 'Houd er rekening mee dat deze gebeurtenissen zullen worden geactiveerd voor alle geselecteerde gebeurtenissen, zelfs als aangepaste machtigingen zijn toegepast. Zorg ervoor dat het gebruik van deze webhook geen vertrouwelijke inhoud blootlegt.',
+ 'webhooks_events_all' => 'Alle systeemgebeurtenissen',
+ 'webhooks_name' => 'Webhook Naam',
+ 'webhooks_timeout' => 'Webhook Verzoek Time-out (Seconden)',
+ 'webhooks_endpoint' => 'Webhook Eindpunt',
+ 'webhooks_active' => 'Webhook Actief',
+ 'webhook_events_table_header' => 'Gebeurtenissen',
+ 'webhooks_delete' => 'Verwijder Webhook',
+ 'webhooks_delete_warning' => 'Dit zal de webhook met naam \':webhookName\' volledig verwijderen van het systeem.',
+ 'webhooks_delete_confirm' => 'Weet je zeker dat je deze webhook wilt verwijderen?',
+ 'webhooks_format_example' => 'Voorbeeld Webhook Formaat',
+ 'webhooks_format_example_desc' => 'Webhook gegevens worden verzonden als een POST verzoek naar het geconfigureerde eindpunt als JSON volgens het onderstaande formaat. De "related_item" en "url" eigenschappen zijn optioneel en hangen af van het type gebeurtenis die geactiveerd wordt.',
+ 'webhooks_status' => 'Webhook Status',
+ 'webhooks_last_called' => 'Laatst Opgeroepen:',
+ 'webhooks_last_errored' => 'Laatst Gefaald:',
+ 'webhooks_last_error_message' => 'Laatste Foutmelding:',
+
+ // Licensing
+ 'licenses' => 'Licenties',
+ 'licenses_desc' => 'Deze pagina beschrijft licentie-informatie voor BookStack naast de projecten & bibliotheken die binnen BookStack worden gebruikt. Veel van de vermelde projecten worden alleen in een ontwikkelingscontext gebruikt.',
+ 'licenses_bookstack' => 'BookStack Licentie',
+ 'licenses_php' => 'PHP Bibliotheek Licenties',
+ 'licenses_js' => 'JavaScript Bibliotheek Licenties',
+ 'licenses_other' => 'Andere Licenties',
+ 'license_details' => 'Licentie Details',
+
+ //! If editing translations files directly please ignore this in all
+ //! languages apart from en. Content will be auto-copied from en.
+ //!////////////////////////////////
+ 'language_select' => [
+ 'en' => 'Engels',
+ 'ar' => 'العربية (Arabisch)',
+ 'bg' => 'Bǎlgarski (Bulgaars)',
+ 'bs' => 'Bosanski (Bosnisch)',
+ 'ca' => 'Català (Catalaans)',
+ 'cs' => 'Česky (Tsjechisch)',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk (Deens)',
+ 'de' => 'Deutsch (Duits)',
+ 'de_informal' => 'Deutsch (Du) (Informeel Duits)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español (Spaans)',
+ 'es_AR' => 'Español Argentina (Argentijns Spaans)',
+ 'et' => 'Eesti keel (Estisch)',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français (Frans)',
+ 'he' => 'עברית (Hebreeuws)',
+ 'hr' => 'Hrvatski (Kroatisch)',
+ 'hu' => 'Magyar (Hongaars)',
+ 'id' => 'Bahasa Indonesia (Indonesisch)',
+ 'it' => 'Italiano (Italiaans)',
+ 'ja' => '日本語 (Japans)',
+ 'ko' => '한국어 (Koreaans)',
+ 'lt' => 'Lietuvių Kalba (Litouws)',
+ 'lv' => 'Latviešu Valoda (Lets)',
+ 'nb' => 'Norsk (Bokmål) (Noors)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski (Pools)',
+ 'pt' => 'Português (Portugees)',
+ 'pt_BR' => 'Português do Brasil (Braziliaans-Portugees)',
+ 'ro' => 'Română',
+ 'ru' => 'Русский (Russisch)',
+ 'sk' => 'Slovensky (Slowaaks)',
+ 'sl' => 'Slovenščina (Sloveens)',
+ 'sv' => 'Svenska (Zweeds)',
+ 'tr' => 'Türkçe (Turks)',
+ 'uk' => 'Українська (Oekraïens)',
+ 'uz' => 'Oezbeeks',
+ 'vi' => 'Tiếng Việt (Vietnamees)',
+ 'zh_CN' => '简体中文 (Chinees)',
+ 'zh_TW' => '繁體中文 (Traditioneel Chinees)',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/nl/validation.php b/lang/nl/validation.php
new file mode 100644
index 00000000000..f5088735dd7
--- /dev/null
+++ b/lang/nl/validation.php
@@ -0,0 +1,123 @@
+ 'Het :attribute moet geaccepteerd worden.',
+ 'active_url' => 'Het :attribute is geen geldige URL.',
+ 'after' => ':attribute moet een datum zijn later dan :date.',
+ 'alpha' => ':attribute mag alleen letters bevatten.',
+ 'alpha_dash' => ':attribute mag alleen letters, cijfers, streepjes en liggende streepjes bevatten.',
+ 'alpha_num' => ':attribute mag alleen letters en nummers bevatten.',
+ 'array' => ':attribute moet een reeks zijn.',
+ 'backup_codes' => 'De opgegeven code is niet geldig of eerder al gebruikt.',
+ 'before' => ':attribute moet een datum zijn voor :date.',
+ 'between' => [
+ 'numeric' => ':attribute moet tussen de :min en :max zijn.',
+ 'file' => ':attribute moet tussen de :min en :max kilobytes zijn.',
+ 'string' => ':attribute moet tussen de :min en :max tekens zijn.',
+ 'array' => ':attribute moet tussen de :min en :max items bevatten.',
+ ],
+ 'boolean' => ':attribute moet ja of nee zijn.',
+ 'confirmed' => ':attribute bevestiging komt niet overeen.',
+ 'date' => ':attribute is geen geldige datum.',
+ 'date_format' => ':attribute komt niet overeen met het formaat :format.',
+ 'different' => ':attribute en :other moeten verschillend zijn.',
+ 'digits' => ':attribute moet bestaan uit :digits cijfers.',
+ 'digits_between' => ':attribute moet tussen de :min en :max cijfers zijn.',
+ 'email' => ':attribute is geen geldig e-mailadres.',
+ 'ends_with' => ':attribute moet eindigen met een van de volgende: :values',
+ 'file' => 'Het :attribute moet als een geldig bestand opgegeven worden.',
+ 'filled' => ':attribute is verplicht.',
+ 'gt' => [
+ 'numeric' => ':attribute moet groter zijn dan :value.',
+ 'file' => ':attribute moet groter zijn dan :value kilobytes.',
+ 'string' => ':attribute moet meer dan :value tekens bevatten.',
+ 'array' => ':attribute moet meer dan :value items bevatten.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute moet groter of gelijk zijn aan :value.',
+ 'file' => ':attribute moet groter of gelijk zijn aan :value kilobytes.',
+ 'string' => ':attribute moet :value of meer tekens bevatten.',
+ 'array' => ':attribute moet :value items of meer bevatten.',
+ ],
+ 'exists' => ':attribute is ongeldig.',
+ 'image' => ':attribute moet een afbeelding zijn.',
+ 'image_extension' => ':attribute moet een geldige en ondersteunde afbeeldings-extensie hebben.',
+ 'in' => ':attribute is ongeldig.',
+ 'integer' => ':attribute moet een getal zijn.',
+ 'ip' => ':attribute moet een geldig IP-adres zijn.',
+ 'ipv4' => ':attribute moet een geldig IPv4-adres zijn.',
+ 'ipv6' => ':attribute moet een geldig IPv6-adres zijn.',
+ 'json' => ':attribute moet een geldige JSON-string zijn.',
+ 'lt' => [
+ 'numeric' => ':attribute moet kleiner zijn dan :value.',
+ 'file' => ':attribute moet kleiner zijn dan :value kilobytes.',
+ 'string' => ':attribute moet minder dan :value tekens bevatten.',
+ 'array' => ':attribute moet minder dan :value items bevatten.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute moet kleiner of gelijk zijn aan :value.',
+ 'file' => ':attribute moet kleiner of gelijk zijn aan :value kilobytes.',
+ 'string' => ':attribute moet :value tekens of minder bevatten.',
+ 'array' => ':attribute mag niet meer dan :value items bevatten.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute mag niet groter zijn dan :max.',
+ 'file' => ':attribute mag niet groter zijn dan :max kilobytes.',
+ 'string' => ':attribute mag niet groter zijn dan :max tekens.',
+ 'array' => ':attribute mag niet meer dan :max items bevatten.',
+ ],
+ 'mimes' => ':attribute moet een bestand zijn van het type: :values.',
+ 'min' => [
+ 'numeric' => ':attribute moet minstens :min zijn.',
+ 'file' => ':attribute moet minstens :min kilobytes zijn.',
+ 'string' => ':attribute moet minstens :min karakters bevatten.',
+ 'array' => ':attribute moet minstens :min items bevatten.',
+ ],
+ 'not_in' => ':attribute is ongeldig.',
+ 'not_regex' => ':attribute formaat is ongeldig.',
+ 'numeric' => ':attribute moet een getal zijn.',
+ 'regex' => ':attribute formaat is ongeldig.',
+ 'required' => ':attribute veld is verplicht.',
+ 'required_if' => ':attribute veld is verplicht als :other gelijk is aan :value.',
+ 'required_with' => ':attribute veld is verplicht wanneer :values ingesteld is.',
+ 'required_with_all' => ':attribute veld is verplicht wanneer :values ingesteld is.',
+ 'required_without' => ':attribute veld is verplicht wanneer :values niet ingesteld is.',
+ 'required_without_all' => ':attribute veld is verplicht wanneer geen van :values ingesteld zijn.',
+ 'same' => ':attribute en :other moeten overeenkomen.',
+ 'safe_url' => 'De opgegeven link is mogelijk niet veilig.',
+ 'size' => [
+ 'numeric' => ':attribute moet :size zijn.',
+ 'file' => ':attribute moet :size kilobytes zijn.',
+ 'string' => ':attribute moet :size tekens bevatten.',
+ 'array' => ':attribute moet :size items bevatten.',
+ ],
+ 'string' => ':attribute moet tekst zijn.',
+ 'timezone' => ':attribute moet een geldige zone zijn.',
+ 'totp' => 'De opgegeven code is niet geldig of verlopen.',
+ 'unique' => ':attribute is al in gebruik.',
+ 'url' => ':attribute formaat is ongeldig.',
+ 'uploaded' => 'Het bestand kon niet worden geüpload. De server accepteert mogelijk geen bestanden van deze grootte.',
+
+ 'zip_file' => 'Het \':attribute\' veld moet verwijzen naar een bestand in de ZIP.',
+ 'zip_file_size' => 'Het bestand :attribute mag niet groter zijn dan :size MB.',
+ 'zip_file_mime' => 'Het \':attribute\' veld moet verwijzen naar een bestand met het type :validTypes, vond :foundType.',
+ 'zip_model_expected' => 'Dataobject verwacht maar vond ":type".',
+ 'zip_unique' => ':attribute moet uniek zijn voor het objecttype binnen de ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Wachtwoord bevestiging verplicht',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/nn/activities.php b/lang/nn/activities.php
new file mode 100644
index 00000000000..f87aadc6677
--- /dev/null
+++ b/lang/nn/activities.php
@@ -0,0 +1,140 @@
+ 'oppretta side',
+ 'page_create_notification' => 'Sida vart oppretta',
+ 'page_update' => 'oppdaterte side',
+ 'page_update_notification' => 'Sida vart oppretta',
+ 'page_delete' => 'sletta side',
+ 'page_delete_notification' => 'Sida vart sletta',
+ 'page_restore' => 'gjenoppretta side',
+ 'page_restore_notification' => 'Sida vart gjenoppretta',
+ 'page_move' => 'flytta side',
+ 'page_move_notification' => 'Sida vart flytta',
+
+ // Chapters
+ 'chapter_create' => 'oppretta kapittel',
+ 'chapter_create_notification' => 'Kapittelet vart oppretta',
+ 'chapter_update' => 'oppdaterte kapittel',
+ 'chapter_update_notification' => 'Kapittelet vart oppdatert',
+ 'chapter_delete' => 'sletta kapittel',
+ 'chapter_delete_notification' => 'Kapittelet vart sletta',
+ 'chapter_move' => 'flytta kapittel',
+ 'chapter_move_notification' => 'Kapitelet vart flytta',
+
+ // Books
+ 'book_create' => 'oppretta bok',
+ 'book_create_notification' => 'Boka vart oppretta',
+ 'book_create_from_chapter' => 'konverterte kapittelet til bok',
+ 'book_create_from_chapter_notification' => 'Kapittelet vart konvertert til ei bok',
+ 'book_update' => 'oppdaterte bok',
+ 'book_update_notification' => 'Boka vart oppdatert',
+ 'book_delete' => 'sletta bok',
+ 'book_delete_notification' => 'Boka vart sletta',
+ 'book_sort' => 'sorterte bok',
+ 'book_sort_notification' => 'Sorteringa vart endra',
+
+ // Bookshelves
+ 'bookshelf_create' => 'oppretta hylle',
+ 'bookshelf_create_notification' => 'Hylla vart oppretta',
+ 'bookshelf_create_from_book' => 'endra frå bok til hylle',
+ 'bookshelf_create_from_book_notification' => 'Boka vart konvertert til ei bokhylle',
+ 'bookshelf_update' => 'oppdaterte hylle',
+ 'bookshelf_update_notification' => 'Hylla vart oppdatert',
+ 'bookshelf_delete' => 'sletta hylle',
+ 'bookshelf_delete_notification' => 'Hylla vart sletta',
+
+ // Revisions
+ 'revision_restore' => 'gjenoppretta revisjon',
+ 'revision_delete' => 'sletta revisjon',
+ 'revision_delete_notification' => 'Revisjon sletta',
+
+ // Favourites
+ 'favourite_add_notification' => '«:name» vart lagt til i dine favorittar',
+ 'favourite_remove_notification' => '«:name» vart fjerna frå dine favorittar',
+
+ // Watching
+ 'watch_update_level_notification' => 'Overvakingsinnstillingane vart oppdatert',
+
+ // Auth
+ 'auth_login' => 'logga inn',
+ 'auth_register' => 'registrert som ny brukar',
+ 'auth_password_reset_request' => 'ba om tilbakestilling av passord',
+ 'auth_password_reset_update' => 'tilbakestill brukarpassord',
+ 'mfa_setup_method' => 'konfigurert MFA-metode',
+ 'mfa_setup_method_notification' => 'Fleirfaktor-metoden vart konfigurert',
+ 'mfa_remove_method' => 'fjerna MFA-metode',
+ 'mfa_remove_method_notification' => 'Fleirfaktor-metoden vart fjerna',
+
+ // Settings
+ 'settings_update' => 'oppdaterte innstillingar',
+ 'settings_update_notification' => 'Innstillingane er oppdatert',
+ 'maintenance_action_run' => 'kjørte vedlikehaldshandling',
+
+ // Webhooks
+ 'webhook_create' => 'oppretta webhook',
+ 'webhook_create_notification' => 'Webhook vart oppretta',
+ 'webhook_update' => 'oppdatert webhook',
+ 'webhook_update_notification' => 'Webhook vart oppdatert',
+ 'webhook_delete' => 'sletta webhook',
+ 'webhook_delete_notification' => 'Webhook vart sletta',
+
+ // Imports
+ 'import_create' => 'created import',
+ 'import_create_notification' => 'Import successfully uploaded',
+ 'import_run' => 'updated import',
+ 'import_run_notification' => 'Content successfully imported',
+ 'import_delete' => 'deleted import',
+ 'import_delete_notification' => 'Import successfully deleted',
+
+ // Users
+ 'user_create' => 'oppretta brukar',
+ 'user_create_notification' => 'Brukar vart oppretta',
+ 'user_update' => 'oppdatert brukar',
+ 'user_update_notification' => 'Brukaren vart oppdatert',
+ 'user_delete' => 'sletta brukar',
+ 'user_delete_notification' => 'Brukaren vart fjerna',
+
+ // API Tokens
+ 'api_token_create' => 'opprett API-nøkkel',
+ 'api_token_create_notification' => 'API-token er oppretta',
+ 'api_token_update' => 'oppdatert api token',
+ 'api_token_update_notification' => 'API-token oppdatert',
+ 'api_token_delete' => 'sletta api token',
+ 'api_token_delete_notification' => 'API-token vart sletta',
+
+ // Roles
+ 'role_create' => 'oppretta rolle',
+ 'role_create_notification' => 'Rolla vart oppretta',
+ 'role_update' => 'oppdatert rolle',
+ 'role_update_notification' => 'Rolla vart oppdatert',
+ 'role_delete' => 'sletta rolla',
+ 'role_delete_notification' => 'Rolla vart fjerna',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'tømt søppelbøtta',
+ 'recycle_bin_restore' => 'gjenoppretta frå søppelbøtta',
+ 'recycle_bin_destroy' => 'fjerna frå søppelbøtta',
+
+ // Comments
+ 'commented_on' => 'kommenterte på',
+ 'comment_create' => 'lagt til kommentar',
+ 'comment_update' => 'oppdatert kommentar',
+ 'comment_delete' => 'sletta kommentar',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'oppdaterte tilgangar',
+];
diff --git a/lang/nn/auth.php b/lang/nn/auth.php
new file mode 100644
index 00000000000..5da686eaa9e
--- /dev/null
+++ b/lang/nn/auth.php
@@ -0,0 +1,117 @@
+ 'Desse detaljane samsvarar ikkje med det me har på bok.',
+ 'throttle' => 'For mange forsøk, prøv på nytt om :seconds sekunder.',
+
+ // Login & Register
+ 'sign_up' => 'Registrer deg',
+ 'log_in' => 'Logg inn',
+ 'log_in_with' => 'Logg inn med :socialDriver',
+ 'sign_up_with' => 'Registrer med :socialDriver',
+ 'logout' => 'Logg ut',
+
+ 'name' => 'Namn',
+ 'username' => 'Brukarnamn',
+ 'email' => 'E-post',
+ 'password' => 'Passord',
+ 'password_confirm' => 'Stadfest passord',
+ 'password_hint' => 'Må vere minst 8 teikn',
+ 'forgot_password' => 'Gløymt passord?',
+ 'remember_me' => 'Hugs meg',
+ 'ldap_email_hint' => 'Oppgi ein e-post for denne kontoen.',
+ 'create_account' => 'Opprett konto',
+ 'already_have_account' => 'Har du allereie ein konto?',
+ 'dont_have_account' => 'Manglar du ein konto?',
+ 'social_login' => 'Sosiale kontoar',
+ 'social_registration' => 'Registrer via sosiale kontoar',
+ 'social_registration_text' => 'Bruk ei anna teneste for å registrere deg.',
+
+ 'register_thanks' => 'Takk for at du registrerte deg!',
+ 'register_confirm' => 'Sjekk e-posten din for informasjon som gir deg tilgang til :appName.',
+ 'registrations_disabled' => 'Registrering er deaktivert.',
+ 'registration_email_domain_invalid' => 'Du kan ikkje bruke det domenet for å registrere ein konto',
+ 'register_success' => 'Takk for registreringa! Du kan no logge inn på tenesta.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Prøver innlogging',
+ 'auto_init_starting_desc' => 'Me kontaktar autentiseringssystemet ditt for å starte innloggingsprosessen. Dersom det ikkje er noko framdrift i løpet av fem sekunder kan du trykke på lenka under.',
+ 'auto_init_start_link' => 'Fortsett med autentisering',
+
+ // Password Reset
+ 'reset_password' => 'Nullstill passord',
+ 'reset_password_send_instructions' => 'Oppgi e-posten kobla til kontoen din, så sender me ein e-post der du kan nullstille passordet.',
+ 'reset_password_send_button' => 'Send nullstillingslenke',
+ 'reset_password_sent' => 'Ei nullstillingslenke vart sendt til :email om den eksisterer i systemet.',
+ 'reset_password_success' => 'Passordet vart nullstilt.',
+ 'email_reset_subject' => 'Nullstill ditt :appName passord',
+ 'email_reset_text' => 'Du mottar denne e-posten fordi det er blitt bedt om ei nullstilling av passord for denne kontoen.',
+ 'email_reset_not_requested' => 'Om det ikkje var deg, så treng du ikkje gjere noko.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Stadfest e-postadressa for :appName',
+ 'email_confirm_greeting' => 'Takk for at du registrerte deg på :appName!',
+ 'email_confirm_text' => 'Stadfest e-posten din ved å trykke på knappen under:',
+ 'email_confirm_action' => 'Stadfest e-post',
+ 'email_confirm_send_error' => 'Stadfesting er krevd av systemet, men systemet kan ikkje sende desse. Kontakt admin for å løyse problemet.',
+ 'email_confirm_success' => 'E-postadressa di er verifisert! Du kan no logge inn ved å bruke denne ved innlogging.',
+ 'email_confirm_resent' => 'Stadfesting sendt på e-post, sjekk innboksen din.',
+ 'email_confirm_thanks' => 'Takk for verifiseringa!',
+ 'email_confirm_thanks_desc' => 'Vent litt medan me verifiserer. Om du ikkje vert sendt vidare i løpet av tre sekunder, kan du klikke på "Fortsett" under.',
+
+ 'email_not_confirmed' => 'E-posten er ikkje stadfesta',
+ 'email_not_confirmed_text' => 'E-postadressa er ennå ikkje stadfesta.',
+ 'email_not_confirmed_click_link' => 'Trykk på lenka i e-posten du fekk då du registrerte deg.',
+ 'email_not_confirmed_resend' => 'Finner du den ikkje i innboks eller useriøs e-post? Trykk på knappen under for å få ny.',
+ 'email_not_confirmed_resend_button' => 'Send stadfesting på e-post på nytt',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Du har blitt invitert til :appName!',
+ 'user_invite_email_greeting' => 'Ein konto har blitt oppretta for deg på :appName.',
+ 'user_invite_email_text' => 'Trykk på knappen under for å opprette eit sikkert passord:',
+ 'user_invite_email_action' => 'Skriv inn passord',
+ 'user_invite_page_welcome' => 'Velkommen til :appName!',
+ 'user_invite_page_text' => 'For å fullføre prosessen må du oppgi eit passord som sikrar din konto på :appName for neste besøk.',
+ 'user_invite_page_confirm_button' => 'Stadfest passord',
+ 'user_invite_success_login' => 'Passordet vart lagra, du skal nå kunne logge inn med ditt nye passord for å få tilgang til :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Konfigurer fleirfaktor-autentisering',
+ 'mfa_setup_desc' => 'Konfigurer fleirfaktor-autentisering som eit ekstra lag med tryggleik for brukarkontoen din.',
+ 'mfa_setup_configured' => 'Allereie konfigurert',
+ 'mfa_setup_reconfigure' => 'Konfigurer på nytt',
+ 'mfa_setup_remove_confirmation' => 'Er du sikker på at du vil deaktivere denne fleirfaktor-autentiseringsmetoden?',
+ 'mfa_setup_action' => 'Konfigurasjon',
+ 'mfa_backup_codes_usage_limit_warning' => 'Du har mindre enn 5 tryggleikskodar igjen; generer gjerne nye og lagre eit nytt sett før du går tom for kodar. Då slepper du å bli låst ute frå kontoen din.',
+ 'mfa_option_totp_title' => 'Mobilapplikasjon',
+ 'mfa_option_totp_desc' => 'For å bruka fleirfaktorautentisering treng du ein mobilapplikasjon som støttar TOTP-teknologien, slik som Google Authenticator, Authy eller Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Tryggleikskodar',
+ 'mfa_option_backup_codes_desc' => 'Genererer et sett med engangs sikkerhetskoder som du skal logge inn for å bekrefte identiteten din. Sørg for å lagre disse på et sikkert og sikkert sted.',
+ 'mfa_gen_confirm_and_enable' => 'Stadfest og aktiver',
+ 'mfa_gen_backup_codes_title' => 'Konfigurasjon av tryggleikskodar',
+ 'mfa_gen_backup_codes_desc' => 'Lagre lista under med kodar på ein trygg stad. Når du skal ha tilgang til systemet kan du bruka ein av desse som ein faktor under innlogging.',
+ 'mfa_gen_backup_codes_download' => 'Last ned kodar',
+ 'mfa_gen_backup_codes_usage_warning' => 'Kvar kode kan berre brukast ein gong',
+ 'mfa_gen_totp_title' => 'Oppsett for mobilapplikasjon',
+ 'mfa_gen_totp_desc' => 'For å bruka fleirfaktorautentisering treng du ein mobilapplikasjon som støttar TOTP-teknologien, slik som Google Authenticator, Authy eller Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Scan QR-koden nedanfor med vald TOTP-applikasjon for å starta.',
+ 'mfa_gen_totp_verify_setup' => 'Stadfest oppsett',
+ 'mfa_gen_totp_verify_setup_desc' => 'Stadfest at oppsettet fungerer ved å skrive inn koden fra TOTP-applikasjonen i boksen nedanfor:',
+ 'mfa_gen_totp_provide_code_here' => 'Skriv inn den genererte koden her',
+ 'mfa_verify_access' => 'Stadfest tilgang',
+ 'mfa_verify_access_desc' => 'Brukarkontoen din krev at du stadfestar identiteten din med ein ekstra autentiseringsfaktor før du får tilgang. Stadfest identiteten med ein av dine konfigurerte metodar for å halda fram.',
+ 'mfa_verify_no_methods' => 'Ingen metodar er konfigurert',
+ 'mfa_verify_no_methods_desc' => 'Ingen fleirfaktorautentiseringsmetoder er satt opp for din konto. Du må setje opp minst ein metode for å få tilgang.',
+ 'mfa_verify_use_totp' => 'Stadfest med mobilapplikasjon',
+ 'mfa_verify_use_backup_codes' => 'Stadfest med tryggleikskode',
+ 'mfa_verify_backup_code' => 'Tryggleikskode',
+ 'mfa_verify_backup_code_desc' => 'Skriv inn ein av dei ubrukte tryggleikskodane dine under:',
+ 'mfa_verify_backup_code_enter_here' => 'Skriv inn tryggleikskode her',
+ 'mfa_verify_totp_desc' => 'Skriv inn koden, generert ved hjelp av mobilapplikasjonen, nedanfor:',
+ 'mfa_setup_login_notification' => 'Fleirfaktorautentisering er konfigurert, vennlegast logg inn på nytt med denne metoden.',
+];
diff --git a/lang/nn/common.php b/lang/nn/common.php
new file mode 100644
index 00000000000..4247563e0fb
--- /dev/null
+++ b/lang/nn/common.php
@@ -0,0 +1,115 @@
+ 'Avbryt',
+ 'close' => 'Lukk',
+ 'confirm' => 'Stadfest',
+ 'back' => 'Tilbake',
+ 'save' => 'Lagre',
+ 'continue' => 'Fortsett',
+ 'select' => 'Vel',
+ 'toggle_all' => 'Byt alle',
+ 'more' => 'Meir',
+
+ // Form Labels
+ 'name' => 'Namn',
+ 'description' => 'Skildring',
+ 'role' => 'Rolle',
+ 'cover_image' => 'Framside',
+ 'cover_image_description' => 'This image should be approximately 440x250px although it will be flexibly scaled & cropped to fit the user interface in different scenarios as required, so actual dimensions for display will differ.',
+
+ // Actions
+ 'actions' => 'Handlingar',
+ 'view' => 'Vis',
+ 'view_all' => 'Vis alle',
+ 'new' => 'Ny',
+ 'create' => 'Opprett',
+ 'update' => 'Oppdater',
+ 'edit' => 'Rediger',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Sortér',
+ 'move' => 'Flytt',
+ 'copy' => 'Kopier',
+ 'reply' => 'Svar',
+ 'delete' => 'Slett',
+ 'delete_confirm' => 'Stadfest sletting',
+ 'search' => 'Søk',
+ 'search_clear' => 'Nullstill søk',
+ 'reset' => 'Nullstill',
+ 'remove' => 'Fjern',
+ 'add' => 'Legg til',
+ 'configure' => 'Konfigurer',
+ 'manage' => 'Administrer',
+ 'fullscreen' => 'Fullskjerm',
+ 'favourite' => 'Merk som favoritt',
+ 'unfavourite' => 'Fjern som favoritt',
+ 'next' => 'Neste',
+ 'previous' => 'Førre',
+ 'filter_active' => 'Aktivt filter:',
+ 'filter_clear' => 'Tøm filter',
+ 'download' => 'Last ned',
+ 'open_in_tab' => 'Opne i fane',
+ 'open' => 'Opne',
+
+ // Sort Options
+ 'sort_options' => 'Sorteringsalternativ',
+ 'sort_direction_toggle' => 'Sorteringsretning',
+ 'sort_ascending' => 'Stigande sortering',
+ 'sort_descending' => 'Synkande sortering',
+ 'sort_name' => 'Namn',
+ 'sort_default' => 'Standard',
+ 'sort_created_at' => 'Dato oppretta',
+ 'sort_updated_at' => 'Dato oppdatert',
+
+ // Misc
+ 'deleted_user' => 'Slett brukar',
+ 'no_activity' => 'Ingen aktivitet å vise',
+ 'no_items' => 'Ingenting å vise',
+ 'back_to_top' => 'Tilbake til toppen',
+ 'skip_to_main_content' => 'Gå til hovudinnhald',
+ 'toggle_details' => 'Vis/skjul detaljar',
+ 'toggle_thumbnails' => 'Vis/skjul miniatyrbilete',
+ 'details' => 'Detaljar',
+ 'grid_view' => 'Rutenettvising',
+ 'list_view' => 'Listevising',
+ 'default' => 'Standard',
+ 'breadcrumb' => 'Brødsmular',
+ 'status' => 'Status',
+ 'status_active' => 'Aktiv',
+ 'status_inactive' => 'Inaktiv',
+ 'never' => 'Aldri',
+ 'none' => 'Ingen',
+
+ // Header
+ 'homepage' => 'Heimeside',
+ 'header_menu_expand' => 'Utvid toppmeny',
+ 'profile_menu' => 'Profilmeny',
+ 'view_profile' => 'Vis profil',
+ 'edit_profile' => 'Endre profil',
+ 'dark_mode' => 'Kveldsmodus',
+ 'light_mode' => 'Dagmodus',
+ 'global_search' => 'Globalt søk',
+
+ // Layout tabs
+ 'tab_info' => 'Informasjon',
+ 'tab_info_label' => 'Fane: Vis tilleggsinfo',
+ 'tab_content' => 'Innhald',
+ 'tab_content_label' => 'Fane: Vis hovudinnhald',
+
+ // Email Content
+ 'email_action_help' => 'Om du har problem med å trykkja på ":actionText"-knappen, bruk nettadressa under for å gå direkte dit:',
+ 'email_rights' => 'Kopibeskytta',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Personvernreglar',
+ 'terms_of_service' => 'Bruksvilkår',
+
+ // OpenSearch
+ 'opensearch_description' => 'Search :appName',
+];
diff --git a/lang/nn/components.php b/lang/nn/components.php
new file mode 100644
index 00000000000..88115642704
--- /dev/null
+++ b/lang/nn/components.php
@@ -0,0 +1,46 @@
+ 'Vel bilete',
+ 'image_list' => 'Bileteliste',
+ 'image_details' => 'Biletedetaljar',
+ 'image_upload' => 'Last opp bilete',
+ 'image_intro' => 'Her kan du velja og behandla bilete som tidlegare har vorte lasta opp til systemet.',
+ 'image_intro_upload' => 'Last opp eit nytt bilete ved å dra eit bilete i dette vindauget, eller ved å bruka knappen "Last opp bilete" ovanfor.',
+ 'image_all' => 'Alle',
+ 'image_all_title' => 'Vis alle bilete',
+ 'image_book_title' => 'Vis bilete som er lasta opp i denne boka',
+ 'image_page_title' => 'Vis bilete lastet opp til denne sida',
+ 'image_search_hint' => 'Søk på bilete etter namn',
+ 'image_uploaded' => 'Lasta opp :uploadedDate',
+ 'image_uploaded_by' => 'Lasta opp av :userName',
+ 'image_uploaded_to' => 'Lasta opp til :pageLink',
+ 'image_updated' => 'Oppdatert :updateDate',
+ 'image_load_more' => 'Last inn fleire',
+ 'image_image_name' => 'Biletenavn',
+ 'image_delete_used' => 'Dette biletet er brukt på sidene nedanfor.',
+ 'image_delete_confirm_text' => 'Vil du slette dette biletet?',
+ 'image_select_image' => 'Velg bilete',
+ 'image_dropzone' => 'Dra og slepp eller trykk her for å laste opp bilete',
+ 'image_dropzone_drop' => 'Slepp bilete her for å laste opp',
+ 'images_deleted' => 'Bilete sletta',
+ 'image_preview' => 'Snøggvising av bilete',
+ 'image_upload_success' => 'Bilete vart lasta opp',
+ 'image_update_success' => 'Biletedetaljar vart oppdatert',
+ 'image_delete_success' => 'Bilete vart sletta',
+ 'image_replace' => 'Erstatt bilete',
+ 'image_replace_success' => 'Biletefil vart oppdatert',
+ 'image_rebuild_thumbs' => 'Regenerer ulike storleikar',
+ 'image_rebuild_thumbs_success' => 'Bilete i ulike storleikar vart bygd på nytt!',
+
+ // Code Editor
+ 'code_editor' => 'Endre kode',
+ 'code_language' => 'Kodespråk',
+ 'code_content' => 'Kodeinnhald',
+ 'code_session_history' => 'Sesjonshistorikk',
+ 'code_save' => 'Lagre kode',
+];
diff --git a/lang/nn/editor.php b/lang/nn/editor.php
new file mode 100644
index 00000000000..6128223a91d
--- /dev/null
+++ b/lang/nn/editor.php
@@ -0,0 +1,182 @@
+ 'Generelt',
+ 'advanced' => 'Avansert',
+ 'none' => 'Ingen',
+ 'cancel' => 'Avbryt',
+ 'save' => 'Lagre',
+ 'close' => 'Lukk',
+ 'apply' => 'Apply',
+ 'undo' => 'Angre',
+ 'redo' => 'Gjer om',
+ 'left' => 'Venstre',
+ 'center' => 'Sentrert',
+ 'right' => 'Høgre',
+ 'top' => 'Topp',
+ 'middle' => 'Sentrert',
+ 'bottom' => 'Botn',
+ 'width' => 'Breidde',
+ 'height' => 'Høgde',
+ 'More' => 'Meir',
+ 'select' => 'Velg …',
+
+ // Toolbar
+ 'formats' => 'Formater',
+ 'header_large' => 'Stor overskrift',
+ 'header_medium' => 'Medium overskrift',
+ 'header_small' => 'Lita overskrift',
+ 'header_tiny' => 'Bittelita overskrift',
+ 'paragraph' => 'Avsnitt',
+ 'blockquote' => 'Blokksitat',
+ 'inline_code' => 'Kodesetning',
+ 'callouts' => 'Notabene',
+ 'callout_information' => 'Informasjon',
+ 'callout_success' => 'Positiv',
+ 'callout_warning' => 'Advarsel',
+ 'callout_danger' => 'Negativ',
+ 'bold' => 'Feit',
+ 'italic' => 'Kursiv',
+ 'underline' => 'Understrek',
+ 'strikethrough' => 'Strek over',
+ 'superscript' => 'Heva skrift',
+ 'subscript' => 'Senka skrift',
+ 'text_color' => 'Tekstfarge',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Eigenvalgt farge',
+ 'remove_color' => 'Fjern farge',
+ 'background_color' => 'Bakgrunnsfarge',
+ 'align_left' => 'Venstrejustering',
+ 'align_center' => 'Midtstilling',
+ 'align_right' => 'Høgrejustering',
+ 'align_justify' => 'Blokkjustering',
+ 'list_bullet' => 'Punktliste',
+ 'list_numbered' => 'Nummerert liste',
+ 'list_task' => 'Oppgaveliste',
+ 'indent_increase' => 'Auk innrykk',
+ 'indent_decrease' => 'Redusér innrykk',
+ 'table' => 'Tabell',
+ 'insert_image' => 'Sett inn bilde',
+ 'insert_image_title' => 'Sett inn/redigér bilde',
+ 'insert_link' => 'Sett inn/redigér lenke',
+ 'insert_link_title' => 'Sett inn/redigér lenke',
+ 'insert_horizontal_line' => 'Sett inn horisontal linje',
+ 'insert_code_block' => 'Sett inn kodeblokk',
+ 'edit_code_block' => 'Redigér kodeblokk',
+ 'insert_drawing' => 'Sett inn/redigér tegning',
+ 'drawing_manager' => 'Tegningsbehandling',
+ 'insert_media' => 'Sett inn/redigér media',
+ 'insert_media_title' => 'Sett inn/redigér media',
+ 'clear_formatting' => 'Rens formattering',
+ 'source_code' => 'Kildekode',
+ 'source_code_title' => 'Kildekode',
+ 'fullscreen' => 'Fullskjerm',
+ 'image_options' => 'Bildealternativer',
+
+ // Tables
+ 'table_properties' => 'Tabellegenskaper',
+ 'table_properties_title' => 'Tabellegenskaper',
+ 'delete_table' => 'Slett tabell',
+ 'table_clear_formatting' => 'Clear table formatting',
+ 'resize_to_contents' => 'Resize to contents',
+ 'row_header' => 'Row header',
+ 'insert_row_before' => 'Sett inn rad før',
+ 'insert_row_after' => 'Sett inn rad etter',
+ 'delete_row' => 'Slett rad',
+ 'insert_column_before' => 'Sett inn kolonne før',
+ 'insert_column_after' => 'Sett inn kolonne etter',
+ 'delete_column' => 'Slett kolonne',
+ 'table_cell' => 'Celle',
+ 'table_row' => 'Rad',
+ 'table_column' => 'Kolonne',
+ 'cell_properties' => 'Celle-egenskaper',
+ 'cell_properties_title' => 'Celle-egenskaper',
+ 'cell_type' => 'Celletype',
+ 'cell_type_cell' => 'Celle',
+ 'cell_scope' => 'Omfang',
+ 'cell_type_header' => 'Topptekst-celle',
+ 'merge_cells' => 'Slå sammen celler',
+ 'split_cell' => 'Del celle',
+ 'table_row_group' => 'Radgruppe',
+ 'table_column_group' => 'Kolonnegruppe',
+ 'horizontal_align' => 'Horisontal justering',
+ 'vertical_align' => 'Vertikal justering',
+ 'border_width' => 'Kantbredde',
+ 'border_style' => 'Kantstil',
+ 'border_color' => 'Kantfarge',
+ 'row_properties' => 'Radegenskaper',
+ 'row_properties_title' => 'Radegenskaper',
+ 'cut_row' => 'Klipp ut rad',
+ 'copy_row' => 'Kopiér rad',
+ 'paste_row_before' => 'Lim rad inn før',
+ 'paste_row_after' => 'Lim rad inn etter',
+ 'row_type' => 'Radtype',
+ 'row_type_header' => 'Topptekst',
+ 'row_type_body' => 'Hovedtekst',
+ 'row_type_footer' => 'Bunntekst',
+ 'alignment' => 'Justering',
+ 'cut_column' => 'Klipp ut kolonne',
+ 'copy_column' => 'Kopiér kolonne',
+ 'paste_column_before' => 'Lim kolonne inn før',
+ 'paste_column_after' => 'Lim kolonne inn etter',
+ 'cell_padding' => 'Celleutfylling',
+ 'cell_spacing' => 'Celleavstand',
+ 'caption' => 'Overskrift',
+ 'show_caption' => 'Vis overskrift',
+ 'constrain' => 'Behold proporsjoner',
+ 'cell_border_solid' => 'Heltrukket',
+ 'cell_border_dotted' => 'Prikker',
+ 'cell_border_dashed' => 'Stipler',
+ 'cell_border_double' => 'Dobbel',
+ 'cell_border_groove' => 'Rille',
+ 'cell_border_ridge' => 'Kant',
+ 'cell_border_inset' => 'Nedsenk',
+ 'cell_border_outset' => 'Uthev',
+ 'cell_border_none' => 'Ingen',
+ 'cell_border_hidden' => 'Skjult bredde',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Kilde',
+ 'alt_desc' => 'Alternativ beskrivelse',
+ 'embed' => 'Bygg inn',
+ 'paste_embed' => 'Lim inn koden din her:',
+ 'url' => 'Nettlenke',
+ 'text_to_display' => 'Synlig tekst',
+ 'title' => 'Tittel',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Åpne lenke',
+ 'open_link_in' => 'Åpne i ...',
+ 'open_link_current' => 'Samme vindu',
+ 'open_link_new' => 'Nytt vindu',
+ 'remove_link' => 'Fjern lenke',
+ 'insert_collapsible' => 'Sett inn sammenleggbar blokk',
+ 'collapsible_unwrap' => 'Pakk ut',
+ 'edit_label' => 'Rediger etikett',
+ 'toggle_open_closed' => 'Veksle åpen/lukket',
+ 'collapsible_edit' => 'Rediger sammenleggbar blokk',
+ 'toggle_label' => 'Veksle etikettsynlighet',
+
+ // About view
+ 'about' => 'Om tekstredigeringsprogrammet',
+ 'about_title' => 'Om HDSEHDF-tekstredigeringsprogrammet',
+ 'editor_license' => 'Tekstbehandlerlisens og opphavsrett',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'Denne tekstredigereren er laget med :tinyLink som er lisensiert under MIT.',
+ 'editor_tiny_license_link' => 'Informasjon om opphavsrett og lisens for TinyMCE finnes her.',
+ 'save_continue' => 'Lagre side og fortsett',
+ 'callouts_cycle' => '(Fortsett å trykke for å veksle mellom typer)',
+ 'link_selector' => 'Lenke til innhold',
+ 'shortcuts' => 'Snarveier',
+ 'shortcut' => 'Snarvei',
+ 'shortcuts_intro' => 'Følgende snarveier er tilgjengelige i tekstredigeringsverktøyet:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(MacOS)',
+ 'description' => 'Beskrivelse',
+];
diff --git a/lang/nn/entities.php b/lang/nn/entities.php
new file mode 100644
index 00000000000..4c75d501986
--- /dev/null
+++ b/lang/nn/entities.php
@@ -0,0 +1,476 @@
+ 'Nylig oppretta',
+ 'recently_created_pages' => 'Nyleg oppretta sider',
+ 'recently_updated_pages' => 'Nyleg oppdaterte sider',
+ 'recently_created_chapters' => 'Nyleg oppretta kapitler',
+ 'recently_created_books' => 'Nyleg oppretta bøker',
+ 'recently_created_shelves' => 'Nyleg oppretta bokhyller',
+ 'recently_update' => 'Nyleg oppdatert',
+ 'recently_viewed' => 'Nyleg vist',
+ 'recent_activity' => 'Nyleg aktivitet',
+ 'create_now' => 'Opprett ein no',
+ 'revisions' => 'Revisjonar',
+ 'meta_revision' => 'Revisjon #:revisionCount',
+ 'meta_created' => 'Oppretta :timeLength',
+ 'meta_created_name' => 'Oppretta :timeLength av :user',
+ 'meta_updated' => 'Oppdatert :timeLength',
+ 'meta_updated_name' => 'Oppdatert :timeLength av :user',
+ 'meta_owned_name' => 'Eigd av :user',
+ 'meta_reference_count' => 'Sitert på :count side|Sitert på :count sider',
+ 'entity_select' => 'Velg entitet',
+ 'entity_select_lack_permission' => 'Du har ikkje tilgang til å velge dette elementet',
+ 'images' => 'Bilete',
+ 'my_recent_drafts' => 'Mine nylege utkast',
+ 'my_recently_viewed' => 'Mine nylege visingar',
+ 'my_most_viewed_favourites' => 'Mine mest sette favorittar',
+ 'my_favourites' => 'Mine favorittar',
+ 'no_pages_viewed' => 'Du har ikkje sett på nokre sider',
+ 'no_pages_recently_created' => 'Ingen sider har nylig blitt oppretta',
+ 'no_pages_recently_updated' => 'Ingen sider har nylig blitt oppdatert',
+ 'export' => 'Eksporter',
+ 'export_html' => 'Nettside med alt',
+ 'export_pdf' => 'PDF-fil',
+ 'export_text' => 'Tekstfil',
+ 'export_md' => 'Markdownfil',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Tilgongar',
+ 'permissions_desc' => 'Endringar gjort her vil overstyra standardrettar gitt via brukarroller.',
+ 'permissions_book_cascade' => 'Rettar sett på bøker vil automatisk arvast ned til sidenivå. Du kan overstyra arv ved å definera eigne rettar på kapittel eller sider.',
+ 'permissions_chapter_cascade' => 'Rettar sett på kapittel vil automatisk arvast ned til sider. Du kan overstyra arv ved å definera rettar på enkeltsider.',
+ 'permissions_save' => 'Lagre løyve',
+ 'permissions_owner' => 'Eigar',
+ 'permissions_role_everyone_else' => 'Alle andre',
+ 'permissions_role_everyone_else_desc' => 'Angi rettar for alle roller som ikkje blir overstyrt (arva rettar).',
+ 'permissions_role_override' => 'Overstyr rettar for rolle',
+ 'permissions_inherit_defaults' => 'Arv standardrettar',
+
+ // Search
+ 'search_results' => 'Søkeresultat',
+ 'search_total_results_found' => ':count resultat funne|:count totalt',
+ 'search_clear' => 'Nullstill søk',
+ 'search_no_pages' => 'Ingen sider passar med søket',
+ 'search_for_term' => 'Søk etter :term',
+ 'search_more' => 'Fleire resultat',
+ 'search_advanced' => 'Avansert søk',
+ 'search_terms' => 'Søkeord',
+ 'search_content_type' => 'Innhaldstype',
+ 'search_exact_matches' => 'Eksakte ord',
+ 'search_tags' => 'Søk på merke',
+ 'search_options' => 'Alternativ',
+ 'search_viewed_by_me' => 'Sett av meg',
+ 'search_not_viewed_by_me' => 'Ikkje sett av meg',
+ 'search_permissions_set' => 'Tilgongar er sett',
+ 'search_created_by_me' => 'Oppretta av meg',
+ 'search_updated_by_me' => 'Oppdatert av meg',
+ 'search_owned_by_me' => 'Eigd av meg',
+ 'search_date_options' => 'Datoalternativ',
+ 'search_updated_before' => 'Oppdatert før',
+ 'search_updated_after' => 'Oppdatert etter',
+ 'search_created_before' => 'Oppretta før',
+ 'search_created_after' => 'Oppretta etter',
+ 'search_set_date' => 'Angi dato',
+ 'search_update' => 'Oppdater søk',
+
+ // Shelves
+ 'shelf' => 'Hylle',
+ 'shelves' => 'Hyller',
+ 'x_shelves' => ':count hylle|:count hyller',
+ 'shelves_empty' => 'Ingen bokhyller er oppretta',
+ 'shelves_create' => 'Opprett ny bokhylle',
+ 'shelves_popular' => 'Populære bokhyller',
+ 'shelves_new' => 'Nye bokhyller',
+ 'shelves_new_action' => 'Ny bokhylle',
+ 'shelves_popular_empty' => 'Dei mest populære bokhyllene blir vist her.',
+ 'shelves_new_empty' => 'Nylig opprettede bokhyller vises her.',
+ 'shelves_save' => 'Lagre hylle',
+ 'shelves_books' => 'Bøker på denne hylla',
+ 'shelves_add_books' => 'Legg til bøker på denne hyllen',
+ 'shelves_drag_books' => 'Dra og slepp bøker nedanfor for å legge dei til i denne hylla',
+ 'shelves_empty_contents' => 'Ingen bøker er stabla i denne hylla',
+ 'shelves_edit_and_assign' => 'Endre hylla for å legge til bøker',
+ 'shelves_edit_named' => 'Rediger :name (hylle)',
+ 'shelves_edit' => 'Rediger hylle',
+ 'shelves_delete' => 'Fjern hylle',
+ 'shelves_delete_named' => 'Fjern :name (hylle)',
+ 'shelves_delete_explain' => "Dette vil fjerne hylla «:name». Bøkene på hylla vil ikkje bli sletta frå systemet.",
+ 'shelves_delete_confirmation' => 'Er du sikker på at du vil fjerne denne hylla?',
+ 'shelves_permissions' => 'Hylletilgangar',
+ 'shelves_permissions_updated' => 'Oppdaterte hylletilgangar',
+ 'shelves_permissions_active' => 'Aktiverte hylletilgangar',
+ 'shelves_permissions_cascade_warning' => 'Tilgangar på ei hylle vert ikkje automatisk arva av bøker på hylla. Dette er fordi ei bok kan finnast på fleire hyller samstundes. Tilgangar kan likevel verte kopiert til bøker på hylla ved å bruke alternativa under.',
+ 'shelves_permissions_create' => 'Bokhylle-tilgangar vert brukt for kopiering av løyver til under-bøker ved hjelp av handlinga nedanfor. Dei kontrollerer ikkje rettane til å lage bøker.',
+ 'shelves_copy_permissions_to_books' => 'Kopier tilgangar til bøkene på hylla',
+ 'shelves_copy_permissions' => 'Kopier tilgangar',
+ 'shelves_copy_permissions_explain' => 'Dette vil kopiere tilgangar på denne hylla til alle bøkene som er plassert på den. Før du starter kopieringen bør du sjekke at tilgangane på hylla er lagra.',
+ 'shelves_copy_permission_success' => 'Løyver vart kopiert til :count bøker',
+
+ // Books
+ 'book' => 'Bok',
+ 'books' => 'Bøker',
+ 'x_books' => ':count bok|:count bøker',
+ 'books_empty' => 'Ingen bøker er skrevet',
+ 'books_popular' => 'Populære bøker',
+ 'books_recent' => 'Nylige bøker',
+ 'books_new' => 'Nye bøker',
+ 'books_new_action' => 'Ny bok',
+ 'books_popular_empty' => 'De mest populære bøkene',
+ 'books_new_empty' => 'Siste utgivelser vises her.',
+ 'books_create' => 'Skriv ny bok',
+ 'books_delete' => 'Brenn bok',
+ 'books_delete_named' => 'Brenn boken :bookName',
+ 'books_delete_explain' => 'Dette vil brenne boken «:bookName». Alle sider i boken vil fordufte for godt.',
+ 'books_delete_confirmation' => 'Er du sikker på at du vil brenne boken?',
+ 'books_edit' => 'Endre bok',
+ 'books_edit_named' => 'Endre boken :bookName',
+ 'books_form_book_name' => 'Boktittel',
+ 'books_save' => 'Lagre bok',
+ 'books_permissions' => 'Boktilganger',
+ 'books_permissions_updated' => 'Boktilganger oppdatert',
+ 'books_empty_contents' => 'Ingen sider eller kapittel finst i denne boka.',
+ 'books_empty_create_page' => 'Skriv ei ny side',
+ 'books_empty_sort_current_book' => 'Sorter innhaldet i boka',
+ 'books_empty_add_chapter' => 'Start på nytt kapittel',
+ 'books_permissions_active' => 'Boktilgangar er aktive',
+ 'books_search_this' => 'Søk i boka',
+ 'books_navigation' => 'Boknavigasjon',
+ 'books_sort' => 'Sorter bokinnhald',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Omorganiser :bookName',
+ 'books_sort_name' => 'Sorter på namn',
+ 'books_sort_created' => 'Sorter på oppretta dato',
+ 'books_sort_updated' => 'Sorter på oppdatert dato',
+ 'books_sort_chapters_first' => 'Kapittel først',
+ 'books_sort_chapters_last' => 'Kapittel sist',
+ 'books_sort_show_other' => 'Vis andre bøker',
+ 'books_sort_save' => 'Lagre sortering',
+ 'books_sort_show_other_desc' => 'Legg til andre bøker her for å inkludere dei i omorganiseringa og gjer det enklare å flytte på tvers av dei.',
+ 'books_sort_move_up' => 'Flytt opp',
+ 'books_sort_move_down' => 'Flytt ned',
+ 'books_sort_move_prev_book' => 'Flytt til førre bok',
+ 'books_sort_move_next_book' => 'Flytt til neste bok',
+ 'books_sort_move_prev_chapter' => 'Flytt inn i førre kapittel',
+ 'books_sort_move_next_chapter' => 'Flytt inn i neste kapittel',
+ 'books_sort_move_book_start' => 'Flytt til starten av boka',
+ 'books_sort_move_book_end' => 'Flytt til slutten av boka',
+ 'books_sort_move_before_chapter' => 'Flytt før kapittel',
+ 'books_sort_move_after_chapter' => 'Flytt etter kapittel',
+ 'books_copy' => 'Kopier bok',
+ 'books_copy_success' => 'Boka vart kopiert',
+
+ // Chapters
+ 'chapter' => 'Kapittel',
+ 'chapters' => 'Kapittel',
+ 'x_chapters' => ':count kapittel|:count kapittel',
+ 'chapters_popular' => 'Populære kapittel',
+ 'chapters_new' => 'Nytt kapittel',
+ 'chapters_create' => 'Skriv nytt kapittel',
+ 'chapters_delete' => 'Riv ut kapittel',
+ 'chapters_delete_named' => 'Slett :chapterName',
+ 'chapters_delete_explain' => 'Dette vil slette «:chapterName». Alle sider i kapittelet vil og verte sletta.',
+ 'chapters_delete_confirm' => 'Er du sikker på at du vil slette dette kapittelet?',
+ 'chapters_edit' => 'Rediger kapittel',
+ 'chapters_edit_named' => 'Rediger :chapterName',
+ 'chapters_save' => 'Lagre kapittel',
+ 'chapters_move' => 'Flytt kapittel',
+ 'chapters_move_named' => 'Flytt :chapterName',
+ 'chapters_copy' => 'Kopier kapittel',
+ 'chapters_copy_success' => 'Kapittelet vart kopiert',
+ 'chapters_permissions' => 'Kapitteltilgongar',
+ 'chapters_empty' => 'Det finnes ingen sider i dette kapittelet.',
+ 'chapters_permissions_active' => 'Kapitteltilganger er aktivert',
+ 'chapters_permissions_success' => 'Kapitteltilgager er oppdatert',
+ 'chapters_search_this' => 'Søk i dette kapittelet',
+ 'chapter_sort_book' => 'Omorganisér bok',
+
+ // Pages
+ 'page' => 'Side',
+ 'pages' => 'Sider',
+ 'x_pages' => ':count side|:count sider',
+ 'pages_popular' => 'Populære sider',
+ 'pages_new' => 'Ny side',
+ 'pages_attachments' => 'Vedlegg',
+ 'pages_navigation' => 'Sidenavigasjon',
+ 'pages_delete' => 'Slett side',
+ 'pages_delete_named' => 'Slett :pageName (side)',
+ 'pages_delete_draft_named' => 'Slett utkastet :pageName (side)',
+ 'pages_delete_draft' => 'Slett utkastet',
+ 'pages_delete_success' => 'Siden er slettet',
+ 'pages_delete_draft_success' => 'Sideutkastet vart sletta',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Er du sikker på at du vil slette siden?',
+ 'pages_delete_draft_confirm' => 'Er du sikker på at du vil slette utkastet?',
+ 'pages_editing_named' => 'Redigerer :pageName (side)',
+ 'pages_edit_draft_options' => 'Utkastsalternativer',
+ 'pages_edit_save_draft' => 'Lagre utkast',
+ 'pages_edit_draft' => 'Redigér utkast',
+ 'pages_editing_draft' => 'Redigerer utkast',
+ 'pages_editing_page' => 'Redigerer side',
+ 'pages_edit_draft_save_at' => 'Sist lagret ',
+ 'pages_edit_delete_draft' => 'Slett utkast',
+ 'pages_edit_delete_draft_confirm' => 'Er du sikker på at du vil slette utkastendringer i utkastet? Alle dine endringer, siden siste lagring vil gå tapt, og editoren vil bli oppdatert med den siste siden uten utkast til lagring.',
+ 'pages_edit_discard_draft' => 'Tilbakestill endring',
+ 'pages_edit_switch_to_markdown' => 'Bytt til Markdown tekstredigering',
+ 'pages_edit_switch_to_markdown_clean' => '(Renset innhold)',
+ 'pages_edit_switch_to_markdown_stable' => '(Urørt innhold)',
+ 'pages_edit_switch_to_wysiwyg' => 'Bytt til WYSIWYG tekstredigering',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Angi endringslogg',
+ 'pages_edit_enter_changelog_desc' => 'Gi ei kort skildring av endringane dine',
+ 'pages_edit_enter_changelog' => 'Sjå endringslogg',
+ 'pages_editor_switch_title' => 'Bytt tekstredigeringsprogram',
+ 'pages_editor_switch_are_you_sure' => 'Er du sikker på at du vil bytte tekstredigeringsprogram for denne sida?',
+ 'pages_editor_switch_consider_following' => 'Hugs dette når du byttar tekstredigeringsprogram:',
+ 'pages_editor_switch_consideration_a' => 'Når du bytter, vil den nye tekstredigeraren bli valgt for alle framtidige redaktørar. Dette inkluderer alle redaktørar som ikkje kan endre type sjølv.',
+ 'pages_editor_switch_consideration_b' => 'I visse tilfeller kan det føre til tap av detaljar og syntaks.',
+ 'pages_editor_switch_consideration_c' => 'Etikett- eller redigeringslogg-endringar loggført sidan siste lagring vil ikkje føres vidare etter endringa.',
+ 'pages_save' => 'Lagre side',
+ 'pages_title' => 'Sidetittel',
+ 'pages_name' => 'Sidenamn',
+ 'pages_md_editor' => 'Tekstbehandlar',
+ 'pages_md_preview' => 'Førehandsvising',
+ 'pages_md_insert_image' => 'Sett inn bilete',
+ 'pages_md_insert_link' => 'Sett inn lenke',
+ 'pages_md_insert_drawing' => 'Sett inn tegning',
+ 'pages_md_show_preview' => 'Førhandsvisning',
+ 'pages_md_sync_scroll' => 'Synkroniser førehandsvisingsrulle',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Ulagra teikning funne',
+ 'pages_drawing_unsaved_confirm' => 'Ulagra teikninga vart funne frå ei tidligare mislykka lagring. Vil du gjenopprette og fortsette å redigere denne ulagra teikninga?',
+ 'pages_not_in_chapter' => 'Sida tilhøyrer ingen kapittel',
+ 'pages_move' => 'Flytt sida',
+ 'pages_copy' => 'Kopier side',
+ 'pages_copy_desination' => 'Destinasjon',
+ 'pages_copy_success' => 'Sida vart flytta',
+ 'pages_permissions' => 'Sidetilgangar',
+ 'pages_permissions_success' => 'Sidetilgangar vart endra',
+ 'pages_revision' => 'Revisjon',
+ 'pages_revisions' => 'Revisjonar for sida',
+ 'pages_revisions_desc' => 'Nedanfor er alle tidlegare revisjonar av denne sida. Du kan sjå tilbake igjen, samanlikna og retta opp igjen tidlegare sideversjonar viss du tillet det. Den heile historikken til sida kan kanskje ikkje speglast fullstendig her. Avhengig av systemkonfigurasjonen, kan gamle revisjonar bli sletta automatisk.',
+ 'pages_revisions_named' => 'Revisjonar for :pageName',
+ 'pages_revision_named' => 'Revisjonar for :pageName',
+ 'pages_revision_restored_from' => 'Gjenoppretta fra #:id; :summary',
+ 'pages_revisions_created_by' => 'Skrive av',
+ 'pages_revisions_date' => 'Revideringsdato',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revisjonsnummer',
+ 'pages_revisions_numbered' => 'Revisjon #:id',
+ 'pages_revisions_numbered_changes' => 'Endringar på revisjon #:id',
+ 'pages_revisions_editor' => 'Tekstredigeringstype',
+ 'pages_revisions_changelog' => 'Endringslogg',
+ 'pages_revisions_changes' => 'Endringar',
+ 'pages_revisions_current' => 'Siste versjon',
+ 'pages_revisions_preview' => 'Forhåndsvisning',
+ 'pages_revisions_restore' => 'Gjenopprett',
+ 'pages_revisions_none' => 'Denne siden har ingen revisjoner',
+ 'pages_copy_link' => 'Kopier lenke',
+ 'pages_edit_content_link' => 'Hopp til seksjonen i tekstbehandlaren',
+ 'pages_pointer_enter_mode' => 'Gå til seksjonen velg modus',
+ 'pages_pointer_label' => 'Sidens seksjon alternativer',
+ 'pages_pointer_permalink' => 'Sideseksjons permalenke',
+ 'pages_pointer_include_tag' => 'Sideseksjonen inkluderer Tag',
+ 'pages_pointer_toggle_link' => 'Permalenke modus, trykk for å vise inkluderer tag',
+ 'pages_pointer_toggle_include' => 'Inkluder tag-modus, trykk for å vise permalenke',
+ 'pages_permissions_active' => 'Sidetilganger er aktive',
+ 'pages_initial_revision' => 'Første publisering',
+ 'pages_references_update_revision' => 'Automatisk oppdatering av interne lenker',
+ 'pages_initial_name' => 'Ny side',
+ 'pages_editing_draft_notification' => 'Du skriver på eit utkast som sist vart lagra :timeDiff.',
+ 'pages_draft_edited_notification' => 'Siden har blitt endret siden du startet. Det anbefales at du forkaster dine endringer.',
+ 'pages_draft_page_changed_since_creation' => 'Denne siden har blitt oppdatert etter at dette utkastet ble oppretta. Me trur det er lurt å forkaste dette utkastet, eller er ekstra forsiktig, slik at du ikkje overskriver andre sine sideendringar.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count forfattere har begynt å endre denne siden.',
+ 'start_b' => ':userName skriver på siden for øyeblikket',
+ 'time_a' => 'sidan sist sida vart oppdatert',
+ 'time_b' => 'i løpet av de siste :minCount minuttene',
+ 'message' => ':start :time. Prøv å ikke overskriv hverandres endringer!',
+ ],
+ 'pages_draft_discarded' => 'Utkastet er forkastet! Redigeringsprogrammet er oppdatert med gjeldende sideinnhold',
+ 'pages_draft_deleted' => 'Utkast sletta! Redigeringsprogrammet er oppdatert med gjeldande sideinnhald',
+ 'pages_specific' => 'Bestemt side',
+ 'pages_is_template' => 'Sidemal',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Vis/gøym sidepanelet',
+ 'page_tags' => 'Sidemerker',
+ 'chapter_tags' => 'Kapittelmerker',
+ 'book_tags' => 'Bokmerker',
+ 'shelf_tags' => 'Hyllemerker',
+ 'tag' => 'Merke',
+ 'tags' => 'Merker',
+ 'tags_index_desc' => 'Merker kan brukes på innhold i systemet for å anvende en kategorisering på en fleksibel måte. Etiketter kan ha både en nøkkel og verdi, med valgfri. Når det er brukt, kan innhold sjekkes ved hjelp av taggnavn og verdi.',
+ 'tag_name' => 'Merketittel',
+ 'tag_value' => 'Merkeverdi (Valgfritt)',
+ 'tags_explain' => "Legg til merker for å kategorisere innholdet ditt. \n Du kan legge til merkeverdier for å beskrive dem ytterligere.",
+ 'tags_add' => 'Legg til flere merker',
+ 'tags_remove' => 'Fjern merke',
+ 'tags_usages' => 'Totalt emneordbruk',
+ 'tags_assigned_pages' => 'Tilordnet sider',
+ 'tags_assigned_chapters' => 'Tildelt til kapitler',
+ 'tags_assigned_books' => 'Tilordnet til bøker',
+ 'tags_assigned_shelves' => 'Tilordnet hyller',
+ 'tags_x_unique_values' => ':count unike verdier',
+ 'tags_all_values' => 'Alle verdier',
+ 'tags_view_tags' => 'Vis etiketter',
+ 'tags_view_existing_tags' => 'Vis eksisterende etiketter',
+ 'tags_list_empty_hint' => 'Etiketter kan tilordnes via sidepanelet, eller mens du redigerer detaljene for en hylle, bok eller kapittel.',
+ 'attachments' => 'Vedlegg',
+ 'attachments_explain' => 'Last opp vedlegg eller legg til lenker for å berike innholdet. Disse vil vises i sidestolpen på siden.',
+ 'attachments_explain_instant_save' => 'Endringer her blir lagret med en gang.',
+ 'attachments_upload' => 'Last opp vedlegg',
+ 'attachments_link' => 'Fest lenke',
+ 'attachments_upload_drop' => 'Alternativt kan du dra og slippe en fil her for å laste den opp som et vedlegg.',
+ 'attachments_set_link' => 'Angi lenke',
+ 'attachments_delete' => 'Er du sikker på at du vil fjerne vedlegget?',
+ 'attachments_dropzone' => 'Slipp filer her for å laste opp',
+ 'attachments_no_files' => 'Ingen vedlegg er lastet opp',
+ 'attachments_explain_link' => 'Du kan feste lenker til denne. Det kan være henvisning til andre sider, bøker etc. eller lenker fra nettet.',
+ 'attachments_link_name' => 'Lenkenavn',
+ 'attachment_link' => 'Vedleggslenke',
+ 'attachments_link_url' => 'Lenke til vedlegg',
+ 'attachments_link_url_hint' => 'Adresse til lenke eller vedlegg',
+ 'attach' => 'Fest',
+ 'attachments_insert_link' => 'Fest vedleggslenke',
+ 'attachments_edit_file' => 'Endre vedlegg',
+ 'attachments_edit_file_name' => 'Vedleggsnavn',
+ 'attachments_edit_drop_upload' => 'Dra og slipp eller trykk her for å oppdatere eller overskrive',
+ 'attachments_order_updated' => 'Vedleggssortering endret',
+ 'attachments_updated_success' => 'Vedleggsdetaljer endret',
+ 'attachments_deleted' => 'Vedlegg fjernet',
+ 'attachments_file_uploaded' => 'Vedlegg vart lasta opp',
+ 'attachments_file_updated' => 'Vedlegget vart oppdatert',
+ 'attachments_link_attached' => 'Lenka vart festa til sida',
+ 'templates' => 'Maler',
+ 'templates_set_as_template' => 'Siden er en mal',
+ 'templates_explain_set_as_template' => 'Du kan angi denne siden som en mal slik at innholdet kan brukes når du oppretter andre sider. Andre brukere vil kunne bruke denne malen hvis de har visningstillatelser for denne siden.',
+ 'templates_replace_content' => 'Bytt sideinnhold',
+ 'templates_append_content' => 'Legg til neders på siden',
+ 'templates_prepend_content' => 'Legg til øverst på siden',
+
+ // Profile View
+ 'profile_user_for_x' => 'Medlem i :time',
+ 'profile_created_content' => 'Har skrevet',
+ 'profile_not_created_pages' => ':userName har ikke forfattet noen sider',
+ 'profile_not_created_chapters' => ':userName har ikke opprettet noen kapitler',
+ 'profile_not_created_books' => ':userName har ikke laget noen bøker',
+ 'profile_not_created_shelves' => ':userName har ikke hengt opp noen hyller',
+
+ // Comments
+ 'comment' => 'Kommentar',
+ 'comments' => 'Kommentarer',
+ 'comment_add' => 'Skriv kommentar',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Skriv en kommentar her',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Publiser kommentar',
+ 'comment_new' => 'Ny kommentar',
+ 'comment_created' => 'kommenterte :createDiff',
+ 'comment_updated' => 'Oppdatert :updateDiff av :username',
+ 'comment_updated_indicator' => 'Oppdatert',
+ 'comment_deleted_success' => 'Kommentar fjernet',
+ 'comment_created_success' => 'Kommentar skrevet',
+ 'comment_updated_success' => 'Kommentar endret',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Er du sikker på at du vil fjerne kommentaren?',
+ 'comment_in_reply_to' => 'Som svar til :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Her er kommentarene som er på denne siden. Kommentarer kan legges til og administreres når du ser på den lagrede siden.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Vil du slette revisjonen?',
+ 'revision_restore_confirm' => 'Vil du gjenopprette revisjonen? Innholdet på siden vil bli overskrevet med denne revisjonen.',
+ 'revision_cannot_delete_latest' => 'CKan ikke slette siste revisjon.',
+
+ // Copy view
+ 'copy_consider' => 'Vennligst vurder nedenfor når du kopierer innholdet.',
+ 'copy_consider_permissions' => 'Egendefinerte tilgangsinnstillinger vil ikke bli kopiert.',
+ 'copy_consider_owner' => 'Du vil bli eier av alt kopiert innhold.',
+ 'copy_consider_images' => 'Sidebildefiler vil ikkle bli duplisert og dei opprinnelege bileta beholder relasjonen til sida dei opprinnelig vart lasta opp til.',
+ 'copy_consider_attachments' => 'Sidevedlegg vil ikke bli kopiert.',
+ 'copy_consider_access' => 'Endring av sted, eier eller rettigheter kan føre til at innholdet er tilgjengelig for dem som tidligere har vært uten adgang.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Konverter til bokhylle',
+ 'convert_to_shelf_contents_desc' => 'Du kan konvertere denne boken til en ny hylle med samme innhold. Kapitteler i denne boken vil bli konvertert til nye bøker. Hvis boken inneholder noen sider, som ikke er i et kapitler, boka blir omdøpt og med slike sider, og boka blir en del av den nye bokhyllen.',
+ 'convert_to_shelf_permissions_desc' => 'Eventuelle tillatelser som er satt på denne boka, vil bli kopiert til ny hylle og til alle nye under-bøker som ikke har egne tillatelser satt. Vær oppmerksom på at tillatelser på hyllene ikke skjuler automatisk innhold innenfor, da de gjør for bøker.',
+ 'convert_book' => 'Konverter bok',
+ 'convert_book_confirm' => 'Er du sikker på at du vil konvertere denne boken?',
+ 'convert_undo_warning' => 'Dette kan ikke bli så lett å angre.',
+ 'convert_to_book' => 'Konverter til bok',
+ 'convert_to_book_desc' => 'Du kan konvertere kapittelet til en ny bok med samme innhold. Alle tillatelser som er angitt i dette kapittelet vil bli kopiert til den nye boken, men alle arvede tillatelser, fra overordnet bok vil ikke kopieres noe som kan føre til en endring av tilgangskontroll.',
+ 'convert_chapter' => 'Konverter kapittel',
+ 'convert_chapter_confirm' => 'Er du sikker på at du vil konvertere dette kapittelet?',
+
+ // References
+ 'references' => 'Referanser',
+ 'references_none' => 'Det er ingen sporede referanser til dette elementet.',
+ 'references_to_desc' => 'Nedanfor vises alle dei kjente sidene i systemet som lenker til denne oppføringa.',
+
+ // Watch Options
+ 'watch' => 'Overvåk',
+ 'watch_title_default' => 'Standardinnstillinger',
+ 'watch_desc_default' => 'Bytt til dine standardinnstilleringer for varsling.',
+ 'watch_title_ignore' => 'Ignorer',
+ 'watch_desc_ignore' => 'Ignorer alle varslinger, inkludert de fra preferanser for brukernivå.',
+ 'watch_title_new' => 'Nye sider',
+ 'watch_desc_new' => 'Varsle når en ny side er opprettet innenfor dette elementet.',
+ 'watch_title_updates' => 'Alle sideoppdateringer',
+ 'watch_desc_updates' => 'Varsle på alle nye sider og endringer av siden.',
+ 'watch_desc_updates_page' => 'Varsle ved alle sideendringer.',
+ 'watch_title_comments' => 'Alle sideoppdateringer og kommentarer',
+ 'watch_desc_comments' => 'Varsle om alle nye sider, endringer på side og nye kommentarer.',
+ 'watch_desc_comments_page' => 'Varsle ved sideendringer og nye kommentarer.',
+ 'watch_change_default' => 'Endre standard varslingsinnstillinger',
+ 'watch_detail_ignore' => 'Ignorerer varsler',
+ 'watch_detail_new' => 'Varsling for nye sider',
+ 'watch_detail_updates' => 'Varsling for nye sider og oppdateringer',
+ 'watch_detail_comments' => 'Varsling for nye sider, oppdateringer og kommentarer',
+ 'watch_detail_parent_book' => 'Overvåker via overordnet bok',
+ 'watch_detail_parent_book_ignore' => 'Ignorerer via overordnet bok',
+ 'watch_detail_parent_chapter' => 'Overvåker via overordnet kapittel',
+ 'watch_detail_parent_chapter_ignore' => 'Ignorerer via overordnet kapittel',
+];
diff --git a/lang/nn/errors.php b/lang/nn/errors.php
new file mode 100644
index 00000000000..31a08c2c2a8
--- /dev/null
+++ b/lang/nn/errors.php
@@ -0,0 +1,135 @@
+ 'Du har ikkje tilgang til å sjå denne sida.',
+ 'permissionJson' => 'Du har ikke tilgang til å utføre denne handlingen.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'En konto med :email finnes allerede, men har andre detaljer.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'E-posten er allerede bekreftet, du kan forsøke å logge inn.',
+ 'email_confirmation_invalid' => 'Denne bekreftelseskoden er allerede benyttet eller utgått. Prøv å registrere på nytt.',
+ 'email_confirmation_expired' => 'Bekreftelseskoden er allerede utgått, en ny e-post er sendt.',
+ 'email_confirmation_awaiting' => 'Du må bekrefte e-posten for denne kontoen.',
+ 'ldap_fail_anonymous' => 'LDAP kan ikke benyttes med anonym tilgang for denne tjeneren.',
+ 'ldap_fail_authed' => 'LDAP tilgang feilet med angitt DN',
+ 'ldap_extension_not_installed' => 'LDAP PHP modulen er ikke installert.',
+ 'ldap_cannot_connect' => 'Klarer ikke koble til LDAP på denne adressen',
+ 'saml_already_logged_in' => 'Allerede logget inn',
+ 'saml_no_email_address' => 'Denne kontoinformasjonen finnes ikke i det eksterne autentiseringssystemet.',
+ 'saml_invalid_response_id' => 'Forespørselen fra det eksterne autentiseringssystemet gjenkjennes ikke av en prosess som startes av dette programmet. Å navigere tilbake etter pålogging kan forårsake dette problemet.',
+ 'saml_fail_authed' => 'Innlogging gjennom :system feilet. Fikk ikke kontakt med autentiseringstjeneren.',
+ 'oidc_already_logged_in' => 'Allerede logget inn',
+ 'oidc_no_email_address' => 'Finner ikke en e-postadresse, for denne brukeren, i dataene som leveres av det eksterne autentiseringssystemet',
+ 'oidc_fail_authed' => 'Innlogging ved hjelp av :system feilet, systemet ga ikke vellykket godkjenning',
+ 'social_no_action_defined' => 'Ingen handlinger er definert',
+ 'social_login_bad_response' => "Feilmelding mottat fra :socialAccount innloggingstjeneste: \n:error",
+ 'social_account_in_use' => 'Denne :socialAccount kontoen er allerede registrert, Prøv å logge inn med :socialAccount alternativet.',
+ 'social_account_email_in_use' => 'E-posten :email er allerede i bruk. Har du allerede en konto hos :socialAccount kan dette angis fra profilsiden din.',
+ 'social_account_existing' => 'Denne :socialAccount er allerede koblet til din konto.',
+ 'social_account_already_used_existing' => 'Denne :socialAccount kontoen brukes allerede av noen andre.',
+ 'social_account_not_used' => 'Denne :socialAccount konten er ikke koblet til noen konto, angi denne i profilinnstillingene dine. ',
+ 'social_account_register_instructions' => 'Har du ikke en konto her ennå, kan du benytte :socialAccount alternativet for å registrere deg.',
+ 'social_driver_not_found' => 'Autentiseringstjeneste fra sosiale medier er ikke installert',
+ 'social_driver_not_configured' => 'Dine :socialAccount innstilliner er ikke angitt.',
+ 'invite_token_expired' => 'Invitasjonslenken har utgått, du kan forsøke å be om nytt passord istede.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // System
+ 'path_not_writable' => 'Filstien :filePath aksepterer ikkje filer, du må sjekke filstitilganger i systemet.',
+ 'cannot_get_image_from_url' => 'Kan ikkje hente bilete frå :url',
+ 'cannot_create_thumbs' => 'Kan ikkje opprette miniatyrbilete. GD PHP er ikkje installert.',
+ 'server_upload_limit' => 'Vedlegget er for stort, forsøk med et mindre vedlegg.',
+ 'server_post_limit' => 'Serveren kan ikkje ta i mot denne mengda med data. Prøv igjen med mindre data eller ei mindre fil.',
+ 'uploaded' => 'Tjenesten aksepterer ikke vedlegg som er så stor.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Biletet kunne ikkje lastast opp, prøv igjen',
+ 'image_upload_type_error' => 'Bileteformatet er ikkje støtta, prøv med eit anna format',
+ 'image_upload_replace_type' => 'Bileteerstatning må vere av same type',
+ 'image_upload_memory_limit' => 'Klarte ikkje å ta i mot bilete og lage miniatyrbilete grunna grenser knytt til systemet.',
+ 'image_thumbnail_memory_limit' => 'Klarte ikkje å lage miniatyrbilete grunna grenser knytt til systemet.',
+ 'image_gallery_thumbnail_memory_limit' => 'Klarte ikkje å lage miniatyrbilete grunna grenser knytt til systemet.',
+ 'drawing_data_not_found' => 'Tegningsdata kunne ikke lastes. Det er mulig at tegningsfilen ikke finnes lenger, eller du har ikke rettigheter til å få tilgang til den.',
+
+ // Attachments
+ 'attachment_not_found' => 'Vedlegget ble ikke funnet',
+ 'attachment_upload_error' => 'En feil har oppstått ved opplasting av vedleggsfil',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Kunne ikke lagre utkastet, forsikre deg om at du er tilkoblet tjeneren (Har du nettilgang?)',
+ 'page_draft_delete_fail' => 'Kunne ikke slette sideutkast og hente gjeldende side lagret innhold',
+ 'page_custom_home_deletion' => 'Kan ikke slette en side som er satt som forside.',
+
+ // Entities
+ 'entity_not_found' => 'Entitet ble ikke funnet',
+ 'bookshelf_not_found' => 'Bokhyllen ble ikke funnet',
+ 'book_not_found' => 'Boken ble ikke funnet',
+ 'page_not_found' => 'Siden ble ikke funnet',
+ 'chapter_not_found' => 'Kapittel ble ikke funnet',
+ 'selected_book_not_found' => 'Den valgte boken eksisterer ikke',
+ 'selected_book_chapter_not_found' => 'Den valgte boken eller kapittelet eksisterer ikke',
+ 'guests_cannot_save_drafts' => 'Gjester kan ikke lagre utkast',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Du kan ikke kaste ut den eneste administratoren',
+ 'users_cannot_delete_guest' => 'Du kan ikke slette gjestebrukeren (Du kan deaktivere offentlig visning istede)',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Denne rollen kan ikke endres',
+ 'role_system_cannot_be_deleted' => 'Denne systemrollen kan ikke slettes',
+ 'role_registration_default_cannot_delete' => 'Du kan ikke slette en rolle som er satt som registreringsrolle (rollen nye kontoer får når de registrerer seg)',
+ 'role_cannot_remove_only_admin' => 'Denne brukeren er den eneste brukeren som er tildelt administratorrollen. Tilordne administratorrollen til en annen bruker før du prøver å fjerne den her.',
+
+ // Comments
+ 'comment_list' => 'Det oppstod en feil under henting av kommentarene.',
+ 'cannot_add_comment_to_draft' => 'Du kan ikke legge til kommentarer i et utkast.',
+ 'comment_add' => 'Det oppsto en feil da kommentaren skulle legges til / oppdateres.',
+ 'comment_delete' => 'Det oppstod en feil under sletting av kommentaren.',
+ 'empty_comment' => 'Kan ikke legge til en tom kommentar.',
+
+ // Error pages
+ '404_page_not_found' => 'Siden finnes ikke',
+ 'sorry_page_not_found' => 'Beklager, siden du leter etter ble ikke funnet.',
+ 'sorry_page_not_found_permission_warning' => 'Hvis du forventet at denne siden skulle eksistere, har du kanskje ikke tillatelse til å se den.',
+ 'image_not_found' => 'Bilete vart ikkje funne',
+ 'image_not_found_subtitle' => 'Orsak, biletefila vart ikkje funne.',
+ 'image_not_found_details' => 'Det kan sjå ut til at biletet du leiter etter er sletta.',
+ 'return_home' => 'Gå til hovedside',
+ 'error_occurred' => 'En feil oppsto',
+ 'app_down' => ':appName er nede for øyeblikket',
+ 'back_soon' => 'Den vil snart komme tilbake.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Ingen autorisasjonstoken ble funnet på forespørselen',
+ 'api_bad_authorization_format' => 'Det ble funnet et autorisasjonstoken på forespørselen, men formatet virket feil',
+ 'api_user_token_not_found' => 'Ingen samsvarende API-token ble funnet for det angitte autorisasjonstokenet',
+ 'api_incorrect_token_secret' => 'Hemmeligheten som er gitt for det gitte brukte API-tokenet er feil',
+ 'api_user_no_api_permission' => 'Eieren av det brukte API-tokenet har ikke tillatelse til å ringe API-samtaler',
+ 'api_user_token_expired' => 'Autorisasjonstokenet som er brukt, har utløpt',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Feil kastet når du sendte en test-e-post:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'URLen samsvarer ikke med de konfigurerte SSR-vertene',
+];
diff --git a/lang/nn/notifications.php b/lang/nn/notifications.php
new file mode 100644
index 00000000000..25f0f30c86d
--- /dev/null
+++ b/lang/nn/notifications.php
@@ -0,0 +1,29 @@
+ 'Ny kommentar på sida: :pageName',
+ 'new_comment_intro' => 'Ein brukar har kommentert ei side i :appName:',
+ 'new_page_subject' => 'Ny side: :pageName',
+ 'new_page_intro' => 'Ei ny side vart oppretta i :appName:',
+ 'updated_page_subject' => 'Oppdatert side: :pageName',
+ 'updated_page_intro' => 'Ei side vart oppdatert i :appName:',
+ 'updated_page_debounce' => 'For å forhindre mange varslingar, vil du ikkje få nye varslinger for endringar på denne siden frå same forfattar.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Sidenamn:',
+ 'detail_page_path' => 'Sidenamn:',
+ 'detail_commenter' => 'Kommentar frå:',
+ 'detail_comment' => 'Kommentar:',
+ 'detail_created_by' => 'Oppretta av:',
+ 'detail_updated_by' => 'Oppdatert av:',
+
+ 'action_view_comment' => 'Vis kommentar',
+ 'action_view_page' => 'Sjå side',
+
+ 'footer_reason' => 'Denne meldinga vart sendt til deg fordi :link dekker denne typen aktivitet for dette elementet.',
+ 'footer_reason_link' => 'dine varslingsinnstillingar',
+];
diff --git a/lang/nn/pagination.php b/lang/nn/pagination.php
new file mode 100644
index 00000000000..15529d12af8
--- /dev/null
+++ b/lang/nn/pagination.php
@@ -0,0 +1,12 @@
+ '« Førre',
+ 'next' => 'Neste »',
+
+];
diff --git a/lang/nn/passwords.php b/lang/nn/passwords.php
new file mode 100644
index 00000000000..8c3215b422a
--- /dev/null
+++ b/lang/nn/passwords.php
@@ -0,0 +1,15 @@
+ 'Passord må inneholde minst åtte tegn og samsvarer med bekreftelsen.',
+ 'user' => "Vi finner ikke en bruker med den e-postadressen.",
+ 'token' => 'Passordet for tilbakestilling av passord er ugyldig for denne e-postadressen.',
+ 'sent' => 'Vi har sendt e-postadressen til tilbakestilling av passordet ditt!',
+ 'reset' => 'Passordet ditt har blitt tilbakestilt!',
+
+];
diff --git a/lang/nn/preferences.php b/lang/nn/preferences.php
new file mode 100644
index 00000000000..17d1fca4257
--- /dev/null
+++ b/lang/nn/preferences.php
@@ -0,0 +1,52 @@
+ 'Min konto',
+
+ 'shortcuts' => 'Snarveier',
+ 'shortcuts_interface' => 'UI snarvegar',
+ 'shortcuts_toggle_desc' => 'Her kan du aktivere eller deaktivere snarveier for tastatur system som brukes til navigasjon og handlinger.',
+ 'shortcuts_customize_desc' => 'Du kan tilpasse hver av snarveiene nedenfor. Trykk på ønsket nøkkelkombinasjon etter å ha valgt inndata for en snarvei.',
+ 'shortcuts_toggle_label' => 'Tastatursnarveier aktivert',
+ 'shortcuts_section_navigation' => 'Navigasjon',
+ 'shortcuts_section_actions' => 'Vanlige handlinger',
+ 'shortcuts_save' => 'Lagre snarveier',
+ 'shortcuts_overlay_desc' => 'Merk: Når snarveier er aktivert er et hjelperoverlegg tilgjengelig via å trykke "?" som vil fremheve de tilgjengelige snarveiene som for øyeblikket er synlige på skjermen.',
+ 'shortcuts_update_success' => 'Snarvei innstillinger er oppdatert!',
+ 'shortcuts_overview_desc' => 'Behandle tastatursnarveier du kan bruke for å navigere i systembrukergrensesnittet.',
+
+ 'notifications' => 'Innstillinger for varsling',
+ 'notifications_desc' => 'Kontroller e-postvarslene du mottar når en bestemt aktivitet utføres i systemet.',
+ 'notifications_opt_own_page_changes' => 'Varsle ved endringer til sider jeg eier',
+ 'notifications_opt_own_page_comments' => 'Varsle om kommentarer på sider jeg eier',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Varsle ved svar på mine kommentarer',
+ 'notifications_save' => 'Lagre innstillinger',
+ 'notifications_update_success' => 'Varslingsinnstillingene er oppdatert!',
+ 'notifications_watched' => 'Overvåka & ignorerte elementer',
+ 'notifications_watched_desc' => 'Nedenfor er elementene som har egendefinerte varslingsinnstillinger i bruk. For å oppdatere innstillingene for disse, se elementet, finn varslingsalternativene i sidepanelet.',
+
+ 'auth' => 'Tilgang og tryggleik',
+ 'auth_change_password' => 'Endre passord',
+ 'auth_change_password_desc' => 'Endre passordet du brukar for å logge inn på programmet. Dette må vere minst 8 teikn langt.',
+ 'auth_change_password_success' => 'Passordet har blitt oppdatert!',
+
+ 'profile' => 'Profildetaljar',
+ 'profile_desc' => 'Gi opplysningar om kontoen som representerer deg til andre brukarar, i tillegg til opplysninger som vert brukt til kommunikasjon og systempersonalisering.',
+ 'profile_view_public' => 'Vis offentleg profil',
+ 'profile_name_desc' => 'Tilpass visingsnavn som vil vere synlig for andre brukarar i systemet ved hjelp av aktiviteten du utfører, og innhaldet du eiger.',
+ 'profile_email_desc' => 'Denne e-posten vert brukt til å sende varsler, og avhengig av aktiv systemautentisering, systemtilgang.',
+ 'profile_email_no_permission' => 'Du har diverre ikkje løyve til å endre e-postadressa di. Om du ynskjer å endre, må du be ein administrator om å endre dette for deg.',
+ 'profile_avatar_desc' => 'Velg eit profilbilete. Ideelt sett bør dette bildet vere kvadratisk og ca. 256 px i breidde og høgde.',
+ 'profile_admin_options' => 'Alternativer for administrator',
+ 'profile_admin_options_desc' => 'Du finner fleire alternativ på administratornivå, t. d. administrasjon av rolletildelinger, for din brukerkonto i området "Innstillingar > Brukarar" i applikasjonen.',
+
+ 'delete_account' => 'Slett konto',
+ 'delete_my_account' => 'Slett kontoen min',
+ 'delete_my_account_desc' => 'Dette vil slette din brukarkonto frå systemet. Du vil ikkje kunne gjenopprette kontoen eller tilbakestille denne handlinga. Innhald du har oppretta, som t. d. sider og bilete, vil forbli uendret.',
+ 'delete_my_account_warning' => 'Er du sikker på at du vil slette kontoen din?',
+];
diff --git a/lang/nn/settings.php b/lang/nn/settings.php
new file mode 100644
index 00000000000..e4b6e6af93d
--- /dev/null
+++ b/lang/nn/settings.php
@@ -0,0 +1,374 @@
+ 'Innstillinger',
+ 'settings_save' => 'Lagre innstillinger',
+ 'system_version' => 'System versjon',
+ 'categories' => 'Kategorier',
+
+ // App Settings
+ 'app_customization' => 'Tilpassing',
+ 'app_features_security' => 'Funksjonar og tryggleik',
+ 'app_name' => 'Applikasjonsnavn',
+ 'app_name_desc' => 'Dette navnet vises i overskriften og i alle e-postmeldinger som sendes av systemet.',
+ 'app_name_header' => 'Vis navn i topptekst',
+ 'app_public_access' => 'Offentlig tilgang',
+ 'app_public_access_desc' => 'Hvis du aktiverer dette alternativet, kan besøkende, som ikke er logget på, få tilgang til innhold i din BookStack-forekomst.',
+ 'app_public_access_desc_guest' => 'Tilgang for offentlige besøkende kan kontrolleres gjennom "Gjest" -brukeren.',
+ 'app_public_access_toggle' => 'Tillat offentlig tilgang',
+ 'app_public_viewing' => 'Tillat offentlig visning?',
+ 'app_secure_images' => 'Høyere tryggleik på bileteopplastingar',
+ 'app_secure_images_toggle' => 'Skru på høgare tryggleik på bileteopplastingar',
+ 'app_secure_images_desc' => 'Av ytelsesgrunner er alle bilder offentlige. Dette alternativet legger til en tilfeldig streng som er vanskelig å gjette foran bildets nettadresser. Forsikre deg om at katalogindekser ikke er aktivert for å forhindre enkel tilgang.',
+ 'app_default_editor' => 'Standard sideredigeringsprogram',
+ 'app_default_editor_desc' => 'Velg hvilken tekstbehandler som skal brukes som standard når du redigerer nye sider. Dette kan overskrives på et sidenivå der tillatelser tillates.',
+ 'app_custom_html' => 'Tilpasset HTML-hodeinnhold',
+ 'app_custom_html_desc' => 'Alt innhold som legges til her, blir satt inn i bunnen av -delen på hver side. Dette er praktisk for å overstyre stiler eller legge til analysekode.',
+ 'app_custom_html_disabled_notice' => 'Tilpasset HTML-hodeinnhold er deaktivert på denne innstillingssiden for å sikre at eventuelle endringer ødelegger noe, kan tilbakestilles.',
+ 'app_logo' => 'Applikasjonslogo',
+ 'app_logo_desc' => 'Dette brukes i programtoppfeltet blant andre områder. Dette bildet skal være 86px i høyde. Store bilder vil bli skalert ned.',
+ 'app_icon' => 'Applikasjons ikon',
+ 'app_icon_desc' => 'Dette ikonet brukes for nettleserfaner og snarveisikoner. Dette bør være et bilde på 256 px kvadrat PNG.',
+ 'app_homepage' => 'Applikasjonens hjemmeside',
+ 'app_homepage_desc' => 'Velg en visning som skal vises på hjemmesiden i stedet for standardvisningen. Sidetillatelser ignoreres for utvalgte sider.',
+ 'app_homepage_select' => 'Velg en side',
+ 'app_footer_links' => 'Fotlenker',
+ 'app_footer_links_desc' => 'Legg til fotlenker i sidens fotområde. Disse vil vises nederst på de fleste sider, inkludert sider som ikke krever innlogging. Du kan bruke «trans::» etiketter for system-definerte oversettelser. For eksempel: Bruk «trans::common.privacy_policy» for å vise teksten «Personvernregler» og «trans::common.terms_of_service» for å vise teksten «Bruksvilkår».',
+ 'app_footer_links_label' => 'Lenketekst',
+ 'app_footer_links_url' => 'Lenke',
+ 'app_footer_links_add' => 'Legg til fotlenke',
+ 'app_disable_comments' => 'Deaktiver kommentarer',
+ 'app_disable_comments_toggle' => 'Deaktiver kommentarer',
+ 'app_disable_comments_desc' => 'Deaktiver kommentarer på tvers av alle sidene i applikasjonen. Eksisterende kommentarer vises ikke.',
+
+ // Color settings
+ 'color_scheme' => 'Applikasjonens farge oppsett',
+ 'color_scheme_desc' => 'Sett farger for å bruke i programmets brukergrensesnitt. Farger kan konfigureres separat for mørke og lysmoduser for å passe best inn temaet og sørge for lesbarhet.',
+ 'ui_colors_desc' => 'Angi primær farge for programmet og standard link farge. Primær farge brukes hovedsakelig for toppbanner, knapper og grensesnittets dekorasjoner. Standardfargen for koblinger brukes for tekstbaserte lenker og handlinger, både i skriftlig innhold og i programgrensesnittet.',
+ 'app_color' => 'Primær farge',
+ 'link_color' => 'Standard koblingsfarge',
+ 'content_colors_desc' => 'Angi farger for alle elementer i organiseringshierarkiet. Velger du farger med lik lysstyrke til standard farger anbefales for lesbarhet.',
+ 'bookshelf_color' => 'Hyllefarge',
+ 'book_color' => 'Bokfarge',
+ 'chapter_color' => 'Kapittelfarge',
+ 'page_color' => 'Sidefarge',
+ 'page_draft_color' => 'Sideutkastsfarge',
+
+ // Registration Settings
+ 'reg_settings' => 'Registrering',
+ 'reg_enable' => 'Tillat registrering',
+ 'reg_enable_toggle' => 'Tillat registrering',
+ 'reg_enable_desc' => 'Når registrering er aktivert vil brukeren kunne registrere seg som applikasjonsbruker. Ved registrering får de en standard brukerrolle.',
+ 'reg_default_role' => 'Standard brukerrolle etter registrering',
+ 'reg_enable_external_warning' => 'Alternativet ovenfor ignoreres mens ekstern LDAP- eller SAML-autentisering er aktiv. Brukerkontoer for ikke-eksisterende medlemmer blir automatisk opprettet hvis autentisering mot det eksterne systemet i bruk lykkes.',
+ 'reg_email_confirmation' => 'E-postbekreftelse',
+ 'reg_email_confirmation_toggle' => 'Krev e-postbekreftelse',
+ 'reg_confirm_email_desc' => 'Hvis domenebegrensning brukes, vil e-postbekreftelse være nødvendig, og dette alternativet vil bli ignorert.',
+ 'reg_confirm_restrict_domain' => 'Domenebegrensning',
+ 'reg_confirm_restrict_domain_desc' => 'Skriv inn en kommaseparert liste over e-postdomener du vil begrense registreringen til. Brukerne vil bli sendt en e-post for å bekrefte adressen deres før de får lov til å kommunisere med applikasjonen. Vær oppmerksom på at brukere vil kunne endre e-postadressene sine etter vellykket registrering.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Ingen begrensninger er satt',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Vedlikehold',
+ 'maint_image_cleanup' => 'Rydd opp bilete',
+ 'maint_image_cleanup_desc' => 'Skanner side og revisjonsinnhold for å sjekke kva bilete og teikninar som for er i bruk no, og kva bilete som er til overs. Sørg for å tryggleikskopiere heile databasen og alle bilete før du kjører denne.',
+ 'maint_delete_images_only_in_revisions' => 'Slett også bilder som bare finnes i game siderevisjoner',
+ 'maint_image_cleanup_run' => 'Kjør opprydding',
+ 'maint_image_cleanup_warning' => ':count potensielt ubrukte bilder ble funnet. Er du sikker på at du vil slette disse bildene?',
+ 'maint_image_cleanup_success' => ':count potensielt ubrukte bilder funnet og slettet!',
+ 'maint_image_cleanup_nothing_found' => 'Ingen ubrukte bilder funnet, ingenting slettet!',
+ 'maint_send_test_email' => 'Send en test-e-post',
+ 'maint_send_test_email_desc' => 'Dette sender en test-e-post til din e-postadresse som er angitt i profilen din.',
+ 'maint_send_test_email_run' => 'Send en test-e-post',
+ 'maint_send_test_email_success' => 'Send en test-e-post til :address',
+ 'maint_send_test_email_mail_subject' => 'Test-e-post',
+ 'maint_send_test_email_mail_greeting' => 'E-postsending ser ut til å fungere!',
+ 'maint_send_test_email_mail_text' => 'Gratulerer! Da du mottok dette e-postvarselet, ser det ut til at e-postinnstillingene dine er konfigurert riktig.',
+ 'maint_recycle_bin_desc' => 'Slettede hyller, bøker, kapitler og sider kastes i papirkurven så de kan bli gjenopprettet eller slettet permanent. Eldre utgaver i papirkurven kan slettes automatisk etter en stund, avhengig av systemkonfigurasjonen.',
+ 'maint_recycle_bin_open' => 'Åpne papirkurven',
+ 'maint_regen_references' => 'Regenerer referanser',
+ 'maint_regen_references_desc' => 'Denne handlingen gjenoppbygger referanseindeksen for krysselement i databasen. Dette håndteres vanligvis automatisk, men denne handlingen kan være nyttig for å indeksere gammelt innhold eller innhold lagt til via uoffisielle metoder.',
+ 'maint_regen_references_success' => 'Referanseindeksen har blitt regenerert!',
+ 'maint_timeout_command_note' => 'Merk: Denne handlingen kan ta tid å kjøre, noe som kan føre til tidsavbruddsmessige problemer i noen webomgivelser. Dette gjøres som et alternativ ved hjelp av en terminalkommando.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Papirkurven',
+ 'recycle_bin_desc' => 'Her kan du gjenopprette ting du har kastet i papirkurven eller velge å slette dem permanent fra systemet. Denne listen er ikke filtrert i motsetning til lignende lister i systemet hvor tilgangskontroll overholdes.',
+ 'recycle_bin_deleted_item' => 'Kastet element',
+ 'recycle_bin_deleted_parent' => 'Overordnet',
+ 'recycle_bin_deleted_by' => 'Kastet av',
+ 'recycle_bin_deleted_at' => 'Kastet den',
+ 'recycle_bin_permanently_delete' => 'Slett permanent',
+ 'recycle_bin_restore' => 'Gjenopprett',
+ 'recycle_bin_contents_empty' => 'Papirkurven er for øyeblikket tom',
+ 'recycle_bin_empty' => 'Tøm papirkurven',
+ 'recycle_bin_empty_confirm' => 'Dette vil slette alle elementene i papirkurven permanent. Dette inkluderer innhold i hvert element. Er du sikker på at du vil tømme papirkurven?',
+ 'recycle_bin_destroy_confirm' => 'This action will permanently delete this item from the system, along with any child elements listed below, and you will not be able to restore this content. Are you sure you want to permanently delete this item?',
+ 'recycle_bin_destroy_list' => 'Elementer som skal slettes',
+ 'recycle_bin_restore_list' => 'Elementer som skal gjenopprettes',
+ 'recycle_bin_restore_confirm' => 'Denne handlingen vil hente opp elementet fra papirkurven, inkludert underliggende innhold, til sin opprinnelige sted. Om den opprinnelige plassen har blitt slettet i mellomtiden og nå befinner seg i papirkurven, vil også dette bli hentet opp igjen.',
+ 'recycle_bin_restore_deleted_parent' => 'Det overordnede elementet var også kastet i papirkurven. Disse elementene vil forbli kastet inntil det overordnede også hentes opp igjen.',
+ 'recycle_bin_restore_parent' => 'Gjenopprett overodnet',
+ 'recycle_bin_destroy_notification' => 'Slettet :count elementer fra papirkurven.',
+ 'recycle_bin_restore_notification' => 'Gjenopprettet :count elementer fra papirkurven.',
+
+ // Audit Log
+ 'audit' => 'Revisjonslogg',
+ 'audit_desc' => 'Denne revisjonsloggen viser en liste over aktiviteter som spores i systemet. Denne listen er ufiltrert i motsetning til lignende aktivitetslister i systemet der tillatelsesfiltre brukes.',
+ 'audit_event_filter' => 'Hendelsesfilter',
+ 'audit_event_filter_no_filter' => 'Ingen filter',
+ 'audit_deleted_item' => 'Slettet ting',
+ 'audit_deleted_item_name' => 'Navn: :name',
+ 'audit_table_user' => 'Kontoholder',
+ 'audit_table_event' => 'Hendelse',
+ 'audit_table_related' => 'Relaterte elementer eller detaljer',
+ 'audit_table_ip' => 'IP Adresse',
+ 'audit_table_date' => 'Aktivitetsdato',
+ 'audit_date_from' => 'Datoperiode fra',
+ 'audit_date_to' => 'Datoperiode til',
+
+ // Role Settings
+ 'roles' => 'Roller',
+ 'role_user_roles' => 'Kontoroller',
+ 'roles_index_desc' => 'Roller brukes til å gruppere brukere og gi systemtilgang til medlemmene. Når en bruker er medlem av flere roller, vil de tildelte rettighetene samles inn, og brukeren vil arve alle evner.',
+ 'roles_x_users_assigned' => ':count bruker tildelt|:count brukere tildelt',
+ 'roles_x_permissions_provided' => ':count tillatelse|:count tillatelser',
+ 'roles_assigned_users' => 'Tilordnede brukere',
+ 'roles_permissions_provided' => 'Tilbudte rettigheter',
+ 'role_create' => 'Opprett ny rolle',
+ 'role_delete' => 'Slett rolle',
+ 'role_delete_confirm' => 'Dette vil slette rollen «:roleName».',
+ 'role_delete_users_assigned' => 'Denne rollen har :userCount kontoer koblet opp mot seg. Velg hvilke rolle du vil flytte disse til.',
+ 'role_delete_no_migration' => "Ikke flytt kontoer",
+ 'role_delete_sure' => 'Er du sikker på at du vil slette rollen?',
+ 'role_edit' => 'Endre rolle',
+ 'role_details' => 'Rolledetaljer',
+ 'role_name' => 'Rollenavn',
+ 'role_desc' => 'Kort beskrivelse av rolle',
+ 'role_mfa_enforced' => 'Krever flerfaktorautentisering',
+ 'role_external_auth_id' => 'Ekstern godkjennings-ID',
+ 'role_system' => 'Systemtilganger',
+ 'role_manage_users' => 'Behandle kontoer',
+ 'role_manage_roles' => 'Behandle roller og rolletilganger',
+ 'role_manage_entity_permissions' => 'Behandle bok-, kapittel- og sidetilganger',
+ 'role_manage_own_entity_permissions' => 'Behandle tilganger på egne verk',
+ 'role_manage_page_templates' => 'Behandle sidemaler',
+ 'role_access_api' => 'Systemtilgang API',
+ 'role_manage_settings' => 'Behandle applikasjonsinnstillinger',
+ 'role_export_content' => 'Eksporter innhold',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Endre sideredigering',
+ 'role_notifications' => 'Motta og administrere varslinger',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Eiendomstillatelser',
+ 'roles_system_warning' => 'Vær oppmerksom på at tilgang til noen av de ovennevnte tre tillatelsene kan tillate en bruker å endre sine egne rettigheter eller rettighetene til andre i systemet. Bare tildel roller med disse tillatelsene til pålitelige brukere.',
+ 'role_asset_desc' => 'Disse tillatelsene kontrollerer standard tilgang til eiendelene i systemet. Tillatelser til bøker, kapitler og sider overstyrer disse tillatelsene.',
+ 'role_asset_admins' => 'Administratorer får automatisk tilgang til alt innhold, men disse alternativene kan vise eller skjule UI-alternativer.',
+ 'role_asset_image_view_note' => 'Dette gjelder synlighet innenfor bilde-administrasjonen. Faktisk tilgang på opplastede bildefiler vil være avhengig av valget for systemlagring av bildet.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Alle',
+ 'role_own' => 'Egne',
+ 'role_controlled_by_asset' => 'Kontrollert av eiendelen de er lastet opp til',
+ 'role_save' => 'Lagre rolle',
+ 'role_users' => 'Kontoholdere med denne rollen',
+ 'role_users_none' => 'Ingen kontoholdere er gitt denne rollen',
+
+ // Users
+ 'users' => 'Brukere',
+ 'users_index_desc' => 'Opprett og administrer individuelle brukerkontoer innenfor systemet. Brukerkontoer brukes for innlogging og navngivelse av innhold og aktivitet. Tilgangstillatelser er primært rollebasert, men brukerinnhold eierskap, blant andre faktorer, kan også påvirke tillatelser og tilgang.',
+ 'user_profile' => 'Profil',
+ 'users_add_new' => 'Register ny konto',
+ 'users_search' => 'Søk i kontoer',
+ 'users_latest_activity' => 'Siste aktivitet',
+ 'users_details' => 'Kontodetaljer',
+ 'users_details_desc' => 'Angi et visningsnavn og en e-postadresse for denne kontoholderen. E-postadressen vil bli brukt til å logge på applikasjonen.',
+ 'users_details_desc_no_email' => 'Angi et visningsnavn for denne kontoholderen slik at andre kan gjenkjenne dem.',
+ 'users_role' => 'Roller',
+ 'users_role_desc' => 'Velg hvilke roller denne kontoholderen vil bli tildelt. Hvis en kontoholderen er tildelt flere roller, vil tillatelsene fra disse rollene stable seg, og de vil motta alle evnene til de tildelte rollene.',
+ 'users_password' => 'Passord',
+ 'users_password_desc' => 'Angi et passord som brukes til å logge inn til programmet. Dette må være minst 8 tegn langt.',
+ 'users_send_invite_text' => 'Du kan velge å sende denne kontoholderen en invitasjons-e-post som lar dem angi sitt eget passord, ellers kan du selv angi passordet.',
+ 'users_send_invite_option' => 'Send invitasjonsmelding',
+ 'users_external_auth_id' => 'Ekstern godkjennings-ID',
+ 'users_external_auth_id_desc' => 'Når eit eksternt autentiseringssystem er i bruk (som SAML2, OIDC eller LDAP) er dette ID-en som vert kobla til denneBookStack-brukaren til autentiseringssystemkontoen. Du kan ignorere dette feltet om du bruker standard e-postbasert autentisering.',
+ 'users_password_warning' => 'Berre fyll ut under om du vil endre passordet til brukaren.',
+ 'users_system_public' => 'Denne brukeren representerer alle gjester som besøker appliaksjonen din. Den kan ikke brukes til å logge på, men tildeles automatisk.',
+ 'users_delete' => 'Slett konto',
+ 'users_delete_named' => 'Slett kontoen :userName',
+ 'users_delete_warning' => 'Dette vil fullstendig slette denne brukeren med navnet «:userName» fra systemet.',
+ 'users_delete_confirm' => 'Er du sikker på at du vil slette denne kontoen?',
+ 'users_migrate_ownership' => 'Overfør eierskap',
+ 'users_migrate_ownership_desc' => 'Velg en bruker her, som du ønsker skal ta eierskap over alle elementene som er eid av denne brukeren.',
+ 'users_none_selected' => 'Ingen bruker valgt',
+ 'users_edit' => 'Rediger konto',
+ 'users_edit_profile' => 'Rediger profil',
+ 'users_avatar' => 'Kontobilde',
+ 'users_avatar_desc' => 'Velg et bilde for å representere denne kontoholderen. Dette skal være omtrent 256px kvadrat.',
+ 'users_preferred_language' => 'Foretrukket språk',
+ 'users_preferred_language_desc' => 'Dette alternativet vil endre språket som brukes til brukergrensesnittet til applikasjonen. Dette påvirker ikke noe brukeropprettet innhold.',
+ 'users_social_accounts' => 'Sosiale kontoer',
+ 'users_social_accounts_desc' => 'Vis status for dei tilkoblede sosiale kontoane for denne brukaren. Sosiale kontoer kan brukast i tillegg til det primære autentiseringssystemet for systemtilgang.',
+ 'users_social_accounts_info' => 'Her kan du koble andre kontoer for raskere og enklere pålogging. Hvis du frakobler en konto her, tilbakekaller ikke dette tidligere autorisert tilgang. Tilbakekall tilgang fra profilinnstillingene dine på den tilkoblede sosiale kontoen.',
+ 'users_social_connect' => 'Koble til konto',
+ 'users_social_disconnect' => 'Koble fra konto',
+ 'users_social_status_connected' => 'Tilkobla',
+ 'users_social_status_disconnected' => 'Fråkobla',
+ 'users_social_connected' => ':socialAccount ble lagt til din konto.',
+ 'users_social_disconnected' => ':socialAccount ble koblet fra din konto.',
+ 'users_api_tokens' => 'API-nøkler',
+ 'users_api_tokens_desc' => 'Opprett og handter tilgangstokenar som vert brukt til å godkjenne med BookStack REST API. Løyve til API blir administrert via brukaren som tokenet tilhører.',
+ 'users_api_tokens_none' => 'Ingen API-nøkler finnes for denne kontoen',
+ 'users_api_tokens_create' => 'Opprett nøkkel',
+ 'users_api_tokens_expires' => 'Utløper',
+ 'users_api_tokens_docs' => 'API-dokumentasjon',
+ 'users_mfa' => 'Flerfaktorautentisering',
+ 'users_mfa_desc' => 'Konfigurer flerfaktorautentisering som eit ekstra lag med tryggleik for din konto.',
+ 'users_mfa_x_methods' => ':count metode konfigurert|:count metoder konfigurert',
+ 'users_mfa_configure' => 'Konfigurer metoder',
+
+ // API Tokens
+ 'user_api_token_create' => 'Opprett API-nøkkel',
+ 'user_api_token_name' => 'Navn',
+ 'user_api_token_name_desc' => 'Gi nøkkelen et lesbart navn som en fremtidig påminnelse om det tiltenkte formålet.',
+ 'user_api_token_expiry' => 'Utløpsdato',
+ 'user_api_token_expiry_desc' => 'Angi en dato da denne nøkkelen utløper. Etter denne datoen vil forespørsler som er gjort med denne nøkkelen ikke lenger fungere. Å la dette feltet stå tomt vil sette utløpsdato 100 år inn i fremtiden.',
+ 'user_api_token_create_secret_message' => 'Umiddelbart etter å ha opprettet denne nøkkelen vil en identifikator og hemmelighet bli generert og vist. Hemmeligheten vil bare vises en gang, så husk å kopiere verdien til et trygt sted før du fortsetter.',
+ 'user_api_token' => 'API-nøkkel',
+ 'user_api_token_id' => 'Identifikator',
+ 'user_api_token_id_desc' => 'Dette er en ikke-redigerbar systemgenerert identifikator for denne nøkkelen som må oppgis i API-forespørsler.',
+ 'user_api_token_secret' => 'Hemmelighet',
+ 'user_api_token_secret_desc' => 'Dette er en systemgenerert hemmelighet for denne nøkkelen som må leveres i API-forespørsler. Dette vises bare denne gangen, så kopier denne verdien til et trygt sted.',
+ 'user_api_token_created' => 'Nøkkel opprettet :timeAgo',
+ 'user_api_token_updated' => 'Nøkkel oppdatert :timeAgo',
+ 'user_api_token_delete' => 'Slett nøkkel',
+ 'user_api_token_delete_warning' => 'Dette vil slette API-nøkkelen \':tokenName\' fra systemet.',
+ 'user_api_token_delete_confirm' => 'Sikker på at du vil slette nøkkelen?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks er en måte å sende data til eksterne nettadresser når bestemte handlinger og hendelser oppstår i systemet som gjør det mulig å integrer med eksterne plattformer som meldingssystemer eller varslingssystemer.',
+ 'webhooks_x_trigger_events' => ':count utløsende hendelse:count utløsende hendelser',
+ 'webhooks_create' => 'Lag ny Webhook',
+ 'webhooks_none_created' => 'Ingen webhooks er opprettet ennå.',
+ 'webhooks_edit' => 'Rediger webhook',
+ 'webhooks_save' => 'Lagre Webhook',
+ 'webhooks_details' => 'Webhook detaljer',
+ 'webhooks_details_desc' => 'Gi et brukervennlig navn og et POST endepunkt som et sted der webhook-dataene skal sendes til.',
+ 'webhooks_events' => 'Webhook hendelser',
+ 'webhooks_events_desc' => 'Velg alle hendelsene som skal utløse denne webhook som skal kalles.',
+ 'webhooks_events_warning' => 'Husk at disse hendelsene vil bli utløst for alle valgte hendelser, selv om egendefinerte tillatelser brukes. Pass på at bruk av denne webhooken ikke vil utsette konfidensiell innhold.',
+ 'webhooks_events_all' => 'Alle systemhendelser',
+ 'webhooks_name' => 'Webhook navn',
+ 'webhooks_timeout' => 'Tidsavbrudd for Webhook forespørsler (sekunder)',
+ 'webhooks_endpoint' => 'Webhook endepunkt',
+ 'webhooks_active' => 'Webhook aktiv',
+ 'webhook_events_table_header' => 'Hendelser',
+ 'webhooks_delete' => 'Slett webhook',
+ 'webhooks_delete_warning' => 'Dette vil slette webhook, med navnet \':webhookName\', fra systemet.',
+ 'webhooks_delete_confirm' => 'Er du sikker på at du vil slette denne webhooken?',
+ 'webhooks_format_example' => 'Webhook formattering eksempel',
+ 'webhooks_format_example_desc' => 'Webhook-data sendes som en POST-forespørsel til det konfigurerte endepunktet som JSON ved hjelp av formatet nedenfor. «related_item» og «url» egenskaper er valgfrie og vil avhenge av hvilken type hendelse som utløses.',
+ 'webhooks_status' => 'Webhook status',
+ 'webhooks_last_called' => 'Sist ringt:',
+ 'webhooks_last_errored' => 'Siste feil:',
+ 'webhooks_last_error_message' => 'Siste feilmelding:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/nn/validation.php b/lang/nn/validation.php
new file mode 100644
index 00000000000..ff7a026a2b5
--- /dev/null
+++ b/lang/nn/validation.php
@@ -0,0 +1,123 @@
+ ':attribute må aksepteres.',
+ 'active_url' => ':attribute er ikke en godkjent URL.',
+ 'after' => ':attribute må være en dato etter :date.',
+ 'alpha' => ':attribute kan kun inneholde bokstaver.',
+ 'alpha_dash' => ':attribute kan kunne inneholde bokstaver, tall, bindestreker eller understreker.',
+ 'alpha_num' => ':attribute kan kun inneholde bokstaver og tall.',
+ 'array' => ':attribute må være en liste.',
+ 'backup_codes' => 'Den angitte koden er ikke gyldig, eller er allerede benyttet.',
+ 'before' => ':attribute må være en dato før :date.',
+ 'between' => [
+ 'numeric' => ':attribute må være mellom :min og :max.',
+ 'file' => ':attribute må være mellom :min og :max kilobytes.',
+ 'string' => ':attribute må være mellom :min og :max tegn.',
+ 'array' => ':attribute må være mellom :min og :max ting.',
+ ],
+ 'boolean' => ':attribute feltet kan bare være sann eller falsk.',
+ 'confirmed' => ':attribute bekreftelsen samsvarer ikke.',
+ 'date' => ':attribute er ikke en gyldig dato.',
+ 'date_format' => ':attribute samsvarer ikke med :format.',
+ 'different' => ':attribute og :other må være forskjellige.',
+ 'digits' => ':attribute må være :digits tall.',
+ 'digits_between' => ':attribute må være mellomg :min og :max tall.',
+ 'email' => ':attribute må være en gyldig e-post.',
+ 'ends_with' => ':attribute må slutte med en av verdiene: :values',
+ 'file' => 'Attributtet :attribute må angis som en gyldig fil.',
+ 'filled' => ':attribute feltet er påkrevd.',
+ 'gt' => [
+ 'numeric' => ':attribute må være større enn :value.',
+ 'file' => ':attribute må være større enn :value kilobytes.',
+ 'string' => ':attribute må være større enn :value tegn.',
+ 'array' => ':attribute må ha mer en :value ting.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute må være større enn eller lik :value.',
+ 'file' => ':attribute må være større enn eller lik :value kilobytes.',
+ 'string' => ':attribute må være større enn eller lik :value tegn.',
+ 'array' => ':attribute må ha :value eller flere ting.',
+ ],
+ 'exists' => 'Den valgte :attribute er ugyldig.',
+ 'image' => ':attribute må være et bilde.',
+ 'image_extension' => ':attribute må ha støttet formattype.',
+ 'in' => 'Den valgte :attribute er ugyldig.',
+ 'integer' => ':attribute må være et heltall',
+ 'ip' => ':attribute må være en gyldig IP adresse.',
+ 'ipv4' => ':attribute må være en gyldig IPv4 adresse.',
+ 'ipv6' => ':attribute må være en gyldig IPv6 adresse.',
+ 'json' => ':attribute må være en gyldig JSON tekststreng.',
+ 'lt' => [
+ 'numeric' => ':attribute må være mindre enn :value.',
+ 'file' => ':attribute må være mindre enn :value kilobytes.',
+ 'string' => ':attribute må være mindre enn :value tegn.',
+ 'array' => ':attribute må ha mindre enn :value ting.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute må være mindre enn eller lik :value.',
+ 'file' => ':attribute må være mindre enn eller lik :value kilobytes.',
+ 'string' => ':attribute må være mindre enn eller lik :value characters.',
+ 'array' => ':attribute må ha mindre enn eller lik :value ting.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute kan ikke være større enn :max.',
+ 'file' => ':attribute kan ikke være større enn :max kilobytes.',
+ 'string' => ':attribute kan ikke være større enn :max tegn.',
+ 'array' => ':attribute kan ikke inneholde mer enn :max ting.',
+ ],
+ 'mimes' => ':attribute må være en fil av typen: :values.',
+ 'min' => [
+ 'numeric' => ':attribute må være på minst :min.',
+ 'file' => ':attribute må være på minst :min kilobytes.',
+ 'string' => ':attribute må være på minst :min tegn.',
+ 'array' => ':attribute må minst ha :min ting.',
+ ],
+ 'not_in' => 'Den valgte :attribute er ugyldig.',
+ 'not_regex' => ':attribute format er ugyldig.',
+ 'numeric' => ':attribute må være et nummer.',
+ 'regex' => ':attribute format er ugyldig.',
+ 'required' => ':attribute feltet er påkrevt.',
+ 'required_if' => ':attribute feltet er påkrevt når :other er :value.',
+ 'required_with' => ':attribute feltet er påkrevt når :values er tilgjengelig.',
+ 'required_with_all' => ':attribute feltet er påkrevt når :values er tilgjengelig',
+ 'required_without' => ':attribute feltet er påkrevt når :values ikke er tilgjengelig.',
+ 'required_without_all' => ':attribute feltet er påkrevt når ingen av :values er tilgjengelig.',
+ 'same' => ':attribute og :other må samsvare.',
+ 'safe_url' => 'Den angitte lenken kan være farlig.',
+ 'size' => [
+ 'numeric' => ':attribute må være :size.',
+ 'file' => ':attribute må være :size kilobytes.',
+ 'string' => ':attribute må være :size tegn.',
+ 'array' => ':attribute må inneholde :size ting.',
+ ],
+ 'string' => ':attribute må være en tekststreng.',
+ 'timezone' => ':attribute må være en tidssone.',
+ 'totp' => 'Den angitte koden er ikke gyldig eller har utløpt.',
+ 'unique' => ':attribute har allerede blitt tatt.',
+ 'url' => ':attribute format er ugyldig.',
+ 'uploaded' => 'kunne ikke lastes opp, tjeneren støtter ikke filer av denne størrelsen.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'passordbekreftelse er påkrevd',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/pl/activities.php b/lang/pl/activities.php
new file mode 100644
index 00000000000..323b7035e1b
--- /dev/null
+++ b/lang/pl/activities.php
@@ -0,0 +1,140 @@
+ 'utworzono stronę',
+ 'page_create_notification' => 'Strona została utworzona',
+ 'page_update' => 'zaktualizowano stronę',
+ 'page_update_notification' => 'Strona zaktualizowana pomyślnie',
+ 'page_delete' => 'usunięto stronę',
+ 'page_delete_notification' => 'Strona została usunięta',
+ 'page_restore' => 'przywrócono stronę',
+ 'page_restore_notification' => 'Strona przywrócona pomyślnie',
+ 'page_move' => 'przeniesiono stronę',
+ 'page_move_notification' => 'Strona przeniesiona pomyślnie',
+
+ // Chapters
+ 'chapter_create' => 'utworzono rozdział',
+ 'chapter_create_notification' => 'Rozdział utworzony pomyślnie',
+ 'chapter_update' => 'zaktualizowano rozdział',
+ 'chapter_update_notification' => 'Rozdział zaktualizowany pomyślnie',
+ 'chapter_delete' => 'usunięto rozdział',
+ 'chapter_delete_notification' => 'Rozdział usunięty pomyślnie',
+ 'chapter_move' => 'przeniesiono rozdział',
+ 'chapter_move_notification' => 'Rozdział przeniesiony pomyślnie',
+
+ // Books
+ 'book_create' => 'utworzono książkę',
+ 'book_create_notification' => 'Książka utworzona pomyślnie',
+ 'book_create_from_chapter' => 'przekonwertowano rozdział na książkę',
+ 'book_create_from_chapter_notification' => 'Rozdział został pomyślnie skonwertowany do książki',
+ 'book_update' => 'zaktualizowano książkę',
+ 'book_update_notification' => 'Książka zaktualizowana pomyślnie',
+ 'book_delete' => 'usunięto książkę',
+ 'book_delete_notification' => 'Książka usunięta pomyślnie',
+ 'book_sort' => 'posortowano książkę',
+ 'book_sort_notification' => 'Książka posortowana pomyślnie',
+
+ // Bookshelves
+ 'bookshelf_create' => 'utworzyono półkę',
+ 'bookshelf_create_notification' => 'Półka utworzona pomyślnie',
+ 'bookshelf_create_from_book' => 'przekonwertowano książkę na półkę',
+ 'bookshelf_create_from_book_notification' => 'Książka została pomyślnie skonwertowana na półkę',
+ 'bookshelf_update' => 'zaktualizowano półkę',
+ 'bookshelf_update_notification' => 'Półka zaktualizowana pomyślnie',
+ 'bookshelf_delete' => 'usunięto półkę',
+ 'bookshelf_delete_notification' => 'Półka usunięta pomyślnie',
+
+ // Revisions
+ 'revision_restore' => 'przywrócono wersję',
+ 'revision_delete' => 'usunięto wersję',
+ 'revision_delete_notification' => 'Wersja usunięta pomyślnie',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" został dodany do Twoich ulubionych',
+ 'favourite_remove_notification' => '":name" został usunięty z ulubionych',
+
+ // Watching
+ 'watch_update_level_notification' => 'Ustawienia obserwowania pomyślnie zaktualizowane',
+
+ // Auth
+ 'auth_login' => 'zalogował się',
+ 'auth_register' => 'zarejestrowany jako nowy użytkownik',
+ 'auth_password_reset_request' => 'zażądał zresetowania hasła użytkownika',
+ 'auth_password_reset_update' => 'zresetował hasło użytkownika',
+ 'mfa_setup_method' => 'skonfigurował metodę MFA',
+ 'mfa_setup_method_notification' => 'Metoda wieloskładnikowa została pomyślnie skonfigurowana',
+ 'mfa_remove_method' => 'usunął metodę MFA',
+ 'mfa_remove_method_notification' => 'Metoda wieloskładnikowa pomyślnie usunięta',
+
+ // Settings
+ 'settings_update' => 'zaktualizowano ustawienia',
+ 'settings_update_notification' => 'Ustawienia zaktualizowane pomyślnie',
+ 'maintenance_action_run' => 'uruchomiono akcję konserwacji',
+
+ // Webhooks
+ 'webhook_create' => 'utworzono webhook',
+ 'webhook_create_notification' => 'Webhook utworzony pomyślnie',
+ 'webhook_update' => 'zaktualizowano webhook',
+ 'webhook_update_notification' => 'Webhook zaktualizowany pomyślnie',
+ 'webhook_delete' => 'usunięto webhook',
+ 'webhook_delete_notification' => 'Webhook usunięty pomyślnie',
+
+ // Imports
+ 'import_create' => 'utworzono import',
+ 'import_create_notification' => 'Import zakończony sukcesem',
+ 'import_run' => 'zaktualizowano import',
+ 'import_run_notification' => 'Zawartość pomyślnie zaimportowana',
+ 'import_delete' => 'usunięto import',
+ 'import_delete_notification' => 'Import usunięty',
+
+ // Users
+ 'user_create' => 'utworzono użytkownika',
+ 'user_create_notification' => 'Użytkownik utworzony pomyślnie',
+ 'user_update' => 'zaktualizowano użytkownika',
+ 'user_update_notification' => 'Użytkownik zaktualizowany pomyślnie',
+ 'user_delete' => 'usunięto użytkownika',
+ 'user_delete_notification' => 'Użytkownik pomyślnie usunięty',
+
+ // API Tokens
+ 'api_token_create' => 'utworzono token API',
+ 'api_token_create_notification' => 'Token API został poprawnie utworzony',
+ 'api_token_update' => 'zaktualizowano token API',
+ 'api_token_update_notification' => 'Token API został pomyślnie zaktualizowany',
+ 'api_token_delete' => 'usunięto token API',
+ 'api_token_delete_notification' => 'Token API został pomyślnie usunięty',
+
+ // Roles
+ 'role_create' => 'utworzono rolę',
+ 'role_create_notification' => 'Rola utworzona pomyślnie',
+ 'role_update' => 'zaktualizowano rolę',
+ 'role_update_notification' => 'Rola zaktualizowana pomyślnie',
+ 'role_delete' => 'usunięto rolę',
+ 'role_delete_notification' => 'Rola usunięta pomyślnie',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'opróżniono kosz',
+ 'recycle_bin_restore' => 'przywrócono z kosza',
+ 'recycle_bin_destroy' => 'usunięto z kosza',
+
+ // Comments
+ 'commented_on' => 'skomentował',
+ 'comment_create' => 'dodał komentarz',
+ 'comment_update' => 'zaktualizował komentarz',
+ 'comment_delete' => 'usunął komentarz',
+
+ // Sort Rules
+ 'sort_rule_create' => 'utworzono regułę sortowania',
+ 'sort_rule_create_notification' => 'Reguła sortowania została pomyślnie stworzona',
+ 'sort_rule_update' => 'zaktualizowano regułę sortowania',
+ 'sort_rule_update_notification' => 'Reguła sortowania została pomyślnie zaktualizowana',
+ 'sort_rule_delete' => 'usunięto regułę sortowania',
+ 'sort_rule_delete_notification' => 'Reguła sortowania została pomyślnie usunięta',
+
+ // Other
+ 'permissions_update' => 'zaktualizował uprawnienia',
+];
diff --git a/lang/pl/auth.php b/lang/pl/auth.php
new file mode 100644
index 00000000000..445f8198af8
--- /dev/null
+++ b/lang/pl/auth.php
@@ -0,0 +1,117 @@
+ 'Wprowadzone poświadczenia są nieprawidłowe.',
+ 'throttle' => 'Zbyt wiele prób logowania. Spróbuj ponownie za :seconds s.',
+
+ // Login & Register
+ 'sign_up' => 'Zarejestruj się',
+ 'log_in' => 'Zaloguj się',
+ 'log_in_with' => 'Zaloguj się za pomocą :socialDriver',
+ 'sign_up_with' => 'Zarejestruj się za pomocą :socialDriver',
+ 'logout' => 'Wyloguj',
+
+ 'name' => 'Imię',
+ 'username' => 'Nazwa użytkownika',
+ 'email' => 'E-mail',
+ 'password' => 'Hasło',
+ 'password_confirm' => 'Potwierdź hasło',
+ 'password_hint' => 'Musi mieć co najmniej 8 znaków',
+ 'forgot_password' => 'Zapomniałeś hasła?',
+ 'remember_me' => 'Zapamiętaj mnie',
+ 'ldap_email_hint' => 'Wprowadź adres e-mail dla tego konta.',
+ 'create_account' => 'Utwórz konto',
+ 'already_have_account' => 'Masz już konto?',
+ 'dont_have_account' => 'Nie masz konta?',
+ 'social_login' => 'Logowanie za pomocą konta społecznościowego',
+ 'social_registration' => 'Rejestracja za pomocą konta społecznościowego',
+ 'social_registration_text' => 'Zarejestruj się za pomocą innej usługi.',
+
+ 'register_thanks' => 'Dziękujemy za rejestrację!',
+ 'register_confirm' => 'Sprawdź podany adres e-mail i kliknij w link, by uzyskać dostęp do :appName.',
+ 'registrations_disabled' => 'Rejestracja jest obecnie zablokowana.',
+ 'registration_email_domain_invalid' => 'Adresy e-mail z tej domeny nie mają dostępu do tej aplikacji',
+ 'register_success' => 'Dziękujemy za rejestrację! Zostałeś zalogowany automatycznie.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Próba logowania',
+ 'auto_init_starting_desc' => 'Łączymy się z twoim systemem uwierzytelniania w celu rozpoczęcia procesu logowania. Jeśli po 5 sekundach nie ma żadnych postępów, możesz spróbować kliknąć poniższy link.',
+ 'auto_init_start_link' => 'Kontynuuj uwierzytelnianie',
+
+ // Password Reset
+ 'reset_password' => 'Resetowanie hasła',
+ 'reset_password_send_instructions' => 'Wprowadź adres e-mail powiązany z Twoim kontem, by otrzymać link do resetowania hasła.',
+ 'reset_password_send_button' => 'Wyślij link do resetowania hasła',
+ 'reset_password_sent' => 'Link z resetem hasła zostanie wysłany na :email jeśli mamy ten adres w systemie.',
+ 'reset_password_success' => 'Hasło zostało zresetowane pomyślnie.',
+ 'email_reset_subject' => 'Resetowanie hasła do :appName',
+ 'email_reset_text' => 'Otrzymujesz tę wiadomość ponieważ ktoś zażądał zresetowania hasła do Twojego konta.',
+ 'email_reset_not_requested' => 'Jeśli to nie Ty złożyłeś żądanie zresetowania hasła, zignoruj tę wiadomość.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Potwierdź swój adres e-mail w :appName',
+ 'email_confirm_greeting' => 'Dziękujemy za dołączenie do :appName!',
+ 'email_confirm_text' => 'Prosimy byś potwierdził swoje hasło klikając przycisk poniżej:',
+ 'email_confirm_action' => 'Potwierdź e-mail',
+ 'email_confirm_send_error' => 'Wymagane jest potwierdzenie hasła, lecz wiadomość nie mogła zostać wysłana. Skontaktuj się z administratorem w celu upewnienia się, że skrzynka została skonfigurowana prawidłowo.',
+ 'email_confirm_success' => 'Twój e-mail został potwierdzony! Powinieneś teraz mieć możliwość zalogowania się za pomocą tego adresu e-mail.',
+ 'email_confirm_resent' => 'E-mail z potwierdzeniem został wysłany ponownie, sprawdź swoją skrzynkę odbiorczą.',
+ 'email_confirm_thanks' => 'Dzięki za potwierdzenie!',
+ 'email_confirm_thanks_desc' => 'Poczekaj chwilę, Twoje potwierdzenie jest obsługiwane. Jeśli nie zostaniesz przekierowany po 3 sekundach, naciśnij poniższy link "Kontynuuj", aby kontynuować.',
+
+ 'email_not_confirmed' => 'Adres e-mail nie został potwierdzony',
+ 'email_not_confirmed_text' => 'Twój adres e-mail nie został jeszcze potwierdzony.',
+ 'email_not_confirmed_click_link' => 'Aby potwierdzić swoje konto, kliknij link wysłany w wiadomości po rejestracji.',
+ 'email_not_confirmed_resend' => 'Jeśli wiadomość do Ciebie nie dotarła, możesz wysłać ją ponownie, wypełniając formularz poniżej.',
+ 'email_not_confirmed_resend_button' => 'Wyślij ponownie wiadomość z potwierdzeniem',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Zostałeś zaproszony do :appName!',
+ 'user_invite_email_greeting' => 'Zostało dla Ciebie utworzone konto w :appName.',
+ 'user_invite_email_text' => 'Kliknij przycisk poniżej, aby ustawić hasło do konta i uzyskać do niego dostęp:',
+ 'user_invite_email_action' => 'Ustaw hasło do konta',
+ 'user_invite_page_welcome' => 'Witaj w :appName!',
+ 'user_invite_page_text' => 'Aby zakończyć tworzenie konta musisz ustawić hasło, które będzie używane do logowania do :appName w przyszłości.',
+ 'user_invite_page_confirm_button' => 'Potwierdź hasło',
+ 'user_invite_success_login' => 'Hasło ustawione, teraz powinieneś mieć możliwość logowania się przy użyciu ustawionego hasła, aby uzyskać dostęp do :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Skonfiguruj uwierzytelnianie wieloskładnikowe',
+ 'mfa_setup_desc' => 'Skonfiguruj uwierzytelnianie wieloskładnikowe jako dodatkową warstwę bezpieczeństwa dla swojego konta użytkownika.',
+ 'mfa_setup_configured' => 'Już skonfigurowane',
+ 'mfa_setup_reconfigure' => 'Ponownie konfiguruj',
+ 'mfa_setup_remove_confirmation' => 'Czy na pewno chcesz usunąć tę metodę uwierzytelniania wieloskładnikowego?',
+ 'mfa_setup_action' => 'Konfiguracja',
+ 'mfa_backup_codes_usage_limit_warning' => 'Pozostało Ci mniej niż 5 kodów zapasowych, Wygeneruj i przechowuj nowy zestaw zanim skończysz kody, aby zapobiec zablokowaniu się z konta.',
+ 'mfa_option_totp_title' => 'Aplikacja mobilna',
+ 'mfa_option_totp_desc' => 'Aby korzystać z uwierzytelniania wieloskładnikowego, potrzebujesz aplikacji mobilnej, która obsługuje TOTP, takiej jak Google Authenticator, Authy lub Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Kody zapasowe',
+ 'mfa_option_backup_codes_desc' => 'Generuje zestaw jednorazowych kodów zapasowych, które wprowadzisz przy logowaniu, aby zweryfikować Twoją tożsamość. Upewnij się, że przechowujesz je w bezpiecznym miejscu.',
+ 'mfa_gen_confirm_and_enable' => 'Potwierdź i włącz',
+ 'mfa_gen_backup_codes_title' => 'Ustawienia kopii zapasowych kodów',
+ 'mfa_gen_backup_codes_desc' => 'Przechowuj poniższą listę kodów w bezpiecznym miejscu. Przy dostępie do systemu będziesz mógł użyć jednego z kodów jako drugiego mechanizmu uwierzytelniania.',
+ 'mfa_gen_backup_codes_download' => 'Pobierz kody',
+ 'mfa_gen_backup_codes_usage_warning' => 'Każdy kod może być użyty tylko raz',
+ 'mfa_gen_totp_title' => 'Ustawienia aplikacji mobilnej',
+ 'mfa_gen_totp_desc' => 'Aby korzystać z uwierzytelniania wieloskładnikowego, potrzebujesz aplikacji mobilnej, która obsługuje TOTP, takiej jak Google Authenticator, Authy lub Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Zeskanuj poniższy kod QR za pomocą preferowanej aplikacji uwierzytelniającej, aby rozpocząć.',
+ 'mfa_gen_totp_verify_setup' => 'Sprawdź ustawienia',
+ 'mfa_gen_totp_verify_setup_desc' => 'Sprawdź, czy wszystko działa wprowadzając kod wygenerowany w twojej aplikacji uwierzytelniającej, w poniższym polu:',
+ 'mfa_gen_totp_provide_code_here' => 'Tutaj podaj kod wygenerowany przez aplikację',
+ 'mfa_verify_access' => 'Sprawdź dostęp',
+ 'mfa_verify_access_desc' => 'Twoje konto wymaga potwierdzenia tożsamości poprzez dodatkowy poziom weryfikacji, zanim uzyskasz dostęp. Zweryfikuj za pomocą jednej z skonfigurowanych metod, aby kontynuować.',
+ 'mfa_verify_no_methods' => 'Brak skonfigurowanych metod',
+ 'mfa_verify_no_methods_desc' => 'Nie można znaleźć metod uwierzytelniania wieloskładnikowego. Musisz skonfigurować co najmniej jedną metodę zanim uzyskasz dostęp.',
+ 'mfa_verify_use_totp' => 'Zweryfikuj używając aplikacji mobilnej',
+ 'mfa_verify_use_backup_codes' => 'Zweryfikuj używając kodu zapasowego',
+ 'mfa_verify_backup_code' => 'Kod zapasowy',
+ 'mfa_verify_backup_code_desc' => 'Wprowadź poniżej jeden z pozostałych kodów zapasowych:',
+ 'mfa_verify_backup_code_enter_here' => 'Wprowadź kod zapasowy tutaj',
+ 'mfa_verify_totp_desc' => 'Wprowadź kod, wygenerowany przy użyciu aplikacji mobilnej poniżej:',
+ 'mfa_setup_login_notification' => 'Metoda wieloskładnikowa skonfigurowana, zaloguj się ponownie za pomocą skonfigurowanej metody.',
+];
diff --git a/lang/pl/common.php b/lang/pl/common.php
new file mode 100644
index 00000000000..1f795ea8296
--- /dev/null
+++ b/lang/pl/common.php
@@ -0,0 +1,115 @@
+ 'Anuluj',
+ 'close' => 'Zamknij',
+ 'confirm' => 'Zatwierdź',
+ 'back' => 'Wstecz',
+ 'save' => 'Zapisz',
+ 'continue' => 'Kontynuuj',
+ 'select' => 'Wybierz',
+ 'toggle_all' => 'Przełącz wszystko',
+ 'more' => 'Więcej',
+
+ // Form Labels
+ 'name' => 'Nazwa',
+ 'description' => 'Opis',
+ 'role' => 'Rola',
+ 'cover_image' => 'Okładka',
+ 'cover_image_description' => 'Ten obraz powinien być o rozmiarze około 440x250px, chociaż zostanie elastycznie przeskalowany i przycięty, aby dopasować interfejs użytkownika do różnych scenariuszy w zależności od potrzeb, więc faktyczne wymiary wyświetlania będą się różnić.',
+
+ // Actions
+ 'actions' => 'Akcje',
+ 'view' => 'Widok',
+ 'view_all' => 'Zobacz wszystkie',
+ 'new' => 'Nowe',
+ 'create' => 'Utwórz',
+ 'update' => 'Zaktualizuj',
+ 'edit' => 'Edytuj',
+ 'archive' => 'Archiwizuj',
+ 'unarchive' => 'Wypakuj z archiwum',
+ 'sort' => 'Sortuj',
+ 'move' => 'Przenieś',
+ 'copy' => 'Skopiuj',
+ 'reply' => 'Odpowiedz',
+ 'delete' => 'Usuń',
+ 'delete_confirm' => 'Potwierdź usunięcie',
+ 'search' => 'Szukaj',
+ 'search_clear' => 'Wyczyść wyszukiwanie',
+ 'reset' => 'Resetuj',
+ 'remove' => 'Usuń',
+ 'add' => 'Dodaj',
+ 'configure' => 'Konfiguruj',
+ 'manage' => 'Zarządzaj',
+ 'fullscreen' => 'Pełny ekran',
+ 'favourite' => 'Ulubione',
+ 'unfavourite' => 'Usuń z ulubionych',
+ 'next' => 'Dalej',
+ 'previous' => 'Wstecz',
+ 'filter_active' => 'Aktywny filtr:',
+ 'filter_clear' => 'Wyczyść Filtr',
+ 'download' => 'Pobierz',
+ 'open_in_tab' => 'Otwórz w karcie',
+ 'open' => 'Otwórz',
+
+ // Sort Options
+ 'sort_options' => 'Opcje sortowania',
+ 'sort_direction_toggle' => 'Przełącz kierunek sortowania',
+ 'sort_ascending' => 'Sortuj rosnąco',
+ 'sort_descending' => 'Sortuj malejąco',
+ 'sort_name' => 'Nazwa',
+ 'sort_default' => 'Domyślne',
+ 'sort_created_at' => 'Data utworzenia',
+ 'sort_updated_at' => 'Data aktualizacji',
+
+ // Misc
+ 'deleted_user' => 'Użytkownik usunięty',
+ 'no_activity' => 'Brak aktywności do wyświetlenia',
+ 'no_items' => 'Brak elementów do wyświetlenia',
+ 'back_to_top' => 'Powrót na górę',
+ 'skip_to_main_content' => 'Przejdź do treści głównej',
+ 'toggle_details' => 'Włącz/wyłącz szczegóły',
+ 'toggle_thumbnails' => 'Włącz/wyłącz miniatury',
+ 'details' => 'Szczegóły',
+ 'grid_view' => 'Widok kafelkowy',
+ 'list_view' => 'Widok listy',
+ 'default' => 'Domyślny',
+ 'breadcrumb' => 'Ścieżka nawigacji',
+ 'status' => 'Status',
+ 'status_active' => 'Aktywny',
+ 'status_inactive' => 'Nieaktywny',
+ 'never' => 'Nigdy',
+ 'none' => 'Brak',
+
+ // Header
+ 'homepage' => 'Strona domowa',
+ 'header_menu_expand' => 'Rozwiń menu nagłówka',
+ 'profile_menu' => 'Menu profilu',
+ 'view_profile' => 'Zobacz profil',
+ 'edit_profile' => 'Edytuj profil',
+ 'dark_mode' => 'Tryb ciemny',
+ 'light_mode' => 'Tryb jasny',
+ 'global_search' => 'Wyszukiwanie globalne',
+
+ // Layout tabs
+ 'tab_info' => 'Informacje',
+ 'tab_info_label' => 'Zakładka: Pokaż informacje drugorzędne',
+ 'tab_content' => 'Treść',
+ 'tab_content_label' => 'Zakładka: Pokaż podstawową zawartość',
+
+ // Email Content
+ 'email_action_help' => 'Jeśli masz problem z kliknięciem przycisku ":actionText", skopiuj i wklej poniższy adres URL w nowej karcie swojej przeglądarki:',
+ 'email_rights' => 'Wszelkie prawa zastrzeżone',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Polityka prywatności',
+ 'terms_of_service' => 'Warunki usługi',
+
+ // OpenSearch
+ 'opensearch_description' => 'Szukaj :appName',
+];
diff --git a/lang/pl/components.php b/lang/pl/components.php
new file mode 100644
index 00000000000..0aa3f0741f3
--- /dev/null
+++ b/lang/pl/components.php
@@ -0,0 +1,46 @@
+ 'Wybór obrazka',
+ 'image_list' => 'Lista obrazów',
+ 'image_details' => 'Szczegóły obrazu',
+ 'image_upload' => 'Prześlij obraz',
+ 'image_intro' => 'Tutaj możesz wybrać i zarządzać obrazami, które zostały wcześniej przesłane do systemu.',
+ 'image_intro_upload' => 'Prześlij nowy obraz przeciągając plik obrazu do tego okna lub używając przycisku "Prześlij obraz" powyżej.',
+ 'image_all' => 'Wszystkie',
+ 'image_all_title' => 'Zobacz wszystkie obrazki',
+ 'image_book_title' => 'Zobacz obrazki zapisane w tej książce',
+ 'image_page_title' => 'Zobacz obrazki zapisane na tej stronie',
+ 'image_search_hint' => 'Szukaj po nazwie obrazka',
+ 'image_uploaded' => 'Przesłano :uploadedDate',
+ 'image_uploaded_by' => 'Przesłane przez :userName',
+ 'image_uploaded_to' => 'Przesłano do :pageLink',
+ 'image_updated' => 'Zaktualizowano :updateDate',
+ 'image_load_more' => 'Wczytaj więcej',
+ 'image_image_name' => 'Nazwa obrazka',
+ 'image_delete_used' => 'Ten obrazek jest używany na stronach wyświetlonych poniżej.',
+ 'image_delete_confirm_text' => 'Czy na pewno chcesz usunąć ten obraz?',
+ 'image_select_image' => 'Wybierz obrazek',
+ 'image_dropzone' => 'Upuść obrazki tutaj lub kliknij by wybrać obrazki do przesłania',
+ 'image_dropzone_drop' => 'Upuść obrazy tutaj, aby przesłać',
+ 'images_deleted' => 'Usunięte obrazki',
+ 'image_preview' => 'Podgląd obrazka',
+ 'image_upload_success' => 'Obrazek przesłany pomyślnie',
+ 'image_update_success' => 'Szczegóły obrazka zaktualizowane pomyślnie',
+ 'image_delete_success' => 'Obrazek usunięty pomyślnie',
+ 'image_replace' => 'Zastąp obraz',
+ 'image_replace_success' => 'Plik obrazu zaktualizowany pomyślnie',
+ 'image_rebuild_thumbs' => 'Zregeneruj warianty rozmiaru',
+ 'image_rebuild_thumbs_success' => 'Warianty rozmiaru obrazu przebudowane pomyślnie!',
+
+ // Code Editor
+ 'code_editor' => 'Edytuj kod',
+ 'code_language' => 'Język kodu',
+ 'code_content' => 'Zawartość kodu',
+ 'code_session_history' => 'Historia sesji',
+ 'code_save' => 'Zapisz kod',
+];
diff --git a/lang/pl/editor.php b/lang/pl/editor.php
new file mode 100644
index 00000000000..02206ba476c
--- /dev/null
+++ b/lang/pl/editor.php
@@ -0,0 +1,182 @@
+ 'Ogólne',
+ 'advanced' => 'Zaawansowane',
+ 'none' => 'Brak',
+ 'cancel' => 'Anuluj',
+ 'save' => 'Zapisz',
+ 'close' => 'Zamknij',
+ 'apply' => 'Zatwierdź',
+ 'undo' => 'Cofnij',
+ 'redo' => 'Ponów',
+ 'left' => 'Lewa strona',
+ 'center' => 'Centrum',
+ 'right' => 'Prawa strona',
+ 'top' => 'Góra',
+ 'middle' => 'Środek',
+ 'bottom' => 'Dół',
+ 'width' => 'Szerokość',
+ 'height' => 'Wysokość',
+ 'More' => 'Więcej',
+ 'select' => 'Wybierz...',
+
+ // Toolbar
+ 'formats' => 'Formaty',
+ 'header_large' => 'Duży Nagłówek',
+ 'header_medium' => 'Średni Nagłówek',
+ 'header_small' => 'Mały Nagłówek',
+ 'header_tiny' => 'Bardzo Mały Nagłówek',
+ 'paragraph' => 'Paragraf',
+ 'blockquote' => 'Cytat',
+ 'inline_code' => 'Kod źródłowy',
+ 'callouts' => 'Objaśnienia',
+ 'callout_information' => 'Informacja',
+ 'callout_success' => 'Sukces',
+ 'callout_warning' => 'Ostrzeżenie',
+ 'callout_danger' => 'Niebezpieczeństwo',
+ 'bold' => 'Pogrubienie',
+ 'italic' => 'Kursywa',
+ 'underline' => 'Podkreślenie',
+ 'strikethrough' => 'Przekreślenie',
+ 'superscript' => 'Indeks górny',
+ 'subscript' => 'Indeks dolny',
+ 'text_color' => 'Kolor tekstu',
+ 'highlight_color' => 'Kolor podkreślenia',
+ 'custom_color' => 'Kolor niestandardowy',
+ 'remove_color' => 'Usuń kolor',
+ 'background_color' => 'Kolor tła',
+ 'align_left' => 'Wyrównaj do lewej',
+ 'align_center' => 'Wyśrodkuj',
+ 'align_right' => 'Wyrównaj do prawej',
+ 'align_justify' => 'Wyjustuj',
+ 'list_bullet' => 'Lista punktowana',
+ 'list_numbered' => 'Lista numerowana',
+ 'list_task' => 'Lista zadań',
+ 'indent_increase' => 'Zwiększ wcięcie',
+ 'indent_decrease' => 'Zmniejsz wcięcie',
+ 'table' => 'Tabela',
+ 'insert_image' => 'Wstaw obraz',
+ 'insert_image_title' => 'Wstaw/Edytuj obraz',
+ 'insert_link' => 'Wstaw/edytuj link',
+ 'insert_link_title' => 'Wstaw/Edytuj Link',
+ 'insert_horizontal_line' => 'Wstaw linię poziomą',
+ 'insert_code_block' => 'Wstaw blok kodu',
+ 'edit_code_block' => 'Edytuj blok kodu',
+ 'insert_drawing' => 'Wstaw/Edytuj rysunek',
+ 'drawing_manager' => 'Menedżer rysunków',
+ 'insert_media' => 'Wstaw/edytuj multimedia',
+ 'insert_media_title' => 'Wstaw/Edytuj Multimedia',
+ 'clear_formatting' => 'Wyczyść formatowanie',
+ 'source_code' => 'Kod źródłowy',
+ 'source_code_title' => 'Kod Źródłowy',
+ 'fullscreen' => 'Pełny ekran',
+ 'image_options' => 'Opcje obrazu',
+
+ // Tables
+ 'table_properties' => 'Właściwości tabeli',
+ 'table_properties_title' => 'Właściwości Tabeli',
+ 'delete_table' => 'Usuń tabelę',
+ 'table_clear_formatting' => 'Wyczyść formatowanie tabeli',
+ 'resize_to_contents' => 'Dostosuj rozmiar do zawartości',
+ 'row_header' => 'Wiersz nagłówka',
+ 'insert_row_before' => 'Wstaw wiersz przed',
+ 'insert_row_after' => 'Wstaw wiersz za',
+ 'delete_row' => 'Usuń wiersz',
+ 'insert_column_before' => 'Wstaw kolumnę przed',
+ 'insert_column_after' => 'Wstaw kolumnę za',
+ 'delete_column' => 'Usuń kolumnę',
+ 'table_cell' => 'Komórka',
+ 'table_row' => 'Wiersz',
+ 'table_column' => 'Kolumna',
+ 'cell_properties' => 'Właściwości komórki',
+ 'cell_properties_title' => 'Właściwości Komórki',
+ 'cell_type' => 'Typ komórki',
+ 'cell_type_cell' => 'Komórka',
+ 'cell_scope' => 'Zakres',
+ 'cell_type_header' => 'Komórka nagłówka',
+ 'merge_cells' => 'Scal komórki',
+ 'split_cell' => 'Podziel komórkę',
+ 'table_row_group' => 'Grupa wierszy',
+ 'table_column_group' => 'Grupa kolumn',
+ 'horizontal_align' => 'Wyrównanie w poziomie',
+ 'vertical_align' => 'Wyrównanie w pionie',
+ 'border_width' => 'Szerokość obramowania',
+ 'border_style' => 'Styl obramowania',
+ 'border_color' => 'Kolor obramowania',
+ 'row_properties' => 'Właściwości wiersza',
+ 'row_properties_title' => 'Właściwości Wiersza',
+ 'cut_row' => 'Wytnij wiersz',
+ 'copy_row' => 'Kopiuj wiersz',
+ 'paste_row_before' => 'Wklej wiersz przed',
+ 'paste_row_after' => 'Wklej wiersz za',
+ 'row_type' => 'Typ wiersza',
+ 'row_type_header' => 'Nagłówek',
+ 'row_type_body' => 'Ciało',
+ 'row_type_footer' => 'Stopka',
+ 'alignment' => 'Wyrównanie',
+ 'cut_column' => 'Wytnij kolumnę',
+ 'copy_column' => 'Kopiuj kolumnę',
+ 'paste_column_before' => 'Wklej kolumnę przed',
+ 'paste_column_after' => 'Wklej kolumnę za',
+ 'cell_padding' => 'Wypełnienie komórki',
+ 'cell_spacing' => 'Odstępy między komórkami',
+ 'caption' => 'Opis',
+ 'show_caption' => 'Pokaż opis',
+ 'constrain' => 'Zachowaj proporcje',
+ 'cell_border_solid' => 'Ciągły',
+ 'cell_border_dotted' => 'Kropkowany',
+ 'cell_border_dashed' => 'Kreskowany',
+ 'cell_border_double' => 'Podwójny',
+ 'cell_border_groove' => 'Rowek',
+ 'cell_border_ridge' => 'Grzbiet',
+ 'cell_border_inset' => 'Ramka',
+ 'cell_border_outset' => 'Wypukły',
+ 'cell_border_none' => 'Brak',
+ 'cell_border_hidden' => 'Ukryty',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Źródło',
+ 'alt_desc' => 'Alternatywny opis',
+ 'embed' => 'Osadź',
+ 'paste_embed' => 'Wklej kod osadzenia poniżej:',
+ 'url' => 'Adres URL',
+ 'text_to_display' => 'Tekst do wyświetlenia',
+ 'title' => 'Tytuł',
+ 'browse_links' => 'Przeglądaj linki',
+ 'open_link' => 'Otwórz link',
+ 'open_link_in' => 'Otwórz link w...',
+ 'open_link_current' => 'Bieżące okno',
+ 'open_link_new' => 'Nowe okno',
+ 'remove_link' => 'Usuń link',
+ 'insert_collapsible' => 'Wstaw zwijalny blok',
+ 'collapsible_unwrap' => 'Rozwiń',
+ 'edit_label' => 'Edytuj etykietę',
+ 'toggle_open_closed' => 'Otwórz/zamknij',
+ 'collapsible_edit' => 'Edytuj zwijalny blok',
+ 'toggle_label' => 'Przełącz etykietę',
+
+ // About view
+ 'about' => 'O edytorze',
+ 'about_title' => 'O edytorze WYSIWYG',
+ 'editor_license' => 'Licencja edytora i prawa autorskie',
+ 'editor_lexical_license' => 'Ten edytor został zbudowany na podstawie :lexicalLink, który jest dystrybuowany na licencji MIT.',
+ 'editor_lexical_license_link' => 'Pełne szczegóły licencji znajdziesz tutaj.',
+ 'editor_tiny_license' => 'Ten edytor jest zbudowany przy użyciu :tinyLink, który jest udostępniany na licencji MIT.',
+ 'editor_tiny_license_link' => 'Szczegóły dotyczące praw autorskich i licencji TinyMCE można znaleźć tutaj.',
+ 'save_continue' => 'Zapisz stronę i kontynuuj',
+ 'callouts_cycle' => '(Naciskaj dalej, aby przełączyć przez typy)',
+ 'link_selector' => 'Link do treści',
+ 'shortcuts' => 'Skróty',
+ 'shortcut' => 'Skrót',
+ 'shortcuts_intro' => 'Następujące skróty są dostępne w edytorze:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Opis',
+];
diff --git a/lang/pl/entities.php b/lang/pl/entities.php
new file mode 100644
index 00000000000..f3ad807af29
--- /dev/null
+++ b/lang/pl/entities.php
@@ -0,0 +1,476 @@
+ 'Ostatnio utworzone',
+ 'recently_created_pages' => 'Ostatnio utworzone strony',
+ 'recently_updated_pages' => 'Ostatnio zaktualizowane strony',
+ 'recently_created_chapters' => 'Ostatnio utworzone rozdziały',
+ 'recently_created_books' => 'Ostatnio utworzone książki',
+ 'recently_created_shelves' => 'Ostatnio utworzone półki',
+ 'recently_update' => 'Ostatnio zaktualizowane',
+ 'recently_viewed' => 'Ostatnio wyświetlane',
+ 'recent_activity' => 'Ostatnia aktywność',
+ 'create_now' => 'Utwórz teraz',
+ 'revisions' => 'Wersje',
+ 'meta_revision' => 'Wersja #:revisionCount',
+ 'meta_created' => 'Utworzono :timeLength',
+ 'meta_created_name' => 'Utworzono :timeLength przez :user',
+ 'meta_updated' => 'Zaktualizowano :timeLength',
+ 'meta_updated_name' => 'Zaktualizowano :timeLength przez :user',
+ 'meta_owned_name' => 'Właściciel: :user',
+ 'meta_reference_count' => 'Odniesienie w :count elemencie|Odniesienia w :count elementach',
+ 'entity_select' => 'Wybór obiektu',
+ 'entity_select_lack_permission' => 'Nie masz wymaganych uprawnień do wybrania tej pozycji',
+ 'images' => 'Obrazki',
+ 'my_recent_drafts' => 'Moje ostatnie wersje robocze',
+ 'my_recently_viewed' => 'Moje ostatnio wyświetlane',
+ 'my_most_viewed_favourites' => 'Moje najczęściej przeglądane ulubione',
+ 'my_favourites' => 'Moje ulubione',
+ 'no_pages_viewed' => 'Nie przeglądałeś jeszcze żadnych stron',
+ 'no_pages_recently_created' => 'Nie utworzono ostatnio żadnych stron',
+ 'no_pages_recently_updated' => 'Nie zaktualizowano ostatnio żadnych stron',
+ 'export' => 'Eksportuj',
+ 'export_html' => 'Plik HTML',
+ 'export_pdf' => 'Plik PDF',
+ 'export_text' => 'Plik tekstowy',
+ 'export_md' => 'Pliki Markdown',
+ 'export_zip' => 'Archiwum ZIP',
+ 'default_template' => 'Domyślny szablon strony',
+ 'default_template_explain' => 'Przypisz szablon strony, który będzie używany jako domyślna zawartość dla wszystkich stron utworzonych w tym elemencie. Pamiętaj, że będzie to używane tylko wtedy, gdy twórca strony ma dostęp do wybranej strony szablonu.',
+ 'default_template_select' => 'Wybierz stronę szablonu',
+ 'import' => 'Importuj',
+ 'import_validate' => 'Zweryfikuj import',
+ 'import_desc' => 'Importuj książki, rozdziały i strony za pomocą eksportu archiwum ZIP z tej samej lub innej instancji. Wybierz plik ZIP, aby kontynuować. Po przesłaniu i potwierdzeniu pliku będziesz mógł skonfigurować i potwierdzić import w następnym kroku.',
+ 'import_zip_select' => 'Wybierz archiwum ZIP do wgrania',
+ 'import_zip_validation_errors' => 'Podczas sprawdzania poprawności dostarczonego pliku ZIP wykryto błędy:',
+ 'import_pending' => 'Oczekujące importy',
+ 'import_pending_none' => 'Żaden import nie został uruchomiony.',
+ 'import_continue' => 'Kontynuuj import',
+ 'import_continue_desc' => 'Przejrzyj zawartość, która ma być zaimportowana z przesłanego pliku ZIP. Kiedy będziesz gotowy, uruchom import, aby dodać jego zawartość do systemu. Przesłane archiwum ZIP zostanie automatycznie usunięte po udanym importowaniu.',
+ 'import_details' => 'Szczegóły importu',
+ 'import_run' => 'Wykonaj import',
+ 'import_size' => ':size wielkość importu ZIP',
+ 'import_uploaded_at' => 'Przesłano :relativeTime',
+ 'import_uploaded_by' => 'Przesłane przez',
+ 'import_location' => 'Lokalizacja importu',
+ 'import_location_desc' => 'Wybierz docelową lokalizację dla importowanej zawartości. Będziesz potrzebować odpowiednich uprawnień do tworzenia w wybranej lokalizacji.',
+ 'import_delete_confirm' => 'Czy na pewno chcesz usunąć ten import?',
+ 'import_delete_desc' => 'Spowoduje to usunięcie zaimportowanego archiwum ZIP. Tej operacji nie da się cofnąć.',
+ 'import_errors' => 'Błędy importu',
+ 'import_errors_desc' => 'Podczas próby importu wystąpiły następujące błędy:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Uprawnienia',
+ 'permissions_desc' => 'Ustaw uprawnienia tutaj, aby nadpisać domyślne uprawnienia przyznane przez role użytkownika.',
+ 'permissions_book_cascade' => 'Uprawnienia ustawione na książkach będą automatycznie nakładane na podrzędne rozdziały i strony, chyba że mają one ustawione własne uprawnienia.',
+ 'permissions_chapter_cascade' => 'Uprawnienia ustawione w rozdziałach będą automatycznie nakładane na podrzędne strony, chyba że mają one ustawione własne uprawnienia.',
+ 'permissions_save' => 'Zapisz uprawnienia',
+ 'permissions_owner' => 'Właściciel',
+ 'permissions_role_everyone_else' => 'Wszyscy inni',
+ 'permissions_role_everyone_else_desc' => 'Ustaw uprawnienia dla wszystkich nienadpisywanych specjalnie ról.',
+ 'permissions_role_override' => 'Nadpisz uprawnienia dla roli',
+ 'permissions_inherit_defaults' => 'Dziedzicz wartości domyślne',
+
+ // Search
+ 'search_results' => 'Wyniki wyszukiwania',
+ 'search_total_results_found' => ':count znalezionych wyników|:count ogółem znalezionych wyników',
+ 'search_clear' => 'Wyczyść wyszukiwanie',
+ 'search_no_pages' => 'Brak stron pasujących do tego wyszukiwania',
+ 'search_for_term' => 'Szukaj :term',
+ 'search_more' => 'Więcej wyników',
+ 'search_advanced' => 'Wyszukiwanie zaawansowane',
+ 'search_terms' => 'Szukane frazy',
+ 'search_content_type' => 'Rodzaj treści',
+ 'search_exact_matches' => 'Dokładne dopasowanie',
+ 'search_tags' => 'Tagi wyszukiwania',
+ 'search_options' => 'Opcje',
+ 'search_viewed_by_me' => 'Wyświetlone przeze mnie',
+ 'search_not_viewed_by_me' => 'Niewyświetlone przeze mnie',
+ 'search_permissions_set' => 'Zbiór uprawnień',
+ 'search_created_by_me' => 'Utworzone przeze mnie',
+ 'search_updated_by_me' => 'Zaktualizowane przeze mnie',
+ 'search_owned_by_me' => 'Należące do mnie',
+ 'search_date_options' => 'Opcje daty',
+ 'search_updated_before' => 'Zaktualizowane przed',
+ 'search_updated_after' => 'Zaktualizowane po',
+ 'search_created_before' => 'Utworzone przed',
+ 'search_created_after' => 'Utworzone po',
+ 'search_set_date' => 'Ustaw datę',
+ 'search_update' => 'Zaktualizuj wyszukiwanie',
+
+ // Shelves
+ 'shelf' => 'Półka',
+ 'shelves' => 'Półki',
+ 'x_shelves' => ':count Półek|:count Półek',
+ 'shelves_empty' => 'Brak utworzonych półek',
+ 'shelves_create' => 'Utwórz półkę',
+ 'shelves_popular' => 'Popularne półki',
+ 'shelves_new' => 'Nowe półki',
+ 'shelves_new_action' => 'Nowa półka',
+ 'shelves_popular_empty' => 'Najpopularniejsze półki pojawią się w tym miejscu.',
+ 'shelves_new_empty' => 'Tutaj pojawią się ostatnio utworzone półki.',
+ 'shelves_save' => 'Zapisz półkę',
+ 'shelves_books' => 'Książki na tej półce',
+ 'shelves_add_books' => 'Dodaj książkę do tej półki',
+ 'shelves_drag_books' => 'Przeciągnij książki poniżej, aby dodać je do tej półki',
+ 'shelves_empty_contents' => 'Ta półka nie ma przypisanych żadnych książek',
+ 'shelves_edit_and_assign' => 'Edytuj półkę aby przypisać książki',
+ 'shelves_edit_named' => 'Edytuj półkę :name',
+ 'shelves_edit' => 'Edytuj półkę',
+ 'shelves_delete' => 'Usuń półkę',
+ 'shelves_delete_named' => 'Usuń półkę :name',
+ 'shelves_delete_explain' => "Ta operacja usunie półkę o nazwie ':name'. Książki z tej półki nie zostaną usunięte.",
+ 'shelves_delete_confirmation' => 'Czy jesteś pewien, że chcesz usunąć tę półkę?',
+ 'shelves_permissions' => 'Uprawnienia półki',
+ 'shelves_permissions_updated' => 'Uprawnienia półki zostały zaktualizowane',
+ 'shelves_permissions_active' => 'Uprawnienia półki są aktywne',
+ 'shelves_permissions_cascade_warning' => 'Uprawnienia na półkach nie są automatycznie nakładane na zawartych w nich książkach. Dzieje się tak dlatego, że książka może istnieć na wielu półkach. Uprawnienia można jednak skopiować do książek podrzędnych, korzystając z opcji znajdującej się poniżej.',
+ 'shelves_permissions_create' => 'Uprawnienia tworzenia półki są używane tylko do kopiowania uprawnień do książek podrzędnych za pomocą poniższej czynności. Nie kontrolują możliwości tworzenia książek.',
+ 'shelves_copy_permissions_to_books' => 'Skopiuj uprawnienia do książek',
+ 'shelves_copy_permissions' => 'Skopiuj uprawnienia',
+ 'shelves_copy_permissions_explain' => 'To spowoduje zastosowanie obecnych ustawień uprawnień tej półki na wszystkich książkach w niej zawartych. Przed aktywacją upewnij się, że wszelkie zmiany w uprawnieniach tej półki zostały zapisane.',
+ 'shelves_copy_permission_success' => 'Uprawnienia półki zostały skopiowane do :count książek',
+
+ // Books
+ 'book' => 'Książka',
+ 'books' => 'Książki',
+ 'x_books' => ':count Książka|:count Książki',
+ 'books_empty' => 'Brak utworzonych książek',
+ 'books_popular' => 'Popularne książki',
+ 'books_recent' => 'Ostatnie książki',
+ 'books_new' => 'Nowe książki',
+ 'books_new_action' => 'Nowa księga',
+ 'books_popular_empty' => 'Najpopularniejsze książki pojawią się w tym miejscu.',
+ 'books_new_empty' => 'Tutaj pojawią się ostatnio utworzone książki.',
+ 'books_create' => 'Utwórz książkę',
+ 'books_delete' => 'Usuń książkę',
+ 'books_delete_named' => 'Usuń książkę :bookName',
+ 'books_delete_explain' => 'To spowoduje usunięcie książki \':bookName\', Wszystkie strony i rozdziały zostaną usunięte.',
+ 'books_delete_confirmation' => 'Czy na pewno chcesz usunąc tę książkę?',
+ 'books_edit' => 'Edytuj książkę',
+ 'books_edit_named' => 'Edytuj książkę :bookName',
+ 'books_form_book_name' => 'Nazwa książki',
+ 'books_save' => 'Zapisz książkę',
+ 'books_permissions' => 'Uprawnienia książki',
+ 'books_permissions_updated' => 'Zaktualizowano uprawnienia książki',
+ 'books_empty_contents' => 'Brak stron lub rozdziałów w tej książce.',
+ 'books_empty_create_page' => 'Utwórz nową stronę',
+ 'books_empty_sort_current_book' => 'posortuj bieżącą książkę',
+ 'books_empty_add_chapter' => 'Dodaj rozdział',
+ 'books_permissions_active' => 'Uprawnienia książki są aktywne',
+ 'books_search_this' => 'Wyszukaj w tej książce',
+ 'books_navigation' => 'Nawigacja po książce',
+ 'books_sort' => 'Sortuj zawartość książki',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Opcja automatycznego sortowania',
+ 'books_sort_auto_sort_active' => 'Automatyczne sortowanie aktywne: :sortName',
+ 'books_sort_named' => 'Sortuj książkę :bookName',
+ 'books_sort_name' => 'Sortuj według nazwy',
+ 'books_sort_created' => 'Sortuj według daty utworzenia',
+ 'books_sort_updated' => 'Sortuj według daty modyfikacji',
+ 'books_sort_chapters_first' => 'Rozdziały na początku',
+ 'books_sort_chapters_last' => 'Rozdziały na końcu',
+ 'books_sort_show_other' => 'Pokaż inne książki',
+ 'books_sort_save' => 'Zapisz nową kolejność',
+ 'books_sort_show_other_desc' => 'Dodaj tutaj inne książki, aby uwzględnić je w operacji sortowania i umożliwić łatwą wieloksiążkową reorganizację.',
+ 'books_sort_move_up' => 'Przesuń w górę',
+ 'books_sort_move_down' => 'Przesuń w dół',
+ 'books_sort_move_prev_book' => 'Przenieś do poprzedniej książki',
+ 'books_sort_move_next_book' => 'Przenieś do następnej książki',
+ 'books_sort_move_prev_chapter' => 'Przenieś do poprzedniego rozdziału',
+ 'books_sort_move_next_chapter' => 'Przenieś do następnego rozdziału',
+ 'books_sort_move_book_start' => 'Przenieś na początek książki',
+ 'books_sort_move_book_end' => 'Przenieś na koniec książki',
+ 'books_sort_move_before_chapter' => 'Przenieś przed rozdział',
+ 'books_sort_move_after_chapter' => 'Przenieś za rozdział',
+ 'books_copy' => 'Skopiuj Książkę',
+ 'books_copy_success' => 'Książka skopiowana pomyślnie',
+
+ // Chapters
+ 'chapter' => 'Rozdział',
+ 'chapters' => 'Rozdziały',
+ 'x_chapters' => ':count Rozdział|:count Rozdziały',
+ 'chapters_popular' => 'Popularne rozdziały',
+ 'chapters_new' => 'Nowy rozdział',
+ 'chapters_create' => 'Utwórz nowy rozdział',
+ 'chapters_delete' => 'Usuń rozdział',
+ 'chapters_delete_named' => 'Usuń rozdział :chapterName',
+ 'chapters_delete_explain' => 'Spowoduje to usunięcie rozdziału o nazwie \':chapterName\'. Wszystkie strony, które istnieją w tym rozdziale, również zostaną usunięte.',
+ 'chapters_delete_confirm' => 'Czy na pewno chcesz usunąć ten rozdział?',
+ 'chapters_edit' => 'Edytuj rozdział',
+ 'chapters_edit_named' => 'Edytuj rozdział :chapterName',
+ 'chapters_save' => 'Zapisz rozdział',
+ 'chapters_move' => 'Przenieś rozdział',
+ 'chapters_move_named' => 'Przenieś rozdział :chapterName',
+ 'chapters_copy' => 'Skopiuj Rozdział',
+ 'chapters_copy_success' => 'Rozdział skopiowany pomyślnie',
+ 'chapters_permissions' => 'Uprawienia rozdziału',
+ 'chapters_empty' => 'Brak stron w tym rozdziale.',
+ 'chapters_permissions_active' => 'Uprawnienia rozdziału są aktywne',
+ 'chapters_permissions_success' => 'Zaktualizowano uprawnienia rozdziału',
+ 'chapters_search_this' => 'Przeszukaj ten rozdział',
+ 'chapter_sort_book' => 'Sortuj książkę',
+
+ // Pages
+ 'page' => 'Strona',
+ 'pages' => 'Strony',
+ 'x_pages' => ':count stron',
+ 'pages_popular' => 'Popularne strony',
+ 'pages_new' => 'Nowa strona',
+ 'pages_attachments' => 'Załączniki',
+ 'pages_navigation' => 'Nawigacja po stronie',
+ 'pages_delete' => 'Usuń stronę',
+ 'pages_delete_named' => 'Usuń stronę :pageName',
+ 'pages_delete_draft_named' => 'Usuń wersje robocze dla strony :pageName',
+ 'pages_delete_draft' => 'Usuń wersje roboczą',
+ 'pages_delete_success' => 'Strona usunięta pomyślnie',
+ 'pages_delete_draft_success' => 'Werjsa robocza usunięta pomyślnie',
+ 'pages_delete_warning_template' => 'Ta strona jest aktualnie używana jako domyślny szablon strony książki lub rozdziału. Po usunięciu tej strony te książki lub rozdziały nie będą już miały przypisanego domyślnego szablonu strony.',
+ 'pages_delete_confirm' => 'Czy na pewno chcesz usunąć tę stronę?',
+ 'pages_delete_draft_confirm' => 'Czy na pewno chcesz usunąć wersje roboczą strony?',
+ 'pages_editing_named' => 'Edytowanie strony :pageName',
+ 'pages_edit_draft_options' => 'Ustawienia wersji roboczej',
+ 'pages_edit_save_draft' => 'Zapisano wersje roboczą o ',
+ 'pages_edit_draft' => 'Edytuj wersje roboczą',
+ 'pages_editing_draft' => 'Edytowanie wersji roboczej',
+ 'pages_editing_page' => 'Edytowanie strony',
+ 'pages_edit_draft_save_at' => 'Wersja robocza zapisana ',
+ 'pages_edit_delete_draft' => 'Usuń wersje roboczą',
+ 'pages_edit_delete_draft_confirm' => 'Czy na pewno chcesz usunąć zmiany wersji roboczej? Wszystkie Twoje zmiany, od ostatniego pełnego zapisu, zostaną utracone, a edytor zostanie zaktualizowany z najnowszym stanem zapisu.',
+ 'pages_edit_discard_draft' => 'Porzuć wersje roboczą',
+ 'pages_edit_switch_to_markdown' => 'Przełącz na edytor Markdown',
+ 'pages_edit_switch_to_markdown_clean' => '(Czysta zawartość)',
+ 'pages_edit_switch_to_markdown_stable' => '(Statyczna zawartość)',
+ 'pages_edit_switch_to_wysiwyg' => 'Przełącz na edytor WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Przełącz na nowy WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(W testach beta)',
+ 'pages_edit_set_changelog' => 'Ustaw dziennik zmian',
+ 'pages_edit_enter_changelog_desc' => 'Opisz zmiany, które zostały wprowadzone',
+ 'pages_edit_enter_changelog' => 'Wyświetl dziennik zmian',
+ 'pages_editor_switch_title' => 'Przełącz edytor',
+ 'pages_editor_switch_are_you_sure' => 'Czy na pewno chcesz zmienić edytor dla tej strony?',
+ 'pages_editor_switch_consider_following' => 'Przy zmianie edytorów pamiętaj, że:',
+ 'pages_editor_switch_consideration_a' => 'Po zapisaniu nowo ustawiony edytor będzie używany przez przyszłych edytujących użytkowników, w tym również tych, którzy sami mogą nie być w stanie zmienić edytora.',
+ 'pages_editor_switch_consideration_b' => 'Może to potencjalnie prowadzić do utraty szczegółów i składni w pewnych przypadkach.',
+ 'pages_editor_switch_consideration_c' => 'Zmiany w znacznikach lub w dzienniku zmian, zrobione od ostatniego zapisu, nie zostaną zapamiętane przy tej zmianie.',
+ 'pages_save' => 'Zapisz stronę',
+ 'pages_title' => 'Tytuł strony',
+ 'pages_name' => 'Nazwa strony',
+ 'pages_md_editor' => 'Edytor',
+ 'pages_md_preview' => 'Podgląd',
+ 'pages_md_insert_image' => 'Wstaw obrazek',
+ 'pages_md_insert_link' => 'Wstaw łącze do obiektu',
+ 'pages_md_insert_drawing' => 'Wstaw rysunek',
+ 'pages_md_show_preview' => 'Pokaż podgląd',
+ 'pages_md_sync_scroll' => 'Synchronizuj przewijanie podglądu',
+ 'pages_md_plain_editor' => 'Zwykły edytor',
+ 'pages_drawing_unsaved' => 'Znaleziono niezapisany rysunek',
+ 'pages_drawing_unsaved_confirm' => 'Znaleziono niezapisane dane rysowania z poprzedniej nieudanej próby zapisu. Czy chcesz przywrócić i kontynuować edycję tego niezapisanego rysunku?',
+ 'pages_not_in_chapter' => 'Strona nie została umieszczona w rozdziale',
+ 'pages_move' => 'Przenieś stronę',
+ 'pages_copy' => 'Skopiuj stronę',
+ 'pages_copy_desination' => 'Skopiuj do',
+ 'pages_copy_success' => 'Strona została pomyślnie skopiowana',
+ 'pages_permissions' => 'Uprawnienia strony',
+ 'pages_permissions_success' => 'Zaktualizowano uprawnienia strony',
+ 'pages_revision' => 'Wersja',
+ 'pages_revisions' => 'Wersje strony',
+ 'pages_revisions_desc' => 'Poniżej wymieniono wszystkie poprzednie wersje tej strony. Możesz cofnąć się wstecz, porównać i przywrócić stare wersje stron, jeśli pozwalają na to uprawnienia. Pełna historia strony może nie być całkowicie odzwierciedlona, ponieważ w zależności od konfiguracji systemu stare wersje mogą zostać automatycznie usunięte.',
+ 'pages_revisions_named' => 'Wersje strony :pageName',
+ 'pages_revision_named' => 'Wersja strony :pageName',
+ 'pages_revision_restored_from' => 'Przywrócono z #:id; :summary',
+ 'pages_revisions_created_by' => 'Utworzona przez',
+ 'pages_revisions_date' => 'Data wersji',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Numer wersji',
+ 'pages_revisions_numbered' => 'Wersja #:id',
+ 'pages_revisions_numbered_changes' => 'Zmiany w wersji #:id',
+ 'pages_revisions_editor' => 'Typ edytora',
+ 'pages_revisions_changelog' => 'Dziennik zmian',
+ 'pages_revisions_changes' => 'Zmiany',
+ 'pages_revisions_current' => 'Obecna wersja',
+ 'pages_revisions_preview' => 'Podgląd',
+ 'pages_revisions_restore' => 'Przywróć',
+ 'pages_revisions_none' => 'Ta strona nie posiada żadnych wersji',
+ 'pages_copy_link' => 'Kopiuj link',
+ 'pages_edit_content_link' => 'Przejdź do sekcji w edytorze',
+ 'pages_pointer_enter_mode' => 'Aktywuj tryb wyboru sekcji',
+ 'pages_pointer_label' => 'Sekcja opcji strony',
+ 'pages_pointer_permalink' => 'Sekcja odnośnika strony',
+ 'pages_pointer_include_tag' => 'Sekcja taga inkludującego',
+ 'pages_pointer_toggle_link' => 'Tryb bezpośredniego linku, naciśnij aby zmienić na tryb tagu do inkludowania',
+ 'pages_pointer_toggle_include' => 'Tryb tagu do inkludowania, naciśnij aby zmienić na tryb bezpośredniego linku',
+ 'pages_permissions_active' => 'Uprawnienia strony są aktywne',
+ 'pages_initial_revision' => 'Pierwsze wydanie',
+ 'pages_references_update_revision' => 'Automatyczna aktualizacja wewnętrznych linków',
+ 'pages_initial_name' => 'Nowa strona',
+ 'pages_editing_draft_notification' => 'Edytujesz obecnie wersję roboczą, która była ostatnio zapisana :timeDiff.',
+ 'pages_draft_edited_notification' => 'Od tego czasu ta strona była zmieniana. Zalecane jest odrzucenie tej wersji roboczej.',
+ 'pages_draft_page_changed_since_creation' => 'Ta strona została zaktualizowana od czasu utworzenia tego szkicu. Zaleca się, aby odrzucić ten szkic lub nie nadpisywać żadnych zmian na stronie.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count użytkowników rozpoczęło edytowanie tej strony',
+ 'start_b' => ':userName edytuje stronę',
+ 'time_a' => 'od czasu ostatniej edycji',
+ 'time_b' => 'w ciągu ostatnich :minCount minut',
+ 'message' => ':start :time. Pamiętaj by nie nadpisywać czyichś zmian!',
+ ],
+ 'pages_draft_discarded' => 'Wersja robocza odrzucona! Edytor został ustawiony na aktualną wersję strony',
+ 'pages_draft_deleted' => 'Wersja robocza usunięta! Edytor został ustawiony na aktualną wersję strony',
+ 'pages_specific' => 'Określona strona',
+ 'pages_is_template' => 'Szablon strony',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Przełącz pasek boczny',
+ 'page_tags' => 'Tagi strony',
+ 'chapter_tags' => 'Tagi rozdziału',
+ 'book_tags' => 'Tagi książki',
+ 'shelf_tags' => 'Tagi półki',
+ 'tag' => 'Tag',
+ 'tags' => 'Tagi',
+ 'tags_index_desc' => 'Tagi mogą być stosowane do treści w systemie w celu umożliwienia elastycznej formy kategoryzacji. Tagi mogą mieć zarówno klucz, jak i wartość, przy czym wartość jest opcjonalna. Po zastosowaniu tagu treść może być wyszukana przy użyciu nazwy i wartości tagu.',
+ 'tag_name' => 'Nazwa tagu',
+ 'tag_value' => 'Wartość tagu (opcjonalnie)',
+ 'tags_explain' => "Dodaj tagi by skategoryzować zawartość. \n W celu dokładniejszej organizacji zawartości możesz dodać wartości do tagów.",
+ 'tags_add' => 'Dodaj kolejny tag',
+ 'tags_remove' => 'Usuń ten tag',
+ 'tags_usages' => 'Całkowite użycie tagów',
+ 'tags_assigned_pages' => 'Przypisane do Stron',
+ 'tags_assigned_chapters' => 'Przypisane do Rozdziałów',
+ 'tags_assigned_books' => 'Przypisane do Książek',
+ 'tags_assigned_shelves' => 'Przypisane do Półek',
+ 'tags_x_unique_values' => ':count unikalnych wartości',
+ 'tags_all_values' => 'Wszystkie wartości',
+ 'tags_view_tags' => 'Zobacz Tagi',
+ 'tags_view_existing_tags' => 'Zobacz istniejące tagi',
+ 'tags_list_empty_hint' => 'Tagi mogą być przypisane przez pasek boczny edytora strony lub podczas edycji szczegółów książki, rozdziału lub półki.',
+ 'attachments' => 'Załączniki',
+ 'attachments_explain' => 'Prześlij kilka plików lub załącz linki. Będą one widoczne na pasku bocznym strony.',
+ 'attachments_explain_instant_save' => 'Zmiany są zapisywane natychmiastowo.',
+ 'attachments_upload' => 'Dodaj plik',
+ 'attachments_link' => 'Dodaj link',
+ 'attachments_upload_drop' => 'Alternatywnie możesz przeciągnąć i upuścić plik tutaj, aby przesłać go jako załącznik.',
+ 'attachments_set_link' => 'Ustaw link',
+ 'attachments_delete' => 'Jesteś pewien, że chcesz usunąć ten załącznik?',
+ 'attachments_dropzone' => 'Upuść pliki tutaj, aby przesłać',
+ 'attachments_no_files' => 'Nie przesłano żadnych plików',
+ 'attachments_explain_link' => 'Możesz załączyć link jeśli nie chcesz przesyłać pliku. Może być to link do innej strony lub link do pliku w chmurze.',
+ 'attachments_link_name' => 'Nazwa linku',
+ 'attachment_link' => 'Link do załącznika',
+ 'attachments_link_url' => 'Link do pliku',
+ 'attachments_link_url_hint' => 'Strona lub plik',
+ 'attach' => 'Załącz',
+ 'attachments_insert_link' => 'Dodaj link do załącznika do strony',
+ 'attachments_edit_file' => 'Edytuj plik',
+ 'attachments_edit_file_name' => 'Nazwa pliku',
+ 'attachments_edit_drop_upload' => 'Upuść pliki lub kliknij tutaj by przesłać pliki i nadpisać istniejące',
+ 'attachments_order_updated' => 'Kolejność załączników zaktualizowana',
+ 'attachments_updated_success' => 'Szczegóły załączników zaktualizowane',
+ 'attachments_deleted' => 'Załącznik usunięty',
+ 'attachments_file_uploaded' => 'Plik załączony pomyślnie',
+ 'attachments_file_updated' => 'Plik zaktualizowany pomyślnie',
+ 'attachments_link_attached' => 'Link pomyślnie dodany do strony',
+ 'templates' => 'Szablony',
+ 'templates_set_as_template' => 'Strona jest szablonem',
+ 'templates_explain_set_as_template' => 'Możesz ustawić tę stronę jako szablon, tak aby jej zawartość była wykorzystywana przy tworzeniu innych stron. Inni użytkownicy będą mogli korzystać z tego szablonu, jeśli mają uprawnienia do przeglądania tej strony.',
+ 'templates_replace_content' => 'Zmień zawartość strony',
+ 'templates_append_content' => 'Dodaj do zawartośći strony na końcu',
+ 'templates_prepend_content' => 'Dodaj do zawartośći strony na początku',
+
+ // Profile View
+ 'profile_user_for_x' => 'Użytkownik od :time',
+ 'profile_created_content' => 'Utworzona zawartość',
+ 'profile_not_created_pages' => ':userName nie utworzył żadnych stron',
+ 'profile_not_created_chapters' => ':userName nie utworzył żadnych rozdziałów',
+ 'profile_not_created_books' => ':userName nie utworzył żadnych książek',
+ 'profile_not_created_shelves' => ':userName nie utworzył żadnych półek',
+
+ // Comments
+ 'comment' => 'Komentarz',
+ 'comments' => 'Komentarze',
+ 'comment_add' => 'Dodaj komentarz',
+ 'comment_none' => 'Brak komentarzy do wyświetlenia',
+ 'comment_placeholder' => 'Napisz swój komentarz tutaj',
+ 'comment_thread_count' => ':count wątek komentarza|:count wątków komentarzy',
+ 'comment_archived_count' => ':count zarchiwizowanych',
+ 'comment_archived_threads' => 'Zarchiwizowane wątki',
+ 'comment_save' => 'Zapisz komentarz',
+ 'comment_new' => 'Nowy komentarz',
+ 'comment_created' => 'Skomentowano :createDiff',
+ 'comment_updated' => 'Zaktualizowano :updateDiff przez :username',
+ 'comment_updated_indicator' => 'Zaktualizowano',
+ 'comment_deleted_success' => 'Komentarz usunięty',
+ 'comment_created_success' => 'Komentarz dodany',
+ 'comment_updated_success' => 'Komentarz zaktualizowany',
+ 'comment_archive_success' => 'Komentarz zarchiwizowany',
+ 'comment_unarchive_success' => 'Komentarz usunięty z archiwum',
+ 'comment_view' => 'Zobacz komentarz',
+ 'comment_jump_to_thread' => 'Przejdź do wątku',
+ 'comment_delete_confirm' => 'Czy na pewno chcesz usunąc ten komentarz?',
+ 'comment_in_reply_to' => 'W odpowiedzi na :commentId',
+ 'comment_reference' => 'Odwołania',
+ 'comment_reference_outdated' => '(Przestarzałe)',
+ 'comment_editor_explain' => 'Oto komentarze pozostawione na tej stronie. Komentarze mogą być dodawane i zarządzane podczas przeglądania zapisanej strony.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Czy na pewno chcesz usunąć tę wersję?',
+ 'revision_restore_confirm' => 'Czu ma pewno chcesz przywrócić tą wersję? Aktualna zawartość strony zostanie nadpisana.',
+ 'revision_cannot_delete_latest' => 'Nie można usunąć najnowszej wersji.',
+
+ // Copy view
+ 'copy_consider' => 'Kopiując, weź pod uwagę poniższe rzeczy.',
+ 'copy_consider_permissions' => 'Niestandardowe ustawienia uprawnień nie zostaną skopiowane.',
+ 'copy_consider_owner' => 'Staniesz się właścicielem całej skopiowanej zawartości.',
+ 'copy_consider_images' => 'Pliki obrazów znajdujących się na stronie nie będą zduplikowane i oryginalne obrazy zachowają swój związek ze stroną, do której zostały pierwotnie przesłane.',
+ 'copy_consider_attachments' => 'Załączniki strony nie zostaną skopiowane.',
+ 'copy_consider_access' => 'Zmiana lokalizacji, właściciela lub uprawnień może spowodować, że ta zawartość będzie dostępna dla tych, którzy wcześniej nie mieli dostępu.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Konwertuj na półkę',
+ 'convert_to_shelf_contents_desc' => 'Możesz skonwertować tę książkę do nowej półki z tą samą zawartością. Rozdziały zawarte w tej książce zostaną skonwertowane na nowe książki. Jeśli ta książka zawiera jakieś strony, które nie znajdują się w rozdziale, wtedy nazwa tej książki zostanie zmieniona i będzie ona zawierać te strony, a sama książka stanie się częścią nowej półki.',
+ 'convert_to_shelf_permissions_desc' => 'Wszelkie uprawnienia ustawione w tej książce zostaną skopiowane do nowej półki i do wszystkich nowych książek tej półki, które nie mają własnych uprawnień. Zauważ, że uprawnienia na półkach nie są automatycznie kaskadowane do ich zawartości, tak jak to ma miejsce w przypadku książek.',
+ 'convert_book' => 'Konwertuj książkę',
+ 'convert_book_confirm' => 'Czy na pewno chcesz skonwertować tę książkę?',
+ 'convert_undo_warning' => 'Nie da się tego łatwo cofnąć.',
+ 'convert_to_book' => 'Konwertuj na książkę',
+ 'convert_to_book_desc' => 'Możesz skonwertować ten rozdział do nowej książki o tej samej treści. Wszelkie uprawnienia ustawione w tym rozdziale zostaną skopiowane do nowej książki, ale wszelkie dziedziczone uprawnienia z poprzedniej nadrzędnej książki nie będą skopiowane, co może doprowadzić do zmiany w kontroli dostępu.',
+ 'convert_chapter' => 'Konwertuj rozdział',
+ 'convert_chapter_confirm' => 'Czy na pewno chcesz skonwertować ten rozdział?',
+
+ // References
+ 'references' => 'Odniesienia',
+ 'references_none' => 'Brak śledzonych odwołań do tego elementu.',
+ 'references_to_desc' => 'Wymienione poniżej są wszystkie znane treści w systemie, które nawiązują do tego elementu.',
+
+ // Watch Options
+ 'watch' => 'Obserwuj',
+ 'watch_title_default' => 'Domyślne ustawienia',
+ 'watch_desc_default' => 'Przywróć do tylko domyślnych ustawień powiadomień.',
+ 'watch_title_ignore' => 'Ignoruj',
+ 'watch_desc_ignore' => 'Ignoruj wszystkie powiadomienia, w tym te z preferencji użytkownika.',
+ 'watch_title_new' => 'Nowe strony',
+ 'watch_desc_new' => 'Powiadom o utworzeniu nowej strony w tym elemencie.',
+ 'watch_title_updates' => 'Wszystkie aktualizacje strony',
+ 'watch_desc_updates' => 'Powiadom o wszystkich nowych stronach i zmianach strony.',
+ 'watch_desc_updates_page' => 'Powiadom o wszystkich zmianach strony.',
+ 'watch_title_comments' => 'Wszystkie aktualizacje strony i komentarze',
+ 'watch_desc_comments' => 'Powiadom o wszystkich nowych stronach, zmianach na stronie i nowych komentarzach.',
+ 'watch_desc_comments_page' => 'Powiadom o zmianach strony i nowych komentarzach.',
+ 'watch_change_default' => 'Zmień domyślne ustawienia powiadomień',
+ 'watch_detail_ignore' => 'Ignorowanie powiadomień',
+ 'watch_detail_new' => 'Obserwowanie nowych stron',
+ 'watch_detail_updates' => 'Obserwowanie nowych stron i aktualizacji',
+ 'watch_detail_comments' => 'Obserwowanie nowych stron, aktualizacji i komentarzy',
+ 'watch_detail_parent_book' => 'Obserwowanie przez książkę nadrzędną',
+ 'watch_detail_parent_book_ignore' => 'Ignorowanie przez książkę nadrzędną',
+ 'watch_detail_parent_chapter' => 'Obserwowanie przez rozdział nadrzędny',
+ 'watch_detail_parent_chapter_ignore' => 'Ignorowanie przez rozdział nadrzędny',
+];
diff --git a/lang/pl/errors.php b/lang/pl/errors.php
new file mode 100644
index 00000000000..244913cac42
--- /dev/null
+++ b/lang/pl/errors.php
@@ -0,0 +1,135 @@
+ 'Nie masz uprawnień do wyświetlenia tej strony.',
+ 'permissionJson' => 'Nie masz uprawnień do wykonania tej akcji.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Użytkownik o adresie :email już istnieje, ale używa innych poświadczeń.',
+ 'auth_pre_register_theme_prevention' => 'Konto użytkownika nie może być zarejestrowane z podanymi danymi',
+ 'email_already_confirmed' => 'E-mail został potwierdzony, spróbuj się zalogować.',
+ 'email_confirmation_invalid' => 'Ten token jest nieprawidłowy lub został już wykorzystany. Spróbuj zarejestrować się ponownie.',
+ 'email_confirmation_expired' => 'Ten token potwierdzający wygasł. Wysłaliśmy Ci kolejny.',
+ 'email_confirmation_awaiting' => 'Adres e-mail dla używanego konta musi zostać potwierdzony',
+ 'ldap_fail_anonymous' => 'Dostęp LDAP przy użyciu anonimowego powiązania nie powiódł się',
+ 'ldap_fail_authed' => 'Dostęp LDAP przy użyciu tego DN i hasła nie powiódł się',
+ 'ldap_extension_not_installed' => 'Rozszerzenie LDAP PHP nie zostało zainstalowane',
+ 'ldap_cannot_connect' => 'Nie można połączyć z serwerem LDAP, połączenie nie zostało ustanowione',
+ 'saml_already_logged_in' => 'Już zalogowany',
+ 'saml_no_email_address' => 'Nie można odnaleźć adresu email dla tego użytkownika w danych dostarczonych przez zewnętrzny system uwierzytelniania',
+ 'saml_invalid_response_id' => 'Żądanie z zewnętrznego systemu uwierzytelniania nie zostało rozpoznane przez proces rozpoczęty przez tę aplikację. Cofnięcie po zalogowaniu mogło spowodować ten problem.',
+ 'saml_fail_authed' => 'Logowanie przy użyciu :system nie powiodło się, system nie mógł pomyślnie ukończyć uwierzytelniania',
+ 'oidc_already_logged_in' => 'Już zalogowany',
+ 'oidc_no_email_address' => 'Nie można odnaleźć adresu email dla tego użytkownika w danych dostarczonych przez zewnętrzny system uwierzytelniania',
+ 'oidc_fail_authed' => 'Logowanie przy użyciu :system nie powiodło się, system nie mógł pomyślnie ukończyć uwierzytelniania',
+ 'social_no_action_defined' => 'Brak zdefiniowanej akcji',
+ 'social_login_bad_response' => "Podczas próby logowania :socialAccount wystąpił błąd: \n:error",
+ 'social_account_in_use' => 'To konto :socialAccount jest już w użyciu. Spróbuj zalogować się za pomocą opcji :socialAccount.',
+ 'social_account_email_in_use' => 'E-mail :email jest już w użyciu. Jeśli masz już konto, połącz konto :socialAccount z poziomu ustawień profilu.',
+ 'social_account_existing' => 'Konto :socialAccount jest już połączone z Twoim profilem',
+ 'social_account_already_used_existing' => 'Konto :socialAccount jest już używane przez innego użytkownika.',
+ 'social_account_not_used' => 'To konto :socialAccount nie jest połączone z żadnym użytkownikiem. Połącz je ze swoim kontem w ustawieniach profilu. ',
+ 'social_account_register_instructions' => 'Jeśli nie masz jeszcze konta, możesz zarejestrować je używając opcji :socialAccount.',
+ 'social_driver_not_found' => 'Funkcja społecznościowa nie została odnaleziona',
+ 'social_driver_not_configured' => 'Ustawienia konta :socialAccount nie są poprawne.',
+ 'invite_token_expired' => 'Zaproszenie wygasło. Możesz spróować zresetować swoje hasło.',
+ 'login_user_not_found' => 'Użytkownik dla tej akcji nie został znaleziony.',
+
+ // System
+ 'path_not_writable' => 'Zapis do ścieżki :filePath jest niemożliwy. Upewnij się że aplikacja ma prawa do zapisu plików na serwerze.',
+ 'cannot_get_image_from_url' => 'Nie można pobrać obrazka z :url',
+ 'cannot_create_thumbs' => 'Serwer nie może utworzyć miniaturek. Upewnij się że rozszerzenie GD PHP zostało zainstalowane.',
+ 'server_upload_limit' => 'Serwer nie pozwala na przyjęcie pliku o tym rozmiarze. Spróbuj przesłać plik o mniejszym rozmiarze.',
+ 'server_post_limit' => 'Serwer nie może przyjąć tej ilości danych. Spróbuj ponownie z mniejszą ilością danych lub mniejszym plikiem.',
+ 'uploaded' => 'Serwer nie pozwala na przyjęcie pliku o tym rozmiarze. Spróbuj przesłać plik o mniejszym rozmiarze.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Wystąpił błąd podczas przesyłania obrazka',
+ 'image_upload_type_error' => 'Typ przesłanego obrazka jest nieprwidłowy.',
+ 'image_upload_replace_type' => 'Zamienniki plików graficznych muszą być tego samego typu',
+ 'image_upload_memory_limit' => 'Nie udało się obsłużyć przesyłania zdjęć i/lub tworzenia miniatur ze względu na limity zasobów systemowych.',
+ 'image_thumbnail_memory_limit' => 'Nie udało się utworzyć wariantów rozmiaru obrazu ze względu na limity zasobów systemowych.',
+ 'image_gallery_thumbnail_memory_limit' => 'Nie udało się utworzyć miniatur galerii ze względu na limity zasobów systemowych.',
+ 'drawing_data_not_found' => 'Nie można załadować danych rysunku. Plik rysunku może już nie istnieć lub nie masz uprawnień dostępu do niego.',
+
+ // Attachments
+ 'attachment_not_found' => 'Nie znaleziono załącznika',
+ 'attachment_upload_error' => 'Wystąpił błąd podczas przesyłania pliku załącznika',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Zapis wersji roboczej nie powiódł się. Upewnij się, że posiadasz połączenie z internetem.',
+ 'page_draft_delete_fail' => 'Nie udało się usunąć wersji roboczej strony i pobrać bieżącej zawartości strony',
+ 'page_custom_home_deletion' => 'Nie można usunąć strony, jeśli jest ona ustawiona jako strona główna',
+
+ // Entities
+ 'entity_not_found' => 'Nie znaleziono obiektu',
+ 'bookshelf_not_found' => 'Nie znaleziono półki',
+ 'book_not_found' => 'Nie znaleziono książki',
+ 'page_not_found' => 'Nie znaleziono strony',
+ 'chapter_not_found' => 'Nie znaleziono rozdziału',
+ 'selected_book_not_found' => 'Wybrana książka nie została znaleziona',
+ 'selected_book_chapter_not_found' => 'Wybrana książka lub rozdział nie został znaleziony',
+ 'guests_cannot_save_drafts' => 'Goście nie mogą zapisywać wersji roboczych',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Nie możesz usunąć jedynego administratora',
+ 'users_cannot_delete_guest' => 'Nie możesz usunąć użytkownika-gościa',
+ 'users_could_not_send_invite' => 'Nie można utworzyć użytkownika, ponieważ nie udało się wysłać wiadomości e-mail z zaproszeniem',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Ta rola nie może być edytowana',
+ 'role_system_cannot_be_deleted' => 'Ta rola jest rolą systemową i nie może zostać usunięta',
+ 'role_registration_default_cannot_delete' => 'Ta rola nie może zostać usunięta, dopóki jest ustawiona jako domyślna rola użytkownika',
+ 'role_cannot_remove_only_admin' => 'Ten użytkownik jest jedynym użytkownikiem przypisanym do roli administratora. Przypisz rolę administratora innemu użytkownikowi przed próbą usunięcia.',
+
+ // Comments
+ 'comment_list' => 'Wystąpił błąd podczas pobierania komentarzy.',
+ 'cannot_add_comment_to_draft' => 'Nie możesz dodawać komentarzy do wersji roboczej.',
+ 'comment_add' => 'Wystąpił błąd podczas dodwania / aktualizaowania komentarza.',
+ 'comment_delete' => 'Wystąpił błąd podczas usuwania komentarza.',
+ 'empty_comment' => 'Nie można dodać pustego komentarza.',
+
+ // Error pages
+ '404_page_not_found' => 'Strona nie została znaleziona',
+ 'sorry_page_not_found' => 'Przepraszamy, ale strona której szukasz nie została znaleziona.',
+ 'sorry_page_not_found_permission_warning' => 'Jeśli spodziewałeś się, że ta strona istnieje, prawdopodobnie nie masz uprawnień do jej wyświetlenia.',
+ 'image_not_found' => 'Nie znaleziono obrazu',
+ 'image_not_found_subtitle' => 'Przepraszamy, ale obraz którego szukasz nie został znaleziony.',
+ 'image_not_found_details' => 'Jeśli spodziewałeś się, że ten obraz istnieje, mógł on zostać usunięty.',
+ 'return_home' => 'Powrót do strony głównej',
+ 'error_occurred' => 'Wystąpił błąd',
+ 'app_down' => ':appName jest aktualnie wyłączona',
+ 'back_soon' => 'Niedługo zostanie uruchomiona ponownie.',
+
+ // Import
+ 'import_zip_cant_read' => 'Nie można odczytać archiwum ZIP.',
+ 'import_zip_cant_decode_data' => 'Nie udało się odnaleźć i dekodować pliku data.json w zawartości archiwum ZIP.',
+ 'import_zip_no_data' => 'Dane archiwum ZIP nie zawierają oczekiwanej zawartości książki, rozdziału lub strony.',
+ 'import_zip_data_too_large' => 'Zawartość pliku data.json w archiwum ZIP przekracza maksymalny dopuszczalny rozmiar narzucony przez aktualną konfigurację aplikacji.',
+ 'import_validation_failed' => 'Walidacja importu archiwum ZIP nie powiodła się z błędami:',
+ 'import_zip_failed_notification' => 'Nie udało się zaimportować archiwum ZIP.',
+ 'import_perms_books' => 'Brakuje Ci wymaganych uprawnień do tworzenia książek.',
+ 'import_perms_chapters' => 'Brakuje Ci wymaganych uprawnień do tworzenia rozdziałów.',
+ 'import_perms_pages' => 'Brakuje Ci wymaganych uprawnień do tworzenia stron.',
+ 'import_perms_images' => 'Brakuje Ci wymaganych uprawnień do tworzenia zdjęć.',
+ 'import_perms_attachments' => 'Brakuje Ci wymaganych uprawnień do tworzenia załączników.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Nie znaleziono tokenu autoryzacji dla żądania',
+ 'api_bad_authorization_format' => 'Token autoryzacji został znaleziony w żądaniu, ale format okazał się nieprawidłowy',
+ 'api_user_token_not_found' => 'Nie znaleziono pasującego tokenu API dla podanego tokenu autoryzacji',
+ 'api_incorrect_token_secret' => 'Podany sekret dla tego API jest nieprawidłowy',
+ 'api_user_no_api_permission' => 'Właściciel używanego tokenu API nie ma uprawnień do wykonywania zapytań do API',
+ 'api_user_token_expired' => 'Token uwierzytelniania wygasł',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Błąd podczas wysyłania testowej wiadomości e-mail:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'Adres URL nie pasuje do skonfigurowanych dozwolonych hostów SSR',
+];
diff --git a/lang/pl/notifications.php b/lang/pl/notifications.php
new file mode 100644
index 00000000000..937db084fae
--- /dev/null
+++ b/lang/pl/notifications.php
@@ -0,0 +1,29 @@
+ 'Nowy komentarz na stronie: :pageName',
+ 'new_comment_intro' => 'Użytkownik skomentował stronę w :appName:',
+ 'new_page_subject' => 'Nowa strona: :pageName',
+ 'new_page_intro' => 'Nowa strona została utworzona w :appName:',
+ 'updated_page_subject' => 'Zaktualizowano stronę: :pageName',
+ 'updated_page_intro' => 'Strona została zaktualizowana w :appName:',
+ 'updated_page_debounce' => 'Aby zapobiec nadmiarowi powiadomień, przez jakiś czas nie będziesz otrzymywać powiadomień o dalszych edycjach tej strony przez tego samego edytora.',
+ 'comment_mention_subject' => 'Zostałeś oznaczony w komentarzu na stronie: :pageName',
+ 'comment_mention_intro' => 'Zostałeś oznaczony w komentarzu w :appName:',
+
+ 'detail_page_name' => 'Nazwa strony:',
+ 'detail_page_path' => 'Ścieżka strony:',
+ 'detail_commenter' => 'Skomentował:',
+ 'detail_comment' => 'Komentarz:',
+ 'detail_created_by' => 'Utworzono przez:',
+ 'detail_updated_by' => 'Zaktualizowano przez:',
+
+ 'action_view_comment' => 'Pokaż komentarz',
+ 'action_view_page' => 'Wyświetl stronę',
+
+ 'footer_reason' => 'To powiadomienie zostało wysłane do Ciebie, ponieważ :link obejmuje ten typ aktywności dla tego elementu.',
+ 'footer_reason_link' => 'ustawienia powiadomień',
+];
diff --git a/resources/lang/pl/pagination.php b/lang/pl/pagination.php
similarity index 100%
rename from resources/lang/pl/pagination.php
rename to lang/pl/pagination.php
diff --git a/resources/lang/pl/passwords.php b/lang/pl/passwords.php
similarity index 100%
rename from resources/lang/pl/passwords.php
rename to lang/pl/passwords.php
diff --git a/lang/pl/preferences.php b/lang/pl/preferences.php
new file mode 100644
index 00000000000..5a308002cca
--- /dev/null
+++ b/lang/pl/preferences.php
@@ -0,0 +1,52 @@
+ 'Moje konto',
+
+ 'shortcuts' => 'Skróty',
+ 'shortcuts_interface' => 'Ustawienia skrótów interfejsu użytkownika',
+ 'shortcuts_toggle_desc' => 'Tutaj możesz włączyć lub wyłączyć interfejs skrótów klawiszowych używanych do nawigacji i akcji.',
+ 'shortcuts_customize_desc' => 'Możesz dostosować każdy z poniższych skrótów. Wystarczy nacisnąć wybraną kombinację klawiszy po wybraniu wprowadzania dla danego skrótu.',
+ 'shortcuts_toggle_label' => 'Skróty klawiszowe włączone',
+ 'shortcuts_section_navigation' => 'Nawigacja',
+ 'shortcuts_section_actions' => 'Częste działania',
+ 'shortcuts_save' => 'Zapisz skróty',
+ 'shortcuts_overlay_desc' => 'Uwaga: Gdy skróty są włączone, przez naciśnięcie "?" może być otworzona nakładka pomocnicza, która podświetli dostępne skróty dla akcji widocznych obecnie na ekranie.',
+ 'shortcuts_update_success' => 'Ustawienia skrótów zostały zaktualizowane!',
+ 'shortcuts_overview_desc' => 'Zarządzaj skrótami klawiaturowymi, które możesz użyć do nawigacji interfejsu użytkownika systemu.',
+
+ 'notifications' => 'Preferencje powiadomień',
+ 'notifications_desc' => 'Kontroluj otrzymywane powiadomienia e-mail, gdy określona aktywność jest wykonywana w systemie.',
+ 'notifications_opt_own_page_changes' => 'Powiadom o zmianach na stronach, których jestem właścicielem',
+ 'notifications_opt_own_page_comments' => 'Powiadom o komentarzach na stronach, których jestem właścicielem',
+ 'notifications_opt_comment_mentions' => 'Powiadom, kiedy zostanę oznaczony w komentarzu',
+ 'notifications_opt_comment_replies' => 'Powiadom o odpowiedziach na moje komentarze',
+ 'notifications_save' => 'Zapisz preferencje',
+ 'notifications_update_success' => 'Preferencje powiadomień zostały zaktualizowane!',
+ 'notifications_watched' => 'Obserwowane i ignorowane elementy',
+ 'notifications_watched_desc' => 'Poniżej znajdują się elementy, które mają własne preferencje obserwowania. Aby zaktualizować swoje preferencje, zobacz dany element, a następnie znajdź opcje obserwowania na pasku bocznym.',
+
+ 'auth' => 'Dostęp i bezpieczeństwo',
+ 'auth_change_password' => 'Zmień hasło',
+ 'auth_change_password_desc' => 'Zmień hasło logowania do aplikacji. Hasło musi mieć minimum 8 znaków.',
+ 'auth_change_password_success' => 'Hasło zostało zaktualizowane!',
+
+ 'profile' => 'Szczegóły profilu',
+ 'profile_desc' => 'Zarządzaj szczegółami swojego konta, które widzą inni użytkownicy, oprócz danych używanych do komunikacji i personalizacji systemu.',
+ 'profile_view_public' => 'Zobacz profil publiczny',
+ 'profile_name_desc' => 'Skonfiguruj wyświetlaną nazwę, która będzie widoczna dla innych użytkowników systemu poprzez wykonywane zadania i posiadaną treść.',
+ 'profile_email_desc' => 'Ten e-mail będzie używany do powiadomień, a w zależności od wybranego sposobu uwierzytelniania, również do dostępu do systemu.',
+ 'profile_email_no_permission' => 'Niestety nie masz uprawnień do zmiany adresu e-mail. Jeśli chcesz to zmienić, musisz poprosić administratora, aby zrobił to za ciebie.',
+ 'profile_avatar_desc' => 'Wybierz obraz, który będzie cię reprezentował wśród innych w systemie. Obraz powinien być kwadratem o długości boku około 256 pikseli.',
+ 'profile_admin_options' => 'Opcje administratora',
+ 'profile_admin_options_desc' => 'Dodatkowe opcje na poziomie administratora dla twojego konta, takie jak zarządzanie przydzielaniem ról można znaleźć w sekcji "Ustawienia > Użytkownicy".',
+
+ 'delete_account' => 'Usuń konto',
+ 'delete_my_account' => 'Usuń moje konto',
+ 'delete_my_account_desc' => 'Spowoduje to całkowite usunięcie twojego konta z systemu. Nie będziesz miał możliwości odzyskania konta lub cofnięcia tej czynności. Stworzona przez Ciebie zawartość, taka jak utworzone strony i przesłane obrazy, pozostanie niezmieniona.',
+ 'delete_my_account_warning' => 'Jesteś pewny, że chcesz usunąć swoje konto?',
+];
diff --git a/lang/pl/settings.php b/lang/pl/settings.php
new file mode 100644
index 00000000000..775d4f25d2c
--- /dev/null
+++ b/lang/pl/settings.php
@@ -0,0 +1,374 @@
+ 'Ustawienia',
+ 'settings_save' => 'Zapisz ustawienia',
+ 'system_version' => 'Wersja Systemu',
+ 'categories' => 'Kategorie',
+
+ // App Settings
+ 'app_customization' => 'Dostosowywanie',
+ 'app_features_security' => 'Funkcje i bezpieczeństwo',
+ 'app_name' => 'Nazwa aplikacji',
+ 'app_name_desc' => 'Ta nazwa jest wyświetlana w nagłówku i e-mailach.',
+ 'app_name_header' => 'Pokaż nazwę aplikacji w nagłówku',
+ 'app_public_access' => 'Dostęp publiczny',
+ 'app_public_access_desc' => 'Włączenie tej opcji umożliwi niezalogowanym odwiedzającym dostęp do treści w Twojej instancji BookStack.',
+ 'app_public_access_desc_guest' => 'Dostęp dla niezalogowanych odwiedzających jest kontrolowany poprzez użytkownika "Guest".',
+ 'app_public_access_toggle' => 'Zezwalaj na dostęp publiczny',
+ 'app_public_viewing' => 'Zezwolić na publiczne przeglądanie?',
+ 'app_secure_images' => 'Bezpieczniejsze przesyłanie obrazów',
+ 'app_secure_images_toggle' => 'Włącz wyższy poziom bezpieczeństwa dla obrazów',
+ 'app_secure_images_desc' => 'Ze względu na wydajność systemu wszystkie obrazki są publiczne. Ta opcja dodaje trudny do odgadnięcia losowy ciąg znaków na początku nazwy obrazka. Upewnij się, że indeksowanie katalogów jest wyłączone, aby uniemożliwić łatwy dostęp do obrazków.',
+ 'app_default_editor' => 'Domyślny edytor stron',
+ 'app_default_editor_desc' => 'Wybierz, który edytor będzie domyślnie używany podczas edycji nowych stron. Może to być nadpisane na poziomie strony, na którym pozwalają na to uprawnienia.',
+ 'app_custom_html' => 'Własna zawartość w tagu ',
+ 'app_custom_html_desc' => 'Zawartość dodana tutaj zostanie dołączona na dole sekcji każdej strony. Przydatne przy nadpisywaniu styli lub dodawaniu analityki.',
+ 'app_custom_html_disabled_notice' => 'Niestandardowa zawartość nagłówka HTML jest wyłączona na tej stronie ustawień aby zapewnić, że wszystkie błedne zmiany (braking change) mogą zostać cofnięte.',
+ 'app_logo' => 'Logo aplikacji',
+ 'app_logo_desc' => 'Jest używany między innymi w pasku nagłówka aplikacji. Ten obraz powinien mieć wysokość 86px. Duże obrazy zostaną przeskalowane w dół.',
+ 'app_icon' => 'Ikona aplikacji',
+ 'app_icon_desc' => 'Ta ikona jest używana w zakładkach przeglądarki i ikonach skrótu. Powinien to być obraz PNG o wymiarach 256px.',
+ 'app_homepage' => 'Strona główna',
+ 'app_homepage_desc' => 'Wybierz widok, który będzie wyświetlany na stronie głównej zamiast w widoku domyślnego. Uprawnienia dostępowe są ignorowane dla wybranych stron.',
+ 'app_homepage_select' => 'Wybierz stronę',
+ 'app_footer_links' => 'Linki w stopce',
+ 'app_footer_links_desc' => 'Dodaj linki do pokazania w stopce witryny. Będą one wyświetlane na dole większości stron, włącznie z tymi, które nie wymagają logowania. Możesz użyć etykiety "trans::" aby użyć tłumaczeń zdefiniowanych przez system. Na przykład: Używanie "trans::common.privacy_policy" zapewni przetłumaczony tekst "Polityka prywatności" i "trans::common.terms_of_service" zapewni przetłumaczony tekst "Warunki korzystania z usługi".',
+ 'app_footer_links_label' => 'Etykieta linku',
+ 'app_footer_links_url' => 'URL odnośnika',
+ 'app_footer_links_add' => 'Dodaj link w stopce',
+ 'app_disable_comments' => 'Wyłącz komentarze',
+ 'app_disable_comments_toggle' => 'Wyłącz komentowanie',
+ 'app_disable_comments_desc' => 'Wyłącz komentarze na wszystkich stronach w aplikacji. Istniejące komentarze nie będą pokazywane.',
+
+ // Color settings
+ 'color_scheme' => 'Schemat kolorów aplikacji',
+ 'color_scheme_desc' => 'Ustaw kolory używane w interfejsie aplikacji. Kolory można skonfigurować oddzielnie dla trybu ciemnego i jasnego, aby najlepiej pasowały do motywu i zapewniały czytelność.',
+ 'ui_colors_desc' => 'Ustaw podstawowy kolor aplikacji i domyślny kolor linku. Podstawowy kolor jest używany głównie w banerze aplikacji, przyciskach i interfejsie. Domyślny kolor linku jest używany dla tekstowych linków i akcji, zarówno w napisanych treściach, jak i w interfejsie aplikacji.',
+ 'app_color' => 'Kolor podstawowy',
+ 'link_color' => 'Domyślny kolor linku',
+ 'content_colors_desc' => 'Ustaw kolory dla wszystkich elementów w hierarchii organizacji stron. Wybór kolorów o jasności podobnej do domyślnych kolorów jest zalecany dla czytelności.',
+ 'bookshelf_color' => 'Kolor półki',
+ 'book_color' => 'Kolor książki',
+ 'chapter_color' => 'Kolor rozdziału',
+ 'page_color' => 'Kolor strony',
+ 'page_draft_color' => 'Kolor szkicu strony',
+
+ // Registration Settings
+ 'reg_settings' => 'Ustawienia rejestracji',
+ 'reg_enable' => 'Włącz rejestrację',
+ 'reg_enable_toggle' => 'Włącz rejestrację',
+ 'reg_enable_desc' => 'Przy włączonej rejestracji użytkownicy będą w stanie samodzielnie założyć sobie konto w systemie. Po rejestracji automatycznie otrzymają domyślną rolę.',
+ 'reg_default_role' => 'Domyślna rola użytkownika po rejestracji',
+ 'reg_enable_external_warning' => 'Powyższa opcja jest ignorowana, gdy zewnętrzne uwierzytelnianie LDAP lub SAML jest aktywne. Konta użytkowników dla nieistniejących użytkowników zostaną automatycznie utworzone, jeśli uwierzytelnianie za pomocą systemu zewnętrznego zakończy się sukcesem.',
+ 'reg_email_confirmation' => 'Potwierdzenie adresu email',
+ 'reg_email_confirmation_toggle' => 'Wymagaj potwierdzenia adresu email',
+ 'reg_confirm_email_desc' => 'Jeśli restrykcje domenowe zostały ustawione, potwierdzenie adresu email stanie się konieczne i ta opcja zostanie zignorowana.',
+ 'reg_confirm_restrict_domain' => 'Restrykcje domenowe',
+ 'reg_confirm_restrict_domain_desc' => 'Wprowadź listę domen adresów email, rozdzieloną przecinkami, którym chciałbyś zezwolić na rejestrację. Wymusi to konieczność potwierdzenia adresu e-mail przez użytkownika przed uzyskaniem dostępu do aplikacji. Pamiętaj, że użytkownicy będą mogli zmienić adres e-mail po rejestracji.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Brak restrykcji',
+
+ // Sorting Settings
+ 'sorting' => 'Listy i sortowanie',
+ 'sorting_book_default' => 'Domyślna reguła sortowania książek',
+ 'sorting_book_default_desc' => 'Wybierz domyślną regułę sortowania dla nowych książek. To nie wpłynie na istniejące książki i może być nadpisane per książka.',
+ 'sorting_rules' => 'Reguły sortowania',
+ 'sorting_rules_desc' => 'Są to wstępnie zdefiniowane operacje sortowania, które mogą być stosowane do treści w systemie.',
+ 'sort_rule_assigned_to_x_books' => 'Przypisane do :count książki|Przypisane do :count książek',
+ 'sort_rule_create' => 'Utwórz regułę sortowania',
+ 'sort_rule_edit' => 'Edytuj regułę sortowania',
+ 'sort_rule_delete' => 'Usuń regułę sortowania',
+ 'sort_rule_delete_desc' => 'Usuń tę regułę sortowania z systemu. Książki używające tej reguły powrócą do ręcznego sortowania.',
+ 'sort_rule_delete_warn_books' => 'Ta reguła sortowania jest obecnie używana na :count książkach. Czy na pewno chcesz ją usunąć?',
+ 'sort_rule_delete_warn_default' => 'Ta reguła sortowania jest obecnie używana jako domyślna dla książek. Czy na pewno chcesz ją usunąć?',
+ 'sort_rule_details' => 'Szczegóły reguły sortowania',
+ 'sort_rule_details_desc' => 'Ustaw nazwę dla tej reguły sortowania, która pojawi się na listach, gdy użytkownicy skorzystają z sortowania.',
+ 'sort_rule_operations' => 'Operacje sortowania',
+ 'sort_rule_operations_desc' => 'Skonfiguruj akcje sortowanie do wykonania, przenosząc je z listy dostępnych operacji. Po użyciu operacje zostaną zastosowane w kolejności od góry do dołu. Wszelkie zmiany wprowadzone tutaj zostaną zastosowane do wszystkich przypisanych książek po zapisaniu.',
+ 'sort_rule_available_operations' => 'Dostępne operacje',
+ 'sort_rule_available_operations_empty' => 'Brak pozostałych operacji',
+ 'sort_rule_configured_operations' => 'Skonfigurowane operacje',
+ 'sort_rule_configured_operations_empty' => 'Przeciągnij/dodaj operacje z listy "Dostępne Operacje"',
+ 'sort_rule_op_asc' => '(rosnąco)',
+ 'sort_rule_op_desc' => '(malejąco)',
+ 'sort_rule_op_name' => 'Nazwa — alfabetycznie',
+ 'sort_rule_op_name_numeric' => 'Nazwa — numerycznie',
+ 'sort_rule_op_created_date' => 'Data utworzenia',
+ 'sort_rule_op_updated_date' => 'Data aktualizacji',
+ 'sort_rule_op_chapters_first' => 'Rozdziały na początku',
+ 'sort_rule_op_chapters_last' => 'Rozdziały na końcu',
+ 'sorting_page_limits' => 'Limity wyświetlania per strona',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Konserwacja',
+ 'maint_image_cleanup' => 'Czyszczenie obrazków',
+ 'maint_image_cleanup_desc' => 'Skanuje zawartość strony i poprzednie wersje, aby sprawdzić, które obrazy i rysunki są aktualnie używane, a które obrazy są zbędne. Przed uruchomieniem tej opcji należy utworzyć pełną kopię zapasową bazy danych i obrazków.',
+ 'maint_delete_images_only_in_revisions' => 'Usuń również obrazy, które istnieją tylko w starych rewizjach strony',
+ 'maint_image_cleanup_run' => 'Uruchom czyszczenie',
+ 'maint_image_cleanup_warning' => 'Znaleziono :count potencjalnie niepotrzebnych obrazków. Czy na pewno chcesz je usunąć?',
+ 'maint_image_cleanup_success' => ':count potencjalnie nieużywane obrazki zostały znalezione i usunięte!',
+ 'maint_image_cleanup_nothing_found' => 'Nie znaleziono żadnych nieużywanych obrazków. Nic nie zostało usunięte!',
+ 'maint_send_test_email' => 'Wyślij testową wiadomość e-mail',
+ 'maint_send_test_email_desc' => 'Ta opcja wyśle wiadomość testową na adres e-mail podany w Twoim profilu.',
+ 'maint_send_test_email_run' => 'Wyślij testową wiadomość e-mail',
+ 'maint_send_test_email_success' => 'E-mail wysłany na adres :address',
+ 'maint_send_test_email_mail_subject' => 'E-mail testowy',
+ 'maint_send_test_email_mail_greeting' => 'Wygląda na to, że wysyłka wiadomości e-mail działa!',
+ 'maint_send_test_email_mail_text' => 'Gratulacje! Otrzymałeś tego e-maila więc Twoje ustawienia poczty elektronicznej wydają się być prawidłowo skonfigurowane.',
+ 'maint_recycle_bin_desc' => 'Usunięte półki, książki, rozdziały i strony są wysyłane do kosza, aby mogły zostać przywrócone lub trwale usunięte. Starsze przedmioty w koszu mogą zostać automatycznie usunięte po pewnym czasie w zależności od konfiguracji systemu.',
+ 'maint_recycle_bin_open' => 'Otwórz kosz',
+ 'maint_regen_references' => 'Zregeneruj odniesienia',
+ 'maint_regen_references_desc' => 'Ta akcja przebuduje bazodanowy indeks referencji między pozycjami. Zazwyczaj jest to obsługiwane automatycznie, jednak ta akcja wciąż może być przydatna do indeksowania starej zawartości, lub dodanej nieoficjalnymi metodami.',
+ 'maint_regen_references_success' => 'Indeks referencji został zregenerowany!',
+ 'maint_timeout_command_note' => 'Uwaga: Ta akcja potrzebuje czasu na wykonanie, co może prowadzić do problemów z limitami czasu utrzymywania połączenia w niektórych środowiskach webowych. Alternatywnie ta akcja może być wykonana z użyciem polecenia terminalowego.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Kosz',
+ 'recycle_bin_desc' => 'Tutaj możesz przywrócić elementy, które zostały usunięte lub usunąć je z systemu. Ta lista jest niefiltrowana w odróżnieniu od podobnych list aktywności w systemie, w którym stosowane są filtry uprawnień.',
+ 'recycle_bin_deleted_item' => 'Usunięta pozycja',
+ 'recycle_bin_deleted_parent' => 'Nadrzędny',
+ 'recycle_bin_deleted_by' => 'Usunięty przez',
+ 'recycle_bin_deleted_at' => 'Czas usunięcia',
+ 'recycle_bin_permanently_delete' => 'Usuń trwale',
+ 'recycle_bin_restore' => 'Przywróć',
+ 'recycle_bin_contents_empty' => 'Kosz jest pusty',
+ 'recycle_bin_empty' => 'Opróżnij kosz',
+ 'recycle_bin_empty_confirm' => 'To na stałe zniszczy wszystkie przedmioty w koszu, w tym zawartość w każdym elemencie. Czy na pewno chcesz opróżnić kosz?',
+ 'recycle_bin_destroy_confirm' => 'Ta akcja trwale usunie ten element z systemu, wraz z elementami podrzędnymi wymienionymi poniżej i nie będziesz już mógł przywrócić tej zawartości. Czy na pewno chcesz trwale usunąć ten element?',
+ 'recycle_bin_destroy_list' => 'Elementy do usunięcia',
+ 'recycle_bin_restore_list' => 'Elementy do przywrócenia',
+ 'recycle_bin_restore_confirm' => 'Ta akcja przywróci usunięty element, w tym elementy podrzędne, do ich oryginalnej lokalizacji. Jeśli oryginalna lokalizacja została od tego czasu usunięta, a teraz znajduje się w koszu, element nadrzędny będzie również musiał zostać przywrócony.',
+ 'recycle_bin_restore_deleted_parent' => 'Usunięto również nadrzędny element. Zostaną one usunięte, dopóki nie przywróci się tego nadrzędnego elementu.',
+ 'recycle_bin_restore_parent' => 'Przywróć nadrzędne',
+ 'recycle_bin_destroy_notification' => 'Usunięto :count przedmiotów z kosza.',
+ 'recycle_bin_restore_notification' => 'Przywrócono :count przedmiotów z kosza.',
+
+ // Audit Log
+ 'audit' => 'Dziennik audytu',
+ 'audit_desc' => 'Ten dziennik audytu wyświetla listę działań śledzonych w systemie. Ta lista jest niefiltrowana w odróżnieniu od podobnych list aktywności w systemie, w którym stosowane są filtry uprawnień.',
+ 'audit_event_filter' => 'Filtry Wydarzeń',
+ 'audit_event_filter_no_filter' => 'Brak filtra',
+ 'audit_deleted_item' => 'Usunięta pozycja',
+ 'audit_deleted_item_name' => 'Nazwa: :name',
+ 'audit_table_user' => 'Użytkownik',
+ 'audit_table_event' => 'Wydarzenie',
+ 'audit_table_related' => 'Powiązany element lub szczegóły',
+ 'audit_table_ip' => 'Adres IP',
+ 'audit_table_date' => 'Data Aktywności',
+ 'audit_date_from' => 'Zakres dat od',
+ 'audit_date_to' => 'Zakres dat do',
+
+ // Role Settings
+ 'roles' => 'Role',
+ 'role_user_roles' => 'Role użytkowników',
+ 'roles_index_desc' => 'Role są używane do grupowania użytkowników i udzielania uprawnień systemowych ich członkom. Gdy użytkownik jest członkiem wielu ról, przyznane uprawnienia będą gromadzone, a użytkownik odziedziczy wszystkie możliwości.',
+ 'roles_x_users_assigned' => ':count przypisany użytkownik|:count przypisanych użytkowników',
+ 'roles_x_permissions_provided' => ':1 uprawnienie|:count uprawnień',
+ 'roles_assigned_users' => 'Przypisani Użytkownicy',
+ 'roles_permissions_provided' => 'Przyznawane Uprawnienia',
+ 'role_create' => 'Utwórz nową rolę',
+ 'role_delete' => 'Usuń rolę',
+ 'role_delete_confirm' => 'To spowoduje usunięcie roli \':roleName\'.',
+ 'role_delete_users_assigned' => 'Tę rolę ma przypisanych :userCount użytkowników. Jeśli chcesz zmigrować użytkowników z tej roli, wybierz nową poniżej.',
+ 'role_delete_no_migration' => "Nie migruj użytkowników",
+ 'role_delete_sure' => 'Czy na pewno chcesz usunąć tę rolę?',
+ 'role_edit' => 'Edytuj rolę',
+ 'role_details' => 'Szczegóły roli',
+ 'role_name' => 'Nazwa roli',
+ 'role_desc' => 'Krótki opis roli',
+ 'role_mfa_enforced' => 'Wymaga uwierzytelniania wieloetapowego',
+ 'role_external_auth_id' => 'Zewnętrzne identyfikatory uwierzytelniania',
+ 'role_system' => 'Uprawnienia systemowe',
+ 'role_manage_users' => 'Zarządzanie użytkownikami',
+ 'role_manage_roles' => 'Zarządzanie rolami i uprawnieniami ról',
+ 'role_manage_entity_permissions' => 'Zarządzanie uprawnieniami książek, rozdziałów i stron',
+ 'role_manage_own_entity_permissions' => 'Zarządzanie uprawnieniami własnych książek, rozdziałów i stron',
+ 'role_manage_page_templates' => 'Zarządzaj szablonami stron',
+ 'role_access_api' => 'Dostęp do systemowego API',
+ 'role_manage_settings' => 'Zarządzanie ustawieniami aplikacji',
+ 'role_export_content' => 'Eksportuj zawartość',
+ 'role_import_content' => 'Importuj zawartość',
+ 'role_editor_change' => 'Zmień edytor strony',
+ 'role_notifications' => 'Odbieranie i zarządzanie powiadomieniami',
+ 'role_permission_note_users_and_roles' => 'Uprawnienia te mogą zapewnić również widoczność i wyszukiwanie użytkowników i ról w systemie.',
+ 'role_asset' => 'Zarządzanie zasobami',
+ 'roles_system_warning' => 'Pamiętaj, że dostęp do trzech powyższych uprawnień może pozwolić użytkownikowi na zmianę własnych uprawnień lub uprawnień innych osób w systemie. Przypisz tylko role z tymi uprawnieniami do zaufanych użytkowników.',
+ 'role_asset_desc' => 'Te ustawienia kontrolują zarządzanie zasobami systemu. Uprawnienia książek, rozdziałów i stron nadpisują te ustawienia.',
+ 'role_asset_admins' => 'Administratorzy mają automatycznie dostęp do wszystkich treści, ale te opcję mogą być pokazywać lub ukrywać opcje interfejsu użytkownika.',
+ 'role_asset_image_view_note' => 'To odnosi się do widoczności w ramach menedżera obrazów. Rzeczywista możliwość dostępu do przesłanych plików obrazów będzie zależeć od systemowej opcji przechowywania obrazów.',
+ 'role_asset_users_note' => 'Uprawnienia te mogą zapewnić również widoczność i wyszukiwanie użytkowników w systemie.',
+ 'role_all' => 'Wszyscy',
+ 'role_own' => 'Własne',
+ 'role_controlled_by_asset' => 'Kontrolowane przez zasób, do którego zostały udostępnione',
+ 'role_save' => 'Zapisz rolę',
+ 'role_users' => 'Użytkownicy w tej roli',
+ 'role_users_none' => 'Brak użytkowników zapisanych do tej roli',
+
+ // Users
+ 'users' => 'Użytkownicy',
+ 'users_index_desc' => 'Twórz indywidualne konta użytkowników w systemie i zarządzaj nimi. Konta użytkowników są używane do logowania i przypisywania treści i aktywności. Uprawnienia dostępu są przede wszystkim oparte na roli, ale posiadanie przez użytkownika zawartości, podobnie jak inne czynniki może również wpływać na uprawnienia i dostęp.',
+ 'user_profile' => 'Profil użytkownika',
+ 'users_add_new' => 'Dodaj użytkownika',
+ 'users_search' => 'Wyszukaj użytkownika',
+ 'users_latest_activity' => 'Ostatnia aktywność',
+ 'users_details' => 'Szczegóły użytkownika',
+ 'users_details_desc' => 'Ustaw wyświetlaną nazwę i adres e-mail dla tego użytkownika. Adres e-mail zostanie wykorzystany do zalogowania się do aplikacji.',
+ 'users_details_desc_no_email' => 'Ustaw wyświetlaną nazwę dla tego użytkownika, aby inni mogli go rozpoznać.',
+ 'users_role' => 'Role użytkownika',
+ 'users_role_desc' => 'Wybierz role, do których ten użytkownik zostanie przypisany. Jeśli użytkownik jest przypisany do wielu ról, uprawnienia z tych ról zostaną nałożone i otrzyma wszystkie uprawnienia przypisanych ról.',
+ 'users_password' => 'Hasło użytkownika',
+ 'users_password_desc' => 'Ustaw hasło logowania do aplikacji. Hasło musi mieć przynajmniej 8 znaków.',
+ 'users_send_invite_text' => 'Możesz wybrać wysłanie do tego użytkownika wiadomości e-mail z zaproszeniem, która pozwala mu ustawić własne hasło, w przeciwnym razie możesz ustawić je samemu.',
+ 'users_send_invite_option' => 'Wyślij e-mail z zaproszeniem',
+ 'users_external_auth_id' => 'Zewnętrzne identyfikatory autentykacji',
+ 'users_external_auth_id_desc' => 'Gdy używany jest zewnętrzny system uwierzytelniania (np. SAML2, OIDC lub LDAP), to jest ID, które łączy tego użytkownika BookStack z kontem w systemie uwierzytelniania. Możesz zignorować to pole, jeśli używasz domyślnego uwierzytelniania e-mailem.',
+ 'users_password_warning' => 'Wypełnij poniższe tylko, jeśli chcesz zmienić hasło dla tego użytkownika.',
+ 'users_system_public' => 'Ten użytkownik reprezentuje każdego gościa odwiedzającego tę aplikację. Nie można się na niego zalogować, lecz jest przyznawany automatycznie.',
+ 'users_delete' => 'Usuń użytkownika',
+ 'users_delete_named' => 'Usuń :userName',
+ 'users_delete_warning' => 'To usunie użytkownika \':userName\' z systemu.',
+ 'users_delete_confirm' => 'Czy na pewno chcesz usunąć tego użytkownika?',
+ 'users_migrate_ownership' => 'Migracja Własności',
+ 'users_migrate_ownership_desc' => 'Wybierz użytkownika tutaj, jeśli chcesz, aby inny użytkownik stał się właścicielem wszystkich elementów będących obecnie w posiadaniu tego użytkownika.',
+ 'users_none_selected' => 'Nie wybrano użytkownika',
+ 'users_edit' => 'Edytuj użytkownika',
+ 'users_edit_profile' => 'Edytuj profil',
+ 'users_avatar' => 'Avatar użytkownika',
+ 'users_avatar_desc' => 'Ten obrazek powinien posiadać wymiary 256x256px.',
+ 'users_preferred_language' => 'Preferowany język',
+ 'users_preferred_language_desc' => 'Opcja ta zmieni język używany w interfejsie użytkownika aplikacji. Nie wpłynie to na zawartość stworzoną przez użytkownika.',
+ 'users_social_accounts' => 'Konta społecznościowe',
+ 'users_social_accounts_desc' => 'Zobacz status połączonych kont społecznościowych dla tego użytkownika. Konta społecznościowe mogą być używane jako uzupełnienie podstawowego systemu uwierzytelniania w celu uzyskania dostępu do systemu.',
+ 'users_social_accounts_info' => 'Tutaj możesz połączyć kilka kont społecznościowych w celu łatwiejszego i szybszego logowania. Odłączenie konta tutaj nie autoryzowało dostępu. Odwołaj dostęp z ustawień profilu na podłączonym koncie społecznościowym.',
+ 'users_social_connect' => 'Podłącz konto',
+ 'users_social_disconnect' => 'Odłącz konto',
+ 'users_social_status_connected' => 'Połączono',
+ 'users_social_status_disconnected' => 'Rozłączono',
+ 'users_social_connected' => ':socialAccount zostało dodane do Twojego profilu.',
+ 'users_social_disconnected' => ':socialAccount zostało odłączone od Twojego profilu.',
+ 'users_api_tokens' => 'Tokeny API',
+ 'users_api_tokens_desc' => 'Twórz i zarządzaj tokenami dostępu używanymi do uwierzytelniania z BookStack REST API. Uprawnienia dla API są zarządzane za pośrednictwem użytkownika, do którego należy token.',
+ 'users_api_tokens_none' => 'Nie utworzono tokenów API dla tego użytkownika',
+ 'users_api_tokens_create' => 'Utwórz token',
+ 'users_api_tokens_expires' => 'Wygasa',
+ 'users_api_tokens_docs' => 'Dokumentacja API',
+ 'users_mfa' => 'Uwierzytelnianie wieloskładnikowe',
+ 'users_mfa_desc' => 'Skonfiguruj uwierzytelnianie wieloskładnikowe jako dodatkową warstwę bezpieczeństwa dla swojego konta użytkownika.',
+ 'users_mfa_x_methods' => ':count metoda skonfigurowana|:count metody skonfigurowane',
+ 'users_mfa_configure' => 'Konfiguruj metody',
+
+ // API Tokens
+ 'user_api_token_create' => 'Utwórz klucz API',
+ 'user_api_token_name' => 'Nazwa',
+ 'user_api_token_name_desc' => 'Nadaj swojemu tokenowi czytelną nazwę jako opisującego jego cel.',
+ 'user_api_token_expiry' => 'Data ważności',
+ 'user_api_token_expiry_desc' => 'Ustaw datę, kiedy ten token wygasa. Po tej dacie żądania wykonane przy użyciu tego tokenu nie będą już działać. Pozostawienie tego pola pustego, ustawi ważność na 100 lat.',
+ 'user_api_token_create_secret_message' => 'Natychmiast po utworzeniu tego tokenu zostanie wygenerowany i wyświetlony "Identyfikator tokenu"" i "Token Secret". Sekret zostanie wyświetlony tylko raz, więc przed kontynuacją upewnij się, że zostanie on skopiowany w bezpiecznie miejsce.',
+ 'user_api_token' => 'Token API',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'Jest to nieedytowalny identyfikator wygenerowany przez system dla tego tokenu, który musi być dostarczony w żądaniach API.',
+ 'user_api_token_secret' => 'Token Api',
+ 'user_api_token_secret_desc' => 'To jest wygenerowany przez system sekretny token, który musi być dostarczony w żądaniach API. Token zostanie wyświetlany tylko raz, więc skopiuj go w bezpiecznie miejsce.',
+ 'user_api_token_created' => 'Token utworzony :timeAgo',
+ 'user_api_token_updated' => 'Token zaktualizowany :timeAgo',
+ 'user_api_token_delete' => 'Usuń token',
+ 'user_api_token_delete_warning' => 'Spowoduje to całkowite usunięcie tokenu API o nazwie \':tokenName\' z systemu.',
+ 'user_api_token_delete_confirm' => 'Czy jesteś pewien, że chcesz usunąć ten token?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooki',
+ 'webhooks_index_desc' => 'Webhooki to sposób na wysyłanie danych do zewnętrznych adresów URL, gdy pewne działania i zdarzenia zachodzą w ramach systemu, co umożliwia integrację zdarzeń w systemie z zewnętrznymi platformami, takimi jak systemy wysyłania wiadomości lub powiadamiania.',
+ 'webhooks_x_trigger_events' => ':count zdarzenie wyzwalacza|:count zdarzeń wyzwalacza',
+ 'webhooks_create' => 'Utwórz nowy Webhook',
+ 'webhooks_none_created' => 'Nie utworzono jeszcze żadnych webhooków.',
+ 'webhooks_edit' => 'Edytuj Webhook',
+ 'webhooks_save' => 'Zapisz Webhook',
+ 'webhooks_details' => 'Szczegóły Webhooka',
+ 'webhooks_details_desc' => 'Podaj przyjazną nazwę i punkt końcowy POST jako adres docelowy wysłania dla danych webhooka.',
+ 'webhooks_events' => 'Zdarzenia Webhook',
+ 'webhooks_events_desc' => 'Zaznacz wszystkie zdarzenia, które powinny wyzwalać wywołanie tego webhooka.',
+ 'webhooks_events_warning' => 'Pamiętaj, że te zdarzenia będą wyzwalane dla wszystkich wybranych wydarzeń, nawet jeśli zostaną zastosowane niestandardowe uprawnienia. Upewnij się, że korzystanie z tego webhooka nie spowoduje ujawnienia poufnych treści.',
+ 'webhooks_events_all' => 'Wszystkie zdarzenia systemowe',
+ 'webhooks_name' => 'Nazwa Webhooka',
+ 'webhooks_timeout' => 'Limit czasu żądania Webhooka (w sekundach)',
+ 'webhooks_endpoint' => 'Punkt Końcowy Webhooka',
+ 'webhooks_active' => 'Webhook Aktywny',
+ 'webhook_events_table_header' => 'Zdarzenia',
+ 'webhooks_delete' => 'Usuń Webhook',
+ 'webhooks_delete_warning' => 'Spowoduje to całkowite usunięcie z systemu tego webhooka o nazwie \':webhookName\'.',
+ 'webhooks_delete_confirm' => 'Czy na pewno chcesz usunąć ten webhook?',
+ 'webhooks_format_example' => 'Przykład Formatu Webhooka',
+ 'webhooks_format_example_desc' => 'Dane webhooka są wysyłane jako zapytanie POST do skonfigurowanego punktu końcowego jako JSON zgodnie z poniższym formatem. Właściwości "related_item" i "url" są opcjonalne i będą zależeć od typu wywołanego zdarzenia.',
+ 'webhooks_status' => 'Status Webhooka',
+ 'webhooks_last_called' => 'Ostatnio Wyzwolony:',
+ 'webhooks_last_errored' => 'Ostatni błąd:',
+ 'webhooks_last_error_message' => 'Ostatni komunikat o błędzie:',
+
+ // Licensing
+ 'licenses' => 'Licencje',
+ 'licenses_desc' => 'Ta strona podaje szczegóły dotyczące licencji dla BookStack w powiązaniu z projektami i bibliotekami używanymi w BookStack. Wiele wymienionych projektów może zezwalać na wykorzystanie wyłącznie w kontekście rozwoju oprogramowania.',
+ 'licenses_bookstack' => 'Licencja BookStack',
+ 'licenses_php' => 'Licencje bibliotek PHP',
+ 'licenses_js' => 'Licencje bibliotek JavaScript',
+ 'licenses_other' => 'Inne licencje',
+ 'license_details' => 'Szczegóły licencji',
+
+ //! 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' => 'Kataloński',
+ 'cs' => 'Česky',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Estoński',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/pl/validation.php b/lang/pl/validation.php
new file mode 100644
index 00000000000..989d5b17a58
--- /dev/null
+++ b/lang/pl/validation.php
@@ -0,0 +1,123 @@
+ ':attribute musi zostać zaakceptowany.',
+ 'active_url' => ':attribute nie jest prawidłowym adresem URL.',
+ 'after' => ':attribute musi być datą następującą po :date.',
+ 'alpha' => ':attribute może zawierać wyłącznie litery.',
+ 'alpha_dash' => ':attribute może zawierać wyłącznie litery, cyfry i myślniki.',
+ 'alpha_num' => ':attribute może zawierać wyłącznie litery i cyfry.',
+ 'array' => ':attribute musi być tablicą.',
+ 'backup_codes' => 'Podany kod jest nieprawidłowy lub został już użyty.',
+ 'before' => ':attribute musi być datą poprzedzającą :date.',
+ 'between' => [
+ 'numeric' => ':attribute musi zawierać się w przedziale od :min do :max.',
+ 'file' => 'Waga :attribute musi zawierać się pomiędzy :min i :max kilobajtów.',
+ 'string' => 'Długość :attribute musi zawierać się pomiędzy :min i :max.',
+ 'array' => ':attribute musi mieć od :min do :max elementów.',
+ ],
+ 'boolean' => ':attribute musi być wartością prawda/fałsz.',
+ 'confirmed' => ':attribute i potwierdzenie muszą być zgodne.',
+ 'date' => ':attribute nie jest prawidłową datą.',
+ 'date_format' => ':attribute musi mieć format :format.',
+ 'different' => ':attribute i :other muszą się różnić.',
+ 'digits' => ':attribute musi mieć :digits cyfr.',
+ 'digits_between' => ':attribute musi mieć od :min do :max cyfr.',
+ 'email' => ':attribute musi być prawidłowym adresem e-mail.',
+ 'ends_with' => ':attribute musi kończyć się jedną z poniższych wartości: :values',
+ 'file' => ':attribute musi być prawidłowym plikiem.',
+ 'filled' => ':attribute jest wymagany.',
+ 'gt' => [
+ 'numeric' => ':attribute musi być większy niż :value.',
+ 'file' => ':attribute musi mieć rozmiar większy niż :value kilobajtów.',
+ 'string' => ':attribute musi mieć więcej niż :value znaków.',
+ 'array' => ':attribute musi mieć więcej niż :value elementów.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute musi być większy lub równy :value.',
+ 'file' => ':attribute musi mieć rozmiar większy niż lub równy :value kilobajtów.',
+ 'string' => ':attribute musi mieć :value lub więcej znaków.',
+ 'array' => ':attribute musi mieć :value lub więcej elementów.',
+ ],
+ 'exists' => 'Wybrana wartość :attribute jest nieprawidłowa.',
+ 'image' => ':attribute musi być obrazkiem.',
+ 'image_extension' => ':attribute musi mieć prawidłowe i wspierane rozszerzenie',
+ 'in' => 'Wybrana wartość :attribute jest nieprawidłowa.',
+ 'integer' => ':attribute musi być liczbą całkowitą.',
+ 'ip' => ':attribute musi być prawidłowym adresem IP.',
+ 'ipv4' => ':attribute musi być prawidłowym adresem IPv4.',
+ 'ipv6' => ':attribute musi być prawidłowym adresem IPv6.',
+ 'json' => ':attribute musi być prawidłowym ciągiem JSON.',
+ 'lt' => [
+ 'numeric' => ':attribute musi być mniejszy niż :value.',
+ 'file' => ':attribute musi mieć rozmiar mniejszy niż :value kilobajtów.',
+ 'string' => ':attribute musi mieć mniej niż :value znaków.',
+ 'array' => ':attribute musi mieć mniej niż :value elementów.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute musi być mniejszy lub równy :value.',
+ 'file' => ':attribute musi mieć rozmiar mniejszy lub równy:value kilobajtów.',
+ 'string' => ':attribute nie może mieć więcej niż :value znaków.',
+ 'array' => ':attribute nie może mieć więcej niż :value elementów.',
+ ],
+ 'max' => [
+ 'numeric' => 'Wartość :attribute nie może być większa niż :max.',
+ 'file' => 'Wielkość :attribute nie może być większa niż :max kilobajtów.',
+ 'string' => 'Długość :attribute nie może być większa niż :max znaków.',
+ 'array' => 'Rozmiar :attribute nie może być większy niż :max elementów.',
+ ],
+ 'mimes' => ':attribute musi być plikiem typu: :values.',
+ 'min' => [
+ 'numeric' => 'Wartość :attribute nie może być mniejsza od :min.',
+ 'file' => 'Wielkość :attribute nie może być mniejsza niż :min kilobajtów.',
+ 'string' => 'Długość :attribute nie może być mniejsza niż :min znaków.',
+ 'array' => 'Rozmiar :attribute musi posiadać co najmniej :min elementy.',
+ ],
+ 'not_in' => 'Wartość :attribute jest nieprawidłowa.',
+ 'not_regex' => 'Format :attribute jest nieprawidłowy.',
+ 'numeric' => ':attribute musi być liczbą.',
+ 'regex' => 'Format :attribute jest nieprawidłowy.',
+ 'required' => 'Pole :attribute jest wymagane.',
+ 'required_if' => 'Pole :attribute jest wymagane jeśli :other ma wartość :value.',
+ 'required_with' => 'Pole :attribute jest wymagane jeśli :values zostało wprowadzone.',
+ 'required_with_all' => 'Pole :attribute jest wymagane jeśli :values są obecne.',
+ 'required_without' => 'Pole :attribute jest wymagane jeśli :values nie zostało wprowadzone.',
+ 'required_without_all' => 'Pole :attribute jest wymagane jeśli żadna z wartości :values nie została podana.',
+ 'same' => 'Pole :attribute i :other muszą być takie same.',
+ 'safe_url' => 'Podany link może nie być bezpieczny.',
+ 'size' => [
+ 'numeric' => ':attribute musi mieć długość :size.',
+ 'file' => ':attribute musi mieć :size kilobajtów.',
+ 'string' => ':attribute mmusi mieć długość :size znaków.',
+ 'array' => ':attribute musi posiadać :size elementów.',
+ ],
+ 'string' => ':attribute musi być ciągiem znaków.',
+ 'timezone' => ':attribute musi być prawidłową strefą czasową.',
+ 'totp' => 'Podany kod jest nieprawidłowy lub wygasł.',
+ 'unique' => ':attribute zostało już zajęte.',
+ 'url' => 'Format :attribute jest nieprawidłowy.',
+ 'uploaded' => 'Plik nie może zostać wysłany. Serwer nie akceptuje plików o takim rozmiarze.',
+
+ 'zip_file' => ':attribute musi odnosić się do pliku w archiwum ZIP.',
+ 'zip_file_size' => 'Plik :attribute nie może przekraczać :size MB.',
+ 'zip_file_mime' => ':attribute musi odnosić się do pliku typu :validTypes. Znaleziono :foundType.',
+ 'zip_model_expected' => 'Oczekiwano obiektu danych, ale znaleziono ":type".',
+ 'zip_unique' => ':attribute musi być unikalny dla typu obiektu w archiwum ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Potwierdzenie hasła jest wymagane.',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/pt/activities.php b/lang/pt/activities.php
new file mode 100644
index 00000000000..33d9e2ca686
--- /dev/null
+++ b/lang/pt/activities.php
@@ -0,0 +1,140 @@
+ 'criou a página',
+ 'page_create_notification' => 'Página criada com sucesso',
+ 'page_update' => 'página atualizada',
+ 'page_update_notification' => 'Página atualizada com sucesso.',
+ 'page_delete' => 'página eliminada',
+ 'page_delete_notification' => 'Página excluída com sucesso.',
+ 'page_restore' => 'página restaurada',
+ 'page_restore_notification' => 'Página restaurada com sucesso',
+ 'page_move' => 'página movida',
+ 'page_move_notification' => 'Página movida com sucesso',
+
+ // Chapters
+ 'chapter_create' => 'capítulo criado',
+ 'chapter_create_notification' => 'Capítulo criado com sucesso',
+ 'chapter_update' => 'capítulo atualizado',
+ 'chapter_update_notification' => 'Capítulo atualizado com sucesso',
+ 'chapter_delete' => 'capítulo excluído',
+ 'chapter_delete_notification' => 'Capítulo excluído com sucesso',
+ 'chapter_move' => 'capítulo movido',
+ 'chapter_move_notification' => 'Capítulo movido com sucesso',
+
+ // Books
+ 'book_create' => 'livro criado',
+ 'book_create_notification' => 'Livro criado com sucesso',
+ 'book_create_from_chapter' => 'capítulo convertido para livro',
+ 'book_create_from_chapter_notification' => 'Capítulo convertido em livro com sucesso',
+ 'book_update' => 'livro atualizado',
+ 'book_update_notification' => 'Livro atualizado com sucesso',
+ 'book_delete' => 'livro eliminado',
+ 'book_delete_notification' => 'Livro eliminado com sucesso',
+ 'book_sort' => 'livro ordenado',
+ 'book_sort_notification' => 'Livro reordenado com sucesso',
+
+ // Bookshelves
+ 'bookshelf_create' => 'estante criada',
+ 'bookshelf_create_notification' => 'Estante criada com sucesso',
+ 'bookshelf_create_from_book' => 'livro convertido para estante',
+ 'bookshelf_create_from_book_notification' => 'Livro convertido em prateleira com sucesso',
+ 'bookshelf_update' => 'estante atualizada',
+ 'bookshelf_update_notification' => 'Estante atualizada com sucesso',
+ 'bookshelf_delete' => 'excluiu a estante',
+ 'bookshelf_delete_notification' => 'Estante eliminada com sucesso',
+
+ // Revisions
+ 'revision_restore' => 'restaurou a revisão',
+ 'revision_delete' => 'eliminou a revisão',
+ 'revision_delete_notification' => 'Revisão eliminada com sucesso',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" foi adicionado aos seus favoritos',
+ 'favourite_remove_notification' => '":name" foi removido dos seus favoritos',
+
+ // Watching
+ 'watch_update_level_notification' => 'Ver preferências atualizadas com sucesso',
+
+ // Auth
+ 'auth_login' => 'iniciou sessão',
+ 'auth_register' => 'registado como novo utilizador',
+ 'auth_password_reset_request' => 'pedido a redefinição da palavra-passe',
+ 'auth_password_reset_update' => 'redifinir palavra-passe do utilizador',
+ 'mfa_setup_method' => 'configurar método de duplo fator',
+ 'mfa_setup_method_notification' => 'Método de autenticação por múltiplos-fatores configurado com sucesso',
+ 'mfa_remove_method' => 'método de duplo fator removido',
+ 'mfa_remove_method_notification' => 'Método de autenticação por múltiplos-fatores removido com sucesso',
+
+ // Settings
+ 'settings_update' => 'configurações atualizadas',
+ 'settings_update_notification' => 'Configurações atualizadas com sucesso',
+ 'maintenance_action_run' => 'ação de manutenção executada',
+
+ // Webhooks
+ 'webhook_create' => 'webhook criado',
+ 'webhook_create_notification' => 'Webhook criado com sucesso',
+ 'webhook_update' => 'atualizar um webhook',
+ 'webhook_update_notification' => 'Webhook criado com sucesso',
+ 'webhook_delete' => 'eliminar webhook',
+ 'webhook_delete_notification' => 'Webhook criado com sucesso',
+
+ // Imports
+ 'import_create' => 'importação criada',
+ 'import_create_notification' => 'Importação carregada com sucesso',
+ 'import_run' => 'importação atualizada',
+ 'import_run_notification' => 'Conteúdo importado com sucesso',
+ 'import_delete' => 'importação apagada',
+ 'import_delete_notification' => 'Importação eliminada com sucesso',
+
+ // Users
+ 'user_create' => 'utilizador criado',
+ 'user_create_notification' => 'Utilizador criado com sucesso',
+ 'user_update' => 'utilizador atualizado',
+ 'user_update_notification' => 'Utilizador atualizado com sucesso',
+ 'user_delete' => 'utilizador eliminado',
+ 'user_delete_notification' => 'Utilizador removido com sucesso',
+
+ // API Tokens
+ 'api_token_create' => 'token API criado',
+ 'api_token_create_notification' => 'API token criado com sucesso',
+ 'api_token_update' => 'token API atualizado',
+ 'api_token_update_notification' => 'API token atualizado com sucesso',
+ 'api_token_delete' => 'token API apagado',
+ 'api_token_delete_notification' => 'API token atualizado com sucesso',
+
+ // Roles
+ 'role_create' => 'cargo criado',
+ 'role_create_notification' => 'Cargo criado com sucesso',
+ 'role_update' => 'cargo atualizado',
+ 'role_update_notification' => 'Cargo atualizado com sucesso',
+ 'role_delete' => 'cargo eliminado',
+ 'role_delete_notification' => 'Cargo excluído com sucesso',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'reciclagem vazia',
+ 'recycle_bin_restore' => 'restaurado da reciclagem',
+ 'recycle_bin_destroy' => 'removido da reciclagem',
+
+ // Comments
+ 'commented_on' => 'comentado a',
+ 'comment_create' => 'comentário adicionado',
+ 'comment_update' => 'comentário atualizado',
+ 'comment_delete' => 'comentário eliminado',
+
+ // Sort Rules
+ 'sort_rule_create' => 'regra de ordenação criada',
+ 'sort_rule_create_notification' => 'Regra de ordenação criada com sucesso',
+ 'sort_rule_update' => 'regra de ordenação atualizada',
+ 'sort_rule_update_notification' => 'Regra de ordenação atualizada com sucesso',
+ 'sort_rule_delete' => 'regra de ordenação apagada',
+ 'sort_rule_delete_notification' => 'Regra de ordenação apagada com sucesso',
+
+ // Other
+ 'permissions_update' => 'permissões atualizadas',
+];
diff --git a/lang/pt/auth.php b/lang/pt/auth.php
new file mode 100644
index 00000000000..8807e1a87d3
--- /dev/null
+++ b/lang/pt/auth.php
@@ -0,0 +1,117 @@
+ 'Estas credenciais não coincidem com os nossos registos.',
+ 'throttle' => 'Demasiadas tentativas de acesso. Tente novamente em :seconds segundos.',
+
+ // Login & Register
+ 'sign_up' => 'Registar',
+ 'log_in' => 'Iniciar sessão',
+ 'log_in_with' => 'Iniciar sessão com :socialDriver',
+ 'sign_up_with' => 'Criar conta com :socialDriver',
+ 'logout' => 'Terminar sessão',
+
+ 'name' => 'Nome',
+ 'username' => 'Nome de utilizador',
+ 'email' => 'E-mail',
+ 'password' => 'Palavra-passe',
+ 'password_confirm' => 'Confirmar Palavra-passe',
+ 'password_hint' => 'Deve ter no mínimo 8 caracteres',
+ 'forgot_password' => 'Esqueceu-se da palavra-passe?',
+ 'remember_me' => 'Lembrar-se de mim',
+ 'ldap_email_hint' => 'Por favor insira um endereço de e-mail para esta conta.',
+ 'create_account' => 'Criar Conta',
+ 'already_have_account' => 'Já possui uma conta?',
+ 'dont_have_account' => 'Não possui uma conta?',
+ 'social_login' => 'Inicio de Sessão com Redes Sociais',
+ 'social_registration' => 'Registo com Redes Sociais',
+ 'social_registration_text' => 'Registe e inicie sessão com recurso a outro serviço.',
+
+ 'register_thanks' => 'Obrigado por se registar!',
+ 'register_confirm' => 'Por favor, verifique o seu e-mail e carregue no botão de confirmação para aceder :appName.',
+ 'registrations_disabled' => 'Os registos estão temporariamente desativados',
+ 'registration_email_domain_invalid' => 'O domínio de e-mail usado não tem acesso permitido a esta aplicação',
+ 'register_success' => 'Obrigado por se registar! Você está agora registado e com a sessão iniciada.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Tentando inicar sessão',
+ 'auto_init_starting_desc' => 'Estamos a aceder ao seu sistema de autenticação para iniciar o processo de login. Se não houver progresso após 5 segundos você pode tentar clicar no link abaixo.',
+ 'auto_init_start_link' => 'Prosseguir com autenticação',
+
+ // Password Reset
+ 'reset_password' => 'Redefinir Senha',
+ 'reset_password_send_instructions' => 'Insira o seu endereço de e-mail abaixo, e uma mensagem com o link de redefinição de palavra-passe será lhe enviada.',
+ 'reset_password_send_button' => 'Enviar o Link de Redefinição',
+ 'reset_password_sent' => 'Um link de redefinição de palavra-passe será enviado para :email, se o endereço de e-mail for encontrado no sistema.',
+ 'reset_password_success' => 'A sua palavra-passe foi redefinida com sucesso.',
+ 'email_reset_subject' => 'Redefina a sua palavra-passe de :appName',
+ 'email_reset_text' => 'Você recebeu este e-mail pois recebemos uma solicitação de redefinição de senha para a sua conta.',
+ 'email_reset_not_requested' => 'Caso não tenha sido você a solicitar a redefinição de senha, ignore este e-mail.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Confirme o seu endereço de e-mail para :appName',
+ 'email_confirm_greeting' => 'Obrigado por se registar em :appName!',
+ 'email_confirm_text' => 'Por favor, confirme o seu endereço de e-mail ao carregar no botão abaixo:',
+ 'email_confirm_action' => 'Confirmar E-mail',
+ 'email_confirm_send_error' => 'A confirmação do endereço de e-mail é requerida, mas o sistema não pôde enviar a mensagem. Por favor, entre em contacto com o administrador para se certificar que o serviço de envio de e-mails está corretamente configurado.',
+ 'email_confirm_success' => 'O seu endereço de email foi confirmado! Neste momento já poderá entrar usando este endereço de email.',
+ 'email_confirm_resent' => 'E-mail de confirmação reenviado. Por favor, verifique a sua caixa de entrada.',
+ 'email_confirm_thanks' => 'Obrigado por confirmar!',
+ 'email_confirm_thanks_desc' => 'Por favor, aguarde um momento enquanto a sua confirmação é tratada. Se não for redirecionado após 3 segundos pressione "Continuar" para prosseguir.',
+
+ 'email_not_confirmed' => 'Endereço de E-mail Não Confirmado',
+ 'email_not_confirmed_text' => 'O seu endereço de e-mail ainda não foi confirmado.',
+ 'email_not_confirmed_click_link' => 'Por favor, carregue no link que se encontra no e-mail que lhe foi enviado após o seu registo.',
+ 'email_not_confirmed_resend' => 'Caso não encontre o e-mail poderá reenviar a confirmação utilizando o formulário abaixo.',
+ 'email_not_confirmed_resend_button' => 'Reenviar o E-mail de Confirmação',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Você recebeu um convite para se juntar a :appName!',
+ 'user_invite_email_greeting' => 'Uma conta foi criada para si em :appName.',
+ 'user_invite_email_text' => 'Carregue no botão abaixo para definir uma palavra-passe de conta e obter acesso:',
+ 'user_invite_email_action' => 'Defina a Palavra-passe da Conta',
+ 'user_invite_page_welcome' => 'Bem-vindo(a) a :appName!',
+ 'user_invite_page_text' => 'Para finalizar a sua conta e obter acesso, precisa de definir uma senha que será utilizada para efetuar login em :appName em visitas futuras.',
+ 'user_invite_page_confirm_button' => 'Confirmar Palavra-Passe',
+ 'user_invite_success_login' => 'Palavra passe definida, agora poderá entrar usado a sua nova palavra passe para acessar :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Configurar autenticação de múltiplos fatores',
+ 'mfa_setup_desc' => 'Configure a autenticação multi-fatores como uma camada extra de segurança para sua conta de utilizador.',
+ 'mfa_setup_configured' => 'Já configurado',
+ 'mfa_setup_reconfigure' => 'Reconfigurar',
+ 'mfa_setup_remove_confirmation' => 'Tem a certeza que deseja remover este método de autenticação de múltiplos fatores?',
+ 'mfa_setup_action' => 'Configuração',
+ 'mfa_backup_codes_usage_limit_warning' => 'Você tem menos de 5 códigos de backup restantes, Por favor, gere e armazene um novo conjunto antes de esgotar os códigos para evitar estar bloqueado para fora da sua conta.',
+ 'mfa_option_totp_title' => 'Aplicação móvel',
+ 'mfa_option_totp_desc' => 'Para usar a autenticação multi-fator, você precisa de uma aplicação móvel que suporte TOTP como o Autenticador do Google, Authy ou o autenticador Microsoft.',
+ 'mfa_option_backup_codes_title' => 'Códigos de Backup',
+ 'mfa_option_backup_codes_desc' => 'Gera um conjunto de códigos de reserva de utilização única, que deverá usar no início de sessão para verificar a sua identidade. Certifique-se de que os guarda num local seguro.',
+ 'mfa_gen_confirm_and_enable' => 'Confirmar e ativar',
+ 'mfa_gen_backup_codes_title' => 'Configuração dos Códigos de Backup',
+ 'mfa_gen_backup_codes_desc' => 'Armazene a lista de códigos abaixo em um lugar seguro. Ao acessar o sistema você poderá usar um dos códigos como um segundo mecanismo de autenticação.',
+ 'mfa_gen_backup_codes_download' => 'Transferir códigos',
+ 'mfa_gen_backup_codes_usage_warning' => 'Cada código só pode ser usado uma vez',
+ 'mfa_gen_totp_title' => 'Configuração da aplicação móvel',
+ 'mfa_gen_totp_desc' => 'Para usar a autenticação multi-fator, precisará de uma aplicação móvel que suporte TOTP como o Autenticador do Google, Authy ou o autenticador Microsoft.',
+ 'mfa_gen_totp_scan' => 'Leia o código QR abaixo usando a sua aplicação de autenticação preferida para começar.',
+ 'mfa_gen_totp_verify_setup' => 'Verificar configuração',
+ 'mfa_gen_totp_verify_setup_desc' => 'Verifique se funciona tudo, digitando um código, gerado dentro da sua aplicação de autenticação, na caixa de entrada abaixo:',
+ 'mfa_gen_totp_provide_code_here' => 'Forneça aqui, o código gerado pela sua aplicação',
+ 'mfa_verify_access' => 'Verificar Acesso',
+ 'mfa_verify_access_desc' => 'Sua conta de usuário requer que você confirme sua identidade por meio de um nível adicional de verificação antes de conceder o acesso. Verifique o uso de um dos métodos configurados para continuar.',
+ 'mfa_verify_no_methods' => 'Nenhum método configurado',
+ 'mfa_verify_no_methods_desc' => 'Nenhum método de autenticação de vários fatores foi encontrado para a sua conta. Você precisará configurar pelo menos um método antes de ganhar acesso.',
+ 'mfa_verify_use_totp' => 'Verificar usando uma aplicação móvel',
+ 'mfa_verify_use_backup_codes' => 'Verificar usando código de backup',
+ 'mfa_verify_backup_code' => 'Código de backup',
+ 'mfa_verify_backup_code_desc' => 'Insira um dos seus códigos de backup restantes abaixo:',
+ 'mfa_verify_backup_code_enter_here' => 'Insira o código de backup aqui',
+ 'mfa_verify_totp_desc' => 'Digite abaixo, o código gerado através da sua aplicação móvel:',
+ 'mfa_setup_login_notification' => 'Método de multi-fatores configurado, por favor faça login novamente usando o método configurado.',
+];
diff --git a/lang/pt/common.php b/lang/pt/common.php
new file mode 100644
index 00000000000..a0d83ac1e73
--- /dev/null
+++ b/lang/pt/common.php
@@ -0,0 +1,115 @@
+ 'Cancelar',
+ 'close' => 'Fechar',
+ 'confirm' => 'Confirmar',
+ 'back' => 'Voltar',
+ 'save' => 'Guardar',
+ 'continue' => 'Continuar',
+ 'select' => 'Selecionar',
+ 'toggle_all' => 'Alternar Todos',
+ 'more' => 'Mais',
+
+ // Form Labels
+ 'name' => 'Nome',
+ 'description' => 'Descrição',
+ 'role' => 'Cargo',
+ 'cover_image' => 'Imagem de capa',
+ 'cover_image_description' => 'Esta imagem deve ser de aproximadamente 440x250px, embora seja escalada de forma flexível e cortada para caber na interface do usuário em diferentes cenários conforme necessário, então, dimensões atuais para exibição serão diferentes.',
+
+ // Actions
+ 'actions' => 'Ações',
+ 'view' => 'Visualizar',
+ 'view_all' => 'Visualizar Todos',
+ 'new' => 'Novo',
+ 'create' => 'Criar',
+ 'update' => 'Atualizar',
+ 'edit' => 'Editar',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Ordenar',
+ 'move' => 'Mover',
+ 'copy' => 'Copiar',
+ 'reply' => 'Responder',
+ 'delete' => 'Eliminar',
+ 'delete_confirm' => 'Confirmar eliminação',
+ 'search' => 'Pesquisar',
+ 'search_clear' => 'Limpar Pesquisa',
+ 'reset' => 'Redefinir',
+ 'remove' => 'Remover',
+ 'add' => 'Adicionar',
+ 'configure' => 'Configurar',
+ 'manage' => 'Gerir',
+ 'fullscreen' => 'Ecrã completo',
+ 'favourite' => 'Favorito',
+ 'unfavourite' => 'Retirar Favorito',
+ 'next' => 'Próximo',
+ 'previous' => 'Anterior',
+ 'filter_active' => 'Filtro Ativo:',
+ 'filter_clear' => 'Limpar Filtro',
+ 'download' => 'Transferir',
+ 'open_in_tab' => 'Abrir em novo separador',
+ 'open' => 'Abrir',
+
+ // Sort Options
+ 'sort_options' => 'Opções de Ordenação',
+ 'sort_direction_toggle' => 'Alternar Direção de Ordenação',
+ 'sort_ascending' => 'Ordenação Crescente',
+ 'sort_descending' => 'Ordenação Decrescente',
+ 'sort_name' => 'Nome',
+ 'sort_default' => 'Padrão',
+ 'sort_created_at' => 'Data de Criação',
+ 'sort_updated_at' => 'Data de Atualização',
+
+ // Misc
+ 'deleted_user' => 'Utilizador Eliminado',
+ 'no_activity' => 'Nenhuma atividade a mostrar',
+ 'no_items' => 'Nenhum item disponível',
+ 'back_to_top' => 'Voltar ao topo',
+ 'skip_to_main_content' => 'Avançar para o conteúdo principal',
+ 'toggle_details' => 'Alternar Detalhes',
+ 'toggle_thumbnails' => 'Alternar Miniaturas',
+ 'details' => 'Detalhes',
+ 'grid_view' => 'Visualização em Grade',
+ 'list_view' => 'Visualização em Lista',
+ 'default' => 'Padrão',
+ 'breadcrumb' => 'Caminho',
+ 'status' => 'Estado',
+ 'status_active' => 'Ativo',
+ 'status_inactive' => 'Inativo',
+ 'never' => 'Nunca',
+ 'none' => 'Nenhum',
+
+ // Header
+ 'homepage' => 'Página inicial',
+ 'header_menu_expand' => 'Expandir Menu de Cabeçalho',
+ 'profile_menu' => 'Menu de Perfil',
+ 'view_profile' => 'Visualizar Perfil',
+ 'edit_profile' => 'Editar Perfil',
+ 'dark_mode' => 'Modo Escuro',
+ 'light_mode' => 'Modo Claro',
+ 'global_search' => 'Pesquisa global',
+
+ // Layout tabs
+ 'tab_info' => 'Informações',
+ 'tab_info_label' => 'Separador: Mostrar Informação Secundária',
+ 'tab_content' => 'Conteúdo',
+ 'tab_content_label' => 'Separador: Mostrar Conteúdo Primário',
+
+ // Email Content
+ 'email_action_help' => 'Se estiver com problemas ao carregar no botão ":actionText", copie e cole o URL abaixo no seu navegador:',
+ 'email_rights' => 'Todos os direitos reservados',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Política de Privacidade',
+ 'terms_of_service' => 'Termos de Utilização',
+
+ // OpenSearch
+ 'opensearch_description' => 'Procurar :appName',
+];
diff --git a/lang/pt/components.php b/lang/pt/components.php
new file mode 100644
index 00000000000..67e8c2f01b1
--- /dev/null
+++ b/lang/pt/components.php
@@ -0,0 +1,46 @@
+ 'Selecionar Imagem',
+ 'image_list' => 'Lista de Imagens',
+ 'image_details' => 'Detalhes da Imagem',
+ 'image_upload' => 'Carregar Imagem',
+ 'image_intro' => 'Aqui pode selecionar e gerir imagens que foram previamente enviadas para o sistema.',
+ 'image_intro_upload' => 'Envie uma nova imagem, arrastando um arquivo de imagem para esta janela, ou usando o botão "Enviar Imagem" acima.',
+ 'image_all' => 'Todas',
+ 'image_all_title' => 'Visualizar todas as imagens',
+ 'image_book_title' => 'Visualizar imagens relacionadas a este livro',
+ 'image_page_title' => 'Visualizar imagens relacionadas a esta página',
+ 'image_search_hint' => 'Pesquisar imagem por nome',
+ 'image_uploaded' => 'Adicionada em :uploadedDate',
+ 'image_uploaded_by' => 'Carregado por :userName',
+ 'image_uploaded_to' => 'Carregado para :pageLink',
+ 'image_updated' => 'Atualizado :updateDate',
+ 'image_load_more' => 'Carregar Mais',
+ 'image_image_name' => 'Nome da Imagem',
+ 'image_delete_used' => 'Esta imagem é utilizada nas páginas abaixo.',
+ 'image_delete_confirm_text' => 'Tem certeza de que deseja eliminar esta imagem?',
+ 'image_select_image' => 'Selecionar Imagem',
+ 'image_dropzone' => 'Arraste imagens ou carregue aqui para fazer upload',
+ 'image_dropzone_drop' => 'Arraste para aqui um ficheiro para carregar',
+ 'images_deleted' => 'Imagens Eliminadas',
+ 'image_preview' => 'Pré-visualização de Imagem',
+ 'image_upload_success' => 'Carregamento da imagem efetuado com sucesso',
+ 'image_update_success' => 'Detalhes da imagem atualizados com sucesso',
+ 'image_delete_success' => 'Imagem eliminada com sucesso',
+ 'image_replace' => 'Substituir Imagem',
+ 'image_replace_success' => 'Imagem carregada com sucesso',
+ 'image_rebuild_thumbs' => 'Recriar Variação de Tamanho',
+ 'image_rebuild_thumbs_success' => 'Variações de tamanho da imagem reconstruídas com sucesso!',
+
+ // Code Editor
+ 'code_editor' => 'Editar Código',
+ 'code_language' => 'Linguagem do Código',
+ 'code_content' => 'Código',
+ 'code_session_history' => 'Histórico de Sessão',
+ 'code_save' => 'Guardar Código',
+];
diff --git a/lang/pt/editor.php b/lang/pt/editor.php
new file mode 100644
index 00000000000..b60f813b51b
--- /dev/null
+++ b/lang/pt/editor.php
@@ -0,0 +1,182 @@
+ 'Geral',
+ 'advanced' => 'Avançado',
+ 'none' => 'Nenhum',
+ 'cancel' => 'Cancelar',
+ 'save' => 'Guardar',
+ 'close' => 'Fechar',
+ 'apply' => 'Apply',
+ 'undo' => 'Anular',
+ 'redo' => 'Refazer',
+ 'left' => 'Esquerda',
+ 'center' => 'Centro',
+ 'right' => 'Direita',
+ 'top' => 'Topo',
+ 'middle' => 'Meio',
+ 'bottom' => 'Fundo',
+ 'width' => 'Largura',
+ 'height' => 'Altura',
+ 'More' => 'Mais',
+ 'select' => 'Selecionar...',
+
+ // Toolbar
+ 'formats' => 'Formatos',
+ 'header_large' => 'Cabeçalho grande',
+ 'header_medium' => 'Cabeçalho médio',
+ 'header_small' => 'Cabeçalho pequeno',
+ 'header_tiny' => 'Cabeçalho minúsculo',
+ 'paragraph' => 'Parágrafo',
+ 'blockquote' => 'Citação',
+ 'inline_code' => 'Código embutido',
+ 'callouts' => 'Balões',
+ 'callout_information' => 'Informação',
+ 'callout_success' => 'Sucesso',
+ 'callout_warning' => 'Aviso',
+ 'callout_danger' => 'Perigo',
+ 'bold' => 'Negrito',
+ 'italic' => 'Itálico',
+ 'underline' => 'Sublinhado',
+ 'strikethrough' => 'Rasurado',
+ 'superscript' => 'Superior à linha',
+ 'subscript' => 'Inferior à linha',
+ 'text_color' => 'Cor do texto',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Cor personalizada',
+ 'remove_color' => 'Remover cor',
+ 'background_color' => 'Cor de fundo',
+ 'align_left' => 'Alinhar à esquerda',
+ 'align_center' => 'Alinhar ao centro',
+ 'align_right' => 'Alinhar à direita',
+ 'align_justify' => 'Justificar',
+ 'list_bullet' => 'Lista com marcadores',
+ 'list_numbered' => 'Lista numerada',
+ 'list_task' => 'Lista de tarefas',
+ 'indent_increase' => 'Aumentar recuo',
+ 'indent_decrease' => 'Diminuir recuo',
+ 'table' => 'Tabela',
+ 'insert_image' => 'Inserir imagem',
+ 'insert_image_title' => 'Inserir/Editar imagem',
+ 'insert_link' => 'Inserir/editar link',
+ 'insert_link_title' => 'Inserir/Editar link',
+ 'insert_horizontal_line' => 'Inserir linha horizontal',
+ 'insert_code_block' => 'Inserir código fonte',
+ 'edit_code_block' => 'Inserir código fonte',
+ 'insert_drawing' => 'Inserir/editar desenho',
+ 'drawing_manager' => 'Gestor de desenho',
+ 'insert_media' => 'Inserir/editar mídia',
+ 'insert_media_title' => 'Inserir/Editar Mídia',
+ 'clear_formatting' => 'Limpar formatação',
+ 'source_code' => 'Código fonte',
+ 'source_code_title' => 'Código Fonte',
+ 'fullscreen' => 'Ecrã completo',
+ 'image_options' => 'Opções da imagem',
+
+ // Tables
+ 'table_properties' => 'Propriedades da tabela',
+ 'table_properties_title' => 'Propriedades da Tabela',
+ 'delete_table' => 'Eliminar tabela',
+ 'table_clear_formatting' => 'Clear table formatting',
+ 'resize_to_contents' => 'Resize to contents',
+ 'row_header' => 'Row header',
+ 'insert_row_before' => 'Inserir linha antes',
+ 'insert_row_after' => 'Inserir linha depois',
+ 'delete_row' => 'Eliminar linha',
+ 'insert_column_before' => 'Insira coluna antes',
+ 'insert_column_after' => 'Inserir coluna depois',
+ 'delete_column' => 'Eliminar coluna',
+ 'table_cell' => 'Célula',
+ 'table_row' => 'Linha',
+ 'table_column' => 'Coluna',
+ 'cell_properties' => 'Propriedades da célula',
+ 'cell_properties_title' => 'Propriedades da Célula',
+ 'cell_type' => 'Tipo de célula',
+ 'cell_type_cell' => 'Célula',
+ 'cell_scope' => 'Âmbito',
+ 'cell_type_header' => 'Célula do cabeçalho',
+ 'merge_cells' => 'Unir células',
+ 'split_cell' => 'Dividir célula',
+ 'table_row_group' => 'Grupo de linhas',
+ 'table_column_group' => 'Grupo de colunas',
+ 'horizontal_align' => 'Alinhamento horizontal',
+ 'vertical_align' => 'Alinhamento vertical',
+ 'border_width' => 'Largura da borda',
+ 'border_style' => 'Estilo da borda',
+ 'border_color' => 'Cor da borda',
+ 'row_properties' => 'Propriedades da célula',
+ 'row_properties_title' => 'Propriedades da Célula',
+ 'cut_row' => 'Cortar linha',
+ 'copy_row' => 'Copiar linha',
+ 'paste_row_before' => 'Colar linha antes',
+ 'paste_row_after' => 'Colar linha depois',
+ 'row_type' => 'Tipo de linha',
+ 'row_type_header' => 'Cabeçalho',
+ 'row_type_body' => 'Corpo',
+ 'row_type_footer' => 'Rodapé',
+ 'alignment' => 'Alinhamento',
+ 'cut_column' => 'Cortar coluna',
+ 'copy_column' => 'Copiar coluna',
+ 'paste_column_before' => 'Colar coluna antes',
+ 'paste_column_after' => 'Colar coluna depois',
+ 'cell_padding' => 'Espaçamento da célula',
+ 'cell_spacing' => 'Espaçamento entre células',
+ 'caption' => 'Legenda',
+ 'show_caption' => 'Mostrar legenda',
+ 'constrain' => 'Restringir proporções',
+ 'cell_border_solid' => 'Sólido',
+ 'cell_border_dotted' => 'Pontilhado',
+ 'cell_border_dashed' => 'Tracejado',
+ 'cell_border_double' => 'Dupla',
+ 'cell_border_groove' => 'Groove',
+ 'cell_border_ridge' => 'Ridge',
+ 'cell_border_inset' => 'Interna',
+ 'cell_border_outset' => 'Externa',
+ 'cell_border_none' => 'Nenhuma',
+ 'cell_border_hidden' => 'Ocultada',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Fonte',
+ 'alt_desc' => 'Descrição alternativa',
+ 'embed' => 'Incorporar',
+ 'paste_embed' => 'Cole seu código abaixo:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Texto a ser exibido',
+ 'title' => 'Título',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Abrir ligação',
+ 'open_link_in' => 'Abrir ligação em...',
+ 'open_link_current' => 'Janela atual',
+ 'open_link_new' => 'Nova janela',
+ 'remove_link' => 'Remover ligação',
+ 'insert_collapsible' => 'Inserir bloco colapsável',
+ 'collapsible_unwrap' => 'Unwrap',
+ 'edit_label' => 'Editar etiqueta',
+ 'toggle_open_closed' => 'Alternar aberto/fechado',
+ 'collapsible_edit' => 'Editar bloco colapsável',
+ 'toggle_label' => 'Alternar etiqueta',
+
+ // About view
+ 'about' => 'Sobre o editor',
+ 'about_title' => 'Sobre o Editor WYSIWYG',
+ 'editor_license' => 'Editor da licença de direitos autorais',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'Este editor foi criado com :tinyLink que é fornecido sob a licença MIT.',
+ 'editor_tiny_license_link' => 'Os dados relativos aos direitos de autor e à licença do TinyMCE podem ser encontrados aqui.',
+ 'save_continue' => 'Salvar página e continuar',
+ 'callouts_cycle' => '(Continue pressionando para alternar através de tipos)',
+ 'link_selector' => 'Link para conteúdo',
+ 'shortcuts' => 'Atalhos',
+ 'shortcut' => 'Atalho',
+ 'shortcuts_intro' => 'Os seguintes atalhos estão disponíveis no editor:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Descrição',
+];
diff --git a/lang/pt/entities.php b/lang/pt/entities.php
new file mode 100644
index 00000000000..91fe6d90cd1
--- /dev/null
+++ b/lang/pt/entities.php
@@ -0,0 +1,476 @@
+ 'Criado recentemente',
+ 'recently_created_pages' => 'Páginas Criadas Recentemente',
+ 'recently_updated_pages' => 'Páginas Atualizadas Recentemente',
+ 'recently_created_chapters' => 'Capítulos Criados Recentemente',
+ 'recently_created_books' => 'Livros Criados Recentemente',
+ 'recently_created_shelves' => 'Estantes Criadas Recentemente',
+ 'recently_update' => 'Atualizados Recentemente',
+ 'recently_viewed' => 'Visualizados Recentemente',
+ 'recent_activity' => 'Atividade Recente',
+ 'create_now' => 'Criar um agora',
+ 'revisions' => 'Revisões',
+ 'meta_revision' => 'Revisão #:revisionCount',
+ 'meta_created' => 'Criado :timeLength',
+ 'meta_created_name' => 'Criado :timeLength por :user',
+ 'meta_updated' => 'Atualizado :timeLength',
+ 'meta_updated_name' => 'Atualizado :timeLength por :user',
+ 'meta_owned_name' => 'Propriedade de :user',
+ 'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
+ 'entity_select' => 'Seleção de Entidade',
+ 'entity_select_lack_permission' => 'Não tem as permissões necessárias para selecionar este item',
+ 'images' => 'Imagens',
+ 'my_recent_drafts' => 'Os Meus Rascunhos Recentes',
+ 'my_recently_viewed' => 'Visualizados Recentemente Por Mim',
+ 'my_most_viewed_favourites' => 'Os Meus Favoritos Mais Visualizados',
+ 'my_favourites' => 'Os Meus Favoritos',
+ 'no_pages_viewed' => 'Você não viu nenhuma página',
+ 'no_pages_recently_created' => 'Nenhuma página foi recentemente criada',
+ 'no_pages_recently_updated' => 'Nenhuma página foi recentemente atualizada',
+ 'export' => 'Exportar',
+ 'export_html' => 'Arquivo Web contido',
+ 'export_pdf' => 'Arquivo PDF',
+ 'export_text' => 'Arquivo Texto',
+ 'export_md' => 'Ficheiro Markdown',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Permissões',
+ 'permissions_desc' => 'Definir, aqui, as permissões para substituir o padrão fornecido por papéis de utilizadores.',
+ 'permissions_book_cascade' => 'Permissões definidas em livros serão automaticamente convertidas para páginas e capítulos filhos, a menos que tenham suas próprias permissões definidas.',
+ 'permissions_chapter_cascade' => 'Permissões definidas em capítulos serão automaticamente convertidas em páginas filhas, a menos que tenham suas próprias permissões definidas.',
+ 'permissions_save' => 'Guardar Permissões',
+ 'permissions_owner' => 'Proprietário',
+ 'permissions_role_everyone_else' => 'Restante',
+ 'permissions_role_everyone_else_desc' => 'Definir permissões para todos os papéis não substituídos especificamente.',
+ 'permissions_role_override' => 'Substituir permissões para o papel',
+ 'permissions_inherit_defaults' => 'Herdar padrões',
+
+ // Search
+ 'search_results' => 'Resultado(s) da Pesquisa',
+ 'search_total_results_found' => ':count resultado encontrado|:count resultados encontrados',
+ 'search_clear' => 'Limpar Pesquisa',
+ 'search_no_pages' => 'Nenhuma página corresponde à pesquisa',
+ 'search_for_term' => 'Pesquisar por :term',
+ 'search_more' => 'Mais Resultados',
+ 'search_advanced' => 'Pesquisa Avançada',
+ 'search_terms' => 'Termos da Pesquisa',
+ 'search_content_type' => 'Tipo de Conteúdo',
+ 'search_exact_matches' => 'Correspondências Exatas',
+ 'search_tags' => 'Persquisar Tags',
+ 'search_options' => 'Opções',
+ 'search_viewed_by_me' => 'Visualizado por mim',
+ 'search_not_viewed_by_me' => 'Não visualizado por mim',
+ 'search_permissions_set' => 'Permissão definida',
+ 'search_created_by_me' => 'Criado por mim',
+ 'search_updated_by_me' => 'Atualizado por mim',
+ 'search_owned_by_me' => 'Propriedade minha',
+ 'search_date_options' => 'Opções de Data',
+ 'search_updated_before' => 'Atualizado antes de',
+ 'search_updated_after' => 'Atualizado depois de',
+ 'search_created_before' => 'Criado antes de',
+ 'search_created_after' => 'Criado depois de',
+ 'search_set_date' => 'Definir Data',
+ 'search_update' => 'Atualizar pesquisa',
+
+ // Shelves
+ 'shelf' => 'Estante',
+ 'shelves' => 'Estantes',
+ 'x_shelves' => ':count Estante|:count Estantes',
+ 'shelves_empty' => 'Nenhuma estante foi criada',
+ 'shelves_create' => 'Criar Nova Estante',
+ 'shelves_popular' => 'Estantes Populares',
+ 'shelves_new' => 'Estantes Novas',
+ 'shelves_new_action' => 'Nova Estante',
+ 'shelves_popular_empty' => 'As estantes mais populares serão mostradas aqui.',
+ 'shelves_new_empty' => 'As mais recentes estantes criadas serão mostradas aqui.',
+ 'shelves_save' => 'Guardar Estante',
+ 'shelves_books' => 'Livros nesta estante',
+ 'shelves_add_books' => 'Adicionar livros a esta estante',
+ 'shelves_drag_books' => 'Arraste os livros abaixo para adicioná-los a esta prateleira',
+ 'shelves_empty_contents' => 'Esta estante não tem livros atribuídos',
+ 'shelves_edit_and_assign' => 'Editar estante para atribuir livros',
+ 'shelves_edit_named' => 'Editar Estante :name',
+ 'shelves_edit' => 'Editar estante',
+ 'shelves_delete' => 'Excluir estante',
+ 'shelves_delete_named' => 'Excluir Estante :name',
+ 'shelves_delete_explain' => "A ação vai eliminar a estante ':name'. Os livros nela presentes não serão eliminados.",
+ 'shelves_delete_confirmation' => 'Tem a certeza que deseja eliminar esta estante?',
+ 'shelves_permissions' => 'Permissões da Estante',
+ 'shelves_permissions_updated' => 'Permissões da Estante Atualizada',
+ 'shelves_permissions_active' => 'Permissões da Estante Ativas',
+ 'shelves_permissions_cascade_warning' => 'As permissões nas estantes não são passadas automaticamente em efeito dominó para os livros contidos. Isto acontece porque um livro pode existir em várias estantes. As permissões podem, no entanto, ser copiadas para livros filhos usando a opção abaixo.',
+ 'shelves_permissions_create' => 'As permissões de criação de prateleira são usadas apenas para copiar livros filhos usando a ação abaixo. Eles não controlam a capacidade de criar livros.',
+ 'shelves_copy_permissions_to_books' => 'Copiar Permissões para Livros',
+ 'shelves_copy_permissions' => 'Copiar Permissões',
+ 'shelves_copy_permissions_explain' => 'Isto aplicará as configurações de permissões atuais desta estante a todos os livros nela contidos. Antes de ativar, assegure-se de que quaisquer alterações nas permissões desta estante foram guardadas.',
+ 'shelves_copy_permission_success' => 'Permissões da estante copiadas para :count livros',
+
+ // Books
+ 'book' => 'Livro',
+ 'books' => 'Livros',
+ 'x_books' => ':count Livro|:count Livros',
+ 'books_empty' => 'Nenhum livro foi criado',
+ 'books_popular' => 'Livros Populares',
+ 'books_recent' => 'Livros Recentes',
+ 'books_new' => 'Livros Novos',
+ 'books_new_action' => 'Novo Livro',
+ 'books_popular_empty' => 'Os livros mais populares serão mostrados aqui.',
+ 'books_new_empty' => 'Os livros mais recentemente criados serão mostrados aqui.',
+ 'books_create' => 'Criar Livro Novo',
+ 'books_delete' => 'Eliminar Livro',
+ 'books_delete_named' => 'Eliminar Livro :bookName',
+ 'books_delete_explain' => 'A ação vai eliminar o livro com de nome \':bookName\'. Todas as páginas e capítulos serão também removidos.',
+ 'books_delete_confirmation' => 'Tem a certeza que quer eliminar este livro?',
+ 'books_edit' => 'Editar Livro',
+ 'books_edit_named' => 'Editar Livro :bookName',
+ 'books_form_book_name' => 'Nome do Livro',
+ 'books_save' => 'Guardar Livro',
+ 'books_permissions' => 'Permissões do Livro',
+ 'books_permissions_updated' => 'Permissões do Livro Atualizadas',
+ 'books_empty_contents' => 'Nenhuma página ou capítulo foram criados para este livro.',
+ 'books_empty_create_page' => 'Criar uma nova página',
+ 'books_empty_sort_current_book' => 'Ordenar o livro atual',
+ 'books_empty_add_chapter' => 'Adicionar um capítulo',
+ 'books_permissions_active' => 'Permissões do Livro Ativas',
+ 'books_search_this' => 'Pesquisar neste livro',
+ 'books_navigation' => 'Navegação do Livro',
+ 'books_sort' => 'Ordenar Conteúdos do Livro',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Ordenar Livro :bookName',
+ 'books_sort_name' => 'Ordenar por Nome',
+ 'books_sort_created' => 'Ordenar por Data de Criação',
+ 'books_sort_updated' => 'Ordenar por Data de Atualização',
+ 'books_sort_chapters_first' => 'Capítulos Primeiro',
+ 'books_sort_chapters_last' => 'Capítulos por Último',
+ 'books_sort_show_other' => 'Mostrar Outros Livros',
+ 'books_sort_save' => 'Guardar Nova Ordenação',
+ 'books_sort_show_other_desc' => 'Adicione outros livros aqui para incluí-los na operação de classificação e permitir a reorganização fácil de todos os livros.',
+ 'books_sort_move_up' => 'Mover para Cima',
+ 'books_sort_move_down' => 'Mover para baixo',
+ 'books_sort_move_prev_book' => 'Mover para o Livro Anterior',
+ 'books_sort_move_next_book' => 'Mover para o próximo livro',
+ 'books_sort_move_prev_chapter' => 'Mover para o Capítulo Anterior',
+ 'books_sort_move_next_chapter' => 'Mover para o próximo Capítulo',
+ 'books_sort_move_book_start' => 'Mover para o início do livro',
+ 'books_sort_move_book_end' => 'Mover para o final do livro',
+ 'books_sort_move_before_chapter' => 'Mover para Antes do Capítulo',
+ 'books_sort_move_after_chapter' => 'Mover para Depois do Capítulo',
+ 'books_copy' => 'Copiar livro',
+ 'books_copy_success' => 'Livro criado com sucesso',
+
+ // Chapters
+ 'chapter' => 'Capítulo',
+ 'chapters' => 'Capítulos',
+ 'x_chapters' => ':count Capítulo|:count Capítulos',
+ 'chapters_popular' => 'Capítulos Populares',
+ 'chapters_new' => 'Novo Capítulo',
+ 'chapters_create' => 'Criar Novo Capítulo',
+ 'chapters_delete' => 'Eliminar Capítulo',
+ 'chapters_delete_named' => 'Eliminar Capítulo :chapterName',
+ 'chapters_delete_explain' => 'Isto irá eliminar o capítulo com o nome \':chapterName\'. Todas as páginas existentes dentro do mesmo serão também eliminadas.',
+ 'chapters_delete_confirm' => 'Tem certeza que deseja eliminar o capítulo?',
+ 'chapters_edit' => 'Editar Capítulo',
+ 'chapters_edit_named' => 'Editar Capítulo :chapterName',
+ 'chapters_save' => 'Guardar Capítulo',
+ 'chapters_move' => 'Mover Capítulo',
+ 'chapters_move_named' => 'Mover Capítulo :chapterName',
+ 'chapters_copy' => 'Copiar capítulo',
+ 'chapters_copy_success' => 'Capítulo copiado com sucesso',
+ 'chapters_permissions' => 'Permissões do Capítulo',
+ 'chapters_empty' => 'Nenhuma página existente neste capítulo.',
+ 'chapters_permissions_active' => 'Permissões de Capítulo Ativas',
+ 'chapters_permissions_success' => 'Permissões de Capítulo Atualizadas',
+ 'chapters_search_this' => 'Pesquisar neste Capítulo',
+ 'chapter_sort_book' => 'Ordenar livro',
+
+ // Pages
+ 'page' => 'Página',
+ 'pages' => 'Páginas',
+ 'x_pages' => ':count Página|:count Páginas',
+ 'pages_popular' => 'Páginas Populares',
+ 'pages_new' => 'Nova Página',
+ 'pages_attachments' => 'Anexos',
+ 'pages_navigation' => 'Navegação da Página',
+ 'pages_delete' => 'Eliminar Página',
+ 'pages_delete_named' => 'Eliminar Página :pageName',
+ 'pages_delete_draft_named' => 'Eliminar Rascunho de Página de nome :pageName',
+ 'pages_delete_draft' => 'Eliminar Rascunho de Página',
+ 'pages_delete_success' => 'Página eliminada',
+ 'pages_delete_draft_success' => 'Rascunho de página eliminado',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Tem certeza que deseja eliminar a página?',
+ 'pages_delete_draft_confirm' => 'Tem certeza que deseja eliminar o rascunho de página?',
+ 'pages_editing_named' => 'A Editar a Página :pageName',
+ 'pages_edit_draft_options' => 'Opções de Rascunho',
+ 'pages_edit_save_draft' => 'Guardar Rascunho',
+ 'pages_edit_draft' => 'Editar Rascunho de Página',
+ 'pages_editing_draft' => 'A Editar Rascunho',
+ 'pages_editing_page' => 'A Editar Página',
+ 'pages_edit_draft_save_at' => 'Rascunho guardado em ',
+ 'pages_edit_delete_draft' => 'Eliminar Rascunho',
+ 'pages_edit_delete_draft_confirm' => 'Tem a certeza que deseja eliminar o rascunha da página? Todas as alterações, desde o último carregamento, será perdido e o editor será atualizado com o último estado guardo da página.',
+ 'pages_edit_discard_draft' => 'Descartar Rascunho',
+ 'pages_edit_switch_to_markdown' => 'Alternar para o editor Markdown',
+ 'pages_edit_switch_to_markdown_clean' => '(Conteúdo Limitado)',
+ 'pages_edit_switch_to_markdown_stable' => '(Conteúdo Estável)',
+ 'pages_edit_switch_to_wysiwyg' => 'Alternar para o editor WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Relatar Alterações',
+ 'pages_edit_enter_changelog_desc' => 'Digite uma breve descrição das alterações efetuadas por si',
+ 'pages_edit_enter_changelog' => 'Inserir Alterações',
+ 'pages_editor_switch_title' => 'Trocar de Editor',
+ 'pages_editor_switch_are_you_sure' => 'Você tem certeza que deseja alterar o editor para esta página?',
+ 'pages_editor_switch_consider_following' => 'Considere o seguinte ao alterar editores:',
+ 'pages_editor_switch_consideration_a' => 'Uma vez alterada, o novo editor será usado por quaisquer editores futuros, incluindo aqueles que podem não ser capazes de mudar o tipo do editor.',
+ 'pages_editor_switch_consideration_b' => 'Isso pode levar a uma perda de detalhes e sintaxe em certas circunstâncias.',
+ 'pages_editor_switch_consideration_c' => 'Etiqueta ou alterações no \'changelog\', não guardadas, não persistem nesta alteração.',
+ 'pages_save' => 'Guardar Página',
+ 'pages_title' => 'Título da Página',
+ 'pages_name' => 'Nome da Página',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Pré-Visualização',
+ 'pages_md_insert_image' => 'Inserir Imagem',
+ 'pages_md_insert_link' => 'Inserir Link para Entidade',
+ 'pages_md_insert_drawing' => 'Inserir Desenho',
+ 'pages_md_show_preview' => 'Mostrar pré-visualização',
+ 'pages_md_sync_scroll' => 'Sincronizar pré-visualização',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Encontrado um rascunho não guardado',
+ 'pages_drawing_unsaved_confirm' => 'Dados de um rascunho não guardado foi encontrado de um tentativa anteriormente falhada. Deseja restaurar e continuar a edição desse rascunho?',
+ 'pages_not_in_chapter' => 'A página não está dentro de um capítulo',
+ 'pages_move' => 'Mover Página',
+ 'pages_copy' => 'Copiar Página',
+ 'pages_copy_desination' => 'Destino da Cópia',
+ 'pages_copy_success' => 'Página copiada com sucesso',
+ 'pages_permissions' => 'Permissões da Página',
+ 'pages_permissions_success' => 'Permissões da Página atualizadas',
+ 'pages_revision' => 'Revisão',
+ 'pages_revisions' => 'Revisões da Página',
+ 'pages_revisions_desc' => 'Abaixo estão listadas todas as revisões anteriores desta página. Pode analisar, comparar e restaurar versões de páginas antigas se as permissões o permitirem. O histórico completo da página pode não ser totalmente refletido aqui, uma vez que, dependendo da configuração do sistema, revisões antigas podem ser auto-excluídas.',
+ 'pages_revisions_named' => 'Revisões de Página para :pageName',
+ 'pages_revision_named' => 'Revisão de Página para :pageName',
+ 'pages_revision_restored_from' => 'Recuperado de #:id; :summary',
+ 'pages_revisions_created_by' => 'Criado por',
+ 'pages_revisions_date' => 'Data da Revisão',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Número da Revisão',
+ 'pages_revisions_numbered' => 'Revisão #:id',
+ 'pages_revisions_numbered_changes' => 'Alterações da Revisão #:id',
+ 'pages_revisions_editor' => 'Tipo de editor',
+ 'pages_revisions_changelog' => 'Relatório de Alterações',
+ 'pages_revisions_changes' => 'Alterações',
+ 'pages_revisions_current' => 'Versão Atual',
+ 'pages_revisions_preview' => 'Pré-Visualização',
+ 'pages_revisions_restore' => 'Restaurar',
+ 'pages_revisions_none' => 'Essa página não tem revisões',
+ 'pages_copy_link' => 'Copiar Link',
+ 'pages_edit_content_link' => 'Ir para a secção de edição',
+ 'pages_pointer_enter_mode' => 'Inserir modo de seleção',
+ 'pages_pointer_label' => 'Opções da Secção do Título',
+ 'pages_pointer_permalink' => 'Ligação da Secção de Página',
+ 'pages_pointer_include_tag' => 'Tag de Inclusão da Secção de Página',
+ 'pages_pointer_toggle_link' => 'Modo de ligação, Pressionar para mostrar a tag de inclusão',
+ 'pages_pointer_toggle_include' => 'Modo de tag de inclusão, Pressione para mostrar a ligação',
+ 'pages_permissions_active' => 'Permissões de Página Ativas',
+ 'pages_initial_revision' => 'Publicação Inicial',
+ 'pages_references_update_revision' => 'Atualização automática do sistema de links internos',
+ 'pages_initial_name' => 'Nova Página',
+ 'pages_editing_draft_notification' => 'Você está atualmente a editar um rascunho que foi guardado pela última vez a :timeDiff.',
+ 'pages_draft_edited_notification' => 'Esta página entretanto já foi atualizada. É recomendado que você descarte este rascunho.',
+ 'pages_draft_page_changed_since_creation' => 'Esta página foi atualizada desde que este rascunho foi criado. É recomendável que descarte este rascunho ou tenha cuidado para não sobrescrever nenhuma alteração de página.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count usuários iniciaram a edição dessa página',
+ 'start_b' => ':userName iniciou a edição desta página',
+ 'time_a' => 'desde que a página foi atualizada pela última vez',
+ 'time_b' => 'nos últimos :minCount minutos',
+ 'message' => ':start :time. Tenha cuidado para não sobrescrever atualizações de outras pessoas!',
+ ],
+ 'pages_draft_discarded' => 'Rascunho eliminado! O editor foi atualizado com o conteúdo atual da página',
+ 'pages_draft_deleted' => 'Rascunho eliminado! O editor foi atualizado com o conteúdo atual da página',
+ 'pages_specific' => 'Página Específica',
+ 'pages_is_template' => 'Modelo de Página',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Alternar barra lateral',
+ 'page_tags' => 'Etiquetas de Página',
+ 'chapter_tags' => 'Etiquetas do Capítulo',
+ 'book_tags' => 'Etiquetas do Livro',
+ 'shelf_tags' => 'Etiquetas da Prateleira',
+ 'tag' => 'Etiqueta',
+ 'tags' => 'Etiquetas',
+ 'tags_index_desc' => 'As etiquetas podem ser aplicadas a conteúdos do sistema para aplicar uma forma flexível de categorização. As etiquetas podem ter uma chave e um valor, sendo o valor opcional. Uma vez aplicado, o conteúdo pode ser consultado através do nome e/ou do valor da etiqueta.',
+ 'tag_name' => 'Nome da Etiqueta',
+ 'tag_value' => 'Valor da Etiqueta (Opcional)',
+ 'tags_explain' => "Adicione algumas etiquetas para melhor categorizar o seu conteúdo. \n Você poderá atribuir valores às etiquetas para uma organização mais complexa.",
+ 'tags_add' => 'Adicionar outra etiqueta',
+ 'tags_remove' => 'Remover esta etiqueta',
+ 'tags_usages' => 'Total de marcadores usados',
+ 'tags_assigned_pages' => 'Atribuído às páginas',
+ 'tags_assigned_chapters' => 'Atribuído aos Capítulos',
+ 'tags_assigned_books' => 'Atribuído a Livros',
+ 'tags_assigned_shelves' => 'Atribuído a Prateleiras',
+ 'tags_x_unique_values' => ':count valores únicos',
+ 'tags_all_values' => 'Todos os valores',
+ 'tags_view_tags' => 'Ver Marcadores',
+ 'tags_view_existing_tags' => 'Ver marcadores existentes',
+ 'tags_list_empty_hint' => 'As tags podem ser atribuídas através da barra lateral do editor de página ou ao editar os detalhes de um livro, capítulo ou prateleira.',
+ 'attachments' => 'Anexos',
+ 'attachments_explain' => 'Carregue alguns arquivos ou anexe links para serem exibidos na sua página. Eles estarão visíveis na barra lateral à direita.',
+ 'attachments_explain_instant_save' => 'As mudanças são guardadas instantaneamente.',
+ 'attachments_upload' => 'Carregamento de Arquivos',
+ 'attachments_link' => 'Anexar Link',
+ 'attachments_upload_drop' => 'Como alternativa, pode arrastar e soltar um arquivo aqui para carregá-lo como um anexo.',
+ 'attachments_set_link' => 'Definir Link',
+ 'attachments_delete' => 'Tem certeza de que deseja eliminar este anexo?',
+ 'attachments_dropzone' => 'Arrasta para aqui um ficheiro para o carregar',
+ 'attachments_no_files' => 'Nenhum arquivo foi enviado',
+ 'attachments_explain_link' => 'Pode anexar um link se preferir não fazer o carregamento do arquivo. O link poderá ser para uma outra página ou para um arquivo na nuvem.',
+ 'attachments_link_name' => 'Nome do Link',
+ 'attachment_link' => 'Link do Anexo',
+ 'attachments_link_url' => 'Link para o Arquivo',
+ 'attachments_link_url_hint' => 'Url do sítio ou arquivo',
+ 'attach' => 'Anexar',
+ 'attachments_insert_link' => 'Adicionar Link de Anexo à Página',
+ 'attachments_edit_file' => 'Editar Arquivo',
+ 'attachments_edit_file_name' => 'Nome do Arquivo',
+ 'attachments_edit_drop_upload' => 'Arraste arquivos para aqui ou carregue para anexar arquivos e sobrescreve-los',
+ 'attachments_order_updated' => 'Ordem dos anexos atualizada',
+ 'attachments_updated_success' => 'Detalhes dos anexos atualizados',
+ 'attachments_deleted' => 'Anexo eliminado',
+ 'attachments_file_uploaded' => 'Carregamento de arquivo efetuado com sucesso',
+ 'attachments_file_updated' => 'Arquivo atualizado com sucesso',
+ 'attachments_link_attached' => 'Link anexado com sucesso à página',
+ 'templates' => 'Modelos',
+ 'templates_set_as_template' => 'A página é um modelo',
+ 'templates_explain_set_as_template' => 'Pode definir esta página como um modelo para que o seu conteúdo possa ser utilizado para criar outras páginas. Outros usuários poderão utilizar esta página como modelo se tiverem permissão para visualiza-la.',
+ 'templates_replace_content' => 'Substituir conteúdo da página',
+ 'templates_append_content' => 'Adicionar ao fim do conteúdo da página',
+ 'templates_prepend_content' => 'Adicionar ao início do conteúdo da página',
+
+ // Profile View
+ 'profile_user_for_x' => 'Utilizador por :time',
+ 'profile_created_content' => 'Conteúdo Criado',
+ 'profile_not_created_pages' => ':userName não criou páginas',
+ 'profile_not_created_chapters' => ':userName não criou capítulos',
+ 'profile_not_created_books' => ':userName não criou livros',
+ 'profile_not_created_shelves' => ':userName não criou estantes',
+
+ // Comments
+ 'comment' => 'Comentário',
+ 'comments' => 'Comentários',
+ 'comment_add' => 'Adicionar Comentário',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Digite aqui os seus comentários',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Guardar comentário',
+ 'comment_new' => 'Comentário Novo',
+ 'comment_created' => 'comentado :createDiff',
+ 'comment_updated' => 'A editar :updateDiff por :username',
+ 'comment_updated_indicator' => 'Atualizado',
+ 'comment_deleted_success' => 'Comentário removido',
+ 'comment_created_success' => 'Comentário adicionado',
+ 'comment_updated_success' => 'Comentário editado',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Tem a certeza de que deseja eliminar este comentário?',
+ 'comment_in_reply_to' => 'Em resposta à :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Aqui estão os comentários que foram deixados nesta página. Comentários podem ser adicionados e geridos ao visualizar a página guardada.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Tem a certeza de que deseja eliminar esta revisão?',
+ 'revision_restore_confirm' => 'Tem a certeza que deseja restaurar esta revisão? O conteúdo atual da página será substituído.',
+ 'revision_cannot_delete_latest' => 'Não é possível eliminar a revisão mais recente.',
+
+ // Copy view
+ 'copy_consider' => 'Ao copiar conteúdo considere, por favor, a informação abaixo.',
+ 'copy_consider_permissions' => 'Configurações personalizada não serão copiadas.',
+ 'copy_consider_owner' => 'Você se tornará o proprietário de todos os conteúdos copiados.',
+ 'copy_consider_images' => 'A imagem da página não será duplicada e as imagens originais manterão sua relação com a página para a qual foram enviadas originalmente.',
+ 'copy_consider_attachments' => 'Anexos da página não serão copiados.',
+ 'copy_consider_access' => 'Uma alteração de localização, proprietário ou permissões pode resultar em que este conteúdo seja acessível para aqueles previamente sem acesso.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Converter para prateleira',
+ 'convert_to_shelf_contents_desc' => 'Você pode converter este livro em uma nova prateleira com o mesmo conteúdo. Capítulos contidos neste livro serão convertidos em novos livros. Se este livro contiver alguma página, que não estão em um capítulo, este livro será renomeado contendo essas páginas, e o mesmo se tornará parte da nova prateleira.',
+ 'convert_to_shelf_permissions_desc' => 'Quaisquer permissões definidas neste livro serão copiadas para a nova prateleira e para todos os novos livros filhos que não tenham as suas próprias permissões impostas. Observe que as permissões nas prateleiras não são do tipo cascata como o são para os livros.',
+ 'convert_book' => 'Converter Livro',
+ 'convert_book_confirm' => 'Tem a certeza de que deseja converter este livro?',
+ 'convert_undo_warning' => 'Isto não pode ser tão facilmente desfeito.',
+ 'convert_to_book' => 'Converter para Livro',
+ 'convert_to_book_desc' => 'Você pode converter este capítulo em um novo livro com o mesmo conteúdo. Qualquer permissão definida neste capítulo será copiada para o novo livro, mas para as permissões herdadas, do livro pai não será copiado que possa levar a uma mudança de controlo de acesso.',
+ 'convert_chapter' => 'Converter Capítulo',
+ 'convert_chapter_confirm' => 'Tem certeza de que deseja converter este capítulo?',
+
+ // References
+ 'references' => 'Referências',
+ 'references_none' => 'Não há referências registadas para este item.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Ver',
+ 'watch_title_default' => 'Preferências Predefinidas',
+ 'watch_desc_default' => 'Reverter visualização para as preferências de notificação padrão.',
+ 'watch_title_ignore' => 'Ignorar',
+ 'watch_desc_ignore' => 'Ignorar todas as notificações, incluindo as de preferências de nível de usuário.',
+ 'watch_title_new' => 'Novas Páginas',
+ 'watch_desc_new' => 'Notificar quando qualquer nova página for criada dentro deste item.',
+ 'watch_title_updates' => 'Todas as atualizações da página',
+ 'watch_desc_updates' => 'Notificar sobre todas as novas páginas e alterações na página.',
+ 'watch_desc_updates_page' => 'Notificar sobre todas as alterações da página.',
+ 'watch_title_comments' => 'Todas as atualizações e comentários da página',
+ 'watch_desc_comments' => 'Notificar sobre todas as novas páginas, alterações de página e novos comentários.',
+ 'watch_desc_comments_page' => 'Notificar sobre alterações na página e novos comentários.',
+ 'watch_change_default' => 'Alterar preferências padrão de notificação',
+ 'watch_detail_ignore' => 'Ignorar notificações',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'A ignorar através do livro pai',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/pt/errors.php b/lang/pt/errors.php
new file mode 100644
index 00000000000..522d7f4c81a
--- /dev/null
+++ b/lang/pt/errors.php
@@ -0,0 +1,135 @@
+ 'Você não tem permissão para aceder à página requisitada.',
+ 'permissionJson' => 'Você não tem permissão para realizar a ação requerida.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Um utilizador com o endereço de e-mail :email já existe mas com credenciais diferentes.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'E-mail já foi confirmado. Tente iniciar sessão.',
+ 'email_confirmation_invalid' => 'Este token de confirmação não é válido ou já foi utilizado. Por favor, tente registar-se novamente.',
+ 'email_confirmation_expired' => 'O token de confirmação já expirou. Um novo e-mail foi enviado.',
+ 'email_confirmation_awaiting' => 'O endereço de e-mail da conta em uso precisa ser confirmado',
+ 'ldap_fail_anonymous' => 'O acesso LDAP falhou ao tentar usar o anonymous bind',
+ 'ldap_fail_authed' => 'O acesso LDAP falhou ao tentar os detalhes do dn e senha fornecidos',
+ 'ldap_extension_not_installed' => 'A extensão LDAP PHP não está instalada',
+ 'ldap_cannot_connect' => 'Não foi possível conectar ao servidor LDAP. Conexão inicial falhou',
+ 'saml_already_logged_in' => 'Sessão já iniciada',
+ 'saml_no_email_address' => 'Não foi possível encontrar um endereço de e-mail para este utilizador nos dados providenciados pelo sistema de autenticação externa',
+ 'saml_invalid_response_id' => 'A requisição do sistema de autenticação externa não foi reconhecia por um processo iniciado por esta aplicação. Navegar para o caminho anterior após o inicio de sessão pode provocar este problema.',
+ 'saml_fail_authed' => 'Inicio de sessão com :system falhou. O sistema não forneceu uma autorização bem sucedida',
+ 'oidc_already_logged_in' => 'Sessão já iniciada',
+ 'oidc_no_email_address' => 'Não foi possível encontrar um endereço de e-mail para este utilizador nos dados providenciados pelo sistema de autenticação externo',
+ 'oidc_fail_authed' => 'Inicio de sessão com :system falhou. O sistema não forneceu uma autorização bem sucedida',
+ 'social_no_action_defined' => 'Nenhuma ação definida',
+ 'social_login_bad_response' => "Erro recebido durante o inicio de sessão :socialAccount: \n:error",
+ 'social_account_in_use' => 'Esta conta :socialAccount já está em uso. Por favor, tente entrar utilizando a opção :socialAccount.',
+ 'social_account_email_in_use' => 'O e-mail :email já está em uso. Se já possui uma conta poderá ligar a sua conta :socialAccount a partir das configurações do seu perfil.',
+ 'social_account_existing' => 'Esta conta :socialAccount já está vinculada a este perfil.',
+ 'social_account_already_used_existing' => 'Esta conta :socialAccount já está a ser utilizada por outro utilizador.',
+ 'social_account_not_used' => 'Esta conta :socialAccount não está vinculada a nenhum utilizador. Por favor vincule a conta nas suas configurações de perfil. ',
+ 'social_account_register_instructions' => 'Se não possui uma conta, poderá registar-se utilizando a opção :socialAccount.',
+ 'social_driver_not_found' => 'Social driver não encontrado',
+ 'social_driver_not_configured' => 'Os seus parâmetros sociais de :socialAccount não estão corretamente configurados.',
+ 'invite_token_expired' => 'Este link de convite expirou. Alternativamente, pode tentar redefinir a senha da sua conta.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // System
+ 'path_not_writable' => 'O caminho do arquivo :filePath não pôde ser carregado. Certifique-se de que tem permissões de escrita no servidor.',
+ 'cannot_get_image_from_url' => 'Não foi possível obter a imagem a partir de :url',
+ 'cannot_create_thumbs' => 'O servidor não pôde criar as miniaturas de imagem. Por favor, verifique se a extensão GD PHP está instalada.',
+ 'server_upload_limit' => 'O servidor não permite o carregamento de arquivos com esse tamanho. Por favor, tente fazer o carregamento de arquivos mais pequenos.',
+ 'server_post_limit' => 'O servidor não pode receber a quantidade de dados fornecida. Tente novamente com menos dados ou um arquivo menor.',
+ 'uploaded' => 'O servidor não permite o carregamento de arquivos com esse tamanho. Por favor, tente fazer o carregamento de arquivos mais pequenos.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Ocorreu um erro no carregamento da imagem',
+ 'image_upload_type_error' => 'O tipo de imagem enviada é inválida',
+ 'image_upload_replace_type' => 'A imagem de substituição deverá ser do mesmo tipo que a anterior',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Dados de desenho não puderam ser carregados. Talvez o arquivo de desenho não exista mais ou não tenha permissão para aceder-lhe.',
+
+ // Attachments
+ 'attachment_not_found' => 'Anexo não encontrado',
+ 'attachment_upload_error' => 'Ocorreu um erro no carregamento do ficheiro',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Falha ao tentar guardar o rascunho. Certifique-se que a conexão de Internet está funcional antes de tentar guardar esta página',
+ 'page_draft_delete_fail' => 'Eliminação do rascunho de página e importação do conteúdo salvo da página falhou',
+ 'page_custom_home_deletion' => 'Não é possível eliminar uma página que está definida como página inicial',
+
+ // Entities
+ 'entity_not_found' => 'Entidade não encontrada',
+ 'bookshelf_not_found' => 'Estante não encontrada',
+ 'book_not_found' => 'Livro não encontrado',
+ 'page_not_found' => 'Página não encontrada',
+ 'chapter_not_found' => 'Capítulo não encontrado',
+ 'selected_book_not_found' => 'O livro selecionado não foi encontrado',
+ 'selected_book_chapter_not_found' => 'O Livro ou Capítulo selecionado não foi encontrado',
+ 'guests_cannot_save_drafts' => 'Convidados não podem guardar rascunhos',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Não pode excluir o único administrador',
+ 'users_cannot_delete_guest' => 'Não pode excluir o usuário convidado',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Este cargo não pode ser editado',
+ 'role_system_cannot_be_deleted' => 'Este cargo é um cargo do sistema e não pode ser excluído',
+ 'role_registration_default_cannot_delete' => 'Este cargo não poderá se excluído enquanto estiver definido como o cargo padrão',
+ 'role_cannot_remove_only_admin' => 'Este utilizador é o único vinculado ao cargo de administrador. Atribua o cargo de administrador a outro antes de tentar removê-lo aqui.',
+
+ // Comments
+ 'comment_list' => 'Ocorreu um erro ao recolher os comentários.',
+ 'cannot_add_comment_to_draft' => 'Não pode adicionar comentários a um rascunho.',
+ 'comment_add' => 'Ocorreu um erro ao adicionar/atualizar o comentário.',
+ 'comment_delete' => 'Ocorreu um erro ao eliminar o comentário.',
+ 'empty_comment' => 'Não é possível adicionar um comentário vazio.',
+
+ // Error pages
+ '404_page_not_found' => 'Página Não Encontrada',
+ 'sorry_page_not_found' => 'Desculpe, a página que procura não foi encontrada.',
+ 'sorry_page_not_found_permission_warning' => 'Se esperava que esta página existisse, talvez não tenha permissão para visualizá-la.',
+ 'image_not_found' => 'Imagem não encontrada',
+ 'image_not_found_subtitle' => 'Desculpe, o arquivo de imagem que estava à procura não foi encontrado.',
+ 'image_not_found_details' => 'Se estava à espera que a mesma existisse é possível que tenha sido eliminada.',
+ 'return_home' => 'Regressar à página inicial',
+ 'error_occurred' => 'Ocorreu um Erro',
+ 'app_down' => ':appName está fora do ar de momento',
+ 'back_soon' => 'Voltaremos em breve.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Nenhum token de autorização encontrado na requisição',
+ 'api_bad_authorization_format' => 'Um token de autorização foi encontrado na requisição, mas o formato parece incorreto',
+ 'api_user_token_not_found' => 'Nenhum token de API correspondente foi encontrado para o token de autorização fornecido',
+ 'api_incorrect_token_secret' => 'O segredo fornecido para o token de API usado está incorreto',
+ 'api_user_no_api_permission' => 'O proprietário do token de API utilizado não tem permissão para fazer requisições de API',
+ 'api_user_token_expired' => 'O token de autenticação expirou',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Erro lançado ao enviar um e-mail de teste:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'The URL does not match the configured allowed SSR hosts',
+];
diff --git a/lang/pt/notifications.php b/lang/pt/notifications.php
new file mode 100644
index 00000000000..cbe3a511c88
--- /dev/null
+++ b/lang/pt/notifications.php
@@ -0,0 +1,29 @@
+ 'Novo comentário na página: :pageName',
+ 'new_comment_intro' => 'Um utilizador comentou uma página em :appName:',
+ 'new_page_subject' => 'Nova página: :pageName',
+ 'new_page_intro' => 'Uma nova página foi criada em :appName:',
+ 'updated_page_subject' => 'Página atualizada: :pageName',
+ 'updated_page_intro' => 'Uma página foi atualizada em :appName:',
+ 'updated_page_debounce' => 'Para evitar um grande volume de notificações, durante algum tempo não serão enviadas notificações de edições futuras para esta página através do mesmo editor.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Nome da Página:',
+ 'detail_page_path' => 'Page Path:',
+ 'detail_commenter' => 'Comentador:',
+ 'detail_comment' => 'Comentário:',
+ 'detail_created_by' => 'Criado Por:',
+ 'detail_updated_by' => 'Atualizado Por:',
+
+ 'action_view_comment' => 'Ver Comentário',
+ 'action_view_page' => 'Ver Página',
+
+ 'footer_reason' => 'Esta notificação foi enviada a você porque :link cobre este tipo de atividade para este item.',
+ 'footer_reason_link' => 'suas preferências de notificação',
+];
diff --git a/resources/lang/pt/pagination.php b/lang/pt/pagination.php
similarity index 100%
rename from resources/lang/pt/pagination.php
rename to lang/pt/pagination.php
diff --git a/resources/lang/pt/passwords.php b/lang/pt/passwords.php
similarity index 100%
rename from resources/lang/pt/passwords.php
rename to lang/pt/passwords.php
diff --git a/lang/pt/preferences.php b/lang/pt/preferences.php
new file mode 100644
index 00000000000..b7308aaf910
--- /dev/null
+++ b/lang/pt/preferences.php
@@ -0,0 +1,52 @@
+ 'A Minha Conta',
+
+ 'shortcuts' => 'Atalhos',
+ 'shortcuts_interface' => 'Preferências de Atalho UI',
+ 'shortcuts_toggle_desc' => 'Aqui pode ativar ou desativar os atalhos de teclado do sistema, usados para navegação e ações.',
+ 'shortcuts_customize_desc' => 'Pode personalizar cada um dos atalhos abaixo. Pressione a combinação de tecla desejada após selecionar a entrada para um atalho.',
+ 'shortcuts_toggle_label' => 'Atalhos de teclado ativados',
+ 'shortcuts_section_navigation' => 'Navegação',
+ 'shortcuts_section_actions' => 'Ações comuns',
+ 'shortcuts_save' => 'Salvar Atalhos',
+ 'shortcuts_overlay_desc' => 'Nota: Quando os atalhos estão ativados, um balão de ajuda ficará disponível pressionando "?" destacando os atalhos disponíveis para ações atualmente visíveis na tela.',
+ 'shortcuts_update_success' => 'As suas preferências de atalhos foram guardadas!',
+ 'shortcuts_overview_desc' => 'Gerir atalhos do teclado que podem ser usados para navegar pela interface do utilizador.',
+
+ 'notifications' => 'Preferências das Notificações',
+ 'notifications_desc' => 'Controlar as notificações via correio eletrónico quando certas atividades são executadas pelo sistema.',
+ 'notifications_opt_own_page_changes' => 'Notificar quando páginas que possuo sofrem alterações',
+ 'notifications_opt_own_page_comments' => 'Notificar quando comentam páginas que possuo',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notificar respostas aos meus comentários',
+ 'notifications_save' => 'Guardar preferências',
+ 'notifications_update_success' => 'Preferências de notificação foram atualizadas!',
+ 'notifications_watched' => 'Itens assistidos e ignorados',
+ 'notifications_watched_desc' => 'Abaixo estão os itens que possuem preferências de seguir personalizadas aplicadas. Para atualizar suas preferências para estes, veja o item e encontre as opções de seguir na barra lateral.',
+
+ 'auth' => 'Acesso e Segurança',
+ 'auth_change_password' => 'Alterar Palavra-passe',
+ 'auth_change_password_desc' => 'Altere a palavra-passe que você usa para entrar no aplicativo. Ela deve ter pelo menos 8 caracteres.',
+ 'auth_change_password_success' => 'A palavra-passe foi atualizada!',
+
+ 'profile' => 'Detalhes Do Perfil',
+ 'profile_desc' => 'Gerencie os detalhes de sua conta que o representam para outros usuários, além de detalhes que são usados para personalização do sistema e comunicação.',
+ 'profile_view_public' => 'Visualizar Perfil Público',
+ 'profile_name_desc' => 'Configure o seu nome de exibição que será visível para outros usuários no sistema através da atividade que você executa e do conteúdo você tem.',
+ 'profile_email_desc' => 'Este e-mail será usado para notificações e, dependendo da autenticação ativa do sistema, acesso do sistema.',
+ 'profile_email_no_permission' => 'Infelizmente você não tem permissão para alterar seu correio eletrônico. Se você quiser mudar isso, você precisa pedir a um administrador para alterar por você.',
+ 'profile_avatar_desc' => 'Selecione uma imagem que será usada para lhe representar aos outros usuários do sistema. Idealmente, esta imagem deve ser quadrada e sobre 256px em largura e altura.',
+ 'profile_admin_options' => 'Opções de administrador',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Excluir Conta',
+ 'delete_my_account' => 'Excluir a Minha Conta',
+ 'delete_my_account_desc' => 'Isto excluirá completamente sua conta de utilizador do sistema. Você não poderá recuperar esta conta ou reverter esta ação. O conteúdo que você criou, como páginas criadas e imagens carregadas, permanecerá.',
+ 'delete_my_account_warning' => 'Tem certeza que deseja excluir sua conta?',
+];
diff --git a/lang/pt/settings.php b/lang/pt/settings.php
new file mode 100644
index 00000000000..a59335b7cee
--- /dev/null
+++ b/lang/pt/settings.php
@@ -0,0 +1,374 @@
+ 'Configurações',
+ 'settings_save' => 'Guardar Configurações',
+ 'system_version' => 'Versão do sistema',
+ 'categories' => 'Categorias',
+
+ // App Settings
+ 'app_customization' => 'Personalização',
+ 'app_features_security' => 'Recursos & Segurança',
+ 'app_name' => 'Nome da Aplicação',
+ 'app_name_desc' => 'Este nome será mostrado no cabeçalho e em e-mails.',
+ 'app_name_header' => 'Mostrar o nome no cabeçalho',
+ 'app_public_access' => 'Acesso Público',
+ 'app_public_access_desc' => 'Ativar esta opção irá permitir que os visitantes que não estão autenticados, acedam ao conteúdo da sua instância do BookStack.',
+ 'app_public_access_desc_guest' => 'O acesso de visitantes públicos pode ser controlado através do utilizador "Convidado".',
+ 'app_public_access_toggle' => 'Permitir acesso público',
+ 'app_public_viewing' => 'Permitir visualização pública?',
+ 'app_secure_images' => 'Carregamento de Imagens mais Seguro',
+ 'app_secure_images_toggle' => 'Ativar o carregamento de imagem mais seguro',
+ 'app_secure_images_desc' => 'Por razões de performance, todas as imagens são públicas. Esta opção adiciona uma string aleatória na frente das Urls de imagens. Certifique-se de que os diretórios não possam ser indexados para prevenir acesso indesejado.',
+ 'app_default_editor' => 'Editor de Página Padrão',
+ 'app_default_editor_desc' => 'Selecione qual editor será usado por padrão ao editar novas páginas. Isto pode ser substituído a nível de página onde as permissões estiverem disponíveis.',
+ 'app_custom_html' => 'Conteúdo personalizado para para o Head do HTML',
+ 'app_custom_html_desc' => 'Quaisquer conteúdos aqui adicionados serão inseridos no final da secção de cada página. Esta é uma maneira útil de sobrescrever estilos e adicionar códigos de análise de site.',
+ 'app_custom_html_disabled_notice' => 'O conteúdo personalizado do HTML está desativado nesta página de configurações, para garantir que quaisquer alterações que acabem maliciosas possam ser revertidas.',
+ 'app_logo' => 'Logo da Aplicação',
+ 'app_logo_desc' => 'Isto é usado na barra de cabeçalho da aplicação, entre outras áreas. Esta imagem deve ter 86px de altura. Imagens grandes serão redimensionadas.',
+ 'app_icon' => 'Ícone da aplicação',
+ 'app_icon_desc' => 'Este ícone é usado para guias e ícones de atalhos do navegador. A imagem para o ícone deve ser quadrada, de lado 256px e com o formato PNG.',
+ 'app_homepage' => 'Página Inicial',
+ 'app_homepage_desc' => 'Selecione uma opção para ser exibida como página inicial em vez da padrão. Permissões de página serão ignoradas para as páginas selecionadas.',
+ 'app_homepage_select' => 'Selecione uma página',
+ 'app_footer_links' => 'Links do Rodapé',
+ 'app_footer_links_desc' => 'Adicionar links para mostrar dentro do rodapé do site. Estes serão exibidos no rodapé da maioria das páginas, incluindo as que não requerem autenticação. Pode utilizar uma etiqueta de "trans::" para utilizar traduções definidas pelo sistema. Por exemplo: Utilizando "trans::common.privacy_policy" fornecerá o texto traduzido "Política de Privacidade" e "trans::common.terms_of_service" fornecerá o texto traduzido "Termos de Serviço".',
+ 'app_footer_links_label' => 'Etiqueta do Link',
+ 'app_footer_links_url' => 'URL do link',
+ 'app_footer_links_add' => 'Adicionar Link de Rodapé',
+ 'app_disable_comments' => 'Desativar Comentários',
+ 'app_disable_comments_toggle' => 'Desativar comentários',
+ 'app_disable_comments_desc' => 'Desativar comentários em todas as páginas da aplicação. Comentários existentes não serão exibidos.',
+
+ // Color settings
+ 'color_scheme' => 'Esquema de cores da aplicação',
+ 'color_scheme_desc' => 'Defina as cores a serem utilizadas na aplicação. As cores podem ser configuradas separadamente para modos escuro e claro para melhor se adequar ao tema e garantir legibilidade.',
+ 'ui_colors_desc' => 'Defina a cor primária e a cor padrão para links da aplicação. A cor principal é utilizada principalmente para o banner do cabeçalho, botões e decorações da interface. A cor padrão do link é usada para links e ações baseados em texto, tanto dentro do conteúdo escrito quanto na interface da aplicação.',
+ 'app_color' => 'Cor primária',
+ 'link_color' => 'Cor padrão do link',
+ 'content_colors_desc' => 'Definir cores para todos os elementos na hierarquia da organização da página. Escolher cores com um brilho semelhante às cores padrão é recomendado para a legibilidade.',
+ 'bookshelf_color' => 'Cor da Prateleira',
+ 'book_color' => 'Cor do Livro',
+ 'chapter_color' => 'Cor do Capítulo',
+ 'page_color' => 'Cor da Página',
+ 'page_draft_color' => 'Cor do Rascunho',
+
+ // Registration Settings
+ 'reg_settings' => 'Inscrição',
+ 'reg_enable' => 'Permitir inscrições',
+ 'reg_enable_toggle' => 'Permitir inscrições',
+ 'reg_enable_desc' => 'Quando o registo é ativado, os visitantes poderão registar se como utilizadores padrão da aplicação.',
+ 'reg_default_role' => 'Papel por omissão apôs registo',
+ 'reg_enable_external_warning' => 'A opção acima é ignorada enquanto a autenticação externa LDAP ou SAML estiver ativa. Contas de usuários para membros não existentes serão criadas automaticamente se a autenticação pelo sistema externo em uso for bem sucedida.',
+ 'reg_email_confirmation' => 'Confirmação de E-mail',
+ 'reg_email_confirmation_toggle' => 'Requerer confirmação de e-mail',
+ 'reg_confirm_email_desc' => 'Em caso da restrição de domínios estar em uso, a confirmação de e-mail será requerida e esta opção será ignorada.',
+ 'reg_confirm_restrict_domain' => 'Restrição de Domínios',
+ 'reg_confirm_restrict_domain_desc' => 'Entre com uma lista separada por vírgulas de domínios de e-mails aos quais você deseja restringir o registo. Um e-mail de confirmação será enviado para o utilizador validar o seu respetivo endereço de e-mail antes de ser permitida a interação com a aplicação. Note que os utilizadores serão capazes de alterar os seus endereços de e-mail após o sucesso na confirmação do registo.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Nenhuma restrição definida',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Manutenção',
+ 'maint_image_cleanup' => 'Limpeza de Imagens',
+ 'maint_image_cleanup_desc' => 'Examina páginas e reviste os seus conteúdos para verificar quais imagens e desenhos estão atualmente em uso e quais são redundantes. Certifique-se de criar uma cópia de segurança completa da base de dados e imagens antes de executar esta ação.',
+ 'maint_delete_images_only_in_revisions' => 'Eliminar também imagens que existam apenas em revisões de página antigas',
+ 'maint_image_cleanup_run' => 'Executar Limpeza',
+ 'maint_image_cleanup_warning' => ':count imagens potencialmente não utilizadas foram encontradas. Tem certeza de que deseja eliminar estas imagens?',
+ 'maint_image_cleanup_success' => ':count imagens potencialmente não utilizadas foram encontradas e eliminadas!',
+ 'maint_image_cleanup_nothing_found' => 'Nenhuma imagem por utilizar foi encontrada, nada foi eliminado!',
+ 'maint_send_test_email' => 'Enviar um E-mail de Teste',
+ 'maint_send_test_email_desc' => 'Esta opção envia um e-mail de teste para o endereço especificado no seu perfil.',
+ 'maint_send_test_email_run' => 'Enviar e-mail de teste',
+ 'maint_send_test_email_success' => 'E-mail enviado para :address',
+ 'maint_send_test_email_mail_subject' => 'E-mail de Teste',
+ 'maint_send_test_email_mail_greeting' => 'O envio de e-mails parece funcionar!',
+ 'maint_send_test_email_mail_text' => 'Parabéns! Já que recebeu esta notificação, as suas opções de e-mail parecem estar configuradas corretamente.',
+ 'maint_recycle_bin_desc' => 'Estantes, livros, capítulos e páginas eliminados são mandados para a reciclagem podendo assim ser restaurados ou excluídos permanentemente. Itens mais antigos da podem vir a ser automaticamente removidos da reciclagem após um tempo, dependendo da configuração do sistema.',
+ 'maint_recycle_bin_open' => 'Abrir Reciclagem',
+ 'maint_regen_references' => 'Regerar Referências',
+ 'maint_regen_references_desc' => 'Esta ação irá reconstruir o índice de referência no banco de dados. Isto geralmente é tratado automaticamente, mas esta ação pode ser útil para indexar conteúdo antigo ou conteúdo adicionado através de métodos não oficiais.',
+ 'maint_regen_references_success' => 'Índice de referência foi regenerado!',
+ 'maint_timeout_command_note' => 'Nota: Esta ação pode levar algum tempo para executar, retornando \'timeout\' em alguns ambientes web. Como alternativa, esta ação pode ser executada via terminal.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Reciclagem',
+ 'recycle_bin_desc' => 'Aqui pode restaurar itens que foram eliminados ou eliminá-los permanentemente do sistema. Esta lista não é filtrada diferentemente de listas de atividades parecidas no sistema onde filtros de permissão são aplicados.',
+ 'recycle_bin_deleted_item' => 'Item eliminado',
+ 'recycle_bin_deleted_parent' => 'Parente',
+ 'recycle_bin_deleted_by' => 'Eliminado por',
+ 'recycle_bin_deleted_at' => 'Data de Eliminação',
+ 'recycle_bin_permanently_delete' => 'Eliminar permanentemente',
+ 'recycle_bin_restore' => 'Restaurar',
+ 'recycle_bin_contents_empty' => 'A reciclagem está atualmente vazia',
+ 'recycle_bin_empty' => 'Esvaziar Reciclagem',
+ 'recycle_bin_empty_confirm' => 'Isto irá destruir permanentemente todos os itens na reciclagem inclusive o conteúdo de cada item. Tem certeza de que a deseja esvaziar?',
+ 'recycle_bin_destroy_confirm' => 'This action will permanently delete this item from the system, along with any child elements listed below, and you will not be able to restore this content. Are you sure you want to permanently delete this item?',
+ 'recycle_bin_destroy_list' => 'Itens a serem Destruídos',
+ 'recycle_bin_restore_list' => 'Itens a serem Restaurados',
+ 'recycle_bin_restore_confirm' => 'Esta ação irá restaurar o item excluído, inclusive quaisquer elementos filhos, para o seu local original. Se a localização original tiver, entretanto, sido eliminada e estiver agora na reciclagem, o item pai também precisará de ser restaurado.',
+ 'recycle_bin_restore_deleted_parent' => 'O parente deste item foi também eliminado. Estes permanecerão eliminados até que o parente seja também restaurado.',
+ 'recycle_bin_restore_parent' => 'Restaurar Parente',
+ 'recycle_bin_destroy_notification' => 'Eliminados no total :count itens da lixeira.',
+ 'recycle_bin_restore_notification' => 'Restaurados no total :count itens da reciclagem.',
+
+ // Audit Log
+ 'audit' => 'Registo de auditoria',
+ 'audit_desc' => 'Este registo de auditoria exibe uma lista de atividades rastreadas no sistema. Esta lista não é filtrada ao contrário de listas de atividades semelhantes no sistema onde os filtros de permissão são aplicados.',
+ 'audit_event_filter' => 'Filtro de Evento',
+ 'audit_event_filter_no_filter' => 'Sem filtro',
+ 'audit_deleted_item' => 'Item excluído',
+ 'audit_deleted_item_name' => 'Nome: :name',
+ 'audit_table_user' => 'Utilizador',
+ 'audit_table_event' => 'Evento',
+ 'audit_table_related' => 'Item ou Detalhe Relacionado',
+ 'audit_table_ip' => 'Endereço de IP',
+ 'audit_table_date' => 'Data da Atividade',
+ 'audit_date_from' => 'Intervalo De',
+ 'audit_date_to' => 'Intervalo Até',
+
+ // Role Settings
+ 'roles' => 'Cargos',
+ 'role_user_roles' => 'Cargos de Utilizador',
+ 'roles_index_desc' => 'Papéis são usados para agrupar utilizadores & fornecer permissão ao sistema para os seus membros. Quando um utilizador é membro de múltiplas funções, os privilégios concedidos irão acumular e o utilizador herdará todas as habilidades.',
+ 'roles_x_users_assigned' => ':count utilizadores atribuído|:count utilizadores atribuídos',
+ 'roles_x_permissions_provided' => ':count permissão|:count permissões',
+ 'roles_assigned_users' => 'Utilizadores atribuídos',
+ 'roles_permissions_provided' => 'Permissões fornecidas',
+ 'role_create' => 'Criar novo Cargo',
+ 'role_delete' => 'Excluir Cargo',
+ 'role_delete_confirm' => 'A ação vai eliminar o cargo de nome \':roleName\'.',
+ 'role_delete_users_assigned' => 'Esse cargo tem :userCount utilizadores vinculados nele. Se quiser migrar utilizadores deste cargo para outro, selecione um novo cargo.',
+ 'role_delete_no_migration' => "Não migrar utilizadores",
+ 'role_delete_sure' => 'Tem certeza que deseja excluir este cargo?',
+ 'role_edit' => 'Editar Cargo',
+ 'role_details' => 'Detalhes do Cargo',
+ 'role_name' => 'Nome do Cargo',
+ 'role_desc' => 'Breve Descrição do Cargo',
+ 'role_mfa_enforced' => 'Exige autenticação de múltiplos fatores',
+ 'role_external_auth_id' => 'IDs de Autenticação Externa',
+ 'role_system' => 'Permissões do Sistema',
+ 'role_manage_users' => 'Gerir utilizadores',
+ 'role_manage_roles' => 'Gerir cargos e permissões de cargos',
+ 'role_manage_entity_permissions' => 'Gerir todos os livros, capítulos e permissões de páginas',
+ 'role_manage_own_entity_permissions' => 'Gerir permissões de seu próprio livro, capítulo e paginas',
+ 'role_manage_page_templates' => 'Gerir modelos de página',
+ 'role_access_api' => 'Aceder à API do sistema',
+ 'role_manage_settings' => 'Gerir as configurações da aplicação',
+ 'role_export_content' => 'Exportar conteúdo',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Alterar editor de página',
+ 'role_notifications' => 'Receive & manage notifications',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Permissões de Ativos',
+ 'roles_system_warning' => 'Esteja ciente de que o acesso a qualquer uma das três permissões acima pode permitir que um utilizador altere os seus próprios privilégios ou privilégios de outros no sistema. Apenas atribua cargos com essas permissões a utilizadores de confiança.',
+ 'role_asset_desc' => 'Estas permissões controlam o acesso padrão para os ativos dentro do sistema. Permissões em Livros, Capítulos e Páginas serão sobrescritas por estas permissões.',
+ 'role_asset_admins' => 'Os administradores recebem automaticamente acesso a todo o conteúdo, mas estas opções podem mostrar ou ocultar as opções da Interface de Usuário.',
+ 'role_asset_image_view_note' => 'Isto está relacionado com a visibilidade do gerenciador de imagens. O acesso real dos arquivos de imagem enviados dependerá da opção de armazenamento de imagens do sistema.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Todos',
+ 'role_own' => 'Próprio',
+ 'role_controlled_by_asset' => 'Controlado pelo ativo para o qual eles são enviados',
+ 'role_save' => 'Guardar Cargo',
+ 'role_users' => 'Utilizadores com este cargo',
+ 'role_users_none' => 'Nenhum utilizador está atualmente vinculado a este cargo',
+
+ // Users
+ 'users' => 'Utilizadores',
+ 'users_index_desc' => 'Crie & gira individualmente contas de utilizador no sistema. Contas de utilizador são usadas para iniciar sessão e atribuição de conteúdo & atividade. As permissões de acesso são principalmente baseadas em funções, mas a propriedade de conteúdo do utilizador, entre outros fatores, também pode afetar permissões e acesso.',
+ 'user_profile' => 'Perfil do Utilizador',
+ 'users_add_new' => 'Adicionar Novo Utilizador',
+ 'users_search' => 'Pesquisar Utilizadores',
+ 'users_latest_activity' => 'Última atividade',
+ 'users_details' => 'Detalhes do Utilizador',
+ 'users_details_desc' => 'Defina um nome de exibição e um endereço de e-mail para este utilizador. O endereço de e-mail será utilizado na autenticação da aplicação.',
+ 'users_details_desc_no_email' => 'Defina um nome de exibição para este utilizador para que outros possam reconhecê-lo.',
+ 'users_role' => 'Cargos do Utilizador',
+ 'users_role_desc' => 'Selecione os cargos aos quais este utilizador será vinculado. Se um utilizador for vinculado a múltiplos cargos, as suas permissões serão empilhadas e ele receberá todas as habilidades dos cargos atribuídos.',
+ 'users_password' => 'Palavra-passe do Utilizador',
+ 'users_password_desc' => 'Defina uma palavra-passe para efetuar a autenticação na aplicação. Esta deve ter pelo menos 8 caracteres.',
+ 'users_send_invite_text' => 'Pode escolher enviar a este utilizador um convite por e-mail que o possibilitará definir a sua própria palavra-passe, ou defina você mesmo uma.',
+ 'users_send_invite_option' => 'Enviar convite por e-mail',
+ 'users_external_auth_id' => 'ID de Autenticação Externa',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ 'users_system_public' => 'Este utilizador representa quaisquer convidados que visitam a aplicação. Não pode ser utilizado para efetuar autenticação, mas é automaticamente atribuído.',
+ 'users_delete' => 'Eliminar Utilizador',
+ 'users_delete_named' => 'Eliminar :userName',
+ 'users_delete_warning' => 'A ação vai eliminar completamente o utilizador de nome \':userName\' do sistema.',
+ 'users_delete_confirm' => 'Tem certeza que eliminar este utilizador?',
+ 'users_migrate_ownership' => 'Migrar Posse',
+ 'users_migrate_ownership_desc' => 'Selecione um utilizador aqui se desejar que outro se torne o proprietário de todos os itens atualmente pertencentes a este.',
+ 'users_none_selected' => 'Nenhum utilizador selecionado',
+ 'users_edit' => 'Editar Utilizador',
+ 'users_edit_profile' => 'Editar Perfil',
+ 'users_avatar' => 'Avatar do Utilizador',
+ 'users_avatar_desc' => 'Defina uma imagem para representar este utilizador. Deve ser um quadrado com aproximadamente 256px de altura e largura.',
+ 'users_preferred_language' => 'Linguagem de Preferência',
+ 'users_preferred_language_desc' => 'Esta opção irá alterar o idioma utilizado para a interface de utilizador da aplicação. Isto não afetará nenhum conteúdo criado por utilizadores.',
+ 'users_social_accounts' => 'Contas Sociais',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Aqui pode ligar outras contas para acesso mais rápido. Desligar uma conta não retira a possibilidade de acesso usando-a. Para revogar o acesso ao perfil através da conta social, você deverá fazê-lo na sua conta social.',
+ 'users_social_connect' => 'Contas Associadas',
+ 'users_social_disconnect' => 'Dissociar Conta',
+ 'users_social_status_connected' => 'Conectado',
+ 'users_social_status_disconnected' => 'Desconectado',
+ 'users_social_connected' => 'A conta:socialAccount foi associada com sucesso ao seu perfil.',
+ 'users_social_disconnected' => 'A conta:socialAccount foi dissociada com sucesso de seu perfil.',
+ 'users_api_tokens' => 'Tokens de API',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'Nenhum token de API foi criado para este utilizador',
+ 'users_api_tokens_create' => 'Criar Token',
+ 'users_api_tokens_expires' => 'Expira',
+ 'users_api_tokens_docs' => 'Documentação da API',
+ 'users_mfa' => 'Autenticação Multi-fator',
+ 'users_mfa_desc' => 'Configure a autenticação multi-fatores como uma camada extra de segurança para sua conta de utilizador.',
+ 'users_mfa_x_methods' => ':count método configurado|:count métodos configurados',
+ 'users_mfa_configure' => 'Configurar Métodos',
+
+ // API Tokens
+ 'user_api_token_create' => 'Criar Token de API',
+ 'user_api_token_name' => 'Nome',
+ 'user_api_token_name_desc' => 'Dê ao seu token um nome legível como um futuro lembrete de seu propósito.',
+ 'user_api_token_expiry' => 'Data de Expiração',
+ 'user_api_token_expiry_desc' => 'Defina uma data em que este token expira. Depois desta data, as requisições feitas usando este token deixarão de funcionar. Deixar este campo em branco definirá um prazo de 100 anos futuros.',
+ 'user_api_token_create_secret_message' => 'Imediatamente após a criação deste token, um "ID de token" e "Segredo de token" serão gerados e exibidos. O segredo só será mostrado uma única vez, portanto, certifique-se de copiar o valor para algum lugar seguro antes de prosseguir.',
+ 'user_api_token' => 'Token de API',
+ 'user_api_token_id' => 'ID do Token',
+ 'user_api_token_id_desc' => 'Este é um identificador de sistema não editável, gerado para este token, que precisará ser fornecido em solicitações de API.',
+ 'user_api_token_secret' => 'Segredo do Token',
+ 'user_api_token_secret_desc' => 'Este é um segredo de sistema gerado para este token que precisará ser fornecido em requisições de API. Isto só será mostrado nesta única vez, portanto, copie este valor para um lugar seguro.',
+ 'user_api_token_created' => 'Token criado a :timeAgo',
+ 'user_api_token_updated' => 'Token atualizado a :timeAgo',
+ 'user_api_token_delete' => 'Eliminar Token',
+ 'user_api_token_delete_warning' => 'Isto irá excluir completamente este token de API com o nome \':tokenName\' do sistema.',
+ 'user_api_token_delete_confirm' => 'Tem certeza que deseja eliminar este token de API?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks são uma maneira de enviar dados para URLs externas quando certas ações e eventos ocorrem no sistema. Isto permite uma integração baseada em eventos com plataformas externas como mensagens ou sistemas de notificação.',
+ 'webhooks_x_trigger_events' => ':count acionador|:count acionadores',
+ 'webhooks_create' => 'Criar um novo webhook',
+ 'webhooks_none_created' => 'Ainda nenhum webhooks foi criado.',
+ 'webhooks_edit' => 'Editar Webhook',
+ 'webhooks_save' => 'Guardar Webhook',
+ 'webhooks_details' => 'Detalhes do Webhook',
+ 'webhooks_details_desc' => 'Providencie um nome fácil e um endpoint POST para onde os dados do webhook serão enviados.',
+ 'webhooks_events' => 'Eventos de Webhook',
+ 'webhooks_events_desc' => 'Selecionar todos os eventos que devem acionar este webhook.',
+ 'webhooks_events_warning' => 'Tenha em mente que esses eventos serão acionados para todos os eventos selecionados, mesmo se as permissões personalizadas forem aplicadas. Certifique-se de que o uso deste webhook não exponha conteúdo confidencial.',
+ 'webhooks_events_all' => 'Todos os eventos do sistema',
+ 'webhooks_name' => 'Nome do Webhook',
+ 'webhooks_timeout' => 'Tempo máximo de solicitação do webhook(segundos)',
+ 'webhooks_endpoint' => 'Endpoint do Webhook',
+ 'webhooks_active' => 'Webhook ativo',
+ 'webhook_events_table_header' => 'Eventos',
+ 'webhooks_delete' => 'Eliminar Webhook',
+ 'webhooks_delete_warning' => 'Isto irá excluir completamente, do sistema, este API token com o nome \':tokenName\'.',
+ 'webhooks_delete_confirm' => 'Tem a certeza que deseja eliminar este webhook?',
+ 'webhooks_format_example' => 'Exemplo de formato Webhook',
+ 'webhooks_format_example_desc' => 'Os dados do Webhook são enviados como uma solicitação POST para o endpoint configurado em JSON seguindo o formato abaixo. As propriedades "related_item" e "url" são opcionais e dependerão do tipo de evento acionado.',
+ 'webhooks_status' => 'Estado do webhook',
+ 'webhooks_last_called' => 'Última chamada:',
+ 'webhooks_last_errored' => 'Último erro:',
+ 'webhooks_last_error_message' => 'Última mensagem de erro:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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ão',
+ 'cs' => 'Česky',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/pt/validation.php b/lang/pt/validation.php
new file mode 100644
index 00000000000..17d891cdb16
--- /dev/null
+++ b/lang/pt/validation.php
@@ -0,0 +1,123 @@
+ 'O campo :attribute deve ser aceite.',
+ 'active_url' => 'O campo :attribute não é um URL válido.',
+ 'after' => 'O campo :attribute deve ser uma data posterior à data :date.',
+ 'alpha' => 'O campo :attribute deve conter apenas letras.',
+ 'alpha_dash' => 'O campo :attribute deve conter apenas letras, números, traços e sublinhado.',
+ 'alpha_num' => 'O campo :attribute deve conter apenas letras e números.',
+ 'array' => 'O campo :attribute deve ser uma lista(array).',
+ 'backup_codes' => 'O código fornecido não é válido ou já foi utilizado.',
+ 'before' => 'O campo :attribute deve ser uma data anterior à data :date.',
+ 'between' => [
+ 'numeric' => 'O campo :attribute deve estar entre :min e :max.',
+ 'file' => 'O campo :attribute deve ter entre :min e :max kilobytes.',
+ 'string' => 'O campo :attribute deve ter entre :min e :max caracteres.',
+ 'array' => 'O campo :attribute deve ter entre :min e :max itens.',
+ ],
+ 'boolean' => 'O campo :attribute deve ser verdadeiro ou falso.',
+ 'confirmed' => 'O campo :attribute não é igual à sua confirmação.',
+ 'date' => 'O campo :attribute não está num formato de data válido.',
+ 'date_format' => 'O campo :attribute não tem a formatação :format.',
+ 'different' => 'O campo :attribute e o campo :other devem ser diferentes.',
+ 'digits' => 'O campo :attribute deve ter :digits dígitos.',
+ 'digits_between' => 'O campo :attribute deve ter entre :min e :max dígitos.',
+ 'email' => 'O campo :attribute deve ser um endereço de e-mail válido.',
+ 'ends_with' => 'O campo :attribute deve terminar com um dos seguintes: :values',
+ 'file' => 'O :attribute deve ser um arquivo válido.',
+ 'filled' => 'O campo :attribute é requerido.',
+ 'gt' => [
+ 'numeric' => 'O campo :attribute deve ser maior que :value.',
+ 'file' => 'O campo :attribute deve ser maior que :value kilobytes.',
+ 'string' => 'O campo :attribute deve ser maior que :value caracteres.',
+ 'array' => 'O campo :attribute deve ter mais que :value itens.',
+ ],
+ 'gte' => [
+ 'numeric' => 'O campo :attribute deve ser maior ou igual a :value.',
+ 'file' => 'O campo :attribute deve ser maior ou igual a :value kilobytes.',
+ 'string' => 'O campo :attribute deve ser maior ou igual a :value caracteres.',
+ 'array' => 'O campo :attribute deve ter :value itens ou mais.',
+ ],
+ 'exists' => 'O campo :attribute selecionado não é válido.',
+ 'image' => 'O campo :attribute deve ser uma imagem.',
+ 'image_extension' => 'O campo :attribute deve ter uma extensão de imagem válida e suportada.',
+ 'in' => 'O campo :attribute selecionado não é válido.',
+ 'integer' => 'O campo :attribute deve ser um número inteiro.',
+ 'ip' => 'O campo :attribute deve ser um endereço IP válido.',
+ 'ipv4' => 'O campo :attribute deve ser um endereço IPv4 válido.',
+ 'ipv6' => 'O campo :attribute deve ser um endereço IPv6 válido.',
+ 'json' => 'O campo :attribute deve ser uma string JSON válida.',
+ 'lt' => [
+ 'numeric' => 'O campo :attribute deve ser menor que :value.',
+ 'file' => 'O campo :attribute deve ser menor que :value kilobytes.',
+ 'string' => 'O campo :attribute deve ser menor que :value caracteres.',
+ 'array' => 'O campo :attribute deve conter menos que :value itens.',
+ ],
+ 'lte' => [
+ 'numeric' => 'O campo :attribute deve ser menor ou igual a :value.',
+ 'file' => 'O campo :attribute deve ser menor ou igual a :value kilobytes.',
+ 'string' => 'O campo :attribute deve ser menor ou igual a :value caracteres.',
+ 'array' => 'O campo :attribute não deve conter mais que :value itens.',
+ ],
+ 'max' => [
+ 'numeric' => 'O valor para o campo :attribute não deve ser maior que :max.',
+ 'file' => 'O valor para o campo :attribute não deve ter tamanho maior que :max kilobytes.',
+ 'string' => 'O valor para o campo :attribute não deve ter mais que :max caracteres.',
+ 'array' => 'O valor para o campo :attribute não deve ter mais que :max itens.',
+ ],
+ 'mimes' => 'O campo :attribute deve ser do tipo type: :values.',
+ 'min' => [
+ 'numeric' => 'O campo :attribute não deve ser menor que :min.',
+ 'file' => 'O campo :attribute não deve ter tamanho menor que :min kilobytes.',
+ 'string' => 'O campo :attribute não deve ter menos que :min caracteres.',
+ 'array' => 'O campo :attribute não deve ter menos que :min itens.',
+ ],
+ 'not_in' => 'O campo selecionado :attribute é inválido.',
+ 'not_regex' => 'O formato do campo :attribute é inválido.',
+ 'numeric' => 'O campo :attribute deve ser um número.',
+ 'regex' => 'O formato do campo :attribute é inválido.',
+ 'required' => 'O campo :attribute é requerido.',
+ 'required_if' => 'O campo :attribute é requerido quando o campo :other tem valor :value.',
+ 'required_with' => 'O campo :attribute é requerido quando os valores :values estiverem presentes.',
+ 'required_with_all' => 'O campo :attribute é requerido quando os valores :values estiverem presentes.',
+ 'required_without' => 'O campo :attribute é requerido quando os valores :values não estiverem presentes.',
+ 'required_without_all' => 'O campo :attribute é requerido quando nenhum dos valores :values estiverem presentes.',
+ 'same' => 'O campo :attribute e o campo :other devem ser iguais.',
+ 'safe_url' => 'O link fornecido poderá não ser seguro.',
+ 'size' => [
+ 'numeric' => 'O tamanho do campo :attribute deve ser :size.',
+ 'file' => 'O tamanho do arquivo :attribute deve ser de :size kilobytes.',
+ 'string' => 'O tamanho do campo :attribute deve ser de :size caracteres.',
+ 'array' => 'O campo :attribute deve conter :size itens.',
+ ],
+ 'string' => 'O campo :attribute deve ser uma string.',
+ 'timezone' => 'O campo :attribute deve conter uma timezone válida.',
+ 'totp' => 'O código fornecido não é válido ou já expirou.',
+ 'unique' => 'Já existe um campo/dado de nome :attribute.',
+ 'url' => 'O formato da URL :attribute é inválido.',
+ 'uploaded' => 'O arquivo não pôde ser carregado. O servidor pode não aceitar arquivos deste tamanho.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Confirmação de senha requerida',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/pt_BR/activities.php b/lang/pt_BR/activities.php
new file mode 100644
index 00000000000..2a2d173c790
--- /dev/null
+++ b/lang/pt_BR/activities.php
@@ -0,0 +1,140 @@
+ 'criou a página',
+ 'page_create_notification' => 'Página criada com sucesso',
+ 'page_update' => 'atualizou a página',
+ 'page_update_notification' => 'Página atualizada com sucesso',
+ 'page_delete' => 'excluiu a página',
+ 'page_delete_notification' => 'Página excluída com sucesso',
+ 'page_restore' => 'restaurou a página',
+ 'page_restore_notification' => 'Página restaurada com sucesso',
+ 'page_move' => 'moveu a página',
+ 'page_move_notification' => 'Página movida com sucesso',
+
+ // Chapters
+ 'chapter_create' => 'criou o capítulo',
+ 'chapter_create_notification' => 'Capítulo criado com sucesso',
+ 'chapter_update' => 'atualizou o capítulo',
+ 'chapter_update_notification' => 'Capítulo atualizado com sucesso',
+ 'chapter_delete' => 'excluiu o capítulo',
+ 'chapter_delete_notification' => 'Capítulo excluída com sucesso',
+ 'chapter_move' => 'moveu o capítulo',
+ 'chapter_move_notification' => 'Capítulo excluído com sucesso',
+
+ // Books
+ 'book_create' => 'criou o livro',
+ 'book_create_notification' => 'Livro criado com sucesso',
+ 'book_create_from_chapter' => 'capítulo convertido em livro',
+ 'book_create_from_chapter_notification' => 'Capítulo convertido em livro com sucesso',
+ 'book_update' => 'atualizou o livro',
+ 'book_update_notification' => 'Livro atualizado com sucesso',
+ 'book_delete' => 'excluiu o livro',
+ 'book_delete_notification' => 'Livro excluído com sucesso',
+ 'book_sort' => 'ordenou o livro',
+ 'book_sort_notification' => 'Livro reordenado com sucesso',
+
+ // Bookshelves
+ 'bookshelf_create' => 'estante criada',
+ 'bookshelf_create_notification' => 'Estante criada com sucesso',
+ 'bookshelf_create_from_book' => 'livro convertido em estante',
+ 'bookshelf_create_from_book_notification' => 'Livro convertido com sucesso em uma estante',
+ 'bookshelf_update' => 'estante atualizada',
+ 'bookshelf_update_notification' => 'Estante atualizada com sucesso',
+ 'bookshelf_delete' => 'estante excluída',
+ 'bookshelf_delete_notification' => 'Estante excluída com sucesso',
+
+ // Revisions
+ 'revision_restore' => 'revisão restaurada',
+ 'revision_delete' => 'revisão excluída',
+ 'revision_delete_notification' => 'Revisão excluída com sucesso',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" foi adicionada aos seus favoritos',
+ 'favourite_remove_notification' => '":name" foi removida dos seus favoritos',
+
+ // Watching
+ 'watch_update_level_notification' => 'Preferências de Observação atualizadas com sucesso',
+
+ // Auth
+ 'auth_login' => 'conectado',
+ 'auth_register' => 'registrado como novo usuário',
+ 'auth_password_reset_request' => 'redefinir senha do usuário solicitado',
+ 'auth_password_reset_update' => 'redefinir senha do usuário',
+ 'mfa_setup_method' => 'método MFA configurado',
+ 'mfa_setup_method_notification' => 'Método de multi-fatores configurado com sucesso',
+ 'mfa_remove_method' => 'Método MFA removido',
+ 'mfa_remove_method_notification' => 'Método de multi-fatores removido com sucesso',
+
+ // Settings
+ 'settings_update' => 'configurações atualizadas',
+ 'settings_update_notification' => 'Configurações atualizadas com sucesso',
+ 'maintenance_action_run' => 'Ação de manutenção executada',
+
+ // Webhooks
+ 'webhook_create' => 'webhook criado',
+ 'webhook_create_notification' => 'Webhook criado com sucesso',
+ 'webhook_update' => 'webhook atualizado',
+ 'webhook_update_notification' => 'Webhook atualizado com sucesso',
+ 'webhook_delete' => 'webhook excluído',
+ 'webhook_delete_notification' => 'Webhook excluido com sucesso',
+
+ // Imports
+ 'import_create' => 'importação criada',
+ 'import_create_notification' => 'Importação carregada com sucesso',
+ 'import_run' => 'importação atualizada',
+ 'import_run_notification' => 'Conteúdo importado com sucesso',
+ 'import_delete' => 'importação excluída',
+ 'import_delete_notification' => 'Importação excluída com sucesso',
+
+ // Users
+ 'user_create' => 'usuário criado',
+ 'user_create_notification' => 'Usuário criado com sucesso',
+ 'user_update' => 'usuário atualizado',
+ 'user_update_notification' => 'Usuário atualizado com sucesso',
+ 'user_delete' => 'usuário excluído',
+ 'user_delete_notification' => 'Usuário removido com sucesso',
+
+ // API Tokens
+ 'api_token_create' => 'token de API criado',
+ 'api_token_create_notification' => 'Token de API criado com sucesso',
+ 'api_token_update' => 'token de API atualizado',
+ 'api_token_update_notification' => 'Token de API atualizado com sucesso',
+ 'api_token_delete' => 'token de API excluído',
+ 'api_token_delete_notification' => 'Token de API excluído com sucesso',
+
+ // Roles
+ 'role_create' => 'perfil criado',
+ 'role_create_notification' => 'Perfil criado com sucesso',
+ 'role_update' => 'perfil atualizado',
+ 'role_update_notification' => 'Perfil atualizado com sucesso',
+ 'role_delete' => 'Excluir papel',
+ 'role_delete_notification' => 'Perfil excluído com sucesso',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'lixeira esvaziada',
+ 'recycle_bin_restore' => 'restaurado da lixeira',
+ 'recycle_bin_destroy' => 'removido da lixeira',
+
+ // Comments
+ 'commented_on' => 'comentou em',
+ 'comment_create' => 'Adicionou comentário',
+ 'comment_update' => 'Atualizar descrição',
+ 'comment_delete' => 'Comentário deletado',
+
+ // Sort Rules
+ 'sort_rule_create' => 'criou regra de ordenação',
+ 'sort_rule_create_notification' => 'Regra de ordenação criada com sucesso',
+ 'sort_rule_update' => 'atualizou regra de ordenação',
+ 'sort_rule_update_notification' => 'Regra de ordenação atualizada com sucesso',
+ 'sort_rule_delete' => 'excluiu regra de ordenação',
+ 'sort_rule_delete_notification' => 'Regra de ordenação excluída com sucesso',
+
+ // Other
+ 'permissions_update' => 'atualizou permissões',
+];
diff --git a/lang/pt_BR/auth.php b/lang/pt_BR/auth.php
new file mode 100644
index 00000000000..b5fd974aa20
--- /dev/null
+++ b/lang/pt_BR/auth.php
@@ -0,0 +1,117 @@
+ 'As credenciais fornecidas não puderam ser validadas em nossos registros.',
+ 'throttle' => 'Muitas tentativas de login. Por favor, tente novamente em :seconds segundos.',
+
+ // Login & Register
+ 'sign_up' => 'Criar Conta',
+ 'log_in' => 'Entrar',
+ 'log_in_with' => 'Entrar com :socialDriver',
+ 'sign_up_with' => 'Cadastre-se com :socialDriver',
+ 'logout' => 'Sair',
+
+ 'name' => 'Nome',
+ 'username' => 'Nome de Usuário',
+ 'email' => 'E-mail',
+ 'password' => 'Senha',
+ 'password_confirm' => 'Confirmar Senha',
+ 'password_hint' => 'Deve conter pelo menos 8 caracteres',
+ 'forgot_password' => 'Esqueceu a senha?',
+ 'remember_me' => 'Lembrar de mim',
+ 'ldap_email_hint' => 'Por favor, digite um e-mail para essa conta.',
+ 'create_account' => 'Criar Conta',
+ 'already_have_account' => 'Já possui uma conta?',
+ 'dont_have_account' => 'Não possui uma conta?',
+ 'social_login' => 'Login Social',
+ 'social_registration' => 'Cadastro Social',
+ 'social_registration_text' => 'Cadastre-se e entre utilizando outro serviço.',
+
+ 'register_thanks' => 'Obrigado por se cadastrar!',
+ 'register_confirm' => 'Por favor, verifique seu e-mail e clique no botão de confirmação para acessar :appName.',
+ 'registrations_disabled' => 'Cadastros estão temporariamente desabilitados',
+ 'registration_email_domain_invalid' => 'O domínio de e-mail usado não tem acesso permitido a essa aplicação',
+ 'register_success' => 'Obrigado por se cadastrar! Você agora encontra-se cadastrado(a) e logado(a).',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Tentando fazer login',
+ 'auto_init_starting_desc' => 'Estamos entrando em contato com seu sistema de autenticação para iniciar o processo de login. Se não houver progresso após 5 segundos, você pode tentar clicar no link abaixo.',
+ 'auto_init_start_link' => 'Prossiga com a autenticação',
+
+ // Password Reset
+ 'reset_password' => 'Redefinir Senha',
+ 'reset_password_send_instructions' => 'Insira seu e-mail abaixo e uma mensagem com o link de redefinição de senha lhe será enviada.',
+ 'reset_password_send_button' => 'Enviar o Link de Redefinição',
+ 'reset_password_sent' => 'Um link de redefinição de senha será enviado para :email se o endereço de e-mail for encontrado no sistema.',
+ 'reset_password_success' => 'Sua senha foi redefinida com sucesso.',
+ 'email_reset_subject' => 'Redefina a senha de :appName',
+ 'email_reset_text' => 'Você recebeu esse e-mail pois recebemos uma solicitação de redefinição de senha para a sua conta.',
+ 'email_reset_not_requested' => 'Caso não tenha sido você a solicitar a redefinição de senha, ignore esse e-mail.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Confirme seu e-mail para :appName',
+ 'email_confirm_greeting' => 'Obrigado por se cadastrar em :appName!',
+ 'email_confirm_text' => 'Por favor, confirme seu endereço de e-mail clicando no botão abaixo:',
+ 'email_confirm_action' => 'Confirmar E-mail',
+ 'email_confirm_send_error' => 'A confirmação de e-mail é requerida, mas o sistema não pôde enviar a mensagem. Por favor, entre em contato com o administrador para se certificar que o serviço de envio de e-mails está corretamente configurado.',
+ 'email_confirm_success' => 'Seu e-mail foi confirmado! Agora você pode de entrar usando este endereço de e-mail.',
+ 'email_confirm_resent' => 'E-mail de confirmação reenviado. Por favor, verifique sua caixa de entrada.',
+ 'email_confirm_thanks' => 'Obrigado por confirmar!',
+ 'email_confirm_thanks_desc' => 'Aguarde um momento enquanto sua confirmação é processada. Se você não for redirecionado após 3 segundos, pressione o link "Continuar" abaixo para continuar.',
+
+ 'email_not_confirmed' => 'Endereço de E-mail Não Confirmado',
+ 'email_not_confirmed_text' => 'Seu endereço de e-mail ainda não foi confirmado.',
+ 'email_not_confirmed_click_link' => 'Por favor, clique no link no e-mail que foi enviado após o cadastro.',
+ 'email_not_confirmed_resend' => 'Caso não encontre o e-mail você poderá reenviar a confirmação usando o formulário abaixo.',
+ 'email_not_confirmed_resend_button' => 'Reenviar o E-mail de Confirmação',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Você recebeu um convite para :appName!',
+ 'user_invite_email_greeting' => 'Uma conta foi criada para você em :appName.',
+ 'user_invite_email_text' => 'Clique no botão abaixo para definir uma senha de conta e obter acesso:',
+ 'user_invite_email_action' => 'Defina a Senha da Conta',
+ 'user_invite_page_welcome' => 'Bem-vindo(a) a :appName!',
+ 'user_invite_page_text' => 'Para finalizar sua conta e obter acesso, você precisa definir uma senha que será usada para efetuar login em :appName em futuras visitas.',
+ 'user_invite_page_confirm_button' => 'Confirmar Senha',
+ 'user_invite_success_login' => 'Senha definida, agora você pode fazer login usando sua senha para acessar :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Configurar autenticação multi-fator',
+ 'mfa_setup_desc' => 'A autenticação multi-fator adiciona outra camada de segurança à sua conta.',
+ 'mfa_setup_configured' => 'Configurado',
+ 'mfa_setup_reconfigure' => 'Reconfigurar',
+ 'mfa_setup_remove_confirmation' => 'Você tem certeza que deseja remover o método de autenticação de vários fatores?',
+ 'mfa_setup_action' => 'Configurações',
+ 'mfa_backup_codes_usage_limit_warning' => 'Você tem menos de 5 códigos de backup restantes, Por favor, gere e armazene um novo conjunto antes de esgotar suas opções de códigos de backup para evitar estar bloqueado para fora da sua conta.',
+ 'mfa_option_totp_title' => 'Aplicativo Móvel',
+ 'mfa_option_totp_desc' => 'Para usar a autenticação multi-fator, você precisará de um aplicativo móvel que suporte TOTP como o Google Authenticator, Authy ou o Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Códigos de backup',
+ 'mfa_option_backup_codes_desc' => 'Gera um conjunto de códigos de backup de uso único que você inserirá no login para verificar sua identidade. Certifique-se de armazená-los em um local seguro e protegido.',
+ 'mfa_gen_confirm_and_enable' => 'Confirmar e habilitar',
+ 'mfa_gen_backup_codes_title' => 'Configuração dos Códigos de Backup',
+ 'mfa_gen_backup_codes_desc' => 'Armazene a lista de códigos abaixo em um lugar seguro. Ao acessar o sistema você poderá usar um dos códigos como segundo mecanismo de autenticação.',
+ 'mfa_gen_backup_codes_download' => 'Baixar códigos',
+ 'mfa_gen_backup_codes_usage_warning' => 'Cada código só poderá ser usado uma vez',
+ 'mfa_gen_totp_title' => 'Configuração de Aplicativos Móveis',
+ 'mfa_gen_totp_desc' => 'Para usar a autenticação multi-fator, você precisará de um aplicativo móvel que suporte TOTP como o Google Authenticator, Authy ou o Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Leia o código QR abaixo usando o aplicativo de autenticação de sua preferência para começar.',
+ 'mfa_gen_totp_verify_setup' => 'Verificar configuração',
+ 'mfa_gen_totp_verify_setup_desc' => 'Verifique se tudo está funcionando digitando um código, gerado dentro do seu aplicativo de autenticação, na caixa de entrada abaixo:',
+ 'mfa_gen_totp_provide_code_here' => 'Insira o código gerado pelo aplicativo aqui',
+ 'mfa_verify_access' => 'Verificar Acesso',
+ 'mfa_verify_access_desc' => 'Sua conta de usuário requer que você confirme sua identidade por meio de um nível adicional de verificação antes de conceder o acesso. Verifique o uso de um dos métodos configurados para continuar.',
+ 'mfa_verify_no_methods' => 'Nenhum método configurado',
+ 'mfa_verify_no_methods_desc' => 'Nenhum método de autenticação multi-fator foi encontrado em sua conta. Você precisará configurar pelo menos um método antes de ter acesso.',
+ 'mfa_verify_use_totp' => 'Verificar usando um aplicativo móvel',
+ 'mfa_verify_use_backup_codes' => 'Verificar usando um código de backup',
+ 'mfa_verify_backup_code' => 'Código de backup',
+ 'mfa_verify_backup_code_desc' => 'Insira um dos seus códigos de backup restantes abaixo:',
+ 'mfa_verify_backup_code_enter_here' => 'Digite o código de backup',
+ 'mfa_verify_totp_desc' => 'Digite o código, gerado através do seu aplicativo móvel, abaixo:',
+ 'mfa_setup_login_notification' => 'Método de multi-fatores configurado, por favor faça login novamente usando o método configurado.',
+];
diff --git a/lang/pt_BR/common.php b/lang/pt_BR/common.php
new file mode 100644
index 00000000000..b4ff95e99ed
--- /dev/null
+++ b/lang/pt_BR/common.php
@@ -0,0 +1,120 @@
+ 'Cancelar',
+ 'close' => 'Fechar',
+ 'confirm' => 'Confirmar',
+ 'back' => 'Voltar',
+ 'save' => 'Salvar',
+ 'continue' => 'Continuar',
+ 'select' => 'Selecionar',
+ 'toggle_all' => 'Alternar Tudo',
+ 'more' => 'Mais
+',
+
+ // Form Labels
+ 'name' => 'Nome
+',
+ 'description' => 'Descrição
+',
+ 'role' => 'Perfil',
+ 'cover_image' => 'Imagem da capa',
+ 'cover_image_description' => 'Esta imagem deve ter cerca de 440x250px, embora seja dimensionada e cortada de forma flexível para se ajustar à "interface" do usuário em diferentes cenários, conforme necessário, portanto, as dimensões reais para exibição serão diferentes.',
+
+ // Actions
+ 'actions' => 'Ações
+',
+ 'view' => 'Visualizar',
+ 'view_all' => 'Visualizar Tudo
+',
+ 'new' => 'Novo',
+ 'create' => 'Criar',
+ 'update' => 'Atualizar',
+ 'edit' => 'Editar',
+ 'archive' => 'Arquivar',
+ 'unarchive' => 'Desarquivar',
+ 'sort' => 'Ordenar',
+ 'move' => 'Mover',
+ 'copy' => 'Copiar',
+ 'reply' => 'Responder',
+ 'delete' => 'Excluir',
+ 'delete_confirm' => 'Confirmar Exclusão',
+ 'search' => 'Pesquisar',
+ 'search_clear' => 'Limpar Pesquisa',
+ 'reset' => 'Redefinir',
+ 'remove' => 'Remover',
+ 'add' => 'Adicionar',
+ 'configure' => 'Configurar',
+ 'manage' => 'Administrar',
+ 'fullscreen' => 'Tela cheia',
+ 'favourite' => 'Favorito',
+ 'unfavourite' => 'Remover dos Favoritos',
+ 'next' => 'Seguinte',
+ 'previous' => 'Anterior',
+ 'filter_active' => 'Filtro Ativo:',
+ 'filter_clear' => 'Limpar Filtro',
+ 'download' => 'Baixar ',
+ 'open_in_tab' => 'Abrir na aba',
+ 'open' => 'Abrir',
+
+ // Sort Options
+ 'sort_options' => 'Opções de Ordenação',
+ 'sort_direction_toggle' => 'Alternar Direção de Ordenação',
+ 'sort_ascending' => 'Ordenação Crescente',
+ 'sort_descending' => 'Ordenação Decrescente',
+ 'sort_name' => 'Nome',
+ 'sort_default' => 'Padrão',
+ 'sort_created_at' => 'Data de Criação',
+ 'sort_updated_at' => 'Data de Atualização',
+
+ // Misc
+ 'deleted_user' => 'Usuário excluído',
+ 'no_activity' => 'Nenhuma atividade a mostrar',
+ 'no_items' => 'Nenhum item disponível',
+ 'back_to_top' => 'Voltar ao topo',
+ 'skip_to_main_content' => 'Ir para o conteúdo principal',
+ 'toggle_details' => 'Alternar Detalhes',
+ 'toggle_thumbnails' => 'Alternar Miniaturas',
+ 'details' => 'Detalhes',
+ 'grid_view' => 'Visualização em Grade',
+ 'list_view' => 'Visualização em Lista',
+ 'default' => 'Padrão',
+ 'breadcrumb' => 'Caminho',
+ 'status' => 'Status',
+ 'status_active' => 'Ativo',
+ 'status_inactive' => 'Inativo',
+ 'never' => 'Nunca',
+ 'none' => 'Nenhum',
+
+ // Header
+ 'homepage' => 'Página inicial',
+ 'header_menu_expand' => 'Expandir Cabeçalho do Menu',
+ 'profile_menu' => 'Menu de Perfil',
+ 'view_profile' => 'Visualizar Perfil',
+ 'edit_profile' => 'Editar Perfil',
+ 'dark_mode' => 'Modo Escuro',
+ 'light_mode' => 'Modo Claro',
+ 'global_search' => 'Pesquisa Global',
+
+ // Layout tabs
+ 'tab_info' => 'Informações',
+ 'tab_info_label' => 'Aba: Mostrar Informação Secundária',
+ 'tab_content' => 'Conteúdo',
+ 'tab_content_label' => 'Aba: Mostrar Conteúdo Primário',
+
+ // Email Content
+ 'email_action_help' => 'Se você estiver tendo problemas ao clicar o botão ":actionText", copie e cole a URL abaixo no seu navegador:',
+ 'email_rights' => 'Todos os direitos reservados',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Políticas de Privacidade',
+ 'terms_of_service' => 'Termos de Serviço',
+
+ // OpenSearch
+ 'opensearch_description' => 'Procurar: nome do aplicativo',
+];
diff --git a/lang/pt_BR/components.php b/lang/pt_BR/components.php
new file mode 100644
index 00000000000..cdbcdf66f58
--- /dev/null
+++ b/lang/pt_BR/components.php
@@ -0,0 +1,46 @@
+ 'Selecionar Imagem',
+ 'image_list' => 'Lista de imagens',
+ 'image_details' => 'Detalhes da Imagem',
+ 'image_upload' => 'Fazer upload de imagem',
+ 'image_intro' => 'Aqui você pode selecionar e gerenciar imagens que foram previamente enviadas para o sistema.',
+ 'image_intro_upload' => 'Faça upload de uma imagem arrastando um arquivo de imagem para esta janela, ou usando o botão "Fazer upload de imagem" acima.',
+ 'image_all' => 'Todas',
+ 'image_all_title' => 'Visualizar todas as imagens',
+ 'image_book_title' => 'Visualizar imagens relacionadas a esse livro',
+ 'image_page_title' => 'visualizar imagens relacionadas a essa página',
+ 'image_search_hint' => 'Pesquisar imagem por nome',
+ 'image_uploaded' => 'Adicionada em :uploadedDate',
+ 'image_uploaded_by' => 'Enviado por :userName',
+ 'image_uploaded_to' => 'Enviado para :pageLink',
+ 'image_updated' => 'Atualizou :updateDate',
+ 'image_load_more' => 'Carregar Mais',
+ 'image_image_name' => 'Nome da Imagem',
+ 'image_delete_used' => 'Essa imagem é usada nas páginas abaixo.',
+ 'image_delete_confirm_text' => 'Tem certeza de que deseja excluir essa imagem?',
+ 'image_select_image' => 'Selecionar Imagem',
+ 'image_dropzone' => 'Arraste imagens ou clique aqui para fazer upload',
+ 'image_dropzone_drop' => 'Arrastar imagens até aqui para fazer upload',
+ 'images_deleted' => 'Imagens Excluídas',
+ 'image_preview' => 'Pré-Visualização de Imagem',
+ 'image_upload_success' => 'Upload de imagem efetuado com sucesso',
+ 'image_update_success' => 'Detalhes da imagem atualizados com sucesso',
+ 'image_delete_success' => 'Imagem excluída com sucesso',
+ 'image_replace' => 'Substituir imagem',
+ 'image_replace_success' => 'Arquivo de imagem atualizado com sucesso',
+ 'image_rebuild_thumbs' => 'Gerar variações de tamanho',
+ 'image_rebuild_thumbs_success' => 'Variações de tamanho da imagem geradas com sucesso!',
+
+ // Code Editor
+ 'code_editor' => 'Editar Código',
+ 'code_language' => 'Linguagem do Código',
+ 'code_content' => 'Código',
+ 'code_session_history' => 'Histórico de Sessão',
+ 'code_save' => 'Salvar Código',
+];
diff --git a/lang/pt_BR/editor.php b/lang/pt_BR/editor.php
new file mode 100644
index 00000000000..9a0eb45c9fe
--- /dev/null
+++ b/lang/pt_BR/editor.php
@@ -0,0 +1,182 @@
+ 'Geral',
+ 'advanced' => 'Avançado',
+ 'none' => 'Nenhum',
+ 'cancel' => 'Cancelar',
+ 'save' => 'Salvar',
+ 'close' => 'Fechar',
+ 'apply' => 'Aplicar',
+ 'undo' => 'Desfazer',
+ 'redo' => 'Refazer',
+ 'left' => 'Esquerda',
+ 'center' => 'Centralizar',
+ 'right' => 'Direita',
+ 'top' => 'Topo',
+ 'middle' => 'Meio',
+ 'bottom' => 'Embaixo',
+ 'width' => 'Largura',
+ 'height' => 'Altura',
+ 'More' => 'Mais',
+ 'select' => 'Selecionar...',
+
+ // Toolbar
+ 'formats' => 'Formatos',
+ 'header_large' => 'Cabeçalho Grande',
+ 'header_medium' => 'Cabeçalho Médio',
+ 'header_small' => 'Cabeçalho Pequeno',
+ 'header_tiny' => 'Cabeçalho Minúsculo',
+ 'paragraph' => 'Parágrafo',
+ 'blockquote' => 'Bloco de Citação',
+ 'inline_code' => 'Código embutido',
+ 'callouts' => 'Frase de destaque',
+ 'callout_information' => 'Informação',
+ 'callout_success' => 'Sucesso',
+ 'callout_warning' => 'Atenção',
+ 'callout_danger' => 'Perigo',
+ 'bold' => 'Negrito',
+ 'italic' => 'Itálico',
+ 'underline' => 'Sublinhado',
+ 'strikethrough' => 'Riscado',
+ 'superscript' => 'Sobrescrito',
+ 'subscript' => 'Subscrito',
+ 'text_color' => 'Cor do texto',
+ 'highlight_color' => 'Cor de destaque',
+ 'custom_color' => 'Cor personalizada',
+ 'remove_color' => 'Remover cor',
+ 'background_color' => 'Cor de fundo',
+ 'align_left' => 'Alinhar à esquerda',
+ 'align_center' => 'Alinhar ao centro',
+ 'align_right' => 'Alinhar à direita',
+ 'align_justify' => 'Justificar',
+ 'list_bullet' => 'Lista com marcadores',
+ 'list_numbered' => 'Lista numerada',
+ 'list_task' => 'Lista de tarefas',
+ 'indent_increase' => 'Aumentar recuo',
+ 'indent_decrease' => 'Diminuir recuo',
+ 'table' => 'Tabela',
+ 'insert_image' => 'Inserir Imagem',
+ 'insert_image_title' => 'Inserir/Editar imagem',
+ 'insert_link' => 'Inserir/editar link',
+ 'insert_link_title' => 'Inserir/Editar link',
+ 'insert_horizontal_line' => 'Insert horizontal line',
+ 'insert_code_block' => 'Inserir/editar bloco de código',
+ 'edit_code_block' => 'Editar bloco de código',
+ 'insert_drawing' => 'Inserir/editar diagrama',
+ 'drawing_manager' => 'Gerenciador de diagramas',
+ 'insert_media' => 'Inserir/editar mídia',
+ 'insert_media_title' => 'Inserir/Editar Mídia',
+ 'clear_formatting' => 'Limpar formatação',
+ 'source_code' => 'Código fonte',
+ 'source_code_title' => 'Código fonte',
+ 'fullscreen' => 'Tela cheia',
+ 'image_options' => 'Opções de imagem',
+
+ // Tables
+ 'table_properties' => 'Propriedades da tabela',
+ 'table_properties_title' => 'Propriedades da Tabela',
+ 'delete_table' => 'Excluir Tabela',
+ 'table_clear_formatting' => 'Limpar formatação de tabela',
+ 'resize_to_contents' => 'Redimensionar para o conteúdo',
+ 'row_header' => 'Cabeçalho da linha',
+ 'insert_row_before' => 'Inserir linha antes',
+ 'insert_row_after' => 'Inserir linha depois',
+ 'delete_row' => 'Excluir linha',
+ 'insert_column_before' => 'Inserir coluna antes',
+ 'insert_column_after' => 'Inserir coluna depois',
+ 'delete_column' => 'Excluir coluna',
+ 'table_cell' => 'Célula',
+ 'table_row' => 'Linha',
+ 'table_column' => 'Coluna',
+ 'cell_properties' => 'Propriedades da célula',
+ 'cell_properties_title' => 'Propriedades da Célula',
+ 'cell_type' => 'Tipo de célula',
+ 'cell_type_cell' => 'Célula',
+ 'cell_scope' => 'Escopo',
+ 'cell_type_header' => 'Célula do cabeçalho',
+ 'merge_cells' => 'Mesclar células',
+ 'split_cell' => 'Dividir célula',
+ 'table_row_group' => 'Grupo de linha',
+ 'table_column_group' => 'Grupo de coluna',
+ 'horizontal_align' => 'Alinhamento Horizontal',
+ 'vertical_align' => 'Alinhamento vertical',
+ 'border_width' => 'Largura da borda',
+ 'border_style' => 'Estilo da Borda',
+ 'border_color' => 'Cor da borda',
+ 'row_properties' => 'Propriedades da linha',
+ 'row_properties_title' => 'Propriedades da Linha',
+ 'cut_row' => 'Cortar linha',
+ 'copy_row' => 'Copiar linha',
+ 'paste_row_before' => 'Colar linha antes',
+ 'paste_row_after' => 'Colar linha depois',
+ 'row_type' => 'Tipo de linha',
+ 'row_type_header' => 'Cabeçalho',
+ 'row_type_body' => 'Corpo',
+ 'row_type_footer' => 'Rodapé',
+ 'alignment' => 'Alinhamento',
+ 'cut_column' => 'Cortar coluna',
+ 'copy_column' => 'Copiar Coluna',
+ 'paste_column_before' => 'Colar coluna antes',
+ 'paste_column_after' => 'Colar coluna depois',
+ 'cell_padding' => 'Preenchimento da celula',
+ 'cell_spacing' => 'Espaçamento entre células',
+ 'caption' => 'Legenda',
+ 'show_caption' => 'Mostrar legenda',
+ 'constrain' => 'Restringir proporções',
+ 'cell_border_solid' => 'Sólida',
+ 'cell_border_dotted' => 'Pontilhado',
+ 'cell_border_dashed' => 'Tracejado',
+ 'cell_border_double' => 'Duplo',
+ 'cell_border_groove' => 'Ranhura',
+ 'cell_border_ridge' => 'Ondulado',
+ 'cell_border_inset' => 'Inserir',
+ 'cell_border_outset' => 'Saída',
+ 'cell_border_none' => 'Nenhuma',
+ 'cell_border_hidden' => 'Ocultado',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Fonte',
+ 'alt_desc' => 'Descrição alternativa',
+ 'embed' => 'Embutido',
+ 'paste_embed' => 'Cole seu código abaixo de incorporação:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Texto de exibição',
+ 'title' => 'Título',
+ 'browse_links' => 'Procurar links',
+ 'open_link' => 'Link aberto',
+ 'open_link_in' => 'Abrir link em...',
+ 'open_link_current' => 'Janelas atuais',
+ 'open_link_new' => 'Nova janela',
+ 'remove_link' => 'Remover link',
+ 'insert_collapsible' => 'Inserir bloco colapsável',
+ 'collapsible_unwrap' => 'Desembrulhar',
+ 'edit_label' => 'Editar etiqueta',
+ 'toggle_open_closed' => 'Alternar aberto/fechado',
+ 'collapsible_edit' => 'Inserir bloco colapsável',
+ 'toggle_label' => 'Alternar etiqueta',
+
+ // About view
+ 'about' => 'Sobre o editor',
+ 'about_title' => 'Sobre o Editor WYSIWYG',
+ 'editor_license' => 'Licença do Editor e Direitos Autorais',
+ 'editor_lexical_license' => 'Este editor é criado como uma bifurcação de :lexicalLink distribuído sob a licença MIT.',
+ 'editor_lexical_license_link' => 'Aqui podem ser encontrados detalhes da licença.',
+ 'editor_tiny_license' => 'Este editor é construído usando :tinyLink que é fornecido sob a licença MIT.',
+ 'editor_tiny_license_link' => 'Os dados relativos aos direitos de autor e à licença do TinyMCE podem ser encontrados aqui.',
+ 'save_continue' => 'Salvar Página e Continuar',
+ 'callouts_cycle' => '(Continue pressionando para alternar através de tipos)',
+ 'link_selector' => 'Link para conteúdo',
+ 'shortcuts' => 'Atalhos',
+ 'shortcut' => 'Atalho',
+ 'shortcuts_intro' => 'Os seguintes atalhos estão disponíveis no editor:',
+ 'windows_linux' => 'Windows, Linux',
+ 'mac' => '(Mac))',
+ 'description' => 'Descrição',
+];
diff --git a/lang/pt_BR/entities.php b/lang/pt_BR/entities.php
new file mode 100644
index 00000000000..5a948c8dcd8
--- /dev/null
+++ b/lang/pt_BR/entities.php
@@ -0,0 +1,476 @@
+ 'Criado Recentemente',
+ 'recently_created_pages' => 'Páginas Recentemente Criadas',
+ 'recently_updated_pages' => 'Páginas Recentemente Atualizadas',
+ 'recently_created_chapters' => 'Capítulos Recentemente Criados',
+ 'recently_created_books' => 'Livros Recentemente Criados',
+ 'recently_created_shelves' => 'Estantes Criadas Recentemente',
+ 'recently_update' => 'Recentemente Atualizado',
+ 'recently_viewed' => 'Recentemente Visualizado',
+ 'recent_activity' => 'Atividades recentes',
+ 'create_now' => 'Criar agora',
+ 'revisions' => 'Revisões',
+ 'meta_revision' => 'Revisão #:revisionCount',
+ 'meta_created' => 'Criado :timeLength',
+ 'meta_created_name' => 'Criado :timeLength por :user',
+ 'meta_updated' => 'Atualizado :timeLength',
+ 'meta_updated_name' => 'Atualizado: :timeLength por :user',
+ 'meta_owned_name' => 'Propriedade de :user',
+ 'meta_reference_count' => 'Referenciado por :count item|Referenciado por :count itens',
+ 'entity_select' => 'Seleção de entidade',
+ 'entity_select_lack_permission' => 'Você não tem as permissões necessárias para selecionar este ‘item’',
+ 'images' => 'Imagens',
+ 'my_recent_drafts' => 'Meus Rascunhos Recentes',
+ 'my_recently_viewed' => 'Visualizados Recentemente',
+ 'my_most_viewed_favourites' => 'Meus Favoritos Mais Visualizados',
+ 'my_favourites' => 'Favoritos',
+ 'no_pages_viewed' => 'Você não visualizou nenhuma página',
+ 'no_pages_recently_created' => 'Nenhuma página foi criada recentemente',
+ 'no_pages_recently_updated' => 'Nenhuma página foi atualizada recentemente',
+ 'export' => 'Exportar',
+ 'export_html' => 'Arquivo Web Contido',
+ 'export_pdf' => 'Arquivo PDF',
+ 'export_text' => 'Arquivo de texto simples',
+ 'export_md' => 'Arquivo de redução',
+ 'export_zip' => 'ZIP portátil',
+ 'default_template' => 'Modelo padrão de página',
+ 'default_template_explain' => 'Atribuir o modelo de página que será usado como padrão para todas as páginas criadas neste livro. Tenha em mente que isto será usado apenas se o criador da página tiver acesso de visualização ao modelo de página escolhido.',
+ 'default_template_select' => 'Selecione uma página de modelo',
+ 'import' => 'Importação',
+ 'import_validate' => 'Validar Importação',
+ 'import_desc' => 'Importar livros, capítulos e páginas usando uma exportação zip portátil da mesma ou de uma instância diferente. Selecione um arquivo ZIP para prosseguir. Após a carga e validação do arquivo, você será capaz de configurar e confirmar a importação na próxima visualização.',
+ 'import_zip_select' => 'Selecione o arquivo ZIP para carregar',
+ 'import_zip_validation_errors' => 'Foram detectados erros ao validar o arquivo ZIP:',
+ 'import_pending' => 'Importações pendentes',
+ 'import_pending_none' => 'Nenhuma importação foi iniciada.',
+ 'import_continue' => 'Continuar a importação',
+ 'import_continue_desc' => 'Revise o conteúdo que deve ser importado do arquivo ZIP carregado. Quando estiver pronto, execute a importação para adicionar seu conteúdo a este sistema. O arquivo ZIP importado será automaticamente removido quando a importação for bem sucedida.',
+ 'import_details' => 'Detalhes da importação',
+ 'import_run' => 'Executar Importação',
+ 'import_size' => ':size Tamanho do ZIP',
+ 'import_uploaded_at' => 'Carregado :relativeTime',
+ 'import_uploaded_by' => 'Enviado por',
+ 'import_location' => 'Local da importação',
+ 'import_location_desc' => 'Selecione um local para o conteúdo importado. Você precisa das permissões necessárias para criar no local escolhido.',
+ 'import_delete_confirm' => 'Tem certeza que deseja excluir esta importação?',
+ 'import_delete_desc' => 'Isto irá excluir o arquivo ZIP de importação carregado e não poderá ser desfeito.',
+ 'import_errors' => 'Erros de importação',
+ 'import_errors_desc' => 'Os seguintes erros ocorreram durante a tentativa de importação:',
+ 'breadcrumb_siblings_for_page' => 'Navegue pelas páginas relacionadas',
+ 'breadcrumb_siblings_for_chapter' => 'Navegue pelos capítulos relacionados',
+ 'breadcrumb_siblings_for_book' => 'Navegue pelos livros relacionados',
+ 'breadcrumb_siblings_for_bookshelf' => 'Navegue pelas estantes relacionadas',
+
+ // Permissions and restrictions
+ 'permissions' => 'Permissões',
+ 'permissions_desc' => 'Defina permissões aqui para substituir as permissões padrão fornecidas pelo perfil do usuário.',
+ 'permissions_book_cascade' => 'As permissões definidas nos livros serão automaticamente transmitidas aos capítulos e páginas secundários, a menos que eles tenham suas próprias permissões definidas.',
+ 'permissions_chapter_cascade' => 'As permissões definidas nos capítulos serão automaticamente transmitidas às páginas secundárias, a menos que elas tenham suas próprias permissões definidas.',
+ 'permissions_save' => 'Salvar permissões',
+ 'permissions_owner' => 'Dono',
+ 'permissions_role_everyone_else' => 'Todos os Outros',
+ 'permissions_role_everyone_else_desc' => 'Defina permissões para todos os perfis não substituídas especificamente.',
+ 'permissions_role_override' => 'Substituir permissões para o perfil',
+ 'permissions_inherit_defaults' => 'Herdar Padrões',
+
+ // Search
+ 'search_results' => 'Resultado(s) da Pesquisa',
+ 'search_total_results_found' => ':count resultado encontrado|:count resultados encontrados',
+ 'search_clear' => 'Limpar Pesquisa',
+ 'search_no_pages' => 'Nenhuma página corresponde a esta pesquisa',
+ 'search_for_term' => 'Pesquisar por :term',
+ 'search_more' => 'Mais resultados',
+ 'search_advanced' => 'Pesquisa avançada',
+ 'search_terms' => 'Termos da pesquisa',
+ 'search_content_type' => 'Categoria de conteúdo',
+ 'search_exact_matches' => 'Correspondências exatas',
+ 'search_tags' => 'Pesquisar marcadores',
+ 'search_options' => 'Opções',
+ 'search_viewed_by_me' => 'Visto por mim',
+ 'search_not_viewed_by_me' => 'Não visto por mim',
+ 'search_permissions_set' => 'Permissões definidas',
+ 'search_created_by_me' => 'Criados por mim',
+ 'search_updated_by_me' => 'Atualizados por mim',
+ 'search_owned_by_me' => 'Meus itens',
+ 'search_date_options' => 'Opções de Data',
+ 'search_updated_before' => 'Atualizado antes',
+ 'search_updated_after' => 'Atualizado depois',
+ 'search_created_before' => 'Criado antes',
+ 'search_created_after' => 'Criado depois',
+ 'search_set_date' => 'Definir Data',
+ 'search_update' => 'Atualizar pesquisa',
+
+ // Shelves
+ 'shelf' => 'Estante',
+ 'shelves' => 'Estantes',
+ 'x_shelves' => ':count Estante|:count Estantes',
+ 'shelves_empty' => 'Nenhuma estante foi criada',
+ 'shelves_create' => 'Criar Estante',
+ 'shelves_popular' => 'Estantes Populares',
+ 'shelves_new' => 'Novas Estantes',
+ 'shelves_new_action' => 'Nova Estante',
+ 'shelves_popular_empty' => 'As estantes mais populares serão exibidas aqui.',
+ 'shelves_new_empty' => 'As estantes mais recentes serão exibidas aqui.',
+ 'shelves_save' => 'Salvar Estante',
+ 'shelves_books' => 'Livros nesta estante',
+ 'shelves_add_books' => 'Adicionar livros a esta estante',
+ 'shelves_drag_books' => 'Arraste os livros abaixo para adicioná-los a esta estante',
+ 'shelves_empty_contents' => 'Esta estante não possui livros atribuídos a ela',
+ 'shelves_edit_and_assign' => 'Editar estante para atribuir livros',
+ 'shelves_edit_named' => 'Editar estante :name',
+ 'shelves_edit' => 'Editar estante',
+ 'shelves_delete' => 'Excluir estante',
+ 'shelves_delete_named' => 'Excluir estante :name',
+ 'shelves_delete_explain' => "Isso excluirá a estante com o nome ':name'. Os livros contidos não serão excluídos.",
+ 'shelves_delete_confirmation' => 'Tem certeza de que deseja excluir esta estante de livros?',
+ 'shelves_permissions' => 'Permissões da Estante',
+ 'shelves_permissions_updated' => 'Permissões da estante atualizadas',
+ 'shelves_permissions_active' => 'Permissões da estante ativada',
+ 'shelves_permissions_cascade_warning' => 'As permissões nas estantes não são automaticamente em cascata para os livros contidos. Isso ocorre porque um livro pode existir em várias estantes. No entanto, as permissões podem ser copiadas para livros filhos usando a opção encontrada abaixo.',
+ 'shelves_permissions_create' => 'As permissões de criação de estante são usadas apenas para copiar livros filhos usando a ação abaixo. Eles não controlam a capacidade de criar livros.',
+ 'shelves_copy_permissions_to_books' => 'Copiar Permissões para Livros',
+ 'shelves_copy_permissions' => 'Copiar permissões',
+ 'shelves_copy_permissions_explain' => 'Isso aplicará as configurações de permissão atuais desta estante a todos os livros contidos nela. Antes de ativar, verifique se todas as alterações nas permissões desta estante foram salvas.',
+ 'shelves_copy_permission_success' => 'Permissões da estante copiadas para :count books',
+
+ // Books
+ 'book' => 'Livro',
+ 'books' => 'Livros',
+ 'x_books' => ':count Livro|:count Livros',
+ 'books_empty' => 'Nenhum livro foi criado',
+ 'books_popular' => 'Livros Populares',
+ 'books_recent' => 'Livros Recentes',
+ 'books_new' => 'Livros Novos',
+ 'books_new_action' => 'Novo Livro',
+ 'books_popular_empty' => 'Os livros mais populares aparecerão aqui.',
+ 'books_new_empty' => 'Os livros criados mais recentemente aparecerão aqui.',
+ 'books_create' => 'Criar Novo Livro',
+ 'books_delete' => 'Excluir Livro',
+ 'books_delete_named' => 'Excluir Livro :bookName',
+ 'books_delete_explain' => 'A ação vai excluir o livro com o nome \':bookName\'. Todas as páginas e capítulos serão removidos.',
+ 'books_delete_confirmation' => 'Você tem certeza que quer excluir o Livro?',
+ 'books_edit' => 'Editar Livro',
+ 'books_edit_named' => 'Editar Livro :bookName',
+ 'books_form_book_name' => 'Nome do Livro',
+ 'books_save' => 'Salvar Livro',
+ 'books_permissions' => 'Permissões do Livro',
+ 'books_permissions_updated' => 'Permissões do Livro Atualizadas',
+ 'books_empty_contents' => 'Nenhuma página ou capítulo foram criados para este livro.',
+ 'books_empty_create_page' => 'Criar uma nova página',
+ 'books_empty_sort_current_book' => 'Ordenar o livro atual',
+ 'books_empty_add_chapter' => 'Adicionar um capítulo',
+ 'books_permissions_active' => 'Permissões do Livro Ativas',
+ 'books_search_this' => 'Pesquisar neste livro',
+ 'books_navigation' => 'Navegação do Livro',
+ 'books_sort' => 'Ordenar Conteúdos do Livro',
+ 'books_sort_desc' => 'Mova capítulos e páginas de um livro para reorganizar seu conteúdo. É possível acrescentar outros livros, o que permite uma movimentação fácil de capítulos e páginas entre livros. Opcionalmente, uma regra de ordenação automática pode ser definida para ordenar automaticamente o conteúdo deste livro após alterações.',
+ 'books_sort_auto_sort' => 'Opção de ordenação automática',
+ 'books_sort_auto_sort_active' => 'Ordenação automática ativa: :sortName',
+ 'books_sort_named' => 'Ordenar Livro :bookName',
+ 'books_sort_name' => 'Ordernar por Nome',
+ 'books_sort_created' => 'Ordenar por Data de Criação',
+ 'books_sort_updated' => 'Ordenar por Data de Atualização',
+ 'books_sort_chapters_first' => 'Capítulos Primeiro',
+ 'books_sort_chapters_last' => 'Capítulos por Último',
+ 'books_sort_show_other' => 'Mostrar Outros Livros',
+ 'books_sort_save' => 'Salvar Nova Ordenação',
+ 'books_sort_show_other_desc' => 'Adicione outros livros aqui para incluí-los na operação de ordenação e permitir a reorganização fácil de todos os livros.',
+ 'books_sort_move_up' => 'Mover para cima',
+ 'books_sort_move_down' => 'Mover para baixo',
+ 'books_sort_move_prev_book' => 'Mover para Livro Anterior',
+ 'books_sort_move_next_book' => 'Mover para o Próximo Livro',
+ 'books_sort_move_prev_chapter' => 'Mover para o Capítulo Anterior',
+ 'books_sort_move_next_chapter' => 'Mover para o Próximo Capítulo',
+ 'books_sort_move_book_start' => 'Mover para o Início do Livro',
+ 'books_sort_move_book_end' => 'Mover para o Final do Livro',
+ 'books_sort_move_before_chapter' => 'Mover para Antes do Capítulo',
+ 'books_sort_move_after_chapter' => 'Mover para Depois do Capítulo',
+ 'books_copy' => 'Copiar Livro',
+ 'books_copy_success' => 'Livro criado com sucesso',
+
+ // Chapters
+ 'chapter' => 'Capítulo',
+ 'chapters' => 'Capítulos',
+ 'x_chapters' => ':count Capítulo|:count Capítulos',
+ 'chapters_popular' => 'Capítulos Populares',
+ 'chapters_new' => 'Novo Capítulo',
+ 'chapters_create' => 'Criar Novo Capítulo',
+ 'chapters_delete' => 'Excluir Capítulo',
+ 'chapters_delete_named' => 'Excluir Capítulo :chapterName',
+ 'chapters_delete_explain' => 'Isto irá excluir o capítulo com o nome \':chapterName\'. Todas as páginas que existem neste capítulo também serão excluídas.',
+ 'chapters_delete_confirm' => 'Tem certeza que deseja excluir o capítulo?',
+ 'chapters_edit' => 'Editar Capítulo',
+ 'chapters_edit_named' => 'Editar Capítulo :chapterName',
+ 'chapters_save' => 'Salvar Capítulo',
+ 'chapters_move' => 'Mover Capítulo',
+ 'chapters_move_named' => 'Mover Capítulo :chapterName',
+ 'chapters_copy' => 'Copiar Capítulo',
+ 'chapters_copy_success' => 'Página copiada com sucesso',
+ 'chapters_permissions' => 'Permissões do Capítulo',
+ 'chapters_empty' => 'Nenhuma página existente nesse capítulo.',
+ 'chapters_permissions_active' => 'Permissões de Capítulo Ativas',
+ 'chapters_permissions_success' => 'Permissões de Capítulo Atualizadas',
+ 'chapters_search_this' => 'Pesquisar neste Capítulo',
+ 'chapter_sort_book' => 'Classificar livro',
+
+ // Pages
+ 'page' => 'Página',
+ 'pages' => 'Páginas',
+ 'x_pages' => ':count Página|:count Páginas',
+ 'pages_popular' => 'Páginas Populares',
+ 'pages_new' => 'Nova Página',
+ 'pages_attachments' => 'Anexos',
+ 'pages_navigation' => 'Navegação da Página',
+ 'pages_delete' => 'Excluir Página',
+ 'pages_delete_named' => 'Excluir Página :pageName',
+ 'pages_delete_draft_named' => 'Excluir Rascunho de Página de nome :pageName',
+ 'pages_delete_draft' => 'Excluir Rascunho de Página',
+ 'pages_delete_success' => 'Página excluída',
+ 'pages_delete_draft_success' => 'Rascunho de página excluído',
+ 'pages_delete_warning_template' => 'Está página atualmente esta atribuída como modelo de página padrão para algum livro ou capítulo. Estes livros ou capítulos não terão mais um modelo de página padrão atribuídos após essa página ser deletada.',
+ 'pages_delete_confirm' => 'Tem certeza que deseja excluir a página?',
+ 'pages_delete_draft_confirm' => 'Tem certeza que deseja excluir o rascunho de página?',
+ 'pages_editing_named' => 'Editando a Página :pageName',
+ 'pages_edit_draft_options' => 'Opções de Rascunho',
+ 'pages_edit_save_draft' => 'Salvar Rascunho',
+ 'pages_edit_draft' => 'Editar Rascunho de Página',
+ 'pages_editing_draft' => 'Editando Rascunho',
+ 'pages_editing_page' => 'Editando Página',
+ 'pages_edit_draft_save_at' => 'Rascunho salvo em ',
+ 'pages_edit_delete_draft' => 'Excluir Rascunho',
+ 'pages_edit_delete_draft_confirm' => 'Tem certeza que deseja excluir as alterações nas páginas de rascunho? Todas as suas alterações, desde o último salvamento completo, serão perdidas e o editor será atualizado com o último estado de salvamento da página.',
+ 'pages_edit_discard_draft' => 'Descartar Rascunho',
+ 'pages_edit_switch_to_markdown' => 'Alternar para o Editor de Markdown',
+ 'pages_edit_switch_to_markdown_clean' => '(Conteúdo Limpo)',
+ 'pages_edit_switch_to_markdown_stable' => '(Conteúdo Estável)',
+ 'pages_edit_switch_to_wysiwyg' => 'Alternar para o Editor WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Mudar para o novo WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(Em teste beta)',
+ 'pages_edit_set_changelog' => 'Relatar Alterações',
+ 'pages_edit_enter_changelog_desc' => 'Digite uma breve descrição das alterações efetuadas por você',
+ 'pages_edit_enter_changelog' => 'Insira Alterações',
+ 'pages_editor_switch_title' => 'Trocar editor',
+ 'pages_editor_switch_are_you_sure' => 'Você tem certeza que deseja alterar o editor para esta página?',
+ 'pages_editor_switch_consider_following' => 'Considere o seguinte ao alterar editores:',
+ 'pages_editor_switch_consideration_a' => 'Uma vez salva, a nova opção do editor será usada por quaisquer editores futuros, incluindo aqueles que podem não ser capazes de mudar o tipo do editor.',
+ 'pages_editor_switch_consideration_b' => 'Isso pode levar a uma perda de detalhes e sintaxe em certas circunstâncias.',
+ 'pages_editor_switch_consideration_c' => 'Marcadores ou alterações no log de mudanças, feitas desde o último salvamento, não persistem nesta alteração.',
+ 'pages_save' => 'Salvar Página',
+ 'pages_title' => 'Título da Página',
+ 'pages_name' => 'Nome da Página',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Pré-Visualização',
+ 'pages_md_insert_image' => 'Inserir Imagem',
+ 'pages_md_insert_link' => 'Inserir Link para Entidade',
+ 'pages_md_insert_drawing' => 'Inserir Diagrama',
+ 'pages_md_show_preview' => 'Mostrar pré-visualização',
+ 'pages_md_sync_scroll' => 'Sincronizar pré-visualização',
+ 'pages_md_plain_editor' => 'Editor de texto simples',
+ 'pages_drawing_unsaved' => 'Diagrama não-salvo encontrado',
+ 'pages_drawing_unsaved_confirm' => 'Foram encontrados dados não-salvos de uma tentativa anterior de salvar o diagrama. Você gostaria de restaurá-los e continuar editando este diagrama?',
+ 'pages_not_in_chapter' => 'Página não está dentro de um capítulo',
+ 'pages_move' => 'Mover Página',
+ 'pages_copy' => 'Copiar Página',
+ 'pages_copy_desination' => 'Destino da Cópia',
+ 'pages_copy_success' => 'Página copiada com sucesso',
+ 'pages_permissions' => 'Permissões da Página',
+ 'pages_permissions_success' => 'Permissões da Página atualizadas',
+ 'pages_revision' => 'Revisão',
+ 'pages_revisions' => 'Revisões da Página',
+ 'pages_revisions_desc' => 'Listadas abaixo estão todas as revisões anteriores desta página. Você pode rever, comparar e restaurar versões antigas de páginas se as permissões permitirem. O histórico completo da página pode não ser totalmente refletido aqui, pois, dependendo da configuração do sistema, as revisões antigas podem ser excluídas automaticamente.',
+ 'pages_revisions_named' => 'Revisões de Página para :pageName',
+ 'pages_revision_named' => 'Revisão de Página para :pageName',
+ 'pages_revision_restored_from' => 'Restaurado de #:id; :summary',
+ 'pages_revisions_created_by' => 'Criada por',
+ 'pages_revisions_date' => 'Data da Revisão',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Número de revisão',
+ 'pages_revisions_numbered' => 'Revisão #:id',
+ 'pages_revisions_numbered_changes' => 'Alterações da Revisão #:id',
+ 'pages_revisions_editor' => 'Tipo de editor',
+ 'pages_revisions_changelog' => 'Relatório de Alterações',
+ 'pages_revisions_changes' => 'Alterações',
+ 'pages_revisions_current' => 'Versão Atual',
+ 'pages_revisions_preview' => 'Pré-Visualização',
+ 'pages_revisions_restore' => 'Restaurar',
+ 'pages_revisions_none' => 'Essa página não tem revisões',
+ 'pages_copy_link' => 'Copiar Link',
+ 'pages_edit_content_link' => 'Ir para a seção do editor',
+ 'pages_pointer_enter_mode' => 'Entrar em modo de seleção de seção',
+ 'pages_pointer_label' => 'Opções de Seção de Página',
+ 'pages_pointer_permalink' => 'Seção de Página Permalink',
+ 'pages_pointer_include_tag' => 'Marcador de inclusão de seção de página',
+ 'pages_pointer_toggle_link' => 'Modo permalink, pressione para mostrar a marcação incluída',
+ 'pages_pointer_toggle_include' => 'Incluir o modo de marcação, pressione para mostrar o permalink',
+ 'pages_permissions_active' => 'Permissões de Página Ativas',
+ 'pages_initial_revision' => 'Publicação Inicial',
+ 'pages_references_update_revision' => 'Atualização automática do sistema de links internos',
+ 'pages_initial_name' => 'Nova Página',
+ 'pages_editing_draft_notification' => 'Você está atualmente editando um rascunho que foi salvo da última vez em :timeDiff.',
+ 'pages_draft_edited_notification' => 'Essa página foi atualizada desde então. É recomendado que você descarte esse rascunho.',
+ 'pages_draft_page_changed_since_creation' => 'Esta página foi atualizada desde que este rascunho foi criado. É recomendável que você descarte este rascunho ou tenha cuidado para não sobrescrever nenhuma alteração de página.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count usuários iniciaram a edição dessa página',
+ 'start_b' => ':userName iniciou a edição dessa página',
+ 'time_a' => 'desde que a página foi atualizada pela última vez',
+ 'time_b' => 'nos últimos :minCount minutos',
+ 'message' => ':start :time. Tome cuidado para não sobrescrever atualizações de outras pessoas!',
+ ],
+ 'pages_draft_discarded' => 'Rascunho descartado! O editor foi atualizado com o conteúdo da página atual',
+ 'pages_draft_deleted' => 'Rascunho excluído! O editor foi atualizado com o conteúdo da página atual',
+ 'pages_specific' => 'Página Específica',
+ 'pages_is_template' => 'Modelo de Página',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => '',
+ 'page_tags' => 'Marcadores de Página',
+ 'chapter_tags' => 'Marcadores de Capítulo',
+ 'book_tags' => 'Marcadores de Livro',
+ 'shelf_tags' => 'Marcadores de Estante',
+ 'tag' => 'Marcador',
+ 'tags' => 'Marcadores',
+ 'tags_index_desc' => 'Os marcadores podem ser aplicadas ao conteúdo dentro do sistema para aplicar uma forma flexível de categorização. Os marcadores podem ter uma chave e um valor, sendo o valor opcional. Depois de aplicado, o conteúdo pode ser consultado usando o nome e o valor do marcador.',
+ 'tag_name' => 'Nome do marcador',
+ 'tag_value' => 'Valor do marcador (Opcional)',
+ 'tags_explain' => "Adicione alguns marcadores para melhor categorizar seu conteúdo. \n Você pode atribuir valores aos marcadores para uma organização mais complexa.",
+ 'tags_add' => 'Adicionar outro marcador',
+ 'tags_remove' => 'Remover esse marcador',
+ 'tags_usages' => 'Total de marcadores usados',
+ 'tags_assigned_pages' => 'Atribuído às páginas',
+ 'tags_assigned_chapters' => 'Atribuído aos Capítulos',
+ 'tags_assigned_books' => 'Atribuído a Livros',
+ 'tags_assigned_shelves' => 'Atribuído a Estantes',
+ 'tags_x_unique_values' => ':count valores únicos',
+ 'tags_all_values' => 'Todos os valores',
+ 'tags_view_tags' => 'Ver Marcadores',
+ 'tags_view_existing_tags' => 'Ver marcadores existentes',
+ 'tags_list_empty_hint' => 'Os marcadores podem ser atribuídos através da barra lateral do editor de página ou ao editar os detalhes de um livro, capítulo ou estante.',
+ 'attachments' => 'Anexos',
+ 'attachments_explain' => 'Faça o upload de alguns arquivos ou anexe links para serem exibidos na sua página. Eles estarão visíveis na barra lateral à direita.',
+ 'attachments_explain_instant_save' => 'Mudanças são salvas instantaneamente.',
+ 'attachments_upload' => 'Upload de Arquivos',
+ 'attachments_link' => 'Links Anexados',
+ 'attachments_upload_drop' => 'Como alternativa, você pode arrastar e soltar um arquivo aqui para enviá-lo como um anexo.',
+ 'attachments_set_link' => 'Definir Link',
+ 'attachments_delete' => 'Tem certeza de que deseja excluir esse anexo?',
+ 'attachments_dropzone' => 'Arraste os arquivos até aqui para fazer o upload',
+ 'attachments_no_files' => 'Nenhum arquivo foi enviado',
+ 'attachments_explain_link' => 'Você pode anexar um link se preferir não fazer o upload do arquivo. O link poderá ser para uma outra página ou para um arquivo na nuvem.',
+ 'attachments_link_name' => 'Nome do Link',
+ 'attachment_link' => 'Link para o Anexo',
+ 'attachments_link_url' => 'Link para o Arquivo',
+ 'attachments_link_url_hint' => 'URL do site ou arquivo',
+ 'attach' => 'Anexar',
+ 'attachments_insert_link' => 'Adicionar Link de Anexo à Página',
+ 'attachments_edit_file' => 'Editar Arquivo',
+ 'attachments_edit_file_name' => 'Nome do Arquivo',
+ 'attachments_edit_drop_upload' => 'Arraste arquivos para cá ou clique para anexar arquivos e sobrescreve-los',
+ 'attachments_order_updated' => 'Ordem dos anexos atualizada',
+ 'attachments_updated_success' => 'Detalhes dos anexos atualizados',
+ 'attachments_deleted' => 'Anexo excluído',
+ 'attachments_file_uploaded' => 'Upload de arquivo efetuado com sucesso',
+ 'attachments_file_updated' => 'Arquivo atualizado com sucesso',
+ 'attachments_link_attached' => 'Link anexado com sucesso à página',
+ 'templates' => 'Modelos',
+ 'templates_set_as_template' => 'A Página é um Modelo',
+ 'templates_explain_set_as_template' => 'Você pode definir esta página como um modelo para que seu conteúdo possa ser utilizado para criar outras páginas. Outros usuários poderão utilizar esta página como modelo se tiverem permissão para visualiza-la.',
+ 'templates_replace_content' => 'Substituir conteúdo da página',
+ 'templates_append_content' => 'Adicionar ao fim do conteúdo da página',
+ 'templates_prepend_content' => 'Adicionar ao início do conteúdo da página',
+
+ // Profile View
+ 'profile_user_for_x' => 'Usuário por :time',
+ 'profile_created_content' => 'Conteúdo Criado',
+ 'profile_not_created_pages' => ':userName não criou páginas',
+ 'profile_not_created_chapters' => ':userName não criou capítulos',
+ 'profile_not_created_books' => ':userName não criou livros',
+ 'profile_not_created_shelves' => ':userName não criou estantes',
+
+ // Comments
+ 'comment' => 'Comentário',
+ 'comments' => 'Comentários',
+ 'comment_add' => 'Adicionar Comentário',
+ 'comment_none' => 'Nenhum comentário para exibir',
+ 'comment_placeholder' => 'Digite seus comentários aqui',
+ 'comment_thread_count' => ':count Tópico de Comentário|:count Tópicos de Comentários',
+ 'comment_archived_count' => ':count Arquivado',
+ 'comment_archived_threads' => 'Tópicos Arquivados',
+ 'comment_save' => 'Salvar comentário',
+ 'comment_new' => 'Novo Comentário',
+ 'comment_created' => 'comentado :createDiff',
+ 'comment_updated' => 'Editado :updateDiff por :username',
+ 'comment_updated_indicator' => 'Atualizado',
+ 'comment_deleted_success' => 'Comentário removido',
+ 'comment_created_success' => 'Comentário adicionado',
+ 'comment_updated_success' => 'Comentário editado',
+ 'comment_archive_success' => 'Comentário arquivado',
+ 'comment_unarchive_success' => 'Comentário desarquivado',
+ 'comment_view' => 'Ver comentário',
+ 'comment_jump_to_thread' => 'Ir para o tópico',
+ 'comment_delete_confirm' => 'Você tem certeza de que deseja excluir este comentário?',
+ 'comment_in_reply_to' => 'Em resposta à :commentId',
+ 'comment_reference' => 'Referência',
+ 'comment_reference_outdated' => '(Desatualizado)',
+ 'comment_editor_explain' => 'Aqui estão os comentários que foram deixados nesta página. Comentários podem ser adicionados e gerenciados ao visualizar a página salva.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Tem certeza de que deseja excluir esta revisão?',
+ 'revision_restore_confirm' => 'Tem certeza que deseja restaurar esta revisão? O conteúdo atual da página será substituído.',
+ 'revision_cannot_delete_latest' => 'Não é possível excluir a revisão mais recente.',
+
+ // Copy view
+ 'copy_consider' => 'Por favor, considere o abaixo ao copiar conteúdo.',
+ 'copy_consider_permissions' => 'Configurações de permissão personalizada não serão copiadas.',
+ 'copy_consider_owner' => 'Você se tornará o proprietário de todos os conteúdos copiados.',
+ 'copy_consider_images' => 'A imagem da página não será duplicada e as imagens originais manterão sua relação com a página para a qual foram enviadas originalmente.',
+ 'copy_consider_attachments' => 'Anexos de página não serão copiados.',
+ 'copy_consider_access' => 'Uma alteração de localização, proprietário ou permissões pode resultar em que este conteúdo seja acessível para aqueles previamente sem acesso.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Converter para estante',
+ 'convert_to_shelf_contents_desc' => 'Você pode converter este livro em uma nova estante com o mesmo conteúdo. Os capítulos contidos neste livro serão convertidos em novos livros. Se este livro contiver quaisquer páginas que não estejam em um capítulo, este livro será renomeado e conterá tais páginas, e este livro se tornará parte da nova estante.',
+ 'convert_to_shelf_permissions_desc' => 'Todas as permissões definidas neste livro serão copiadas para a nova estante e para todos os novos livros filhos que não tiverem suas próprias permissões aplicadas. Observe que as permissões nas estantes não se propagam automaticamente para o conteúdo, como acontece com os livros.',
+ 'convert_book' => 'Converter Livro',
+ 'convert_book_confirm' => 'Tem certeza de que deseja converter este livro?',
+ 'convert_undo_warning' => 'Isso não pode ser desfeito tão facilmente.',
+ 'convert_to_book' => 'Converter em livro',
+ 'convert_to_book_desc' => 'Você pode converter este capítulo em um novo livro com o mesmo conteúdo. Quaisquer permissões definidas neste capítulo serão copiadas para o novo livro, mas quaisquer permissões herdadas, do livro pai, não serão copiadas, o que pode levar a uma alteração do controle de acesso.',
+ 'convert_chapter' => 'Converter capítulo',
+ 'convert_chapter_confirm' => 'Tem certeza de que deseja converter este capítulo?',
+
+ // References
+ 'references' => 'Referências',
+ 'references_none' => 'Não há referências rastreadas para este item.',
+ 'references_to_desc' => 'Abaixo estão todas as páginas conhecidas no sistema que estão vinculadas a este item.',
+
+ // Watch Options
+ 'watch' => 'Acompanhar',
+ 'watch_title_default' => 'Preferências padrão',
+ 'watch_desc_default' => 'Reverter o acompanhamento apenas para suas preferências de notificação padrão.',
+ 'watch_title_ignore' => 'Ignorar',
+ 'watch_desc_ignore' => 'Ignorar todas as notificações, incluindo as de preferências de nível de usuário.',
+ 'watch_title_new' => 'Novas Páginas',
+ 'watch_desc_new' => 'Notificar quando qualquer nova página for criada dentro deste item.',
+ 'watch_title_updates' => 'Todas as atualizações da página',
+ 'watch_desc_updates' => 'Notificar sobre todas as novas páginas e alterações na página.',
+ 'watch_desc_updates_page' => 'Notificar sobre todas as alterações da página.',
+ 'watch_title_comments' => 'Todas as atualizações e comentários da página',
+ 'watch_desc_comments' => 'Notificar sobre todas as novas páginas, alterações de página e novos comentários.',
+ 'watch_desc_comments_page' => 'Notificar sobre alterações na página e novos comentários.',
+ 'watch_change_default' => 'Alterar preferências padrão de notificação',
+ 'watch_detail_ignore' => 'Ignorando notificações',
+ 'watch_detail_new' => 'Acompanhando para novas páginas',
+ 'watch_detail_updates' => 'Acompanhando novas páginas e atualizações',
+ 'watch_detail_comments' => 'Acompanhando novas páginas, atualizações e comentários',
+ 'watch_detail_parent_book' => 'Acompanhando através do livro pai',
+ 'watch_detail_parent_book_ignore' => 'Ignorando através do livro pai',
+ 'watch_detail_parent_chapter' => 'Acompanhando através do capítulo pai',
+ 'watch_detail_parent_chapter_ignore' => 'Ignorando através do capítulo pai',
+];
diff --git a/lang/pt_BR/errors.php b/lang/pt_BR/errors.php
new file mode 100644
index 00000000000..3287154331b
--- /dev/null
+++ b/lang/pt_BR/errors.php
@@ -0,0 +1,136 @@
+ 'Você não tem permissão para acessar a página solicitada.',
+ 'permissionJson' => 'Você não tem permissão para realizar a ação solicitada.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Um usuário com o endereço eletrônico: endereço eletrônico já existe, mas com credenciais diferentes.',
+ 'auth_pre_register_theme_prevention' => 'A conta do usuário não pôde ser registrada com os detalhes oferecidos',
+ 'email_already_confirmed' => 'Endereço eletrônico já foi confirmado. Tente fazer o ‘login’.',
+ 'email_confirmation_invalid' => 'Esse código de confirmação não é válido ou já foi utilizado. Por favor, tente cadastrar-se novamente.',
+ 'email_confirmation_expired' => 'O código de confirmação já expirou. Uma nova mensagem eletrônica foi enviada.',
+ 'email_confirmation_awaiting' => 'O endereço do correio eletrônico da conta em uso precisa ser confirmado',
+ 'ldap_fail_anonymous' => 'O acesso LDAP falhou ao tentar usar o anonymous bind',
+ 'ldap_fail_authed' => 'O acesso LDAP falhou ao tentar os detalhes do dn e senha fornecidos',
+ 'ldap_extension_not_installed' => 'A extensão LDAP PHP não foi instalada',
+ 'ldap_cannot_connect' => 'Não foi possível conectar ao servidor LDAP. Conexão inicial falhou',
+ 'saml_already_logged_in' => '\'Login\' já efetuado',
+ 'saml_no_email_address' => 'Não foi possível encontrar um endereço de mensagem eletrônica para este usuário nos dados providos pelo sistema de autenticação externa',
+ 'saml_invalid_response_id' => 'A requisição do sistema de autenticação externa não foi reconhecida por um processo iniciado por esta aplicação. Após o \'login\', navegar para o caminho anterior pode causar um problema.',
+ 'saml_fail_authed' => 'Login utilizando :system falhou. Sistema não forneceu autorização bem sucedida',
+ 'oidc_already_logged_in' => '\'Login\' já efetuado',
+ 'oidc_no_email_address' => 'Não foi possível encontrar um endereço de mensagem eletrônica para este usuário, nos dados fornecidos pelo sistema de autenticação externa',
+ 'oidc_fail_authed' => 'Login usando :system falhou, o sistema não forneceu autorização com sucesso',
+ 'social_no_action_defined' => 'Nenhuma ação definida',
+ 'social_login_bad_response' => "Erro recebido durante o 'login' :socialAccount: \n: error",
+ 'social_account_in_use' => 'Essa conta :socialAccount já está em uso. Por favor, tente entrar utilizando a opção :socialAccount.',
+ 'social_account_email_in_use' => 'O e-mail :email já está em uso. Se você já tem uma conta você poderá se conectar a conta :socialAccount a partir das configurações de seu perfil.',
+ 'social_account_existing' => 'Essa conta :socialAccount já está vinculada a esse perfil.',
+ 'social_account_already_used_existing' => 'Essa conta :socialAccount já está sendo utilizada por outro usuário.',
+ 'social_account_not_used' => 'Essa conta :socialAccount não está vinculada a nenhum usuário. Por favor vincule a conta nas suas configurações de perfil. ',
+ 'social_account_register_instructions' => 'Se você não tem uma conta, você poderá se cadastrar usando a opção: conta social.',
+ 'social_driver_not_found' => 'Social driver não encontrado',
+ 'social_driver_not_configured' => 'Seus parâmetros sociais de: conta social não estão configurados corretamente.',
+ 'invite_token_expired' => 'Este link de convite expirou. Alternativamente, você pode tentar redefinir a senha da sua conta.',
+ 'login_user_not_found' => 'Não foi possível encontrar um usuário para esta ação.',
+
+ // System
+ 'path_not_writable' => 'O caminho de destino (:filePath) de upload de arquivo não possui permissão de escrita. Certifique-se que ele possui direitos de escrita no servidor.',
+ 'cannot_get_image_from_url' => 'Não foi possível obter a imagem a partir de :url',
+ 'cannot_create_thumbs' => 'O servidor não pôde criar as miniaturas de imagem. Por favor, verifique se a extensão GD PHP está instalada.',
+ 'server_upload_limit' => 'O servidor não permite o ‘upload’ de arquivos com esse tamanho. Por favor, tente um tamanho de arquivo menor.',
+ 'server_post_limit' => 'O servidor não pode receber a quantidade de dados fornecida. Tente novamente com menos dados ou um arquivo menor.',
+ 'uploaded' => 'O servidor não permite o ‘upload’ de arquivos com esse tamanho. Por favor, tente fazer o ‘upload’ de arquivos de menor tamanho.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Um erro ocorreu enquanto o servidor tentava efetuar o ‘upload’ da imagem',
+ 'image_upload_type_error' => 'A categoria de imagem que está sendo enviada é inválida',
+ 'image_upload_replace_type' => 'As substituições de arquivos de imagem devem ser do mesmo tipo',
+ 'image_upload_memory_limit' => 'Falha ao processar o ‘upload’ de imagem e/ou criar miniaturas devido a limites de recursos do sistema.',
+ 'image_thumbnail_memory_limit' => 'Falha ao criar variações de tamanho de imagem devido a limites de recursos do sistema.',
+ 'image_gallery_thumbnail_memory_limit' => 'Falha ao criar miniaturas da galeria devido aos limites de recursos do sistema.',
+ 'drawing_data_not_found' => 'Dados de diagrama não puderam ser carregados. O arquivo do diagrama pode não existir mais ou você não tenha permissão para acessá-lo.',
+
+ // Attachments
+ 'attachment_not_found' => 'Documento não encontrado',
+ 'attachment_upload_error' => 'Um erro ocorreu ao efetuar o ‘upload’ do arquivo anexado',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Falha ao tentar salvar o rascunho. Certifique-se de ter conexão de ‘internet’ antes de tentar salvar essa página',
+ 'page_draft_delete_fail' => 'Falha ao excluir o rascunho da página e buscar conteúdo salvo na página atual',
+ 'page_custom_home_deletion' => 'Não é possível deletar uma página definida como página inicial',
+
+ // Entities
+ 'entity_not_found' => 'Entidade não encontrada
+',
+ 'bookshelf_not_found' => 'Estante não encontrada',
+ 'book_not_found' => 'Livro não encontrado',
+ 'page_not_found' => 'Página não encontrada',
+ 'chapter_not_found' => 'Capítulo não encontrado',
+ 'selected_book_not_found' => 'O livro selecionado não foi encontrado',
+ 'selected_book_chapter_not_found' => 'O Livro ou Capítulo selecionado não foi encontrado',
+ 'guests_cannot_save_drafts' => 'Convidados não podem salvar rascunhos',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Você não pode excluir o único administrador',
+ 'users_cannot_delete_guest' => 'Você não pode excluir o usuário convidado',
+ 'users_could_not_send_invite' => 'Não foi possível criar o usuário porque o endereço eletrônico de convite não foi enviado',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Esse perfil não pode ser editado',
+ 'role_system_cannot_be_deleted' => 'Este é um perfil do sistema e não pode ser excluído',
+ 'role_registration_default_cannot_delete' => 'Esse perfil não poderá se excluído enquanto estiver registrado como perfil padrão de registro',
+ 'role_cannot_remove_only_admin' => 'Este usuário é o único vinculado ao perfil de administrador. Atribua o perfil de administrador a outro usuário antes de tentar removê-lo daqui.',
+
+ // Comments
+ 'comment_list' => 'Ocorreu um erro ao buscar os comentários.',
+ 'cannot_add_comment_to_draft' => 'Você não pode adicionar comentários a um rascunho.',
+ 'comment_add' => 'Ocorreu um erro ao adicionar / atualizar o comentário.',
+ 'comment_delete' => 'Ocorreu um erro ao excluir o comentário.',
+ 'empty_comment' => 'Não é possível adicionar um comentário vazio.',
+
+ // Error pages
+ '404_page_not_found' => 'Página Não Encontrada',
+ 'sorry_page_not_found' => 'Desculpe, a página que você está procurando não pôde ser encontrada.',
+ 'sorry_page_not_found_permission_warning' => 'Se você esperava que esta página existisse, talvez você não tenha permissão para visualizá-la.',
+ 'image_not_found' => 'Imagem não encontrada',
+ 'image_not_found_subtitle' => 'Desculpe, o arquivo de imagem que você estava procurando não pôde ser encontrado.',
+ 'image_not_found_details' => 'Se você esperava que esta imagem existisse, ela pode ter sido excluída.',
+ 'return_home' => 'Retornar à página inicial',
+ 'error_occurred' => 'Ocorreu um Erro',
+ 'app_down' => ':appName está fora do ar no momento',
+ 'back_soon' => 'Vai estar de volta em breve.',
+
+ // Import
+ 'import_zip_cant_read' => 'Não foi possível ler o arquivo ZIP.',
+ 'import_zip_cant_decode_data' => 'Não foi possível encontrar e decodificar o conteúdo ZIP data.json.',
+ 'import_zip_no_data' => 'Os dados do arquivo ZIP não têm o conteúdo esperado livro, capítulo ou página.',
+ 'import_zip_data_too_large' => 'O conteúdo ZIP data.json excede o tamanho máximo de upload configurado para a aplicação.',
+ 'import_validation_failed' => 'Falhou na validação da importação do ZIP com erros:',
+ 'import_zip_failed_notification' => 'Falhou ao importar arquivo ZIP.',
+ 'import_perms_books' => 'Você não tem as permissões necessárias para criar livros.',
+ 'import_perms_chapters' => 'Você não tem as permissões necessárias para criar capítulos.',
+ 'import_perms_pages' => 'Você não tem as permissões necessárias para criar páginas.',
+ 'import_perms_images' => 'Está não tem permissões necessárias para criar imagens.',
+ 'import_perms_attachments' => 'Você não tem a permissão necessária para criar anexos.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Nenhum código de autorização encontrado na requisição',
+ 'api_bad_authorization_format' => 'Um código de autorização foi encontrado na requisição, mas o formato parece incorreto',
+ 'api_user_token_not_found' => 'Nenhum código de API correspondente foi encontrado para o código de autorização fornecido',
+ 'api_incorrect_token_secret' => 'O segredo fornecido para o código de API usado está incorreto',
+ 'api_user_no_api_permission' => 'O proprietário do código de API utilizado não tem permissão para fazer requisições de API',
+ 'api_user_token_expired' => 'O código de autenticação expirou',
+ 'api_cookie_auth_only_get' => 'Somente solicitações GET são permitidas ao usar a API com autenticação baseada em cookies',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Erro encontrado ao enviar uma mensagem eletrônica de teste:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'A \'URL\' não corresponde aos anfitriões SSR configurados como permitidos ',
+];
diff --git a/lang/pt_BR/notifications.php b/lang/pt_BR/notifications.php
new file mode 100644
index 00000000000..7f6c100b1d3
--- /dev/null
+++ b/lang/pt_BR/notifications.php
@@ -0,0 +1,29 @@
+ 'Novo comentário na página: :pageName',
+ 'new_comment_intro' => 'Um usuário comentou em uma página de :appName:',
+ 'new_page_subject' => 'Nova página: :pageName',
+ 'new_page_intro' => 'Uma nova página foi criada em :appName:',
+ 'updated_page_subject' => 'Página atualizada: :pageName',
+ 'updated_page_intro' => 'Uma página foi atualizada em :appName:',
+ 'updated_page_debounce' => 'Para prevenir notificações em massa, por enquanto notificações não serão enviadas para você para próximas edições nessa página pelo mesmo editor.',
+ 'comment_mention_subject' => 'Você foi mencionado em um comentário na página: :pageName',
+ 'comment_mention_intro' => 'Você foi mencionado em um comentário sobre :appName:',
+
+ 'detail_page_name' => 'Nome da Página:',
+ 'detail_page_path' => 'Caminho da Página:',
+ 'detail_commenter' => 'Comentador:',
+ 'detail_comment' => 'Comentário:',
+ 'detail_created_by' => 'Criado por: ',
+ 'detail_updated_by' => 'Atualizado por:',
+
+ 'action_view_comment' => 'Ver Comentário',
+ 'action_view_page' => 'Ver Página',
+
+ 'footer_reason' => 'Essa notificação foi enviada para você porque :link engloba esse tipo de atividade para este item.',
+ 'footer_reason_link' => 'suas preferências de notificação',
+];
diff --git a/resources/lang/pt_BR/pagination.php b/lang/pt_BR/pagination.php
similarity index 100%
rename from resources/lang/pt_BR/pagination.php
rename to lang/pt_BR/pagination.php
diff --git a/resources/lang/pt_BR/passwords.php b/lang/pt_BR/passwords.php
similarity index 100%
rename from resources/lang/pt_BR/passwords.php
rename to lang/pt_BR/passwords.php
diff --git a/lang/pt_BR/preferences.php b/lang/pt_BR/preferences.php
new file mode 100644
index 00000000000..a92d971c3c3
--- /dev/null
+++ b/lang/pt_BR/preferences.php
@@ -0,0 +1,52 @@
+ 'Minha conta',
+
+ 'shortcuts' => 'Atalhos',
+ 'shortcuts_interface' => 'Preferências de Atalho UI',
+ 'shortcuts_toggle_desc' => 'Aqui você pode habilitar ou desabilitar os atalhos da interface do sistema de teclado, usados para navegação e ações.',
+ 'shortcuts_customize_desc' => 'Você pode personalizar cada um dos atalhos abaixo. Basta pressionar a combinação de teclas desejada após selecionar a entrada para um atalho.',
+ 'shortcuts_toggle_label' => 'Atalhos de teclado ativados',
+ 'shortcuts_section_navigation' => 'Navegação',
+ 'shortcuts_section_actions' => 'Ações Comuns',
+ 'shortcuts_save' => 'Salvar Atalhos',
+ 'shortcuts_overlay_desc' => 'Observação: quando os atalhos estão ativados, uma sobreposição auxiliar está disponível pressionando "?" que destacará os atalhos disponíveis para ações atualmente visíveis na tela.',
+ 'shortcuts_update_success' => 'As preferências de atalho foram atualizadas!',
+ 'shortcuts_overview_desc' => 'Gerencie os atalhos de teclado que você pode usar para navegar na interface de usuário do sistema.',
+
+ 'notifications' => 'Preferências de notificação',
+ 'notifications_desc' => 'Controle as notificações por e-mail que você recebe quando uma determinada atividade é executada no sistema.',
+ 'notifications_opt_own_page_changes' => 'Notificar quando houver alterações em páginas que eu possuo',
+ 'notifications_opt_own_page_comments' => 'Notificar comentários nas páginas que eu possuo',
+ 'notifications_opt_comment_mentions' => 'Notificar quando eu for mencionado em um comentário',
+ 'notifications_opt_comment_replies' => 'Notificar ao responder aos meus comentários',
+ 'notifications_save' => 'Salvar Preferências',
+ 'notifications_update_success' => 'Preferências de notificação foram atualizadas!',
+ 'notifications_watched' => 'Itens assistidos e ignorados',
+ 'notifications_watched_desc' => 'Abaixo estão os itens que possuem preferências de relógio personalizadas aplicadas. Para atualizar suas preferências para estes, veja o item e encontre as opções de relógio na barra lateral.',
+
+ 'auth' => 'Acesso & Segurança',
+ 'auth_change_password' => 'Mudar a senha',
+ 'auth_change_password_desc' => 'Altere a senha que você usa para fazer login no aplicativo. Deve ter pelo menos 8 caracteres.',
+ 'auth_change_password_success' => 'A senha foi atualizada!',
+
+ 'profile' => 'Detalhes do Perfil',
+ 'profile_desc' => 'Gerencie os detalhes da sua conta que o representam perante outros usuários, além dos detalhes que são utilizados para comunicação e personalização do sistema.',
+ 'profile_view_public' => 'Visualizar Perfil Público',
+ 'profile_name_desc' => 'Configure seu nome de exibição que ficará visível para outros usuários no sistema por meio da atividade que você realiza e do conteúdo de sua propriedade.',
+ 'profile_email_desc' => 'Este e-mail será utilizado para notificações e, dependendo da autenticação ativa do sistema, acesso ao sistema.',
+ 'profile_email_no_permission' => 'Infelizmente você não tem permissão para alterar seu endereço de e-mail. Se quiser alterar isso, você precisará pedir a um administrador para alterar isso para você.',
+ 'profile_avatar_desc' => 'Selecione uma imagem que será usada para representar você mesmo para outras pessoas no sistema. Idealmente, esta imagem deve ser quadrada e ter cerca de 256px de largura e altura.',
+ 'profile_admin_options' => 'Opções do administrador',
+ 'profile_admin_options_desc' => 'Opções adicionais do nível administrador, como as que visam gerenciar as atribuições de perfis, podem ser encontradas para sua conta de usuário na área "Configurações > Usuários" do aplicativo.',
+
+ 'delete_account' => 'Deletar conta',
+ 'delete_my_account' => 'Deletar minha conta',
+ 'delete_my_account_desc' => 'Isto excluirá completamente sua conta de usuário do sistema. Você não poderá recuperar esta conta ou reverter esta ação. O conteúdo que você criou, como páginas criadas e imagens carregadas, permanecerá.',
+ 'delete_my_account_warning' => 'Tem certeza de que deseja deletar sua conta?',
+];
diff --git a/lang/pt_BR/settings.php b/lang/pt_BR/settings.php
new file mode 100644
index 00000000000..97b434727f8
--- /dev/null
+++ b/lang/pt_BR/settings.php
@@ -0,0 +1,374 @@
+ 'Configurações',
+ 'settings_save' => 'Salvar Configurações',
+ 'system_version' => 'Versão do Sistema',
+ 'categories' => 'Categorias',
+
+ // App Settings
+ 'app_customization' => 'Customização',
+ 'app_features_security' => 'Recursos & Segurança',
+ 'app_name' => 'Nome da Aplicação',
+ 'app_name_desc' => 'Esse nome será mostrado no cabeçalho e nos e-mails.',
+ 'app_name_header' => 'Mostrar o nome no cabeçalho',
+ 'app_public_access' => 'Acesso Público',
+ 'app_public_access_desc' => 'Habilitar esta opção irá permitir que visitantes, que não estão logados, acessem o conteúdo em sua instância do BookStack.',
+ 'app_public_access_desc_guest' => 'O acesso de visitantes públicos pode ser controlado através do usuário "Convidado".',
+ 'app_public_access_toggle' => 'Permitir acesso público',
+ 'app_public_viewing' => 'Permitir visualização pública?',
+ 'app_secure_images' => 'Upload de Imagens mais Seguro',
+ 'app_secure_images_toggle' => 'Habilitar uploads de imagem mais seguro',
+ 'app_secure_images_desc' => 'Por razões de performance, todas as imagens são públicas. Esta opção adiciona uma string randômica na frente das URLs de imagens. Certifique-se de que os diretórios não possam ser indexados para prevenir acesso indesejado.',
+ 'app_default_editor' => 'Editor de Página Padrão',
+ 'app_default_editor_desc' => 'Selecione qual editor será usado por padrão ao editar novas páginas. Isso pode ser substituído em um nível de página onde é permitido.',
+ 'app_custom_html' => 'Conteúdo customizado para HTML',
+ 'app_custom_html_desc' => 'Qualquer conteúdo adicionado aqui será inserido ao final do HTML de todas as páginas. Isso é útil para sobrescrever estilos e adicionar códigos de análise e estatística do site.',
+ 'app_custom_html_disabled_notice' => 'O conteúdo customizado do HTML está desabilitado nesta página de configurações para garantir que quaisquer alterações danosas possam ser revertidas.',
+ 'app_logo' => 'Logo da Aplicação',
+ 'app_logo_desc' => 'Isto é usado na barra de cabeçalho do aplicativo, entre outras áreas. Esta imagem deve ter 86px de altura. Imagens grandes serão reduzidas.',
+ 'app_icon' => 'Ícone do Aplicativo',
+ 'app_icon_desc' => 'Este ícone é usado para guias e ícones de atalhos do navegador. Deve ser uma imagem PNG quadrada de 256px.',
+ 'app_homepage' => 'Página Inicial',
+ 'app_homepage_desc' => 'Selecione uma opção para ser exibida como página inicial no lugar da página padrão. Permissões de página serão ignoradas para as páginas selecionadas.',
+ 'app_homepage_select' => 'Selecione uma página',
+ 'app_footer_links' => 'Links do Rodapé',
+ 'app_footer_links_desc' => 'Adicionar links para mostrar dentro do rodapé do site. Estes serão exibidos na parte inferior da maioria das páginas, incluindo aqueles que não necessitam de login. Você pode usar uma etiqueta de "trans::" para usar traduções definidas pelo sistema. Por exemplo: Usando "trans::common.privacy_policy" fornecerá o texto traduzido "Política de Privacidade" e "trans::common.terms_of_service" fornecerá o texto traduzido "Termos de Serviço".',
+ 'app_footer_links_label' => 'Etiqueta do Link',
+ 'app_footer_links_url' => 'URL do Link',
+ 'app_footer_links_add' => 'Adicionar Link de Rodapé',
+ 'app_disable_comments' => 'Desativar Comentários',
+ 'app_disable_comments_toggle' => 'Desativar comentários',
+ 'app_disable_comments_desc' => 'Desativar comentários em todas as páginas no aplicativo. Comentários existentes não serão exibidos.',
+
+ // Color settings
+ 'color_scheme' => 'Esquema de Cores do Aplicativo',
+ 'color_scheme_desc' => 'Defina as cores a serem usadas na interface do usuário do aplicativo. As cores podem ser configuradas separadamente para modos escuro e claro para melhor se adequar ao tema e garantir legibilidade.',
+ 'ui_colors_desc' => 'Defina a cor primária do aplicativo e a cor padrão para links. A cor principal é usada principalmente para o banner do cabeçalho, botões e decorações da interface. A cor padrão para links é usada para links e ações baseados em texto, tanto dentro do conteúdo escrito quanto na interface do aplicativo.',
+ 'app_color' => 'Cor Primária',
+ 'link_color' => 'Cor Padrão para Links',
+ 'content_colors_desc' => 'Definir cores para todos os elementos na hierarquia da organização da página. Escolher cores com um brilho semelhante às cores padrão é recomendado para legibilidade.',
+ 'bookshelf_color' => 'Cor da Estante',
+ 'book_color' => 'Cor do Livro',
+ 'chapter_color' => 'Cor do Capítulo',
+ 'page_color' => 'Cor da Página',
+ 'page_draft_color' => 'Cor do Rascunho',
+
+ // Registration Settings
+ 'reg_settings' => 'Cadastro',
+ 'reg_enable' => 'Habilitar Cadastro',
+ 'reg_enable_toggle' => 'Habilitar cadastro',
+ 'reg_enable_desc' => 'Quando o cadastro é habilitado, visitantes poderão cadastrar-se como usuários do aplicativo. Realizado o cadastro, recebem um único perfil padrão.',
+ 'reg_default_role' => 'Perfil padrão para usuários após o cadastro',
+ 'reg_enable_external_warning' => 'A opção acima é ignorada enquanto a autenticação externa LDAP ou SAML estiver ativa. Contas de usuários para membros não existentes serão criadas automaticamente se a autenticação pelo sistema externo em uso for bem sucedida.',
+ 'reg_email_confirmation' => 'Confirmação de E-mail',
+ 'reg_email_confirmation_toggle' => 'Requerer confirmação de e-mail',
+ 'reg_confirm_email_desc' => 'Em caso da restrição de domínios estar em uso, a confirmação de e-mail será requerida e essa opção será ignorada.',
+ 'reg_confirm_restrict_domain' => 'Restrição de Domínios',
+ 'reg_confirm_restrict_domain_desc' => 'Entre com uma lista separada por vírgulas de domínios de e-mails aos quais você deseja restringir o cadastro. Um e-mail de confirmação será enviado para o usuário validar seu endereço de e-mail antes de ser permitido a interagir com a aplicação. Note que os usuários serão capazes de alterar o seus endereços de e-mail após o sucesso na confirmação do cadastro.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Nenhuma restrição definida',
+
+ // Sorting Settings
+ 'sorting' => 'Listas e classificações',
+ 'sorting_book_default' => 'Regra padrão de classificação de livros',
+ 'sorting_book_default_desc' => 'Selecione a regra de ordenação padrão a ser aplicada a novos livros. Isso não afetará os livros existentes e pode ser substituído para cada livro individualmente.',
+ 'sorting_rules' => 'Regras de ordenação',
+ 'sorting_rules_desc' => 'Estas são operações de ordenação pré-definidas que podem ser aplicadas a conteúdos no sistema.',
+ 'sort_rule_assigned_to_x_books' => 'Atribuído a :count Livros|Atribuído a :count Livros',
+ 'sort_rule_create' => 'Criar Regra de Ordenação',
+ 'sort_rule_edit' => 'Editar Regra de Ordenação',
+ 'sort_rule_delete' => 'Excluir Regra de Ordenação',
+ 'sort_rule_delete_desc' => 'Remover esta regra de ordenação do sistema. Os livros usando este tipo serão revertidos para a ordenação manual.',
+ 'sort_rule_delete_warn_books' => 'Esta regra de ordenação está sendo usada atualmente em :count livro(s). Tem certeza de que deseja excluí-la?',
+ 'sort_rule_delete_warn_default' => 'Esta regra de ordenação é atualmente usada como padrão para livros. Tem certeza de que deseja excluí-la?',
+ 'sort_rule_details' => 'Detalhes das Regras de Ordenação',
+ 'sort_rule_details_desc' => 'Defina um nome para esta regra de ordenação, que aparecerá nas listas quando os usuários selecionarem uma ordenação.',
+ 'sort_rule_operations' => 'Operações de Ordenação',
+ 'sort_rule_operations_desc' => 'Configure as ações de ordenação a serem executadas movendo-as da lista de operações disponíveis. Ao usar, as operações serão aplicadas em ordem, de cima para baixo. Quaisquer alterações feitas aqui serão aplicadas a todos os livros atribuídos após salvar.',
+ 'sort_rule_available_operations' => 'Operações Disponíveis',
+ 'sort_rule_available_operations_empty' => 'Não há operações restantes',
+ 'sort_rule_configured_operations' => 'Operações configuradas',
+ 'sort_rule_configured_operations_empty' => 'Arrastar/adicionar operações da lista "Operações Disponíveis"',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Nome - Alfabético',
+ 'sort_rule_op_name_numeric' => 'Nome - Numérico',
+ 'sort_rule_op_created_date' => 'Data de Criação',
+ 'sort_rule_op_updated_date' => 'Data de Atualização',
+ 'sort_rule_op_chapters_first' => 'Capítulos Primeiro',
+ 'sort_rule_op_chapters_last' => 'Capítulos por Último',
+ 'sorting_page_limits' => 'Limites de exibição por página',
+ 'sorting_page_limits_desc' => 'Defina quantos itens mostrar por página em várias listas no sistema. Normalmente, uma quantidade menor será mais eficiente, enquanto uma quantidade maior evita a necessidade de clicar em várias páginas. Recomenda-se usar um múltiplo de 6.',
+
+ // Maintenance settings
+ 'maint' => 'Manutenção',
+ 'maint_image_cleanup' => 'Limpeza de Imagens',
+ 'maint_image_cleanup_desc' => 'Examina páginas e revisa seus conteúdos para verificar quais imagens e desenhos estão atualmente em uso e quais são redundantes. Certifique-se de criar um backup completo do banco de dados e imagens antes de executar esta ação.',
+ 'maint_delete_images_only_in_revisions' => 'Também excluir imagens que existem apenas em revisões de página antigas',
+ 'maint_image_cleanup_run' => 'Executar Limpeza',
+ 'maint_image_cleanup_warning' => ':count imagens potencialmente não utilizadas foram encontradas. Tem certeza de que deseja excluir estas imagens?',
+ 'maint_image_cleanup_success' => ':count imagens potencialmente não utilizadas foram encontradas e excluídas!',
+ 'maint_image_cleanup_nothing_found' => 'Nenhuma imagem não utilizada foi encontrada, nada foi excluído!',
+ 'maint_send_test_email' => 'Enviar um E-mail de Teste',
+ 'maint_send_test_email_desc' => 'Esta opção envia um e-mail de teste para o endereço especificado no seu perfil.',
+ 'maint_send_test_email_run' => 'Enviar e-mail de teste',
+ 'maint_send_test_email_success' => 'E-mail enviado para :address',
+ 'maint_send_test_email_mail_subject' => 'E-mail de Teste',
+ 'maint_send_test_email_mail_greeting' => 'O envio de e-mails parece funcionar!',
+ 'maint_send_test_email_mail_text' => 'Parabéns! Já que você recebeu esta notificação, suas opções de e-mail parecem estar configuradas corretamente.',
+ 'maint_recycle_bin_desc' => 'Estantes, livros, capítulos e páginas excluídos são mandados para a lixeira podendo assim ser restaurados ou excluídos permanentemente. Itens mais antigos da lixeira podem vir a ser automaticamente removidos da lixeira após um tempo dependendo da configuração do sistema.',
+ 'maint_recycle_bin_open' => 'Abrir Lixeira',
+ 'maint_regen_references' => 'Regenerar referências',
+ 'maint_regen_references_desc' => 'Essa ação reconstruirá o índice de referência entre itens no banco de dados. Isso geralmente é tratado automaticamente, mas essa ação pode ser útil para indexar conteúdo antigo ou adicionado por métodos não oficiais.',
+ 'maint_regen_references_success' => 'O índice de referência foi regenerado!',
+ 'maint_timeout_command_note' => 'Observação: essa ação pode levar algum tempo para ser executada, o que pode levar a problemas de tempo limite em alguns ambientes da Web. Como alternativa, esta ação pode ser executada usando um comando de terminal.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Lixeira',
+ 'recycle_bin_desc' => 'Aqui você pode restaurar itens que foram excluídos ou escolher removê-los permanentemente do sistema. Esta lista não é filtrada diferentemente de listas de atividades similares no sistema onde filtros de permissão são aplicados.',
+ 'recycle_bin_deleted_item' => 'Item excluído',
+ 'recycle_bin_deleted_parent' => 'Parente',
+ 'recycle_bin_deleted_by' => 'Excluído por',
+ 'recycle_bin_deleted_at' => 'Momento de Exclusão',
+ 'recycle_bin_permanently_delete' => 'Excluir permanentemente',
+ 'recycle_bin_restore' => 'Restaurar',
+ 'recycle_bin_contents_empty' => 'A lixeira está vazia',
+ 'recycle_bin_empty' => 'Esvaziar Lixeira',
+ 'recycle_bin_empty_confirm' => 'Isso irá destruir permanentemente todos os itens na lixeira inclusive o conteúdo de cada item. Tem certeza de que quer esvaziar a lixeira?',
+ 'recycle_bin_destroy_confirm' => 'Esta ação excluirá permanentemente este item do sistema, juntamente com quaisquer elementos secundários listados abaixo, e você não poderá restaurar este conteúdo. Tem certeza de que deseja excluir permanentemente este item?',
+ 'recycle_bin_destroy_list' => 'Itens a serem Destruídos',
+ 'recycle_bin_restore_list' => 'Itens a serem restaurados',
+ 'recycle_bin_restore_confirm' => 'Esta ação irá restaurar o item excluído, inclusive quaisquer elementos filhos, para seu local original. Se a localização original tiver, entretanto, sido eliminada e estiver agora na lixeira, o item pai também precisará ser restaurado.',
+ 'recycle_bin_restore_deleted_parent' => 'O pai deste \'item\' também foi excluído. Eles permanecerão excluídos até que o pai também seja restaurado.',
+ 'recycle_bin_restore_parent' => 'Restaurar Parente',
+ 'recycle_bin_destroy_notification' => 'Excluído: conta o total de itens da lixeira.',
+ 'recycle_bin_restore_notification' => 'Excluído: conta o total de itens da lixeira.',
+
+ // Audit Log
+ 'audit' => 'Registro de auditoria',
+ 'audit_desc' => 'Este log de auditoria exibe uma lista de atividades rastreadas no sistema. Essa lista não é filtrada, ao contrário de listas de atividades semelhantes no sistema em que os filtros de permissão são aplicados.',
+ 'audit_event_filter' => 'Filtro de Eventos',
+ 'audit_event_filter_no_filter' => 'Sem filtro',
+ 'audit_deleted_item' => 'Item excluído',
+ 'audit_deleted_item_name' => 'Nome: :name',
+ 'audit_table_user' => 'Usuário',
+ 'audit_table_event' => 'Evento',
+ 'audit_table_related' => '\'Item\' ou Detalhe Relacionado',
+ 'audit_table_ip' => 'Endereço IP',
+ 'audit_table_date' => 'Data da Atividade',
+ 'audit_date_from' => 'Período de',
+ 'audit_date_to' => 'Para',
+
+ // Role Settings
+ 'roles' => 'Perfis',
+ 'role_user_roles' => 'Perfis de Usuários',
+ 'roles_index_desc' => 'Os perfis são usados para agrupar usuários & fornecer permissão de sistema a seus membros. Quando um usuário possui vários perfis, os privilégios concedidos serão acumulados e o usuário herdará todas as habilidades.',
+ 'roles_x_users_assigned' => ':count usuário atribuído|:count usuários atribuídos',
+ 'roles_x_permissions_provided' => ':count permissão|:count permissões',
+ 'roles_assigned_users' => 'Usuários atribuídos',
+ 'roles_permissions_provided' => 'Permissões fornecidas',
+ 'role_create' => 'Criar novo Perfil',
+ 'role_delete' => 'Excluir Perfil',
+ 'role_delete_confirm' => 'A ação vai excluír o perfil de nome \':roleName\'.',
+ 'role_delete_users_assigned' => 'Esse perfil tem :userCount usuários vinculados a ele. Se quiser migrar usuários desse perfil para outro, selecione um novo perfil.',
+ 'role_delete_no_migration' => "Não migre os usuários",
+ 'role_delete_sure' => 'Tem certeza que deseja excluir esse perfil?',
+ 'role_edit' => 'Editar Perfil',
+ 'role_details' => 'Detalhes do Perfil',
+ 'role_name' => 'Nome do Perfil',
+ 'role_desc' => 'Breve Descrição do Perfil',
+ 'role_mfa_enforced' => 'Requer Autenticação Multi-fator',
+ 'role_external_auth_id' => 'IDs de Autenticação Externa',
+ 'role_system' => 'Permissões do Sistema',
+ 'role_manage_users' => 'Gerenciar usuários',
+ 'role_manage_roles' => 'Gerenciar perfis e permissões de perfis',
+ 'role_manage_entity_permissions' => 'Gerenciar todos os livros, capítulos e permissões de páginas',
+ 'role_manage_own_entity_permissions' => 'Gerenciar permissões de seu próprio livro, capítulo e paginas',
+ 'role_manage_page_templates' => 'Gerenciar modelos de página',
+ 'role_access_api' => 'Acessar API do sistema',
+ 'role_manage_settings' => 'Gerenciar configurações da aplicação',
+ 'role_export_content' => 'Exportar conteúdo',
+ 'role_import_content' => 'Importar conteúdo',
+ 'role_editor_change' => 'Alterar página de edição',
+ 'role_notifications' => 'Receber e gerenciar notificações',
+ 'role_permission_note_users_and_roles' => 'Essas permissões tecnicamente também fornecerão visibilidade e busca de usuários e perfis no sistema.',
+ 'role_asset' => 'Permissões de Ativos',
+ 'roles_system_warning' => 'Esteja ciente de que o acesso a qualquer uma das três permissões acima pode permitir que um usuário altere seus próprios privilégios ou privilégios de outros usuários no sistema. Apenas atribua perfis com essas permissões para usuários confiáveis.',
+ 'role_asset_desc' => 'Essas permissões controlam o acesso padrão para os ativos dentro do sistema. Permissões em Livros, Capítulos e Páginas serão sobrescritas por essas permissões.',
+ 'role_asset_admins' => 'Administradores recebem automaticamente acesso a todo o conteúdo, mas essas opções podem mostrar ou ocultar as opções da Interface de Usuário.',
+ 'role_asset_image_view_note' => 'Isso está relacionado à visibilidade no gerenciador de imagens. O acesso real dos arquivos de imagem carregados dependerá da opção de armazenamento de imagem do sistema.',
+ 'role_asset_users_note' => 'Essas permissões tecnicamente também fornecerão visibilidade e busca de usuários do sistema.',
+ 'role_all' => 'Todos',
+ 'role_own' => 'Próprio',
+ 'role_controlled_by_asset' => 'Controlado pelos ativos nos quais o upload foi realizado',
+ 'role_save' => 'Salvar Perfil',
+ 'role_users' => 'Usuários com este perfil',
+ 'role_users_none' => 'Nenhum usuário está atualmente vinculado a este perfil',
+
+ // Users
+ 'users' => 'Usuários',
+ 'users_index_desc' => 'Crie e gerencie contas de usuários individuais dentro do sistema. As contas de usuário são usadas para login e atribuição de conteúdo e atividade. As permissões de acesso são baseadas principalmente no perfil, mas a propriedade do conteúdo do usuário, entre outros fatores, também pode afetar as permissões e o acesso.',
+ 'user_profile' => 'Perfil do Usuário',
+ 'users_add_new' => 'Adicionar Novo Usuário',
+ 'users_search' => 'Pesquisar Usuários',
+ 'users_latest_activity' => 'Última Atividade',
+ 'users_details' => 'Detalhes do Usuário',
+ 'users_details_desc' => 'Defina um nome de exibição e um endereço de e-mail para este usuário. O endereço de e-mail será usado para fazer login na aplicação.',
+ 'users_details_desc_no_email' => 'Defina um nome de exibição para este usuário para que outros usuários possam reconhecê-lo',
+ 'users_role' => 'Perfis do Usuário',
+ 'users_role_desc' => 'Selecione os perfis aos quais este usuário será vinculado. Se um usuário for vinculado a múltiplos perfis, suas permissões serão empilhadas e ele receberá todas as habilidades dos perfis atribuídos.',
+ 'users_password' => 'Senha do Usuário',
+ 'users_password_desc' => 'Defina uma senha usada para fazer \'login\' no aplicativo. Deve ter pelo menos 8 caracteres.',
+ 'users_send_invite_text' => 'Você pode escolher enviar a este usuário um convite por e-mail que o possibilitará definir sua própria senha, ou defina você uma senha.',
+ 'users_send_invite_option' => 'Enviar convite por e-mail',
+ 'users_external_auth_id' => 'ID de Autenticação Externa',
+ 'users_external_auth_id_desc' => 'Quando um sistema de autenticação externo está em uso (como SAML2, OIDC ou LDAP), este é o ID que vincula este usuário do BookStack à conta do sistema de autenticação. Você pode ignorar este campo se estiver usando a autenticação padrão baseada em email.',
+ 'users_password_warning' => 'Preencha o seguinte apenas se desejar alterar a senha deste usuário.',
+ 'users_system_public' => 'Esse usuário representa quaisquer convidados que visitam o aplicativo. Ele não pode ser usado para login mas é automaticamente atribuído.',
+ 'users_delete' => 'Excluir Usuário',
+ 'users_delete_named' => 'Excluir :userName',
+ 'users_delete_warning' => 'A ação vai excluir completamente o usuário de nome \':userName\' do sistema.',
+ 'users_delete_confirm' => 'Tem certeza que deseja excluir esse usuário?',
+ 'users_migrate_ownership' => 'Migrar propriedade',
+ 'users_migrate_ownership_desc' => 'Selecione um usuário aqui, se você deseja que outro se torne o proprietário de todos os itens atualmente pertencentes a este usuário.',
+ 'users_none_selected' => 'Nenhum usuário selecionado',
+ 'users_edit' => 'Editar Usuário',
+ 'users_edit_profile' => 'Editar Perfil',
+ 'users_avatar' => 'Imagem de Usuário',
+ 'users_avatar_desc' => 'Defina uma imagem para representar este usuário. Essa imagem deve ser um quadrado com aproximadamente 256px de altura e largura.',
+ 'users_preferred_language' => 'Linguagem de Preferência',
+ 'users_preferred_language_desc' => 'Esta opção irá alterar o idioma utilizado para a interface de usuário da aplicação. Isto não afetará nenhum conteúdo criado por usuários.',
+ 'users_social_accounts' => 'Contas Sociais',
+ 'users_social_accounts_desc' => 'Veja o status das contas sociais conectadas deste usuário. As contas sociais podem ser usadas além do sistema de autenticação principal para acesso ao sistema.',
+ 'users_social_accounts_info' => 'Aqui você pode conectar outras contas para acesso mais rápido. Desconectar uma conta não retira a possibilidade de acesso usando-a. Para revogar o acesso ao perfil através da conta social, você deverá fazê-lo na sua conta social.',
+ 'users_social_connect' => 'Contas Conectadas',
+ 'users_social_disconnect' => 'Desconectar Conta',
+ 'users_social_status_connected' => 'Conectado',
+ 'users_social_status_disconnected' => 'Desconectado',
+ 'users_social_connected' => 'Conta :socialAccount foi conectada com sucesso ao seu perfil.',
+ 'users_social_disconnected' => 'Conta :socialAccount foi desconectada com sucesso de seu perfil.',
+ 'users_api_tokens' => 'Tokens de API',
+ 'users_api_tokens_desc' => 'Crie e gerencie os tokens de acesso usados para autenticação com a API REST do BookStack. As permissões para a API são gerenciadas pelo usuário ao qual o token pertence.',
+ 'users_api_tokens_none' => 'Nenhum token de API foi criado para este usuário',
+ 'users_api_tokens_create' => 'Criar Token',
+ 'users_api_tokens_expires' => 'Expira',
+ 'users_api_tokens_docs' => 'Documentação da API',
+ 'users_mfa' => 'Autenticação de Múltiplos Fatores',
+ 'users_mfa_desc' => 'A autenticação multi-fator adiciona outra camada de segurança à sua conta.',
+ 'users_mfa_x_methods' => ':count método configurado|:count métodos configurados',
+ 'users_mfa_configure' => 'Configurar Métodos',
+
+ // API Tokens
+ 'user_api_token_create' => 'Criar Token de API',
+ 'user_api_token_name' => 'Nome',
+ 'user_api_token_name_desc' => 'Dê ao seu token um nome legível como um futuro lembrete de seu propósito.',
+ 'user_api_token_expiry' => 'Data de Expiração',
+ 'user_api_token_expiry_desc' => 'Defina uma data em que este token expira. Depois desta data, as requisições feitas usando este token não funcionarão mais. Deixar este campo em branco definirá um prazo de 100 anos futuros.',
+ 'user_api_token_create_secret_message' => 'Imediatamente após a criação deste token, um "ID de token" e "Secreto de token" serão gerados e exibidos. O segredo só será mostrado uma única vez, portanto, certifique-se de copiar o valor para algum lugar seguro antes de prosseguir.',
+ 'user_api_token' => 'Token de API',
+ 'user_api_token_id' => 'ID do Token',
+ 'user_api_token_id_desc' => 'Este é um identificador de sistema não editável, gerado para este token, que precisará ser fornecido em solicitações de API.',
+ 'user_api_token_secret' => 'Segredo do Token',
+ 'user_api_token_secret_desc' => 'Este é um segredo de sistema gerado para este token que precisará ser fornecido em requisições de API. Isto só será mostrado nesta única vez, portanto, copie este valor para um lugar seguro.',
+ 'user_api_token_created' => 'Token Criado :timeAgo',
+ 'user_api_token_updated' => 'Token Atualizado :timeAgo',
+ 'user_api_token_delete' => 'Excluir Token',
+ 'user_api_token_delete_warning' => 'Isto irá excluir completamente este token de API com o nome \':tokenName\' do sistema.',
+ 'user_api_token_delete_confirm' => 'Você tem certeza que deseja excluir este token de API?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Os webhooks são uma maneira de enviar dados para URLs externos quando certas ações e eventos ocorrem dentro do sistema, o que permite a integração baseada em eventos com plataformas externas, como sistemas de mensagens ou notificação.',
+ 'webhooks_x_trigger_events' => ':count evento de gatilho|:count eventos de gatilho',
+ 'webhooks_create' => 'Criar novo webhook',
+ 'webhooks_none_created' => 'Nenhum webhooks foi criado ainda.',
+ 'webhooks_edit' => 'Editar webhook',
+ 'webhooks_save' => 'Salvar webhook',
+ 'webhooks_details' => 'Detalhes do Webhook',
+ 'webhooks_details_desc' => 'Forneça um nome amigável e um endpoint POST como um local para que os dados de webhook sejam enviados.',
+ 'webhooks_events' => 'Eventos de webhook',
+ 'webhooks_events_desc' => 'Selecionar todos os eventos que devem acionar este webhook para serem chamados.',
+ 'webhooks_events_warning' => 'Tenha em mente que esses eventos serão acionados para todos os eventos selecionados, mesmo se as permissões personalizadas forem aplicadas. Certifique-se de que o uso deste webhook não exponha conteúdo confidencial.',
+ 'webhooks_events_all' => 'Todos eventos do sistema',
+ 'webhooks_name' => 'Nome Webhook',
+ 'webhooks_timeout' => 'Solicitação de Webhook Timeout (Segundos)',
+ 'webhooks_endpoint' => 'Endpoint Webhook',
+ 'webhooks_active' => 'Webhook ativo',
+ 'webhook_events_table_header' => 'Eventos',
+ 'webhooks_delete' => 'Excluir webhook',
+ 'webhooks_delete_warning' => 'Isto irá excluir completamente este webhook, com o nome ":webhookName" do sistema.',
+ 'webhooks_delete_confirm' => 'Tem certeza que deseja excluir este webhook?',
+ 'webhooks_format_example' => 'Exemplo de formato Webhook',
+ 'webhooks_format_example_desc' => 'Os dados do Webhook são enviados como uma solicitação POST para o ponto de extremidade configurado como JSON seguindo o formato abaixo. As propriedades "related_item" e "url" são opcionais e dependerão do tipo de evento acionado.',
+ 'webhooks_status' => 'Estado do "Webhook"',
+ 'webhooks_last_called' => 'Última chamada:',
+ 'webhooks_last_errored' => 'Último Erro:',
+ 'webhooks_last_error_message' => 'Última mensagem de erro:',
+
+ // Licensing
+ 'licenses' => 'Licenças',
+ 'licenses_desc' => 'Esta página detalha informações da licença do BookStack, além dos projetos e bibliotecas usadas no BookStack. Muitos projectos listados só podem ser utilizados num contexto de desenvolvimento.',
+ 'licenses_bookstack' => 'Licença do BookStack',
+ 'licenses_php' => 'Licenças de Bibliotecas PHP',
+ 'licenses_js' => 'Licenças de Bibliotecas JavaScript',
+ 'licenses_other' => 'Outras licenças',
+ 'license_details' => 'Detalhes da Licença',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/pt_BR/validation.php b/lang/pt_BR/validation.php
new file mode 100644
index 00000000000..4d8139c4b5c
--- /dev/null
+++ b/lang/pt_BR/validation.php
@@ -0,0 +1,123 @@
+ 'O campo :attribute deve ser aceito.',
+ 'active_url' => 'O campo :attribute não é uma URL válida.',
+ 'after' => 'O campo :attribute deve ser uma data posterior à data :date.',
+ 'alpha' => 'O campo :attribute deve conter apenas letras.',
+ 'alpha_dash' => 'O campo :attribute deve conter apenas letras, números, traços e underlines.',
+ 'alpha_num' => 'O campo :attribute deve conter apenas letras e números.',
+ 'array' => 'O campo :attribute deve ser uma array.',
+ 'backup_codes' => 'O código fornecido não é válido ou já foi usado.',
+ 'before' => 'O campo :attribute deve ser uma data anterior à data :date.',
+ 'between' => [
+ 'numeric' => 'O campo :attribute deve estar entre :min e :max.',
+ 'file' => 'O campo :attribute deve ter entre :min e :max kilobytes.',
+ 'string' => 'O campo :attribute deve ter entre :min e :max caracteres.',
+ 'array' => 'O campo :attribute deve ter entre :min e :max itens.',
+ ],
+ 'boolean' => 'O campo :attribute deve ser verdadeiro ou falso.',
+ 'confirmed' => 'O campo :attribute não é igual à sua confirmação.',
+ 'date' => 'O campo :attribute não está em um formato de data válido.',
+ 'date_format' => 'O campo :attribute não tem a formatação :format.',
+ 'different' => 'O campo :attribute e o campo :other devem ser diferentes.',
+ 'digits' => 'O campo :attribute deve ter :digits dígitos.',
+ 'digits_between' => 'O campo :attribute deve ter entre :min e :max dígitos.',
+ 'email' => 'O campo :attribute deve ser um e-mail válido.',
+ 'ends_with' => 'O campo :attribute deve terminar com um dos seguintes: :values',
+ 'file' => 'O :attribute deve ser um arquivo válido.',
+ 'filled' => 'O campo :attribute é requerido.',
+ 'gt' => [
+ 'numeric' => 'O campo :attribute deve ser maior que :value.',
+ 'file' => 'O campo :attribute deve ser maior que :value kilobytes.',
+ 'string' => 'O campo :attribute deve ser maior que :value caracteres.',
+ 'array' => 'O campo :attribute deve ter mais que :value itens.',
+ ],
+ 'gte' => [
+ 'numeric' => 'O campo :attribute deve ser maior ou igual a :value.',
+ 'file' => 'O campo :attribute deve ser maior ou igual a :value kilobytes.',
+ 'string' => 'O campo :attribute deve ser maior ou igual a :value caracteres.',
+ 'array' => 'O campo :attribute deve ter :value itens ou mais.',
+ ],
+ 'exists' => 'O campo :attribute selecionado não é válido.',
+ 'image' => 'O campo :attribute deve ser uma imagem.',
+ 'image_extension' => 'O campo :attribute deve ter uma extensão de imagem válida e suportada.',
+ 'in' => 'O campo :attribute selecionado não é válido.',
+ 'integer' => 'O campo :attribute deve ser um número inteiro.',
+ 'ip' => 'O campo :attribute deve ser um endereço IP válido.',
+ 'ipv4' => 'O campo :attribute deve ser um endereço IPv4 válido.',
+ 'ipv6' => 'O campo :attribute deve ser um endereço IPv6 válido.',
+ 'json' => 'O campo :attribute deve ser uma string JSON válida.',
+ 'lt' => [
+ 'numeric' => 'O campo :attribute deve ser menor que :value.',
+ 'file' => 'O campo :attribute deve ser menor que :value kilobytes.',
+ 'string' => 'O campo :attribute deve ser menor que :value caracteres.',
+ 'array' => 'O campo :attribute deve conter menos que :value itens.',
+ ],
+ 'lte' => [
+ 'numeric' => 'O campo :attribute deve ser menor ou igual a :value.',
+ 'file' => 'O campo :attribute deve ser menor ou igual a :value kilobytes.',
+ 'string' => 'O campo :attribute deve ser menor ou igual a :value caracteres.',
+ 'array' => 'O campo :attribute não deve conter mais que :value itens.',
+ ],
+ 'max' => [
+ 'numeric' => 'O valor para o campo :attribute não deve ser maior que :max.',
+ 'file' => 'O valor para o campo :attribute não deve ter tamanho maior que :max kilobytes.',
+ 'string' => 'O valor para o campo :attribute não deve ter mais que :max caracteres.',
+ 'array' => 'O valor para o campo :attribute não deve ter mais que :max itens.',
+ ],
+ 'mimes' => 'O campo :attribute deve ser do tipo type: :values.',
+ 'min' => [
+ 'numeric' => 'O campo :attribute não deve ser menor que :min.',
+ 'file' => 'O campo :attribute não deve ter tamanho menor que :min kilobytes.',
+ 'string' => 'O campo :attribute não deve ter menos que :min caracteres.',
+ 'array' => 'O campo :attribute não deve ter menos que :min itens.',
+ ],
+ 'not_in' => 'O campo selecionado :attribute é inválido.',
+ 'not_regex' => 'O formato do campo :attribute é inválido.',
+ 'numeric' => 'O campo :attribute deve ser um número.',
+ 'regex' => 'O formato do campo :attribute é inválido.',
+ 'required' => 'O campo :attribute é requerido.',
+ 'required_if' => 'O campo :attribute é requerido quando o campo :other tem valor :value.',
+ 'required_with' => 'O campo :attribute é requerido quando os valores :values estiverem presentes.',
+ 'required_with_all' => 'O campo :attribute é requerido quando os valores :values estiverem presentes.',
+ 'required_without' => 'O campo :attribute é requerido quando os valores :values não estiverem presentes.',
+ 'required_without_all' => 'O campo :attribute é requerido quando nenhum dos valores :values estiverem presentes.',
+ 'same' => 'O campo :attribute e o campo :other devem ser iguais.',
+ 'safe_url' => 'O link fornecido pode não ser seguro.',
+ 'size' => [
+ 'numeric' => 'O tamanho do campo :attribute deve ser :size.',
+ 'file' => 'O tamanho do arquivo :attribute deve ser de :size kilobytes.',
+ 'string' => 'O tamanho do campo :attribute deve ser de :size caracteres.',
+ 'array' => 'O campo :attribute deve conter :size itens.',
+ ],
+ 'string' => 'O campo :attribute deve ser uma string.',
+ 'timezone' => 'O campo :attribute deve conter uma timezone válida.',
+ 'totp' => 'O código fornecido não é válido ou expirou.',
+ 'unique' => 'Já existe um campo/dado de nome :attribute.',
+ 'url' => 'O formato da URL :attribute é inválido.',
+ 'uploaded' => 'O arquivo não pôde ser carregado. O servidor pode não aceitar arquivos deste tamanho.',
+
+ 'zip_file' => 'O :attribute precisa fazer referência a um arquivo do ZIP.',
+ 'zip_file_size' => 'O arquivo :attribute não deve exceder :size MB.',
+ 'zip_file_mime' => 'O :attribute precisa fazer referência a um arquivo do tipo :validTypes, encontrado :foundType.',
+ 'zip_model_expected' => 'Objeto de dados esperado, mas ":type" encontrado.',
+ 'zip_unique' => 'O :attribute deve ser único para o tipo de objeto dentro do ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Confirmação de senha requerida',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/ro/activities.php b/lang/ro/activities.php
new file mode 100644
index 00000000000..eed5cc0832f
--- /dev/null
+++ b/lang/ro/activities.php
@@ -0,0 +1,140 @@
+ 'a creat pagina',
+ 'page_create_notification' => 'Pagina creată cu succes',
+ 'page_update' => 'a actualizat pagina',
+ 'page_update_notification' => 'Pagina a fost actualizată cu succes',
+ 'page_delete' => 'a șters pagina',
+ 'page_delete_notification' => 'Pagina a fost ștearsă cu succes',
+ 'page_restore' => 'a restabilit pagina',
+ 'page_restore_notification' => 'Pagina a fost restaurată cu succes',
+ 'page_move' => 'a mutat pagina',
+ 'page_move_notification' => 'Pagină mutată cu succes',
+
+ // Chapters
+ 'chapter_create' => 'a creat capitolul',
+ 'chapter_create_notification' => 'Capitol creat cu succes',
+ 'chapter_update' => 'a actualizat capitolul',
+ 'chapter_update_notification' => 'Capitolul a fost actualizat cu succes',
+ 'chapter_delete' => 'a șters capitolul',
+ 'chapter_delete_notification' => 'Capitolul a fost șters cu succes',
+ 'chapter_move' => 'a mutat capitolul',
+ 'chapter_move_notification' => 'Capitolul a fost mutat cu succes',
+
+ // Books
+ 'book_create' => 'a creat cartea',
+ 'book_create_notification' => 'Carte creată cu succes',
+ 'book_create_from_chapter' => 'a convertit capitolul în carte',
+ 'book_create_from_chapter_notification' => 'Capitol convertit cu succes într-o carte',
+ 'book_update' => 'a actualizat cartea',
+ 'book_update_notification' => 'Carte actualizată cu succes',
+ 'book_delete' => 'a șters cartea',
+ 'book_delete_notification' => 'Carte ștearsă cu succes',
+ 'book_sort' => 'a sortat cartea',
+ 'book_sort_notification' => 'Carte reordonată cu succes',
+
+ // Bookshelves
+ 'bookshelf_create' => 'raft creat',
+ 'bookshelf_create_notification' => 'Raftul a fost creat cu succes',
+ 'bookshelf_create_from_book' => 'cartea a fost convertită in raft',
+ 'bookshelf_create_from_book_notification' => 'Carte transformată cu succes într-un raft',
+ 'bookshelf_update' => 'raftul actualizat',
+ 'bookshelf_update_notification' => 'Raftul a fost actualizat cu succes',
+ 'bookshelf_delete' => 'raft șters',
+ 'bookshelf_delete_notification' => 'Raftul a fost șters cu succes',
+
+ // Revisions
+ 'revision_restore' => 'versiune restabilită',
+ 'revision_delete' => 'revizie ștearsă',
+ 'revision_delete_notification' => 'Revizuirea a fost ștearsă',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" a fost adăugat la favorite',
+ 'favourite_remove_notification' => '":name" a fost eliminat din favorite',
+
+ // Watching
+ 'watch_update_level_notification' => 'Preferințele de urmărire actualizate cu succes',
+
+ // Auth
+ 'auth_login' => 'autentificat',
+ 'auth_register' => 'înregistrat ca utilizator nou',
+ 'auth_password_reset_request' => 'solicită utilizatorului resetarea parolei',
+ 'auth_password_reset_update' => 'resetează parola utilizatorului',
+ 'mfa_setup_method' => 'metoda MFA configurată',
+ 'mfa_setup_method_notification' => 'Metoda multi-factor a fost configurată cu succes',
+ 'mfa_remove_method' => 'metoda MFA eliminată',
+ 'mfa_remove_method_notification' => 'Metoda multi-factor a fost configurată cu succes',
+
+ // Settings
+ 'settings_update' => 'setări actualizate',
+ 'settings_update_notification' => 'Setările au fost actualizate',
+ 'maintenance_action_run' => 'rulează acțiunea de întreținere',
+
+ // Webhooks
+ 'webhook_create' => 'a creat webhook',
+ 'webhook_create_notification' => 'Webhook creat cu succes',
+ 'webhook_update' => 'a actualizat webhook',
+ 'webhook_update_notification' => 'Webhook actualizat cu succes',
+ 'webhook_delete' => 'a șters webhook',
+ 'webhook_delete_notification' => 'Webhook șters cu succes',
+
+ // Imports
+ 'import_create' => 'created import',
+ 'import_create_notification' => 'Import successfully uploaded',
+ 'import_run' => 'updated import',
+ 'import_run_notification' => 'Content successfully imported',
+ 'import_delete' => 'deleted import',
+ 'import_delete_notification' => 'Import successfully deleted',
+
+ // Users
+ 'user_create' => 'utilizator creat',
+ 'user_create_notification' => 'Utilizator creat cu succes',
+ 'user_update' => 'utilizator actualizat',
+ 'user_update_notification' => 'Utilizator actualizat cu succes',
+ 'user_delete' => 'utilizator șters',
+ 'user_delete_notification' => 'Utilizator eliminat cu succes',
+
+ // API Tokens
+ 'api_token_create' => 'created API token',
+ 'api_token_create_notification' => 'Token API creat cu succes',
+ 'api_token_update' => 'updated API token',
+ 'api_token_update_notification' => 'Token API actualizat cu succes',
+ 'api_token_delete' => 'deleted API token',
+ 'api_token_delete_notification' => 'Token API șters cu succes',
+
+ // Roles
+ 'role_create' => 'rol creat',
+ 'role_create_notification' => 'Rol creat cu succes',
+ 'role_update' => 'rol actualizat',
+ 'role_update_notification' => 'Rol actualizat cu succes',
+ 'role_delete' => 'rol șters',
+ 'role_delete_notification' => 'Rol şters cu succes',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'golește cos de gunoi',
+ 'recycle_bin_restore' => 'restaurat din coșul de gunoi',
+ 'recycle_bin_destroy' => 'eliminat din coșul de gunoi',
+
+ // Comments
+ 'commented_on' => 'a comentat la',
+ 'comment_create' => 'comentariu adăugat',
+ 'comment_update' => 'comentariu actualizat',
+ 'comment_delete' => 'comentariu șters',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'a actualizat permisiunile',
+];
diff --git a/lang/ro/auth.php b/lang/ro/auth.php
new file mode 100644
index 00000000000..e02eeb4c1ba
--- /dev/null
+++ b/lang/ro/auth.php
@@ -0,0 +1,117 @@
+ 'Aceste credenţiale nu se potrivesc cu înregistrările noastre.',
+ 'throttle' => 'Prea multe încercări de conectare. Vă rugăm să încercați din nou în :seconds secunde.',
+
+ // Login & Register
+ 'sign_up' => 'Inregistrează-te',
+ 'log_in' => 'Autentifică-te',
+ 'log_in_with' => 'Autentifică-te cu :socialDriver',
+ 'sign_up_with' => 'Inregistrează-te cu :socialDriver',
+ 'logout' => 'Deconectează-te',
+
+ 'name' => 'Nume',
+ 'username' => 'Nume utilizator',
+ 'email' => 'E-mail',
+ 'password' => 'Parolă',
+ 'password_confirm' => 'Confirmă parola',
+ 'password_hint' => 'Trebuie să aibă cel puțin 8 caractere',
+ 'forgot_password' => 'Ai uitat parola?',
+ 'remember_me' => 'Amintește-ți de mine',
+ 'ldap_email_hint' => 'Te rog să introduci o adresa de e-mail pentru a utiliza acest cont.',
+ 'create_account' => 'Crează cont',
+ 'already_have_account' => 'Ai deja cont?',
+ 'dont_have_account' => 'Nu ai cont?',
+ 'social_login' => 'Conectare folosind rețea socială',
+ 'social_registration' => 'Înregistrare cu rețea socială',
+ 'social_registration_text' => 'Înregistrați-vă și conectați-vă utilizând alt serviciu.',
+
+ 'register_thanks' => 'Mulțumesc pentru înregistrare!',
+ 'register_confirm' => 'Verifică-ți e-mailul și dă clic pe butonul de confirmare pentru a accesa :appName.',
+ 'registrations_disabled' => 'Înregistrările sunt momentan dezactivate',
+ 'registration_email_domain_invalid' => 'Acel domeniu de e-mail nu are acces la această aplicație',
+ 'register_success' => 'Mulțumesc pentru înscriere! Acum sunteți înregistrat și conectat.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Se încearcă autentificarea',
+ 'auto_init_starting_desc' => 'Vă contactăm sistemul de autentificare pentru a începe procesul de conectare. Dacă nu există niciun progres după 5 secunde, puteți încerca să dați clic pe linkul de mai jos.',
+ 'auto_init_start_link' => 'Continuă cu autentificarea',
+
+ // Password Reset
+ 'reset_password' => 'Resetează parola',
+ 'reset_password_send_instructions' => 'Introduceți adresa de e-mail mai jos și vi se va trimite un e-mail cu un link pentru resetarea parolei.',
+ 'reset_password_send_button' => 'Trimite linkul de resetare',
+ 'reset_password_sent' => 'Un link pentru resetarea parolei va fi trimis la :email dacă acea adresă de e-mail este găsită în sistem.',
+ 'reset_password_success' => 'Parola a fost resetată cu succes.',
+ 'email_reset_subject' => 'Resetează parola ta :appName',
+ 'email_reset_text' => 'Primești acest e-mail deoarece am primit o solicitare de resetare a parolei pentru contul tău.',
+ 'email_reset_not_requested' => 'Dacă nu ai solicitat resetarea parolei, nu este necesară nicio acțiune suplimentară.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Confirmă e-mailul pentru :appName',
+ 'email_confirm_greeting' => 'Mulțumim că te-ai alăturat :appName!',
+ 'email_confirm_text' => 'Te rog să confirmi adresa ta de e-mail făcând clic pe butonul de mai jos:',
+ 'email_confirm_action' => 'Confirmă emailul',
+ 'email_confirm_send_error' => 'Este necesară confirmarea prin e-mail, dar sistemul nu a putut trimite e-mailul. Contactează administratorul pentru a te asigura că e-mailul este configurat corect.',
+ 'email_confirm_success' => 'E-mailul a fost confirmat! Acum ar trebui să te poți autentifica folosind această adresă de e-mail.',
+ 'email_confirm_resent' => 'E-mailul de confirmare a fost retrimis, te rugăm să îți verifici căsuța de e-mail.',
+ 'email_confirm_thanks' => 'Mulțumim pentru confirmare!',
+ 'email_confirm_thanks_desc' => 'Vă rugăm să așteptați un moment până când confirmarea dvs. este procesată. Dacă nu sunteți redirecționat după 3 secunde apăsați pe link-ul "Continuați" de mai jos pentru a fi redirecționat.',
+
+ 'email_not_confirmed' => 'Adresa de e-mail neconfirmată',
+ 'email_not_confirmed_text' => 'Adresa ta de e-mail nu a fost încă confirmată.',
+ 'email_not_confirmed_click_link' => 'Accesează linkul din e-mailul care a fost trimis la scurt timp după ce te-ai înregistrat.',
+ 'email_not_confirmed_resend' => 'Dacă nu găsești e-mailul, poți retrimite e-mailul de confirmare completând formularul de mai jos.',
+ 'email_not_confirmed_resend_button' => 'Retrimite e-mail de confirmare',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Ai fost invitat să te alături :appName!',
+ 'user_invite_email_greeting' => 'A fost creat un cont pentru tine pe :appName.',
+ 'user_invite_email_text' => 'Fă clic pe butonul de mai jos pentru a seta o parolă de cont și a obține acces:',
+ 'user_invite_email_action' => 'Setează parola contului',
+ 'user_invite_page_welcome' => 'Bun venit la :appName!',
+ 'user_invite_page_text' => 'Pentru a vă finaliza configurarea contului și a obține acces, trebuie să setezi o parolă care va fi folosită pentru a te conecta la :appName la vizitele viitoare.',
+ 'user_invite_page_confirm_button' => 'Confirmă parola',
+ 'user_invite_success_login' => 'Parola setată, acum ar trebui să te poți autentifica folosind parola setată pentru a accesa :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Configurează autentificarea cu mai mulți factori de autentificare',
+ 'mfa_setup_desc' => 'Configurează autentificarea cu mai mulți factori ca un nivel suplimentar de securitate pentru contul tău de utilizator.',
+ 'mfa_setup_configured' => 'Deja configurat',
+ 'mfa_setup_reconfigure' => 'Reconfigurează',
+ 'mfa_setup_remove_confirmation' => 'Sigur dorești să elimini această metodă de autentificare cu mai mulți factori?',
+ 'mfa_setup_action' => 'Configurare',
+ 'mfa_backup_codes_usage_limit_warning' => 'Mai ai mai puțin de 5 coduri de rezervă rămase. Vă rugăm să generați și să stocați un nou set înainte de a rămâne fără coduri pentru a preveni blocarea contului.',
+ 'mfa_option_totp_title' => 'Aplicație mobilă',
+ 'mfa_option_totp_desc' => 'Pentru a utiliza autentificarea multifactor, vei avea nevoie de o aplicație mobilă care acceptă TOTP, cum ar fi Google Authenticator, Authy sau Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Coduri de rezervă',
+ 'mfa_option_backup_codes_desc' => 'Generates a set of one-time-use backup codes which you\'ll enter on login to verify your identity. Make sure to store these in a safe & secure place.',
+ 'mfa_gen_confirm_and_enable' => 'Confirmă și activează',
+ 'mfa_gen_backup_codes_title' => 'Configurarea codurilor de rezervă',
+ 'mfa_gen_backup_codes_desc' => 'Păstrează lista de coduri de mai jos într-un loc sigur. Când accesezi sistemul, vei putea folosi unul dintre coduri ca un al doilea mecanism de autentificare.',
+ 'mfa_gen_backup_codes_download' => 'Descarcă codurile',
+ 'mfa_gen_backup_codes_usage_warning' => 'Fiecare cod poate fi folosit o singură dată',
+ 'mfa_gen_totp_title' => 'Configurare aplicație mobilă',
+ 'mfa_gen_totp_desc' => 'Pentru a utiliza autentificarea cu mai mulți factori, vei avea nevoie de o aplicație mobilă care acceptă TOTP, cum ar fi Google Authenticator, Authy sau Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Scanează codul QR de mai jos folosind aplicația de autentificare preferată pentru a începe.',
+ 'mfa_gen_totp_verify_setup' => 'Verifică configurarea',
+ 'mfa_gen_totp_verify_setup_desc' => 'Verifică dacă totul funcționează introducând un cod, generat în aplicația de autentificare, în caseta de introducere de mai jos:',
+ 'mfa_gen_totp_provide_code_here' => 'Furnizează aici codul generat de aplicație',
+ 'mfa_verify_access' => 'Verifică accesul',
+ 'mfa_verify_access_desc' => 'Contul tău de utilizator necesită să îți confirmi identitatea printr-un nivel suplimentar de verificare înainte de acordare acces. Verifică folosind una dintre metodele configurate pentru a continua.',
+ 'mfa_verify_no_methods' => 'Nicio metodă configurată',
+ 'mfa_verify_no_methods_desc' => 'Nu s-au găsit metode de autentificare cu mai mulți factori pentru contul tău. Va trebui să configurezi cel puțin o metodă înainte de a obține acces.',
+ 'mfa_verify_use_totp' => 'Verifică folosind o aplicație mobilă',
+ 'mfa_verify_use_backup_codes' => 'Verifică folosind un cod de rezervă',
+ 'mfa_verify_backup_code' => 'Cod de rezervă',
+ 'mfa_verify_backup_code_desc' => 'Introdu unul dintre codurile de rezervă rămase mai jos:',
+ 'mfa_verify_backup_code_enter_here' => 'Introdu codul de rezervă aici',
+ 'mfa_verify_totp_desc' => 'Introdu codul, generat folosind aplicația mobilă, mai jos:',
+ 'mfa_setup_login_notification' => 'Metodă multifactorială configurată. Te rog să te conectezi din nou folosind metoda configurată.',
+];
diff --git a/lang/ro/common.php b/lang/ro/common.php
new file mode 100644
index 00000000000..fe4bfe8b9dd
--- /dev/null
+++ b/lang/ro/common.php
@@ -0,0 +1,115 @@
+ 'Anulează',
+ 'close' => 'Închide',
+ 'confirm' => 'Confirmă',
+ 'back' => 'Înapoi',
+ 'save' => 'Salvează',
+ 'continue' => 'Continuă',
+ 'select' => 'Selecteză',
+ 'toggle_all' => 'Comutați toate',
+ 'more' => 'Mai mult',
+
+ // Form Labels
+ 'name' => 'Nume',
+ 'description' => 'Descriere',
+ 'role' => 'Rol',
+ 'cover_image' => 'Imagine copertă',
+ 'cover_image_description' => 'This image should be approximately 440x250px although it will be flexibly scaled & cropped to fit the user interface in different scenarios as required, so actual dimensions for display will differ.',
+
+ // Actions
+ 'actions' => 'Acțiuni',
+ 'view' => 'Vizualizare',
+ 'view_all' => 'Vizualizează tot',
+ 'new' => 'Noutăți',
+ 'create' => 'Crează',
+ 'update' => 'Actualzează',
+ 'edit' => 'Editează',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Sortează',
+ 'move' => 'Mută',
+ 'copy' => 'Copiază',
+ 'reply' => 'Răspunde',
+ 'delete' => 'Șterge',
+ 'delete_confirm' => 'Confirmă ștergerea',
+ 'search' => 'Caută',
+ 'search_clear' => 'Șterge căutarea',
+ 'reset' => 'Resetează',
+ 'remove' => 'Elimină',
+ 'add' => 'Adaugă',
+ 'configure' => 'Configurează',
+ 'manage' => 'Gestionează',
+ 'fullscreen' => 'Ecran complet',
+ 'favourite' => 'Adaugă la favorite',
+ 'unfavourite' => 'Șterge de la favorite',
+ 'next' => 'Următorul',
+ 'previous' => 'Anterior',
+ 'filter_active' => 'Filtru activ:',
+ 'filter_clear' => 'Șterge filtru',
+ 'download' => 'Descarcă',
+ 'open_in_tab' => 'Deschide in tab',
+ 'open' => 'Open',
+
+ // Sort Options
+ 'sort_options' => 'Opțiuni ordonare',
+ 'sort_direction_toggle' => 'Comutare direcție sortare',
+ 'sort_ascending' => 'Ordonează crescător',
+ 'sort_descending' => 'Ordonează descrescător',
+ 'sort_name' => 'Nume',
+ 'sort_default' => 'Implicit',
+ 'sort_created_at' => 'Data creării',
+ 'sort_updated_at' => 'Data actualizării',
+
+ // Misc
+ 'deleted_user' => 'Utilizator șters',
+ 'no_activity' => 'Nicio activitate de afișat',
+ 'no_items' => 'Niciun articol disponibil',
+ 'back_to_top' => 'Înapoi sus',
+ 'skip_to_main_content' => 'Treci la conținutul principal',
+ 'toggle_details' => 'Comută detaliile',
+ 'toggle_thumbnails' => 'Comută miniaturi',
+ 'details' => 'Detalii',
+ 'grid_view' => 'Vizualizare grilă',
+ 'list_view' => 'Vizualizare listă',
+ 'default' => 'Implicit',
+ 'breadcrumb' => 'Navigare',
+ 'status' => 'Status',
+ 'status_active' => 'Activ',
+ 'status_inactive' => 'Inactiv',
+ 'never' => 'Niciodată',
+ 'none' => 'Niciunul',
+
+ // Header
+ 'homepage' => 'Acasă',
+ 'header_menu_expand' => 'Extindere meniu antet',
+ 'profile_menu' => 'Meniu profil',
+ 'view_profile' => 'Vezi profil',
+ 'edit_profile' => 'Editare profil',
+ 'dark_mode' => 'Mod întunecat',
+ 'light_mode' => 'Mod luminos',
+ 'global_search' => 'Căutare Globală',
+
+ // Layout tabs
+ 'tab_info' => 'Informații',
+ 'tab_info_label' => 'Tab: Arată informații secundare',
+ 'tab_content' => 'Conținut',
+ 'tab_content_label' => 'Tab: Arată conţinutul primar',
+
+ // Email Content
+ 'email_action_help' => 'Dacă întâmpini probleme la apăsarea butonului ":actionText", copiază și inserează URL-ul de mai jos în browser-ul web:',
+ 'email_rights' => 'Toate drepturile rezervate',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Politică de confidențialitate',
+ 'terms_of_service' => 'Termeni și condiții',
+
+ // OpenSearch
+ 'opensearch_description' => 'Search :appName',
+];
diff --git a/lang/ro/components.php b/lang/ro/components.php
new file mode 100644
index 00000000000..6aa6901844c
--- /dev/null
+++ b/lang/ro/components.php
@@ -0,0 +1,46 @@
+ 'Selectează imaginea',
+ 'image_list' => 'Listă imagine',
+ 'image_details' => 'Detalii imagine',
+ 'image_upload' => 'Încarcă imaginea',
+ 'image_intro' => 'Aici puteţi selecta şi gestiona imaginile care au fost încărcate anterior în sistem.',
+ 'image_intro_upload' => 'Încărcați o imagine nouă trăgând o imagine în această fereastră sau utilizând butonul "Încărcați Imaginea" de mai sus.',
+ 'image_all' => 'Tot',
+ 'image_all_title' => 'Vezi toate imaginile',
+ 'image_book_title' => 'Vezi imaginile încărcate în această carte',
+ 'image_page_title' => 'Vezi imaginile încărcate în această pagină',
+ 'image_search_hint' => 'Caută după numele imaginii',
+ 'image_uploaded' => 'Încărcat la :uploadedDate',
+ 'image_uploaded_by' => 'Încărcată de :userName',
+ 'image_uploaded_to' => 'Încărcat în :pageLink',
+ 'image_updated' => 'Actualizat :updateDate',
+ 'image_load_more' => 'Încarcă mai mult',
+ 'image_image_name' => 'Nume imagine',
+ 'image_delete_used' => 'Această imagine este folosită în paginile de mai jos.',
+ 'image_delete_confirm_text' => 'Ești sigur că vrei să ștergi această imagine?',
+ 'image_select_image' => 'Selectează imaginea',
+ 'image_dropzone' => 'Trage imaginile sau apasă aici pentru a le încărca',
+ 'image_dropzone_drop' => 'Trageți fișierele aici pentru a le încărca',
+ 'images_deleted' => 'Imagini șterse',
+ 'image_preview' => 'Previzualizare imagine',
+ 'image_upload_success' => 'Imaginea a fost încărcată cu succes',
+ 'image_update_success' => 'Detalii imagine actualizate cu succes',
+ 'image_delete_success' => 'Imaginea a fost ștearsă',
+ 'image_replace' => 'Înlocuiți imaginea',
+ 'image_replace_success' => 'Imaginea a fost actualizată',
+ 'image_rebuild_thumbs' => 'Regenerate Size Variations',
+ 'image_rebuild_thumbs_success' => 'Image size variations successfully rebuilt!',
+
+ // Code Editor
+ 'code_editor' => 'Editare cod',
+ 'code_language' => 'Limba codului',
+ 'code_content' => 'Conținut cod',
+ 'code_session_history' => 'Istoric sesiune',
+ 'code_save' => 'Salvează cod',
+];
diff --git a/lang/ro/editor.php b/lang/ro/editor.php
new file mode 100644
index 00000000000..951e027fec1
--- /dev/null
+++ b/lang/ro/editor.php
@@ -0,0 +1,182 @@
+ 'General',
+ 'advanced' => 'Avansat',
+ 'none' => 'Niciunul',
+ 'cancel' => 'Anulează',
+ 'save' => 'Salvează',
+ 'close' => 'Închide',
+ 'apply' => 'Apply',
+ 'undo' => 'Anulează',
+ 'redo' => 'Refă',
+ 'left' => 'Stânga',
+ 'center' => 'Centru',
+ 'right' => 'Dreapta',
+ 'top' => 'Sus',
+ 'middle' => 'Mijloc',
+ 'bottom' => 'Jos',
+ 'width' => 'Lățime',
+ 'height' => 'Înălțime',
+ 'More' => 'Mai mult',
+ 'select' => 'Selectează...',
+
+ // Toolbar
+ 'formats' => 'Formate',
+ 'header_large' => 'Antet mare',
+ 'header_medium' => 'Antet mediu',
+ 'header_small' => 'Antet mic',
+ 'header_tiny' => 'Antet minuscul',
+ 'paragraph' => 'Paragraf',
+ 'blockquote' => 'Citat',
+ 'inline_code' => 'Cod inline',
+ 'callouts' => 'Indicații',
+ 'callout_information' => 'Informație',
+ 'callout_success' => 'Succes',
+ 'callout_warning' => 'Avertisment',
+ 'callout_danger' => 'Pericol',
+ 'bold' => 'Îngroșat',
+ 'italic' => 'Italic',
+ 'underline' => 'Subliniat',
+ 'strikethrough' => 'Tăiat cu o linie',
+ 'superscript' => 'Scris sus',
+ 'subscript' => 'Scris jos',
+ 'text_color' => 'Culoare text',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Culoare personalizată',
+ 'remove_color' => 'Elimină culoarea',
+ 'background_color' => 'Culoare fundal',
+ 'align_left' => 'Aliniere la stânga',
+ 'align_center' => 'Aliniere în centru',
+ 'align_right' => 'Aliniere la dreapta',
+ 'align_justify' => 'Margini egale',
+ 'list_bullet' => 'Listă cu puncte',
+ 'list_numbered' => 'Listă numerotată',
+ 'list_task' => 'Listă de sarcini',
+ 'indent_increase' => 'Crește indentarea',
+ 'indent_decrease' => 'Scade indentarea',
+ 'table' => 'Tabel',
+ 'insert_image' => 'Inserare imagine',
+ 'insert_image_title' => 'Inserare/Editare Imagine',
+ 'insert_link' => 'Inserare/editare link',
+ 'insert_link_title' => 'Inserare/Editare link',
+ 'insert_horizontal_line' => 'Inserează linie orizontală',
+ 'insert_code_block' => 'Inserează bloc de cod',
+ 'edit_code_block' => 'Editează blocul de cod',
+ 'insert_drawing' => 'Inserare/editare desen',
+ 'drawing_manager' => 'Manager de desene',
+ 'insert_media' => 'Inserare/editare media',
+ 'insert_media_title' => 'Inserare/Editare media',
+ 'clear_formatting' => 'Șterge formatarea',
+ 'source_code' => 'Cod sursă',
+ 'source_code_title' => 'Cod sursă',
+ 'fullscreen' => 'Ecran complet',
+ 'image_options' => 'Opțiuni imagine',
+
+ // Tables
+ 'table_properties' => 'Proprietăți tabel',
+ 'table_properties_title' => 'Proprietăți tabel',
+ 'delete_table' => 'Șterge tabel',
+ 'table_clear_formatting' => 'Clear table formatting',
+ 'resize_to_contents' => 'Resize to contents',
+ 'row_header' => 'Row header',
+ 'insert_row_before' => 'Inserează rând după',
+ 'insert_row_after' => 'Inserează rând înainte',
+ 'delete_row' => 'Șterge rând',
+ 'insert_column_before' => 'Inserare coloană înainte',
+ 'insert_column_after' => 'Inserare coloană după',
+ 'delete_column' => 'Șterge coloana',
+ 'table_cell' => 'Celulă',
+ 'table_row' => 'Rând',
+ 'table_column' => 'Coloană',
+ 'cell_properties' => 'Proprietăți celulă',
+ 'cell_properties_title' => 'Proprietăți celulă',
+ 'cell_type' => 'Tip celulă',
+ 'cell_type_cell' => 'Celulă',
+ 'cell_scope' => 'Scop',
+ 'cell_type_header' => 'Celulă antet',
+ 'merge_cells' => 'Îmbină celule',
+ 'split_cell' => 'Scindare celulă',
+ 'table_row_group' => 'Grup rând',
+ 'table_column_group' => 'Grup Coloană',
+ 'horizontal_align' => 'Aliniere orizontală',
+ 'vertical_align' => 'Aliniere verticală',
+ 'border_width' => 'Lățime margine',
+ 'border_style' => 'Stil margine',
+ 'border_color' => 'Culoare margine',
+ 'row_properties' => 'Proprietăți rând',
+ 'row_properties_title' => 'Proprietăți rând',
+ 'cut_row' => 'Taie rândul',
+ 'copy_row' => 'Copiază rândul',
+ 'paste_row_before' => 'Inserează rând înainte',
+ 'paste_row_after' => 'Inserează rând după',
+ 'row_type' => 'Tip rând',
+ 'row_type_header' => 'Antet',
+ 'row_type_body' => 'Corp',
+ 'row_type_footer' => 'Subsol',
+ 'alignment' => 'Aliniere',
+ 'cut_column' => 'Șterge coloana',
+ 'copy_column' => 'Copiază coloana',
+ 'paste_column_before' => 'Lipiți coloana înainte',
+ 'paste_column_after' => 'Lipește coloana după',
+ 'cell_padding' => 'Spațiere celulă',
+ 'cell_spacing' => 'Spațiere celulară',
+ 'caption' => 'Titlu',
+ 'show_caption' => 'Afișează legenda',
+ 'constrain' => 'Proporții constrângeri',
+ 'cell_border_solid' => 'Solid',
+ 'cell_border_dotted' => 'Punctat',
+ 'cell_border_dashed' => 'Liniuțe',
+ 'cell_border_double' => 'Duble',
+ 'cell_border_groove' => 'Groove',
+ 'cell_border_ridge' => 'Creastă',
+ 'cell_border_inset' => 'Inserat',
+ 'cell_border_outset' => 'Început',
+ 'cell_border_none' => 'Niciunul',
+ 'cell_border_hidden' => 'Ascuns',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Sursă',
+ 'alt_desc' => 'Descriere alternativă',
+ 'embed' => 'Încorporează',
+ 'paste_embed' => 'Lipește codul încorporat mai jos:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Text de afișat',
+ 'title' => 'Titlu',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Deschide link-ul',
+ 'open_link_in' => 'Deschide link-ul în...',
+ 'open_link_current' => 'Fereastra curentă',
+ 'open_link_new' => 'Fereastră nouă',
+ 'remove_link' => 'Elimină link-ul',
+ 'insert_collapsible' => 'Inserează bloc colapsabil',
+ 'collapsible_unwrap' => 'Desfășoară',
+ 'edit_label' => 'Editează eticheta',
+ 'toggle_open_closed' => 'Comută deschis/închis',
+ 'collapsible_edit' => 'Editează bloc colapsabil',
+ 'toggle_label' => 'Comută etichetă',
+
+ // About view
+ 'about' => 'Despre editor',
+ 'about_title' => 'Despre editorul WYSIWYG',
+ 'editor_license' => 'Editor licență și drepturi de autor',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'Acest editor este construit folosind :tinyLink care este furnizat sub licența MIT.',
+ 'editor_tiny_license_link' => 'Detaliile privind drepturile de autor şi licența TinyMCE pot fi consultate aici.',
+ 'save_continue' => 'Salvează pagina și continuă',
+ 'callouts_cycle' => '(Continuă să apăși pentru a comuta prin tipuri)',
+ 'link_selector' => 'Link către conținut',
+ 'shortcuts' => 'Scurtături',
+ 'shortcut' => 'Scurtătură',
+ 'shortcuts_intro' => 'Următoarele comenzi rapide sunt disponibile în editor:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Descriere',
+];
diff --git a/lang/ro/entities.php b/lang/ro/entities.php
new file mode 100644
index 00000000000..ac8c9d32609
--- /dev/null
+++ b/lang/ro/entities.php
@@ -0,0 +1,476 @@
+ 'Creat recent',
+ 'recently_created_pages' => 'Pagini create recent',
+ 'recently_updated_pages' => 'Pagini actualizate recent',
+ 'recently_created_chapters' => 'Capitole create recent',
+ 'recently_created_books' => 'Cărți create recent',
+ 'recently_created_shelves' => 'Rafturi create recent',
+ 'recently_update' => 'Actualizate recent',
+ 'recently_viewed' => 'Vizualizate recent',
+ 'recent_activity' => 'Activitate recentă',
+ 'create_now' => 'Creează unul acum',
+ 'revisions' => 'Revizii',
+ 'meta_revision' => 'Revizuirea #:revisionCount',
+ 'meta_created' => 'Creat :timeLength',
+ 'meta_created_name' => 'Creat de :timeLength de :user',
+ 'meta_updated' => 'Actualizat :timeLength',
+ 'meta_updated_name' => 'Actualizat :timeLength de :user',
+ 'meta_owned_name' => 'Deținut de :user',
+ 'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
+ 'entity_select' => 'Selectare entitate',
+ 'entity_select_lack_permission' => 'Nu ai drepturile necesare pentru a selecta acest element',
+ 'images' => 'Imagini',
+ 'my_recent_drafts' => 'Ciornele mele recente',
+ 'my_recently_viewed' => 'Vizualizarea mea recentă',
+ 'my_most_viewed_favourites' => 'Favoritele mele cele mai vizualizate',
+ 'my_favourites' => 'Favoritele Mele',
+ 'no_pages_viewed' => 'Nu ai vizualizat nicio pagină',
+ 'no_pages_recently_created' => 'Nicio pagină nu a fost creată recent',
+ 'no_pages_recently_updated' => 'Nicio pagină nu a fost actualizată recent',
+ 'export' => 'Exportă',
+ 'export_html' => 'Fișier web inclus',
+ 'export_pdf' => 'Fișier PDF',
+ 'export_text' => 'Fișier text simplu',
+ 'export_md' => 'Fișier Markdown',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Permisiuni',
+ 'permissions_desc' => 'Set permissions here to override the default permissions provided by user roles.',
+ 'permissions_book_cascade' => 'Permissions set on books will automatically cascade to child chapters and pages, unless they have their own permissions defined.',
+ 'permissions_chapter_cascade' => 'Permissions set on chapters will automatically cascade to child pages, unless they have their own permissions defined.',
+ 'permissions_save' => 'Salvează permisiuni',
+ 'permissions_owner' => 'Proprietar',
+ 'permissions_role_everyone_else' => 'Toți ceilalți',
+ 'permissions_role_everyone_else_desc' => 'Set permissions for all roles not specifically overridden.',
+ 'permissions_role_override' => 'Override permissions for role',
+ 'permissions_inherit_defaults' => 'Moștenește valorile implicite',
+
+ // Search
+ 'search_results' => 'Rezultatele căutării',
+ 'search_total_results_found' => ':count rezultat găsit|:count rezultate totale găsite',
+ 'search_clear' => 'Șterge căutarea',
+ 'search_no_pages' => 'Nicio pagină nu se potrivește cu această căutare',
+ 'search_for_term' => 'Caută după :term',
+ 'search_more' => 'Mai multe rezultate',
+ 'search_advanced' => 'Căutare avansată',
+ 'search_terms' => 'Termeni de căutare',
+ 'search_content_type' => 'Tip conținut',
+ 'search_exact_matches' => 'Potriviri exacte',
+ 'search_tags' => 'Căutări cu etichete',
+ 'search_options' => 'Opţiuni',
+ 'search_viewed_by_me' => 'Vizualizat de mine',
+ 'search_not_viewed_by_me' => 'Nevizualizate de mine',
+ 'search_permissions_set' => 'Permisiuni setate',
+ 'search_created_by_me' => 'Creat de mine',
+ 'search_updated_by_me' => 'Actualizat de mine',
+ 'search_owned_by_me' => 'Deținut de mine',
+ 'search_date_options' => 'Opțiuni dată',
+ 'search_updated_before' => 'Actualizat înainte de',
+ 'search_updated_after' => 'Actualizat după',
+ 'search_created_before' => 'Creat înainte de',
+ 'search_created_after' => 'Creat după',
+ 'search_set_date' => 'Setează data',
+ 'search_update' => 'Actualizează căutarea',
+
+ // Shelves
+ 'shelf' => 'Raft',
+ 'shelves' => 'Rafturi',
+ 'x_shelves' => ':count Raft|:count Rafturi',
+ 'shelves_empty' => 'Nu a fost creat niciun raft',
+ 'shelves_create' => 'Creează raft nou',
+ 'shelves_popular' => 'Rafturi populare',
+ 'shelves_new' => 'Rafturi noi',
+ 'shelves_new_action' => 'Raft nou',
+ 'shelves_popular_empty' => 'Cele mai populare rafturi vor apărea aici.',
+ 'shelves_new_empty' => 'Cele mai recente rafturi vor apărea aici.',
+ 'shelves_save' => 'Salvează raft',
+ 'shelves_books' => 'Cărți pe acest raft',
+ 'shelves_add_books' => 'Adaugă cărți pe acest raft',
+ 'shelves_drag_books' => 'Trage cărțile mai jos pentru a le adăuga pe acest raft',
+ 'shelves_empty_contents' => 'Acest raft nu are cărți atribuite lui',
+ 'shelves_edit_and_assign' => 'Editare raft pentru a atribui cărți',
+ 'shelves_edit_named' => 'Editează raft :name',
+ 'shelves_edit' => 'Editați raftul',
+ 'shelves_delete' => 'Ștergeți raft',
+ 'shelves_delete_named' => 'Șterge raftul :name',
+ 'shelves_delete_explain' => "This will delete the shelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Are you sure you want to delete this shelf?',
+ 'shelves_permissions' => 'Permisiuni raft',
+ 'shelves_permissions_updated' => 'Permisiunile raftului au fost actualizate',
+ 'shelves_permissions_active' => 'Permisiuni raft active',
+ 'shelves_permissions_cascade_warning' => 'Permissions on shelves do not automatically cascade to contained books. This is because a book can exist on multiple shelves. Permissions can however be copied down to child books using the option found below.',
+ 'shelves_permissions_create' => 'Shelf create permissions are only used for copying permissions to child books using the action below. They do not control the ability to create books.',
+ 'shelves_copy_permissions_to_books' => 'Copiază permisiunile către cărți',
+ 'shelves_copy_permissions' => 'Copiază permisiunile',
+ 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this shelf to all books contained within. Before activating, ensure any changes to the permissions of this shelf have been saved.',
+ 'shelves_copy_permission_success' => 'Shelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'Carte',
+ 'books' => 'Cărți',
+ 'x_books' => ':count Carte|:count Cărți',
+ 'books_empty' => 'Nicio carte nu a fost creată',
+ 'books_popular' => 'Cărți populare',
+ 'books_recent' => 'Cărți recente',
+ 'books_new' => 'Cărți noi',
+ 'books_new_action' => 'Carte nouă',
+ 'books_popular_empty' => 'Cele mai populare cărți vor apărea aici.',
+ 'books_new_empty' => 'Cele mai recente cărți create vor apărea aici.',
+ 'books_create' => 'Creează o carte nouă',
+ 'books_delete' => 'Șterge carte',
+ 'books_delete_named' => 'Șterge cartea :bookName',
+ 'books_delete_explain' => 'Aceasta operațiune va șterge cartea cu numele \':bookName\'. Toate paginile și capitolele vor fi eliminate.',
+ 'books_delete_confirmation' => 'Ești sigur că vrei să ștergi această carte?',
+ 'books_edit' => 'Editează carte',
+ 'books_edit_named' => 'Editează cartea :bookName',
+ 'books_form_book_name' => 'Nume carte',
+ 'books_save' => 'Salvează cartea',
+ 'books_permissions' => 'Permisiuni carte',
+ 'books_permissions_updated' => 'Permisiuni carte actualizate',
+ 'books_empty_contents' => 'Nu au fost create pagini sau capitole pentru această carte.',
+ 'books_empty_create_page' => 'Creează pagină nouă',
+ 'books_empty_sort_current_book' => 'Sortează cartea curentă',
+ 'books_empty_add_chapter' => 'Adaugă un capitol',
+ 'books_permissions_active' => 'Permisiuni carte active',
+ 'books_search_this' => 'Caută în această carte',
+ 'books_navigation' => 'Navigare carte',
+ 'books_sort' => 'Sortează conținutul cărții',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Sortează cartea :bookName',
+ 'books_sort_name' => 'Sortează după nume',
+ 'books_sort_created' => 'Sortează după data creării',
+ 'books_sort_updated' => 'Sortează după data actualizării',
+ 'books_sort_chapters_first' => 'Capitole mai întâi',
+ 'books_sort_chapters_last' => 'Capitole la final',
+ 'books_sort_show_other' => 'Arată alte cărți',
+ 'books_sort_save' => 'Salvează noua ordine',
+ 'books_sort_show_other_desc' => 'Adăugaţi alte cărţi aici pentru a le include în operaţia de sortare şi permiteţi o reorganizare uşoară.',
+ 'books_sort_move_up' => 'Mută în sus',
+ 'books_sort_move_down' => 'Mută în jos',
+ 'books_sort_move_prev_book' => 'Mutare în cartea anterioară',
+ 'books_sort_move_next_book' => 'Mută în următoarea carte',
+ 'books_sort_move_prev_chapter' => 'Mutați în capitolul anterior',
+ 'books_sort_move_next_chapter' => 'Mergi la următorul capitol',
+ 'books_sort_move_book_start' => 'Sari la începutul cârtii',
+ 'books_sort_move_book_end' => 'Sari la sfârșitul cârtii',
+ 'books_sort_move_before_chapter' => 'Move to Before Chapter',
+ 'books_sort_move_after_chapter' => 'Move to After Chapter',
+ 'books_copy' => 'Copiază cartea',
+ 'books_copy_success' => 'Carte copiată cu succes',
+
+ // Chapters
+ 'chapter' => 'Capitol',
+ 'chapters' => 'Capitole',
+ 'x_chapters' => ':count Capitol|:count Capitole',
+ 'chapters_popular' => 'Capitole populare',
+ 'chapters_new' => 'Capitol nou',
+ 'chapters_create' => 'Creează un nou capitol',
+ 'chapters_delete' => 'Șterge capitol',
+ 'chapters_delete_named' => 'Şterge capitolul :chapterName',
+ 'chapters_delete_explain' => 'Se va șterge capitolul cu numele \':chapterName\'. Toate paginile care există în acest capitol vor fi, de asemenea, șterse.',
+ 'chapters_delete_confirm' => 'Ești sigur că vrei să ștergi acest capitol?',
+ 'chapters_edit' => 'Editează capitol',
+ 'chapters_edit_named' => 'Editați capitolul :chapterName',
+ 'chapters_save' => 'Salvează capitolul',
+ 'chapters_move' => 'Mută capitolul',
+ 'chapters_move_named' => 'Mutați capitolul :chapterName',
+ 'chapters_copy' => 'Copiază capitolul',
+ 'chapters_copy_success' => 'Capitolul a fost copiat',
+ 'chapters_permissions' => 'Permisiuni capitol',
+ 'chapters_empty' => 'În prezent nu există pagini în acest capitol.',
+ 'chapters_permissions_active' => 'Permisiuni capitol active',
+ 'chapters_permissions_success' => 'Permisiuni capitol actualizate',
+ 'chapters_search_this' => 'Caută în acest capitol',
+ 'chapter_sort_book' => 'Ordonare carte',
+
+ // Pages
+ 'page' => 'Pagină',
+ 'pages' => 'Pagini',
+ 'x_pages' => ':count Pagină|:count Pagini',
+ 'pages_popular' => 'Pagini populare',
+ 'pages_new' => 'Pagină nouă',
+ 'pages_attachments' => 'Atașamente',
+ 'pages_navigation' => 'Navigație pagină',
+ 'pages_delete' => 'Șterge pagină',
+ 'pages_delete_named' => 'Șterge pagina :pageNume',
+ 'pages_delete_draft_named' => 'Șterge schița paginii :pageNume',
+ 'pages_delete_draft' => 'Șterge ciorna',
+ 'pages_delete_success' => 'Pagină ștearsă',
+ 'pages_delete_draft_success' => 'Pagină ciornă ștearsă',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Ești sigur că dorești să ștergi acestă pagină?',
+ 'pages_delete_draft_confirm' => 'Ești sigur că vrei să ștergi această pagină schiță?',
+ 'pages_editing_named' => 'Editare pagină :pageNume',
+ 'pages_edit_draft_options' => 'Opțiuni ciornă',
+ 'pages_edit_save_draft' => 'Salvare ciornă',
+ 'pages_edit_draft' => 'Editare ciornă pagină',
+ 'pages_editing_draft' => 'Editare ciornă',
+ 'pages_editing_page' => 'Editare pagină',
+ 'pages_edit_draft_save_at' => 'Ciornă salvată la ',
+ 'pages_edit_delete_draft' => 'Șterge ciorna',
+ 'pages_edit_delete_draft_confirm' => 'Are you sure you want to delete your draft page changes? All of your changes, since the last full save, will be lost and the editor will be updated with the latest page non-draft save state.',
+ 'pages_edit_discard_draft' => 'Renunță la ciornă',
+ 'pages_edit_switch_to_markdown' => 'Comută la editorul Markdown',
+ 'pages_edit_switch_to_markdown_clean' => '(Curăță conținut)',
+ 'pages_edit_switch_to_markdown_stable' => '(Conținut stabil)',
+ 'pages_edit_switch_to_wysiwyg' => 'Comută la editorul WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Setare jurnal modificări',
+ 'pages_edit_enter_changelog_desc' => 'Adaugă o scurtă descriere a modificărilor făcute',
+ 'pages_edit_enter_changelog' => 'Intră în jurnalul de modificări',
+ 'pages_editor_switch_title' => 'Schimbă editorul',
+ 'pages_editor_switch_are_you_sure' => 'Ești sigur că vrei să schimbi editorul pentru această pagină?',
+ 'pages_editor_switch_consider_following' => 'Ia în considerare următoarele la schimbarea editorilor:',
+ 'pages_editor_switch_consideration_a' => 'Odată salvată, noua opțiune de editor va fi utilizată de orice editori viitori, inclusiv de cei care nu pot schimba însuși tipul de editor.',
+ 'pages_editor_switch_consideration_b' => 'Acest lucru poate duce la pierderea detaliilor și a sintaxei în anumite circumstanțe.',
+ 'pages_editor_switch_consideration_c' => 'Schimbări de etichete sau schimbări de jurnal de modificări, făcute de la ultima salvare, nu vor persista în această schimbare.',
+ 'pages_save' => 'Salvează pagina',
+ 'pages_title' => 'Titlu pagină',
+ 'pages_name' => 'Nume pagină',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Previzualizare',
+ 'pages_md_insert_image' => 'Inserare imagine',
+ 'pages_md_insert_link' => 'Inserează link-ul entității',
+ 'pages_md_insert_drawing' => 'Inserează desen',
+ 'pages_md_show_preview' => 'Arată previzualizarea',
+ 'pages_md_sync_scroll' => 'Sync preview scroll',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Unsaved Drawing Found',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'Pagina nu este într-un capitol',
+ 'pages_move' => 'Mută pagina',
+ 'pages_copy' => 'Copiază pagina',
+ 'pages_copy_desination' => 'Destinație copiere',
+ 'pages_copy_success' => 'Pagină copiată cu succes',
+ 'pages_permissions' => 'Permisiunile paginii',
+ 'pages_permissions_success' => 'Permisiuni pagină actualizate',
+ 'pages_revision' => 'Revizuire',
+ 'pages_revisions' => 'Revizuiri pagină',
+ 'pages_revisions_desc' => 'Listed below are all the past revisions of this page. You can look back upon, compare, and restore old page versions if permissions allow. The full history of the page may not be fully reflected here since, depending on system configuration, old revisions could be auto-deleted.',
+ 'pages_revisions_named' => 'Revizuiri pagină pentru :pageName',
+ 'pages_revision_named' => 'Revizuire pagină pentru :pageName',
+ 'pages_revision_restored_from' => 'Restaurat de la #:id; :summary',
+ 'pages_revisions_created_by' => 'Creat de',
+ 'pages_revisions_date' => 'Data revizuirii',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Numărul reviziei',
+ 'pages_revisions_numbered' => 'Revizuire #:id',
+ 'pages_revisions_numbered_changes' => 'Revizuirea #:id Modificări',
+ 'pages_revisions_editor' => 'Tip editor',
+ 'pages_revisions_changelog' => 'Jurnal de modificări',
+ 'pages_revisions_changes' => 'Modificări',
+ 'pages_revisions_current' => 'Vrsiunea curentă',
+ 'pages_revisions_preview' => 'Previzualizare',
+ 'pages_revisions_restore' => 'Restaurare',
+ 'pages_revisions_none' => 'Această pagină nu are revizuiri',
+ 'pages_copy_link' => 'Copiază link',
+ 'pages_edit_content_link' => 'Jump to section in editor',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Page Section Options',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Permisiuni carte active',
+ 'pages_initial_revision' => 'Publicare inițiala',
+ 'pages_references_update_revision' => 'System auto-update of internal links',
+ 'pages_initial_name' => 'Pagină nouă',
+ 'pages_editing_draft_notification' => 'Momentan editezi o schiță care a fost salvată ultima dată :timeDiff.',
+ 'pages_draft_edited_notification' => 'Această pagină a fost actualizată de atunci. Este recomandat să aruncați această ciornă.',
+ 'pages_draft_page_changed_since_creation' => 'Această pagină a fost actualizată de la crearea acestei ciorne. Este recomandat să renunțați la această schiță sau să aveți grijă să nu suprascrieți modificările paginii.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count utilizatori au început să editeze această pagină',
+ 'start_b' => ':userName a început să editeze această pagină',
+ 'time_a' => 'de când pagina a fost actualizată ultima dată',
+ 'time_b' => 'în ultimele :minCount minute',
+ 'message' => ':start :time. Aveți grijă să nu vă suprascrieți reciproc actualizările!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'Pagina specifică',
+ 'pages_is_template' => 'Şablon pagină',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Comutați bara laterală',
+ 'page_tags' => 'Etichete pagină',
+ 'chapter_tags' => 'Etichete capitol',
+ 'book_tags' => 'Etichete carte',
+ 'shelf_tags' => 'Etichete raft',
+ 'tag' => 'Etichetă',
+ 'tags' => 'Etichete',
+ 'tags_index_desc' => 'Tags can be applied to content within the system to apply a flexible form of categorization. Tags can have both a key and value, with the value being optional. Once applied, content can then be queried using the tag name and value.',
+ 'tag_name' => 'Nume etichetă',
+ 'tag_value' => 'Valoare etichetă (opțional)',
+ 'tags_explain' => "Adăugați unele etichete pentru a clasifica mai bine conținutul. \n Puteți atribui o valoare unei etichete pentru o organizare mai aprofundată.",
+ 'tags_add' => 'Adaugă o altă etichetă',
+ 'tags_remove' => 'Elimină această etichetă',
+ 'tags_usages' => 'Total utilizări etichetă',
+ 'tags_assigned_pages' => 'Atribuit paginilor',
+ 'tags_assigned_chapters' => 'Atribuit capitolelor',
+ 'tags_assigned_books' => 'Atribuit cărților',
+ 'tags_assigned_shelves' => 'Atribuit rafturilor',
+ 'tags_x_unique_values' => ':count valori unice',
+ 'tags_all_values' => 'Toate valorile',
+ 'tags_view_tags' => 'Vezi etichete',
+ 'tags_view_existing_tags' => 'Vezi etichetele existente',
+ 'tags_list_empty_hint' => 'Etichetele pot fi atribuite prin bara laterală a editorului de pagini sau în timpul editării detaliilor unei cărți, capitole sau raft.',
+ 'attachments' => 'Atașamente',
+ 'attachments_explain' => 'Încarcă unele fișiere sau atașează unele link-uri pentru a fi afișate pe pagina ta. Acestea sunt vizibile în bara laterală a paginii.',
+ 'attachments_explain_instant_save' => 'Modificările de aici sunt salvate instant.',
+ 'attachments_upload' => 'Încarcă fișier',
+ 'attachments_link' => 'Atașare link',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'Setează link',
+ 'attachments_delete' => 'Ești sigur că dorești să ștergi acest atașament?',
+ 'attachments_dropzone' => 'Trageți fișierele aici pentru a le încărca',
+ 'attachments_no_files' => 'Niciun fișier nu a fost încărcat',
+ 'attachments_explain_link' => 'Poți atașa un link dacă ai prefera să nu încarci un fișier. Acesta poate fi un link către o altă pagină sau un link către un fișier în cloud.',
+ 'attachments_link_name' => 'Nume link',
+ 'attachment_link' => 'Link atașament',
+ 'attachments_link_url' => 'Link către fișier',
+ 'attachments_link_url_hint' => 'Url site sau fișier',
+ 'attach' => 'Atașează',
+ 'attachments_insert_link' => 'Adăugare link atașament la pagină',
+ 'attachments_edit_file' => 'Editare fișier',
+ 'attachments_edit_file_name' => 'Nume fișier',
+ 'attachments_edit_drop_upload' => 'Trage fișierele aici sau apasă aici pentru a încărca și suprascrie',
+ 'attachments_order_updated' => 'Ordine atașament actualizată',
+ 'attachments_updated_success' => 'Detalii atașament actualizate',
+ 'attachments_deleted' => 'Atașament șters',
+ 'attachments_file_uploaded' => 'Fișier încărcat cu succes',
+ 'attachments_file_updated' => 'Fișier actualizat cu succes',
+ 'attachments_link_attached' => 'Link atașat cu succes la pagină',
+ 'templates' => 'Șabloane',
+ 'templates_set_as_template' => 'Pagina este un șablon',
+ 'templates_explain_set_as_template' => 'Poți seta această pagină ca șablon astfel încât conținutul său să fie utilizat la crearea altor pagini. Alți utilizatori vor putea utiliza acest șablon dacă au permisiuni de vizualizare pentru această pagină.',
+ 'templates_replace_content' => 'Înlocuiește conținutul paginii',
+ 'templates_append_content' => 'Adaugă la conținutul paginii',
+ 'templates_prepend_content' => 'Adaugă la începutul conținutului paginii',
+
+ // Profile View
+ 'profile_user_for_x' => 'Utilizator pentru :time',
+ 'profile_created_content' => 'Conținut creat',
+ 'profile_not_created_pages' => ':userName nu a creat nicio pagină',
+ 'profile_not_created_chapters' => ':userName nu a creat niciun capitol',
+ 'profile_not_created_books' => ':userName nu a creat nicio carte',
+ 'profile_not_created_shelves' => ':userName nu a creat niciun raft',
+
+ // Comments
+ 'comment' => 'Comentariu',
+ 'comments' => 'Comentarii',
+ 'comment_add' => 'Adaugă comentariu',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Lasă un comentariu aici',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Salvează comentariul',
+ 'comment_new' => 'Comentariu nou',
+ 'comment_created' => 'comentat :createDiff',
+ 'comment_updated' => 'Actualizat :updateDiff de :username',
+ 'comment_updated_indicator' => 'Actualizat',
+ 'comment_deleted_success' => 'Comentariu șters',
+ 'comment_created_success' => 'Comentariu adăugat',
+ 'comment_updated_success' => 'Comentariu actualizat',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Ești sigur că vrei să ștergi acest comentariu?',
+ 'comment_in_reply_to' => 'Ca răspuns la :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Here are the comments that have been left on this page. Comments can be added & managed when viewing the saved page.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Ești sigur că vrei să ștergi această revizuire?',
+ 'revision_restore_confirm' => 'Ești sigur că vei să restaurezi această revizuire? Conținutul paginii curente va fi înlocuit.',
+ 'revision_cannot_delete_latest' => 'Nu se poate șterge ultima revizuire.',
+
+ // Copy view
+ 'copy_consider' => 'Te rugăm să ie în considerare cele de mai jos atunci când copiezi conținut.',
+ 'copy_consider_permissions' => 'Setările de permisiuni personalizate nu vor fi copiate.',
+ 'copy_consider_owner' => 'Vei deveni proprietarul întregului conținut copiat.',
+ 'copy_consider_images' => 'Fișierele imagine ale paginii nu vor fi duplicate, iar imaginile originale își vor păstra relația cu pagina în care au fost încărcate inițial.',
+ 'copy_consider_attachments' => 'Atașamentele paginii nu vor fi copiate.',
+ 'copy_consider_access' => 'O schimbare a locației, a proprietarului sau a permisiunilor poate duce la accesul acestui conținut pentru cei care nu aveau acces anterior.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Convertește în raft',
+ 'convert_to_shelf_contents_desc' => 'Poți converti această carte într-un raft nou cu același conținut. Capitolele cuprinse în această carte vor fi convertite în cărți noi. Dacă această carte conține pagini, care nu sunt într-un capitol, această carte va fi redenumită și conține astfel de pagini, iar această carte va deveni parte a noului raft.',
+ 'convert_to_shelf_permissions_desc' => 'Orice permisiuni stabilite în această carte vor fi copiate pe noul raft și la toate noile cărți copii care nu au drepturi impuse proprii. Țineți cont că permisiunile de pe rafturi nu se aplică în cascadă pentru conținut cuprins în ele, așa cum se întâmplă pentru cărți.',
+ 'convert_book' => 'Convertește cartea',
+ 'convert_book_confirm' => 'Ești sigur că vrei să convertești această carte?',
+ 'convert_undo_warning' => 'Acest lucru nu poate fi anulat la fel de uşor.',
+ 'convert_to_book' => 'Convertește în carte',
+ 'convert_to_book_desc' => 'Poți converti acest capitol într-o nouă carte cu același conținut. Orice permisiuni stabilite pe acest capitol vor fi copiate în noua carte, dar orice permisiuni moștenite, din cartea părinte nu vor fi copiate, ceea ce ar putea duce la o schimbare a controlului de acces.',
+ 'convert_chapter' => 'Convertește capitolul',
+ 'convert_chapter_confirm' => 'Ești sigur că dorești să convertești acest capitol?',
+
+ // References
+ 'references' => 'Referințe',
+ 'references_none' => 'There are no tracked references to this item.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Watch',
+ 'watch_title_default' => 'Default Preferences',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignoră',
+ 'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
+ 'watch_title_new' => 'Pagina Nouă',
+ 'watch_desc_new' => 'Notifică atunci când orice pagină nouă este creată în cadrul acestui element.',
+ 'watch_title_updates' => 'Toate actualizările paginii',
+ 'watch_desc_updates' => 'Notifică atunci când o pagină este editată sau creată.',
+ 'watch_desc_updates_page' => 'Notifică la toate modificările paginii.',
+ 'watch_title_comments' => 'Toate actualizările și comentariile paginii',
+ 'watch_desc_comments' => 'Notifică la toate paginile noi, editările de pagină și comentariile noi.',
+ 'watch_desc_comments_page' => 'Notifică la toate paginile noi, editările de pagină și comentariile noi.',
+ 'watch_change_default' => 'Schimbă preferințele implicite de notificare',
+ 'watch_detail_ignore' => 'Se ignoră notificările',
+ 'watch_detail_new' => 'Urmărire pagini noi',
+ 'watch_detail_updates' => 'Urmărire pagini noi şi actualizări',
+ 'watch_detail_comments' => 'Urmărire pagini noi, actualizări și comentarii',
+ 'watch_detail_parent_book' => 'Se uită prin cartea părinte',
+ 'watch_detail_parent_book_ignore' => 'Ignorare prin intermediul cărţii părinte',
+ 'watch_detail_parent_chapter' => 'Urmărire prin capitolul părinte',
+ 'watch_detail_parent_chapter_ignore' => 'Urmărire prin capitolul părinte',
+];
diff --git a/lang/ro/errors.php b/lang/ro/errors.php
new file mode 100644
index 00000000000..550c9c5d588
--- /dev/null
+++ b/lang/ro/errors.php
@@ -0,0 +1,135 @@
+ 'Nu ai permisiunea de a accesa pagina solicitată.',
+ 'permissionJson' => 'Nu ai permisiunea de a efectua acțiunea solicitată.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Un utilizator cu adresa de e-mail :email există deja, dar cu acreditări diferite.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'E-mailul a fost deja confirmat, încearcă să te conectezi.',
+ 'email_confirmation_invalid' => 'Acest token de confirmare nu este valid sau a fost deja folosit, încercă să te înregistrezi din nou.',
+ 'email_confirmation_expired' => 'Token-ul de confirmare a expirat, a fost trimis un nou e-mail de confirmare.',
+ 'email_confirmation_awaiting' => 'Adresa de e-mail pentru contul utilizat trebuie să fie confirmată',
+ 'ldap_fail_anonymous' => 'Accesul LDAP a eșuat utilizând legătura anonimă',
+ 'ldap_fail_authed' => 'Accesul LDAP a eșuat folosind detaliile date dn și parolă',
+ 'ldap_extension_not_installed' => 'Extensia LDAP PHP nu este instalată',
+ 'ldap_cannot_connect' => 'Nu se poate conecta la serverul ldap, conexiunea inițială a eșuat',
+ 'saml_already_logged_in' => 'Deja conectat',
+ 'saml_no_email_address' => 'Nu s-a putut găsi o adresă de e-mail, pentru acest utilizator, în datele furnizate de sistemul extern de autentificare',
+ 'saml_invalid_response_id' => 'Solicitarea de la sistemul extern de autentificare nu este recunoscută de un proces inițiat de această aplicație. Navigarea înapoi după o autentificare ar putea cauza această problemă.',
+ 'saml_fail_authed' => 'Autentificarea folosind :system a eșuat, sistemul nu a furnizat autorizare cu succes',
+ 'oidc_already_logged_in' => 'Deja conectat',
+ 'oidc_no_email_address' => 'Nu s-a putut găsi o adresă de e-mail, pentru acest utilizator, în datele furnizate de sistemul extern de autentificare',
+ 'oidc_fail_authed' => 'Autentificarea folosind :system a eșuat, sistemul nu a furnizat autorizare cu succes',
+ 'social_no_action_defined' => 'Nicio acțiune definită',
+ 'social_login_bad_response' => "Eroare primită în timpul autentificării :socialAccount : \n:error",
+ 'social_account_in_use' => 'Acest cont :socialAccount este deja utilizat, încercați să vă conectați prin intermediul opțiunii :socialCont.',
+ 'social_account_email_in_use' => 'E-mailul :email este deja în uz. Dacă ai deja un cont, te poți conecta la contul :socialAccount din setările profilului.',
+ 'social_account_existing' => 'Acest :socialAccount este deja atașat la profilul tău.',
+ 'social_account_already_used_existing' => 'Acest cont :socialAccount este deja utilizat de un alt utilizator.',
+ 'social_account_not_used' => 'Acest cont :socialAccount nu este legat de niciun utilizator. Te rugăm să îl atașezi în setările profilului. ',
+ 'social_account_register_instructions' => 'Dacă nu ai încă un cont, poți înregistra un cont utilizând opțiunea :socialCont.',
+ 'social_driver_not_found' => 'Driver social negăsit',
+ 'social_driver_not_configured' => 'Setările tale sociale :socialAccount nu sunt configurate corect.',
+ 'invite_token_expired' => 'Acest link de invitație a expirat. Poți încerca să îți resetezi parola contului.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // System
+ 'path_not_writable' => 'Calea fișierului :filePath nu a putut fi încărcată. Asigurați-vă că poate fi scrisă pe server.',
+ 'cannot_get_image_from_url' => 'Nu se poate obține imaginea de la :url',
+ 'cannot_create_thumbs' => 'Serverul nu poate crea miniaturi. Verifică dacă este instalată extensia GD PHP.',
+ 'server_upload_limit' => 'Serverul nu permite încărcarea acestei dimensiuni. Te rog să încerci o dimensiune mai mică a fișierului.',
+ 'server_post_limit' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.',
+ 'uploaded' => 'Serverul nu permite încărcarea acestei dimensiuni. Te rog să încerci o dimensiune mai mică a fișierului.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'A apărut o eroare la încărcarea imaginii',
+ 'image_upload_type_error' => 'Tipul de imagine încărcat nu este valid',
+ 'image_upload_replace_type' => 'Inlocuirea fisierului de imagine trebuie sa fie de acelasi tip',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Drawing data could not be loaded. The drawing file might no longer exist or you may not have permission to access it.',
+
+ // Attachments
+ 'attachment_not_found' => 'Atașamentul nu a fost găsit',
+ 'attachment_upload_error' => 'A apărut o eroare la încărcarea atașamentului',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Nu s-a reușit salvarea ciornei. Asigură-te că ai conexiune la internet înainte de a salva această pagină',
+ 'page_draft_delete_fail' => 'Nu s-a putut șterge ciorna paginii și prelua pagina curentă salvată',
+ 'page_custom_home_deletion' => 'Nu se poate șterge o pagină în timp ce este setată ca primă pagină',
+
+ // Entities
+ 'entity_not_found' => 'Entitate negăsită',
+ 'bookshelf_not_found' => 'Raftul nu a fost găsit',
+ 'book_not_found' => 'Carte negăsită',
+ 'page_not_found' => 'Pagină negăsită',
+ 'chapter_not_found' => 'Capitol negăsit',
+ 'selected_book_not_found' => 'Cartea selectată nu a fost găsită',
+ 'selected_book_chapter_not_found' => 'Cartea selectată sau capitolul nu a fost găsit',
+ 'guests_cannot_save_drafts' => 'Vizitatorii nu pot salva ciorne',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Nu poți șterge singurul administrator',
+ 'users_cannot_delete_guest' => 'Nu se poate șterge utilizatorul "Vizitator"',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Acest rol nu poate fi editat',
+ 'role_system_cannot_be_deleted' => 'Acest rol este un rol de sistem și nu poate fi șters',
+ 'role_registration_default_cannot_delete' => 'Acest rol nu poate fi șters când este setat ca rol implicit de înregistrare',
+ 'role_cannot_remove_only_admin' => 'Acest utilizator este singurul utilizator atribuit rolului de administrator. Atribuiți rolul de administrator unui alt utilizator înainte de a-l elimina aici.',
+
+ // Comments
+ 'comment_list' => 'A apărut o eroare la preluarea comentariilor.',
+ 'cannot_add_comment_to_draft' => 'Nu poți adăuga comentarii la o ciornă.',
+ 'comment_add' => 'A apărut o eroare la adăugarea / actualizarea comentariului.',
+ 'comment_delete' => 'A apărut o eroare la ștergerea comentariului.',
+ 'empty_comment' => 'Nu se poate adăuga un comentariu gol.',
+
+ // Error pages
+ '404_page_not_found' => 'Pagina nu a fost găsită',
+ 'sorry_page_not_found' => 'Ne pare rău, pagina pe care o cauți nu a putut fi găsită.',
+ 'sorry_page_not_found_permission_warning' => 'Dacă te aștepți ca această pagină să existe, s-ar putea să nu ai permisiunea de a o vizualiza.',
+ 'image_not_found' => 'Imagine negăsită',
+ 'image_not_found_subtitle' => 'Ne pare rău, fișierul de imagine pe care îl cauți nu a putut fi găsit.',
+ 'image_not_found_details' => 'Dacă te aștepți ca această imagine să existe, e posibil să fie ștearsă.',
+ 'return_home' => 'Întoarce-te acasă',
+ 'error_occurred' => 'A apărut o eroare',
+ 'app_down' => ':appName nu funcționează acum',
+ 'back_soon' => 'Va reveni în curând.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Nu s-a găsit niciun token de autorizare la cerere',
+ 'api_bad_authorization_format' => 'A fost găsit un token de autorizare, dar formatul este incorect',
+ 'api_user_token_not_found' => 'Nu a fost găsit niciun token API potrivit pentru codul de autorizare furnizat',
+ 'api_incorrect_token_secret' => 'Secretul furnizat pentru token-ul API folosit este incorect',
+ 'api_user_no_api_permission' => 'Proprietarul token-ului API folosit nu are permisiunea de a efectua apeluri API',
+ 'api_user_token_expired' => 'Token-ul de autorizare utilizat a expirat',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Eroare la trimiterea unui e-mail de test:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'The URL does not match the configured allowed SSR hosts',
+];
diff --git a/lang/ro/notifications.php b/lang/ro/notifications.php
new file mode 100644
index 00000000000..da7f590fd71
--- /dev/null
+++ b/lang/ro/notifications.php
@@ -0,0 +1,29 @@
+ 'Comentariu nou pe pagina: :pageName',
+ 'new_comment_intro' => 'Un utilizator a comentat pe o pagină în :appName:',
+ 'new_page_subject' => 'Pagină nouă: :pageName',
+ 'new_page_intro' => 'O nouă pagină a fost creată în :appName:',
+ 'updated_page_subject' => 'Pagina actualizată: :pageName',
+ 'updated_page_intro' => 'O nouă pagină a fost creată în :appName:',
+ 'updated_page_debounce' => 'Pentru a preveni notificări în masă, pentru un timp nu veți primi notificări suplimentare la această pagină de către același editor.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Nume pagină:',
+ 'detail_page_path' => 'Page Path:',
+ 'detail_commenter' => 'Cine a comentat:',
+ 'detail_comment' => 'Comentariu:',
+ 'detail_created_by' => 'Creat de:',
+ 'detail_updated_by' => 'Actualizat de:',
+
+ 'action_view_comment' => 'Vizualizați comentariul',
+ 'action_view_page' => 'Vezi pagina',
+
+ 'footer_reason' => 'Această notificare ți-a fost trimisă deoarece :link acoperă acest tip de activitate pentru acest articol.',
+ 'footer_reason_link' => 'preferințele dvs. de notificare',
+];
diff --git a/lang/ro/pagination.php b/lang/ro/pagination.php
new file mode 100644
index 00000000000..675496041f7
--- /dev/null
+++ b/lang/ro/pagination.php
@@ -0,0 +1,12 @@
+ '« Înapoi',
+ 'next' => 'Înainte »',
+
+];
diff --git a/lang/ro/passwords.php b/lang/ro/passwords.php
new file mode 100644
index 00000000000..bd27acc15ea
--- /dev/null
+++ b/lang/ro/passwords.php
@@ -0,0 +1,15 @@
+ 'Parolele trebuie să aibă cel puțin opt caractere și să corespundă confirmării.',
+ 'user' => "Nu putem găsi un utilizator cu această adresă de e-mail.",
+ 'token' => 'Token-ul de resetare a parolei nu este valid pentru această adresă de e-mail.',
+ 'sent' => 'Am trimis prin e-mail link-ul de resetare a parolei!',
+ 'reset' => 'Parola ta a fost resetată!',
+
+];
diff --git a/lang/ro/preferences.php b/lang/ro/preferences.php
new file mode 100644
index 00000000000..93db2f66a8e
--- /dev/null
+++ b/lang/ro/preferences.php
@@ -0,0 +1,52 @@
+ 'Contul meu',
+
+ 'shortcuts' => 'Scurtături',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Aici puteți activa sau dezactiva scurtăturile interfeței folosite pentru navigare și acțiuni.',
+ 'shortcuts_customize_desc' => 'Puteți personaliza fiecare dintre scurtăturile de mai jos. Apăsați combinația de taste dorită după ce selectați intrarea pentru o scurtătură.',
+ 'shortcuts_toggle_label' => 'Comenzi rapide activate',
+ 'shortcuts_section_navigation' => 'Navigare',
+ 'shortcuts_section_actions' => 'Acțiuni comune',
+ 'shortcuts_save' => 'Salvează scurtăturile',
+ 'shortcuts_overlay_desc' => 'Notă: Când comenzile rapide sunt activate popup de ajutor este disponibilă prin apăsarea "?" care va evidenția scurtăturile disponibile pentru acțiunile vizibile în prezent pe ecran.',
+ 'shortcuts_update_success' => 'Preferințele dumneavoastră au fost actualizate!',
+ 'shortcuts_overview_desc' => 'Gestionați scurtăturile de tastatură pe care le puteți utiliza pentru a naviga prin interfața.',
+
+ 'notifications' => 'Preferințe de notificare',
+ 'notifications_desc' => 'Controlați notificările prin e-mail pe care le primiți atunci când o anumită activitate este efectuată în sistem.',
+ 'notifications_opt_own_page_changes' => 'Notifică la comentarii pe paginile pe care le dețin',
+ 'notifications_opt_own_page_comments' => 'Notifică la comentarii pe paginile pe care le dețin',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notifică la răspunsurile la comentariile mele',
+ 'notifications_save' => 'Salvează Preferințe',
+ 'notifications_update_success' => 'Preferințele de notificare au fost actualizate!',
+ 'notifications_watched' => 'Articole urmărite și ignorate',
+ 'notifications_watched_desc' => 'Mai jos sunt elementele care au fost aplicate preferințe personalizate. Pentru a actualiza preferințele pentru acestea, vizualizați elementul și apoi găsiți opțiunile de ceas în bara laterală.',
+
+ 'auth' => 'Acces & Securitate',
+ 'auth_change_password' => 'Schimbă Parola',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Password has been updated!',
+
+ 'profile' => 'Detalii Profil',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'Vezi profilul Public',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Delete Account',
+ 'delete_my_account' => 'Delete My Account',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/ro/settings.php b/lang/ro/settings.php
new file mode 100644
index 00000000000..d65a8e0714f
--- /dev/null
+++ b/lang/ro/settings.php
@@ -0,0 +1,374 @@
+ 'Setări',
+ 'settings_save' => 'Salvează setările',
+ 'system_version' => 'Versiune sistem',
+ 'categories' => 'Categorii',
+
+ // App Settings
+ 'app_customization' => 'Personalizare',
+ 'app_features_security' => 'Caracteristici și securitate',
+ 'app_name' => 'Numele aplicației',
+ 'app_name_desc' => 'Acest nume este afișat în antet și în orice e-mail trimis de sistem.',
+ 'app_name_header' => 'Arată numele în antet',
+ 'app_public_access' => 'Acces public',
+ 'app_public_access_desc' => 'Activarea acestei opțiuni va permite vizitatorilor, care nu sunt autentificați, să acceseze conținutul în instanța de BookStack.',
+ 'app_public_access_desc_guest' => 'Accesul vizitatorilor publici poate fi controlat prin intermediul utilizatorului "Vizitator".',
+ 'app_public_access_toggle' => 'Permite accesul public',
+ 'app_public_viewing' => 'Permiți vizualizarea publică?',
+ 'app_secure_images' => 'Încărcare imagini cu securitate mai mare',
+ 'app_secure_images_toggle' => 'Activare încărcare imagini cu securitate mai mare',
+ 'app_secure_images_desc' => 'Din motive de performanță, toate imaginile sunt publice. Această opțiune adaugă un șir de caractere greu de ghicit în fața url-urilor de imagine. Asigură-te că indexul directorilor nu este activat pentru a preveni accesul ușor.',
+ 'app_default_editor' => 'Editor de pagină implicit',
+ 'app_default_editor_desc' => 'Selectează editorul care va fi folosit în mod implicit la editarea paginilor noi. Acest lucru poate fi înlocuit la un nivel de pagină unde permisiunile permit.',
+ 'app_custom_html' => 'Conținut header HTML personalizat',
+ 'app_custom_html_desc' => 'Orice conținut adăugat aici va fi inserat în partea de jos a secțiunii a fiecărei pagini. Acest lucru este util pentru a suprascrie stilurile sau pentru a adăuga cod analitic.',
+ 'app_custom_html_disabled_notice' => 'Conținutul headerului HTML personalizat este dezactivat pe această pagină de setări pentru a asigura că modificările pot fi inversate.',
+ 'app_logo' => 'Logo aplicație',
+ 'app_logo_desc' => 'Acest lucru este folosit în bara de antet a aplicației, printre alte zone. Această imagine ar trebui să fie de 86px în înălțime. Imaginile mari vor fi scalate în jos.',
+ 'app_icon' => 'Iconiță aplicație',
+ 'app_icon_desc' => 'Această pictogramă este utilizată pentru tab-urile din browser și pictogramele de comenzi rapide. Aceasta ar trebui să fie o imagine PNG pătrată de 256px.',
+ 'app_homepage' => 'Pagina principală a aplicației',
+ 'app_homepage_desc' => 'Selectează o vizualizare pentru a afișa pe prima pagină în loc de vizualizarea implicită. Permisiunile paginii sunt ignorate pentru paginile selectate.',
+ 'app_homepage_select' => 'Selectează o pagină',
+ 'app_footer_links' => 'Link-uri de subsol',
+ 'app_footer_links_desc' => 'Adaugă link-uri de afișat în subsolul site-ului. Acestea vor fi afișate în partea de jos a majorității paginilor, inclusiv cele care nu necesită autentificare. Poți folosi o etichetă de "trans::" pentru a folosi traduceri definite de sistem. De exemplu: Folosind "trans:common:common.privacy_policy" va oferi textul tradus "Politica de confidențialitate" și "trans:common.terms_of_service" va furniza textul tradus "Termenii serviciului".',
+ 'app_footer_links_label' => 'Etichetă link',
+ 'app_footer_links_url' => 'URL link',
+ 'app_footer_links_add' => 'Adăugare link subsol',
+ 'app_disable_comments' => 'Dezactivează comentariile',
+ 'app_disable_comments_toggle' => 'Dezactivează comentariile',
+ 'app_disable_comments_desc' => 'Dezactivează comentariile pentru toate paginile aplicației. Comentariile existente nu sunt afișate.',
+
+ // Color settings
+ 'color_scheme' => 'Schema de culori a aplicației',
+ 'color_scheme_desc' => 'Setați culorile pe care să le utilizați în interfață. Culorile pot fi configurate separat pentru modurile întuneric şi lumină pentru a se potrivi cel mai bine cu tema şi a asigura lizibilitatea.',
+ 'ui_colors_desc' => 'Setaţi culoarea primară a aplicaţiei şi culoarea implicită a link-ului. Culoarea primară este utilizată în principal pentru banner-ul antet, butoane şi decoraţiunile interfeţei. Culoarea implicită a link-ului este utilizată pentru link-uri și acțiuni bazate pe text, atât în conținutul scris, cât și în interfața aplicației.',
+ 'app_color' => 'Culoare primară',
+ 'link_color' => 'Culoare link implicită',
+ 'content_colors_desc' => 'Set colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'bookshelf_color' => 'Culoare raft',
+ 'book_color' => 'Culoare carte',
+ 'chapter_color' => 'Culoare capitol',
+ 'page_color' => 'Culoare pagină',
+ 'page_draft_color' => 'Culoare pagină ciornă',
+
+ // Registration Settings
+ 'reg_settings' => 'Înregistrare',
+ 'reg_enable' => 'Permite înregistrarea',
+ 'reg_enable_toggle' => 'Permite înregistrarea',
+ 'reg_enable_desc' => 'Când înregistrarea este activată, utilizatorul va putea să se înregistreze ca utilizator al aplicației. La înregistrare, ei au un singur rol implicit de utilizator.',
+ 'reg_default_role' => 'Rol utilizator implicit după înregistrare',
+ 'reg_enable_external_warning' => 'Opțiunea de mai sus este ignorată în timp ce autentificarea externă LDAP sau SAML este activă. Conturile de utilizator pentru membrii neexistenți vor fi create automat dacă autentificarea, împotriva sistemului extern utilizat, este reușită.',
+ 'reg_email_confirmation' => 'Confirmare e-mail',
+ 'reg_email_confirmation_toggle' => 'Solicită confirmare e-mail',
+ 'reg_confirm_email_desc' => 'Dacă este folosită restricționarea domeniului, atunci va fi necesară confirmarea e-mailului și această opțiune va fi ignorată.',
+ 'reg_confirm_restrict_domain' => 'Restricționare domeniu',
+ 'reg_confirm_restrict_domain_desc' => 'Introduceți o listă de domenii de e-mail separate prin virgulă la care doriți să restricționați înregistrarea. Utilizatorilor le va fi trimis un e-mail pentru a-și confirma adresa înainte de a putea interacționa cu aplicația. Rețineți că utilizatorii vor putea să își schimbe adresele de e-mail după o înregistrare reușită.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Nicio restricție setată',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Mentenanţă',
+ 'maint_image_cleanup' => 'Curățare imagini',
+ 'maint_image_cleanup_desc' => 'Scanează pagina și conținutul revizuirii pentru a verifica ce imagini și desene sunt utilizate în prezent și care imagini sunt redundante. Asigurați-vă că ați creat o copie de rezervă a bazei de date și a imaginii complete înainte de a o rula.',
+ 'maint_delete_images_only_in_revisions' => 'De asemenea, șterge imagini care există numai în vechile revizuiri ale paginii',
+ 'maint_image_cleanup_run' => 'Rulează curățarea',
+ 'maint_image_cleanup_warning' => ':count potenţiale imagini nefolosite au fost găsite. Sunteţi sigur că doriţi să ştergeţi aceste imagini?',
+ 'maint_image_cleanup_success' => ':count potențiale imagini nefolosite găsite și șterse!',
+ 'maint_image_cleanup_nothing_found' => 'Nu au fost găsite imagini nefolosite, nimic șters!',
+ 'maint_send_test_email' => 'Trimite un e-mail de test',
+ 'maint_send_test_email_desc' => 'Aceasta trimite un e-mail de test la adresa ta de e-mail specificată în profilul tău.',
+ 'maint_send_test_email_run' => 'Trimite e-mail de test',
+ 'maint_send_test_email_success' => 'E-mail trimis la :address',
+ 'maint_send_test_email_mail_subject' => 'Email de test',
+ 'maint_send_test_email_mail_greeting' => 'Livrarea e-mailului pare să funcţioneze!',
+ 'maint_send_test_email_mail_text' => 'Felicitări! Deoarece ai primit această notificare prin e-mail, setările de e-mail par să fie configurate corespunzător.',
+ 'maint_recycle_bin_desc' => 'Rafturile, cărțile, capitole și paginile șterse se trimit la coșul de gunoi pentru a putea fi restaurate sau șterse definitiv. Elementele mai vechi din coșul de gunoi pot fi eliminate automat după o vreme, în funcție de configurația sistemului.',
+ 'maint_recycle_bin_open' => 'Deschide coșul de gunoi',
+ 'maint_regen_references' => 'Regenerează referințe',
+ 'maint_regen_references_desc' => 'Această acțiune va reconstrui indexul de referință al elementului încrucișat în baza de date. Acest lucru este de obicei manipulat automat, dar această acțiune poate fi utilă pentru a indexa conținutul vechi sau conținutul adăugat prin metode neoficiale.',
+ 'maint_regen_references_success' => 'Indicele de referință a fost regenerat!',
+ 'maint_timeout_command_note' => 'Notă: Această acțiune necesită timp pentru a funcționa, ceea ce poate duce la apariția unor probleme în unele medii web. Ca alternativă, această acțiune trebuie efectuată utilizând o comandă din terminal.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Coș de gunoi',
+ 'recycle_bin_desc' => 'Aici poți restaura elementele care au fost șterse sau alege să le elimini definitiv din sistem. Această listă este nefiltrată spre deosebire de listele de activități similare din sistemul în care sunt aplicate filtrele de permisiuni.',
+ 'recycle_bin_deleted_item' => 'Element șters',
+ 'recycle_bin_deleted_parent' => 'Părinte',
+ 'recycle_bin_deleted_by' => 'Șters de',
+ 'recycle_bin_deleted_at' => 'Data ștergerii',
+ 'recycle_bin_permanently_delete' => 'Ștergere permanentă',
+ 'recycle_bin_restore' => 'Restaurează',
+ 'recycle_bin_contents_empty' => 'Coșul de gunoi este în prezent gol',
+ 'recycle_bin_empty' => 'Golește coșul de gunoi',
+ 'recycle_bin_empty_confirm' => 'Aceasta va distruge definitiv toate elementele din coșul de gunoi, inclusiv conținutul conținut din fiecare element. Ești sigur că vrei să golești coșul de gunoi?',
+ 'recycle_bin_destroy_confirm' => 'This action will permanently delete this item from the system, along with any child elements listed below, and you will not be able to restore this content. Are you sure you want to permanently delete this item?',
+ 'recycle_bin_destroy_list' => 'Elemente de distrus',
+ 'recycle_bin_restore_list' => 'Elemente care vor fi restaurate',
+ 'recycle_bin_restore_confirm' => 'Această acțiune va restaura elementul șters, inclusiv orice elemente copii, la locația lor originală. În cazul în care locația originală a fost de atunci ștearsă și acum este în coșul de reciclare, elementul părinte va trebui, de asemenea, să fie restaurat.',
+ 'recycle_bin_restore_deleted_parent' => 'Părintele acestui element a fost de asemenea șters. Acestea vor rămâne șterse până când acel părinte este, de asemenea, restaurat.',
+ 'recycle_bin_restore_parent' => 'Restaurează părinte',
+ 'recycle_bin_destroy_notification' => ':count elemente șterse din coșul de gunoi.',
+ 'recycle_bin_restore_notification' => ':count elemente restaurate din coșul de gunoi.',
+
+ // Audit Log
+ 'audit' => 'Jurnal de audit',
+ 'audit_desc' => 'Acest jurnal de audit afișează o listă de activități urmărite în sistem. Această listă este nefiltrată spre deosebire de listele de activități similare din sistemul în care sunt aplicate filtrele de permisiuni.',
+ 'audit_event_filter' => 'Filtru eveniment',
+ 'audit_event_filter_no_filter' => 'Niciun filtru',
+ 'audit_deleted_item' => 'Element șters',
+ 'audit_deleted_item_name' => 'Nume: :name',
+ 'audit_table_user' => 'Utilizator',
+ 'audit_table_event' => 'Eveniment',
+ 'audit_table_related' => 'Articol asociat sau detalii',
+ 'audit_table_ip' => 'Adresă IP',
+ 'audit_table_date' => 'Data activității',
+ 'audit_date_from' => 'Interval dată de la',
+ 'audit_date_to' => 'Interval dată până la',
+
+ // Role Settings
+ 'roles' => 'Roluri',
+ 'role_user_roles' => 'Roluri utilizator',
+ 'roles_index_desc' => 'Roles are used to group users & provide system permission to their members. When a user is a member of multiple roles the privileges granted will stack and the user will inherit all abilities.',
+ 'roles_x_users_assigned' => ':count utilizator atribuibil:count utilizatori alocați',
+ 'roles_x_permissions_provided' => ':count permission|:count permissions',
+ 'roles_assigned_users' => 'Utilizator alocat',
+ 'roles_permissions_provided' => 'Permisiuni furnizate',
+ 'role_create' => 'Crează rol nou',
+ 'role_delete' => 'Șterge rolul',
+ 'role_delete_confirm' => 'Aceasta va șterge rolul cu numele \':roleName\'.',
+ 'role_delete_users_assigned' => 'Acest rol are :userCount utilizatori asociați. Dacă vrei să migrezi utilizatorii din acest rol, selectează un nou rol mai jos.',
+ 'role_delete_no_migration' => "Nu migra utilizatorii",
+ 'role_delete_sure' => 'Ești sigur că vrei să ștergi acest rol?',
+ 'role_edit' => 'Editează Rol',
+ 'role_details' => 'Detalii rol',
+ 'role_name' => 'Nume rol',
+ 'role_desc' => 'Scurtă descriere a rolului',
+ 'role_mfa_enforced' => 'Necesită autentificare multi-factor',
+ 'role_external_auth_id' => 'ID-uri externe de autentificare',
+ 'role_system' => 'Permisiuni de sistem',
+ 'role_manage_users' => 'Gestionare utilizatori',
+ 'role_manage_roles' => 'Gestionează roluri și permisiuni de rol',
+ 'role_manage_entity_permissions' => 'Gestionează permisiunile pentru toată cartea, capitolul și paginile',
+ 'role_manage_own_entity_permissions' => 'Gestionează permisiunile pe propria carte, capitol și pagini',
+ 'role_manage_page_templates' => 'Gestionează șabloanele de pagină',
+ 'role_access_api' => 'Accesează API sistem',
+ 'role_manage_settings' => 'Gestionează setările aplicației',
+ 'role_export_content' => 'Exportă conținut',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Schimbă editorul de pagină',
+ 'role_notifications' => 'Primire și gestionare notificări',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Permisiuni active',
+ 'roles_system_warning' => 'Fi conștient de faptul că accesul la oricare dintre cele trei permisiuni de mai sus poate permite unui utilizator să își modifice propriile privilegii sau privilegiile altor persoane din sistem. Atribuie doar roluri cu aceste permisiuni utilizatorilor de încredere.',
+ 'role_asset_desc' => 'Aceste permisiuni controlează accesul implicit la activele din sistem. Permisiunile pe Cărți, Capitole și Pagini vor suprascrie aceste permisiuni.',
+ 'role_asset_admins' => 'Administratorilor li se acordă automat acces la tot conținutul, dar aceste opțiuni pot afișa sau ascunde opțiunile UI.',
+ 'role_asset_image_view_note' => 'Acest lucru se referă la vizibilitatea în managerul de imagini. Accesul efectiv al fișierelor de imagine încărcate va depinde de opțiunea de stocare a imaginilor din sistem.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Tot',
+ 'role_own' => 'Propriu',
+ 'role_controlled_by_asset' => 'Controlat de activele pe care sunt încărcate',
+ 'role_save' => 'Salvare rol',
+ 'role_users' => 'Utilizatori cu acest rol',
+ 'role_users_none' => 'Nici un utilizator nu este asociat acestui rol',
+
+ // Users
+ 'users' => 'Utilizatori',
+ 'users_index_desc' => 'Create & manage individual user accounts within the system. User accounts are used for login and attribution of content & activity. Access permissions are primarily role-based but user content ownership, among other factors, may also affect permissions & access.',
+ 'user_profile' => 'Profil utilizator',
+ 'users_add_new' => 'Adaugă utilizator nou',
+ 'users_search' => 'Căutare utilizatori',
+ 'users_latest_activity' => 'Ultima activitate',
+ 'users_details' => 'Detalii utilizator',
+ 'users_details_desc' => 'Setează un nume de afișat și o adresă de e-mail pentru acest utilizator. Adresa de e-mail va fi utilizată pentru autentificarea în aplicație.',
+ 'users_details_desc_no_email' => 'Setați un nume de afișat pentru acest utilizator, astfel încât alții să îl poată recunoaște.',
+ 'users_role' => 'Roluri utilizator',
+ 'users_role_desc' => 'Selectează rolurile cărora le va fi atribuit acest utilizator. Dacă un utilizator este atribuit mai multor roluri, permisiunile de la aceste roluri se vor stivui și vor primi toate abilitățile rolurilor atribuite.',
+ 'users_password' => 'Parolă utilizator',
+ 'users_password_desc' => 'Setează o parolă utilizată pentru autentificarea în aplicație. Aceasta trebuie să fie de cel puțin 8 caractere.',
+ 'users_send_invite_text' => 'Poți alege să trimiți acestui utilizator un e-mail de invitație care să îi permită să își seteze propria parolă, altfel îi poți seta tu parola.',
+ 'users_send_invite_option' => 'Trimite e-mail cu invitație utilizatorului',
+ 'users_external_auth_id' => 'ID autentificare externă',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ 'users_system_public' => 'Acest utilizator reprezintă orice utilizator invitat care vizitează instanța dvs. Nu poate fi folosit pentru a vă autentifica, dar este atribuit automat.',
+ 'users_delete' => 'Șterge utilizator',
+ 'users_delete_named' => 'Șterge utilizatorul :userName',
+ 'users_delete_warning' => 'Aceasta va șterge complet acest utilizator cu numele \':userName\' din sistem.',
+ 'users_delete_confirm' => 'Ești sigur că vrei să ștergi acest utilizator?',
+ 'users_migrate_ownership' => 'Migrare proprietate',
+ 'users_migrate_ownership_desc' => 'Selectează un utilizator aici dacă vrei ca un alt utilizator să devină proprietarul tuturor articolelor deținute în prezent de acest utilizator.',
+ 'users_none_selected' => 'Niciun utilizator selectat',
+ 'users_edit' => 'Editare utilizator',
+ 'users_edit_profile' => 'Editare profil',
+ 'users_avatar' => 'Avatar utilizator',
+ 'users_avatar_desc' => 'Selectează o imagine pentru a reprezenta acest utilizator. Aceasta ar trebui să fie un pătrat de aproximativ 256px.',
+ 'users_preferred_language' => 'Limba preferată',
+ 'users_preferred_language_desc' => 'Această opțiune va schimba limba utilizată pentru interfața de utilizare a aplicației. Acest lucru nu va afecta conținutul creat de utilizatori.',
+ 'users_social_accounts' => 'Conturi sociale',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Aici poți conecta celelalte conturi pentru o autentificare mai rapidă și mai ușoară. Deconectarea unui cont aici nu revocă accesul autorizat anterior. Revocă accesul din setările profilului tău de pe contul social conectat.',
+ 'users_social_connect' => 'Conectare cont',
+ 'users_social_disconnect' => 'Deconectare cont',
+ 'users_social_status_connected' => 'Connected',
+ 'users_social_status_disconnected' => 'Disconnected',
+ 'users_social_connected' => ':socialAccount a fost atașat cu succes la profilul tău.',
+ 'users_social_disconnected' => 'Contul :socialAccount a fost deconectat cu succes de la profilul tău.',
+ 'users_api_tokens' => 'Token API',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'Nu au fost create token-uri API pentru acest utilizator',
+ 'users_api_tokens_create' => 'Creare token',
+ 'users_api_tokens_expires' => 'Expiră',
+ 'users_api_tokens_docs' => 'Documentație API',
+ 'users_mfa' => 'Autentificare multi-factor',
+ 'users_mfa_desc' => 'Configurare autentificarea multi-factor ca un nivel suplimentar de securitate pentru contul tău de utilizator.',
+ 'users_mfa_x_methods' => ':count metodă configurată|:count metode configurate',
+ 'users_mfa_configure' => 'Configurare metode',
+
+ // API Tokens
+ 'user_api_token_create' => 'Creare token API',
+ 'user_api_token_name' => 'Nume',
+ 'user_api_token_name_desc' => 'Dă-i tokenului un nume lizibil ca un memento viitor al scopului propus.',
+ 'user_api_token_expiry' => 'Data expirării',
+ 'user_api_token_expiry_desc' => 'Setează o dată la care acest token expiră. După această dată, cererile făcute folosind acest token nu vor mai funcționa. Lăsând acest câmp necompletat se va stabili un termen de expirare de 100 de ani în viitor.',
+ 'user_api_token_create_secret_message' => 'Imediat după crearea acestui token, va fi generat și afișat un "ID" și "Secret". Secretul va fi afișat o singură dată, așa că fiți siguri să copiați valoarea într-un loc sigur și sigur înainte de a continua.',
+ 'user_api_token' => 'Token API',
+ 'user_api_token_id' => 'ID Token',
+ 'user_api_token_id_desc' => 'Acesta este un identificator de sistem needitabil generat pentru acest token, care va trebui furnizat în cereri API.',
+ 'user_api_token_secret' => 'Secret token',
+ 'user_api_token_secret_desc' => 'Acesta este un secret generat de sistem pentru acest token, care va trebui furnizat în cereri API. Acest lucru va fi afișat doar o singură dată, așa că copiază această valoare undeva în siguranță și securizat.',
+ 'user_api_token_created' => 'Token creat :timeAgo',
+ 'user_api_token_updated' => 'Token actualizat :timeAgo',
+ 'user_api_token_delete' => 'Șterge token',
+ 'user_api_token_delete_warning' => 'Acest lucru va șterge complet acest token API cu numele \':tokenName\' din sistem.',
+ 'user_api_token_delete_confirm' => 'Sigur dorești să ștergi acest token API?',
+
+ // Webhooks
+ 'webhooks' => 'Webhook-uri',
+ 'webhooks_index_desc' => 'Webhooks are a way to send data to external URLs when certain actions and events occur within the system which allows event-based integration with external platforms such as messaging or notification systems.',
+ 'webhooks_x_trigger_events' => ':count declanșator eveniment:count evenimente de declanșare',
+ 'webhooks_create' => 'Creează un nou Webhook',
+ 'webhooks_none_created' => 'Nu au fost create webhook-uri.',
+ 'webhooks_edit' => 'Editare Webhook',
+ 'webhooks_save' => 'Salvează Webhook-ul',
+ 'webhooks_details' => 'Detalii Webhook',
+ 'webhooks_details_desc' => 'Furnizează un nume prietenos de utilizator și un punct de reper POST ca locație pentru datele webhook-ului care vor fi trimise.',
+ 'webhooks_events' => 'Evenimente Webhook',
+ 'webhooks_events_desc' => 'Selectează toate evenimentele care vor declanșa acest webhook pentru a fi apelate.',
+ 'webhooks_events_warning' => 'Ține cont că aceste evenimente vor fi declanșate pentru toate evenimentele selectate, chiar dacă sunt aplicate permisiuni personalizate. Asigură-te că utilizarea acestui webhook nu va expune conținut confidențial.',
+ 'webhooks_events_all' => 'Toate evenimentele de sistem',
+ 'webhooks_name' => 'Numele Webhook-ului',
+ 'webhooks_timeout' => 'Timeout cerere Webhook (secunde)',
+ 'webhooks_endpoint' => 'Endpoint Webhook',
+ 'webhooks_active' => 'Webhook activ',
+ 'webhook_events_table_header' => 'Evenimente',
+ 'webhooks_delete' => 'Șterge Webhook-ul',
+ 'webhooks_delete_warning' => 'Aceasta va șterge complet acest webhook, cu numele \':webhookName\', din sistem.',
+ 'webhooks_delete_confirm' => 'Ești sigur că vrei să ștergi acest webhook?',
+ 'webhooks_format_example' => 'Exemplu format Webhook',
+ 'webhooks_format_example_desc' => 'Datele Webhook sunt trimise sub forma unei cereri POST pentru endpointul configurat ca JSON conform formatului de mai jos. Proprietățile "elemente asociate" și "url" sunt opționale și vor depinde de tipul de eveniment declanșat.',
+ 'webhooks_status' => 'Starea Webhook-ului',
+ 'webhooks_last_called' => 'Ultima apelare:',
+ 'webhooks_last_errored' => 'Ultima eroare:',
+ 'webhooks_last_error_message' => 'Ultimul mesaj de eroare:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/ro/validation.php b/lang/ro/validation.php
new file mode 100644
index 00000000000..44fdd7ad864
--- /dev/null
+++ b/lang/ro/validation.php
@@ -0,0 +1,123 @@
+ ':attribute trebuie să fie acceptat.',
+ 'active_url' => ':attribute nu este un URL valid.',
+ 'after' => ':attribute trebuie să fie o dată după :date.',
+ 'alpha' => ':attribute poate conține doar litere.',
+ 'alpha_dash' => ':attribute poate conține doar litere, numere, cratime și underscore.',
+ 'alpha_num' => ':attribute poate conține doar litere și cifre.',
+ 'array' => ':attribute trebuie să fie un array.',
+ 'backup_codes' => 'Codul furnizat nu este valid sau a fost deja folosit.',
+ 'before' => ':attribute trebuie să fie o dată înainte de :date.',
+ 'between' => [
+ 'numeric' => ':attribute trebuie să fie între :min şi :max.',
+ 'file' => ':attribute trebuie să aibă între :min şi :max kiloocteţi.',
+ 'string' => ':attribute trebuie să aibă între :min şi :max caractere.',
+ 'array' => ':attribute trebuie să aibă între :min şi :max elemente.',
+ ],
+ 'boolean' => 'Câmpul :attribute trebuie să fie adevărat sau fals.',
+ 'confirmed' => 'Confirmarea :attribute nu se potrivește.',
+ 'date' => ':attribute nu este o dată validă.',
+ 'date_format' => ':attribute nu se potrivește cu formatul :format.',
+ 'different' => ':attribute și :other trebuie să fie diferite.',
+ 'digits' => ':attribute trebuie să aibă :digits cifre.',
+ 'digits_between' => ':attribute trebuie să aibă între :min şi :max cifre.',
+ 'email' => ':attribute trebuie să fie o adresă de e-mail validă.',
+ 'ends_with' => ':attribute trebuie să se termine cu una dintre următoarele: :values',
+ 'file' => ':attribute trebuie să fie furnizat ca un fişier valid.',
+ 'filled' => 'Câmpul :attribute este necesar.',
+ 'gt' => [
+ 'numeric' => ':attribute trebuie să fie mai mare decât :value.',
+ 'file' => ':attribute trebuie să fie mai mare decât :value kilobytes.',
+ 'string' => ':attribute trebuie să fie mai mare decât :value caractere.',
+ 'array' => ':attribute trebuie să aibă mai mult de :value elemente.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute trebuie să fie mai mare sau egal cu :value.',
+ 'file' => ':attribute trebuie să fie mai mare sau egal cu :value kilobytes.',
+ 'string' => ':attribute trebuie să fie mai mare sau egal cu :value caractere.',
+ 'array' => ':attribute trebuie să aibă :value elemente sau mai multe.',
+ ],
+ 'exists' => 'Atributul :attribute selectat nu este valid.',
+ 'image' => ':attribute trebuie să fie o imagine.',
+ 'image_extension' => ':attribute trebuie să aibă o extensie validă și suportată.',
+ 'in' => ':attribute selectat nu este valid.',
+ 'integer' => ':attribute trebuie să fie un număr.',
+ 'ip' => ':attribute trebuie să fie o adresă IP validă.',
+ 'ipv4' => ':attribute trebuie să fie o adresă IPv4 validă.',
+ 'ipv6' => ':attribute trebuie să fie o adresă IPv6 validă.',
+ 'json' => ':attribute trebuie să fie un șir JSON valid.',
+ 'lt' => [
+ 'numeric' => ':attribute trebuie să fie mai mic decât :value.',
+ 'file' => ':attribute trebuie să fie mai mic de :value kilobytes.',
+ 'string' => ':attribute trebuie să aibă mai puţin de :value caractere.',
+ 'array' => ':attribute trebuie să aibă mai puţin de :value elemente.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute trebuie să fie mai mic sau egal cu :value.',
+ 'file' => ':attribute trebuie să fie mai mic sau egal cu :value kilobytes.',
+ 'string' => ':attribute trebuie să fie mai mic sau egal cu :value caractere.',
+ 'array' => ':attribute nu trebuie să aibă mai mult de :value elemente.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute nu poate fi mai mare de :max.',
+ 'file' => ':attribute nu poate fi mai mare de :max kilobytes.',
+ 'string' => ':attribute nu poate avea mai mult de :max caractere.',
+ 'array' => ':attribute nu poate avea mai mult de :max elemente.',
+ ],
+ 'mimes' => ':attribute trebuie să fie un fişier de tipul: :values.',
+ 'min' => [
+ 'numeric' => ':attribute trebuie să aibă cel puțin :min.',
+ 'file' => ':attribute trebuie să aibă cel puțin :min kiloocteţi.',
+ 'string' => ':attribute trebuie să aibă cel puțin :min caractere.',
+ 'array' => ':attribute trebuie să aibă cel puțin :min elemente.',
+ ],
+ 'not_in' => 'Câmpul :attribute selectat nu este valid.',
+ 'not_regex' => 'Câmpul :attribute nu este valid.',
+ 'numeric' => ':attribute trebuie să fie un număr.',
+ 'regex' => ':attribute nu este valid.',
+ 'required' => ':attribute este necesar.',
+ 'required_if' => 'Câmpul :attribute este obligatoriu atunci când :other este :value.',
+ 'required_with' => 'Câmpul :attribute este necesar când :values este prezent.',
+ 'required_with_all' => 'Câmpul :attribute este necesar când :values este prezent.',
+ 'required_without' => 'Câmpul :attribute este obligatoriu atunci când :values nu este prezent.',
+ 'required_without_all' => 'Câmpul :attribute este necesar când niciuna dintre :values nu este prezentă.',
+ 'same' => ':attribute și :other trebuie să se potrivească.',
+ 'safe_url' => 'Este posibil ca link-ul furnizat să nu fie sigur.',
+ 'size' => [
+ 'numeric' => ':attribute trebuie să fie :size.',
+ 'file' => ':attribute trebuie să aibă :size kilobiți.',
+ 'string' => ':attribute trebuie să aibă :size caractere.',
+ 'array' => 'Câmpul :attribute trebuie să aibă :size elemente.',
+ ],
+ 'string' => ':attribute trebuie să fie un șir de caractere.',
+ 'timezone' => ':attribute trebuie să fie o zonă validă.',
+ 'totp' => 'Codul furnizat nu este valid sau a expirat.',
+ 'unique' => ':attribute a fost deja folosit.',
+ 'url' => ':attribute nu este valid.',
+ 'uploaded' => 'Fişierul nu a putut fi încărcat. Serverul nu poate accepta fişiere de această dimensiune.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Este necesară confirmarea parolei',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/ru/activities.php b/lang/ru/activities.php
new file mode 100644
index 00000000000..d353b7a7640
--- /dev/null
+++ b/lang/ru/activities.php
@@ -0,0 +1,140 @@
+ 'создал страницу',
+ 'page_create_notification' => 'Страница успешно создана',
+ 'page_update' => 'обновил страницу',
+ 'page_update_notification' => 'Страница успешно обновлена',
+ 'page_delete' => 'удалил страницу',
+ 'page_delete_notification' => 'Страница успешно удалена',
+ 'page_restore' => 'восстановил страницу',
+ 'page_restore_notification' => 'Страница успешно восстановлена',
+ 'page_move' => 'переместил страницу',
+ 'page_move_notification' => 'Страница успешно перемещена',
+
+ // Chapters
+ 'chapter_create' => 'создал главу',
+ 'chapter_create_notification' => 'Глава успешно создана',
+ 'chapter_update' => 'обновил главу',
+ 'chapter_update_notification' => 'Глава успешно обновлена',
+ 'chapter_delete' => 'удалил главу',
+ 'chapter_delete_notification' => 'Глава успешно удалена',
+ 'chapter_move' => 'переместил главу',
+ 'chapter_move_notification' => 'Глава успешно перемещена',
+
+ // Books
+ 'book_create' => 'создал книгу',
+ 'book_create_notification' => 'Книга успешно создана',
+ 'book_create_from_chapter' => 'преобразовал главу в книгу',
+ 'book_create_from_chapter_notification' => 'Глава успешно преобразована в книгу',
+ 'book_update' => 'обновил книгу',
+ 'book_update_notification' => 'Книга успешно обновлена',
+ 'book_delete' => 'удалил книгу',
+ 'book_delete_notification' => 'Книга успешно удалена',
+ 'book_sort' => 'отсортировал книгу',
+ 'book_sort_notification' => 'Книга успешно отсортирована',
+
+ // Bookshelves
+ 'bookshelf_create' => 'создал полку',
+ 'bookshelf_create_notification' => 'Полка успешно создана',
+ 'bookshelf_create_from_book' => 'преобразовал книгу в полку',
+ 'bookshelf_create_from_book_notification' => 'Книга успешно преобразована в полку',
+ 'bookshelf_update' => 'обновил полку',
+ 'bookshelf_update_notification' => 'Полка успешно обновлена',
+ 'bookshelf_delete' => 'удалил полку',
+ 'bookshelf_delete_notification' => 'Полка успешно удалена',
+
+ // Revisions
+ 'revision_restore' => 'восстановил версию',
+ 'revision_delete' => 'удалил версию',
+ 'revision_delete_notification' => 'Версия успешно удалена',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" добавлено в избранное',
+ 'favourite_remove_notification' => '":name" удалено из избранного',
+
+ // Watching
+ 'watch_update_level_notification' => 'Настройки просмотра успешно обновлены',
+
+ // Auth
+ 'auth_login' => 'вошёл',
+ 'auth_register' => 'зарегистрировался как новый пользователь',
+ 'auth_password_reset_request' => 'запросил смену пароля пользователя',
+ 'auth_password_reset_update' => 'сбросил пароль пользователя',
+ 'mfa_setup_method' => 'настроил метод МФА',
+ 'mfa_setup_method_notification' => 'Многофакторный метод аутентификации успешно настроен',
+ 'mfa_remove_method' => 'удалил метод МФА',
+ 'mfa_remove_method_notification' => 'Многофакторный метод аутентификации успешно удален',
+
+ // Settings
+ 'settings_update' => 'обновил настройки',
+ 'settings_update_notification' => 'Настройки успешно обновлены',
+ 'maintenance_action_run' => 'запустил техническое обслуживание',
+
+ // Webhooks
+ 'webhook_create' => 'создал вебхук',
+ 'webhook_create_notification' => 'Вебхук успешно создан',
+ 'webhook_update' => 'обновил вебхук',
+ 'webhook_update_notification' => 'Вебхук успешно обновлен',
+ 'webhook_delete' => 'удалил вебхук',
+ 'webhook_delete_notification' => 'Вебхук успешно удален',
+
+ // Imports
+ 'import_create' => 'created import',
+ 'import_create_notification' => 'Import successfully uploaded',
+ 'import_run' => 'обновлен импорт',
+ 'import_run_notification' => 'Content successfully imported',
+ 'import_delete' => 'deleted import',
+ 'import_delete_notification' => 'Import successfully deleted',
+
+ // Users
+ 'user_create' => 'создал пользователя',
+ 'user_create_notification' => 'Пользователь успешно создан',
+ 'user_update' => 'обновил пользователя',
+ 'user_update_notification' => 'Пользователь успешно обновлен',
+ 'user_delete' => 'удалил пользователя',
+ 'user_delete_notification' => 'Пользователь успешно удален',
+
+ // API Tokens
+ 'api_token_create' => 'создан API токен',
+ 'api_token_create_notification' => 'API токен успешно создан',
+ 'api_token_update' => 'обновлён API токен',
+ 'api_token_update_notification' => 'API токен успешно обновлен',
+ 'api_token_delete' => 'обновил API токен',
+ 'api_token_delete_notification' => 'API токен успешно удален',
+
+ // Roles
+ 'role_create' => 'создал роль',
+ 'role_create_notification' => 'Роль успешно создана',
+ 'role_update' => 'обновил роль',
+ 'role_update_notification' => 'Роль успешно обновлена',
+ 'role_delete' => 'удалил роль',
+ 'role_delete_notification' => 'Роль успешно удалена',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'очистил корзину',
+ 'recycle_bin_restore' => 'восстановлено из корзины',
+ 'recycle_bin_destroy' => 'удалено из корзины',
+
+ // Comments
+ 'commented_on' => 'прокомментировал',
+ 'comment_create' => 'добавил комментарий',
+ 'comment_update' => 'обновил комментарий',
+ 'comment_delete' => 'удалил комментарий',
+
+ // Sort Rules
+ 'sort_rule_create' => 'создал правило сортировки',
+ 'sort_rule_create_notification' => 'Правило сортировки успешно создано',
+ 'sort_rule_update' => 'обновил правило сортировки',
+ 'sort_rule_update_notification' => 'Правило сортировки успешно обновлено',
+ 'sort_rule_delete' => 'удалил правило сортировки',
+ 'sort_rule_delete_notification' => 'Правило сортировки успешно удалено',
+
+ // Other
+ 'permissions_update' => 'обновил разрешения',
+];
diff --git a/lang/ru/auth.php b/lang/ru/auth.php
new file mode 100644
index 00000000000..d39da119dea
--- /dev/null
+++ b/lang/ru/auth.php
@@ -0,0 +1,117 @@
+ 'Введенные вами данные не найдены в нашей базе.',
+ 'throttle' => 'Слишком много попыток входа. Пожалуйста, повторите попытку через :seconds секунд.',
+
+ // Login & Register
+ 'sign_up' => 'Регистрация',
+ 'log_in' => 'Вход',
+ 'log_in_with' => 'Вход с :socialDriver',
+ 'sign_up_with' => 'Регистрация с :socialDriver',
+ 'logout' => 'Выход',
+
+ 'name' => 'Имя',
+ 'username' => 'Логин',
+ 'email' => 'Адрес электронной почты',
+ 'password' => 'Пароль',
+ 'password_confirm' => 'Подтверждение пароля',
+ 'password_hint' => 'Не менее 8 символов',
+ 'forgot_password' => 'Забыли пароль?',
+ 'remember_me' => 'Запомнить меня',
+ 'ldap_email_hint' => 'Введите адрес электронной почты для этой учетной записи.',
+ 'create_account' => 'Создать аккаунт',
+ 'already_have_account' => 'Уже есть аккаунт?',
+ 'dont_have_account' => 'У вас нет аккаунта?',
+ 'social_login' => 'Вход через Соцсеть',
+ 'social_registration' => 'Регистрация через Соцсеть',
+ 'social_registration_text' => 'Регистрация и вход через другой сервис.',
+
+ 'register_thanks' => 'Благодарим за регистрацию!',
+ 'register_confirm' => 'Проверьте свою электронную почту и нажмите кнопку подтверждения для доступа к :appName.',
+ 'registrations_disabled' => 'Регистрация отключена',
+ 'registration_email_domain_invalid' => 'Данный домен электронной почты недоступен для регистрации',
+ 'register_success' => 'Спасибо за регистрацию! Регистрация и вход в систему выполнены.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Попытка входа',
+ 'auto_init_starting_desc' => 'Мы связываемся с вашей системой аутентификации, для процесса входа. Если через 5 секунд ничего не произошло, вы можете попробовать нажать на ссылку ниже.',
+ 'auto_init_start_link' => 'Повторить аутентификацию',
+
+ // Password Reset
+ 'reset_password' => 'Сброс пароля',
+ 'reset_password_send_instructions' => 'Введите свой адрес электронной почты ниже, и вам будет отправлено письмо со ссылкой для сброса пароля.',
+ 'reset_password_send_button' => 'Сбросить пароль',
+ 'reset_password_sent' => 'Ссылка для сброса пароля будет выслана на :email, если этот адрес находится в системе.',
+ 'reset_password_success' => 'Ваш пароль был успешно сброшен.',
+ 'email_reset_subject' => 'Сброс пароля от :appName',
+ 'email_reset_text' => 'Вы получили это письмо, потому что запросили сброс пароля для вашей учетной записи.',
+ 'email_reset_not_requested' => 'Если вы не запрашивали сброса пароля, то никаких дополнительных действий не требуется.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Подтвердите ваш почтовый адрес на :appName',
+ 'email_confirm_greeting' => 'Благодарим за участие :appName!',
+ 'email_confirm_text' => 'Пожалуйста, подтвердите свой адрес электронной почты нажав на кнопку ниже:',
+ 'email_confirm_action' => 'Подтвердить адрес электронной почты',
+ 'email_confirm_send_error' => 'Требуется подтверждение электронной почты, но система не может отправить письмо. Свяжитесь с администратором, чтобы убедиться, что адрес электронной почты настроен правильно.',
+ 'email_confirm_success' => 'Ваш адрес электронной почты был подтвержден! Теперь вы можете войти в систему, используя этот адрес электронной почты.',
+ 'email_confirm_resent' => 'Письмо с подтверждение выслано снова. Пожалуйста, проверьте ваш почтовый ящик.',
+ 'email_confirm_thanks' => 'Спасибо за подтверждение!',
+ 'email_confirm_thanks_desc' => 'Подождите, пока обработка вашего подтверждения будет завершена. Если вы не будете перенаправлены через 3 секунды, нажмите на ссылку «Продолжить» для продолжения.',
+
+ 'email_not_confirmed' => 'Адрес электронной почты не подтвержден',
+ 'email_not_confirmed_text' => 'Ваш email адрес все еще не подтвержден.',
+ 'email_not_confirmed_click_link' => 'Пожалуйста, нажмите на ссылку в письме, которое было отправлено при регистрации.',
+ 'email_not_confirmed_resend' => 'Если вы не можете найти электронное письмо, вы можете снова отправить его с подтверждением по форме ниже.',
+ 'email_not_confirmed_resend_button' => 'Переотправить письмо с подтверждением',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Вас приглашают присоединиться к :appName!',
+ 'user_invite_email_greeting' => 'Для вас создан аккаунт в :appName.',
+ 'user_invite_email_text' => 'Нажмите кнопку ниже, чтобы задать пароль и получить доступ:',
+ 'user_invite_email_action' => 'Установить пароль для аккаунта',
+ 'user_invite_page_welcome' => 'Добро пожаловать в :appName!',
+ 'user_invite_page_text' => 'Завершите настройку аккаунта, установите пароль для дальнейшего входа в :appName.',
+ 'user_invite_page_confirm_button' => 'Подтвердите пароль',
+ 'user_invite_success_login' => 'Пароль установлен, теперь вы можете войти в систему, используя установленный пароль для доступа к :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Многофакторная аутентификация',
+ 'mfa_setup_desc' => 'Многофакторная аутентификация повышает степень безопасности вашей учетной записи.',
+ 'mfa_setup_configured' => 'Настроено',
+ 'mfa_setup_reconfigure' => 'Перенастроить',
+ 'mfa_setup_remove_confirmation' => 'Вы уверены, что хотите удалить этот многофакторный метод аутентификации?',
+ 'mfa_setup_action' => 'Настройка',
+ 'mfa_backup_codes_usage_limit_warning' => 'У вас осталось менее 5 резервных кодов, пожалуйста, создайте и сохраните новый набор перед тем, как закончатся коды, чтобы предотвратить блокировку вашей учетной записи.',
+ 'mfa_option_totp_title' => 'Мобильное приложение',
+ 'mfa_option_totp_desc' => 'Для использования многофакторной аутентификации вам понадобится мобильное приложение, поддерживающее TOTP, например Google Authenticator, Authy или Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Резервные коды',
+ 'mfa_option_backup_codes_desc' => 'Генерирует набор одноразовых резервных кодов, которые вы вводите при входе, чтобы проверить вашу личность. Не забудьте сохранить их в безопасном месте.',
+ 'mfa_gen_confirm_and_enable' => 'Подтвердить и включить',
+ 'mfa_gen_backup_codes_title' => 'Настройка резервных кодов',
+ 'mfa_gen_backup_codes_desc' => 'Сохраните приведенный ниже список кодов в безопасном месте. При доступе к системе вы сможете использовать один из кодов в качестве второго механизма аутентификации.',
+ 'mfa_gen_backup_codes_download' => 'Скачать коды',
+ 'mfa_gen_backup_codes_usage_warning' => 'Каждый код может быть использован только один раз',
+ 'mfa_gen_totp_title' => 'Настройка мобильного приложения',
+ 'mfa_gen_totp_desc' => 'Для использования многофакторной аутентификации вам понадобится мобильное приложение, поддерживающее TOTP, например Google Authenticator, Authy или Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Отсканируйте QR-код, используя приложение для аутентификации.',
+ 'mfa_gen_totp_verify_setup' => 'Проверить настройки',
+ 'mfa_gen_totp_verify_setup_desc' => 'Проверьте, что все работает введя код, сгенерированный внутри вашего приложения для аутентификации, в поле ввода ниже:',
+ 'mfa_gen_totp_provide_code_here' => 'Введите код, сгенерированный приложением',
+ 'mfa_verify_access' => 'Подтвердите доступ',
+ 'mfa_verify_access_desc' => 'Ваша учетная запись требует подтверждения личности на дополнительном уровне верификации, прежде чем вам будет предоставлен доступ. Для продолжения подтвердите вход, используя один из настроенных методов.',
+ 'mfa_verify_no_methods' => 'Методы не настроены',
+ 'mfa_verify_no_methods_desc' => 'Для вашей учетной записи не найдены многофакторные методы аутентификации. Вам нужно настроить хотя бы один метод, прежде чем получить доступ.',
+ 'mfa_verify_use_totp' => 'Проверить используя мобильное приложение',
+ 'mfa_verify_use_backup_codes' => 'Проверить используя резервный код',
+ 'mfa_verify_backup_code' => 'Резервный код',
+ 'mfa_verify_backup_code_desc' => 'Введите один из оставшихся резервных кодов ниже:',
+ 'mfa_verify_backup_code_enter_here' => 'Введите резервный код',
+ 'mfa_verify_totp_desc' => 'Введите код, сгенерированный с помощью мобильного приложения, ниже:',
+ 'mfa_setup_login_notification' => 'Многофакторный метод аутентификации настроен, пожалуйста, войдите снова, используя сконфигурированный метод.',
+];
diff --git a/lang/ru/common.php b/lang/ru/common.php
new file mode 100644
index 00000000000..fa9969c32af
--- /dev/null
+++ b/lang/ru/common.php
@@ -0,0 +1,115 @@
+ 'Отмена',
+ 'close' => 'Закрыть',
+ 'confirm' => 'Применить',
+ 'back' => 'Назад',
+ 'save' => 'Сохранить',
+ 'continue' => 'Продолжить',
+ 'select' => 'Выбрать',
+ 'toggle_all' => 'Переключить все',
+ 'more' => 'Еще',
+
+ // Form Labels
+ 'name' => 'Имя',
+ 'description' => 'Описание',
+ 'role' => 'Роль',
+ 'cover_image' => 'Обложка',
+ 'cover_image_description' => 'Это изображение должно быть приблизительно 440x250px, хотя оно и будет гибко масштабироваться и обрезаться, чтобы соответствовать пользовательскому интерфейсу в различных необходимых сценариях. Так что фактические размеры дисплея будут отличаться.',
+
+ // Actions
+ 'actions' => 'Действия',
+ 'view' => 'Просмотр',
+ 'view_all' => 'Показать все',
+ 'new' => 'Новый',
+ 'create' => 'Создание',
+ 'update' => 'Обновление',
+ 'edit' => 'Редактировать',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Сортировать',
+ 'move' => 'Переместить',
+ 'copy' => 'Скопировать',
+ 'reply' => 'Ответить',
+ 'delete' => 'Удалить',
+ 'delete_confirm' => 'Подтвердить удаление',
+ 'search' => 'Поиск',
+ 'search_clear' => 'Очистить поиск',
+ 'reset' => 'Сбросить',
+ 'remove' => 'Удалить',
+ 'add' => 'Добавить',
+ 'configure' => 'Настройка',
+ 'manage' => 'Управлять',
+ 'fullscreen' => 'На весь экран',
+ 'favourite' => 'Избранное',
+ 'unfavourite' => 'Убрать из избранного',
+ 'next' => 'Следующая',
+ 'previous' => 'Предыдущая',
+ 'filter_active' => 'Активный фильтр:',
+ 'filter_clear' => 'Сбросить фильтр',
+ 'download' => 'Загрузить',
+ 'open_in_tab' => 'Открыть во вкладке',
+ 'open' => 'Открыть',
+
+ // Sort Options
+ 'sort_options' => 'Параметры сортировки',
+ 'sort_direction_toggle' => 'Переключить направление сортировки',
+ 'sort_ascending' => 'По возрастанию',
+ 'sort_descending' => 'По убыванию',
+ 'sort_name' => 'По имени',
+ 'sort_default' => 'По умолчанию',
+ 'sort_created_at' => 'По дате создания',
+ 'sort_updated_at' => 'По дате обновления',
+
+ // Misc
+ 'deleted_user' => 'Удаленный пользователь',
+ 'no_activity' => 'Нет действий для просмотра',
+ 'no_items' => 'Нет доступных элементов',
+ 'back_to_top' => 'Наверх',
+ 'skip_to_main_content' => 'Перейти к основному контенту',
+ 'toggle_details' => 'Подробности',
+ 'toggle_thumbnails' => 'Миниатюры',
+ 'details' => 'Детали',
+ 'grid_view' => 'Вид сеткой',
+ 'list_view' => 'Вид списком',
+ 'default' => 'По умолчанию',
+ 'breadcrumb' => 'Навигация',
+ 'status' => 'Состояние',
+ 'status_active' => 'Активен',
+ 'status_inactive' => 'Неактивен',
+ 'never' => 'Никогда',
+ 'none' => 'Нет',
+
+ // Header
+ 'homepage' => 'Главная страница',
+ 'header_menu_expand' => 'Развернуть меню заголовка',
+ 'profile_menu' => 'Меню профиля',
+ 'view_profile' => 'Посмотреть профиль',
+ 'edit_profile' => 'Редактировать профиль',
+ 'dark_mode' => 'Темный режим',
+ 'light_mode' => 'Светлый режим',
+ 'global_search' => 'Глобальный поиск',
+
+ // Layout tabs
+ 'tab_info' => 'Информация',
+ 'tab_info_label' => 'Вкладка: Показать вторичную информацию',
+ 'tab_content' => 'Содержание',
+ 'tab_content_label' => 'Вкладка: Показать основной контент',
+
+ // Email Content
+ 'email_action_help' => 'Если у вас возникли проблемы с нажатием кнопки \':actionText\', то скопируйте и вставьте указанный URL-адрес в свой браузер:',
+ 'email_rights' => 'Все права защищены',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Политика конфиденциальности',
+ 'terms_of_service' => 'Условия использования',
+
+ // OpenSearch
+ 'opensearch_description' => 'Поиск :appName',
+];
diff --git a/lang/ru/components.php b/lang/ru/components.php
new file mode 100644
index 00000000000..434c4acfd47
--- /dev/null
+++ b/lang/ru/components.php
@@ -0,0 +1,46 @@
+ 'Выбрать изображение',
+ 'image_list' => 'Список изображений',
+ 'image_details' => 'Детали изображения',
+ 'image_upload' => 'Загрузить изображение',
+ 'image_intro' => 'Здесь вы можете выбрать и управлять изображениями, которые были ранее загружены в систему.',
+ 'image_intro_upload' => 'Загрузите новое изображение, перетянув файл в это окно, или с помощью кнопки "Загрузить изображение" выше.',
+ 'image_all' => 'Все',
+ 'image_all_title' => 'Просмотр всех изображений',
+ 'image_book_title' => 'Просмотр всех изображений, загруженных в эту книгу',
+ 'image_page_title' => 'Просмотр всех изображений, загруженных на эту страницу',
+ 'image_search_hint' => 'Поиск по названию изображения',
+ 'image_uploaded' => 'Загружено :uploadedDate',
+ 'image_uploaded_by' => 'Загружено :userName',
+ 'image_uploaded_to' => 'Загружено на :pageLink',
+ 'image_updated' => 'Обновлено :updateDate',
+ 'image_load_more' => 'Загрузить еще',
+ 'image_image_name' => 'Название изображения',
+ 'image_delete_used' => 'Это изображение используется на странице ниже.',
+ 'image_delete_confirm_text' => 'Вы уверены, что хотите удалить это изображение?',
+ 'image_select_image' => 'Выбрать изображение',
+ 'image_dropzone' => 'Перетащите изображение или кликните для загрузки',
+ 'image_dropzone_drop' => 'Перетащите изображения сюда для загрузки',
+ 'images_deleted' => 'Изображения удалены',
+ 'image_preview' => 'Предпросмотр изображения',
+ 'image_upload_success' => 'Изображение успешно загружено',
+ 'image_update_success' => 'Детали изображения успешно обновлены',
+ 'image_delete_success' => 'Изображение успешно удалено',
+ 'image_replace' => 'Заменить изображение',
+ 'image_replace_success' => 'Файл изображения успешно обновлён',
+ 'image_rebuild_thumbs' => 'Пересоздать вариации размера',
+ 'image_rebuild_thumbs_success' => 'Вариации размера изображения успешно установлены!',
+
+ // Code Editor
+ 'code_editor' => 'Изменить код',
+ 'code_language' => 'Язык кода',
+ 'code_content' => 'Содержимое кода',
+ 'code_session_history' => 'История сессии',
+ 'code_save' => 'Сохранить код',
+];
diff --git a/lang/ru/editor.php b/lang/ru/editor.php
new file mode 100644
index 00000000000..d26f7edfe08
--- /dev/null
+++ b/lang/ru/editor.php
@@ -0,0 +1,182 @@
+ 'Общие',
+ 'advanced' => 'Дополнительно',
+ 'none' => 'Нет',
+ 'cancel' => 'Отмена',
+ 'save' => 'Сохранить',
+ 'close' => 'Закрыть',
+ 'apply' => 'Применить',
+ 'undo' => 'Отменить',
+ 'redo' => 'Повторить',
+ 'left' => 'Слева',
+ 'center' => 'По центру',
+ 'right' => 'Справа',
+ 'top' => 'Сверху',
+ 'middle' => 'Посередине',
+ 'bottom' => 'Снизу',
+ 'width' => 'Ширина',
+ 'height' => 'Высота',
+ 'More' => 'Еще',
+ 'select' => 'Выбрать...',
+
+ // Toolbar
+ 'formats' => 'Форматы',
+ 'header_large' => 'Крупный заголовок',
+ 'header_medium' => 'Средний заголовок',
+ 'header_small' => 'Небольшой заголовок',
+ 'header_tiny' => 'Маленький заголовок',
+ 'paragraph' => 'Обычный текст',
+ 'blockquote' => 'Цитата',
+ 'inline_code' => 'Встроенный код',
+ 'callouts' => 'Выноска',
+ 'callout_information' => 'Информация',
+ 'callout_success' => 'Успех',
+ 'callout_warning' => 'Предупреждение',
+ 'callout_danger' => 'Ошибка',
+ 'bold' => 'Жирный',
+ 'italic' => 'Курсив',
+ 'underline' => 'Подчёркнутый',
+ 'strikethrough' => 'Зачёркнутый',
+ 'superscript' => 'Надстрочный',
+ 'subscript' => 'Подстрочный',
+ 'text_color' => 'Цвет текста',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Пользовательский цвет',
+ 'remove_color' => 'Удалить цвет',
+ 'background_color' => 'Цвет фона',
+ 'align_left' => 'По левому краю',
+ 'align_center' => 'По центру',
+ 'align_right' => 'По правому краю',
+ 'align_justify' => 'По ширине',
+ 'list_bullet' => 'Маркированный список',
+ 'list_numbered' => 'Нумерованный список',
+ 'list_task' => 'Список задач',
+ 'indent_increase' => 'Увеличить отступ',
+ 'indent_decrease' => 'Уменьшить отступ',
+ 'table' => 'Таблица',
+ 'insert_image' => 'Вставить изображение',
+ 'insert_image_title' => 'Вставить/Редактировать изображение',
+ 'insert_link' => 'Вставить/редактировать ссылку',
+ 'insert_link_title' => 'Вставить/Редактировать ссылку',
+ 'insert_horizontal_line' => 'Вставить горизонтальную линию',
+ 'insert_code_block' => 'Вставить блок кода',
+ 'edit_code_block' => 'Редактировать код',
+ 'insert_drawing' => 'Вставить/редактировать схему',
+ 'drawing_manager' => 'Менеджер схем',
+ 'insert_media' => 'Вставить/редактировать медиафайл',
+ 'insert_media_title' => 'Вставить/Редактировать медиафайл',
+ 'clear_formatting' => 'Очистить форматирование',
+ 'source_code' => 'Исходный код',
+ 'source_code_title' => 'Исходный код',
+ 'fullscreen' => 'Полноэкранный режим',
+ 'image_options' => 'Параметры изображения',
+
+ // Tables
+ 'table_properties' => 'Свойства таблицы',
+ 'table_properties_title' => 'Свойства таблицы',
+ 'delete_table' => 'Удалить таблицу',
+ 'table_clear_formatting' => 'Очистить форматирование таблицы',
+ 'resize_to_contents' => 'Изменить размер содержимого',
+ 'row_header' => 'Заголовок строки',
+ 'insert_row_before' => 'Вставить строку выше',
+ 'insert_row_after' => 'Вставить строку ниже',
+ 'delete_row' => 'Удалить строку',
+ 'insert_column_before' => 'Вставить столбец слева',
+ 'insert_column_after' => 'Вставить столбец справа',
+ 'delete_column' => 'Удалить столбец',
+ 'table_cell' => 'Ячейка',
+ 'table_row' => 'Строка',
+ 'table_column' => 'Столбец',
+ 'cell_properties' => 'Свойства ячейки',
+ 'cell_properties_title' => 'Свойства ячейки',
+ 'cell_type' => 'Тип ячейки',
+ 'cell_type_cell' => 'Ячейка',
+ 'cell_scope' => 'Область охвата',
+ 'cell_type_header' => 'Заголовок ячейки',
+ 'merge_cells' => 'Объединить ячейки',
+ 'split_cell' => 'Разделить ячейку',
+ 'table_row_group' => 'Объединить строки',
+ 'table_column_group' => 'Объединить столбцы',
+ 'horizontal_align' => 'Выровнять по горизонтали',
+ 'vertical_align' => 'Выровнять по вертикали',
+ 'border_width' => 'Ширина границы',
+ 'border_style' => 'Стиль границы',
+ 'border_color' => 'Цвет границы',
+ 'row_properties' => 'Свойства строки',
+ 'row_properties_title' => 'Свойства строки',
+ 'cut_row' => 'Вырезать строку',
+ 'copy_row' => 'Копировать строку',
+ 'paste_row_before' => 'Вставить строку выше',
+ 'paste_row_after' => 'Вставить строку ниже',
+ 'row_type' => 'Тип строки',
+ 'row_type_header' => 'Заголовок',
+ 'row_type_body' => 'Тело',
+ 'row_type_footer' => 'Нижняя часть',
+ 'alignment' => 'Выравнивание',
+ 'cut_column' => 'Вырезать столбец',
+ 'copy_column' => 'Копировать столбец',
+ 'paste_column_before' => 'Вставить столбец слева',
+ 'paste_column_after' => 'Вставить столбец справа',
+ 'cell_padding' => 'Свойство cellpadding',
+ 'cell_spacing' => 'Свойство cellspacing',
+ 'caption' => 'Подпись',
+ 'show_caption' => 'Показать',
+ 'constrain' => 'Сохранять пропорции',
+ 'cell_border_solid' => 'Сплошная',
+ 'cell_border_dotted' => 'Точками',
+ 'cell_border_dashed' => 'Пунктирная',
+ 'cell_border_double' => 'Двойная сплошная',
+ 'cell_border_groove' => 'Канавка',
+ 'cell_border_ridge' => 'Хребет',
+ 'cell_border_inset' => 'Вставка',
+ 'cell_border_outset' => 'Начало',
+ 'cell_border_none' => 'Нет',
+ 'cell_border_hidden' => 'Прозрачная',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Источник',
+ 'alt_desc' => 'Альтернативное описание',
+ 'embed' => 'Код для вставки',
+ 'paste_embed' => 'Введите код для вставки ниже:',
+ 'url' => 'URL-адрес',
+ 'text_to_display' => 'Текст для отображения',
+ 'title' => 'Заголовок',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Открыть ссылку',
+ 'open_link_in' => 'Открыть ссылку в...',
+ 'open_link_current' => 'В текущем окне',
+ 'open_link_new' => 'В новом окне',
+ 'remove_link' => 'Удалить ссылку',
+ 'insert_collapsible' => 'Вставить свернутый блок',
+ 'collapsible_unwrap' => 'Удалить блок',
+ 'edit_label' => 'Изменить метку',
+ 'toggle_open_closed' => 'Развернуть/свернуть',
+ 'collapsible_edit' => 'Редактировать свернутый блок',
+ 'toggle_label' => 'Метка',
+
+ // About view
+ 'about' => 'О редакторе',
+ 'about_title' => 'О редакторе WYSIWYG',
+ 'editor_license' => 'Лицензия редактора и авторские права',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'Этот редактор собран с помощью :tinyLink, который предоставляется под MIT лицензией.',
+ 'editor_tiny_license_link' => 'Авторские права и подробности лицензии TinyMCE вы можете найти здесь.',
+ 'save_continue' => 'Сохранить страницу и продолжить',
+ 'callouts_cycle' => '(Держите нажатым для переключения типов)',
+ 'link_selector' => 'Ссылка на содержимое',
+ 'shortcuts' => 'Сочетания клавиш',
+ 'shortcut' => 'Сочетания клавиш',
+ 'shortcuts_intro' => 'Следующие сочетания клавиш доступны в редакторе:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Описание',
+];
diff --git a/lang/ru/entities.php b/lang/ru/entities.php
new file mode 100644
index 00000000000..bf224c10a91
--- /dev/null
+++ b/lang/ru/entities.php
@@ -0,0 +1,476 @@
+ 'Недавно созданные',
+ 'recently_created_pages' => 'Недавно созданные страницы',
+ 'recently_updated_pages' => 'Недавно обновленные страницы',
+ 'recently_created_chapters' => 'Недавно созданные главы',
+ 'recently_created_books' => 'Недавно созданные книги',
+ 'recently_created_shelves' => 'Недавно созданные полки',
+ 'recently_update' => 'Недавно обновленные',
+ 'recently_viewed' => 'Недавно просмотренные',
+ 'recent_activity' => 'Недавние действия',
+ 'create_now' => 'Создать сейчас',
+ 'revisions' => 'Версии',
+ 'meta_revision' => 'Версия #:revisionCount',
+ 'meta_created' => 'Создано :timeLength',
+ 'meta_created_name' => ':user создал :timeLength',
+ 'meta_updated' => 'Обновлено :timeLength',
+ 'meta_updated_name' => ':user обновил :timeLength',
+ 'meta_owned_name' => 'Владелец :user',
+ 'meta_reference_count' => 'Ссылается :count элемент|Ссылается :count элементов',
+ 'entity_select' => 'Выбор объекта',
+ 'entity_select_lack_permission' => 'У вас нет разрешения на выбор этого элемента',
+ 'images' => 'Изображения',
+ 'my_recent_drafts' => 'Мои последние черновики',
+ 'my_recently_viewed' => 'Мои недавние просмотры',
+ 'my_most_viewed_favourites' => 'Популярное избранное',
+ 'my_favourites' => 'Мое избранное',
+ 'no_pages_viewed' => 'Вы не просматривали ни одной страницы',
+ 'no_pages_recently_created' => 'Нет недавно созданных страниц',
+ 'no_pages_recently_updated' => 'Нет недавно обновленных страниц',
+ 'export' => 'Экспорт',
+ 'export_html' => 'Веб файл',
+ 'export_pdf' => 'PDF файл',
+ 'export_text' => 'Текстовый файл',
+ 'export_md' => 'Файл Markdown',
+ 'export_zip' => 'Портативный ZIP',
+ 'default_template' => 'Шаблон страницы по умолчанию',
+ 'default_template_explain' => 'Назначить шаблон страницы, который будет использоваться в качестве содержимого по умолчанию для всех страниц, созданных в этом элементе. Имейте в виду, что это будет работать, только если создатель страницы имеет доступ к выбранной странице шаблона.',
+ 'default_template_select' => 'Выберите страницу шаблона',
+ 'import' => 'Импорт',
+ 'import_validate' => 'Проверка импорта',
+ 'import_desc' => 'Импортировать книги, главы и страницы с помощью ZIP-файла, экспортированного из этого или другого источника. Выберите ZIP-файл, чтобы продолжить. После загрузки и проверки файла вы сможете настроить и подтвердить импорт в следующем окне.',
+ 'import_zip_select' => 'Выберите ZIP файл для загрузки',
+ 'import_zip_validation_errors' => 'Были обнаружены ошибки при проверке предоставленного ZIP файла:',
+ 'import_pending' => 'Ожидается импорт',
+ 'import_pending_none' => 'Импорт не был запущен.',
+ 'import_continue' => 'Продолжить импорт',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Запустить импорт',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Ошибки импорта',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Разрешения',
+ 'permissions_desc' => 'Установите права доступа для переопределения прав, предоставленных ролями пользователей по-умолчанию.',
+ 'permissions_book_cascade' => 'Права доступа, установленные для книг, автоматически распространяются на дочерние главы и страницы, если для них не определены собственные разрешения.',
+ 'permissions_chapter_cascade' => 'Права доступа, установленные для глав, автоматически распространяются на дочерние страницы, если для них не определены собственные разрешения.',
+ 'permissions_save' => 'Сохранить разрешения',
+ 'permissions_owner' => 'Владелец',
+ 'permissions_role_everyone_else' => 'Все остальные',
+ 'permissions_role_everyone_else_desc' => 'Установить права доступа для всех ролей, которые не были специально переопределены.',
+ 'permissions_role_override' => 'Переопределить права доступа для роли',
+ 'permissions_inherit_defaults' => 'Наследовать по умолчанию',
+
+ // Search
+ 'search_results' => 'Результаты поиска',
+ 'search_total_results_found' => 'Найден :count результат|Найдено :count результата|Найдено :count результатов',
+ 'search_clear' => 'Очистить поиск',
+ 'search_no_pages' => 'Нет страниц, соответствующих этому поиску',
+ 'search_for_term' => 'Искать :term',
+ 'search_more' => 'Еще результаты',
+ 'search_advanced' => 'Расширенный поиск',
+ 'search_terms' => 'Поисковые запросы',
+ 'search_content_type' => 'Тип содержимого',
+ 'search_exact_matches' => 'Точные соответствия',
+ 'search_tags' => 'Поиск по тегам',
+ 'search_options' => 'Параметры',
+ 'search_viewed_by_me' => 'Просмотрено мной',
+ 'search_not_viewed_by_me' => 'Не просматривалось мной',
+ 'search_permissions_set' => 'Набор разрешений',
+ 'search_created_by_me' => 'Создано мной',
+ 'search_updated_by_me' => 'Обновлено мной',
+ 'search_owned_by_me' => 'Созданные мной',
+ 'search_date_options' => 'Параметры даты',
+ 'search_updated_before' => 'Обновлено до',
+ 'search_updated_after' => 'Обновлено после',
+ 'search_created_before' => 'Создано до',
+ 'search_created_after' => 'Создано после',
+ 'search_set_date' => 'Установить дату',
+ 'search_update' => 'Обновить поиск',
+
+ // Shelves
+ 'shelf' => 'Полка',
+ 'shelves' => 'Полки',
+ 'x_shelves' => ':count полка|:count полки|:count полок',
+ 'shelves_empty' => 'Полки не созданы',
+ 'shelves_create' => 'Создать новую полку',
+ 'shelves_popular' => 'Популярные полки',
+ 'shelves_new' => 'Новые полки',
+ 'shelves_new_action' => 'Новая полка',
+ 'shelves_popular_empty' => 'Популярные полки появятся здесь.',
+ 'shelves_new_empty' => 'Последние созданные полки появятся здесь.',
+ 'shelves_save' => 'Сохранить полку',
+ 'shelves_books' => 'Книги из этой полки',
+ 'shelves_add_books' => 'Добавить книгу в эту полку',
+ 'shelves_drag_books' => 'Перетащите книги ниже, чтобы добавить их на эту полку',
+ 'shelves_empty_contents' => 'На этой полке нет книг',
+ 'shelves_edit_and_assign' => 'Изменить полку для привязки книг',
+ 'shelves_edit_named' => 'Редактировать полку :name',
+ 'shelves_edit' => 'Редактировать полку',
+ 'shelves_delete' => 'Удалить полку',
+ 'shelves_delete_named' => 'Удалить полку :name',
+ 'shelves_delete_explain' => "Это приведет к удалению полки с именем ':name'. Привязанные книги удалены не будут.",
+ 'shelves_delete_confirmation' => 'Вы уверены, что хотите удалить эту полку?',
+ 'shelves_permissions' => 'Доступы к полке',
+ 'shelves_permissions_updated' => 'Доступы к полке обновлены',
+ 'shelves_permissions_active' => 'Действующие разрешения полки',
+ 'shelves_permissions_cascade_warning' => 'Разрешения на полки не наследуются автоматически содержащимся в них книгам. Это происходит потому, что книга может находиться на нескольких полках. Однако разрешения могут быть установлены для книг полки с помощью опции, приведенной ниже.',
+ 'shelves_permissions_create' => 'Разрешения полки на создание используется только для копирования разрешений на дочерние книги с помощью действия, описанного ниже. Они не контролируют возможность создавать книги.',
+ 'shelves_copy_permissions_to_books' => 'Наследовать доступы книгам',
+ 'shelves_copy_permissions' => 'Копировать доступы',
+ 'shelves_copy_permissions_explain' => 'Это применит текущие настройки разрешений для этой полки ко всем книгам, содержащимся в ней. Перед активацией убедитесь, что все изменения разрешений этой полки были сохранены.',
+ 'shelves_copy_permission_success' => 'Доступы полки скопированы для :count книг',
+
+ // Books
+ 'book' => 'Книга',
+ 'books' => 'Книги',
+ 'x_books' => ':count книга|:count книги|:count книг',
+ 'books_empty' => 'Нет созданных книг',
+ 'books_popular' => 'Популярные книги',
+ 'books_recent' => 'Недавние книги',
+ 'books_new' => 'Новые книги',
+ 'books_new_action' => 'Новая книга',
+ 'books_popular_empty' => 'Здесь появятся самые популярные книги.',
+ 'books_new_empty' => 'Здесь появятся самые последние созданные книги.',
+ 'books_create' => 'Создать новую книгу',
+ 'books_delete' => 'Удалить книгу',
+ 'books_delete_named' => 'Удалить книгу :bookName',
+ 'books_delete_explain' => 'Это удалит книги с именем \':bookName\'. Все разделы и страницы будут удалены.',
+ 'books_delete_confirmation' => 'Вы действительно хотите удалить эту книгу?',
+ 'books_edit' => 'Редактировать книгу',
+ 'books_edit_named' => 'Редактировать книгу :bookName',
+ 'books_form_book_name' => 'Название книги',
+ 'books_save' => 'Сохранить книгу',
+ 'books_permissions' => 'Разрешения на книгу',
+ 'books_permissions_updated' => 'Разрешения на книгу обновлены',
+ 'books_empty_contents' => 'Для этой книги нет страниц или разделов.',
+ 'books_empty_create_page' => 'Создать новую страницу',
+ 'books_empty_sort_current_book' => 'Сортировка текущей книги',
+ 'books_empty_add_chapter' => 'Добавить главу',
+ 'books_permissions_active' => 'Действующие разрешения книги',
+ 'books_search_this' => 'Поиск в этой книге',
+ 'books_navigation' => 'Навигация по книге',
+ 'books_sort' => 'Сортировка содержимого книги',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Сортировка книги :bookName',
+ 'books_sort_name' => 'По имени',
+ 'books_sort_created' => 'По дате создания',
+ 'books_sort_updated' => 'По дате обновления',
+ 'books_sort_chapters_first' => 'Главы в начале',
+ 'books_sort_chapters_last' => 'Главы в конце',
+ 'books_sort_show_other' => 'Показать другие книги',
+ 'books_sort_save' => 'Сохранить новый порядок',
+ 'books_sort_show_other_desc' => 'Добавьте другие книги здесь, чтобы включить их в сортировку, и позволить легко реорганизовать книгу.',
+ 'books_sort_move_up' => 'Переместить вверх',
+ 'books_sort_move_down' => 'Переместить вниз',
+ 'books_sort_move_prev_book' => 'Переместить в предыдущую книгу',
+ 'books_sort_move_next_book' => 'Переместить в следующую книгу',
+ 'books_sort_move_prev_chapter' => 'Переместить в предыдущую главу',
+ 'books_sort_move_next_chapter' => 'Переместить в следующую главу',
+ 'books_sort_move_book_start' => 'Переместить в начало книги',
+ 'books_sort_move_book_end' => 'Переместить в конец книги',
+ 'books_sort_move_before_chapter' => 'Переместить перед главой',
+ 'books_sort_move_after_chapter' => 'Переместить после главы',
+ 'books_copy' => 'Копировать книгу',
+ 'books_copy_success' => 'Книга успешно скопирована',
+
+ // Chapters
+ 'chapter' => 'Глава',
+ 'chapters' => 'Главы',
+ 'x_chapters' => ':count глава|:count главы|:count глав',
+ 'chapters_popular' => 'Популярные главы',
+ 'chapters_new' => 'Новая глава',
+ 'chapters_create' => 'Создать новую главу',
+ 'chapters_delete' => 'Удалить главу',
+ 'chapters_delete_named' => 'Удалить главу :chapterName',
+ 'chapters_delete_explain' => 'Это действие удалит главу с названием \':chapterName\'. Все страницы, которые существуют в этой главе, также будут удалены.',
+ 'chapters_delete_confirm' => 'Вы действительно хотите удалить эту главу?',
+ 'chapters_edit' => 'Редактировать главу',
+ 'chapters_edit_named' => 'Редактировать главу :chapterName',
+ 'chapters_save' => 'Сохранить главу',
+ 'chapters_move' => 'Переместить главу',
+ 'chapters_move_named' => 'Переместить главу :chapterName',
+ 'chapters_copy' => 'Копировать главу',
+ 'chapters_copy_success' => 'Глава успешно скопирована',
+ 'chapters_permissions' => 'Разрешения главы',
+ 'chapters_empty' => 'В этой главе нет страниц.',
+ 'chapters_permissions_active' => 'Действующие разрешения главы',
+ 'chapters_permissions_success' => 'Разрешения главы обновлены',
+ 'chapters_search_this' => 'Искать в этой главе',
+ 'chapter_sort_book' => 'Сортировать книгу',
+
+ // Pages
+ 'page' => 'Страница',
+ 'pages' => 'Страницы',
+ 'x_pages' => ':count страница|:count страницы|:count страниц',
+ 'pages_popular' => 'Популярные страницы',
+ 'pages_new' => 'Новая страница',
+ 'pages_attachments' => 'Вложения',
+ 'pages_navigation' => 'Навигация на странице',
+ 'pages_delete' => 'Удалить страницу',
+ 'pages_delete_named' => 'Удалить страницу :pageName',
+ 'pages_delete_draft_named' => 'Удалить черновик :pageName',
+ 'pages_delete_draft' => 'Удалить черновик',
+ 'pages_delete_success' => 'Страница удалена',
+ 'pages_delete_draft_success' => 'Черновик удален',
+ 'pages_delete_warning_template' => 'Эта страница активно используется как шаблон страницы по умолчанию для книги или главы. Эти книги или главы больше не будут иметь шаблон страницы по умолчанию, назначенный после удаления этой страницы.',
+ 'pages_delete_confirm' => 'Вы действительно хотите удалить эту страницу?',
+ 'pages_delete_draft_confirm' => 'Вы действительно хотите удалить этот черновик?',
+ 'pages_editing_named' => 'Редактирование страницы :pageName',
+ 'pages_edit_draft_options' => 'Параметры черновика',
+ 'pages_edit_save_draft' => 'Сохранить черновик',
+ 'pages_edit_draft' => 'Редактировать черновик',
+ 'pages_editing_draft' => 'Редактирование черновика',
+ 'pages_editing_page' => 'Редактирование страницы',
+ 'pages_edit_draft_save_at' => 'Черновик сохранён в ',
+ 'pages_edit_delete_draft' => 'Удалить черновик',
+ 'pages_edit_delete_draft_confirm' => 'Вы уверены, что хотите удалить черновик с изменениями? Все изменения, внесенные вами с момента последнего полного сохранения, будут утеряны и редактор будет обновлен данными с последнего сохранения страницы.',
+ 'pages_edit_discard_draft' => 'Отменить черновик',
+ 'pages_edit_switch_to_markdown' => 'Переключиться на Markdown',
+ 'pages_edit_switch_to_markdown_clean' => 'Только Markdown (с возможными потерями форматирования)',
+ 'pages_edit_switch_to_markdown_stable' => 'Полное сохранение форматирования (HTML)',
+ 'pages_edit_switch_to_wysiwyg' => 'Переключиться в WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(В бета-тестировании)',
+ 'pages_edit_set_changelog' => 'Задать список изменений',
+ 'pages_edit_enter_changelog_desc' => 'Введите краткое описание внесенных изменений',
+ 'pages_edit_enter_changelog' => 'Введите список изменений',
+ 'pages_editor_switch_title' => 'Переключить редактор',
+ 'pages_editor_switch_are_you_sure' => 'Вы уверены, что хотите изменить редактор для этой страницы?',
+ 'pages_editor_switch_consider_following' => 'При изменении редактора учитывайте следующее:',
+ 'pages_editor_switch_consideration_a' => 'После сохранения новая опция редактора будет использоваться любыми пользователями, которые будут редактировать данную страницу, включая тех, которые не смогут самостоятельно изменить тип редактора.',
+ 'pages_editor_switch_consideration_b' => 'Это потенциально может привести к потере деталей и синтаксиса при определенных обстоятельствах.',
+ 'pages_editor_switch_consideration_c' => 'Изменения в тегах или журнале, сделанные с момента последнего сохранения, не сохраняются в этом изменении.',
+ 'pages_save' => 'Сохранить страницу',
+ 'pages_title' => 'Заголовок страницы',
+ 'pages_name' => 'Название страницы',
+ 'pages_md_editor' => 'Редактор',
+ 'pages_md_preview' => 'Просмотр',
+ 'pages_md_insert_image' => 'Вставить изображение',
+ 'pages_md_insert_link' => 'Вставить ссылку на объект',
+ 'pages_md_insert_drawing' => 'Вставить рисунок',
+ 'pages_md_show_preview' => 'Предпросмотр',
+ 'pages_md_sync_scroll' => 'Синхронизировать прокрутку',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Найден несохраненный чертеж',
+ 'pages_drawing_unsaved_confirm' => 'Несохраненные данные были найдены из предыдущей неудачной попытки сохранения рисунка. Вы хотите восстановить и продолжить редактирование несохраненного рисунка?',
+ 'pages_not_in_chapter' => 'Страница не находится в главе',
+ 'pages_move' => 'Переместить страницу',
+ 'pages_copy' => 'Скопировать страницу',
+ 'pages_copy_desination' => 'Скопировать в',
+ 'pages_copy_success' => 'Страница скопирована',
+ 'pages_permissions' => 'Разрешения страницы',
+ 'pages_permissions_success' => 'Pазрешения страницы обновлены',
+ 'pages_revision' => 'Версия',
+ 'pages_revisions' => 'Версии страницы',
+ 'pages_revisions_desc' => 'Ниже перечислены все предыдущие изменения этой страницы. Вы можете посмотреть резервные копии, сравнить и восстановить старые версии страниц, если позволяют разрешения. Полная история страницы не может быть полностью отражена здесь, поскольку, в зависимости от системной конфигурации, старые версии могут быть удалены автоматически.',
+ 'pages_revisions_named' => 'Версии страницы для :pageName',
+ 'pages_revision_named' => 'Версия страницы для :pageName',
+ 'pages_revision_restored_from' => 'Восстановлено из #:id; :summary',
+ 'pages_revisions_created_by' => 'Создана',
+ 'pages_revisions_date' => 'Дата версии',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Номер версии',
+ 'pages_revisions_numbered' => 'Версия #:id',
+ 'pages_revisions_numbered_changes' => 'Изменения в версии #:id',
+ 'pages_revisions_editor' => 'Тип редактора',
+ 'pages_revisions_changelog' => 'Список изменений',
+ 'pages_revisions_changes' => 'Изменения',
+ 'pages_revisions_current' => 'Текущая версия',
+ 'pages_revisions_preview' => 'Просмотр',
+ 'pages_revisions_restore' => 'Восстановить',
+ 'pages_revisions_none' => 'У этой страницы нет других версий',
+ 'pages_copy_link' => 'Копировать ссылку',
+ 'pages_edit_content_link' => 'Перейти к разделу в редакторе',
+ 'pages_pointer_enter_mode' => 'Войти в режим выбора раздела',
+ 'pages_pointer_label' => 'Настройки раздела страницы',
+ 'pages_pointer_permalink' => 'Постоянная ссылка на раздел страницы',
+ 'pages_pointer_include_tag' => 'Раздел страницы с тегом',
+ 'pages_pointer_toggle_link' => 'Режим постоянной ссылки. Нажмите, чтобы показать включение тега',
+ 'pages_pointer_toggle_include' => 'Включить режим тега. Нажмите для отображения постоянной ссылки',
+ 'pages_permissions_active' => 'Действующие разрешения на страницу',
+ 'pages_initial_revision' => 'Первоначальное издание',
+ 'pages_references_update_revision' => 'Система автоматически обновила внутренние ссылки',
+ 'pages_initial_name' => 'Новая страница',
+ 'pages_editing_draft_notification' => 'В настоящее время вы редактируете черновик, который был сохранён :timeDiff.',
+ 'pages_draft_edited_notification' => 'Эта страница была обновлена до этого момента. Рекомендуется отменить этот черновик.',
+ 'pages_draft_page_changed_since_creation' => 'Эта страница была обновлена с момента создания данного черновика. Рекомендуется выбросить этот черновик или следить за тем, чтобы не перезаписать все изменения на странице.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count пользователей начали редактирование этой страницы',
+ 'start_b' => ':userName начал редактирование этой страницы',
+ 'time_a' => 'поскольку последние страницы были обновлены',
+ 'time_b' => 'за последние :minCount минут',
+ 'message' => ':start :time. Будьте осторожны, чтобы не перезаписывать друг друга!',
+ ],
+ 'pages_draft_discarded' => 'Черновик сброшен! Редактор обновлен текущим содержимым страницы',
+ 'pages_draft_deleted' => 'Черновик удалён! Редактор обновлен текущим содержимым страницы',
+ 'pages_specific' => 'Конкретная страница',
+ 'pages_is_template' => 'Шаблон страницы',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Переключить боковую панель',
+ 'page_tags' => 'Теги страницы',
+ 'chapter_tags' => 'Теги главы',
+ 'book_tags' => 'Теги книги',
+ 'shelf_tags' => 'Теги полки',
+ 'tag' => 'Тег',
+ 'tags' => 'Теги',
+ 'tags_index_desc' => 'Теги могут быть применены к содержимому для гибкой категоризации. Теги могут иметь как ключ, так и значение, значение является необязательным. После применения содержимое может быть найдено с помощью имени тега и значения.',
+ 'tag_name' => 'Имя тега',
+ 'tag_value' => 'Значение тега (опционально)',
+ 'tags_explain' => "Добавьте теги, чтобы лучше классифицировать ваш контент. \\n Вы можете присвоить значение тегу для более глубокой организации.",
+ 'tags_add' => 'Добавить тег',
+ 'tags_remove' => 'Удалить этот тег',
+ 'tags_usages' => 'Всего использовано тегов',
+ 'tags_assigned_pages' => 'Назначено на страницы',
+ 'tags_assigned_chapters' => 'Назначено на главы',
+ 'tags_assigned_books' => 'Назначено на книги',
+ 'tags_assigned_shelves' => 'Назначено на полки',
+ 'tags_x_unique_values' => 'Уникальные значения: :count',
+ 'tags_all_values' => 'Все значения',
+ 'tags_view_tags' => 'Посмотреть теги',
+ 'tags_view_existing_tags' => 'Просмотр имеющихся тегов',
+ 'tags_list_empty_hint' => 'Теги можно присваивать через боковую панель редактора страниц или при редактировании сведений о книге, главе или полке.',
+ 'attachments' => 'Вложения',
+ 'attachments_explain' => 'Загрузите несколько файлов или добавьте ссылку для отображения на своей странице. Они видны на боковой панели страницы.',
+ 'attachments_explain_instant_save' => 'Изменения здесь сохраняются мгновенно.',
+ 'attachments_upload' => 'Загрузить файл',
+ 'attachments_link' => 'Присоединить ссылку',
+ 'attachments_upload_drop' => 'Или вы можете перетащить файл сюда, чтобы загрузить его в качестве вложения.',
+ 'attachments_set_link' => 'Установить ссылку',
+ 'attachments_delete' => 'Вы уверены, что хотите удалить это вложение?',
+ 'attachments_dropzone' => 'Перетащите файлы сюда для загрузки',
+ 'attachments_no_files' => 'Файлы не загружены',
+ 'attachments_explain_link' => 'Вы можете присоединить ссылку, если вы предпочитаете не загружать файл. Это может быть ссылка на другую страницу или ссылка на файл в облаке.',
+ 'attachments_link_name' => 'Название ссылки',
+ 'attachment_link' => 'Ссылка на вложение',
+ 'attachments_link_url' => 'Ссылка на файл',
+ 'attachments_link_url_hint' => 'URL-адрес сайта или файла',
+ 'attach' => 'Прикрепить',
+ 'attachments_insert_link' => 'Добавить ссылку на вложение',
+ 'attachments_edit_file' => 'Редактировать файл',
+ 'attachments_edit_file_name' => 'Название файла',
+ 'attachments_edit_drop_upload' => 'Перетащите файлы или нажмите здесь, чтобы загрузить и перезаписать',
+ 'attachments_order_updated' => 'Порядок вложений обновлен',
+ 'attachments_updated_success' => 'Детали вложения обновлены',
+ 'attachments_deleted' => 'Вложение удалено',
+ 'attachments_file_uploaded' => 'Файл успешно загружен',
+ 'attachments_file_updated' => 'Файл успешно обновлен',
+ 'attachments_link_attached' => 'Ссылка успешно присоединена к странице',
+ 'templates' => 'Шаблоны',
+ 'templates_set_as_template' => 'Страница является шаблоном',
+ 'templates_explain_set_as_template' => 'Вы можете назначить эту страницу в качестве шаблона, её содержимое будет использоваться при создании других страниц. Пользователи смогут использовать этот шаблон в случае, если имеют разрешения на просмотр этой страницы.',
+ 'templates_replace_content' => 'Заменить содержимое страницы',
+ 'templates_append_content' => 'Добавить к содержанию страницы',
+ 'templates_prepend_content' => 'Добавить в начало содержимого страницы',
+
+ // Profile View
+ 'profile_user_for_x' => 'Пользователь уже :time',
+ 'profile_created_content' => 'Созданный контент',
+ 'profile_not_created_pages' => ':userName не создал ни одной страницы',
+ 'profile_not_created_chapters' => ':userName не создал ни одной главы',
+ 'profile_not_created_books' => ':userName не создал ни одной книги',
+ 'profile_not_created_shelves' => ':userName не создал ни одной полки',
+
+ // Comments
+ 'comment' => 'Комментарий',
+ 'comments' => 'Комментарии',
+ 'comment_add' => 'Комментировать',
+ 'comment_none' => 'Нет комментариев для отображения',
+ 'comment_placeholder' => 'Оставить комментарий здесь',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count архивировано',
+ 'comment_archived_threads' => 'Архивированные темы',
+ 'comment_save' => 'Сохранить комментарий',
+ 'comment_new' => 'Новый комментарий',
+ 'comment_created' => 'прокомментировал :createDiff',
+ 'comment_updated' => 'Обновлен :updateDiff пользователем :username',
+ 'comment_updated_indicator' => 'Обновлено',
+ 'comment_deleted_success' => 'Комментарий удален',
+ 'comment_created_success' => 'Комментарий добавлен',
+ 'comment_updated_success' => 'Комментарий обновлен',
+ 'comment_archive_success' => 'Комментарий заархивирован',
+ 'comment_unarchive_success' => 'Комментарий разархивирован',
+ 'comment_view' => 'Просмотреть комментарий',
+ 'comment_jump_to_thread' => 'Перейти к теме',
+ 'comment_delete_confirm' => 'Удалить этот комментарий?',
+ 'comment_in_reply_to' => 'В ответ на :commentId',
+ 'comment_reference' => 'Ссылка',
+ 'comment_reference_outdated' => '(Устаревшее)',
+ 'comment_editor_explain' => 'Вот комментарии, которые были оставлены на этой странице. Комментарии могут быть добавлены и управляться при просмотре сохраненной страницы.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Удалить эту версию?',
+ 'revision_restore_confirm' => 'Вы уверены, что хотите восстановить эту версию? Текущее содержимое страницы будет заменено.',
+ 'revision_cannot_delete_latest' => 'Нельзя удалить последнюю версию.',
+
+ // Copy view
+ 'copy_consider' => 'При копировании содержимого, пожалуйста, учтите следующее.',
+ 'copy_consider_permissions' => 'Пользовательские настройки прав доступа не будут скопированы.',
+ 'copy_consider_owner' => 'Вы станете владельцем всего скопированного контента.',
+ 'copy_consider_images' => 'Файлы изображений страницы не будут дублироваться и исходные изображения сохранят их отношение к странице, в которую они были загружены изначально.',
+ 'copy_consider_attachments' => 'Вложения страницы не будут скопированы.',
+ 'copy_consider_access' => 'Изменение положения, владельца или разрешений может привести к тому, что контент будет доступен пользователям, у которых не было доступа ранее.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Преобразовать в полку',
+ 'convert_to_shelf_contents_desc' => 'Вы можете превратить эту книгу в новую полку с тем же содержимым. Главы, содержащиеся в этой книге, будут преобразованы в новые книги. Если эта книга содержит какие-либо страницы, которых нет в главе, она будет переименована и будет содержать такие страницы, и эта книга станет частью новой полки.',
+ 'convert_to_shelf_permissions_desc' => 'Любые разрешения, установленные для этой книги, будут скопированы на новую полку и во все новые дочерние книги, для которых не применяются собственные разрешения. Обратите внимание, что разрешения на полки не применяются автоматически к содержимому внутри, как это происходит с книгами.',
+ 'convert_book' => 'Преобразовать книгу',
+ 'convert_book_confirm' => 'Вы уверены, что хотите преобразовать эту книгу?',
+ 'convert_undo_warning' => 'Это не отменяется простым способом.',
+ 'convert_to_book' => 'Преобразовать в книгу',
+ 'convert_to_book_desc' => 'Вы можете преобразовать эту главу в новую книгу с тем же содержанием. Любые разрешения, установленные в этой главе, будут скопированы в новую книгу, но любые унаследованные разрешения из родительской книги не будут скопированы, что может привести к изменению контроля доступа.',
+ 'convert_chapter' => 'Преобразовать главу',
+ 'convert_chapter_confirm' => 'Вы уверены, что хотите преобразовать эту главу?',
+
+ // References
+ 'references' => 'Ссылки',
+ 'references_none' => 'Нет отслеживаемых ссылок на этот элемент.',
+ 'references_to_desc' => 'Ниже перечислены все известные материалы в системе, которые ссылаются на этот элемент.',
+
+ // Watch Options
+ 'watch' => 'Наблюдать',
+ 'watch_title_default' => 'Свойства по умолчанию',
+ 'watch_desc_default' => 'Вернуть просмотр только ваших настроек уведомлений по умолчанию.',
+ 'watch_title_ignore' => 'Игнорировать',
+ 'watch_desc_ignore' => 'Игнорировать все уведомления, включая уведомления из пользовательского уровня.',
+ 'watch_title_new' => 'Новые страницы',
+ 'watch_desc_new' => 'Уведомлять при создании новой страницы внутри этого элемента.',
+ 'watch_title_updates' => 'Все обновления страницы',
+ 'watch_desc_updates' => 'Уведомлять обо всех новых страницах и изменениях страницы.',
+ 'watch_desc_updates_page' => 'Уведомлять о всех изменениях страницы.',
+ 'watch_title_comments' => 'Все обновления и комментарии страниц',
+ 'watch_desc_comments' => 'Уведомлять обо всех новых страницах, изменениях страниц и новых комментариях.',
+ 'watch_desc_comments_page' => 'Уведомлять об изменениях страниц и новых комментариях.',
+ 'watch_change_default' => 'Изменить настройки уведомлений по умолчанию',
+ 'watch_detail_ignore' => 'Игнорирование уведомлений',
+ 'watch_detail_new' => 'Наблюдение за новыми страницами',
+ 'watch_detail_updates' => 'Просмотр новых страниц и обновлений',
+ 'watch_detail_comments' => 'Просмотр новых страниц, обновлений и комментариев',
+ 'watch_detail_parent_book' => 'Просмотр через родительскую книгу',
+ 'watch_detail_parent_book_ignore' => 'Игнорирование через родительскую книгу',
+ 'watch_detail_parent_chapter' => 'Просмотр через родительскую главу',
+ 'watch_detail_parent_chapter_ignore' => 'Игнорирование через родительскую главу',
+];
diff --git a/lang/ru/errors.php b/lang/ru/errors.php
new file mode 100644
index 00000000000..aba67adf084
--- /dev/null
+++ b/lang/ru/errors.php
@@ -0,0 +1,135 @@
+ 'У вас нет доступа к запрашиваемой странице.',
+ 'permissionJson' => 'У вас нет разрешения для запрашиваемого действия.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Пользователь с электронной почтой :email уже существует, но с другими учетными данными.',
+ 'auth_pre_register_theme_prevention' => 'Пользователь не может быть зарегистрирован по предоставленной информации',
+ 'email_already_confirmed' => 'Адрес электронной почты уже был подтвержден, попробуйте войти в систему.',
+ 'email_confirmation_invalid' => 'Этот токен подтверждения недействителен или уже используется. Повторите попытку регистрации.',
+ 'email_confirmation_expired' => 'Истек срок действия токена. Отправлено новое письмо с подтверждением.',
+ 'email_confirmation_awaiting' => 'Для используемой учетной записи необходимо подтвердить адрес электронной почты',
+ 'ldap_fail_anonymous' => 'Недопустимый доступ LDAP с использованием анонимной привязки',
+ 'ldap_fail_authed' => 'Не удалось получить доступ к LDAP, используя данные dn & password',
+ 'ldap_extension_not_installed' => 'LDAP расширение для PHP не установлено',
+ 'ldap_cannot_connect' => 'Не удается подключиться к серверу LDAP, не удалось выполнить начальное соединение',
+ 'saml_already_logged_in' => 'Уже вошли в систему',
+ 'saml_no_email_address' => 'Не удалось найти email для этого пользователя в данных, предоставленных внешней системой аутентификации',
+ 'saml_invalid_response_id' => 'Запрос от внешней системы аутентификации не распознается процессом, запущенным этим приложением. Переход назад после входа в систему может вызвать эту проблему.',
+ 'saml_fail_authed' => 'Вход с помощью :system не удался, система не предоставила успешную авторизацию',
+ 'oidc_already_logged_in' => 'Вход в систему уже произведен',
+ 'oidc_no_email_address' => 'Не удалось найти email этого пользователя в данных, предоставленных внешней системой аутентификации',
+ 'oidc_fail_authed' => 'Вход в систему с помощью :system не удался, система не обеспечила успешную авторизацию',
+ 'social_no_action_defined' => 'Действие не определено',
+ 'social_login_bad_response' => "При попытке входа с :socialAccount произошла ошибка: \\n:error",
+ 'social_account_in_use' => 'Этот :socialAccount аккаунт уже используется, попробуйте войти с параметрами :socialAccount.',
+ 'social_account_email_in_use' => 'Электронный ящик :email уже используется. Если у вас уже есть учетная запись, вы можете подключить свою учетную запись :socialAccount из настроек своего профиля.',
+ 'social_account_existing' => 'Этот :socialAccount уже привязан к вашему профилю.',
+ 'social_account_already_used_existing' => 'Этот :socialAccount уже используется другим пользователем.',
+ 'social_account_not_used' => 'Этот :socialAccount не связан ни с какими пользователями. Прикрепите его в настройках вашего профиля.',
+ 'social_account_register_instructions' => 'Если у вас еще нет учетной записи, вы можете зарегистрироваться, используя параметр :socialAccount.',
+ 'social_driver_not_found' => 'Драйвер для Соцсети не найден',
+ 'social_driver_not_configured' => 'Настройки вашего :socialAccount заданы неправильно.',
+ 'invite_token_expired' => 'Срок действия приглашения истек. Вместо этого вы можете попытаться сбросить пароль своей учетной записи.',
+ 'login_user_not_found' => 'Пользователь для этого действия не найден.',
+
+ // System
+ 'path_not_writable' => 'Невозможно загрузить файл по пути :filePath. Убедитесь что сервер доступен для записи.',
+ 'cannot_get_image_from_url' => 'Не удается получить изображение из :url',
+ 'cannot_create_thumbs' => 'Сервер не может создавать эскизы. Убедитесь, что у вас установлено расширение GD PHP.',
+ 'server_upload_limit' => 'Сервер не разрешает загрузку файлов такого размера. Попробуйте уменьшить размер файла.',
+ 'server_post_limit' => 'Сервер не может получить указанный объем данных. Повторите попытку, используя меньшее количество данных или файл меньшего размера.',
+ 'uploaded' => 'Сервер не позволяет загружать файлы такого размера. Пожалуйста, попробуйте файл меньше.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Произошла ошибка при загрузке изображения',
+ 'image_upload_type_error' => 'Неправильный тип загружаемого изображения',
+ 'image_upload_replace_type' => 'Замена файла изображения должна быть того же типа',
+ 'image_upload_memory_limit' => 'Не удалось выполнить загрузку изображений и/или создать эскизы из-за ограничения системных ресурсов.',
+ 'image_thumbnail_memory_limit' => 'Не удалось создать вариации размера изображения из-за ограничений системных ресурсов.',
+ 'image_gallery_thumbnail_memory_limit' => 'Не удалось создать эскизы галереи из-за ограниченности системных ресурсов.',
+ 'drawing_data_not_found' => 'Данные чертежа не могут быть загружены. Возможно, файл чертежа больше не существует или у вас нет разрешения на доступ к нему.',
+
+ // Attachments
+ 'attachment_not_found' => 'Вложение не найдено',
+ 'attachment_upload_error' => 'Произошла ошибка при загрузке вложенного файла',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Не удалось сохранить черновик. Перед сохранением этой страницы убедитесь, что у вас есть подключение к Интернету.',
+ 'page_draft_delete_fail' => 'Не удалось удалить черновик страницы и получить текущее сохраненное содержимое страницы',
+ 'page_custom_home_deletion' => 'Невозможно удалить страницу, пока она установлена как домашняя страница',
+
+ // Entities
+ 'entity_not_found' => 'Объект не найден',
+ 'bookshelf_not_found' => 'Полка не найдена',
+ 'book_not_found' => 'Книга не найдена',
+ 'page_not_found' => 'Страница не найдена',
+ 'chapter_not_found' => 'Глава не найдена',
+ 'selected_book_not_found' => 'Выбранная книга не найдена',
+ 'selected_book_chapter_not_found' => 'Выбранная книга или глава не найдена',
+ 'guests_cannot_save_drafts' => 'Гости не могут сохранять черновики',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Вы не можете удалить единственного администратора',
+ 'users_cannot_delete_guest' => 'Вы не можете удалить гостевого пользователя',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Эта роль не может быть изменена',
+ 'role_system_cannot_be_deleted' => 'Эта роль является системной и не может быть удалена',
+ 'role_registration_default_cannot_delete' => 'Эта роль не может быть удалена, так как она установлена в качестве роли по умолчанию',
+ 'role_cannot_remove_only_admin' => 'Этот пользователь единственный с правами администратора. Назначьте роль администратора другому пользователю, прежде чем удалить этого.',
+
+ // Comments
+ 'comment_list' => 'Произошла ошибка при получении комментариев.',
+ 'cannot_add_comment_to_draft' => 'Вы не можете добавлять комментарии к черновику.',
+ 'comment_add' => 'Произошла ошибка при добавлении / обновлении комментария.',
+ 'comment_delete' => 'Произошла ошибка при удалении комментария.',
+ 'empty_comment' => 'Нельзя добавить пустой комментарий.',
+
+ // Error pages
+ '404_page_not_found' => 'Страница не найдена',
+ 'sorry_page_not_found' => 'Извините, страница, которую вы искали, не найдена.',
+ 'sorry_page_not_found_permission_warning' => 'Если вы ожидали что страница существует, возможно у вас нет прав для её просмотра.',
+ 'image_not_found' => 'Изображение не найдено',
+ 'image_not_found_subtitle' => 'К сожалению, файл изображения, который вы искали, не найден.',
+ 'image_not_found_details' => 'Возможно данное изображение было удалено.',
+ 'return_home' => 'вернуться на главную страницу',
+ 'error_occurred' => 'Произошла ошибка',
+ 'app_down' => ':appName в данный момент не доступно',
+ 'back_soon' => 'Скоро восстановится.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'У вас недостаточно прав для создания книг.',
+ 'import_perms_chapters' => 'У вас недостаточно прав для создания глав.',
+ 'import_perms_pages' => 'У вас недостаточно прав для создания страниц.',
+ 'import_perms_images' => 'У вас недостаточно прав для создания изображений.',
+ 'import_perms_attachments' => 'У вас недостаточно прав для создания вложений.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Отсутствует токен авторизации в запросе',
+ 'api_bad_authorization_format' => 'Токен авторизации найден, но формат запроса неверен',
+ 'api_user_token_not_found' => 'Отсутствует соответствующий API токен для предоставленного токена авторизации',
+ 'api_incorrect_token_secret' => 'Секрет, предоставленный для данного использованного API токена неверен',
+ 'api_user_no_api_permission' => 'Владелец используемого API токена не имеет прав на выполнение вызовов API',
+ 'api_user_token_expired' => 'Срок действия используемого токена авторизации истек',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Ошибка при отправке тестового письма:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'URL-адрес не соответствует настроенным разрешенным хостам SSR',
+];
diff --git a/lang/ru/notifications.php b/lang/ru/notifications.php
new file mode 100644
index 00000000000..96e853723b7
--- /dev/null
+++ b/lang/ru/notifications.php
@@ -0,0 +1,29 @@
+ 'Новый комментарий на странице: :pageName',
+ 'new_comment_intro' => 'Пользователь прокомментировал страницу в :appName:',
+ 'new_page_subject' => 'Новая страница: :pageName',
+ 'new_page_intro' => 'Новая страница была создана в :appName:',
+ 'updated_page_subject' => 'Обновлена страница: :pageName',
+ 'updated_page_intro' => 'Страница была обновлена в :appName:',
+ 'updated_page_debounce' => 'Чтобы предотвратить массовые уведомления, в течение некоторого времени вы не будете получать уведомления о дальнейших правках этой страницы этим же редактором.',
+ 'comment_mention_subject' => 'Вы были упомянуты в комментарии на странице: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Имя страницы:',
+ 'detail_page_path' => 'Путь страницы:',
+ 'detail_commenter' => 'Комментатор:',
+ 'detail_comment' => 'Комментарий:',
+ 'detail_created_by' => 'Создано:',
+ 'detail_updated_by' => 'Обновлено:',
+
+ 'action_view_comment' => 'Просмотреть комментарий',
+ 'action_view_page' => 'Посмотреть страницу',
+
+ 'footer_reason' => 'Это уведомление было отправлено, потому что :link покрывает этот тип активности для этого элемента.',
+ 'footer_reason_link' => 'ваши настройки уведомлений',
+];
diff --git a/resources/lang/ru/pagination.php b/lang/ru/pagination.php
similarity index 100%
rename from resources/lang/ru/pagination.php
rename to lang/ru/pagination.php
diff --git a/resources/lang/ru/passwords.php b/lang/ru/passwords.php
similarity index 100%
rename from resources/lang/ru/passwords.php
rename to lang/ru/passwords.php
diff --git a/lang/ru/preferences.php b/lang/ru/preferences.php
new file mode 100644
index 00000000000..b61b252c8dc
--- /dev/null
+++ b/lang/ru/preferences.php
@@ -0,0 +1,52 @@
+ 'Моя учетная запись',
+
+ 'shortcuts' => 'Горячие клавиши',
+ 'shortcuts_interface' => 'Настройки горячих клавиш',
+ 'shortcuts_toggle_desc' => 'Здесь вы можете включить или отключить горячие клавиши системного интерфейса, используемые для навигации и действий.',
+ 'shortcuts_customize_desc' => 'Вы можете настроить каждую из горячих клавиш ниже. Просто нажмите комбинацию клавиш после выбора вставки для горячих клавиш.',
+ 'shortcuts_toggle_label' => 'Горячие клавиши включены',
+ 'shortcuts_section_navigation' => 'Навигация',
+ 'shortcuts_section_actions' => 'Общие действия',
+ 'shortcuts_save' => 'Сохранить горячие клавиши',
+ 'shortcuts_overlay_desc' => 'Примечание: Когда горячие клавиши включены, вспомогательное наложение доступно через нажатие "?", которая будет подсвечивать доступные горячие клавиши для действий, видимых в настоящее время на экране.',
+ 'shortcuts_update_success' => 'Настройки горячих клавиш были обновлены!',
+ 'shortcuts_overview_desc' => 'Управление клавишами быстрого доступа, которые можно использовать для навигации по системному интерфейсу.',
+
+ 'notifications' => 'Настройки уведомлений',
+ 'notifications_desc' => 'Управляйте полученными по электронной почте уведомлениями при выполнении определенных действий в системе.',
+ 'notifications_opt_own_page_changes' => 'Уведомлять об изменениях в собственных страницах',
+ 'notifications_opt_own_page_comments' => 'Уведомлять о комментариях на собственных страницах',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Уведомлять об ответах на мои комментарии',
+ 'notifications_save' => 'Сохранить настройки',
+ 'notifications_update_success' => 'Настройки уведомлений были обновлены!',
+ 'notifications_watched' => 'Просмотренные и игнорированные элементы',
+ 'notifications_watched_desc' => 'Ниже приведены элементы, которые имеют пользовательские настройки наблюдения. Чтобы обновить ваши предпочтения, посмотрите этот пункт и найдите варианты наблюдения в боковой панели.',
+
+ 'auth' => 'Доступ и безопасность',
+ 'auth_change_password' => 'Изменить пароль',
+ 'auth_change_password_desc' => 'Установите пароль для входа в приложение. Длина пароля должна быть не менее 8 символов.',
+ 'auth_change_password_success' => 'Пароль был обновлен!',
+
+ 'profile' => 'Детали профиля',
+ 'profile_desc' => 'Управляйте деталями вашей учетной записи, что представляют вас другим пользователям, в дополнение к деталям, используемым для персонализации коммуникации и системы.',
+ 'profile_view_public' => 'Просмотреть публичный профиль',
+ 'profile_name_desc' => 'Настройте отображаемое имя, видимое другим пользователям системы через действия, что вы выполняете, и контент, которым вы владеете.',
+ 'profile_email_desc' => 'Этот адрес электронной почты будет использоваться для уведомлений и, в зависимости от активной системы аутентификации, для доступа к системе.',
+ 'profile_email_no_permission' => 'К сожалению, у вас нет разрешения на изменение адреса электронной почты. Если вам действительно необходимо его изменить, нужно попросить администратора сделать это.',
+ 'profile_avatar_desc' => 'Выберите изображение, которое будет использоваться для представления себя другим в системе. По возможности это изображение должно быть квадратным и около 256 пикселей по ширине и высоте.',
+ 'profile_admin_options' => 'Административные параметры',
+ 'profile_admin_options_desc' => 'Дополнительные параметры уровня администратора, такие как управление назначением ролей, могут быть найдены для вашей учетной записи в области "Настройки > Пользователи".',
+
+ 'delete_account' => 'Удалить аккаунт',
+ 'delete_my_account' => 'Удалить мой аккаунт',
+ 'delete_my_account_desc' => 'Это полностью удалит вашу учетную запись из системы. Вы не сможете отменить это действие или восстановить эту учетную запись. Созданный вами контент, такой как созданные страницы и загруженные изображения, останется без изменений.',
+ 'delete_my_account_warning' => 'Вы уверены, что хотите удалить свой аккаунт?',
+];
diff --git a/lang/ru/settings.php b/lang/ru/settings.php
new file mode 100644
index 00000000000..76a2eebbf1e
--- /dev/null
+++ b/lang/ru/settings.php
@@ -0,0 +1,374 @@
+ 'Настройки',
+ 'settings_save' => 'Сохранить настройки',
+ 'system_version' => 'Версия системы',
+ 'categories' => 'Категории',
+
+ // App Settings
+ 'app_customization' => 'Настройки',
+ 'app_features_security' => 'Функционал и безопасность',
+ 'app_name' => 'Название приложения',
+ 'app_name_desc' => 'Название отображается в заголовках и сообщениях электронной почты отправленных системой.',
+ 'app_name_header' => 'Отображать название приложения в заголовке',
+ 'app_public_access' => 'Публичный доступ',
+ 'app_public_access_desc' => 'Включение этой опции позволит неавторизованным посетителям получить доступ к содержимому вашего BookStack.',
+ 'app_public_access_desc_guest' => 'Публичный доступ контролируется через настройки пользователя "Guest"',
+ 'app_public_access_toggle' => 'Разрешить публичный доступ',
+ 'app_public_viewing' => 'Разрешить публичный просмотр?',
+ 'app_secure_images' => 'Загрузка изображений с высоким уровнем безопасности',
+ 'app_secure_images_toggle' => 'Включить загрузку изображений с высоким уровнем безопасности',
+ 'app_secure_images_desc' => 'Для высокой производительности все изображения являются общедоступными. Этот параметр добавляет случайную строку перед URL изображения. Убедитесь, что индексация каталогов отключена, для предотвращения легкого доступа.',
+ 'app_default_editor' => 'Редактор страниц по умолчанию',
+ 'app_default_editor_desc' => 'Выберите, какой редактор будет использоваться по умолчанию при редактировании новых страниц. Это может быть переопределено на уровне страницы, где разрешены права.',
+ 'app_custom_html' => 'Пользовательский контент заголовка HTML',
+ 'app_custom_html_desc' => 'Любой контент, добавленный здесь, будет вставлен в нижнюю часть раздела каждой страницы. Это удобно для переопределения стилей или добавления кода аналитики.',
+ 'app_custom_html_disabled_notice' => 'Пользовательский контент заголовка HTML отключен на этой странице, чтобы гарантировать отмену любых критических изменений.',
+ 'app_logo' => 'Логотип приложения',
+ 'app_logo_desc' => 'Используется в строке заголовка приложения, среди прочих областей. Это изображение должно быть 86px в высоте. Большие изображения будут масштабироваться вниз.',
+ 'app_icon' => 'Иконка приложения',
+ 'app_icon_desc' => 'Эта иконка используется для браузерных вкладок и иконок ярлыков. Должно быть 256px квадратное PNG изображение.',
+ 'app_homepage' => 'Стартовая страница приложения',
+ 'app_homepage_desc' => 'Выберите страницу, которая будет отображаться на главной странице вместо стандартной. Права на страницы игнорируются для выбранных страниц.',
+ 'app_homepage_select' => 'Выберите страницу',
+ 'app_footer_links' => 'Ссылки в нижней части страницы',
+ 'app_footer_links_desc' => 'Добавьте ссылки для отображения в нижнем колонтитуле сайта. Они будут отображаться в нижней части большинства страниц, включая те, которые не требуют входа. Вы можете использовать метку "trans::" для использования системных переводов. Например: Использование "trans::common.privacy_policy" обеспечит перевод текста "Политика конфиденциальности" и "trans:common.terms_of_service" предоставит переведенный текст "Правила использования".',
+ 'app_footer_links_label' => 'Название ссылки',
+ 'app_footer_links_url' => 'Адрес ссылки',
+ 'app_footer_links_add' => 'Добавить ссылку',
+ 'app_disable_comments' => 'Отключение комментариев',
+ 'app_disable_comments_toggle' => 'Отключить комментарии',
+ 'app_disable_comments_desc' => 'Отключение комментариев на всех страницах. Существующие комментарии будут скрыты.',
+
+ // Color settings
+ 'color_scheme' => 'Цветовая схема приложения',
+ 'color_scheme_desc' => 'Установите цвета для использования в пользовательском интерфейсе. Цвета могут быть настроены отдельно для темных и светлых режимов, чтобы наилучшим образом соответствовать теме и обеспечить разборчивость.',
+ 'ui_colors_desc' => 'Задайте основной цвет приложения и цвет ссылок по умолчанию. Основной цвет используется в основном для баннера заголовка, кнопок и декораций интерфейса. Цвет ссылок по умолчанию используется для текстовых ссылок и действий как в письменном содержании, так и в прикладном интерфейсе.',
+ 'app_color' => 'Основной цвет',
+ 'link_color' => 'Цвет ссылки',
+ 'content_colors_desc' => 'Задает цвета для всех элементов организационной иерархии страницы. Для удобства чтения рекомендуется выбирать цвета, яркость которых близка к цветам по умолчанию.',
+ 'bookshelf_color' => 'Цвет полки',
+ 'book_color' => 'Цвет книги',
+ 'chapter_color' => 'Цвет главы',
+ 'page_color' => 'Цвет страницы',
+ 'page_draft_color' => 'Цвет черновика страницы',
+
+ // Registration Settings
+ 'reg_settings' => 'Настройки регистрации',
+ 'reg_enable' => 'Разрешить регистрацию',
+ 'reg_enable_toggle' => 'Разрешить регистрацию',
+ 'reg_enable_desc' => 'Если регистрация разрешена, пользователь сможет зарегистрироваться в системе самостоятельно. При регистрации назначается роль пользователя по умолчанию.',
+ 'reg_default_role' => 'Роль пользователя по умолчанию после регистрации',
+ 'reg_enable_external_warning' => 'Вышеуказанный параметр игнорируется, пока активна внешняя аутентификация LDAP или SAML. Учетные записи для несуществующих пользователей будут создаваться автоматически при условии успешной аутентификации на внешнем сервере.',
+ 'reg_email_confirmation' => 'Подтверждение электронной почты',
+ 'reg_email_confirmation_toggle' => 'Требовать подтверждение по электронной почте',
+ 'reg_confirm_email_desc' => 'При использовании ограничения по домену - подтверждение обязательно, этот пункт игнорируется.',
+ 'reg_confirm_restrict_domain' => 'Ограничить регистрацию по домену',
+ 'reg_confirm_restrict_domain_desc' => 'Введите список доменов почты через запятую, для которых разрешена регистрация. Пользователям будет отправлено письмо для подтверждения адреса перед входом в приложение. Обратите внимание, что пользователи смогут изменить свой адрес после регистрации.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Без ограничений',
+
+ // Sorting Settings
+ 'sorting' => 'Списки и сортировка',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Выберите правило сортировки по умолчанию для новых книг. Это не повлияет на существующие книги, и может быть изменено для каждой книги отдельно.',
+ 'sorting_rules' => 'Правила сортировки',
+ 'sorting_rules_desc' => 'Выберите правило сортировки по умолчанию для новых книг. Это не повлияет на существующие книги и может быть изменено для каждой книги отдельно.',
+ 'sort_rule_assigned_to_x_books' => 'Используется в :count книгах',
+ 'sort_rule_create' => 'Создать правило сортировки',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Удалить правило сортировки',
+ 'sort_rule_delete_desc' => 'Удалить это правило сортировки из системы. Книги, использующие эту сортировку, вернутся к ручной сортировке.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'Это правило сортировки используется по умолчанию для книг. Вы уверены, что хотите удалить его?',
+ 'sort_rule_details' => 'Детали правила сортировки',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Доступные операции',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Перетащите/добавьте операции из списка "Доступные операции"',
+ 'sort_rule_op_asc' => '(Возрастание)',
+ 'sort_rule_op_desc' => '(Убывание)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'По нумерации',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Главы в начале',
+ 'sort_rule_op_chapters_last' => 'Главы в конце',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Обслуживание',
+ 'maint_image_cleanup' => 'Очистка изображений',
+ 'maint_image_cleanup_desc' => 'Сканирует содержимое страниц и предыдущих версий и определяет изображения, которые не используются. Убедитесь, что у вас есть резервная копия базы данных и папки изображений перед запуском этой функции.',
+ 'maint_delete_images_only_in_revisions' => 'Также удалять изображения, которые существуют только в старой версии страницы',
+ 'maint_image_cleanup_run' => 'Выполнить очистку',
+ 'maint_image_cleanup_warning' => 'Найдено :count возможно бесполезных изображений. Вы уверены, что хотите удалить эти изображения?',
+ 'maint_image_cleanup_success' => ':count возможно бесполезных изображений было найдено и удалено!',
+ 'maint_image_cleanup_nothing_found' => 'Не найдено ни одного бесполезного изображения!',
+ 'maint_send_test_email' => 'Отправить тестовое письмо',
+ 'maint_send_test_email_desc' => 'Отправить тестовое письмо на адрес электронной почты, указанный в профиле.',
+ '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' => 'Открыть корзину',
+ 'maint_regen_references' => 'Пересоздать ссылки',
+ 'maint_regen_references_desc' => 'Это действие восстановит перекрёстный справочный индекс в базе данных. Обычно это действие обрабатывается автоматически, но оно может быть полезно для индексации старого контента или контента, добавляемого неофициальными методами.',
+ 'maint_regen_references_success' => 'Справочный индекс был обновлен!',
+ 'maint_timeout_command_note' => 'Примечание: Это действие может занять время для запуска, что может привести к возникновению проблем в некоторых web-средах. В качестве альтернативы, это действие можно выполнить с помощью терминальной команды.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Корзина',
+ 'recycle_bin_desc' => 'Здесь вы можете восстановить удаленные элементы или навсегда удалить их из системы. Этот список не отфильтрован в отличие от аналогичных списков действий в системе, где применяются фильтры.',
+ 'recycle_bin_deleted_item' => 'Удаленный элемент',
+ 'recycle_bin_deleted_parent' => 'Родительский объект',
+ '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_restore_parent' => 'Восстановить родительский объект',
+ 'recycle_bin_destroy_notification' => 'Удалено :count элементов из корзины.',
+ 'recycle_bin_restore_notification' => 'Восстановлено :count элементов из корзины',
+
+ // Audit Log
+ 'audit' => 'Журнал аудита',
+ 'audit_desc' => 'Этот журнал аудита отображает список действий, отслеживаемых в системе. Этот список не отфильтрован в отличие от аналогичных списков действий в системе, где применяются фильтры.',
+ '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_ip' => 'IP-адрес',
+ 'audit_table_date' => 'Дата действия',
+ 'audit_date_from' => 'Диапазон даты от',
+ 'audit_date_to' => 'Диапазон даты до',
+
+ // Role Settings
+ 'roles' => 'Роли',
+ 'role_user_roles' => 'Роли пользователей',
+ 'roles_index_desc' => 'Роли используются для группировки пользователей и предоставления системных разрешений их участникам. Когда пользователь является членом нескольких ролей, предоставленные разрешения объединяются, и пользователь наследует все возможности.',
+ 'roles_x_users_assigned' => ':count пользователь назначен|:count назначенных пользователей',
+ 'roles_x_permissions_provided' => ':count разрешение|:count разрешений',
+ 'roles_assigned_users' => 'Назначенные пользователи',
+ 'roles_permissions_provided' => 'Предоставленные разрешения',
+ 'role_create' => 'Добавить роль',
+ 'role_delete' => 'Удалить роль',
+ 'role_delete_confirm' => 'Это удалит роль с именем \':roleName\'.',
+ 'role_delete_users_assigned' => 'Эта роль назначена :userCount пользователям. Если вы хотите перенести их, выберите новую роль ниже.',
+ 'role_delete_no_migration' => "Не переносить пользователей",
+ 'role_delete_sure' => 'Вы уверены что хотите удалить данную роль?',
+ 'role_edit' => 'Редактировать роль',
+ 'role_details' => 'Детали роли',
+ 'role_name' => 'Название роли',
+ 'role_desc' => 'Краткое описание роли',
+ 'role_mfa_enforced' => 'Требует многофакторной аутентификации',
+ 'role_external_auth_id' => 'Внешние ID авторизации',
+ 'role_system' => 'Системные разрешения',
+ 'role_manage_users' => 'Управление пользователями',
+ 'role_manage_roles' => 'Управление ролями и правами на роли',
+ 'role_manage_entity_permissions' => 'Управление правами на все книги, главы и страницы',
+ 'role_manage_own_entity_permissions' => 'Управление разрешениями для собственных книг, глав и страниц',
+ 'role_manage_page_templates' => 'Управление шаблонами страниц',
+ 'role_access_api' => 'Доступ к системному API',
+ 'role_manage_settings' => 'Управление настройками приложения',
+ 'role_export_content' => 'Экспорт контента',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Изменение редактора страниц',
+ 'role_notifications' => 'Получение и управление уведомлениями',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Права доступа к материалам',
+ 'roles_system_warning' => 'Имейте в виду, что доступ к любому из указанных выше трех разрешений может позволить пользователю изменить свои собственные привилегии или привилегии других пользователей системы. Назначать роли с этими правами можно только доверенным пользователям.',
+ 'role_asset_desc' => 'Эти разрешения контролируют доступ по умолчанию к параметрам внутри системы. Разрешения на книги, главы и страницы перезапишут эти разрешения.',
+ 'role_asset_admins' => 'Администраторы автоматически получают доступ ко всему контенту, но эти опции могут отображать или скрывать параметры пользовательского интерфейса.',
+ 'role_asset_image_view_note' => 'Это относится к видимости в менеджере изображений. Фактический доступ к загруженным файлам изображений будет зависеть от опции хранения системных изображений.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Все',
+ 'role_own' => 'Владелец',
+ 'role_controlled_by_asset' => 'Контролируется активом, в который они загружены',
+ 'role_save' => 'Сохранить роль',
+ 'role_users' => 'Пользователи с данной ролью',
+ 'role_users_none' => 'Нет пользователей с данной ролью',
+
+ // Users
+ 'users' => 'Пользователи',
+ 'users_index_desc' => 'Создание и управление индивидуальными учетными записями пользователей в системе. Учетные записи пользователя используются для входа и атрибуции контента и активности. Разрешения доступа в первую очередь основываются на роли, но владельцы контента могут влиять на разрешения и доступ.',
+ 'user_profile' => 'Профиль пользователя',
+ 'users_add_new' => 'Добавить пользователя',
+ 'users_search' => 'Поиск пользователей',
+ 'users_latest_activity' => 'Последние действия',
+ 'users_details' => 'Данные пользователя',
+ 'users_details_desc' => 'Укажите имя и адрес электронной почты для этого пользователя. Адрес электронной почты будет использоваться для входа в приложение.',
+ 'users_details_desc_no_email' => 'Задайте имя для этого пользователя, чтобы другие могли его узнать.',
+ 'users_role' => 'Роли пользователя',
+ 'users_role_desc' => 'Назначьте роли пользователю. Если назначено несколько ролей, разрешения будут суммироваться и пользователь получит все права назначенных ролей.',
+ 'users_password' => 'Пароль пользователя',
+ 'users_password_desc' => 'Установите пароль для входа в приложение. Длина пароля должна быть не менее 8 символов.',
+ 'users_send_invite_text' => 'Вы можете отправить этому пользователю письмо с приглашением, которое позволит ему установить пароль самостоятельно или задайте пароль сами.',
+ 'users_send_invite_option' => 'Отправить пользователю письмо с приглашением',
+ 'users_external_auth_id' => 'Внешний ID аутентификации',
+ 'users_external_auth_id_desc' => 'Когда используется внешняя система аутентификации (например, SAML2, OIDC или LDAP), этот идентификатор будет использоваться для связывания пользователя BookStack с учетной записью системы аутентификации. Вы можете игнорировать это поле, если используете стандартную аутентификацию по электронной почте.',
+ 'users_password_warning' => 'Заполните поля ниже только если вы хотите изменить пароль.',
+ 'users_system_public' => 'Этот пользователь представляет любых гостевых пользователей, которые посещают ваше приложение. Он не может использоваться для входа в систему и назначается автоматически.',
+ 'users_delete' => 'Удалить пользователя',
+ 'users_delete_named' => 'Удалить пользователя :userName',
+ 'users_delete_warning' => 'Это полностью удалит пользователя \':userName\' из системы.',
+ 'users_delete_confirm' => 'Вы уверены что хотите удалить этого пользователя?',
+ 'users_migrate_ownership' => 'Наследник контента',
+ 'users_migrate_ownership_desc' => 'Выберите пользователя, если вы хотите, чтобы он стал владельцем всех элементов, в настоящее время принадлежащих удаляемому пользователю.',
+ 'users_none_selected' => 'Пользователь не выбран',
+ 'users_edit' => 'Редактировать пользователя',
+ 'users_edit_profile' => 'Редактировать профиль',
+ 'users_avatar' => 'Аватар пользователя',
+ 'users_avatar_desc' => 'Выберите изображение. Изображение должно быть квадратным, размером около 256px.',
+ 'users_preferred_language' => 'Предпочитаемый язык',
+ 'users_preferred_language_desc' => 'Этот параметр изменит язык интерфейса приложения. Это не влияет на созданный пользователем контент.',
+ 'users_social_accounts' => 'Аккаунты социальных сетей',
+ 'users_social_accounts_desc' => 'Просмотр статуса подключенных социальных учетных записей для этого пользователя. Учетные записи социальных сетей могут использоваться в дополнение к системе первичной аутентификации для доступа к системе.',
+ 'users_social_accounts_info' => 'Здесь вы можете подключить другие учетные записи для более быстрого и легкого входа в систему. Отключение учетной записи здесь не возможно. Отмените доступ к настройкам вашего профиля в подключенном социальном аккаунте.',
+ 'users_social_connect' => 'Подключить аккаунт',
+ 'users_social_disconnect' => 'Отключить аккаунт',
+ 'users_social_status_connected' => 'Подключен',
+ 'users_social_status_disconnected' => 'Отключен',
+ 'users_social_connected' => ':socialAccount аккаунт успешно подключен к вашему профилю.',
+ 'users_social_disconnected' => ':socialAccount аккаунт успешно отключен от вашего профиля.',
+ 'users_api_tokens' => 'API токены',
+ 'users_api_tokens_desc' => 'Создание и управление токенами доступа, используемыми для аутентификации с помощью BookStack REST API. Разрешения для API управляются пользователем, которому принадлежит токен.',
+ 'users_api_tokens_none' => 'Для этого пользователя не создано API токенов',
+ 'users_api_tokens_create' => 'Создать токен',
+ 'users_api_tokens_expires' => 'Истекает',
+ 'users_api_tokens_docs' => 'Документация',
+ 'users_mfa' => 'Многофакторная аутентификация',
+ 'users_mfa_desc' => 'Многофакторная аутентификация повышает степень безопасности вашей учетной записи.',
+ 'users_mfa_x_methods' => 'методов настроено :count|методов сконфигурировано :count',
+ 'users_mfa_configure' => 'Настройка методов',
+
+ // API Tokens
+ 'user_api_token_create' => 'Создать токен',
+ 'user_api_token_name' => 'Имя',
+ 'user_api_token_name_desc' => 'Присвойте вашему токену читаемое имя, в качестве напоминания о его назначении в будущем.',
+ 'user_api_token_expiry' => 'Истекает',
+ 'user_api_token_expiry_desc' => 'Установите дату истечения срока действия этого токена. После наступления даты запросы, сделанные с использованием данного токена, больше не будут работать. Если оставить это поле пустым, срок действия истечет через 100 лет.',
+ 'user_api_token_create_secret_message' => 'Сразу после создания этого токена будут сгенерированы и отображены идентификатор токена и секретный ключ. Секретный ключ будет показан только один раз, поэтому перед продолжением обязательно скопируйте значение в безопасное и надежное место.',
+ 'user_api_token' => 'API токен',
+ 'user_api_token_id' => 'Идентификатор токена',
+ 'user_api_token_id_desc' => 'Это нередактируемый системный идентификатор для этого токена, который необходимо указывать в запросах API.',
+ 'user_api_token_secret' => 'Секретный ключ',
+ 'user_api_token_secret_desc' => 'Это сгенерированный системой секретный ключ для этого токена, который необходимо будет указывать в запросах API. Он будет показан только один раз, поэтому скопируйте это значение в безопасное и надежное место.',
+ 'user_api_token_created' => 'Токен создан :timeAgo',
+ 'user_api_token_updated' => 'Токен обновлён :timeAgo',
+ 'user_api_token_delete' => 'Удалить токен',
+ 'user_api_token_delete_warning' => 'Это полностью удалит API токен с именем \':tokenName\' из системы.',
+ 'user_api_token_delete_confirm' => 'Вы уверены, что хотите удалить этот API токен?',
+
+ // Webhooks
+ 'webhooks' => 'Вебхуки',
+ 'webhooks_index_desc' => 'Webhooks - это способ посылать данные на внешние URL-адреса при возникновении определенных действий и событий в системе, которые позволяют интегрировать события с внешними платформами, такими как системы обмена сообщениями или уведомлениями.',
+ 'webhooks_x_trigger_events' => ':count событие триггера|:count событий триггера',
+ 'webhooks_create' => 'Создать вебхук',
+ 'webhooks_none_created' => 'Вебхуки еще не созданы.',
+ 'webhooks_edit' => 'Редактировать вебхук',
+ 'webhooks_save' => 'Сохранить вебхук',
+ 'webhooks_details' => 'Детали вебхука',
+ 'webhooks_details_desc' => 'Укажите удобное для пользователя название и адрес для отправки данных вебхука с помощью POST.',
+ 'webhooks_events' => 'События вебхука',
+ 'webhooks_events_desc' => 'Выберите все события, которые должны вызывать этот вебхук.',
+ 'webhooks_events_warning' => 'Имейте в виду, что эти события будут срабатывать для всех выбранных событий, даже если применяются пользовательские разрешения. Убедитесь, что использование этого вебхука не будет раскрывать конфиденциальные данные.',
+ 'webhooks_events_all' => 'Все системные события',
+ 'webhooks_name' => 'Имя вебхука',
+ 'webhooks_timeout' => 'Таймаут запроса Webhook (секунды)',
+ 'webhooks_endpoint' => 'Конечная точка вебхука',
+ 'webhooks_active' => 'Вебхук активен',
+ 'webhook_events_table_header' => 'События',
+ 'webhooks_delete' => 'Удалить вебхук',
+ 'webhooks_delete_warning' => 'Это полностью удалит этот вебхук с названием \':webhookName\' из системы.',
+ 'webhooks_delete_confirm' => 'Вы уверены, что хотите удалить этот вебхук?',
+ 'webhooks_format_example' => 'Пример вебхука',
+ 'webhooks_format_example_desc' => 'Данные вебхука отправляются как POST запрос к настроенной конечной точке в виде JSON в соответствии с форматом ниже. Свойства "related_item" и "url" необязательны и зависят от типа вызванного события.',
+ 'webhooks_status' => 'Состояние Webhook',
+ 'webhooks_last_called' => 'Последний вызов:',
+ 'webhooks_last_errored' => 'Последняя ошибка:',
+ 'webhooks_last_error_message' => 'Последнее сообщение об ошибке:',
+
+ // Licensing
+ 'licenses' => 'Лицензии',
+ 'licenses_desc' => 'Эта страница содержит сведения о лицензиях для BookStack в дополнение к проектам и библиотекам, которые используются в BookStack. Многие перечисленные проекты могут использоваться только в контексте разработки.',
+ 'licenses_bookstack' => 'Лицензия BookStack',
+ 'licenses_php' => 'Лицензии PHP библиотек',
+ 'licenses_js' => 'Лицензии JavaScript библиотек',
+ 'licenses_other' => 'Прочие лицензии',
+ 'license_details' => 'Подробности о лицензии',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/ru/validation.php b/lang/ru/validation.php
new file mode 100644
index 00000000000..ce94faa3b84
--- /dev/null
+++ b/lang/ru/validation.php
@@ -0,0 +1,123 @@
+ ':attribute должен быть принят.',
+ 'active_url' => ':attribute не является корректным URL.',
+ 'after' => ':attribute дата должна быть позже :date.',
+ 'alpha' => ':attribute может содержать только буквы.',
+ 'alpha_dash' => ':attribute может содержать только буквы, цифры и тире.',
+ 'alpha_num' => ':attribute должен содержать только буквы и цифры.',
+ 'array' => ':attribute должен быть массивом.',
+ 'backup_codes' => 'Указанный код недействителен или уже использован.',
+ 'before' => ':attribute дата должна быть до :date.',
+ 'between' => [
+ 'numeric' => ':attribute должен быть между :min и :max.',
+ 'file' => ':attribute должен быть между :min и :max килобайт.',
+ 'string' => 'длина :attribute должна быть между :min и :max символами.',
+ 'array' => ':attribute должен содержать не менее :min и не более :max элементов.',
+ ],
+ '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 должен быть корректным email адресом.',
+ 'ends_with' => ':attribute должен заканчиваться одним из следующих: :values',
+ 'file' => ':attribute должен быть указан как допустимый файл.',
+ 'filled' => ':attribute поле необходимо.',
+ 'gt' => [
+ 'numeric' => 'Значение :attribute должно быть больше чем :value.',
+ 'file' => 'Значение :attribute должно быть больше :value килобайт.',
+ 'string' => 'Значение :attribute должно быть больше :value символов.',
+ 'array' => 'Значение :attribute должно содержать больше :value элементов.',
+ ],
+ 'gte' => [
+ 'numeric' => 'Значение :attribute должно быть больше или равно :value.',
+ 'file' => 'Значение :attribute должно быть больше или равно :value килобайт.',
+ 'string' => 'Значение :attribute должно быть больше или равно :value символам.',
+ 'array' => ':attribute должен иметь :value элементов или больше.',
+ ],
+ 'exists' => 'выделенный :attribute некорректен.',
+ 'image' => ':attribute должен быть изображением.',
+ 'image_extension' => ':attribute должен быть исправным и содержать расширение картинки',
+ 'in' => 'выделенный :attribute некорректен.',
+ 'integer' => ':attribute должно быть целое число.',
+ 'ip' => ':attribute должен быть корректным IP адресом.',
+ 'ipv4' => ':attribute должен быть корректным IPv4-адресом.',
+ 'ipv6' => ':attribute должен быть корректным IPv6-адресом.',
+ 'json' => ':attribute должен быть допустимой строкой JSON.',
+ 'lt' => [
+ 'numeric' => 'Значение :attribute должно быть меньше, чем :value.',
+ 'file' => 'Значение :attribute должно быть меньше :value килобайт.',
+ 'string' => 'Значение :attribute должно быть меньше :value символов.',
+ 'array' => 'Значение :attribute должно быть меньше :value элементов.',
+ ],
+ 'lte' => [
+ 'numeric' => 'Значение :attribute должно быть меньше или равно :value.',
+ 'file' => 'Значение :attribute должно быть меньше или равно :value килобайт.',
+ 'string' => 'Значение :attribute должно быть меньше или равно :value символам.',
+ 'array' => 'Поле :attribute не должно содержать больше :value элементов.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute не может быть больше чем :max.',
+ 'file' => ':attribute не может быть больше чем :max килобайт.',
+ 'string' => ':attribute не может быть больше чем :max символов.',
+ 'array' => ':attribute не может содержать больше чем :max элементов.',
+ ],
+ 'mimes' => ':attribute должен быть файлом с типом: :values.',
+ 'min' => [
+ 'numeric' => 'Поле :attribute должно быть не менее :min.',
+ 'file' => ':attribute должен быть минимум :min килобайт.',
+ 'string' => ':attribute должен быть минимум :min символов.',
+ 'array' => ':attribute должен содержать хотя бы :min элементов.',
+ ],
+ 'not_in' => 'Выбранный :attribute некорректен.',
+ 'not_regex' => 'Формат :attribute некорректен.',
+ 'numeric' => ':attribute должен быть числом.',
+ 'regex' => 'Формат :attribute некорректен.',
+ 'required' => ':attribute обязательное поле.',
+ 'required_if' => ':attribute обязательное поле когда :other со значением :value.',
+ 'required_with' => ':attribute обязательное поле когда :values установлено.',
+ 'required_with_all' => ':attribute обязательное поле когда :values установлены.',
+ 'required_without' => ':attribute обязательное поле когда :values не установлены.',
+ 'required_without_all' => ':attribute обязательное поле когда ни одно из :values не установлены.',
+ 'same' => ':attribute и :other должны совпадать.',
+ 'safe_url' => 'Предоставленная ссылка может быть небезопасной.',
+ 'size' => [
+ 'numeric' => ':attribute должен быть :size.',
+ 'file' => ':attribute должен быть :size килобайт.',
+ 'string' => ':attribute должен быть :size символов.',
+ 'array' => ':attribute должен содержать :size элементов.',
+ ],
+ 'string' => ':attribute должен быть строкой.',
+ 'timezone' => ':attribute должен быть корректным часовым поясом.',
+ 'totp' => 'Указанный код недействителен или истек.',
+ 'unique' => ':attribute уже есть.',
+ 'url' => 'Формат :attribute некорректен.',
+ 'uploaded' => 'Не удалось загрузить файл. Сервер не может принимать файлы такого размера.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Требуется подтверждение пароля',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/sk/activities.php b/lang/sk/activities.php
new file mode 100644
index 00000000000..65542fbe2a1
--- /dev/null
+++ b/lang/sk/activities.php
@@ -0,0 +1,140 @@
+ 'vytvoril(a) stránku',
+ 'page_create_notification' => 'Stránka úspešne vytvorená',
+ 'page_update' => 'aktualizoval(a) stránku',
+ 'page_update_notification' => 'Stránka úspešne aktualizovaná',
+ 'page_delete' => 'odstránil(a) stránku',
+ 'page_delete_notification' => 'Stránka úspešne odstránená',
+ 'page_restore' => 'obnovil(a) stránku',
+ 'page_restore_notification' => 'Stránka úspešne obnovená',
+ 'page_move' => 'presunul(a) stránku',
+ 'page_move_notification' => 'Stránka bola úspešne presunutá',
+
+ // Chapters
+ 'chapter_create' => 'vytvoril(a) kapitolu',
+ 'chapter_create_notification' => 'Kapitola úspešne vytvorená',
+ 'chapter_update' => 'aktualizoval(a) kapitolu',
+ 'chapter_update_notification' => 'Kapitola úspešne aktualizovaná',
+ 'chapter_delete' => 'odstránil(a) kapitolu',
+ 'chapter_delete_notification' => 'Kapitola úspešne odstránená',
+ 'chapter_move' => 'presunul(a) kapitolu',
+ 'chapter_move_notification' => 'Kapitola bola úspešne presunutá',
+
+ // Books
+ 'book_create' => 'vytvoril(a) knihu',
+ 'book_create_notification' => 'Kniha úspešne vytvorená',
+ 'book_create_from_chapter' => 'kapitola konvertovaná na knihu',
+ 'book_create_from_chapter_notification' => 'Kapitola úspešne konvertovaná na knihu',
+ 'book_update' => 'aktualizoval(a) knihu',
+ 'book_update_notification' => 'Kniha úspešne aktualizovaná',
+ 'book_delete' => 'odstránil(a) knihu',
+ 'book_delete_notification' => 'Kniha úspešne odstránená',
+ 'book_sort' => 'zoradil(a) knihu',
+ 'book_sort_notification' => 'Kniha úspešne znovu zoradená',
+
+ // Bookshelves
+ 'bookshelf_create' => 'vytvoril(a) policu',
+ 'bookshelf_create_notification' => 'Polica úspešne vytvorená',
+ 'bookshelf_create_from_book' => 'kniha bola prevedená na policu',
+ 'bookshelf_create_from_book_notification' => 'Kniha úspešne konvertovaná na poličku',
+ 'bookshelf_update' => 'aktualizoval(a) policu',
+ 'bookshelf_update_notification' => 'Polica bola úspešne aktualizovaná',
+ 'bookshelf_delete' => 'odstránená polica',
+ 'bookshelf_delete_notification' => 'Polica bola úspešne odstránená',
+
+ // Revisions
+ 'revision_restore' => 'restored revision',
+ 'revision_delete' => 'odstránil(a) revíziu',
+ 'revision_delete_notification' => 'Revízia úspešne odstránená',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" bol pridaný medzi obľúbené',
+ 'favourite_remove_notification' => '":name" bol odstránený z obľúbených',
+
+ // Watching
+ 'watch_update_level_notification' => 'Watch preferences successfully updated',
+
+ // Auth
+ 'auth_login' => 'sa prihlásil(a)',
+ 'auth_register' => 'registered as new user',
+ 'auth_password_reset_request' => 'requested user password reset',
+ 'auth_password_reset_update' => 'reset user password',
+ 'mfa_setup_method' => 'configured MFA method',
+ 'mfa_setup_method_notification' => 'Viacúrovňový spôsob overenia úspešne nastavený',
+ 'mfa_remove_method' => 'removed MFA method',
+ 'mfa_remove_method_notification' => 'Viacúrovňový spôsob overenia úspešne odstránený',
+
+ // Settings
+ 'settings_update' => 'aktualizované nastavenia',
+ 'settings_update_notification' => 'Nastavenia boli úspešne aktualizované',
+ 'maintenance_action_run' => 'ran maintenance action',
+
+ // Webhooks
+ 'webhook_create' => 'vytvoril(a) si webhook',
+ 'webhook_create_notification' => 'Webhook úspešne vytvorený',
+ 'webhook_update' => 'aktualizoval(a) si webhook',
+ 'webhook_update_notification' => 'Webhook úspešne aktualizovaný',
+ 'webhook_delete' => 'odstránil(a) si webhook',
+ 'webhook_delete_notification' => 'Webhook úspešne odstránený',
+
+ // Imports
+ 'import_create' => 'created import',
+ 'import_create_notification' => 'Import successfully uploaded',
+ 'import_run' => 'updated import',
+ 'import_run_notification' => 'Content successfully imported',
+ 'import_delete' => 'deleted import',
+ 'import_delete_notification' => 'Import successfully deleted',
+
+ // Users
+ 'user_create' => 'užívateľ vytvorený',
+ 'user_create_notification' => 'User successfully created',
+ 'user_update' => 'používateľ aktualizovaný',
+ 'user_update_notification' => 'Používateľ úspešne upravený',
+ 'user_delete' => 'odstránený používateľ',
+ 'user_delete_notification' => 'Používateľ úspešne zmazaný',
+
+ // API Tokens
+ 'api_token_create' => 'created API token',
+ 'api_token_create_notification' => 'API token successfully created',
+ 'api_token_update' => 'updated API token',
+ 'api_token_update_notification' => 'API token successfully updated',
+ 'api_token_delete' => 'deleted API token',
+ 'api_token_delete_notification' => 'API token successfully deleted',
+
+ // Roles
+ 'role_create' => 'created role',
+ 'role_create_notification' => 'Rola úspešne vytvorená',
+ 'role_update' => 'updated role',
+ 'role_update_notification' => 'Rola úspešne aktualizovaná',
+ 'role_delete' => 'odstrániť rolu',
+ 'role_delete_notification' => 'Rola úspešne zmazaná',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'emptied recycle bin',
+ 'recycle_bin_restore' => 'restored from recycle bin',
+ 'recycle_bin_destroy' => 'removed from recycle bin',
+
+ // Comments
+ 'commented_on' => 'komentoval(a)',
+ 'comment_create' => 'pridal(a) komentár',
+ 'comment_update' => 'aktualizoval(a) komentár',
+ 'comment_delete' => 'odstrániť komentár',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'aktualizované oprávnenia',
+];
diff --git a/lang/sk/auth.php b/lang/sk/auth.php
new file mode 100644
index 00000000000..11ccdc8893f
--- /dev/null
+++ b/lang/sk/auth.php
@@ -0,0 +1,117 @@
+ 'Tieto údaje sa nezhodujú s našimi záznamami.',
+ 'throttle' => 'Priveľa pokusov o prihlásenie. Skúste znova o :seconds sekúnd.',
+
+ // Login & Register
+ 'sign_up' => 'Registrácia',
+ 'log_in' => 'Prihlásenie',
+ 'log_in_with' => 'Prihlásiť sa cez :socialDriver',
+ 'sign_up_with' => 'Registrovať sa cez :socialDriver',
+ 'logout' => 'Odhlásenie',
+
+ 'name' => 'Meno',
+ 'username' => 'Používateľské meno',
+ 'email' => 'E-mail',
+ 'password' => 'Heslo',
+ 'password_confirm' => 'Potvrdiť heslo',
+ 'password_hint' => 'Musí obsahovať aspoň 8 znakov',
+ 'forgot_password' => 'Zabudli ste heslo?',
+ 'remember_me' => 'Zapamätať si ma',
+ 'ldap_email_hint' => 'Zadajte prosím e-mail, ktorý sa má použiť pre tento účet.',
+ 'create_account' => 'Vytvoriť účet',
+ 'already_have_account' => 'Už máte svoj účet?',
+ 'dont_have_account' => 'Nemáte účet?',
+ 'social_login' => 'Sociálne prihlásenie',
+ 'social_registration' => 'Sociálna registrácia',
+ 'social_registration_text' => 'Registrácia a prihlásenie pomocou inej služby.',
+
+ 'register_thanks' => 'Ďakujeme za registráciu!',
+ 'register_confirm' => 'Prosím, skontrolujte svoj e-mail a kliknite na potvrdzujúce tlačidlo pre prístup k :appName.',
+ 'registrations_disabled' => 'Registrácie sú momentálne zablokované',
+ 'registration_email_domain_invalid' => 'Táto e-mailová doména nemá prístup k tejto aplikácii',
+ 'register_success' => 'Ďakujeme za registráciu! Teraz ste registrovaný a prihlásený.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Pokus o prihlásenie',
+ 'auto_init_starting_desc' => 'Kontaktujeme váš overovací systém, aby sme spustili proces prihlásenia. Ak po 5 sekundách nedôjde k žiadnemu pokroku, môžete skúsiť kliknúť na odkaz nižšie.',
+ 'auto_init_start_link' => 'Pokračujte v autentifikácii',
+
+ // Password Reset
+ 'reset_password' => 'Resetovanie hesla',
+ 'reset_password_send_instructions' => 'Nižšie zadajte svoj e-mail, na ktorý Vám zašleme odkaz pre resetovanie hesla.',
+ 'reset_password_send_button' => 'Poslať odkaz na resetovanie hesla',
+ 'reset_password_sent' => 'Odkaz na resetovanie hesla bude odoslaný na :email, ak sa táto e-mailová adresa nachádza v systéme.',
+ 'reset_password_success' => 'Vaše heslo bolo úspešne resetované.',
+ 'email_reset_subject' => 'Resetovanie Vášho hesla do :appName',
+ 'email_reset_text' => 'Tento e-mail ste obdržali, pretože sme dostali požiadavku na resetovanie hesla pre Váš účet.',
+ 'email_reset_not_requested' => 'Ak ste nepožiadali o resetovanie hesla, nemusíte robiť nič.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Potvrdiť e-mail na :appName',
+ 'email_confirm_greeting' => 'Ďakujeme, že ste sa pridali k :appName!',
+ 'email_confirm_text' => 'Prosím, potvrďte Vašu e-mailovú adresu kliknutím na tlačidlo nižšie:',
+ 'email_confirm_action' => 'Potvrdiť e-mail',
+ 'email_confirm_send_error' => 'Je požadované overenie e-mailu, ale systém nemohol e-mail odoslať. Kontaktujte administrátora, aby ste sa uistili, že je e-mail nastavený správne.',
+ 'email_confirm_success' => 'Váš email bol potvrdený! Teraz by ste sa mali vedieť prihlásiť pomocou tejto e-mailovej adresy.',
+ 'email_confirm_resent' => 'Potvrdzujúci e-mail bol poslaný znovu, skontrolujte prosím svoju e-mailovú schránku.',
+ 'email_confirm_thanks' => 'Ďakujeme za potvrdenie!',
+ 'email_confirm_thanks_desc' => 'Počkajte chvíľu, kým sa spracuje vaše potvrdenie. Ak nebudete presmerovaní do 3 sekúnd, pokračujte kliknutím na odkaz „Pokračovať“ nižšie.',
+
+ 'email_not_confirmed' => 'E-mailová adresa nebola overená',
+ 'email_not_confirmed_text' => 'Vaša e-mailová adresa nebola zatiaľ overená.',
+ 'email_not_confirmed_click_link' => 'Prosím, kliknite na odkaz v e-maili, ktorý bol poslaný krátko po Vašej registrácii.',
+ 'email_not_confirmed_resend' => 'Ak nemôžete nájsť e-mail, môžete znova odoslať overovací e-mail odoslaním doleuvedeného formulára.',
+ 'email_not_confirmed_resend_button' => 'Znova odoslať overovací e-mail',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Dostali ste pozvánku na pripojenie sa k aplikácii :appName!',
+ 'user_invite_email_greeting' => 'Účet pre :appName bol pre vás vytvorený.',
+ 'user_invite_email_text' => 'Kliknutím na tlačidlo nižšie nastavíte heslo k účtu a získate prístup:',
+ 'user_invite_email_action' => 'Nastaviť heslo k účtu',
+ 'user_invite_page_welcome' => 'Vitajte v :appName!',
+ 'user_invite_page_text' => 'Ak chcete dokončiť svoj účet a získať prístup, musíte nastaviť heslo, ktoré sa použije na prihlásenie do aplikácie :appName pri budúcich návštevách.',
+ 'user_invite_page_confirm_button' => 'Potvrdiť heslo',
+ 'user_invite_success_login' => 'Heslo je nastavené, teraz by ste sa mali vedieť prihlásiť pomocou svojho nastaveného hesla na prístup k :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Nastaviť viacúrovňové prihlasovanie',
+ 'mfa_setup_desc' => 'Pre vyššiu úroveň bezpečnosti si nastavte viacúrovňové prihlasovanie.',
+ 'mfa_setup_configured' => 'Už nastavené',
+ 'mfa_setup_reconfigure' => 'Znovunastavenie',
+ 'mfa_setup_remove_confirmation' => 'Ste si istý, že chcete odstrániť tento spôsob viacúrovňového overenia?',
+ 'mfa_setup_action' => 'Nastaveine',
+ 'mfa_backup_codes_usage_limit_warning' => 'Ostáva vám menej ako 5 záložných kódov. Vygenerujte a uložte si novú súpravu skôr, ako sa vám minú kódy, aby ste sa vyhli vymknutiu z vášho účtu.',
+ 'mfa_option_totp_title' => 'Mobilná aplikácia',
+ 'mfa_option_totp_desc' => 'Pre používanie viacúrovňového prihlasovania budete potrebovať mobilnú aplikáciu, ktorá podporuje TOPS ako napríklad Google Authenticator, Authy alebo Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Záložné kódy',
+ 'mfa_option_backup_codes_desc' => 'Generates a set of one-time-use backup codes which you\'ll enter on login to verify your identity. Make sure to store these in a safe & secure place.',
+ 'mfa_gen_confirm_and_enable' => 'Potvrdiť a zapnúť',
+ 'mfa_gen_backup_codes_title' => 'Nastavenie záložných kódov',
+ 'mfa_gen_backup_codes_desc' => 'Uložte si tieto kódy na bezpečné miesto. Jeden z kódov budete môcť použiť ako druhý faktor overenia identiy na prihlásenie sa.',
+ 'mfa_gen_backup_codes_download' => 'Stiahnuť kódy',
+ 'mfa_gen_backup_codes_usage_warning' => 'Každý kód môže byť použitý len jeden krát',
+ 'mfa_gen_totp_title' => 'Nastavenie mobilnej aplikácie',
+ 'mfa_gen_totp_desc' => 'Pre používanie viacúrovňového prihlasovania budete potrebovať mobilnú aplikáciu, ktorá podporuje TOPS ako napríklad Google Authenticator, Authy alebo Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Naskenujte 1R k\'d pomocou vašej mobilnej aplikácie.',
+ 'mfa_gen_totp_verify_setup' => 'Overiť nastavenie',
+ 'mfa_gen_totp_verify_setup_desc' => 'Overte, či všetko funguje zadaním kódu vygenerovaného vo vašej autentifikačnej aplikácii do vstupného poľa nižšie:',
+ 'mfa_gen_totp_provide_code_here' => 'Sem vložte kód vygenerovaný vašou mobilnou aplikáciou',
+ 'mfa_verify_access' => 'Overiť prístup',
+ 'mfa_verify_access_desc' => 'Váš používateľský účet vyžaduje, aby ste pred udelením prístupu potvrdili svoju identitu prostredníctvom ďalšej úrovne overenia. Pokračujte overením pomocou jednej z vašich nakonfigurovaných metód.',
+ 'mfa_verify_no_methods' => 'Žiadny spôsob nebol nastavený',
+ 'mfa_verify_no_methods_desc' => 'Pre váš účet sa nenašli žiadne metódy viacfaktorovej autentifikácie. Pred získaním prístupu budete musieť nastaviť aspoň jednu metódu.',
+ 'mfa_verify_use_totp' => 'Overiť pomocou mobilnej aplikácie',
+ 'mfa_verify_use_backup_codes' => 'Overiť pomocou záložného kódu',
+ 'mfa_verify_backup_code' => 'Záložný kód',
+ 'mfa_verify_backup_code_desc' => 'Zadajte jeden zo zostávajúcich záložných kódov:',
+ 'mfa_verify_backup_code_enter_here' => 'Zadajte záložný kód',
+ 'mfa_verify_totp_desc' => 'Zadajte kód vygenerovaný vašou mobilnou aplikáciou:',
+ 'mfa_setup_login_notification' => 'Viacfaktorová metóda je nakonfigurovaná. Teraz sa znova prihláste pomocou nakonfigurovanej metódy.',
+];
diff --git a/lang/sk/common.php b/lang/sk/common.php
new file mode 100644
index 00000000000..6f116006b12
--- /dev/null
+++ b/lang/sk/common.php
@@ -0,0 +1,115 @@
+ 'Zrušiť',
+ 'close' => 'Close',
+ 'confirm' => 'Potvrdiť',
+ 'back' => 'Späť',
+ 'save' => 'Uložiť',
+ 'continue' => 'Pokračovať',
+ 'select' => 'Vybrať',
+ 'toggle_all' => 'Prepnúť všetko',
+ 'more' => 'Viac',
+
+ // Form Labels
+ 'name' => 'Meno',
+ 'description' => 'Popis',
+ 'role' => 'Rola',
+ 'cover_image' => 'Obal knihy',
+ 'cover_image_description' => 'This image should be approximately 440x250px although it will be flexibly scaled & cropped to fit the user interface in different scenarios as required, so actual dimensions for display will differ.',
+
+ // Actions
+ 'actions' => 'Akcie',
+ 'view' => 'Zobraziť',
+ 'view_all' => 'Zobraziť všetko',
+ 'new' => 'Nový',
+ 'create' => 'Vytvoriť',
+ 'update' => 'Aktualizovať',
+ 'edit' => 'Editovať',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Zoradiť',
+ 'move' => 'Presunúť',
+ 'copy' => 'Kopírovať',
+ 'reply' => 'Odpovedať',
+ 'delete' => 'Zmazať',
+ 'delete_confirm' => 'Potvrdiť zmazanie',
+ 'search' => 'Hľadať',
+ 'search_clear' => 'Vyčistiť hľadanie',
+ 'reset' => 'Resetovať',
+ 'remove' => 'Odstrániť',
+ 'add' => 'Pridať',
+ 'configure' => 'Konfigurácia',
+ 'manage' => 'Manage',
+ 'fullscreen' => 'Celá obrazovka',
+ 'favourite' => 'Pridať do obľúbených',
+ 'unfavourite' => 'Odstrániť z obľúbených',
+ 'next' => 'Ďalej',
+ 'previous' => 'Späť',
+ 'filter_active' => 'Aktívny filter:',
+ 'filter_clear' => 'Bez filtrovania',
+ 'download' => 'Stiahnuť',
+ 'open_in_tab' => 'Otvoriť na novej karte',
+ 'open' => 'Open',
+
+ // Sort Options
+ 'sort_options' => 'Možnosti triedenia',
+ 'sort_direction_toggle' => 'Zoradiť smerový prepínač',
+ 'sort_ascending' => 'Zoradiť vzostupne',
+ 'sort_descending' => 'Zoradiť zostupne',
+ 'sort_name' => 'Meno',
+ 'sort_default' => 'Východzie',
+ 'sort_created_at' => 'Dátum vytvorenia',
+ 'sort_updated_at' => 'Aktualizované dňa',
+
+ // Misc
+ 'deleted_user' => 'Odstránený používateľ',
+ 'no_activity' => 'Žiadna aktivita na zobrazenie',
+ 'no_items' => 'Žiadne položky nie sú dostupné',
+ 'back_to_top' => 'Späť nahor',
+ 'skip_to_main_content' => 'Preskočiť na hlavný obsah',
+ 'toggle_details' => 'Prepnúť detaily',
+ 'toggle_thumbnails' => 'Prepnúť náhľady',
+ 'details' => 'Podrobnosti',
+ 'grid_view' => 'Zobrazenie v mriežke',
+ 'list_view' => 'Zobraziť ako zoznam',
+ 'default' => 'Predvolené',
+ 'breadcrumb' => 'Breadcrumb',
+ 'status' => 'Stav',
+ 'status_active' => 'Aktívny',
+ 'status_inactive' => 'Neaktívny',
+ 'never' => 'Nikdy',
+ 'none' => 'Žiadne',
+
+ // Header
+ 'homepage' => 'Domovská stránka',
+ 'header_menu_expand' => 'Rozbaliť menu v záhlaví',
+ 'profile_menu' => 'Menu profilu',
+ 'view_profile' => 'Zobraziť profil',
+ 'edit_profile' => 'Upraviť profil',
+ 'dark_mode' => 'Tmavý režim',
+ 'light_mode' => 'Svetlý režim',
+ 'global_search' => 'Globálne vyhľadávanie',
+
+ // Layout tabs
+ 'tab_info' => 'Informácie',
+ 'tab_info_label' => 'Tab: Zobraziť vedľajšie informácie',
+ 'tab_content' => 'Obsah',
+ 'tab_content_label' => 'Tab: Zobraziť hlavné informácie',
+
+ // Email Content
+ 'email_action_help' => 'Ak máte problém klinkúť na tlačidlo ":actionText", skopírujte a vložte URL uvedenú nižšie do Vášho prehliadača:',
+ 'email_rights' => 'Všetky práva vyhradené',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Zásady ochrany osobných údajov',
+ 'terms_of_service' => 'Podmienky používania',
+
+ // OpenSearch
+ 'opensearch_description' => 'Search :appName',
+];
diff --git a/lang/sk/components.php b/lang/sk/components.php
new file mode 100644
index 00000000000..b9b29d71ccb
--- /dev/null
+++ b/lang/sk/components.php
@@ -0,0 +1,46 @@
+ 'Vybrať obrázok',
+ 'image_list' => 'Image List',
+ 'image_details' => 'Image Details',
+ 'image_upload' => 'Nahrať obrázok',
+ 'image_intro' => 'Tu môžete vybrať a spravovať obrázky, ktoré boli predtým nahrané do systému.',
+ 'image_intro_upload' => 'Nahrajte nový obrázok pretiahnutím súboru obrázka do tohto okna alebo pomocou vyššie uvedeného tlačidla „Nahrať obrázok“.',
+ 'image_all' => 'Všetko',
+ 'image_all_title' => 'Zobraziť všetky obrázky',
+ 'image_book_title' => 'Zobraziť obrázky nahrané do tejto knihy',
+ 'image_page_title' => 'Zobraziť obrázky nahrané do tejto stránky',
+ 'image_search_hint' => 'Hľadať obrázok podľa názvu',
+ 'image_uploaded' => 'Nahrané :uploadedDate',
+ 'image_uploaded_by' => 'Uploaded by :userName',
+ 'image_uploaded_to' => 'Uploaded to :pageLink',
+ 'image_updated' => 'Updated :updateDate',
+ 'image_load_more' => 'Načítať viac',
+ 'image_image_name' => 'Názov obrázka',
+ 'image_delete_used' => 'Tento obrázok je použitý na stránkach uvedených nižšie.',
+ 'image_delete_confirm_text' => 'Naozaj chcete vymazať tento obrázok?',
+ 'image_select_image' => 'Vybrať obrázok',
+ 'image_dropzone' => 'Presuňte obrázky sem alebo kliknite sem pre nahranie',
+ 'image_dropzone_drop' => 'Sem presuňte obrázky, ktoré chcete nahrať',
+ 'images_deleted' => 'Obrázky zmazané',
+ 'image_preview' => 'Náhľad obrázka',
+ 'image_upload_success' => 'Obrázok úspešne nahraný',
+ 'image_update_success' => 'Detaily obrázka úspešne aktualizované',
+ 'image_delete_success' => 'Obrázok úspešne zmazaný',
+ 'image_replace' => 'Replace Image',
+ 'image_replace_success' => 'Image file successfully updated',
+ 'image_rebuild_thumbs' => 'Regenerate Size Variations',
+ 'image_rebuild_thumbs_success' => 'Image size variations successfully rebuilt!',
+
+ // Code Editor
+ 'code_editor' => 'Upraviť kód',
+ 'code_language' => 'Kód jazyka',
+ 'code_content' => 'Obsah kódu',
+ 'code_session_history' => 'História relácií',
+ 'code_save' => 'Ulož kód',
+];
diff --git a/lang/sk/editor.php b/lang/sk/editor.php
new file mode 100644
index 00000000000..7d1781ef457
--- /dev/null
+++ b/lang/sk/editor.php
@@ -0,0 +1,182 @@
+ 'Všeobecné',
+ 'advanced' => 'Pokročilé',
+ 'none' => 'Žiadne',
+ 'cancel' => 'Zrušiť',
+ 'save' => 'Uložiť',
+ 'close' => 'Zavrieť',
+ 'apply' => 'Apply',
+ 'undo' => 'Vrátiť späť',
+ 'redo' => 'Obnoviť',
+ 'left' => 'Vľavo',
+ 'center' => 'Na stred',
+ 'right' => 'Vpravo',
+ 'top' => 'Nahor',
+ 'middle' => 'Uprostred',
+ 'bottom' => 'Dole',
+ 'width' => 'Šírka',
+ 'height' => 'Výška',
+ 'More' => 'Viac',
+ 'select' => 'Vybrať...',
+
+ // Toolbar
+ 'formats' => 'Formáty',
+ 'header_large' => 'Veľká hlavička',
+ 'header_medium' => 'Stredná hlavička',
+ 'header_small' => 'Malá hlavička',
+ 'header_tiny' => 'Drobná hlavička',
+ 'paragraph' => 'Odstavec',
+ 'blockquote' => 'Citácia',
+ 'inline_code' => 'Vložený kód',
+ 'callouts' => 'Hlášky',
+ 'callout_information' => 'Informácie',
+ 'callout_success' => 'Úspech',
+ 'callout_warning' => 'Upozornenie',
+ 'callout_danger' => 'Nebezpečné',
+ 'bold' => 'Tučné',
+ 'italic' => 'Kurzíva',
+ 'underline' => 'Podčiarknutie',
+ 'strikethrough' => 'Prečiarknutie',
+ 'superscript' => 'Horný index',
+ 'subscript' => 'Dolný index',
+ 'text_color' => 'Farba textu',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Vlastná farba',
+ 'remove_color' => 'Odstrániť farbu',
+ 'background_color' => 'Farba pozadia',
+ 'align_left' => 'Zarovnať vľavo',
+ 'align_center' => 'Zarovnať na stred',
+ 'align_right' => 'Zarovnať vpravo',
+ 'align_justify' => 'Do bloku',
+ 'list_bullet' => 'Bodový zoznam',
+ 'list_numbered' => 'Číslovaný zoznam',
+ 'list_task' => 'Zoznam úloh',
+ 'indent_increase' => 'Zvýšiť odsadenie',
+ 'indent_decrease' => 'Zmenšiť odsadenie',
+ 'table' => 'Tabuľka',
+ 'insert_image' => 'Vložiť obrázok',
+ 'insert_image_title' => 'Vložiť/Upraviť obrázok',
+ 'insert_link' => 'Vložiť/Upraviť odkaz',
+ 'insert_link_title' => 'Vložiť/Upraviť link',
+ 'insert_horizontal_line' => 'Vložiť horizontálnu čiaru',
+ 'insert_code_block' => 'Vložte blok kódu',
+ 'edit_code_block' => 'Upraviť blok kódu',
+ 'insert_drawing' => 'Vložiť/upraviť výkres',
+ 'drawing_manager' => 'Manažér kreslenia',
+ 'insert_media' => 'Vložiť/Upraviť média',
+ 'insert_media_title' => 'Vložiť/Upraviť média',
+ 'clear_formatting' => 'Vymazať formátovanie',
+ 'source_code' => 'Zdrojový kód',
+ 'source_code_title' => 'Zdrojový kód',
+ 'fullscreen' => 'Celá obrazovka',
+ 'image_options' => 'Možnosti obrázka',
+
+ // Tables
+ 'table_properties' => 'Vlastnosti tabuľky',
+ 'table_properties_title' => 'Vlastnosti tabuľky',
+ 'delete_table' => 'Vymazať tabuľku',
+ 'table_clear_formatting' => 'Clear table formatting',
+ 'resize_to_contents' => 'Resize to contents',
+ 'row_header' => 'Row header',
+ 'insert_row_before' => 'Vložiť riadok pred',
+ 'insert_row_after' => 'Vložiť riadok za',
+ 'delete_row' => 'Vymazať riadok',
+ 'insert_column_before' => 'Vložiť stĺpec pred',
+ 'insert_column_after' => 'Vložiť stĺpec za',
+ 'delete_column' => 'Vymazať stĺpec',
+ 'table_cell' => 'Bunka',
+ 'table_row' => 'Riadok',
+ 'table_column' => 'Stĺpec',
+ 'cell_properties' => 'Vlastnosti bunky',
+ 'cell_properties_title' => 'Vlastnosti bunky',
+ 'cell_type' => 'Typ bunky',
+ 'cell_type_cell' => 'Bunka',
+ 'cell_scope' => 'Rozsah',
+ 'cell_type_header' => 'Bunka hlavičky',
+ 'merge_cells' => 'Zlúčiť bunky',
+ 'split_cell' => 'Rozdeliť bunku',
+ 'table_row_group' => 'Skupina riadkov',
+ 'table_column_group' => 'Skupina stĺpcov',
+ 'horizontal_align' => 'Horizontálne zarovnanie',
+ 'vertical_align' => 'Vertikálne zarovnanie',
+ 'border_width' => 'Šírka orámovania',
+ 'border_style' => 'Štýl orámovania',
+ 'border_color' => 'Farba orámovania',
+ 'row_properties' => 'Vlastnosti riadku',
+ 'row_properties_title' => 'Vlastnosti riadku',
+ 'cut_row' => 'Vystrihnúť riadok',
+ 'copy_row' => 'Kopírovať riadok',
+ 'paste_row_before' => 'Pridať riadok pred',
+ 'paste_row_after' => 'Pridať riadok za',
+ 'row_type' => 'Typ riadku',
+ 'row_type_header' => 'Hlavička',
+ 'row_type_body' => 'Telo',
+ 'row_type_footer' => 'Päta',
+ 'alignment' => 'Zarovnanie',
+ 'cut_column' => 'Vystrihnúť stĺpec',
+ 'copy_column' => 'Kopírovať stĺpec',
+ 'paste_column_before' => 'Pridať stĺpec pred',
+ 'paste_column_after' => 'Pridať stĺpec po',
+ 'cell_padding' => 'Cell Rozostup',
+ 'cell_spacing' => 'Cell Rozstup',
+ 'caption' => 'Titulok',
+ 'show_caption' => 'Zobraziť Titulok',
+ 'constrain' => 'Obmedziť rozmery',
+ 'cell_border_solid' => 'Plný',
+ 'cell_border_dotted' => 'Bodkovaný',
+ 'cell_border_dashed' => 'Prerušované',
+ 'cell_border_double' => 'Dvojité',
+ 'cell_border_groove' => 'Drážka',
+ 'cell_border_ridge' => 'Hrebeň',
+ 'cell_border_inset' => 'Príloha',
+ 'cell_border_outset' => 'Počiatok',
+ 'cell_border_none' => 'Žiadne',
+ 'cell_border_hidden' => 'Skryté',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Zdroj',
+ 'alt_desc' => 'Alternatívny popis',
+ 'embed' => 'Vložka',
+ 'paste_embed' => 'Vložte svoj kód na vloženie nižšie:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Text na zobrazenie',
+ 'title' => 'Názov',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Otvoriť odkaz',
+ 'open_link_in' => 'Otvoriť odkaz v...',
+ 'open_link_current' => 'Iba aktuálne okno',
+ 'open_link_new' => 'Nové okno',
+ 'remove_link' => 'Odstrániť odkaz',
+ 'insert_collapsible' => 'Vložte skladací blok',
+ 'collapsible_unwrap' => 'Rozbaliť',
+ 'edit_label' => 'Upraviť menovku',
+ 'toggle_open_closed' => 'Prepínač otvorené/zatvorené',
+ 'collapsible_edit' => 'Upraviť skladací blok',
+ 'toggle_label' => 'Prepnutie menovky',
+
+ // About view
+ 'about' => 'O editore',
+ 'about_title' => 'O WYSIWYG Editore',
+ 'editor_license' => 'Licencia editora a autorské práva',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'Tento editor je vytvorený pomocou :tinyLink, ktorý je poskytovaný pod licenciou MIT.',
+ 'editor_tiny_license_link' => 'Podrobnosti o autorských právach a licenciách TinyMCE nájdete tu.',
+ 'save_continue' => 'Uložiť a pokračovať',
+ 'callouts_cycle' => '(Podržte stlačené, aby ste prepínali medzi typmi)',
+ 'link_selector' => 'Prejsť na obsah',
+ 'shortcuts' => 'Skratky',
+ 'shortcut' => 'Skratka',
+ 'shortcuts_intro' => 'V editore sú k dispozícii nasledujúce skratky:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Popis',
+];
diff --git a/lang/sk/entities.php b/lang/sk/entities.php
new file mode 100644
index 00000000000..eb52545357c
--- /dev/null
+++ b/lang/sk/entities.php
@@ -0,0 +1,476 @@
+ 'Nedávno vytvorené',
+ 'recently_created_pages' => 'Nedávno vytvorené stránky',
+ 'recently_updated_pages' => 'Nedávno aktualizované stránky',
+ 'recently_created_chapters' => 'Nedávno vytvorené kapitoly',
+ 'recently_created_books' => 'Nedávno vytvorené knihy',
+ 'recently_created_shelves' => 'Nedávno vytvorené knižnice',
+ 'recently_update' => 'Nedávno aktualizované',
+ 'recently_viewed' => 'Nedávno zobrazené',
+ 'recent_activity' => 'Nedávna aktivita',
+ 'create_now' => 'Vytvoriť teraz',
+ 'revisions' => 'Revízie',
+ 'meta_revision' => 'Upravené vydanie #:revisionCount',
+ 'meta_created' => 'Vytvorené :timeLength',
+ 'meta_created_name' => 'Vytvorené :timeLength používateľom :user',
+ 'meta_updated' => 'Aktualizované :timeLength',
+ 'meta_updated_name' => 'Aktualizované :timeLength používateľom :user',
+ 'meta_owned_name' => 'Vlastník :user',
+ 'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
+ 'entity_select' => 'Entita vybraná',
+ 'entity_select_lack_permission' => 'Na výber tejto položky nemáte potrebné povolenia',
+ 'images' => 'Obrázky',
+ 'my_recent_drafts' => 'Moje nedávne koncepty',
+ 'my_recently_viewed' => 'Nedávno mnou zobrazené',
+ 'my_most_viewed_favourites' => 'Moje najčastejšie zobrazené obľubené',
+ 'my_favourites' => 'Moje obľúbené',
+ 'no_pages_viewed' => 'Nepozreli ste si žiadne stránky',
+ 'no_pages_recently_created' => 'Žiadne stránky neboli nedávno vytvorené',
+ 'no_pages_recently_updated' => 'Žiadne stránky neboli nedávno aktualizované',
+ 'export' => 'Exportovať',
+ 'export_html' => 'Obsahovaný webový súbor',
+ 'export_pdf' => 'PDF súbor',
+ 'export_text' => 'Súbor s čistým textom',
+ 'export_md' => 'Súbor Markdown',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Oprávnenia',
+ 'permissions_desc' => 'Tu nastavte povolenia na prepísanie predvolených povolení poskytnutých rolami používateľov.',
+ 'permissions_book_cascade' => 'Povolenia nastavené pre knihy sa automaticky prenesú do podriadených kapitol a strán, pokiaľ nemajú definované vlastné povolenia.',
+ 'permissions_chapter_cascade' => 'Povolenia nastavené pre kapitoly sa automaticky prenesú na podradené stránky, pokiaľ nemajú definované vlastné povolenia.',
+ 'permissions_save' => 'Uložiť oprávnenia',
+ 'permissions_owner' => 'Vlastník',
+ 'permissions_role_everyone_else' => 'Všetci ostatní',
+ 'permissions_role_everyone_else_desc' => 'Nastavte povolenia pre všetky roly, ktoré nie sú špecificky prepísané.',
+ 'permissions_role_override' => 'Prepísať povolenia pre rolu',
+ 'permissions_inherit_defaults' => 'Zdediť predvolené hodnoty',
+
+ // Search
+ 'search_results' => 'Výsledky hľadania',
+ 'search_total_results_found' => ':count výsledok found|:počet nájdených výsledkov',
+ 'search_clear' => 'Vyčistiť hľadanie',
+ 'search_no_pages' => 'Žiadne stránky nevyhovujú tomuto hľadaniu',
+ 'search_for_term' => 'Hľadať :term',
+ 'search_more' => 'Načítať ďalšie výsledky',
+ 'search_advanced' => 'Rozšírené vyhľadávanie',
+ 'search_terms' => 'Hľadané výrazy',
+ 'search_content_type' => 'Typ obsahu',
+ 'search_exact_matches' => 'Presná zhoda',
+ 'search_tags' => 'Vyhľadávanie značiek',
+ 'search_options' => 'Možnosti',
+ 'search_viewed_by_me' => 'Videné mnou',
+ 'search_not_viewed_by_me' => 'Nevidené mnou',
+ 'search_permissions_set' => 'Oprávnenia',
+ 'search_created_by_me' => 'Vytvorené mnou',
+ 'search_updated_by_me' => 'Aktualizované mnou',
+ 'search_owned_by_me' => 'Patriace mne',
+ 'search_date_options' => 'Možnosti dátumu',
+ 'search_updated_before' => 'Aktualizované pred',
+ 'search_updated_after' => 'Aktualizované po',
+ 'search_created_before' => 'Vytvorené pred',
+ 'search_created_after' => 'Vytvorené po',
+ 'search_set_date' => 'Nastaviť Dátum',
+ 'search_update' => 'Aktualizujte vyhľadávanie',
+
+ // Shelves
+ 'shelf' => 'Polica',
+ 'shelves' => 'Police',
+ 'x_shelves' => ':count Shelf|:count Police',
+ 'shelves_empty' => 'Neboli vytvorené žiadne police',
+ 'shelves_create' => 'Vytvoriť novú policu',
+ 'shelves_popular' => 'Populárne police',
+ 'shelves_new' => 'Nové police',
+ 'shelves_new_action' => 'Nová polica',
+ 'shelves_popular_empty' => 'Najpopulárnejšie police sa objavia tu.',
+ 'shelves_new_empty' => 'Najpopulárnejšie police sa objavia tu.',
+ 'shelves_save' => 'Uložiť policu',
+ 'shelves_books' => 'Knihy na tejto polici',
+ 'shelves_add_books' => 'Pridať knihy do tejto police',
+ 'shelves_drag_books' => 'Potiahnite knihy nižšie a pridajte ich do tejto police',
+ 'shelves_empty_contents' => 'Táto polica nemá priradené žiadne knihy',
+ 'shelves_edit_and_assign' => 'Uprav policu a priraď knihy',
+ 'shelves_edit_named' => 'Upraviť policu :name',
+ 'shelves_edit' => 'Upraviť policu',
+ 'shelves_delete' => 'Odstrániť policu',
+ 'shelves_delete_named' => 'Odstrániť policu :name',
+ 'shelves_delete_explain' => "Týmto vymažete policu s názvom ': name'. Obsahované knihy sa neodstránia.",
+ 'shelves_delete_confirmation' => 'Ste si istý, že chcete zmazať túto policu?',
+ 'shelves_permissions' => 'Povolenia police',
+ 'shelves_permissions_updated' => 'Povolenia police aktualizované',
+ 'shelves_permissions_active' => 'Povolenia police aktívne',
+ 'shelves_permissions_cascade_warning' => 'Povolenia na poličkách sa automaticky nepriraďujú k obsiahnutým knihám. Je to preto, že kniha môže existovať na viacerých poličkách. Povolenia však možno skopírovať do kníh pomocou možnosti uvedenej nižšie.',
+ 'shelves_permissions_create' => 'Shelf create permissions are only used for copying permissions to child books using the action below. They do not control the ability to create books.',
+ 'shelves_copy_permissions_to_books' => 'Kopírovať oprávnenia pre knihy',
+ 'shelves_copy_permissions' => 'Kopírovať oprávnenia',
+ 'shelves_copy_permissions_explain' => 'Týmto sa použijú aktuálne nastavenia povolení tejto police na všetky knihy, ktoré obsahuje. Pred aktiváciou sa uistite, že všetky zmeny povolení tejto police boli uložené.',
+ 'shelves_copy_permission_success' => 'Oprávnenia police boli skopírované {0}:count kníh|{1}:count kniha|[2,3,4]:count knihy|[5,*]:count kníh',
+
+ // Books
+ 'book' => 'Kniha',
+ 'books' => 'Knihy',
+ 'x_books' => '{0}:count kníh|{1}:count kniha|[2,3,4]:count knihy|[5,*]:count kníh',
+ 'books_empty' => 'Žiadne knihy neboli vytvorené',
+ 'books_popular' => 'Populárne knihy',
+ 'books_recent' => 'Nedávne knihy',
+ 'books_new' => 'Nové knihy',
+ 'books_new_action' => 'Nová kniha',
+ 'books_popular_empty' => 'Najpopulárnejšie knihy sa objavia tu.',
+ 'books_new_empty' => 'Najnovšie knihy sa zobrazia tu.',
+ 'books_create' => 'Vytvoriť novú knihu',
+ 'books_delete' => 'Zmazať knihu',
+ 'books_delete_named' => 'Zmazať knihu :bookName',
+ 'books_delete_explain' => 'Toto zmaže knihu s názvom \':bookName\', všetky stránky a kapitoly budú odstránené.',
+ 'books_delete_confirmation' => 'Ste si istý, že chcete zmazať túto knihu?',
+ 'books_edit' => 'Upraviť knihu',
+ 'books_edit_named' => 'Upraviť knihu :bookName',
+ 'books_form_book_name' => 'Názov knihy',
+ 'books_save' => 'Uložiť knihu',
+ 'books_permissions' => 'Oprávnenia knihy',
+ 'books_permissions_updated' => 'Oprávnenia knihy aktualizované',
+ 'books_empty_contents' => 'Pre túto knihu neboli vytvorené žiadne stránky alebo kapitoly.',
+ 'books_empty_create_page' => 'Vytvoriť novú stránku',
+ 'books_empty_sort_current_book' => 'Zoradiť aktuálnu knihu',
+ 'books_empty_add_chapter' => 'Pridať kapitolu',
+ 'books_permissions_active' => 'Oprávnenia knihy aktívne',
+ 'books_search_this' => 'Hľadať v tejto knihe',
+ 'books_navigation' => 'Navigácia knihy',
+ 'books_sort' => 'Zoradiť obsah knihy',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Zoradiť knihu :bookName',
+ 'books_sort_name' => 'Zoradiť podľa mena',
+ 'books_sort_created' => 'Zoradiť podľa dátumu vytvorenia',
+ 'books_sort_updated' => 'Zoradiť podľa dátumu aktualizácie',
+ 'books_sort_chapters_first' => 'Kapitoly ako prvé',
+ 'books_sort_chapters_last' => 'Kapitoly ako posledné',
+ 'books_sort_show_other' => 'Zobraziť ostatné knihy',
+ 'books_sort_save' => 'Uložiť nové zoradenie',
+ 'books_sort_show_other_desc' => 'Pridajte ďalšie knihy, aby ste ich zahrnuli do operácie triedenia a umožnili jednoduchú reorganizáciu medzi knihami.',
+ 'books_sort_move_up' => 'Posunúť vyššie',
+ 'books_sort_move_down' => 'Posunúť nižšie',
+ 'books_sort_move_prev_book' => 'Presun na predchádzajúcu knihu',
+ 'books_sort_move_next_book' => 'Presun na nasledujúcu knihu',
+ 'books_sort_move_prev_chapter' => 'Presun na predchádzajúcu kapitolu',
+ 'books_sort_move_next_chapter' => 'Presun na ďalšiu kapitolu',
+ 'books_sort_move_book_start' => 'Presun na začiatok knihy',
+ 'books_sort_move_book_end' => 'Presun na koniec knihy',
+ 'books_sort_move_before_chapter' => 'Prejsť na Pred kapitolou',
+ 'books_sort_move_after_chapter' => 'Prejsť na Po kapitole',
+ 'books_copy' => 'Kopírovať knihu',
+ 'books_copy_success' => 'Kniha bola skopírovaná',
+
+ // Chapters
+ 'chapter' => 'Kapitola',
+ 'chapters' => 'Kapitoly',
+ 'x_chapters' => '{0}:count Kapitol|{1}:count Kapitola|[2,3,4]:count Kapitoly|[5,*]:count Kapitol',
+ 'chapters_popular' => 'Populárne kapitoly',
+ 'chapters_new' => 'Nová kapitola',
+ 'chapters_create' => 'Vytvoriť novú kapitolu',
+ 'chapters_delete' => 'Zmazať kapitolu',
+ 'chapters_delete_named' => 'Zmazať kapitolu :chapterName',
+ 'chapters_delete_explain' => 'Týmto sa odstráni kapitola s názvom \':chapterName\'. Spolu s ňou sa odstránia všetky stránky v tejto kapitole.',
+ 'chapters_delete_confirm' => 'Ste si istý, že chcete zmazať túto kapitolu?',
+ 'chapters_edit' => 'Upraviť kapitolu',
+ 'chapters_edit_named' => 'Upraviť kapitolu :chapterName',
+ 'chapters_save' => 'Uložiť kapitolu',
+ 'chapters_move' => 'Presunúť kapitolu',
+ 'chapters_move_named' => 'Presunúť kapitolu :chapterName',
+ 'chapters_copy' => 'Kopírovať kapitolu',
+ 'chapters_copy_success' => 'Kapitola bola úspešne skopírovaná',
+ 'chapters_permissions' => 'Oprávnenia kapitoly',
+ 'chapters_empty' => 'V tejto kapitole nie sú teraz žiadne stránky.',
+ 'chapters_permissions_active' => 'Oprávnenia kapitoly aktívne',
+ 'chapters_permissions_success' => 'Oprávnenia kapitoly aktualizované',
+ 'chapters_search_this' => 'Hladať v kapitole',
+ 'chapter_sort_book' => 'Triediť knihu',
+
+ // Pages
+ 'page' => 'Stránka',
+ 'pages' => 'Stránky',
+ 'x_pages' => ':count stránok',
+ 'pages_popular' => 'Populárne stránky',
+ 'pages_new' => 'Nová stránka',
+ 'pages_attachments' => 'Prílohy',
+ 'pages_navigation' => 'Navigácia',
+ 'pages_delete' => 'Zmazať stránku',
+ 'pages_delete_named' => 'Zmazať stránku :pageName',
+ 'pages_delete_draft_named' => 'Zmazať koncept :pageName',
+ 'pages_delete_draft' => 'Zmazať koncept',
+ 'pages_delete_success' => 'Stránka zmazaná',
+ 'pages_delete_draft_success' => 'Koncept stránky zmazaný',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Ste si istý, že chcete zmazať túto stránku?',
+ 'pages_delete_draft_confirm' => 'Ste si istý, že chcete zmazať tento koncept stránky?',
+ 'pages_editing_named' => 'Upraviť stránku :pageName',
+ 'pages_edit_draft_options' => 'Možnosti konceptu',
+ 'pages_edit_save_draft' => 'Uložiť koncept',
+ 'pages_edit_draft' => 'Upraviť koncept stránky',
+ 'pages_editing_draft' => 'Upravuje sa koncept',
+ 'pages_editing_page' => 'Upravuje sa stránka',
+ 'pages_edit_draft_save_at' => 'Koncept uložený pod ',
+ 'pages_edit_delete_draft' => 'Uložiť koncept',
+ 'pages_edit_delete_draft_confirm' => 'Are you sure you want to delete your draft page changes? All of your changes, since the last full save, will be lost and the editor will be updated with the latest page non-draft save state.',
+ 'pages_edit_discard_draft' => 'Zrušiť koncept',
+ 'pages_edit_switch_to_markdown' => 'Prepnite na Markdown Editor',
+ 'pages_edit_switch_to_markdown_clean' => '(Vyčistiť obsah)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stabilný obsah)',
+ 'pages_edit_switch_to_wysiwyg' => 'Prepnite na WYSIWYG Editor',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Nastaviť záznam zmien',
+ 'pages_edit_enter_changelog_desc' => 'Zadajte krátky popis zmien, ktoré ste urobili',
+ 'pages_edit_enter_changelog' => 'Zadať záznam zmien',
+ 'pages_editor_switch_title' => 'Prepnúť editor',
+ 'pages_editor_switch_are_you_sure' => 'Naozaj chcete zmeniť editor pre túto stránku?',
+ 'pages_editor_switch_consider_following' => 'Pri zmene editorov zvážte nasledujúce:',
+ 'pages_editor_switch_consideration_a' => 'Po uložení budú novú možnosť editora používať všetci budúci editori vrátane tých, ktorí nemusia byť schopní sami zmeniť typ editora.',
+ 'pages_editor_switch_consideration_b' => 'Toto môže za určitých okolností potenciálne viesť k strate podrobností a syntaxe.',
+ 'pages_editor_switch_consideration_c' => 'Zmeny v značke alebo v protokole zmien vykonané od posledného uloženia nezostanú pri tejto zmene zachované.',
+ 'pages_save' => 'Uložiť stránku',
+ 'pages_title' => 'Titulok stránky',
+ 'pages_name' => 'Názov stránky',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Náhľad',
+ 'pages_md_insert_image' => 'Vložiť obrázok',
+ 'pages_md_insert_link' => 'Vložiť odkaz na entitu',
+ 'pages_md_insert_drawing' => 'Vložiť kresbu',
+ 'pages_md_show_preview' => 'Zobraziť náhľad',
+ 'pages_md_sync_scroll' => 'Posúvanie ukážky synchronizácie',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Unsaved Drawing Found',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'Stránka nie je v kapitole',
+ 'pages_move' => 'Presunúť stránku',
+ 'pages_copy' => 'Kpoírovať stránku',
+ 'pages_copy_desination' => 'Ciel kopírovania',
+ 'pages_copy_success' => 'Stránka bola skopírovaná',
+ 'pages_permissions' => 'Oprávnenia stránky',
+ 'pages_permissions_success' => 'Oprávnenia stránky aktualizované',
+ 'pages_revision' => 'Revízia',
+ 'pages_revisions' => 'Revízie stránky',
+ 'pages_revisions_desc' => 'Nižšie sú uvedené všetky predchádzajúce revízie tejto stránky. Ak to povolenia umožňujú, môžete sa pozrieť späť, porovnať a obnoviť staré verzie stránok. Úplná história stránky sa tu nemusí úplne prejaviť, pretože v závislosti od konfigurácie systému môžu byť staré revízie automaticky odstránené.',
+ 'pages_revisions_named' => 'Revízie stránky :pageName',
+ 'pages_revision_named' => 'Revízia stránky :pageName',
+ 'pages_revision_restored_from' => 'Obnovené z #:id; :summary',
+ 'pages_revisions_created_by' => 'Vytvoril',
+ 'pages_revisions_date' => 'Dátum revízie',
+ 'pages_revisions_number' => 'č.',
+ 'pages_revisions_sort_number' => 'Číslo revízie',
+ 'pages_revisions_numbered' => 'Revízia č. :id',
+ 'pages_revisions_numbered_changes' => 'Zmeny revízie č. ',
+ 'pages_revisions_editor' => 'Typ editora',
+ 'pages_revisions_changelog' => 'Záznam zmien',
+ 'pages_revisions_changes' => 'Zmeny',
+ 'pages_revisions_current' => 'Aktuálna verzia',
+ 'pages_revisions_preview' => 'Náhľad',
+ 'pages_revisions_restore' => 'Obnoviť',
+ 'pages_revisions_none' => 'Táto stránka nemá žiadne revízie',
+ 'pages_copy_link' => 'Kopírovať odkaz',
+ 'pages_edit_content_link' => 'Jump to section in editor',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Page Section Options',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Oprávnienia stránky aktívne',
+ 'pages_initial_revision' => 'Prvé zverejnenie',
+ 'pages_references_update_revision' => 'Automatická aktualizácia systému interných odkazov',
+ 'pages_initial_name' => 'Nová stránka',
+ 'pages_editing_draft_notification' => 'Práve upravujete koncept, ktorý bol naposledy uložený :timeDiff.',
+ 'pages_draft_edited_notification' => 'Táto stránka bola odvtedy upravená. Odporúča sa odstrániť tento koncept.',
+ 'pages_draft_page_changed_since_creation' => 'Táto stránka bola aktualizovaná od vytvorenia tohto konceptu. Odporúča sa, aby ste tento koncept zahodili alebo aby ste neprepísali žiadne zmeny stránky.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count používateľov začalo upravovať túto stránku',
+ 'start_b' => ':userName začal upravovať túto stránku',
+ 'time_a' => 'odkedy boli stránky naposledy aktualizované',
+ 'time_b' => 'za posledných :minCount minút',
+ 'message' => ':start :time. Dávajte pozor aby ste si navzájom neprepísali zmeny!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'Konkrétna stránka',
+ 'pages_is_template' => 'Šablóna stránky',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'Štítky stránok',
+ 'chapter_tags' => 'Štítky kapitol',
+ 'book_tags' => 'Štítky kníh',
+ 'shelf_tags' => 'Štítky knižníc',
+ 'tag' => 'Štítok',
+ 'tags' => 'Štítky',
+ 'tags_index_desc' => 'Značky možno použiť na obsah v rámci systému a použiť flexibilnú formu kategorizácie. Značky môžu mať kľúč aj hodnotu, pričom hodnota je voliteľná. Po použití je možné obsah vyhľadávať pomocou názvu a hodnoty značky.',
+ 'tag_name' => 'Názov štítku',
+ 'tag_value' => 'Hodnota štítku (Voliteľné)',
+ 'tags_explain' => "Pridajte pár štítkov pre uľahčenie kategorizácie Vášho obsahu. \n Štítku môžete priradiť hodnotu pre ešte lepšiu organizáciu.",
+ 'tags_add' => 'Pridať ďalší štítok',
+ 'tags_remove' => 'Odstrániť tento štítok',
+ 'tags_usages' => 'Celkové využitie značiek',
+ 'tags_assigned_pages' => 'Priradené k stránkam',
+ 'tags_assigned_chapters' => 'Priradené ku kapitolám',
+ 'tags_assigned_books' => 'Priradené ku knihám',
+ 'tags_assigned_shelves' => 'Priradené k poličkám',
+ 'tags_x_unique_values' => ':count jedinečné hodnoty',
+ 'tags_all_values' => 'Všetky hodnoty',
+ 'tags_view_tags' => 'Zobraziť značky',
+ 'tags_view_existing_tags' => 'Zobraziť existujúce značky',
+ 'tags_list_empty_hint' => 'Značky je možné priradiť prostredníctvom postranného panela editora stránok alebo pri úprave podrobností o knihe, kapitole alebo poličke.',
+ 'attachments' => 'Prílohy',
+ 'attachments_explain' => 'Nahrajte nejaké súbory alebo priložte zopár odkazov pre zobrazenie na Vašej stránke. Budú viditeľné v bočnom paneli.',
+ 'attachments_explain_instant_save' => 'Zmeny budú okamžite uložené.',
+ 'attachments_upload' => 'Nahrať súbor',
+ 'attachments_link' => 'Priložiť odkaz',
+ 'attachments_upload_drop' => 'Prípadne môžete presunúť súbor myšou sem a nahrať ho ako prílohu.',
+ 'attachments_set_link' => 'Nastaviť odkaz',
+ 'attachments_delete' => 'Naozaj chcete odstrániť túto prílohu?',
+ 'attachments_dropzone' => 'Sem presuňte súbory na nahratie',
+ 'attachments_no_files' => 'Žiadne súbory neboli nahrané',
+ 'attachments_explain_link' => 'Ak nechcete priložiť súbor, môžete priložiť odkaz. Môže to byť odkaz na inú stránku alebo odkaz na súbor v cloude.',
+ 'attachments_link_name' => 'Názov odkazu',
+ 'attachment_link' => 'Odkaz na prílohu',
+ 'attachments_link_url' => 'Odkaz na súbor',
+ 'attachments_link_url_hint' => 'Url stránky alebo súboru',
+ 'attach' => 'Priložiť',
+ 'attachments_insert_link' => 'Pridať odkaz na prílohu',
+ 'attachments_edit_file' => 'Upraviť súbor',
+ 'attachments_edit_file_name' => 'Názov súboru',
+ 'attachments_edit_drop_upload' => 'Presuňte súbory sem alebo klinknite pre nahranie a prepis',
+ 'attachments_order_updated' => 'Poradie príloh aktualizované',
+ 'attachments_updated_success' => 'Detaily prílohy aktualizované',
+ 'attachments_deleted' => 'Príloha zmazaná',
+ 'attachments_file_uploaded' => 'Súbor úspešne nahraný',
+ 'attachments_file_updated' => 'Súbor úspešne aktualizovaný',
+ 'attachments_link_attached' => 'Odkaz úspešne pripojený k stránke',
+ 'templates' => 'Šablóny',
+ 'templates_set_as_template' => 'Táto stránka je šablóna',
+ 'templates_explain_set_as_template' => 'Túto stránku môžete nastaviť ako šablónu, aby sa jej obsah použil pri vytváraní ďalších stránok. Ostatní používatelia budú môcť použiť túto šablónu, ak majú povolenia na zobrazenie tejto stránky.',
+ 'templates_replace_content' => 'Nahradiť obsah',
+ 'templates_append_content' => 'Pripojiť k obsahu stránky',
+ 'templates_prepend_content' => 'Pridať pred obsah stránky',
+
+ // Profile View
+ 'profile_user_for_x' => 'Používateľ už :time',
+ 'profile_created_content' => 'Vytvorený obsah',
+ 'profile_not_created_pages' => ':userName nevytvoril žiadne stránky',
+ 'profile_not_created_chapters' => ':userName nevytvoril žiadne kapitoly',
+ 'profile_not_created_books' => ':userName nevytvoril žiadne knihy',
+ 'profile_not_created_shelves' => ':userName nevytvoril(a) žiadne kapitoly',
+
+ // Comments
+ 'comment' => 'Komentár',
+ 'comments' => 'Komentáre',
+ 'comment_add' => 'Pridať komentár',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Tu zadajte svoje pripomienky',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Uložiť komentár',
+ 'comment_new' => 'Nový komentár',
+ 'comment_created' => 'komentované :createDiff',
+ 'comment_updated' => 'Aktualizované :updateDiff užívateľom :username',
+ 'comment_updated_indicator' => 'Updated',
+ 'comment_deleted_success' => 'Komentár odstránený',
+ 'comment_created_success' => 'Komentár pridaný',
+ 'comment_updated_success' => 'Komentár aktualizovaný',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Ste si istý, že chcete odstrániť tento komentár?',
+ 'comment_in_reply_to' => 'Odpovedať na :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Here are the comments that have been left on this page. Comments can be added & managed when viewing the saved page.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Naozaj chcete túto revíziu odstrániť?',
+ 'revision_restore_confirm' => 'Naozaj chcete obnoviť túto revíziu? Aktuálny obsah stránky sa nahradí.',
+ 'revision_cannot_delete_latest' => 'Nie je možné vymazať poslednú revíziu.',
+
+ // Copy view
+ 'copy_consider' => 'Pri kopírovaní obsahu zvážte nižšie uvedené.',
+ 'copy_consider_permissions' => 'Vlastné nastavenia povolení sa neskopírujú.',
+ 'copy_consider_owner' => 'Stanete sa vlastníkom všetkého skopírovaného obsahu.',
+ 'copy_consider_images' => 'Súbory obrázkov stránky nebudú duplikované a pôvodné obrázky si zachovajú svoj vzťah k stránke, na ktorú boli pôvodne nahrané.',
+ 'copy_consider_attachments' => 'Prílohy strán sa neskopírujú.',
+ 'copy_consider_access' => 'Zmena umiestnenia, vlastníka alebo povolení môže mať za následok to, že tento obsah bude prístupný tým, ktorí k nemu predtým prístup nemali.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Konvertovať na Shelf',
+ 'convert_to_shelf_contents_desc' => 'Túto knihu môžete previesť na novú policu s rovnakým obsahom. Kapitoly obsiahnuté v tejto knihe budú prevedené do nových kníh. Ak táto kniha obsahuje nejaké strany, ktoré nie sú v kapitole, táto kniha bude premenovaná a bude obsahovať tieto strany a táto kniha sa stane súčasťou novej police.',
+ 'convert_to_shelf_permissions_desc' => 'Všetky povolenia nastavené pre túto knihu sa skopírujú do novej police a do všetkých nových podriadených kníh, ktoré nemajú vynútené vlastné povolenia. Všimnite si, že povolenia na policiach sa automaticky neprenášajú na obsah v rámci nich, ako je to v prípade kníh.',
+ 'convert_book' => 'Previesť knihu',
+ 'convert_book_confirm' => 'Ste si istý, že chcete previesť túto knihu?',
+ 'convert_undo_warning' => 'To sa nedá tak ľahko vrátiť späť.',
+ 'convert_to_book' => 'Previesť na knihu',
+ 'convert_to_book_desc' => 'Túto kapitolu môžete previesť do novej knihy s rovnakým obsahom. Všetky povolenia nastavené v tejto kapitole sa skopírujú do novej knihy, ale žiadne zdedené povolenia z nadradenej knihy sa neskopírujú, čo by mohlo viesť k zmene riadenia prístupu.',
+ 'convert_chapter' => 'Previesť kapitolu',
+ 'convert_chapter_confirm' => 'Ste si istý, že chcete previesť túto kapitolu?',
+
+ // References
+ 'references' => 'Referencie',
+ 'references_none' => 'Neexistujú žiadne sledované referencie na túto položku.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Watch',
+ 'watch_title_default' => 'Default Preferences',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignore',
+ 'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
+ 'watch_title_new' => 'New Pages',
+ 'watch_desc_new' => 'Notify when any new page is created within this item.',
+ 'watch_title_updates' => 'All Page Updates',
+ 'watch_desc_updates' => 'Notify upon all new pages and page changes.',
+ 'watch_desc_updates_page' => 'Notify upon all page changes.',
+ 'watch_title_comments' => 'All Page Updates & Comments',
+ 'watch_desc_comments' => 'Notify upon all new pages, page changes and new comments.',
+ 'watch_desc_comments_page' => 'Notify upon page changes and new comments.',
+ 'watch_change_default' => 'Change default notification preferences',
+ 'watch_detail_ignore' => 'Ignoring notifications',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/sk/errors.php b/lang/sk/errors.php
new file mode 100644
index 00000000000..bfd921d0683
--- /dev/null
+++ b/lang/sk/errors.php
@@ -0,0 +1,135 @@
+ 'Nemáte oprávnenie pre prístup k požadovanej stránke.',
+ 'permissionJson' => 'Nemáte oprávnenie pre vykonanie požadovaného úkonu.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Používateľ s emailom :email už existuje, ale s inými údajmi.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'Email bol už overený, skúste sa prihlásiť.',
+ 'email_confirmation_invalid' => 'Tento potvrdzujúci token nie je platný alebo už bol použitý, skúste sa prosím registrovať znova.',
+ 'email_confirmation_expired' => 'Potvrdzujúci token expiroval, bol odoslaný nový potvrdzujúci email.',
+ 'email_confirmation_awaiting' => 'Potvrďte emailovú adresu pre užívateľský účet',
+ 'ldap_fail_anonymous' => 'Prístup LDAP zlyhal',
+ 'ldap_fail_authed' => 'Prístup LDAP zlyhal pomocou zadaných podrobností dn a hesla',
+ 'ldap_extension_not_installed' => 'Rozšírenie LDAP PHP nie je nainštalované',
+ 'ldap_cannot_connect' => 'Nedá sa pripojiť k serveru ldap, počiatočné pripojenie zlyhalo',
+ 'saml_already_logged_in' => 'Používateľ sa už prihlásil',
+ 'saml_no_email_address' => 'V údajoch poskytnutých externým overovacím systémom sa nepodarilo nájsť e-mailovú adresu tohto používateľa',
+ 'saml_invalid_response_id' => 'Požiadavka z externého autentifikačného systému nie je rozpoznaná procesom spusteným touto aplikáciou. Tento problém môže spôsobiť navigácia späť po prihlásení.',
+ 'saml_fail_authed' => 'Prihlásenie pomocou :system zlyhalo, systém neposkytol úspešnú autorizáciu',
+ 'oidc_already_logged_in' => 'Používateľ sa už prihlásil',
+ 'oidc_no_email_address' => 'V údajoch poskytnutých externým overovacím systémom sa nepodarilo nájsť e-mailovú adresu tohto používateľa',
+ 'oidc_fail_authed' => 'Prihlásenie pomocou :system zlyhalo, systém neposkytol úspešnú autorizáciu',
+ 'social_no_action_defined' => 'Nebola definovaná žiadna akcia',
+ 'social_login_bad_response' => "Pri prihlásení do účtu :socialAccount došlo k chybe:\n:error",
+ 'social_account_in_use' => 'Tento :socialAccount účet sa už používa, skúste sa prihlásiť pomocou možnosti :socialAccount.',
+ 'social_account_email_in_use' => 'Email :email sa už používa. Ak už máte účet, môžete pripojiť svoj :socialAccount účet v nastaveniach profilu.',
+ 'social_account_existing' => 'Tento :socialAccount účet je už spojený s Vaším profilom.',
+ 'social_account_already_used_existing' => 'Tento :socialAccount účet už používa iný používateľ.',
+ 'social_account_not_used' => 'Tento :socialAccount účet nie je spojený so žiadnym používateľom. Pripojte ho prosím v nastaveniach Vášho profilu. ',
+ 'social_account_register_instructions' => 'Ak zatiaľ nemáte účet, môžete sa registrovať pomocou možnosti :socialAccount.',
+ 'social_driver_not_found' => 'Ovládač socialnych sietí nebol nájdený',
+ 'social_driver_not_configured' => 'Nastavenia Vášho :socialAccount účtu nie sú správne.',
+ 'invite_token_expired' => 'Platnosť tohto odkazu na pozvánku vypršala. Namiesto toho sa môžete pokúsiť obnoviť heslo účtu.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // System
+ 'path_not_writable' => 'Do cesty :filePath sa nedá nahrávať. Uistite sa, že je zapisovateľná serverom.',
+ 'cannot_get_image_from_url' => 'Nedá sa získať obrázok z :url',
+ 'cannot_create_thumbs' => 'Server nedokáže vytvoriť náhľady. Skontrolujte prosím, či máte nainštalované GD rozšírenie PHP.',
+ 'server_upload_limit' => 'Server nedovoľuje nahrávanie súborov s takouto veľkosťou. Skúste prosím menší súbor.',
+ 'server_post_limit' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.',
+ 'uploaded' => 'Server nedovoľuje nahrávanie súborov s takouto veľkosťou. Skúste prosím menší súbor.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Pri nahrávaní obrázka nastala chyba',
+ 'image_upload_type_error' => 'Typ nahrávaného obrázka je neplatný',
+ 'image_upload_replace_type' => 'Image file replacements must be of the same type',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Údaje výkresu sa nepodarilo načítať. Súbor výkresu už možno neexistuje alebo nemáte povolenie na prístup k nemu.',
+
+ // Attachments
+ 'attachment_not_found' => 'Príloha nenájdená',
+ 'attachment_upload_error' => 'Pri nahrávaní súboru prílohy nastala chyba',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Koncept nemohol byť uložený. Uistite sa, že máte pripojenie k internetu pre uložením tejto stránky',
+ 'page_draft_delete_fail' => 'Failed to delete page draft and fetch current page saved content',
+ 'page_custom_home_deletion' => 'Stránku nie je možné odstrániť, kým je nastavená ako domovská stránka',
+
+ // Entities
+ 'entity_not_found' => 'Entita nenájdená',
+ 'bookshelf_not_found' => 'Polica nenájdená',
+ 'book_not_found' => 'Kniha nenájdená',
+ 'page_not_found' => 'Stránka nenájdená',
+ 'chapter_not_found' => 'Kapitola nenájdená',
+ 'selected_book_not_found' => 'Vybraná kniha nebola nájdená',
+ 'selected_book_chapter_not_found' => 'Vybraná kniha alebo kapitola nebola nájdená',
+ 'guests_cannot_save_drafts' => 'Hosť nemôže ukladať koncepty',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Nemôžete zmazať posledného správcu',
+ 'users_cannot_delete_guest' => 'Nemôžete zmazať hosťa',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Táto rola nemôže byť upravovaná',
+ 'role_system_cannot_be_deleted' => 'Táto rola je systémová rola a nemôže byť zmazaná',
+ 'role_registration_default_cannot_delete' => 'Táto rola nemôže byť zmazaná, pretože je nastavená ako prednastavená rola pri registrácii',
+ 'role_cannot_remove_only_admin' => 'Tento používateľ je jediným používateľom priradeným k role správcu. Priraďte rolu správcu inému používateľovi skôr, ako sa ju pokúsite odstrániť tu.',
+
+ // Comments
+ 'comment_list' => 'Pri načítaní komentárov sa vyskytla chyba',
+ 'cannot_add_comment_to_draft' => 'Do konceptu nemôžete pridávať komentáre.',
+ 'comment_add' => 'Počas pridávania komentára sa vyskytla chyba',
+ 'comment_delete' => 'Pri odstraňovaní komentára došlo k chybe',
+ 'empty_comment' => 'Nelze pridať prázdny komentár.',
+
+ // Error pages
+ '404_page_not_found' => 'Stránka nenájdená',
+ 'sorry_page_not_found' => 'Prepáčte, stránka ktorú hľadáte nebola nájdená.',
+ 'sorry_page_not_found_permission_warning' => 'Ak ste očakávali existenciu tejto stránky, možno nemáte povolenie na jej zobrazenie.',
+ 'image_not_found' => 'Obrázok nebol nájdený',
+ 'image_not_found_subtitle' => 'Ľutujeme, obrázok, ktorý ste hľadali, sa nepodarilo nájsť.',
+ 'image_not_found_details' => 'Ak ste očakávali, že tento obrázok existuje, mohol byť odstránený.',
+ 'return_home' => 'Vrátiť sa domov',
+ 'error_occurred' => 'Nastala chyba',
+ 'app_down' => ':appName je momentálne nedostupná',
+ 'back_soon' => 'Čoskoro bude opäť dostupná.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'V žiadosti sa nenašiel žiadny autorizačný token',
+ 'api_bad_authorization_format' => 'V žiadosti sa našiel autorizačný token, ale formát sa zdal nesprávny',
+ 'api_user_token_not_found' => 'Pre poskytnutý autorizačný token sa nenašiel žiadny zodpovedajúci token rozhrania API',
+ 'api_incorrect_token_secret' => 'Secret poskytnutý pre daný token API je nesprávny',
+ 'api_user_no_api_permission' => 'Vlastník použitého tokenu API nemá povolenie na uskutočňovanie volaní rozhrania API',
+ 'api_user_token_expired' => 'Platnosť použitého autorizačného tokenu vypršala',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Chyba pri odosielaní testovacieho e-mailu:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'The URL does not match the configured allowed SSR hosts',
+];
diff --git a/lang/sk/notifications.php b/lang/sk/notifications.php
new file mode 100644
index 00000000000..563ac24e84d
--- /dev/null
+++ b/lang/sk/notifications.php
@@ -0,0 +1,29 @@
+ 'New comment on page: :pageName',
+ 'new_comment_intro' => 'A user has commented on a page in :appName:',
+ 'new_page_subject' => 'New page: :pageName',
+ 'new_page_intro' => 'A new page has been created in :appName:',
+ 'updated_page_subject' => 'Updated page: :pageName',
+ 'updated_page_intro' => 'A page has been updated in :appName:',
+ 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Page Name:',
+ 'detail_page_path' => 'Page Path:',
+ 'detail_commenter' => 'Commenter:',
+ 'detail_comment' => 'Comment:',
+ 'detail_created_by' => 'Created By:',
+ 'detail_updated_by' => 'Updated By:',
+
+ 'action_view_comment' => 'View Comment',
+ 'action_view_page' => 'View Page',
+
+ 'footer_reason' => 'This notification was sent to you because :link cover this type of activity for this item.',
+ 'footer_reason_link' => 'your notification preferences',
+];
diff --git a/resources/lang/sk/pagination.php b/lang/sk/pagination.php
similarity index 100%
rename from resources/lang/sk/pagination.php
rename to lang/sk/pagination.php
diff --git a/resources/lang/sk/passwords.php b/lang/sk/passwords.php
similarity index 100%
rename from resources/lang/sk/passwords.php
rename to lang/sk/passwords.php
diff --git a/lang/sk/preferences.php b/lang/sk/preferences.php
new file mode 100644
index 00000000000..54fbdb677a6
--- /dev/null
+++ b/lang/sk/preferences.php
@@ -0,0 +1,52 @@
+ 'My Account',
+
+ 'shortcuts' => 'Skratky',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Tu môžete povoliť alebo zakázať klávesové skratky systémového rozhrania, ktoré sa používajú na navigáciu a akcie.',
+ 'shortcuts_customize_desc' => 'Každú z nižšie uvedených skratiek si môžete prispôsobiť. Po výbere vstupu pre skratku stačí stlačiť požadovanú kombináciu klávesov.',
+ 'shortcuts_toggle_label' => 'Klávesové skratky sú povolené',
+ 'shortcuts_section_navigation' => 'Navigácia',
+ 'shortcuts_section_actions' => 'Hlavné akcie',
+ 'shortcuts_save' => 'Uložiť skratky',
+ 'shortcuts_overlay_desc' => 'Poznámka: Keď sú zapnuté skratky, pomocné prekrytie je dostupné stlačením „?", ktoré zvýrazní dostupné skratky akcií,, ktoré sú momentálne viditeľné na obrazovke.',
+ 'shortcuts_update_success' => 'Predvoľby skratiek boli aktualizované!',
+ 'shortcuts_overview_desc' => 'Manage keyboard shortcuts you can use to navigate the system user interface.',
+
+ 'notifications' => 'Notification Preferences',
+ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.',
+ 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own',
+ 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notify upon replies to my comments',
+ 'notifications_save' => 'Save Preferences',
+ 'notifications_update_success' => 'Notification preferences have been updated!',
+ 'notifications_watched' => 'Watched & Ignored Items',
+ 'notifications_watched_desc' => 'Below are the items that have custom watch preferences applied. To update your preferences for these, view the item then find the watch options in the sidebar.',
+
+ 'auth' => 'Access & Security',
+ 'auth_change_password' => 'Change Password',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Password has been updated!',
+
+ 'profile' => 'Profile Details',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'View Public Profile',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Delete Account',
+ 'delete_my_account' => 'Delete My Account',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/sk/settings.php b/lang/sk/settings.php
new file mode 100644
index 00000000000..67671f6f82c
--- /dev/null
+++ b/lang/sk/settings.php
@@ -0,0 +1,374 @@
+ 'Nastavenia',
+ 'settings_save' => 'Uložiť nastavenia',
+ 'system_version' => 'Verzia systému',
+ 'categories' => 'Kategórie',
+
+ // App Settings
+ 'app_customization' => 'Prispôsobenia',
+ 'app_features_security' => 'Funkcie a bezpečnosť',
+ 'app_name' => 'Názov aplikácia',
+ 'app_name_desc' => 'Tento názov sa zobrazuje v hlavičke a v emailoch.',
+ 'app_name_header' => 'Zobraziť názov aplikácie v hlavičke?',
+ 'app_public_access' => 'Verejný prístup',
+ 'app_public_access_desc' => 'Povolenie tejto možnosti umožní návštevníkom, ktorí nie sú prihlásení, prístup k obsahu vo vašej inštancii BookStack.',
+ 'app_public_access_desc_guest' => 'Prístup pre verejných návštevníkov je možné ovládať prostredníctvom používateľa "Hosť".',
+ 'app_public_access_toggle' => 'Povoliť verejný prístup',
+ 'app_public_viewing' => 'Povoliť verejné zobrazenie?',
+ 'app_secure_images' => 'Povoliť nahrávanie súborov so zvýšeným zabezpečením?',
+ 'app_secure_images_toggle' => 'Povoliť nahrávanie obrázkov s vyšším zabezpečením',
+ 'app_secure_images_desc' => 'Kvôli výkonu sú všetky obrázky verejné. Táto možnosť pridá pred URL obrázka náhodný, ťažko uhádnuteľný reťazec. Aby ste zabránili jednoduchému prístupu, uistite sa, že indexy priečinkov nie sú povolené.',
+ 'app_default_editor' => 'Predvolený editor stránky',
+ 'app_default_editor_desc' => 'Vyberte, ktorý editor sa bude používať ako predvolený pri úprave nových stránok. Je to možné prepísať na úrovni stránky, kde to umožňujú povolenia.',
+ 'app_custom_html' => 'Vlastný HTML obsah hlavičky',
+ 'app_custom_html_desc' => 'Všetok text pridaný sem bude vložený naspodok sekcie na každej stránke. Môže sa to zísť pri zmene štýlu alebo pre pridanie analytického kódu.',
+ 'app_custom_html_disabled_notice' => 'Vlastný obsah hlavičky HTML je na tejto stránke s nastaveniami zakázaný, aby sa zabezpečilo, že sa dajú vrátiť zmeny, ktoré nastali.',
+ 'app_logo' => 'Logo aplikácie',
+ 'app_logo_desc' => 'Používa sa to okrem iného v lište hlavičky aplikácie. Tento obrázok by mal mať výšku 86 pixelov. Veľké obrázky budú zmenšené.',
+ 'app_icon' => 'Ikona aplikácie',
+ 'app_icon_desc' => 'Táto ikona sa používa pre karty prehliadača a ikony odkazov. Mala by byť vo formáte štvorcového obrázku PNG s veľkosťou 256 pixelov.',
+ 'app_homepage' => 'Domovská stránka aplikácie',
+ 'app_homepage_desc' => 'Vyberte zobrazenie, ktoré sa má zobraziť na domovskej stránke namiesto predvoleného zobrazenia. Povolenia stránky sa pre vybraté stránky ignorujú.',
+ 'app_homepage_select' => 'Vybrať stránku',
+ 'app_footer_links' => 'Odkazy v pätičke',
+ 'app_footer_links_desc' => 'Pridajte odkazy, ktoré sa majú zobraziť v päte lokality. Tieto sa zobrazia v spodnej časti väčšiny stránok, vrátane tých, ktoré nevyžadujú prihlásenie. Ak chcete použiť preklady definované systémom, môžete použiť označenie "trans::". Napríklad: Použitie „trans::common.privacy_policy“ poskytne preložený text „Zásady ochrany osobných údajov“ a „trans::common.terms_of_service“ poskytne preložený text „Zmluvné podmienky“.',
+ 'app_footer_links_label' => 'Označenie odkazu',
+ 'app_footer_links_url' => 'URL odkaz',
+ 'app_footer_links_add' => 'Pridať odkaz na pätu',
+ 'app_disable_comments' => 'Zakázať komentáre',
+ 'app_disable_comments_toggle' => 'Vypnúť komentáre',
+ 'app_disable_comments_desc' => 'Zakázať komentáre na všetkých stránkach aplikácie. Existujúce komentáre sa nezobrazujú.',
+
+ // Color settings
+ 'color_scheme' => 'Farebná schéma aplikácie',
+ 'color_scheme_desc' => 'Nastavte farby, ktoré sa majú použiť v používateľskom rozhraní aplikácie. Farby možno konfigurovať oddelene pre tmavý a svetlý režim, aby čo najlepšie vyhovovali téme a zabezpečili čitateľnosť.',
+ 'ui_colors_desc' => 'Nastavte primárnu farbu aplikácie a predvolenú farbu odkazu. Primárna farba sa používa hlavne pre banner hlavičky, tlačidlá a dekorácie rozhrania. Predvolená farba odkazu sa používa pre textové odkazy a akcie v rámci písaného obsahu aj v rozhraní aplikácie.',
+ 'app_color' => 'Hlavná farba',
+ 'link_color' => 'Predvolená farba odkazu',
+ 'content_colors_desc' => 'Nastaví farby pre všetky prvky v hierarchii organizácie stránky. Kvôli čitateľnosti sa odporúča vybrať farby s podobným jasom ako predvolené farby.',
+ 'bookshelf_color' => 'Farba police',
+ 'book_color' => 'Farba knihy',
+ 'chapter_color' => 'Farba kapitoly',
+ 'page_color' => 'Farba stránky',
+ 'page_draft_color' => 'Farba konceptu stránky',
+
+ // Registration Settings
+ 'reg_settings' => 'Nastavenia registrácie',
+ 'reg_enable' => 'Povolenie registrácie',
+ 'reg_enable_toggle' => 'Povoliť registrácie',
+ 'reg_enable_desc' => 'Keď je registrácia povolená, používateľ sa bude môcť prihlásiť ako používateľ aplikácie. Po registrácii dostane predvolenú používateľskú rolu.',
+ 'reg_default_role' => 'Prednastavená používateľská rola po registrácii',
+ 'reg_enable_external_warning' => 'Ak je aktívna externá autentifikácia LDAP alebo SAML, možnosť vyššie sa ignoruje. Používateľské účty pre neexistujúcich členov sa vytvoria automaticky, ak je overenie proti používanému externému systému úspešné.',
+ 'reg_email_confirmation' => 'Potvrdenie e-mailom',
+ 'reg_email_confirmation_toggle' => 'Vyžadovať potvrdenie e-mailom',
+ 'reg_confirm_email_desc' => 'Ak je použité obmedzenie domény, potom bude vyžadované overenie emailu a hodnota nižšie bude ignorovaná.',
+ 'reg_confirm_restrict_domain' => 'Obmedziť registráciu na doménu',
+ 'reg_confirm_restrict_domain_desc' => 'Zadajte zoznam domén, pre ktoré chcete povoliť registráciu oddelených čiarkou. Používatelia dostanú email kvôli overeniu adresy predtým ako im bude dovolené používať aplikáciu. Používatelia si budú môcť po úspešnej registrácii zmeniť svoju emailovú adresu.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Nie sú nastavené žiadne obmedzenia',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Údržba',
+ 'maint_image_cleanup' => 'Prečistenie obrázkov',
+ 'maint_image_cleanup_desc' => 'Skenovať obsah stránky a revízie, aby sa skontrolovalo, ktoré obrázky a návrhy sa momentálne používajú a ktoré obrázky sú nadbytočné. Pred spustením sa uistite, že ste vytvorili úplnú zálohu obrazu a databázy.',
+ 'maint_delete_images_only_in_revisions' => 'Odstráňte aj obrázky, ktoré existujú iba v starých revíziách stránok',
+ 'maint_image_cleanup_run' => 'Spustiť prečistenie',
+ 'maint_image_cleanup_warning' => ':count nájdených potenciálne nepoužitých obrázkov. Naozaj chcete odstrániť tieto obrázky?',
+ 'maint_image_cleanup_success' => ':count potenciálne nepoužité obrázky boli nájdené a odstránené!',
+ 'maint_image_cleanup_nothing_found' => 'Žiadne nepoužit obrázky neboli nájdené. Nič sa nezmazalo!',
+ 'maint_send_test_email' => 'Odoslať testovací email',
+ 'maint_send_test_email_desc' => 'Týmto sa odošle testovací e-mail na vašu e-mailovú adresu uvedenú vo vašom profile.',
+ 'maint_send_test_email_run' => 'Odoslať testovací email',
+ 'maint_send_test_email_success' => 'Email odoslaný na :address',
+ 'maint_send_test_email_mail_subject' => 'Testovací email',
+ 'maint_send_test_email_mail_greeting' => 'Zdá sa, že doručovanie e-mailov funguje!',
+ 'maint_send_test_email_mail_text' => 'Gratulujeme! Keď ste dostali toto e-mailové upozornenie, zdá sa, že vaše nastavenia e-mailu sú nakonfigurované správne.',
+ 'maint_recycle_bin_desc' => 'Vymazané police, knihy, kapitoly a strany sa odošlú do koša, aby sa dali obnoviť alebo natrvalo odstrániť. Staršie položky z koša môžu byť po chvíli automaticky odstránené v závislosti od konfigurácie systému.',
+ 'maint_recycle_bin_open' => 'Otvoriť kôš',
+ 'maint_regen_references' => 'Obnoviť referencie',
+ 'maint_regen_references_desc' => 'Táto akcia znovu vytvorí referenčný index medzi položkami v databáze. Toto sa zvyčajne vykonáva automaticky, ale táto akcia môže byť užitočná na indexovanie starého obsahu alebo obsahu pridaného neoficiálnymi metódami.',
+ 'maint_regen_references_success' => 'Referenčný index bol vygenerovaný!',
+ 'maint_timeout_command_note' => 'Poznámka: Spustenie tejto akcie môže chvíľu trvať, čo môže v niektorých webových prostrediach viesť k problémom s časovým limitom. Alternatívne sa táto akcia vykoná pomocou príkazu v termináli.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Kôš',
+ 'recycle_bin_desc' => 'Tu môžete obnoviť položky, ktoré boli odstránené, alebo zvoliť ich trvalé odstránenie zo systému. Tento zoznam je nefiltrovaný na rozdiel od podobných zoznamov aktivít v systéme, kde sa používajú filtre povolení.',
+ 'recycle_bin_deleted_item' => 'Odstránené položky',
+ 'recycle_bin_deleted_parent' => 'Nadradené',
+ 'recycle_bin_deleted_by' => 'Zmazal(a)',
+ 'recycle_bin_deleted_at' => 'Čas odstránenia',
+ 'recycle_bin_permanently_delete' => 'Natrvalo odstrániť',
+ 'recycle_bin_restore' => 'Obnoviť',
+ 'recycle_bin_contents_empty' => 'Kôš je aktuálne prázdny',
+ 'recycle_bin_empty' => 'Vyprázdniť Kôš',
+ 'recycle_bin_empty_confirm' => 'Tým sa natrvalo odstránia všetky položky v koši vrátane obsahu obsiahnutého v každej položke. Naozaj chcete vyprázdniť kôš?',
+ 'recycle_bin_destroy_confirm' => 'This action will permanently delete this item from the system, along with any child elements listed below, and you will not be able to restore this content. Are you sure you want to permanently delete this item?',
+ 'recycle_bin_destroy_list' => 'Položky, ktoré budú odstránené',
+ 'recycle_bin_restore_list' => 'Položky, ktoré budú obnovené',
+ 'recycle_bin_restore_confirm' => 'Táto akcia obnoví odstránenú položku vrátane všetkých podradených prvkov na ich pôvodné miesto. Ak bolo pôvodné umiestnenie medzitým odstránené a teraz je v koši, bude potrebné obnoviť aj nadradenú položku.',
+ 'recycle_bin_restore_deleted_parent' => 'Nadradená položka tejto položky bola tiež odstránená. Položka zostane odstránená, kým nebude obnovený aj nadradená položka.',
+ 'recycle_bin_restore_parent' => 'Obnoviť nadradenú položku',
+ 'recycle_bin_destroy_notification' => 'Vymazané :count položky z koša.',
+ 'recycle_bin_restore_notification' => 'Obnovené :count položky z koša.',
+
+ // Audit Log
+ 'audit' => 'Denník auditu',
+ 'audit_desc' => 'Tento denník auditu zobrazuje zoznam aktivít sledovaných v systéme. Tento zoznam je nefiltrovaný na rozdiel od podobných zoznamov aktivít v systéme, kde sa používajú filtre povolení.',
+ 'audit_event_filter' => 'Filter udalostí',
+ 'audit_event_filter_no_filter' => 'Žiadny filter',
+ 'audit_deleted_item' => 'Odstránená položka',
+ 'audit_deleted_item_name' => 'Názov :name',
+ 'audit_table_user' => 'Užívateľ',
+ 'audit_table_event' => 'Udalosť',
+ 'audit_table_related' => 'Súvisiaca položka alebo detail',
+ 'audit_table_ip' => 'IP adresa',
+ 'audit_table_date' => 'Dátum aktivity',
+ 'audit_date_from' => 'Časový interval od',
+ 'audit_date_to' => 'Časový interval',
+
+ // Role Settings
+ 'roles' => 'Roly',
+ 'role_user_roles' => 'Používateľské roly',
+ 'roles_index_desc' => 'Roly sa používajú na zoskupovanie používateľov a poskytovanie systémových povolení ich členom. Keď je používateľ členom viacerých rolí, udelené privilégiá sa nahromadia a používateľ zdedí všetky schopnosti.',
+ 'roles_x_users_assigned' => ':count user assigned|:count users assigned',
+ 'roles_x_permissions_provided' => ':počet povolení|:počet povolení',
+ 'roles_assigned_users' => 'Priradení užívatelia',
+ 'roles_permissions_provided' => 'Poskytnuté povolenia',
+ 'role_create' => 'Vytvoriť novú rolu',
+ 'role_delete' => 'Zmazať rolu',
+ 'role_delete_confirm' => 'Toto zmaže rolu menom \':roleName\'.',
+ 'role_delete_users_assigned' => 'Túto rolu má priradenú :userCount používateľov. Ak chcete premigrovať používateľov z tejto roly, vyberte novú rolu nižšie.',
+ 'role_delete_no_migration' => "Nemigrovať používateľov",
+ 'role_delete_sure' => 'Ste si istý, že chcete zmazať túto rolu?',
+ 'role_edit' => 'Upraviť rolu',
+ 'role_details' => 'Detaily roly',
+ 'role_name' => 'Názov roly',
+ 'role_desc' => 'Krátky popis roly',
+ 'role_mfa_enforced' => 'Vyžadovať viacfaktorové overenie',
+ 'role_external_auth_id' => 'Externé autentifikačné ID',
+ 'role_system' => 'Systémové oprávnenia',
+ 'role_manage_users' => 'Spravovať používateľov',
+ 'role_manage_roles' => 'Spravovať role a oprávnenia rolí',
+ 'role_manage_entity_permissions' => 'Spravovať všetky oprávnenia kníh, kapitol a stránok',
+ 'role_manage_own_entity_permissions' => 'Spravovať oprávnenia vlastných kníh, kapitol a stránok',
+ 'role_manage_page_templates' => 'Spravovať šablóny',
+ 'role_access_api' => 'API prístupového systému',
+ 'role_manage_settings' => 'Spravovať nastavenia aplikácie',
+ 'role_export_content' => 'Exportovať obsah',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Zmeniť editor stránky',
+ 'role_notifications' => 'Receive & manage notifications',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Oprávnenia majetku',
+ 'roles_system_warning' => 'Uvedomte si, že prístup ku ktorémukoľvek z vyššie uvedených troch povolení môže používateľovi umožniť zmeniť svoje vlastné privilégiá alebo privilégiá ostatných v systéme. Roly s týmito povoleniami priraďujte iba dôveryhodným používateľom.',
+ 'role_asset_desc' => 'Tieto oprávnenia regulujú prednastavený prístup k zdroju v systéme. Oprávnenia pre knihy, kapitoly a stránky majú vyššiu prioritu.',
+ 'role_asset_admins' => 'Správcovia majú automaticky prístup ku všetkému obsahu, ale tieto možnosti môžu zobraziť alebo skryť možnosti používateľského rozhrania.',
+ 'role_asset_image_view_note' => 'Toto sa týka viditeľnosti v rámci správcu obrázkov. Skutočný prístup k nahratým súborom obrázkov bude závisieť od možnosti ukladania obrázkov systému.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Všetko',
+ 'role_own' => 'Vlastné',
+ 'role_controlled_by_asset' => 'Regulované zdrojom, do ktorého sú nahrané',
+ 'role_save' => 'Uložiť rolu',
+ 'role_users' => 'Používatelia s touto rolou',
+ 'role_users_none' => 'Žiadni používatelia nemajú priradenú túto rolu',
+
+ // Users
+ 'users' => 'Používatelia',
+ 'users_index_desc' => 'Vytvárajte a spravujte individuálne používateľské účty v rámci systému. Používateľské účty sa používajú na prihlásenie a priradenie obsahu a aktivity. Prístupové povolenia sú primárne založené na rolách, ale vlastníctvo obsahu používateľa popri iných faktoroch môže mať vplyv aj na povolenia a prístup.',
+ 'user_profile' => 'Profil používateľa',
+ 'users_add_new' => 'Pridať nového používateľa',
+ 'users_search' => 'Hľadať medzi používateľmi',
+ 'users_latest_activity' => 'Nedávna aktivita',
+ 'users_details' => 'Údaje o používateľovi',
+ 'users_details_desc' => 'Nastavte zobrazované meno a e-mailovú adresu pre tohto používateľa. E-mailová adresa bude slúžiť na prihlásenie do aplikácie.',
+ 'users_details_desc_no_email' => 'Nastavte zobrazované meno pre tohto používateľa, aby ho ostatní mohli rozpoznať.',
+ 'users_role' => 'Používateľské roly',
+ 'users_role_desc' => 'Vyberte, ku ktorým rolám bude tento používateľ priradený. Ak je používateľ priradený k viacerým rolám, povolenia z týchto rolí sa nahromadia a získajú všetky schopnosti priradených rolí.',
+ 'users_password' => 'Heslo používateľa',
+ 'users_password_desc' => 'Nastavte heslo používané na prihlásenie do aplikácie. Musí mať aspoň 8 znakov.',
+ 'users_send_invite_text' => 'Môžete sa rozhodnúť poslať tomuto používateľovi e-mail s pozvánkou, ktorý mu umožní nastaviť si vlastné heslo, v opačnom prípade mu ho môžete nastaviť sami.',
+ 'users_send_invite_option' => 'Odoslať e-mail s pozvánkou pre používateľa',
+ 'users_external_auth_id' => 'Externé autentifikačné ID',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ 'users_system_public' => 'Tento účet reprezentuje každého hosťovského používateľa, ktorý navštívi Vašu inštanciu. Nedá sa pomocou neho prihlásiť a je priradený automaticky.',
+ 'users_delete' => 'Zmazať používateľa',
+ 'users_delete_named' => 'Zmazať používateľa :userName',
+ 'users_delete_warning' => ' Toto úplne odstráni používateľa menom \':userName\' zo systému.',
+ 'users_delete_confirm' => 'Ste si istý, že chcete zmazať tohoto používateľa?',
+ 'users_migrate_ownership' => 'Migrovať vlastníctvo',
+ 'users_migrate_ownership_desc' => 'Tu vyberte používateľa, ak chcete, aby sa vlastníkom všetkých položiek aktuálne vlastnených týmto používateľom stal iný používateľ.',
+ 'users_none_selected' => 'Nie je vybratý žiadny používateľ',
+ 'users_edit' => 'Upraviť používateľa',
+ 'users_edit_profile' => 'Upraviť profil',
+ 'users_avatar' => 'Avatar používateľa',
+ 'users_avatar_desc' => 'Tento obrázok by mal byť štvorec s rozmerom približne 256px.',
+ 'users_preferred_language' => 'Preferovaný jazyk',
+ 'users_preferred_language_desc' => 'Táto možnosť zmení jazyk používaný pre používateľské rozhranie aplikácie. Neovplyvní to žiadny obsah vytvorený používateľmi.',
+ 'users_social_accounts' => 'Sociálne účty',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Tu si môžete pripojiť iné účty pre rýchlejšie a jednoduchšie prihlásenie. Disconnecting an account here does not previously authorized access. Revoke access from your profile settings on the connected social account.',
+ 'users_social_connect' => 'Pripojiť účet',
+ 'users_social_disconnect' => 'Odpojiť účet',
+ 'users_social_status_connected' => 'Connected',
+ 'users_social_status_disconnected' => 'Disconnected',
+ 'users_social_connected' => ':socialAccount účet bol úspešne pripojený k Vášmu profilu.',
+ 'users_social_disconnected' => ':socialAccount účet bol úspešne odpojený od Vášho profilu.',
+ 'users_api_tokens' => 'API Kľúče',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'Pre tohto používateľa neboli vytvorené žiadne tokeny API',
+ 'users_api_tokens_create' => 'Vytvoriť token',
+ 'users_api_tokens_expires' => 'Platnosť do',
+ 'users_api_tokens_docs' => 'Dokumentácia API',
+ 'users_mfa' => 'Viacstupňové overovanie',
+ 'users_mfa_desc' => 'Pre vyššiu úroveň bezpečnosti si nastavte viacúrovňové prihlasovanie.',
+ 'users_mfa_x_methods' => ':count nakonfigurované metódy|:count nakonfigurovaných metód',
+ 'users_mfa_configure' => 'Konfigurovať metódy',
+
+ // API Tokens
+ 'user_api_token_create' => 'Vytvoriť API token',
+ 'user_api_token_name' => 'Názov',
+ 'user_api_token_name_desc' => 'Dajte svojmu tokenu čitateľný názov ako budúcu pripomienku jeho zamýšľaného účelu.',
+ 'user_api_token_expiry' => 'Dátum expirácie',
+ 'user_api_token_expiry_desc' => 'Nastavte dátum, kedy platnosť tohto tokenu vyprší. Po tomto dátume už žiadosti uskutočnené pomocou tohto tokenu nebudú fungovať. Ak toto pole ponecháte prázdne, nastaví sa uplynutie platnosti o 100 rokov do budúcnosti.',
+ 'user_api_token_create_secret_message' => 'Ihneď po vytvorení tohto tokenu sa vygeneruje a zobrazí "Token ID" a "Token Secret". Kľúč sa zobrazí iba raz, takže pred pokračovaním nezabudnite skopírovať hodnotu na bezpečné a zabezpečené miesto.',
+ 'user_api_token' => 'API Token',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'Toto je neupraviteľný identifikátor vygenerovaný systémom pre tento token, ktorý bude potrebné poskytnúť v žiadostiach API.',
+ 'user_api_token_secret' => 'Kľúč',
+ 'user_api_token_secret_desc' => 'Toto je systémom vygenerovaný kľúč pre tento token, ktorý bude potrebné poskytnúť v žiadostiach API. Toto sa zobrazí iba raz, takže túto hodnotu skopírujte na bezpečné a bezpečné miesto.',
+ 'user_api_token_created' => 'Token vytvorený :timeAgo',
+ 'user_api_token_updated' => 'Token upravený :timeAgo',
+ 'user_api_token_delete' => 'Zmazať Token',
+ 'user_api_token_delete_warning' => 'Týmto sa tento token API s názvom \':tokenName\' úplne odstráni zo systému.',
+ 'user_api_token_delete_confirm' => 'Určite chcete odstrániť tento token?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooky',
+ 'webhooks_index_desc' => 'Webhooky predstavujú spôsob odosielania údajov na externé adresy URL, keď sa v systéme vyskytnú určité akcie a udalosti, čo umožňuje integráciu založenú na udalostiach s externými platformami, ako sú systémy na odosielanie správ alebo notifikačné systémy.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'Vytvoriť nový webhook',
+ 'webhooks_none_created' => 'Žiadne webhooky zatiaľ neboli vytvorené.',
+ 'webhooks_edit' => 'Upraviť Webhook',
+ 'webhooks_save' => 'Uložiť Webhook',
+ 'webhooks_details' => 'Detaily Webhooku',
+ 'webhooks_details_desc' => 'Poskytnite užívateľsky prívetivý názov a koncový bod POST ako miesto, kam sa majú odosielať údaje webhooku.',
+ 'webhooks_events' => 'Udalosti webhooku',
+ 'webhooks_events_desc' => 'Vyberte všetky udalosti, ktoré by mali spustiť volanie tohto webhooku.',
+ 'webhooks_events_warning' => 'Majte na pamäti, že tieto udalosti sa spustia pre všetky vybraté udalosti, aj keď sa používajú vlastné povolenia. Uistite sa, že používanie tohto webhooku neodhalí dôverný obsah.',
+ 'webhooks_events_all' => 'Všetky systémové udalosti',
+ 'webhooks_name' => 'Názov webhooku',
+ 'webhooks_timeout' => 'Časový limit žiadosti webhooku (v sekundách)',
+ 'webhooks_endpoint' => 'Koncový bod webhooku',
+ 'webhooks_active' => 'Webhook je aktívny',
+ 'webhook_events_table_header' => 'Udalosti',
+ 'webhooks_delete' => 'Odstrániť webhook',
+ 'webhooks_delete_warning' => 'Týmto sa tento webhook s názvom „:webhookName“ úplne odstráni zo systému.',
+ 'webhooks_delete_confirm' => 'Naozaj chcete odstrániť tento webhook?',
+ 'webhooks_format_example' => 'Príklad formátu webhooku',
+ 'webhooks_format_example_desc' => 'Údaje webhooku sa odosielajú ako žiadosť POST do nakonfigurovaného koncového bodu ako JSON podľa nižšie uvedeného formátu. Vlastnosti „related_item“ a „url“ sú voliteľné a budú závisieť od typu spustenej udalosti.',
+ 'webhooks_status' => 'Stav webhooku',
+ 'webhooks_last_called' => 'Naposledy volané:',
+ 'webhooks_last_errored' => 'Posledná chyba:',
+ 'webhooks_last_error_message' => 'Posledná chybová správa:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/sk/validation.php b/lang/sk/validation.php
new file mode 100644
index 00000000000..60063752bf4
--- /dev/null
+++ b/lang/sk/validation.php
@@ -0,0 +1,123 @@
+ ':attribute musí byť akceptovaný.',
+ 'active_url' => ':attribute nie je platná URL.',
+ 'after' => ':attribute musí byť dátum po :date.',
+ 'alpha' => ':attribute môže obsahovať iba písmená.',
+ 'alpha_dash' => ':attribute môže obsahovať iba písmená, čísla a pomlčky.',
+ 'alpha_num' => ':attribute môže obsahovať iba písmená a čísla.',
+ 'array' => ':attribute musí byť pole.',
+ 'backup_codes' => 'Poskytnutý kód nie je platný alebo už bol použitý.',
+ 'before' => ':attribute musí byť dátum pred :date.',
+ 'between' => [
+ 'numeric' => ':attribute musí byť medzi :min a :max.',
+ 'file' => ':attribute musí byť medzi :min a :max kilobajtmi.',
+ 'string' => ':attribute musí byť medzi :min a :max znakmi.',
+ 'array' => ':attribute musí byť medzi :min a :max položkami.',
+ ],
+ 'boolean' => ':attribute pole musí byť true alebo false.',
+ 'confirmed' => ':attribute potvrdenie nesedí.',
+ 'date' => ':attribute nie je platný dátum.',
+ 'date_format' => ':attribute nesedí s formátom :format.',
+ 'different' => ':attribute a :other musia byť rozdielne.',
+ 'digits' => ':attribute musí mať :digits číslic.',
+ 'digits_between' => ':attribute musí mať medzi :min a :max číslicami.',
+ 'email' => ':attribute musí byť platná emailová adresa.',
+ 'ends_with' => ':attribute musí končiť jednou z nasledujúcich hodnôt :values',
+ 'file' => ':attribute musí byť uvedený ako platný súbor.',
+ 'filled' => 'Políčko :attribute je povinné.',
+ 'gt' => [
+ 'numeric' => 'Hodnota :attribute musí byť väčšia ako :value.',
+ 'file' => ':attribute musí mať viac kilobajtov ako :value.',
+ 'string' => ':attribute musí mať viac znakov ako :value.',
+ 'array' => ':attribute musí mať viac ako :value položiek.',
+ ],
+ 'gte' => [
+ 'numeric' => 'Hodnota :attribute musí byť väčšia alebo rovná ako :value.',
+ 'file' => ':attribute musí mať rovnaký alebo väčší počet kilobajtov ako :value.',
+ 'string' => ':attribute musí byť väčší alebo rovnaký ako :value znakov.',
+ 'array' => ':attribute musí mať :value položiek alebo viac.',
+ ],
+ 'exists' => 'Vybraný :attribute nie je platný.',
+ 'image' => ':attribute musí byť obrázok.',
+ 'image_extension' => ':attribute musí mať platné a podporované rozšírenie obrázka.',
+ 'in' => 'Vybraný :attribute je neplatný.',
+ 'integer' => ':attribute musí byť celé číslo.',
+ 'ip' => ':attribute musí byť platná IP adresa.',
+ 'ipv4' => ':attribute musí byť platná adresa IPv4.',
+ 'ipv6' => ':attribute musí byť platná IPv6 adresa.',
+ 'json' => ':attribute musí byť platný JSON reťazec.',
+ 'lt' => [
+ 'numeric' => 'Hodnota :attribute musí byť menšia ako :value.',
+ 'file' => ':attribute musí mať menej kilobajtov ako :value.',
+ 'string' => ':attribute musí mať menej znakov ako :value.',
+ 'array' => ':attribute musí mať menej položiek ako :value.',
+ ],
+ 'lte' => [
+ 'numeric' => 'Hodnota :attribute musí byť menšia alebo rovná ako :value.',
+ 'file' => ':attribute musí mať rovnaký alebo menší počet kilobajtov ako :value.',
+ 'string' => ':attribute musí mať rovnaký alebo menší počet znakov ako :value.',
+ 'array' => ':attribute nesmie mať viac ako :value položiek.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute nesmie byť väčší ako :max.',
+ 'file' => ':attribute nesmie byť väčší ako :max kilobajtov.',
+ 'string' => ':attribute nesmie byť dlhší ako :max znakov.',
+ 'array' => ':attribute nesmie mať viac ako :max položiek.',
+ ],
+ 'mimes' => ':attribute musí byť súbor typu: :values.',
+ 'min' => [
+ 'numeric' => ':attribute musí byť aspoň :min.',
+ 'file' => ':attribute musí mať aspoň :min kilobajtov.',
+ 'string' => ':attribute musí mať aspoň :min znakov.',
+ 'array' => ':attribute musí mať aspoň :min položiek.',
+ ],
+ 'not_in' => 'Vybraný :attribute je neplatný.',
+ 'not_regex' => ':attribute formát je neplatný.',
+ 'numeric' => ':attribute musí byť číslo.',
+ 'regex' => ':attribute formát je neplatný.',
+ 'required' => 'Políčko :attribute je povinné.',
+ 'required_if' => 'Políčko :attribute je povinné ak :other je :value.',
+ 'required_with' => 'Políčko :attribute je povinné ak :values existuje.',
+ 'required_with_all' => 'Políčko :attribute je povinné ak :values existuje.',
+ 'required_without' => 'Políčko :attribute je povinné aj :values neexistuje.',
+ 'required_without_all' => 'Políčko :attribute je povinné ak ani jedno z :values neexistuje.',
+ 'same' => ':attribute a :other musia byť rovnaké.',
+ 'safe_url' => 'Poskytnutý odkaz nemusí byť bezpečný.',
+ 'size' => [
+ 'numeric' => ':attribute musí byť :size.',
+ 'file' => ':attribute musí mať :size kilobajtov.',
+ 'string' => ':attribute musí mať :size znakov.',
+ 'array' => ':attribute musí obsahovať :size položiek.',
+ ],
+ 'string' => ':attribute musí byť reťazec.',
+ 'timezone' => ':attribute musí byť plantá časová zóna.',
+ 'totp' => 'Poskytnutý kód nie je platný alebo už bol použitý.',
+ 'unique' => ':attribute je už použité.',
+ 'url' => ':attribute formát je neplatný.',
+ 'uploaded' => 'Súbor sa nepodarilo nahrať. Server nemusí akceptovať súbory tejto veľkosti.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Vyžaduje sa potvrdenie hesla',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/sl/activities.php b/lang/sl/activities.php
new file mode 100644
index 00000000000..117c73ca186
--- /dev/null
+++ b/lang/sl/activities.php
@@ -0,0 +1,140 @@
+ 'ustvarjena stran',
+ 'page_create_notification' => 'Stran uspešno ustvarjena',
+ 'page_update' => 'posodobljena stran',
+ 'page_update_notification' => 'Stran uspešno posodobljena',
+ 'page_delete' => 'izbrisana stran',
+ 'page_delete_notification' => 'Stran uspešno izbrisana',
+ 'page_restore' => 'obnovljena stran',
+ 'page_restore_notification' => 'Stran uspešno obnovljena',
+ 'page_move' => 'premaknjena stran',
+ 'page_move_notification' => 'Stran uspešno premaknjena',
+
+ // Chapters
+ 'chapter_create' => 'ustvarjeno poglavje',
+ 'chapter_create_notification' => 'Poglavje uspešno ustvarjeno',
+ 'chapter_update' => 'posodobljeno poglavje',
+ 'chapter_update_notification' => 'Poglavje uspešno posodobljeno',
+ 'chapter_delete' => 'izbrisano poglavje',
+ 'chapter_delete_notification' => 'Poglavje uspešno izbrisano',
+ 'chapter_move' => 'premaknjeno poglavje',
+ 'chapter_move_notification' => 'Poglavje uspešno premaknjeno',
+
+ // Books
+ 'book_create' => 'knjiga ustvarjena',
+ 'book_create_notification' => 'Knjiga uspešno ustvarjena',
+ 'book_create_from_chapter' => 'poglavje pretvorjeno v knjigo',
+ 'book_create_from_chapter_notification' => 'Poglavje uspešno pretvorjeno v knjigo',
+ 'book_update' => 'knjiga posodobljena',
+ 'book_update_notification' => 'Knjiga uspešno posodobljena',
+ 'book_delete' => 'izbrisana knjiga',
+ 'book_delete_notification' => 'Knjiga uspešno izbrisana',
+ 'book_sort' => 'razvrščena knjiga',
+ 'book_sort_notification' => 'Knjiga uspešno razvrščena',
+
+ // Bookshelves
+ 'bookshelf_create' => 'knjižna polica ustvarjena',
+ 'bookshelf_create_notification' => 'Knjižna polica uspešno ustvarjena',
+ 'bookshelf_create_from_book' => 'knjiga pretvorjena v knjižno polico',
+ 'bookshelf_create_from_book_notification' => 'Knjiga uspešno pretvorjena v knjižno polico',
+ 'bookshelf_update' => 'knjižna polica posodobljena',
+ 'bookshelf_update_notification' => 'Knjižna polica uspešno posodobljena',
+ 'bookshelf_delete' => 'knjižna polica izbrisana',
+ 'bookshelf_delete_notification' => 'Knjižna polica uspešno izbrisana',
+
+ // Revisions
+ 'revision_restore' => 'obnovljena različica',
+ 'revision_delete' => 'izbrisana različica',
+ 'revision_delete_notification' => 'Različica uspešno izbrisana',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" dodan med priljubljene',
+ 'favourite_remove_notification' => '":name" odstranjen iz priljubljenih',
+
+ // Watching
+ 'watch_update_level_notification' => 'Nastavitve spremljanja uspešno posodobljene',
+
+ // Auth
+ 'auth_login' => 'prijavljen',
+ 'auth_register' => 'registriran kot nov uporabnik',
+ 'auth_password_reset_request' => 'zahteva ponastavitev uporabniškega gesla',
+ 'auth_password_reset_update' => 'ponastavitev uporabniškega gesla',
+ 'mfa_setup_method' => 'nastavljena metoda MFA',
+ 'mfa_setup_method_notification' => 'Večfaktorska avtentikacija (MFA) uspešno nastavljena',
+ 'mfa_remove_method' => 'odstranjena metoda MFA',
+ 'mfa_remove_method_notification' => 'Večfaktorska avtentikacija (MFA) uspešno odstranjena',
+
+ // Settings
+ 'settings_update' => 'posodobitev nastavitev',
+ 'settings_update_notification' => 'Nastavitve uspešno posodobljene',
+ 'maintenance_action_run' => 'zagnano vzdrževanje',
+
+ // Webhooks
+ 'webhook_create' => 'ustvarjen webhook',
+ 'webhook_create_notification' => 'Webhook uspešno ustvarjen',
+ 'webhook_update' => 'posodobljen webhook',
+ 'webhook_update_notification' => 'Webhook uspešno posodobljen',
+ 'webhook_delete' => 'izbrisan webhook',
+ 'webhook_delete_notification' => 'Webhook uspešno izbrisan',
+
+ // Imports
+ 'import_create' => 'created import',
+ 'import_create_notification' => 'Import successfully uploaded',
+ 'import_run' => 'updated import',
+ 'import_run_notification' => 'Content successfully imported',
+ 'import_delete' => 'deleted import',
+ 'import_delete_notification' => 'Import successfully deleted',
+
+ // Users
+ 'user_create' => 'ustvarjen uporabnik',
+ 'user_create_notification' => 'Uporabnik uspešno ustvarjen',
+ 'user_update' => 'posodobljen uporabnik',
+ 'user_update_notification' => 'Uporabnik uspešno posodobljen',
+ 'user_delete' => 'uporabnik izbrisan',
+ 'user_delete_notification' => 'Uporabnik uspešno izbrisan',
+
+ // API Tokens
+ 'api_token_create' => 'ustvarjen žeton API',
+ 'api_token_create_notification' => 'Žeton API uspešno ustvarjen',
+ 'api_token_update' => 'posodobljen žeton API',
+ 'api_token_update_notification' => 'Žeton API uspešno posodobljen',
+ 'api_token_delete' => 'izbrisan žeton API',
+ 'api_token_delete_notification' => 'Žeton API uspešno izbrisan',
+
+ // Roles
+ 'role_create' => 'ustvarjena vloga',
+ 'role_create_notification' => 'Vloga uspešno ustvarjena',
+ 'role_update' => 'posodobljena vloga',
+ 'role_update_notification' => 'Vloga uspešno posodobljena',
+ 'role_delete' => 'izbrisana vloga',
+ 'role_delete_notification' => 'Vloga uspešno izbrisana',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'izpraznjen koš',
+ 'recycle_bin_restore' => 'obnovljeno iz koša',
+ 'recycle_bin_destroy' => 'odstranjeno iz koša',
+
+ // Comments
+ 'commented_on' => 'komentar na',
+ 'comment_create' => 'dodan komentar',
+ 'comment_update' => 'posodobljen komentar',
+ 'comment_delete' => 'izbrisan komentar',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'pravice so posodobljene',
+];
diff --git a/lang/sl/auth.php b/lang/sl/auth.php
new file mode 100644
index 00000000000..e06d823e7cd
--- /dev/null
+++ b/lang/sl/auth.php
@@ -0,0 +1,117 @@
+ 'Poverilnice se ne ujemajo s podatki v naši bazi.',
+ 'throttle' => 'Prekoračili ste število možnih prijav. Poskusite znova čez :seconds sekund.',
+
+ // Login & Register
+ 'sign_up' => 'Registracija',
+ 'log_in' => 'Prijavi se',
+ 'log_in_with' => 'Prijavi se z :socialDriver',
+ 'sign_up_with' => 'Registriraj se z :socialDriver',
+ 'logout' => 'Odjavi se',
+
+ 'name' => 'Ime',
+ 'username' => 'Uporabniško ime',
+ 'email' => 'E-pošta',
+ 'password' => 'Geslo',
+ 'password_confirm' => 'Potrdi geslo',
+ 'password_hint' => 'Must be at least 8 characters',
+ 'forgot_password' => 'Pozabljeno geslo?',
+ 'remember_me' => 'Zapomni si me',
+ 'ldap_email_hint' => 'Prosimo vpišite e-poštni naslov za ta račun.',
+ 'create_account' => 'Ustvari račun',
+ 'already_have_account' => 'Že imate račun?',
+ 'dont_have_account' => 'Nimaš računa?',
+ 'social_login' => 'Prijava z računi družbenih omrežij',
+ 'social_registration' => 'Registracija z družbenim omrežjem',
+ 'social_registration_text' => 'Registriraj in prijavi se z uporabo drugih možnosti.',
+
+ 'register_thanks' => 'Hvala za registracijo!',
+ 'register_confirm' => 'Prosimo preverite vaš e-poštni predal in kliknite na potrditveni gumb za dostop :appName.',
+ 'registrations_disabled' => 'Registracija trenutno ni mogoča',
+ 'registration_email_domain_invalid' => 'Ta e-poštna domena nima dostopa do te aplikacije',
+ 'register_success' => 'Hvala za registracijo! Sedaj ste registrirani in prijavljeni.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Attempting Login',
+ 'auto_init_starting_desc' => 'Kontaktiram tvoj sistem za preverjanje pristnosti za pričetek procesa prijave. V primeru, da se nič ne zgodi v naslednjih 5 sekundah, klikni spodnjo povezavo.',
+ 'auto_init_start_link' => 'Proceed with authentication',
+
+ // Password Reset
+ 'reset_password' => 'Ponastavi geslo',
+ 'reset_password_send_instructions' => 'Spodaj vpišite vaš e-poštni naslov in prejeli boste e-pošto s povezavo za ponastavitev gesla.',
+ 'reset_password_send_button' => 'Pošlji povezavo za ponastavitev',
+ 'reset_password_sent' => 'V kolikor e-poštni naslov :email obstaja v sistemu, bo nanj poslana povezava za ponastavitev gesla.',
+ 'reset_password_success' => 'Vaše geslo je bilo uspešno spremenjeno.',
+ 'email_reset_subject' => 'Ponastavi svoje :appName geslo',
+ 'email_reset_text' => 'To e-poštno sporočilo ste prejeli, ker smo prejeli zahtevo za ponastavitev gesla za vaš račun.',
+ 'email_reset_not_requested' => 'Če niste zahtevali ponastavitve gesla, vam ni potrebno ničesar storiti.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Potrdi svojo e-pošto za :appName',
+ 'email_confirm_greeting' => 'Hvala ker ste se pridružili :appName!',
+ 'email_confirm_text' => 'Potrdite svoj e-naslov s klikom spodnjega gumba:',
+ 'email_confirm_action' => 'Potrdi e-pošto',
+ 'email_confirm_send_error' => 'E-poštna potrditev je zahtevana ampak sistem ni mogel poslati e-pošte. Kontaktirajte administratorja, da zagotovite, da je e-pošta pravilno nastavljena.',
+ 'email_confirm_success' => 'Your email has been confirmed! You should now be able to login using this email address.',
+ 'email_confirm_resent' => 'Poslali smo vam potrditveno sporočilo. Prosimo preverite svojo elektronsko pošto.',
+ 'email_confirm_thanks' => 'Thanks for confirming!',
+ 'email_confirm_thanks_desc' => 'Please wait a moment while your confirmation is handled. If you are not redirected after 3 seconds press the "Continue" link below to proceed.',
+
+ 'email_not_confirmed' => 'Elektronski naslov ni potrjen',
+ 'email_not_confirmed_text' => 'Vaš e-naslov še ni bil potrjen.',
+ 'email_not_confirmed_click_link' => 'Prosimo kliknite na link v e-poštnem sporočilu, ki ste ga prejeli kmalu po registraciji.',
+ 'email_not_confirmed_resend' => 'Če ne najdete e-pošte jo lahko ponovno pošljete s potrditvijo obrazca.',
+ 'email_not_confirmed_resend_button' => 'Ponovno pošlji potrditveno e-pošto',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Povabljen si bil da se pridružiš :appName!',
+ 'user_invite_email_greeting' => 'Račun je bil ustvarjen zate na :appName.',
+ 'user_invite_email_text' => 'Klikni na spodnji gumb, da si nastaviš geslo in dobiš dostop:',
+ 'user_invite_email_action' => 'Nastavi geslo za račun',
+ 'user_invite_page_welcome' => 'Dobrodošli na :appName!',
+ 'user_invite_page_text' => 'Za zaključiti in pridobiti dostop si morate nastaviti geslo, ki bo uporabljeno za prijavo v :appName.',
+ 'user_invite_page_confirm_button' => 'Potrdi geslo',
+ 'user_invite_success_login' => 'Password set, you should now be able to login using your set password to access :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Setup Multi-Factor Authentication',
+ 'mfa_setup_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'mfa_setup_configured' => 'Already configured',
+ 'mfa_setup_reconfigure' => 'Reconfigure',
+ 'mfa_setup_remove_confirmation' => 'Are you sure you want to remove this multi-factor authentication method?',
+ 'mfa_setup_action' => 'Setup',
+ 'mfa_backup_codes_usage_limit_warning' => 'You have less than 5 backup codes remaining, Please generate and store a new set before you run out of codes to prevent being locked out of your account.',
+ 'mfa_option_totp_title' => 'Mobile App',
+ 'mfa_option_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Backup Codes',
+ 'mfa_option_backup_codes_desc' => 'Generates a set of one-time-use backup codes which you\'ll enter on login to verify your identity. Make sure to store these in a safe & secure place.',
+ 'mfa_gen_confirm_and_enable' => 'Confirm and Enable',
+ 'mfa_gen_backup_codes_title' => 'Backup Codes Setup',
+ 'mfa_gen_backup_codes_desc' => 'Store the below list of codes in a safe place. When accessing the system you\'ll be able to use one of the codes as a second authentication mechanism.',
+ 'mfa_gen_backup_codes_download' => 'Download Codes',
+ 'mfa_gen_backup_codes_usage_warning' => 'Each code can only be used once',
+ 'mfa_gen_totp_title' => 'Mobile App Setup',
+ 'mfa_gen_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Scan the QR code below using your preferred authentication app to get started.',
+ 'mfa_gen_totp_verify_setup' => 'Verify Setup',
+ 'mfa_gen_totp_verify_setup_desc' => 'Verify that all is working by entering a code, generated within your authentication app, in the input box below:',
+ 'mfa_gen_totp_provide_code_here' => 'Provide your app generated code here',
+ 'mfa_verify_access' => 'Verify Access',
+ 'mfa_verify_access_desc' => 'Your user account requires you to confirm your identity via an additional level of verification before you\'re granted access. Verify using one of your configured methods to continue.',
+ 'mfa_verify_no_methods' => 'No Methods Configured',
+ 'mfa_verify_no_methods_desc' => 'No multi-factor authentication methods could be found for your account. You\'ll need to set up at least one method before you gain access.',
+ 'mfa_verify_use_totp' => 'Verify using a mobile app',
+ 'mfa_verify_use_backup_codes' => 'Verify using a backup code',
+ 'mfa_verify_backup_code' => 'Backup Code',
+ 'mfa_verify_backup_code_desc' => 'Enter one of your remaining backup codes below:',
+ 'mfa_verify_backup_code_enter_here' => 'Enter backup code here',
+ 'mfa_verify_totp_desc' => 'Enter the code, generated using your mobile app, below:',
+ 'mfa_setup_login_notification' => 'Multi-factor method configured, Please now login again using the configured method.',
+];
diff --git a/lang/sl/common.php b/lang/sl/common.php
new file mode 100644
index 00000000000..0309237a973
--- /dev/null
+++ b/lang/sl/common.php
@@ -0,0 +1,115 @@
+ 'Prekliči',
+ 'close' => 'Close',
+ 'confirm' => 'Potrdi',
+ 'back' => 'Nazaj',
+ 'save' => 'Shrani',
+ 'continue' => 'Naprej',
+ 'select' => 'Izberi',
+ 'toggle_all' => 'Vklopi vse',
+ 'more' => 'Več',
+
+ // Form Labels
+ 'name' => 'Naziv',
+ 'description' => 'Opis',
+ 'role' => 'Vloga',
+ 'cover_image' => 'Naslovna slika',
+ 'cover_image_description' => 'This image should be approximately 440x250px although it will be flexibly scaled & cropped to fit the user interface in different scenarios as required, so actual dimensions for display will differ.',
+
+ // Actions
+ 'actions' => 'Dejanja',
+ 'view' => 'Pogled',
+ 'view_all' => 'Prikaži vse',
+ 'new' => 'New',
+ 'create' => 'Ustvari',
+ 'update' => 'Posodobi',
+ 'edit' => 'Uredi',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Razvrsti',
+ 'move' => 'Premakni',
+ 'copy' => 'Kopiraj',
+ 'reply' => 'Odgovori',
+ 'delete' => 'Izbriši',
+ 'delete_confirm' => 'Potrdi brisanje',
+ 'search' => 'Išči',
+ 'search_clear' => 'Razveljavi iskanje',
+ 'reset' => 'Ponastavi',
+ 'remove' => 'Odstrani',
+ 'add' => 'Dodaj',
+ 'configure' => 'Configure',
+ 'manage' => 'Manage',
+ 'fullscreen' => 'Celozaslonski način',
+ 'favourite' => 'Priljubljeno',
+ 'unfavourite' => 'Ni priljubljeno',
+ 'next' => 'Naprej',
+ 'previous' => 'Nazaj',
+ 'filter_active' => 'Active Filter:',
+ 'filter_clear' => 'Počisti filter',
+ 'download' => 'Download',
+ 'open_in_tab' => 'Open in Tab',
+ 'open' => 'Open',
+
+ // Sort Options
+ 'sort_options' => 'Možnosti razvrščanja',
+ 'sort_direction_toggle' => 'Preklopi smer razvrščanja',
+ 'sort_ascending' => 'Razvrsti naraščajoče',
+ 'sort_descending' => 'Razvrsti padajoče',
+ 'sort_name' => 'Ime',
+ 'sort_default' => 'Default',
+ 'sort_created_at' => 'Datum nastanka',
+ 'sort_updated_at' => 'Datum posodobitve',
+
+ // Misc
+ 'deleted_user' => 'Izbrisan uporabnik',
+ 'no_activity' => 'Ni aktivnosti za prikaz',
+ 'no_items' => 'Na voljo ni nobenega elementa',
+ 'back_to_top' => 'Nazaj na vrh',
+ 'skip_to_main_content' => 'Skip to main content',
+ 'toggle_details' => 'Preklopi podrobnosti',
+ 'toggle_thumbnails' => 'Preklopi sličice',
+ 'details' => 'Podrobnosti',
+ 'grid_view' => 'Mrežni pogled',
+ 'list_view' => 'Seznam',
+ 'default' => 'Privzeto',
+ 'breadcrumb' => 'Pot',
+ 'status' => 'Status',
+ 'status_active' => 'Active',
+ 'status_inactive' => 'Inactive',
+ 'never' => 'Never',
+ 'none' => 'None',
+
+ // Header
+ 'homepage' => 'Homepage',
+ 'header_menu_expand' => 'Expand Header Menu',
+ 'profile_menu' => 'Meni profila',
+ 'view_profile' => 'Ogled profila',
+ 'edit_profile' => 'Uredi profil',
+ 'dark_mode' => 'Način temnega zaslona',
+ 'light_mode' => 'Način svetlega zaslona',
+ 'global_search' => 'Globalno iskanje',
+
+ // Layout tabs
+ 'tab_info' => 'Informacije',
+ 'tab_info_label' => 'Tab: Show Secondary Information',
+ 'tab_content' => 'Vsebina',
+ 'tab_content_label' => 'Tab: Show Primary Content',
+
+ // Email Content
+ 'email_action_help' => 'V kolikor imate težave s klikom na gumb ":actionText", kopirajte in prilepite spodnjo povezavo v vaš brskalnik:',
+ 'email_rights' => 'Vse pravice pridržane',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Pravilnik o zasebnosti',
+ 'terms_of_service' => 'Pogoji uporabe',
+
+ // OpenSearch
+ 'opensearch_description' => 'Search :appName',
+];
diff --git a/lang/sl/components.php b/lang/sl/components.php
new file mode 100644
index 00000000000..6cd92cc8d96
--- /dev/null
+++ b/lang/sl/components.php
@@ -0,0 +1,46 @@
+ 'Izberi slike',
+ 'image_list' => 'Image List',
+ 'image_details' => 'Image Details',
+ 'image_upload' => 'Upload Image',
+ 'image_intro' => 'Here you can select and manage images that have been previously uploaded to the system.',
+ 'image_intro_upload' => 'Upload a new image by dragging an image file into this window, or by using the "Upload Image" button above.',
+ 'image_all' => 'Vse',
+ 'image_all_title' => 'Prikaži vse slike',
+ 'image_book_title' => 'Prikaži slike naložene v to knjigo',
+ 'image_page_title' => 'Preglej slike naložene na to stran',
+ 'image_search_hint' => 'Iskanje po nazivu slike',
+ 'image_uploaded' => 'Naloženo :uploadedDate',
+ 'image_uploaded_by' => 'Uploaded by :userName',
+ 'image_uploaded_to' => 'Uploaded to :pageLink',
+ 'image_updated' => 'Updated :updateDate',
+ 'image_load_more' => 'Dodatno naloži',
+ 'image_image_name' => 'Ime slike',
+ 'image_delete_used' => 'Ta slika je uporabljena na spodnjih straneh.',
+ 'image_delete_confirm_text' => 'Ste prepričani, da želite izbrisati to sliko?',
+ 'image_select_image' => 'Izberite sliko',
+ 'image_dropzone' => 'Povlecite slike ali kliknite tukaj za nalaganje',
+ 'image_dropzone_drop' => 'Drop images here to upload',
+ 'images_deleted' => 'Slike so bile izbrisane',
+ 'image_preview' => 'Predogled slike',
+ 'image_upload_success' => 'Slika uspešno naložena',
+ 'image_update_success' => 'Podatki slike uspešno posodobljeni',
+ 'image_delete_success' => 'Slika uspešno izbrisana',
+ 'image_replace' => 'Replace Image',
+ 'image_replace_success' => 'Image file successfully updated',
+ 'image_rebuild_thumbs' => 'Regenerate Size Variations',
+ 'image_rebuild_thumbs_success' => 'Image size variations successfully rebuilt!',
+
+ // Code Editor
+ 'code_editor' => 'Uredi kodo',
+ 'code_language' => 'Koda jezika',
+ 'code_content' => 'Koda vsebine',
+ 'code_session_history' => 'Zgodovina seje',
+ 'code_save' => 'Shrani kodo',
+];
diff --git a/lang/sl/editor.php b/lang/sl/editor.php
new file mode 100644
index 00000000000..3afcc23124e
--- /dev/null
+++ b/lang/sl/editor.php
@@ -0,0 +1,182 @@
+ 'Splošno',
+ 'advanced' => 'Napredno',
+ 'none' => 'Brez',
+ 'cancel' => 'Prekliči',
+ 'save' => 'Shrani',
+ 'close' => 'Zapri',
+ 'apply' => 'Apply',
+ 'undo' => 'Razveljavi',
+ 'redo' => 'Ponovi',
+ 'left' => 'Levo',
+ 'center' => 'Sredinsko',
+ 'right' => 'Desno',
+ 'top' => 'Zgoraj',
+ 'middle' => 'Sredina',
+ 'bottom' => 'Spodaj',
+ 'width' => 'Širina',
+ 'height' => 'Višina',
+ 'More' => 'Več',
+ 'select' => 'Izberi ...',
+
+ // Toolbar
+ 'formats' => 'Oblike',
+ 'header_large' => 'Velika glava',
+ 'header_medium' => 'Srednja glava',
+ 'header_small' => 'Majhna glava',
+ 'header_tiny' => 'Drobna glava',
+ 'paragraph' => 'Odstavek',
+ 'blockquote' => 'Navedek',
+ 'inline_code' => 'Vgrajena koda',
+ 'callouts' => 'Opombe',
+ 'callout_information' => 'Informacija',
+ 'callout_success' => 'Uspešno',
+ 'callout_warning' => 'Opozorilo',
+ 'callout_danger' => 'Nevarnost',
+ 'bold' => 'Krepko',
+ 'italic' => 'Ležeče',
+ 'underline' => 'Podčrtano',
+ 'strikethrough' => 'Prečrtano',
+ 'superscript' => 'Nadpisano',
+ 'subscript' => 'Podpisano',
+ 'text_color' => 'Barva besedila',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Barva po meri',
+ 'remove_color' => 'Odstrani barvo',
+ 'background_color' => 'Barva ozadja',
+ 'align_left' => 'Poravnaj levo',
+ 'align_center' => 'Poravnaj na sredino',
+ 'align_right' => 'Poravnaj desno',
+ 'align_justify' => 'Poravnaj obojestransko',
+ 'list_bullet' => 'Seznam z oznakami',
+ 'list_numbered' => 'Oštevilčen seznam',
+ 'list_task' => 'Seznam opravil',
+ 'indent_increase' => 'Povečaj zamik',
+ 'indent_decrease' => 'Zmanjšaj zamik',
+ 'table' => 'Tabela',
+ 'insert_image' => 'Vstavi sliko',
+ 'insert_image_title' => 'Vstavi/Obdelaj sliko',
+ 'insert_link' => 'Vstavi/Obdelaj povezavo',
+ 'insert_link_title' => 'Vstavi/obdelaj povezavo',
+ 'insert_horizontal_line' => 'Vstavi vodoravno črto',
+ 'insert_code_block' => 'Insert code block',
+ 'edit_code_block' => 'Edit code block',
+ 'insert_drawing' => 'Vstavi/Obdelaj risbo',
+ 'drawing_manager' => 'Drawing manager',
+ 'insert_media' => 'Insert/edit media',
+ 'insert_media_title' => 'Insert/Edit Media',
+ 'clear_formatting' => 'Odstrani oblikovanje',
+ 'source_code' => 'Izvorna koda',
+ 'source_code_title' => 'Izvorna koda',
+ 'fullscreen' => 'Celozaslonski način',
+ 'image_options' => 'Možnosti za slike',
+
+ // Tables
+ 'table_properties' => 'Lastnosti tabele',
+ 'table_properties_title' => 'Lastnosti tabele',
+ 'delete_table' => 'Izbriši tabelo',
+ 'table_clear_formatting' => 'Odstrani oblikovanje tabele',
+ 'resize_to_contents' => 'Prilagodi vsebini',
+ 'row_header' => 'Glava vrstice',
+ 'insert_row_before' => 'Vstavi vrstico pred',
+ 'insert_row_after' => 'Vstavi vrstico po',
+ 'delete_row' => 'Izbriši vrstico',
+ 'insert_column_before' => 'Vstavi stolpec pred',
+ 'insert_column_after' => 'Vstavi stolpec po',
+ 'delete_column' => 'Izbriši stolpec',
+ 'table_cell' => 'Celica',
+ 'table_row' => 'Vrstica',
+ 'table_column' => 'Stolpec',
+ 'cell_properties' => 'Lastnosti celice',
+ 'cell_properties_title' => 'Lastnosti celice',
+ 'cell_type' => 'Vrsta celice',
+ 'cell_type_cell' => 'Celica',
+ 'cell_scope' => 'Obseg',
+ 'cell_type_header' => 'Naslovna celica',
+ 'merge_cells' => 'Združi celice',
+ 'split_cell' => 'Razdeli celice',
+ 'table_row_group' => 'Skupina vrstic',
+ 'table_column_group' => 'Skupina stolpcev',
+ 'horizontal_align' => 'Vodoravna poravnava',
+ 'vertical_align' => 'Navpična poravnava',
+ 'border_width' => 'Debelina roba',
+ 'border_style' => 'Border style',
+ 'border_color' => 'Border color',
+ 'row_properties' => 'Row properties',
+ 'row_properties_title' => 'Row Properties',
+ 'cut_row' => 'Cut row',
+ 'copy_row' => 'Copy row',
+ 'paste_row_before' => 'Paste row before',
+ 'paste_row_after' => 'Paste row after',
+ 'row_type' => 'Row type',
+ 'row_type_header' => 'Header',
+ 'row_type_body' => 'Body',
+ 'row_type_footer' => 'Footer',
+ 'alignment' => 'Alignment',
+ 'cut_column' => 'Cut column',
+ 'copy_column' => 'Copy column',
+ 'paste_column_before' => 'Paste column before',
+ 'paste_column_after' => 'Paste column after',
+ 'cell_padding' => 'Cell padding',
+ 'cell_spacing' => 'Cell spacing',
+ 'caption' => 'Caption',
+ 'show_caption' => 'Show caption',
+ 'constrain' => 'Constrain proportions',
+ 'cell_border_solid' => 'Solid',
+ 'cell_border_dotted' => 'Dotted',
+ 'cell_border_dashed' => 'Dashed',
+ 'cell_border_double' => 'Double',
+ 'cell_border_groove' => 'Groove',
+ 'cell_border_ridge' => 'Ridge',
+ 'cell_border_inset' => 'Inset',
+ 'cell_border_outset' => 'Outset',
+ 'cell_border_none' => 'None',
+ 'cell_border_hidden' => 'Hidden',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Source',
+ 'alt_desc' => 'Alternative description',
+ 'embed' => 'Embed',
+ 'paste_embed' => 'Paste your embed code below:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Text to display',
+ 'title' => 'Title',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Open link',
+ 'open_link_in' => 'Open link in...',
+ 'open_link_current' => 'Current window',
+ 'open_link_new' => 'New window',
+ 'remove_link' => 'Remove link',
+ 'insert_collapsible' => 'Insert collapsible block',
+ 'collapsible_unwrap' => 'Odpri',
+ 'edit_label' => 'Uredi oznako',
+ 'toggle_open_closed' => 'Odpri/Zapri',
+ 'collapsible_edit' => 'Uredi zložljivi blok',
+ 'toggle_label' => 'Preklopi oznako',
+
+ // About view
+ 'about' => 'O urejevalniku',
+ 'about_title' => 'O Urejevalniku WYSIWYG',
+ 'editor_license' => 'Licenca in avtorske pravice Urejevalnika',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'Urejevalnik je ustvarjen z uporabo :tinyLink pod pogoji licence MIT.',
+ 'editor_tiny_license_link' => 'Podrobnosti o avtorskih pravicah in licenci za TinyMCE lahko preberete tukaj.',
+ 'save_continue' => 'Shrani stran in Nadaljuj',
+ 'callouts_cycle' => '(Večkrat pritisnite, da preklopite med vrstami opomb)',
+ 'link_selector' => 'Povezava do vsebine',
+ 'shortcuts' => 'Bližnjice',
+ 'shortcut' => 'Bližnjica',
+ 'shortcuts_intro' => 'Sledeče bližnjice so na voljo v urejevalniku:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Opis',
+];
diff --git a/lang/sl/entities.php b/lang/sl/entities.php
new file mode 100644
index 00000000000..00ac991811e
--- /dev/null
+++ b/lang/sl/entities.php
@@ -0,0 +1,476 @@
+ 'Nazadnje objavljeno',
+ 'recently_created_pages' => 'Nazadnje objavljene strani',
+ 'recently_updated_pages' => 'Nazadnje posodobljene strani',
+ 'recently_created_chapters' => 'Nazadnje objavljena poglavja',
+ 'recently_created_books' => 'Nazadnje objavljene knjige',
+ 'recently_created_shelves' => 'Nazadnje ustvarjene police',
+ 'recently_update' => 'Nazadnje posodobljeno',
+ 'recently_viewed' => 'Nazadnje prikazano',
+ 'recent_activity' => 'Nedavna dejavnost',
+ 'create_now' => 'Ustvarite eno sedaj',
+ 'revisions' => 'Revizije',
+ 'meta_revision' => 'Številka revizije #:revisionCount',
+ 'meta_created' => 'Ustvarjeno :timeLength',
+ 'meta_created_name' => 'Ustvaril :timeLength uporabnik :user',
+ 'meta_updated' => 'Posodobljeno :timeLength',
+ 'meta_updated_name' => 'Posodobil :timeLength uporabnik :user',
+ 'meta_owned_name' => 'V lasti :user',
+ 'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
+ 'entity_select' => 'Izbira entitete',
+ 'entity_select_lack_permission' => 'You don\'t have the required permissions to select this item',
+ 'images' => 'Slike',
+ 'my_recent_drafts' => 'Moji nedavni osnutki',
+ 'my_recently_viewed' => 'Nedavno prikazano',
+ 'my_most_viewed_favourites' => 'Največkrat gledane priljubljene strani',
+ 'my_favourites' => 'Priljubljene',
+ 'no_pages_viewed' => 'Niste si ogledali še nobene strani',
+ 'no_pages_recently_created' => 'Nedavno ni bila ustvarjena nobena stran',
+ 'no_pages_recently_updated' => 'Nedavno ni bila posodobljena nobena stran',
+ 'export' => 'Izvozi',
+ 'export_html' => 'Vsebuje spletno datoteko',
+ 'export_pdf' => 'PDF datoteka (.pdf)',
+ 'export_text' => 'Navadna besedilna datoteka',
+ 'export_md' => 'Markdown File',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Dovoljenja',
+ 'permissions_desc' => 'Nastavi dovoljenja bolj podrobno, kot to določajo uporabniške vloge.',
+ 'permissions_book_cascade' => 'Permissions set on books will automatically cascade to child chapters and pages, unless they have their own permissions defined.',
+ 'permissions_chapter_cascade' => 'Permissions set on chapters will automatically cascade to child pages, unless they have their own permissions defined.',
+ 'permissions_save' => 'Shrani dovoljenja',
+ 'permissions_owner' => 'Lastnik',
+ 'permissions_role_everyone_else' => 'Everyone Else',
+ 'permissions_role_everyone_else_desc' => 'Set permissions for all roles not specifically overridden.',
+ 'permissions_role_override' => 'Override permissions for role',
+ 'permissions_inherit_defaults' => 'Inherit defaults',
+
+ // Search
+ 'search_results' => 'Rezultati iskanja',
+ 'search_total_results_found' => ':count najdenih rezultatov|:count skupno najdenih rezultatov',
+ 'search_clear' => 'Počisti iskanje',
+ 'search_no_pages' => 'Nobena stran se ne ujema z vašim iskanjem',
+ 'search_for_term' => 'Išči :term',
+ 'search_more' => 'Prikaži več rezultatov',
+ 'search_advanced' => 'Napredno iskanje',
+ 'search_terms' => 'Iskalni izrazi',
+ 'search_content_type' => 'Vrsta vsebine',
+ 'search_exact_matches' => 'Natančno ujemanje',
+ 'search_tags' => 'Iskanje po oznakah',
+ 'search_options' => 'Možnosti',
+ 'search_viewed_by_me' => 'Ogledano',
+ 'search_not_viewed_by_me' => 'Neogledano',
+ 'search_permissions_set' => 'Nastavljena dovoljenja',
+ 'search_created_by_me' => 'Ustvaril sem jaz',
+ 'search_updated_by_me' => 'Posodobil sem jaz',
+ 'search_owned_by_me' => 'Owned by me',
+ 'search_date_options' => 'Možnosti datuma',
+ 'search_updated_before' => 'Posodobljeno pred',
+ 'search_updated_after' => 'Posodobljeno po',
+ 'search_created_before' => 'Ustvarjeno pred',
+ 'search_created_after' => 'Ustvarjeno po',
+ 'search_set_date' => 'Nastavi datum',
+ 'search_update' => 'Išči ponovno',
+
+ // Shelves
+ 'shelf' => 'Polica',
+ 'shelves' => 'Police',
+ 'x_shelves' => ':count Polica|:count Police',
+ 'shelves_empty' => 'Ustvarjena ni bila nobena polica',
+ 'shelves_create' => 'Ustvari novo polico',
+ 'shelves_popular' => 'Priljubljene police',
+ 'shelves_new' => 'Nove police',
+ 'shelves_new_action' => 'Nova polica',
+ 'shelves_popular_empty' => 'Najbolj priljubljene police se bodo pojavile tukaj.',
+ 'shelves_new_empty' => 'Nazadnje ustvarjene police se bodo pojavile tukaj.',
+ 'shelves_save' => 'Shrani polico',
+ 'shelves_books' => 'Knjige na tej polici',
+ 'shelves_add_books' => 'Dodaj knjige na to polico',
+ 'shelves_drag_books' => 'Drag books below to add them to this shelf',
+ 'shelves_empty_contents' => 'Na tej polici ni nobene knjige',
+ 'shelves_edit_and_assign' => 'Uredi knjižno polico za dodajanje knjig',
+ 'shelves_edit_named' => 'Edit Shelf :name',
+ 'shelves_edit' => 'Edit Shelf',
+ 'shelves_delete' => 'Delete Shelf',
+ 'shelves_delete_named' => 'Delete Shelf :name',
+ 'shelves_delete_explain' => "This will delete the shelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Are you sure you want to delete this shelf?',
+ 'shelves_permissions' => 'Shelf Permissions',
+ 'shelves_permissions_updated' => 'Shelf Permissions Updated',
+ 'shelves_permissions_active' => 'Shelf Permissions Active',
+ 'shelves_permissions_cascade_warning' => 'Permissions on shelves do not automatically cascade to contained books. This is because a book can exist on multiple shelves. Permissions can however be copied down to child books using the option found below.',
+ 'shelves_permissions_create' => 'Shelf create permissions are only used for copying permissions to child books using the action below. They do not control the ability to create books.',
+ 'shelves_copy_permissions_to_books' => 'Kopiraj dovoljenja na knjige',
+ 'shelves_copy_permissions' => 'Dovoljenja kopiranja',
+ 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this shelf to all books contained within. Before activating, ensure any changes to the permissions of this shelf have been saved.',
+ 'shelves_copy_permission_success' => 'Shelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'Knjiga',
+ 'books' => 'Knjige',
+ 'x_books' => ':count Knjiga|:count Knjig',
+ 'books_empty' => 'Ustvarjena ni bila nobena knjiga',
+ 'books_popular' => 'Priljubljene knjige',
+ 'books_recent' => 'Zadnje knjige',
+ 'books_new' => 'Nove knjige',
+ 'books_new_action' => 'Nova knjiga',
+ 'books_popular_empty' => 'Tukaj bodo prikazane najbolj priljubljene knjige.',
+ 'books_new_empty' => 'Tukaj bodo prikazane nazadnje ustvarjene knjige.',
+ 'books_create' => 'Ustvari novo knjigo',
+ 'books_delete' => 'Izbriši knjigo',
+ 'books_delete_named' => 'Izbriši knjigo :bookName',
+ 'books_delete_explain' => 'S tem boste izbrisali knjigo z nazivom \':bookName\'. Vse strani in poglavja bodo odstranjena.',
+ 'books_delete_confirmation' => 'Ali ste prepričani, da želite izbrisati to knjigo?',
+ 'books_edit' => 'Uredi knjigo',
+ 'books_edit_named' => 'Uredi knjigo :bookName',
+ 'books_form_book_name' => 'Ime knjige',
+ 'books_save' => 'Shrani knjigo',
+ 'books_permissions' => 'Dovoljenja knjige',
+ 'books_permissions_updated' => 'Posodobljena dovoljenja knjige',
+ 'books_empty_contents' => 'V tej knjigi ni bila ustvarjena še nobena stran ali poglavje.',
+ 'books_empty_create_page' => 'Ustvari novo stran',
+ 'books_empty_sort_current_book' => 'Razvrsti trenutno knjigo',
+ 'books_empty_add_chapter' => 'Dodaj poglavje',
+ 'books_permissions_active' => 'Aktivna dovoljenja knjige',
+ 'books_search_this' => 'Išči v tej knjigi',
+ 'books_navigation' => 'Navigacija po knjigi',
+ 'books_sort' => 'Razvrsti vsebino knjige',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Razvrsti knjigo :bookName',
+ 'books_sort_name' => 'Razvrsti po imenu',
+ 'books_sort_created' => 'Razvrsti po datumu nastanka',
+ 'books_sort_updated' => 'Razvrsti po datumu posodobitve',
+ 'books_sort_chapters_first' => 'Najprej poglavja',
+ 'books_sort_chapters_last' => 'Nazadnje poglavja',
+ 'books_sort_show_other' => 'Prikaži druge knjige',
+ 'books_sort_save' => 'Shrani novo razvrstitev',
+ 'books_sort_show_other_desc' => 'Add other books here to include them in the sort operation, and allow easy cross-book reorganisation.',
+ 'books_sort_move_up' => 'Move Up',
+ 'books_sort_move_down' => 'Move Down',
+ 'books_sort_move_prev_book' => 'Move to Previous Book',
+ 'books_sort_move_next_book' => 'Move to Next Book',
+ 'books_sort_move_prev_chapter' => 'Move Into Previous Chapter',
+ 'books_sort_move_next_chapter' => 'Move Into Next Chapter',
+ 'books_sort_move_book_start' => 'Move to Start of Book',
+ 'books_sort_move_book_end' => 'Move to End of Book',
+ 'books_sort_move_before_chapter' => 'Move to Before Chapter',
+ 'books_sort_move_after_chapter' => 'Move to After Chapter',
+ 'books_copy' => 'Copy Book',
+ 'books_copy_success' => 'Book successfully copied',
+
+ // Chapters
+ 'chapter' => 'Poglavje',
+ 'chapters' => 'Poglavja',
+ 'x_chapters' => ':count Poglavje|:count Poglavja',
+ 'chapters_popular' => 'Priljubljena poglavja',
+ 'chapters_new' => 'Novo poglavje',
+ 'chapters_create' => 'Ustvari novo poglavje',
+ 'chapters_delete' => 'Izbriši poglavje',
+ 'chapters_delete_named' => 'Izbriši poglavje :chapterName',
+ 'chapters_delete_explain' => 'Poglavje z imenom ":chapterName" bo izbrisano. Vse strani znotraj poglavja bodo prav tako izbrisane.',
+ 'chapters_delete_confirm' => 'Ste prepričani, da želite izbrisati to poglavje?',
+ 'chapters_edit' => 'Uredi poglavje',
+ 'chapters_edit_named' => 'Uredi poglavje :chapterName',
+ 'chapters_save' => 'Shrani poglavje',
+ 'chapters_move' => 'Premakni poglavje',
+ 'chapters_move_named' => 'Premakni poglavje :chapterName',
+ 'chapters_copy' => 'Copy Chapter',
+ 'chapters_copy_success' => 'Chapter successfully copied',
+ 'chapters_permissions' => 'Dovoljenja poglavij',
+ 'chapters_empty' => 'V tem poglavju trenutno ni strani.',
+ 'chapters_permissions_active' => 'Dovoljenja poglavij so aktivirana',
+ 'chapters_permissions_success' => 'Posodobljena dovoljenja poglavij',
+ 'chapters_search_this' => 'Išči v tem poglavju',
+ 'chapter_sort_book' => 'Sort Book',
+
+ // Pages
+ 'page' => 'Stran',
+ 'pages' => 'Strani',
+ 'x_pages' => ':count Stran|:count Strani',
+ 'pages_popular' => 'Priljubljene knjige',
+ 'pages_new' => 'Nova stran',
+ 'pages_attachments' => 'Priponke',
+ 'pages_navigation' => 'Navigacija po strani',
+ 'pages_delete' => 'Izbriši stran',
+ 'pages_delete_named' => 'Izbriši stran :pageName',
+ 'pages_delete_draft_named' => 'Izbriši osnutek strani :pageName',
+ 'pages_delete_draft' => 'Izbriši osnutek strani',
+ 'pages_delete_success' => 'Stran izbirsana',
+ 'pages_delete_draft_success' => 'Osnutek strani izbrisan',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Ste prepričani, da želite izbrisati to stran?',
+ 'pages_delete_draft_confirm' => 'Ali ste prepričani, da želite izbrisati ta osnutek?',
+ 'pages_editing_named' => 'Urejanje strani :pageName',
+ 'pages_edit_draft_options' => 'Možnosti osnutka',
+ 'pages_edit_save_draft' => 'Shrani osnutek',
+ 'pages_edit_draft' => 'Uredi osnutek strani',
+ 'pages_editing_draft' => 'Urejanje osnutka',
+ 'pages_editing_page' => 'Urejanje strani',
+ 'pages_edit_draft_save_at' => 'Osnutek shranjen ob ',
+ 'pages_edit_delete_draft' => 'Izbriši osnutek',
+ 'pages_edit_delete_draft_confirm' => 'Are you sure you want to delete your draft page changes? All of your changes, since the last full save, will be lost and the editor will be updated with the latest page non-draft save state.',
+ 'pages_edit_discard_draft' => 'Zavrzi osnutek',
+ 'pages_edit_switch_to_markdown' => 'Switch to Markdown Editor',
+ 'pages_edit_switch_to_markdown_clean' => '(Clean Content)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stable Content)',
+ 'pages_edit_switch_to_wysiwyg' => 'Switch to WYSIWYG Editor',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Opiši spremembe na dokumentu',
+ 'pages_edit_enter_changelog_desc' => 'Vnesite kratek opis sprememb, ki ste jih naredili',
+ 'pages_edit_enter_changelog' => 'Vpišite vsebino sprememb',
+ 'pages_editor_switch_title' => 'Switch Editor',
+ 'pages_editor_switch_are_you_sure' => 'Are you sure you want to change the editor for this page?',
+ 'pages_editor_switch_consider_following' => 'Consider the following when changing editors:',
+ 'pages_editor_switch_consideration_a' => 'Once saved, the new editor option will be used by any future editors, including those that may not be able to change editor type themselves.',
+ 'pages_editor_switch_consideration_b' => 'This can potentially lead to a loss of detail and syntax in certain circumstances.',
+ 'pages_editor_switch_consideration_c' => 'Tag or changelog changes, made since last save, won\'t persist across this change.',
+ 'pages_save' => 'Shrani stran',
+ 'pages_title' => 'Naslov strani',
+ 'pages_name' => 'Ime strani',
+ 'pages_md_editor' => 'Urejevalnik',
+ 'pages_md_preview' => 'Predogled',
+ 'pages_md_insert_image' => 'Vstavi sliko',
+ 'pages_md_insert_link' => 'Vnesi povezavo do objekta',
+ 'pages_md_insert_drawing' => 'Vstavi risbo',
+ 'pages_md_show_preview' => 'Show preview',
+ 'pages_md_sync_scroll' => 'Sync preview scroll',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Unsaved Drawing Found',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'Stran ni v poglavju',
+ 'pages_move' => 'Premakni stran',
+ 'pages_copy' => 'Kopiraj stran',
+ 'pages_copy_desination' => 'Destinacija kopije',
+ 'pages_copy_success' => 'Stran uspešno kopirana',
+ 'pages_permissions' => 'Dovoljenja strani',
+ 'pages_permissions_success' => 'Posodobljena dovoljenja strani',
+ 'pages_revision' => 'Revizija',
+ 'pages_revisions' => 'Pregled strani',
+ 'pages_revisions_desc' => 'Listed below are all the past revisions of this page. You can look back upon, compare, and restore old page versions if permissions allow. The full history of the page may not be fully reflected here since, depending on system configuration, old revisions could be auto-deleted.',
+ 'pages_revisions_named' => 'Pregledi strani za :pageName',
+ 'pages_revision_named' => 'Pregled strani za :pageName',
+ 'pages_revision_restored_from' => 'Obnovljeno iz #:id; :summary',
+ 'pages_revisions_created_by' => 'Ustvaril',
+ 'pages_revisions_date' => 'Datum revizije',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revision Number',
+ 'pages_revisions_numbered' => 'Revizija št. :id',
+ 'pages_revisions_numbered_changes' => 'Revizija št. #:id Changes',
+ 'pages_revisions_editor' => 'Editor Type',
+ 'pages_revisions_changelog' => 'Dnevnik sprememb',
+ 'pages_revisions_changes' => 'Spremembe',
+ 'pages_revisions_current' => 'Trenutna različica',
+ 'pages_revisions_preview' => 'Predogled',
+ 'pages_revisions_restore' => 'Obnovi',
+ 'pages_revisions_none' => 'Ta stran nima popravkov',
+ 'pages_copy_link' => 'Kopiraj povezavo',
+ 'pages_edit_content_link' => 'Jump to section in editor',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Page Section Options',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Aktivna dovoljenja strani',
+ 'pages_initial_revision' => 'Prvotno objavljeno',
+ 'pages_references_update_revision' => 'System auto-update of internal links',
+ 'pages_initial_name' => 'Nova stran',
+ 'pages_editing_draft_notification' => 'Trenutno urejate osnutek, ki je bil nazadnje shranjen :timeDiff.',
+ 'pages_draft_edited_notification' => 'Ta stran je odtlej posodobljena. Priporočamo, da zavržete ta osnutek.',
+ 'pages_draft_page_changed_since_creation' => 'This page has been updated since this draft was created. It is recommended that you discard this draft or take care not to overwrite any page changes.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count uporabnikov je začelo urejati to stran',
+ 'start_b' => ':userName je začel urejati to stran',
+ 'time_a' => 'odkar je bila stran nazandnje posodobljena',
+ 'time_b' => 'v zadnjih :minCount minutah',
+ 'message' => ':start :time. Pazite, da ne boste prepisali posodobitev drug drugega!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'Določena stran',
+ 'pages_is_template' => 'Predloga strani',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'Oznake strani',
+ 'chapter_tags' => 'Oznake poglavja',
+ 'book_tags' => 'Oznake knjige',
+ 'shelf_tags' => 'Oznake police',
+ 'tag' => 'Oznaka',
+ 'tags' => 'Oznake',
+ 'tags_index_desc' => 'Tags can be applied to content within the system to apply a flexible form of categorization. Tags can have both a key and value, with the value being optional. Once applied, content can then be queried using the tag name and value.',
+ 'tag_name' => 'Ime oznake',
+ 'tag_value' => 'Vrednost oznake (opcijsko)',
+ 'tags_explain' => "Dodajte nekaj oznak za boljšo kategorizacijo vaše vsebine.\nZ dodelitvijo oznake lahko poskrbite za bolj poglobljeno organizacijo.",
+ 'tags_add' => 'Dodaj drugo oznako',
+ 'tags_remove' => 'Odstrani to oznako',
+ 'tags_usages' => 'Total tag usages',
+ 'tags_assigned_pages' => 'Assigned to Pages',
+ 'tags_assigned_chapters' => 'Assigned to Chapters',
+ 'tags_assigned_books' => 'Assigned to Books',
+ 'tags_assigned_shelves' => 'Assigned to Shelves',
+ 'tags_x_unique_values' => ':count unique values',
+ 'tags_all_values' => 'All values',
+ 'tags_view_tags' => 'View Tags',
+ 'tags_view_existing_tags' => 'View existing tags',
+ 'tags_list_empty_hint' => 'Tags can be assigned via the page editor sidebar or while editing the details of a book, chapter or shelf.',
+ 'attachments' => 'Priponke',
+ 'attachments_explain' => 'Naložite nekaj datotek ali pripnite nekaj povezav, da jih prikažete na vaši strani. Vidne so v stranski orodni vrstici.',
+ 'attachments_explain_instant_save' => 'Spremembe tukaj so takoj shranjene.',
+ 'attachments_upload' => 'Naloži datoteko',
+ 'attachments_link' => 'Pripni povezavo',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'Nastavi povezavo',
+ 'attachments_delete' => 'Ali ste prepričani, da želite izbrisati to priponko?',
+ 'attachments_dropzone' => 'Drop files here to upload',
+ 'attachments_no_files' => 'Nobena datoteka ni bila naložena',
+ 'attachments_explain_link' => 'Lahko pripnete povezavo, če ne želite naložiti datoteke. Lahko je povezava na drugo stran ali povezava do dateteke v oblaku.',
+ 'attachments_link_name' => 'Ime povezave',
+ 'attachment_link' => 'Povezava priponke',
+ 'attachments_link_url' => 'Povezava do datoteke',
+ 'attachments_link_url_hint' => 'Url spletnega mesta ali datoteke',
+ 'attach' => 'Pripni',
+ 'attachments_insert_link' => 'Dodaj povezavo na priponko na stran',
+ 'attachments_edit_file' => 'Uredi datoteko',
+ 'attachments_edit_file_name' => 'Ime datoteke',
+ 'attachments_edit_drop_upload' => 'Spustite datoteke ali kliknite tukaj, če želite naložiti in prepisati',
+ 'attachments_order_updated' => 'Razvrščanje priponk posodobljeno',
+ 'attachments_updated_success' => 'Podrobnosti priloge posodobljene',
+ 'attachments_deleted' => 'Priponka izbirsana',
+ 'attachments_file_uploaded' => 'Datoteka uspešno naložena',
+ 'attachments_file_updated' => 'Datoteka uspešno posodobljena',
+ 'attachments_link_attached' => 'Povezava uspešno dodana na stran',
+ 'templates' => 'Predloge',
+ 'templates_set_as_template' => 'Stran je predloga',
+ 'templates_explain_set_as_template' => 'To stran lahko nastavite kot predlogo in njeno vsebino uporabite pri izdelavi drugih strani. Ostali uporabniki bodo lahko uporabljali to predlogo, če imajo dovoljenja za to stran.',
+ 'templates_replace_content' => 'Zamenjaj vsebino strani',
+ 'templates_append_content' => 'Dodajte k vsebini strani',
+ 'templates_prepend_content' => 'Dodaj predpono k vsebini strani',
+
+ // Profile View
+ 'profile_user_for_x' => 'Uporabnik že :time',
+ 'profile_created_content' => 'Ustvarjena vsebina',
+ 'profile_not_created_pages' => ':userName ni izdelal nobene strani',
+ 'profile_not_created_chapters' => ':userName ni izdelal nobenega poglavja',
+ 'profile_not_created_books' => ':userName ni objavil nobene knjige',
+ 'profile_not_created_shelves' => ':userName ni izdelal nobene knjižne police',
+
+ // Comments
+ 'comment' => 'Komentar',
+ 'comments' => 'Komentarji',
+ 'comment_add' => 'Dodaj komentar',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Dodaj komentar',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Shrani komentar',
+ 'comment_new' => 'Nov kometar',
+ 'comment_created' => 'komentirano :createDiff',
+ 'comment_updated' => 'Posodobljeno :updateDiff od :username',
+ 'comment_updated_indicator' => 'Updated',
+ 'comment_deleted_success' => 'Komentar je izbrisan',
+ 'comment_created_success' => 'Komentar dodan',
+ 'comment_updated_success' => 'Komentar posodobljen',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Ste prepričani, da želite izbrisati ta komentar?',
+ 'comment_in_reply_to' => 'Odgovor na :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Here are the comments that have been left on this page. Comments can be added & managed when viewing the saved page.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Ali ste prepričani, da želite izbrisati to revizijo?',
+ 'revision_restore_confirm' => 'Ali ste prepričani da želite obnoviti to revizijo? Vsebina trenutne strani bo zamenjana.',
+ 'revision_cannot_delete_latest' => 'Ne morem izbrisati zadnje revizije.',
+
+ // Copy view
+ 'copy_consider' => 'Please consider the below when copying content.',
+ 'copy_consider_permissions' => 'Custom permission settings will not be copied.',
+ 'copy_consider_owner' => 'You will become the owner of all copied content.',
+ 'copy_consider_images' => 'Page image files will not be duplicated & the original images will retain their relation to the page they were originally uploaded to.',
+ 'copy_consider_attachments' => 'Page attachments will not be copied.',
+ 'copy_consider_access' => 'A change of location, owner or permissions may result in this content being accessible to those previously without access.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Convert to Shelf',
+ 'convert_to_shelf_contents_desc' => 'You can convert this book to a new shelf with the same contents. Chapters contained within this book will be converted to new books. If this book contains any pages, that are not in a chapter, this book will be renamed and contain such pages, and this book will become part of the new shelf.',
+ 'convert_to_shelf_permissions_desc' => 'Any permissions set on this book will be copied to the new shelf and to all new child books that don\'t have their own permissions enforced. Note that permissions on shelves do not auto-cascade to content within, as they do for books.',
+ 'convert_book' => 'Convert Book',
+ 'convert_book_confirm' => 'Are you sure you want to convert this book?',
+ 'convert_undo_warning' => 'This cannot be as easily undone.',
+ 'convert_to_book' => 'Convert to Book',
+ 'convert_to_book_desc' => 'You can convert this chapter to a new book with the same contents. Any permissions set on this chapter will be copied to the new book but any inherited permissions, from the parent book, will not be copied which could lead to a change of access control.',
+ 'convert_chapter' => 'Convert Chapter',
+ 'convert_chapter_confirm' => 'Are you sure you want to convert this chapter?',
+
+ // References
+ 'references' => 'References',
+ 'references_none' => 'There are no tracked references to this item.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Watch',
+ 'watch_title_default' => 'Default Preferences',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignore',
+ 'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
+ 'watch_title_new' => 'Nove strani',
+ 'watch_desc_new' => 'Notify when any new page is created within this item.',
+ 'watch_title_updates' => 'All Page Updates',
+ 'watch_desc_updates' => 'Notify upon all new pages and page changes.',
+ 'watch_desc_updates_page' => 'Notify upon all page changes.',
+ 'watch_title_comments' => 'All Page Updates & Comments',
+ 'watch_desc_comments' => 'Notify upon all new pages, page changes and new comments.',
+ 'watch_desc_comments_page' => 'Notify upon page changes and new comments.',
+ 'watch_change_default' => 'Change default notification preferences',
+ 'watch_detail_ignore' => 'Ignoring notifications',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/sl/errors.php b/lang/sl/errors.php
new file mode 100644
index 00000000000..5d018bcbef0
--- /dev/null
+++ b/lang/sl/errors.php
@@ -0,0 +1,135 @@
+ 'Nimate pravic za dostop do želene strani.',
+ 'permissionJson' => 'Nimate dovoljenja za izvedbo zahtevanega dejanja.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Uporabnik z e-pošto :email že obstaja, vendar z drugačnimi poverilnicami.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'E-naslov je že bil potrjen, poskusite se prijaviti.',
+ 'email_confirmation_invalid' => 'Ta potrditveni žeton ni veljaven ali je že bil uporabljen. Poizkusite znova.',
+ 'email_confirmation_expired' => 'Potrditveni žeton je potekel. Nova potrditvena e-pošta je bila poslana.',
+ 'email_confirmation_awaiting' => 'Potrebno je potrditi e-naslov',
+ 'ldap_fail_anonymous' => 'Dostop do LDAP ni uspel z anonimno povezavo',
+ 'ldap_fail_authed' => 'Neuspešen LDAP dostop z danimi podrobnostimi dn & gesla',
+ 'ldap_extension_not_installed' => 'PHP razširitev za LDAP ni nameščena',
+ 'ldap_cannot_connect' => 'Ne morem se povezati na LDAP strežnik, neuspešna začetna povezava',
+ 'saml_already_logged_in' => 'Že prijavljen',
+ 'saml_no_email_address' => 'Nisem našel e-naslova za tega uporabnika v podatkih iz zunanjega sistema za preverjanje pristnosti',
+ 'saml_invalid_response_id' => 'Zahteva iz zunanjega sistema za preverjanje pristnosti ni prepoznana s strani procesa zagnanega s strani te aplikacije. Pomik nazaj po prijavi je lahko vzrok teh težav.',
+ 'saml_fail_authed' => 'Prijava z uporabo :system ni uspela, sistem ni zagotovil uspešne avtorizacije',
+ 'oidc_already_logged_in' => 'Already logged in',
+ 'oidc_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'oidc_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'social_no_action_defined' => 'Akcija ni določena',
+ 'social_login_bad_response' => "Napaka pri :socialAccount prijavi:\n:error",
+ 'social_account_in_use' => 'Ta :socialAccount je že v uporabi. Poskusite se prijaviti z :socialAccount možnostjo.',
+ 'social_account_email_in_use' => 'Ta e-naslov :email je že v uporabi. Če že imate račun lahko povežete vaš :socialAccount v vaših nastavitvah profila.',
+ 'social_account_existing' => 'Ta :socialAccount je že dodan vašemu profilu.',
+ 'social_account_already_used_existing' => 'Ta :socialAccount je v uporabi s strani drugega uporabnika.',
+ 'social_account_not_used' => 'Ta :socialAccount ni povezan z nobenim uporabnikom. Prosimo povežite ga v vaših nastavitvah profila. ',
+ 'social_account_register_instructions' => 'Če še nimate računa, se lahko registrirate z uporabo :socialAccount.',
+ 'social_driver_not_found' => 'Socialni vtičnik ni najden',
+ 'social_driver_not_configured' => 'Vaše nastavitve :socialAccount niso pravilo nastavljene.',
+ 'invite_token_expired' => 'Ta povezava je potekla. Namesto tega lahko ponastavite vaše geslo računa.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // System
+ 'path_not_writable' => 'Poti :filePath ni bilo mogoče naložiti. Prepričajte se, da je zapisljiva na strežnik.',
+ 'cannot_get_image_from_url' => 'Ne morem pridobiti slike z :url',
+ 'cannot_create_thumbs' => 'Strežnik ne more izdelati sličice. Prosimo preverite če imate GD PHP razširitev nameščeno.',
+ 'server_upload_limit' => 'Strežnik ne dovoli nalaganj take velikosti. Prosimo poskusite z manjšo velikostjo datoteke.',
+ 'server_post_limit' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.',
+ 'uploaded' => 'Strežnik ne dovoli nalaganj take velikosti. Prosimo poskusite zmanjšati velikost datoteke.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Prišlo je do napake med nalaganjem slike',
+ 'image_upload_type_error' => 'Napačen tip (format) slike',
+ 'image_upload_replace_type' => 'Image file replacements must be of the same type',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Drawing data could not be loaded. The drawing file might no longer exist or you may not have permission to access it.',
+
+ // Attachments
+ 'attachment_not_found' => 'Priloga ni najdena',
+ 'attachment_upload_error' => 'An error occurred uploading the attachment file',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Osnutka ni bilo mogoče shraniti. Pred shranjevanjem te strani se prepričajte, da imate internetno povezavo',
+ 'page_draft_delete_fail' => 'Failed to delete page draft and fetch current page saved content',
+ 'page_custom_home_deletion' => 'Ne morem izbrisati strani, ki je nastavljena kot domača stran',
+
+ // Entities
+ 'entity_not_found' => 'Ne najdem tega objekta',
+ 'bookshelf_not_found' => 'Shelf not found',
+ 'book_not_found' => 'Knjiga ni najdena',
+ 'page_not_found' => 'Stran ni najdena',
+ 'chapter_not_found' => 'Poglavje ni najdeno',
+ 'selected_book_not_found' => 'Izbrana knjiga ni najdena',
+ 'selected_book_chapter_not_found' => 'Izbrana knjiga ali poglavje ni najdeno',
+ 'guests_cannot_save_drafts' => 'Gosti ne morejo shranjevati osnutkov',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Ne morete odstraniti edinega administratorja',
+ 'users_cannot_delete_guest' => 'Ne morete odstraniti uporabnika gost',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Te vloge mi možno urejati',
+ 'role_system_cannot_be_deleted' => 'Ta vloga je sistemska in je ni možno brisati',
+ 'role_registration_default_cannot_delete' => 'Te vloge ni možno brisati, dokler je nastavljena kot privzeta',
+ 'role_cannot_remove_only_admin' => 'Ta uporabnik je edini administrator. Dodelite vlogo administratorja drugemu uporabniku, preden ga poskusite brisati.',
+
+ // Comments
+ 'comment_list' => 'Napaka se je pojavila pri pridobivanju komentarjev.',
+ 'cannot_add_comment_to_draft' => 'V osnutek ni možno dodajati komentarjev.',
+ 'comment_add' => 'Napaka se je pojavila pri dodajanju / posodobitvi komentarjev.',
+ 'comment_delete' => 'Napaka se je pojavila pri brisanju komentarja.',
+ 'empty_comment' => 'Praznega komentarja ne morete objaviti.',
+
+ // Error pages
+ '404_page_not_found' => 'Strani ni mogoče najti',
+ 'sorry_page_not_found' => 'Oprostite, strani ki jo iščete, ni mogoče najti.',
+ 'sorry_page_not_found_permission_warning' => 'Stran ne obstaja ali pa za ogled nimaš ustreznih pravic.',
+ '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' => 'Vrni se domov',
+ 'error_occurred' => 'Prišlo je do napake',
+ 'app_down' => ':appName trenutno ni dosegljiva',
+ 'back_soon' => 'Kmalu bo ponovno dosegljiva.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Avtorizacija ni bila najdena',
+ 'api_bad_authorization_format' => 'Avtorizacija je bila najdena, vendar je v napačni obliki',
+ 'api_user_token_not_found' => 'Za dano avtorizacijo ni bil najden noben ustrezen API',
+ 'api_incorrect_token_secret' => 'Skrivnost, ki je bila dana za uporabljeni žeton API, je napačna',
+ 'api_user_no_api_permission' => 'Lastnik API nima pravic za klicanje API',
+ 'api_user_token_expired' => 'Avtorizacijski žeton je pretečen',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Napaka se je pojavila pri pošiljanju testne e-pošte:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'The URL does not match the configured allowed SSR hosts',
+];
diff --git a/lang/sl/notifications.php b/lang/sl/notifications.php
new file mode 100644
index 00000000000..563ac24e84d
--- /dev/null
+++ b/lang/sl/notifications.php
@@ -0,0 +1,29 @@
+ 'New comment on page: :pageName',
+ 'new_comment_intro' => 'A user has commented on a page in :appName:',
+ 'new_page_subject' => 'New page: :pageName',
+ 'new_page_intro' => 'A new page has been created in :appName:',
+ 'updated_page_subject' => 'Updated page: :pageName',
+ 'updated_page_intro' => 'A page has been updated in :appName:',
+ 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Page Name:',
+ 'detail_page_path' => 'Page Path:',
+ 'detail_commenter' => 'Commenter:',
+ 'detail_comment' => 'Comment:',
+ 'detail_created_by' => 'Created By:',
+ 'detail_updated_by' => 'Updated By:',
+
+ 'action_view_comment' => 'View Comment',
+ 'action_view_page' => 'View Page',
+
+ 'footer_reason' => 'This notification was sent to you because :link cover this type of activity for this item.',
+ 'footer_reason_link' => 'your notification preferences',
+];
diff --git a/lang/sl/pagination.php b/lang/sl/pagination.php
new file mode 100644
index 00000000000..80a1e1b4743
--- /dev/null
+++ b/lang/sl/pagination.php
@@ -0,0 +1,12 @@
+ '« Nazaj',
+ 'next' => 'Naprej »',
+
+];
diff --git a/resources/lang/sl/passwords.php b/lang/sl/passwords.php
similarity index 100%
rename from resources/lang/sl/passwords.php
rename to lang/sl/passwords.php
diff --git a/lang/sl/preferences.php b/lang/sl/preferences.php
new file mode 100644
index 00000000000..f4459d738e4
--- /dev/null
+++ b/lang/sl/preferences.php
@@ -0,0 +1,52 @@
+ 'My Account',
+
+ 'shortcuts' => 'Shortcuts',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Here you can enable or disable keyboard system interface shortcuts, used for navigation and actions.',
+ 'shortcuts_customize_desc' => 'You can customize each of the shortcuts below. Just press your desired key combination after selecting the input for a shortcut.',
+ 'shortcuts_toggle_label' => 'Keyboard shortcuts enabled',
+ 'shortcuts_section_navigation' => 'Navigation',
+ 'shortcuts_section_actions' => 'Common Actions',
+ 'shortcuts_save' => 'Save Shortcuts',
+ 'shortcuts_overlay_desc' => 'Note: When shortcuts are enabled a helper overlay is available via pressing "?" which will highlight the available shortcuts for actions currently visible on the screen.',
+ 'shortcuts_update_success' => 'Shortcut preferences have been updated!',
+ 'shortcuts_overview_desc' => 'Manage keyboard shortcuts you can use to navigate the system user interface.',
+
+ 'notifications' => 'Notification Preferences',
+ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.',
+ 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own',
+ 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notify upon replies to my comments',
+ 'notifications_save' => 'Save Preferences',
+ 'notifications_update_success' => 'Notification preferences have been updated!',
+ 'notifications_watched' => 'Watched & Ignored Items',
+ 'notifications_watched_desc' => 'Below are the items that have custom watch preferences applied. To update your preferences for these, view the item then find the watch options in the sidebar.',
+
+ 'auth' => 'Access & Security',
+ 'auth_change_password' => 'Change Password',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Password has been updated!',
+
+ 'profile' => 'Profile Details',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'View Public Profile',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Delete Account',
+ 'delete_my_account' => 'Delete My Account',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/sl/settings.php b/lang/sl/settings.php
new file mode 100644
index 00000000000..947621389f4
--- /dev/null
+++ b/lang/sl/settings.php
@@ -0,0 +1,375 @@
+ 'Nastavitve',
+ 'settings_save' => 'Shrani nastavitve',
+ 'system_version' => 'System Version',
+ 'categories' => 'Categories',
+
+ // App Settings
+ 'app_customization' => 'Prilagoditev',
+ 'app_features_security' => 'Lastnosti & Varnost',
+ 'app_name' => 'Ime aplikacije',
+ 'app_name_desc' => 'To ime je prikazano v glavi in vsaki sistemski e-pošti.',
+ 'app_name_header' => 'Prikaži ime v glavi',
+ 'app_public_access' => 'Javni dostop',
+ 'app_public_access_desc' => 'Če omogočite to možnost, bo obiskovalcem, ki niso prijavljeni, omogočen dostop do vsebine v BookStack.',
+ 'app_public_access_desc_guest' => 'Dostop za javne obiskovalce je mogoče nadzorovati prek uporabnika "Gost".',
+ 'app_public_access_toggle' => 'Dovoli javni dostop',
+ 'app_public_viewing' => 'Dovoli javni pregled?',
+ 'app_secure_images' => 'Nalaganje slik z večjo varnostjo',
+ 'app_secure_images_toggle' => 'Omogoči nalaganje slik z večjo varnostjo',
+ 'app_secure_images_desc' => 'Zaradi delovanja so vse slike javne. Ta možnost doda naključni, hard-to-guess niz pred Url-ji slike. Prepričajte se, da indeksi imenikov niso omogočeni, da preprečite enostaven dostop.',
+ 'app_default_editor' => 'Default Page Editor',
+ 'app_default_editor_desc' => 'Select which editor will be used by default when editing new pages. This can be overridden at a page level where permissions allow.',
+ 'app_custom_html' => 'Po meri HTML vsebina glave',
+ 'app_custom_html_desc' => 'Katerakoli vsebina dodana tukaj, bo vstavljena na dno dela vsake strani. To je uporabno za uporabo prevladujočih slogov ali dodajanje analitike.',
+ 'app_custom_html_disabled_notice' => 'Po meri narejena HTML glava vsebine je onemogočena na tej strani z nastavitvami, da se zagotovi, da bodo morebitne zrušitve lahko povrnjene.',
+ 'app_logo' => 'Logotip aplikacije',
+ 'app_logo_desc' => 'This is used in the application header bar, among other areas. This image should be 86px in height. Large images will be scaled down.',
+ 'app_icon' => 'Application Icon',
+ 'app_icon_desc' => 'This icon is used for browser tabs and shortcut icons. This should be a 256px square PNG image.',
+ 'app_homepage' => 'Domača stran aplikacije',
+ 'app_homepage_desc' => 'Izberi pogled, da se pokaže na domači strani, namesto osnovnega pogleda. Dovoljenja strani so prezrta za izbrane strani.',
+ 'app_homepage_select' => 'Izberi stran',
+ 'app_footer_links' => 'Povezave v nogi',
+ 'app_footer_links_desc' => 'Dodaj URL povezave, ki bodo na voljo v nogi spletne strani. Povezave bodo vidne na dnu večine strani, vključno s tistimi, ki ne zahtevajo prijave. Na voljo imate oznako "trans::" za uporabo sistemskih prevodov. Na primer: uporaba oznake "trans::common.privacy_policy" bo poskrbela za prevod besedila "Privacy Policy" in oznaka "trans::common.terms_of_service" bo poskrbela za prevod besedila "Terms of Service".',
+ 'app_footer_links_label' => 'Oznaka povezave',
+ 'app_footer_links_url' => 'Naslov URL povezave',
+ 'app_footer_links_add' => 'Dodaj povezavo v nogo',
+ 'app_disable_comments' => 'Onemogoči komentarje',
+ 'app_disable_comments_toggle' => 'Onemogoči komentarje',
+ 'app_disable_comments_desc' => 'Onemogoči komentarje na vseh straneh v aplikaciji. Obstoječi komentarji se ne prikazujejo.',
+
+ // Color settings
+ 'color_scheme' => 'Application Color Scheme',
+ 'color_scheme_desc' => 'Set the colors to use in the application user interface. Colors can be configured separately for dark and light modes to best fit the theme and ensure legibility.',
+ 'ui_colors_desc' => 'Set the application primary color and default link color. The primary color is mainly used for the header banner, buttons and interface decorations. The default link color is used for text-based links and actions, both within written content and in the application interface.',
+ 'app_color' => 'Primary Color',
+ 'link_color' => 'Default Link Color',
+ 'content_colors_desc' => 'Set colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'bookshelf_color' => 'Barva police',
+ 'book_color' => 'knjiga barv',
+ 'chapter_color' => 'barvno poglavje',
+ 'page_color' => 'Stran barv',
+ 'page_draft_color' => 'stran osnutka barv',
+
+ // Registration Settings
+ 'reg_settings' => 'registracija',
+ 'reg_enable' => 'onemogočena registracija',
+ 'reg_enable_toggle' => 'omogočena registracija',
+ 'reg_enable_desc' => 'Ko je registracija omogočena, se bo uporabnik lahko prijavil sam kot uporabnik aplikacije. Po registraciji je uporabniku dodeljena privzeta vloga.',
+ 'reg_default_role' => 'prevzeta uporabniška vloga po registraciji',
+ 'reg_enable_external_warning' => 'Ta možnosti je prezrta, ko je aktivno zunanja LDAP ali SAML preverjanje pristnosti. Uporabniški računi za neobstoječe uporabnike bodo avtomatično ustvarjeni po uspešnem zunanjem preverjanju pristnosti.',
+ 'reg_email_confirmation' => 'potrditev e-pošte',
+ 'reg_email_confirmation_toggle' => 'potrebna potrditev e-pošte',
+ 'reg_confirm_email_desc' => 'Če uporabite omejitev domene, bo potrebna potrditev e-pošte in ta možnost bo prezrta.',
+ 'reg_confirm_restrict_domain' => 'omejitev domene',
+ 'reg_confirm_restrict_domain_desc' => 'Vnesite seznam domen, ločenih z vejico, na katere želite omejiti registracijo. Uporabnik bo prejel e-pošto za potrditev naslova, preden bo omogočena interakcija z aplikacijo. Upoštevajte, da uporabnik po uspešni registrciji lahko spremeni svoj e-poštni naslov.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Brez omejitev',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Vzdrževanje',
+ 'maint_image_cleanup' => 'Odstrani /počisti slike',
+ 'maint_image_cleanup_desc' => 'Pregleda vsebino strani in revizij ter ugotovi, katere slike in risbe so v uporabi in katere so odvečne. Preden to poženeš, naredi popolno varnostno kopijo podatkovne zbirke in slik.',
+ 'maint_delete_images_only_in_revisions' => 'Izbriši tudi slike, ki obstajajo le v starih različicah strani',
+ 'maint_image_cleanup_run' => 'Zaženi čiščenje',
+ 'maint_image_cleanup_warning' => 'Najdenih je bilo :count verjetno neuporabljenih slik. Ali si prepričan, da želiš odstraniti izbrane slike?',
+ 'maint_image_cleanup_success' => ':count verjetno neuporavljenih slik je bilo najdenih in izbrisanih!',
+ 'maint_image_cleanup_nothing_found' => 'Ni bilo najdenih neuporabljenih slik, nič ni izbrisano!',
+ 'maint_send_test_email' => 'Pošlji testno e-pismo',
+ 'maint_send_test_email_desc' => 'To pošlje testno e-pošto na vaš e-poštni naslov, naveden v vašem profilu.',
+ 'maint_send_test_email_run' => 'Pošlji testno sporočilo',
+ 'maint_send_test_email_success' => 'e-pošta poslana na :naslov',
+ 'maint_send_test_email_mail_subject' => 'Testno e-sporočilo',
+ 'maint_send_test_email_mail_greeting' => 'Zdi se, da dostava e-pošte deluje!',
+ 'maint_send_test_email_mail_text' => 'Čestitke! Če ste prejeli e-poštno obvestilo so bile vaše e-poštne nastavitve pravilno konfigurirane.',
+ 'maint_recycle_bin_desc' => 'Izbrisane police, knjige, poglavja in strani se pošljejo v koš, da jih je mogoče obnoviti ali trajno izbrisati. Starejše predmete v košu lahko čez nekaj časa samodejno odstranite, odvisno od konfiguracije sistema.',
+ 'maint_recycle_bin_open' => 'Odpri koš',
+ 'maint_regen_references' => 'Regenerate References',
+ 'maint_regen_references_desc' => 'This action will rebuild the cross-item reference index within the database. This is usually handled automatically but this action can be useful to index old content or content added via unofficial methods.',
+ 'maint_regen_references_success' => 'Reference index has been regenerated!',
+ 'maint_timeout_command_note' => 'Note: This action can take time to run, which can lead to timeout issues in some web environments. As an alternative, this action be performed using a terminal command.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Koš',
+ 'recycle_bin_desc' => 'Tu lahko obnovite predmete, ki so bili izbrisani, ali pa jih trajno odstranite s sistema. Ta seznam je nefiltriran, za razliko od podobnih seznamov dejavnosti v sistemu, kjer se uporabljajo filtri dovoljenj.',
+ 'recycle_bin_deleted_item' => 'Izbrisan element',
+ 'recycle_bin_deleted_parent' => 'Parent',
+ 'recycle_bin_deleted_by' => 'Izbrisal uporabnik',
+ 'recycle_bin_deleted_at' => 'Čas izbrisa',
+ 'recycle_bin_permanently_delete' => 'Trajno izbrišem?',
+ 'recycle_bin_restore' => 'Obnovi',
+ 'recycle_bin_contents_empty' => 'Koš je prazen',
+ 'recycle_bin_empty' => 'Izprazni koš',
+ 'recycle_bin_empty_confirm' => 'S tem boste trajno uničili vse predmete v košu, vključno z vsebino vsakega predmeta. Ali ste prepričani, da želite izprazniti koš?',
+ 'recycle_bin_destroy_confirm' => 'This action will permanently delete this item from the system, along with any child elements listed below, and you will not be able to restore this content. Are you sure you want to permanently delete this item?',
+ 'recycle_bin_destroy_list' => 'Predmeti, ki naj bodo trajno izbrisani',
+ 'recycle_bin_restore_list' => 'Predmeti, ki naj bodo obnovljeni',
+ 'recycle_bin_restore_confirm' => 'S tem dejanjem boste izbrisani element, vključno z vsemi podrejenimi elementi, obnovili na prvotno mesto. Če je bilo prvotno mesto od takrat izbrisano in je zdaj v košu, bo treba obnoviti tudi nadrejeni element.',
+ 'recycle_bin_restore_deleted_parent' => 'Nadrejeni element je bil prav tako izbrisan. Dokler se ne obnovi nadrejenega elementa, ni mogoče obnoviti njemu podrejenih elementov.',
+ 'recycle_bin_restore_parent' => 'Restore Parent',
+ 'recycle_bin_destroy_notification' => 'Izbrisano :count skupno število elementov iz koša.',
+ 'recycle_bin_restore_notification' => 'Obnovljeno :count skupno število elementov iz koša.',
+
+ // Audit Log
+ 'audit' => 'Dnevnik dogodkov',
+ 'audit_desc' => 'Ta dnevnik dogodkov prikazuje seznam dejavnosti, ki jim sledi sistem. Seznam je nefiltriran, za razliko od podobnih seznamov dejavnosti v sistemu, kjer se uporabljajo filtri dovoljenj.',
+ 'audit_event_filter' => 'Filter dogodkov',
+ 'audit_event_filter_no_filter' => 'Ni filtra',
+ 'audit_deleted_item' => 'Izbrisan element',
+ 'audit_deleted_item_name' => 'Naziv: :name',
+ 'audit_table_user' => 'Uporabnik',
+ 'audit_table_event' => 'Dogodek',
+ 'audit_table_related' => 'Povezani predmet ali podrobnost',
+ 'audit_table_ip' => 'IP Address',
+ 'audit_table_date' => 'Datum zadnje dejavnosti',
+ 'audit_date_from' => 'Časovno obdobje od',
+ 'audit_date_to' => 'Časovno obdobje do',
+
+ // Role Settings
+ 'roles' => 'Vloge',
+ 'role_user_roles' => 'Vloge uporabnika',
+ 'roles_index_desc' => 'Roles are used to group users & provide system permission to their members. When a user is a member of multiple roles the privileges granted will stack and the user will inherit all abilities.',
+ 'roles_x_users_assigned' => ':count uporabnik v tej vlogi|:count uporabnikov v tej vlogi',
+ 'roles_x_permissions_provided' => ':count permission|:count permissions',
+ 'roles_assigned_users' => 'Assigned Users',
+ 'roles_permissions_provided' => 'Provided Permissions',
+ 'role_create' => 'Ustvari novo vlogo',
+ 'role_delete' => 'Brisanje vloge',
+ 'role_delete_confirm' => 'Izbrisana bo vloga z imenom \':roleName\'.',
+ 'role_delete_users_assigned' => 'Ta vloga ima dodeljenih :userCount uporabnikov. V kolikor želite uporabnike preseliti iz te vloge, spodaj izberite novo vlogo.',
+ 'role_delete_no_migration' => "Ne prenašaj uporabnikov",
+ 'role_delete_sure' => 'Ali ste prepričani, da želite izbrisati to vlogo?',
+ 'role_edit' => 'Uredi vlogo',
+ 'role_details' => 'Podrobnosti vloge',
+ 'role_name' => 'Naziv vloge',
+ 'role_desc' => 'Kratki opis vloge',
+ 'role_mfa_enforced' => 'Requires Multi-Factor Authentication',
+ 'role_external_auth_id' => 'Zunanje dokazilo ID',
+ 'role_system' => 'Sistemska dovoljenja',
+ 'role_manage_users' => 'Upravljanje uporabnikov',
+ 'role_manage_roles' => 'Upravljanje vlog in dovoljenja vlog',
+ 'role_manage_entity_permissions' => 'Upravljanje dovoljenj vseh knjig, poglavij in strani',
+ 'role_manage_own_entity_permissions' => 'Upravljanje dovoljenj za svojo knjigo, poglavje in strani',
+ 'role_manage_page_templates' => 'Uredi predloge',
+ 'role_access_api' => 'API za dostop do sistema',
+ 'role_manage_settings' => 'Nastavitve za upravljanje',
+ 'role_export_content' => 'Export content',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Change page editor',
+ 'role_notifications' => 'Receive & manage notifications',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Sistemska dovoljenja',
+ 'roles_system_warning' => 'Zavedajte se, da lahko dostop do kateregakoli od zgornjih treh dovoljenj uporabniku omogoči, da spremeni lastne privilegije ali privilegije drugih v sistemu. Vloge s temi dovoljenji dodelite samo zaupanja vrednim uporabnikom.',
+ 'role_asset_desc' => 'Ta dovoljenja nadzorujejo privzeti dostop do sredstev v sistemu. Dovoljenja za knjige, poglavja in strani bodo razveljavila ta dovoljenja.',
+ 'role_asset_admins' => 'Skrbniki samodejno pridobijo dostop do vseh vsebin, vendar lahko te možnosti prikažejo ali pa skrijejo možnosti uporabniškega vmesnika.',
+ 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Vse',
+ 'role_own' => 'Lasten',
+ 'role_controlled_by_asset' => 'Nadzira ga sredstvo, v katerega so naloženi',
+ 'role_save' => 'Shrani vlogo',
+ 'role_users' => 'Uporabniki v tej vlogi',
+ 'role_users_none' => 'Tej vlogi trenutno ni dodeljen noben uporabnik',
+
+ // Users
+ 'users' => 'Uporabniki',
+ 'users_index_desc' => 'Create & manage individual user accounts within the system. User accounts are used for login and attribution of content & activity. Access permissions are primarily role-based but user content ownership, among other factors, may also affect permissions & access.',
+ 'user_profile' => 'Uporabniški profil',
+ 'users_add_new' => 'Dodaj novega uporabnika',
+ 'users_search' => 'Išči uporabnike',
+ 'users_latest_activity' => 'Zadnja dejavnost',
+ 'users_details' => 'Podatki o uporabniku',
+ 'users_details_desc' => 'Nastavite prikazno ime in e-poštni naslov za tega uporabnika. E-poštni naslov bo uporabljen za prijavo v aplikacijo.',
+ 'users_details_desc_no_email' => ' Nastavite prikazno ime za tega uporabnika, da ga bodo drugi lahko prepoznali.',
+ 'users_role' => 'Vloge uporabnika',
+ 'users_role_desc' => 'Izberi vloge, ki bodo dodeljene uporabniku. Če je uporabniku dodeljenih več vlog, se dovoljenja združijo in prejmenjo vsa dovoljenja dodeljenih vlog.',
+ 'users_password' => 'Uporabniško geslo',
+ 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 8 characters long.',
+ 'users_send_invite_text' => 'Uporabniku lahko pošljete e-poštno sporočilo s povabilom, ki mu omogoča, da nastavi svoje geslo, ali pa ga nastavite kar sami.',
+ 'users_send_invite_option' => 'Pošlji uporabniku e-poštno povabilo',
+ 'users_external_auth_id' => 'Zunanji ID za preverjanje pristnosti (Authentication ID)',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ 'users_system_public' => 'Ta uporabnik predstavlja vse gostujoče uporabnike, ki obiščejo vašo wiki stran. Za prijavo je ni mogoče uporabiti, ampak je dodeljena samodejno.',
+ 'users_delete' => 'Brisanje uporabnika',
+ 'users_delete_named' => 'Brisanje uporabnika :userName',
+ 'users_delete_warning' => 'Iz sistema se bo popolnoma izbrisal uporabnik z imenom \':userName\'',
+ 'users_delete_confirm' => 'Ste prepričani, da želite izbrisati tega uporabnika?',
+ 'users_migrate_ownership' => 'Prenesi lastništvo',
+ 'users_migrate_ownership_desc' => 'Izberite uporabnika, če želite nanj prenesti lastništvo vseh vnosov.',
+ 'users_none_selected' => 'Ni izbranega uporabnika',
+ 'users_edit' => 'Uredi uporabnika',
+ 'users_edit_profile' => 'Uredi profil',
+ 'users_avatar' => 'Uporabnikov avatar',
+ 'users_avatar_desc' => 'Izberi sliko, ki predstavlja uporabnika. Velikost mora biti približno 256px.',
+ 'users_preferred_language' => 'Izbrani jezik',
+ 'users_preferred_language_desc' => 'Ta možnost bo spremenila jezik, ki se uporablja za uporabniški vmesnik aplikacije. To ne bo vplivalo na nobeno vsebino, ki jo ustvari uporabnik.',
+ 'users_social_accounts' => 'Družbene ikone / računi',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Tu lahko za hitrejšo in lažjo prijavo povežete druge račune. Prekinitev povezave računa tukaj ne prekliče predhodno odobrenega dostopa. Prekličite dostop iz nastavitev profila v povezanem družabnem računu.',
+ 'users_social_connect' => 'Povežite račun',
+ 'users_social_disconnect' => 'Odklop računa',
+ 'users_social_status_connected' => 'Connected',
+ 'users_social_status_disconnected' => 'Disconnected',
+ 'users_social_connected' => ':socialAccount račun je bil uspešno dodan vašemu profilu.',
+ 'users_social_disconnected' => ':socialAccount račun je bil uspešno odstranjen iz vašega profila.',
+ 'users_api_tokens' => 'API žeton',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'Nič API žetonov ni bilo ustvarjenih za uporabnika',
+ 'users_api_tokens_create' => 'Ustvari žeton',
+ 'users_api_tokens_expires' => 'Poteče',
+ 'users_api_tokens_docs' => 'API dokumentacija',
+ 'users_mfa' => 'Multi-Factor Authentication',
+ 'users_mfa_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'users_mfa_x_methods' => ':count method configured|:count methods configured',
+ 'users_mfa_configure' => 'Configure Methods',
+
+ // API Tokens
+ 'user_api_token_create' => 'Ustvari žeton',
+ 'user_api_token_name' => 'Ime',
+ 'user_api_token_name_desc' => 'Dajte žetonu berljivo ime kot prihodnji opomnik o predvidenem namenu.',
+ 'user_api_token_expiry' => 'Datum poteka',
+ 'user_api_token_expiry_desc' => 'Določi datum izteka uporabnosti žetona. Po tem datumu, zahteve poslane s tem žetonom, ne bodo več delovale.
+Če pustite to polje prazno, bo iztek uporabnosti 100.let .',
+ 'user_api_token_create_secret_message' => 'Takoj po ustvarjanju tega žetona se ustvari in prikaže "Token ID" "in" Token Secret ". Skrivnost bo prikazana samo enkrat, zato se pred nadaljevanjem prepričajte o varnosti kopirnega mesta.',
+ 'user_api_token' => 'API žeton',
+ 'user_api_token_id' => 'Žeton ID',
+ 'user_api_token_id_desc' => 'To je sistemski identifikator, ki ga ni mogoče urejati za ta žeton in ga je treba navesti v zahtevah za API.',
+ 'user_api_token_secret' => 'Skrivnost žetona',
+ 'user_api_token_secret_desc' => 'To je sistemsko ustvarjena skrivnost za ta žeton, ki jo bo treba navesti v zahtevah za API. To bo prikazano samo enkrat, zato kopirajte to vrednost na varno mesto.',
+ 'user_api_token_created' => 'Žeton ustvarjen :timeAgo',
+ 'user_api_token_updated' => 'Žeton posodobljen :timeAgo',
+ 'user_api_token_delete' => 'Briši žeton',
+ 'user_api_token_delete_warning' => 'Iz sistema se bo popolnoma izbrisal API žeton z imenom \':tokenName\' ',
+ 'user_api_token_delete_confirm' => 'Ali ste prepričani, da želite izbrisati ta API žeton?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks are a way to send data to external URLs when certain actions and events occur within the system which allows event-based integration with external platforms such as messaging or notification systems.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'Create New Webhook',
+ 'webhooks_none_created' => 'No webhooks have yet been created.',
+ 'webhooks_edit' => 'Edit Webhook',
+ 'webhooks_save' => 'Save Webhook',
+ 'webhooks_details' => 'Webhook Details',
+ 'webhooks_details_desc' => 'Provide a user friendly name and a POST endpoint as a location for the webhook data to be sent to.',
+ 'webhooks_events' => 'Webhook Events',
+ 'webhooks_events_desc' => 'Select all the events that should trigger this webhook to be called.',
+ 'webhooks_events_warning' => 'Keep in mind that these events will be triggered for all selected events, even if custom permissions are applied. Ensure that use of this webhook won\'t expose confidential content.',
+ 'webhooks_events_all' => 'All system events',
+ 'webhooks_name' => 'Webhook Name',
+ 'webhooks_timeout' => 'Webhook Request Timeout (Seconds)',
+ 'webhooks_endpoint' => 'Webhook Endpoint',
+ 'webhooks_active' => 'Webhook Active',
+ 'webhook_events_table_header' => 'Events',
+ 'webhooks_delete' => 'Delete Webhook',
+ 'webhooks_delete_warning' => 'This will fully delete this webhook, with the name \':webhookName\', from the system.',
+ 'webhooks_delete_confirm' => 'Are you sure you want to delete this webhook?',
+ 'webhooks_format_example' => 'Webhook Format Example',
+ 'webhooks_format_example_desc' => 'Webhook data is sent as a POST request to the configured endpoint as JSON following the format below. The "related_item" and "url" properties are optional and will depend on the type of event triggered.',
+ 'webhooks_status' => 'Webhook Status',
+ 'webhooks_last_called' => 'Last Called:',
+ 'webhooks_last_errored' => 'Last Errored:',
+ 'webhooks_last_error_message' => 'Last Error Message:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'danščina',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/sl/validation.php b/lang/sl/validation.php
new file mode 100644
index 00000000000..84ad6ca452d
--- /dev/null
+++ b/lang/sl/validation.php
@@ -0,0 +1,123 @@
+ ':attribute mora biti potrjen.',
+ 'active_url' => ':attribute ni veljaven URL.',
+ 'after' => ':attribute mora biti datum po :date.',
+ 'alpha' => ':attribute lahko vsebuje samo črke.',
+ 'alpha_dash' => ':attribute lahko vsebuje samo črke, številke, pomišljaje in podčrtaje.',
+ 'alpha_num' => ':attribute lahko vsebuje samo črke in številke.',
+ 'array' => ':attribute mora biti niz.',
+ 'backup_codes' => 'Podana koda ni veljavna ali je že uporabljena.',
+ 'before' => ':attribute mora biti datum pred :date.',
+ 'between' => [
+ 'numeric' => ':attribute mora biti med :min in :max.',
+ 'file' => ':attribute mora biti med :min in :max kilobajti.',
+ 'string' => ':attribute mora biti med :min in :max znaki.',
+ 'array' => ':attribute mora imeti med :min in :max elementov.',
+ ],
+ 'boolean' => ':attribute polje mora biti pravilno ali napačno.',
+ 'confirmed' => ':attribute potrditev se ne ujema.',
+ 'date' => ':attribute ni veljaven datum.',
+ 'date_format' => ':attribute se ne ujema z obliko :format.',
+ 'different' => ':attribute in :other morata biti različna.',
+ 'digits' => 'Atribut mora biti: števnik.',
+ 'digits_between' => ':attribute mora biti med :min in :max števkami.',
+ 'email' => ':attribute mora biti veljaven e-naslov.',
+ 'ends_with' => 'The :attribute se mora končati z eno od določenih: :vrednost/values',
+ 'file' => ':attribute ni veljavna datoteka.',
+ 'filled' => 'Polje ne sme biti prazno.',
+ 'gt' => [
+ 'numeric' => ':attribute mora biti večji kot :vrednost.',
+ 'file' => ':attribute mora biti večji kot :vrednost kilobytes',
+ 'string' => ':attribute mora biti večji kot :vrednost znakov',
+ 'array' => ':attribute mora biti večji kot :vrednost znakov',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute mora biti večji kot ali enak :vrednost.',
+ 'file' => ':attribute mora biti večji kot ali enak :vrednost kilobytes',
+ 'string' => ':attribute mora biti večji kot ali enak :vrednost znakov',
+ 'array' => ':attribute mora imeti :vrednost znakov ali več',
+ ],
+ 'exists' => 'Izbrani atribut je neveljaven.',
+ 'image' => ':attribute mora biti slika.',
+ 'image_extension' => ':attribute mora imeti veljavno & podprto slikovno pripono',
+ 'in' => 'izbran :attribute je neveljaven.',
+ 'integer' => ':attribute mora biti celo število.',
+ 'ip' => ':attribute mora biti veljaven IP naslov.',
+ 'ipv4' => ':attribute mora biti veljaven IPv4 naslov.',
+ 'ipv6' => ':attribute mora biti veljaven IPv6 naslov.',
+ 'json' => ':attribute mora biti veljavna JSON povezava.',
+ 'lt' => [
+ 'numeric' => ':attribute mora biti manj kot :vrednost.',
+ 'file' => ':attribute mora biti manj kot :vrednost kilobytes',
+ 'string' => ':attribute mora biti manj kot :vrednost znakov',
+ 'array' => ':attribute mora imeti manj kot :vrednost znakov',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute mora biti manj kot ali enak :vrednost.',
+ 'file' => ':attribute mora biti manj kot ali enak :vrednost kilobytes',
+ 'string' => ':attribute mora biti manj kot ali enak :vrednost znakov',
+ 'array' => ':attribute ne sme imeti več kot :vrednost elementov',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute ne sme biti večja od :max.',
+ 'file' => ':attribute ne sme biti večja od :max kilobytes.',
+ 'string' => 'Atribut naj ne bo večji od: max znakov.',
+ 'array' => ':attribute ne sme imeti več kot :max elementov.',
+ ],
+ 'mimes' => 'Atribut mora biti datoteka vrste:: vrednost.',
+ 'min' => [
+ 'numeric' => ':attribute mora biti najmanj :min.',
+ 'file' => ':attribute mora biti najmanj :min KB.',
+ 'string' => ':attribute mora biti najmanj :min znakov.',
+ 'array' => ':attribute mora imeti vsaj :min elementov.',
+ ],
+ 'not_in' => 'Izbrani atribut je neveljaven.',
+ 'not_regex' => ':attribute oblika ni veljavna.',
+ 'numeric' => 'Atribut mora biti število.',
+ 'regex' => ':attribute oblika ni veljavna.',
+ 'required' => 'Polje :attribute je obvezno.',
+ 'required_if' => 'Polje atributa je obvezno, če: drugo je: vrednost.',
+ 'required_with' => 'Polje atributa je obvezno, ko: so prisotne vrednosti.',
+ 'required_with_all' => 'Polje atributa je obvezno, ko: so prisotne vrednosti.',
+ 'required_without' => 'Polje atributa je obvezno, če: vrednosti niso prisotne.',
+ 'required_without_all' => 'Polje atributa je obvezno, če nobena od: vrednosti ni prisotna.',
+ 'same' => 'Atribut in: drugi se morajo ujemati.',
+ 'safe_url' => 'Podana povezava morda ni varna.',
+ 'size' => [
+ 'numeric' => ':attribute mora biti :velikost.',
+ 'file' => ':attribute mora biti :velikost KB.',
+ 'string' => 'Atribut mora biti: velikost znakov.',
+ 'array' => ':attribute mora vsebovati :velikost elementov.',
+ ],
+ 'string' => ':attribute mora biti niz.',
+ 'timezone' => ':attribute mora biti veljavna cona.',
+ 'totp' => 'Podana koda ni veljavna ali je zapadla.',
+ 'unique' => ':attribute je že zaseden.',
+ 'url' => ':attribute oblika ni veljavna.',
+ 'uploaded' => 'Datoteke ni bilo mogoče naložiti. Strežnik morda ne sprejema datotek te velikosti.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Potrditev gesla',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/sq/activities.php b/lang/sq/activities.php
new file mode 100644
index 00000000000..9296d1759ca
--- /dev/null
+++ b/lang/sq/activities.php
@@ -0,0 +1,140 @@
+ 'krijoi faqe',
+ 'page_create_notification' => 'Faqja u krijua me sukses',
+ 'page_update' => 'përditësoi faqe',
+ 'page_update_notification' => 'Faqja u përditësua me sukses',
+ 'page_delete' => 'fshiu faqe',
+ 'page_delete_notification' => 'Faqja u fshi me sukses',
+ 'page_restore' => 'riktheu faqe',
+ 'page_restore_notification' => 'Faqja u rikthye me sukses',
+ 'page_move' => 'zhvendosi faqe',
+ 'page_move_notification' => 'Faqja u zhvendos me sukses',
+
+ // Chapters
+ 'chapter_create' => 'krijoi kapitull',
+ 'chapter_create_notification' => 'Kapitulli u krijua me sukses',
+ 'chapter_update' => 'përditësoi kapitull',
+ 'chapter_update_notification' => 'Kapitulli u përditësua me sukses',
+ 'chapter_delete' => 'fshiu kapitull',
+ 'chapter_delete_notification' => 'Kapitulli u fshi me sukses',
+ 'chapter_move' => 'zhvendosi kapitull',
+ 'chapter_move_notification' => 'Kapitulli u zhvendos me sukses',
+
+ // Books
+ 'book_create' => 'krijoi libër',
+ 'book_create_notification' => 'Libri u krijua me sukses',
+ 'book_create_from_chapter' => 'konvertoi kapitullin në libër',
+ 'book_create_from_chapter_notification' => 'Kapitulli u konvertua në libër me sukses',
+ 'book_update' => 'përditësoi libër',
+ 'book_update_notification' => 'Libri u përditësua me sukses',
+ 'book_delete' => 'fshiu libër',
+ 'book_delete_notification' => 'Libri u fshi me sukses',
+ 'book_sort' => 'renditi libër',
+ 'book_sort_notification' => 'Libri u rendit me sukses',
+
+ // Bookshelves
+ 'bookshelf_create' => 'krijoi raft',
+ 'bookshelf_create_notification' => 'Rafti u krijua me sukses',
+ 'bookshelf_create_from_book' => 'konvertoi librin në raft',
+ 'bookshelf_create_from_book_notification' => 'Libri u konvertua ne raft me sukses',
+ 'bookshelf_update' => 'përditësoi raftin',
+ 'bookshelf_update_notification' => 'Rafti u përditësua me sukses',
+ 'bookshelf_delete' => 'fshiu raftin',
+ 'bookshelf_delete_notification' => 'Rafti u fshi me sukses',
+
+ // Revisions
+ 'revision_restore' => 'riktheu rishikimin',
+ 'revision_delete' => 'fshiu rishikimin',
+ 'revision_delete_notification' => 'Rishikimi u fshi me sukses',
+
+ // Favourites
+ 'favourite_add_notification' => '":emri" është shtuar në listën tuaj të të preferuarve',
+ 'favourite_remove_notification' => '":emri" është hequr nga lista juaj e të preferuarve',
+
+ // Watching
+ 'watch_update_level_notification' => 'Preferencat e orës u përditësuan me sukses',
+
+ // Auth
+ 'auth_login' => 'loguar',
+ 'auth_register' => 'regjistruar si përdorues i ri',
+ 'auth_password_reset_request' => 'kërkoi rivendosjen e fjalëkalimit të përdoruesit',
+ 'auth_password_reset_update' => 'rivendos fjalëkalimin e përdoruesit',
+ 'mfa_setup_method' => 'konfiguroi metodën MFA',
+ 'mfa_setup_method_notification' => 'Metoda Multi-factor u konfigurua me sukses',
+ 'mfa_remove_method' => 'hoqi metodën MFA',
+ 'mfa_remove_method_notification' => 'Metoda Multi-factor u hoq me sukses',
+
+ // Settings
+ 'settings_update' => 'përditësoi cilësimet',
+ 'settings_update_notification' => 'Cilësimet u përditësuan me sukses',
+ 'maintenance_action_run' => 'u zhvillua veprim i mirëmbajtjes',
+
+ // Webhooks
+ 'webhook_create' => 'u krijua uebhook',
+ 'webhook_create_notification' => 'Uebhook-u u krijua me sukses',
+ 'webhook_update' => 'përditësoi uebhook',
+ 'webhook_update_notification' => 'Uebhook-u u përditësua me sukses',
+ 'webhook_delete' => 'fshiu uebhook',
+ 'webhook_delete_notification' => 'Uebhook-u u fshi me sukses',
+
+ // Imports
+ 'import_create' => 'importi i krijuar',
+ 'import_create_notification' => 'Importi u ngarkua me sukses',
+ 'import_run' => 'Importi i përditësuar',
+ 'import_run_notification' => 'Përmbajtja u importua me sukses',
+ 'import_delete' => 'Importi i fshirë',
+ 'import_delete_notification' => 'Importi u fshi me sukses',
+
+ // Users
+ 'user_create' => 'krijoi përdorues',
+ 'user_create_notification' => 'Përdoruesi u krijua me sukses',
+ 'user_update' => 'përditësoi përdorues',
+ 'user_update_notification' => 'Përdoruesi u përditësua me sukses',
+ 'user_delete' => 'fshi përdorues',
+ 'user_delete_notification' => 'Përdoruesi u fshi me sukses',
+
+ // API Tokens
+ 'api_token_create' => 'Krijoi token API',
+ 'api_token_create_notification' => 'Token API u krijua me sukses',
+ 'api_token_update' => 'Token i përditësuar i API-t',
+ 'api_token_update_notification' => 'Token API u përditësua me sukses',
+ 'api_token_delete' => 'Fshiu tokenin API',
+ 'api_token_delete_notification' => 'Token API u fshi me sukses',
+
+ // Roles
+ 'role_create' => 'krijoi rol',
+ 'role_create_notification' => 'Roli u krijua me sukses',
+ 'role_update' => 'përditësoi rol',
+ 'role_update_notification' => 'Roli u përditësua me sukses',
+ 'role_delete' => 'fshiu rol',
+ 'role_delete_notification' => 'Roli u fshi me sukses',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'boshatisi koshin e riciklimit',
+ 'recycle_bin_restore' => 'riktheu nga koshi i riciklimit',
+ 'recycle_bin_destroy' => 'fshiu nga koshi i riciklimit',
+
+ // Comments
+ 'commented_on' => 'komentoi në',
+ 'comment_create' => 'shtoi koment',
+ 'comment_update' => 'përditësoi koment',
+ 'comment_delete' => 'fshiu koment',
+
+ // Sort Rules
+ 'sort_rule_create' => 'Rregull i krijuar renditjeje',
+ 'sort_rule_create_notification' => 'Rregulli i renditjes u krijua me sukses',
+ 'sort_rule_update' => 'rregulli i renditjes i përditësuar',
+ 'sort_rule_update_notification' => 'Rregulli i renditjes u përditësua me sukses',
+ 'sort_rule_delete' => 'rregulli i renditjes është fshirë',
+ 'sort_rule_delete_notification' => 'Rregulli i renditjes u fshi me sukses',
+
+ // Other
+ 'permissions_update' => 'përditësoi lejet',
+];
diff --git a/lang/sq/auth.php b/lang/sq/auth.php
new file mode 100644
index 00000000000..6fdc4ee4a6d
--- /dev/null
+++ b/lang/sq/auth.php
@@ -0,0 +1,117 @@
+ 'Këto kredenciale nuk përputhen me të dhënat tona.',
+ 'throttle' => 'Shumë përpjekje për hyrje. Ju lutemi provoni përsëri në :seconds sekonda.',
+
+ // Login & Register
+ 'sign_up' => 'Regjistrohu',
+ 'log_in' => 'Logohu',
+ 'log_in_with' => 'Logohu me :socialDriver',
+ 'sign_up_with' => 'Regjistrohu me :socialDriver',
+ 'logout' => 'Shkyçu',
+
+ 'name' => 'Emri',
+ 'username' => 'Emri i përdoruesit',
+ 'email' => 'Email',
+ 'password' => 'Fjalkalimi',
+ 'password_confirm' => 'Konfirmo fjalëkalimin',
+ 'password_hint' => 'Duhet të jetë të paktën 8 karaktere',
+ 'forgot_password' => 'Keni harruar fjalëkalimin?',
+ 'remember_me' => 'Më mbaj mend',
+ 'ldap_email_hint' => 'Ju lutem fusni një email që do përdorni për këtë llogari.',
+ 'create_account' => 'Krijo një llogari',
+ 'already_have_account' => 'Keni një llogari?',
+ 'dont_have_account' => 'Nuk keni akoma llogari?',
+ 'social_login' => 'Kyçu me rrjete sociale',
+ 'social_registration' => 'Regjistrohu me rrjete sociale',
+ 'social_registration_text' => 'Regjistrohu dhe logohu duhet përdorur një shërbim tjetër.',
+
+ 'register_thanks' => 'Faleminderit që u regjistruat!',
+ 'register_confirm' => 'Ju lutem kontrolloni emai-in tuaj dhe klikoni te butoni i konfirmimit për të aksesuar :appName.',
+ 'registrations_disabled' => 'Regjistrimet janë të mbyllura',
+ 'registration_email_domain_invalid' => 'Ky domain email-i nuk ka akses te ky aplikacion',
+ 'register_success' => 'Faleminderit që u regjistruar! Ju tani jeni të regjistruar dhe të loguar.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Përpjekje për t\'u kyçur',
+ 'auto_init_starting_desc' => 'Jemi duke kontaktuar sistemin e verifikimit për të filluar proçesin e kyçjes. Nëse nuk ka progres për 5 sekonda, klikoni linkun më poshtë.',
+ 'auto_init_start_link' => 'Vazhdoni me verifikimin',
+
+ // Password Reset
+ 'reset_password' => 'Rivendosni fjalëkalimin',
+ 'reset_password_send_instructions' => 'Shkruani email-in tuaj më poshtë dhe do të merrni një link në email për të rikthyer fjalëkalimin.',
+ 'reset_password_send_button' => 'Dërgo linkun e rikthimit të fjalëkalimit',
+ 'reset_password_sent' => 'Një link për rikthimin e fjalëkalimit do ju dërgohet në :email nëse adresa e email-it ndodhet në sistem.',
+ 'reset_password_success' => 'Fjalëkalimi juaj u rikthye me sukses.',
+ 'email_reset_subject' => 'Rikthe fjalëkalimin për :appName',
+ 'email_reset_text' => 'Ju po e merrni këtë email sepse ne morëm një kërkesë për rivendosjen e fjalëkalimit për llogarinë tuaj.',
+ 'email_reset_not_requested' => 'Nëse nuk keni kërkuar rivendosjen e fjalëkalimit, nuk kërkohet asnjë veprim i mëtejshëm.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Konfirmo email-in tënd në :appName',
+ 'email_confirm_greeting' => 'Faleminderit që u bashkuat me :appName!',
+ 'email_confirm_text' => 'Ju lutemi konfirmoni adresën tuaj të email-it duke klikuar butonin më poshtë:',
+ 'email_confirm_action' => 'Konfirmo email-in',
+ 'email_confirm_send_error' => 'Kërkohet konfirmimi i email-it, por sistemi nuk mundi ta dërgonte email-in. Kontaktoni administratorin për t\'u siguruar që email-i është konfiguruar saktë.',
+ 'email_confirm_success' => 'Email-i juaj është konfirmuar! Tani duhet të jeni në gjendje të hyni në sistem duke përdorur këtë adresë email-i.',
+ 'email_confirm_resent' => 'Emaili i konfirmimit u ridërgua, ju lutem kontrolloni kutinë tuaj postare.',
+ 'email_confirm_thanks' => 'Faleminderit që konfirmuat!',
+ 'email_confirm_thanks_desc' => 'Ju lutemi prisni një moment ndërsa konfirmimi juaj përpunohet. Nëse nuk ridrejtoheni pas 3 sekondash, shtypni linkun "Vazhdo" më poshtë për të vazhduar.',
+
+ 'email_not_confirmed' => 'Adresa e email-it nuk është konfirmuar',
+ 'email_not_confirmed_text' => 'Adresa juaj e email-it nuk është konfirmuar ende.',
+ 'email_not_confirmed_click_link' => 'Ju lutemi klikoni linkun në emailin që ju është dërguar menjëherë pasi u regjistruat.',
+ 'email_not_confirmed_resend' => 'Nëse nuk mund ta gjeni email-in, mund ta ridërgoni email-in e konfirmimit duke plotësuar formularin më poshtë.',
+ 'email_not_confirmed_resend_button' => 'Ridërgo emailin e konfirmimit',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Je ftuar të bashkohesh me :appName!',
+ 'user_invite_email_greeting' => 'Një llogari është krijuar për ty në :appName.',
+ 'user_invite_email_text' => 'Klikoni butonin më poshtë për të vendosur një fjalëkalim llogarie dhe për të fituar akses:',
+ 'user_invite_email_action' => 'Vendos fjalëkalimin e llogarisë',
+ 'user_invite_page_welcome' => 'Mirë se vini në :appName!',
+ 'user_invite_page_text' => 'Për të finalizuar llogarinë tuaj dhe për të fituar akses, duhet të vendosni një fjalëkalim i cili do të përdoret për t\'u kyçur në :appName në vizitat e ardhshme.',
+ 'user_invite_page_confirm_button' => 'Konfirmo fjalëkalimin',
+ 'user_invite_success_login' => 'Password set, you should now be able to login using your set password to access :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Setup Multi-Factor Authentication',
+ 'mfa_setup_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'mfa_setup_configured' => 'Already configured',
+ 'mfa_setup_reconfigure' => 'Reconfigure',
+ 'mfa_setup_remove_confirmation' => 'Are you sure you want to remove this multi-factor authentication method?',
+ 'mfa_setup_action' => 'Setup',
+ 'mfa_backup_codes_usage_limit_warning' => 'You have less than 5 backup codes remaining, Please generate and store a new set before you run out of codes to prevent being locked out of your account.',
+ 'mfa_option_totp_title' => 'Mobile App',
+ 'mfa_option_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Backup Codes',
+ 'mfa_option_backup_codes_desc' => 'Generates a set of one-time-use backup codes which you\'ll enter on login to verify your identity. Make sure to store these in a safe & secure place.',
+ 'mfa_gen_confirm_and_enable' => 'Confirm and Enable',
+ 'mfa_gen_backup_codes_title' => 'Backup Codes Setup',
+ 'mfa_gen_backup_codes_desc' => 'Store the below list of codes in a safe place. When accessing the system you\'ll be able to use one of the codes as a second authentication mechanism.',
+ 'mfa_gen_backup_codes_download' => 'Download Codes',
+ 'mfa_gen_backup_codes_usage_warning' => 'Each code can only be used once',
+ 'mfa_gen_totp_title' => 'Mobile App Setup',
+ 'mfa_gen_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Scan the QR code below using your preferred authentication app to get started.',
+ 'mfa_gen_totp_verify_setup' => 'Verify Setup',
+ 'mfa_gen_totp_verify_setup_desc' => 'Verify that all is working by entering a code, generated within your authentication app, in the input box below:',
+ 'mfa_gen_totp_provide_code_here' => 'Provide your app generated code here',
+ 'mfa_verify_access' => 'Verify Access',
+ 'mfa_verify_access_desc' => 'Your user account requires you to confirm your identity via an additional level of verification before you\'re granted access. Verify using one of your configured methods to continue.',
+ 'mfa_verify_no_methods' => 'No Methods Configured',
+ 'mfa_verify_no_methods_desc' => 'No multi-factor authentication methods could be found for your account. You\'ll need to set up at least one method before you gain access.',
+ 'mfa_verify_use_totp' => 'Verify using a mobile app',
+ 'mfa_verify_use_backup_codes' => 'Verify using a backup code',
+ 'mfa_verify_backup_code' => 'Backup Code',
+ 'mfa_verify_backup_code_desc' => 'Enter one of your remaining backup codes below:',
+ 'mfa_verify_backup_code_enter_here' => 'Enter backup code here',
+ 'mfa_verify_totp_desc' => 'Enter the code, generated using your mobile app, below:',
+ 'mfa_setup_login_notification' => 'Multi-factor method configured, Please now login again using the configured method.',
+];
diff --git a/lang/sq/common.php b/lang/sq/common.php
new file mode 100644
index 00000000000..aa2988124e4
--- /dev/null
+++ b/lang/sq/common.php
@@ -0,0 +1,115 @@
+ 'Cancel',
+ 'close' => 'Close',
+ 'confirm' => 'Confirm',
+ 'back' => 'Back',
+ 'save' => 'Save',
+ 'continue' => 'Continue',
+ 'select' => 'Select',
+ 'toggle_all' => 'Toggle All',
+ 'more' => 'More',
+
+ // Form Labels
+ 'name' => 'Name',
+ 'description' => 'Description',
+ 'role' => 'Role',
+ 'cover_image' => 'Cover image',
+ 'cover_image_description' => 'This image should be approximately 440x250px although it will be flexibly scaled & cropped to fit the user interface in different scenarios as required, so actual dimensions for display will differ.',
+
+ // Actions
+ 'actions' => 'Actions',
+ 'view' => 'View',
+ 'view_all' => 'View All',
+ 'new' => 'New',
+ 'create' => 'Create',
+ 'update' => 'Update',
+ 'edit' => 'Edit',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Sort',
+ 'move' => 'Move',
+ 'copy' => 'Copy',
+ 'reply' => 'Reply',
+ 'delete' => 'Delete',
+ 'delete_confirm' => 'Confirm Deletion',
+ 'search' => 'Search',
+ 'search_clear' => 'Clear Search',
+ 'reset' => 'Reset',
+ 'remove' => 'Remove',
+ 'add' => 'Add',
+ 'configure' => 'Configure',
+ 'manage' => 'Manage',
+ 'fullscreen' => 'Fullscreen',
+ 'favourite' => 'Favourite',
+ 'unfavourite' => 'Unfavourite',
+ 'next' => 'Next',
+ 'previous' => 'Previous',
+ 'filter_active' => 'Active Filter:',
+ 'filter_clear' => 'Clear Filter',
+ 'download' => 'Download',
+ 'open_in_tab' => 'Open in Tab',
+ 'open' => 'Open',
+
+ // Sort Options
+ 'sort_options' => 'Sort Options',
+ 'sort_direction_toggle' => 'Sort Direction Toggle',
+ 'sort_ascending' => 'Sort Ascending',
+ 'sort_descending' => 'Sort Descending',
+ 'sort_name' => 'Name',
+ 'sort_default' => 'Default',
+ 'sort_created_at' => 'Created Date',
+ 'sort_updated_at' => 'Updated Date',
+
+ // Misc
+ 'deleted_user' => 'Deleted User',
+ 'no_activity' => 'No activity to show',
+ 'no_items' => 'No items available',
+ 'back_to_top' => 'Back to top',
+ 'skip_to_main_content' => 'Skip to main content',
+ 'toggle_details' => 'Toggle Details',
+ 'toggle_thumbnails' => 'Toggle Thumbnails',
+ 'details' => 'Details',
+ 'grid_view' => 'Grid View',
+ 'list_view' => 'List View',
+ 'default' => 'Default',
+ 'breadcrumb' => 'Breadcrumb',
+ 'status' => 'Status',
+ 'status_active' => 'Active',
+ 'status_inactive' => 'Inactive',
+ 'never' => 'Never',
+ 'none' => 'None',
+
+ // Header
+ 'homepage' => 'Homepage',
+ 'header_menu_expand' => 'Expand Header Menu',
+ 'profile_menu' => 'Profile Menu',
+ 'view_profile' => 'Shiko profilin',
+ 'edit_profile' => 'Ndrysho profilin',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
+ 'global_search' => 'Global Search',
+
+ // Layout tabs
+ 'tab_info' => 'Info',
+ 'tab_info_label' => 'Tab: Show Secondary Information',
+ 'tab_content' => 'Content',
+ 'tab_content_label' => 'Tab: Show Primary Content',
+
+ // Email Content
+ 'email_action_help' => 'If you’re having trouble clicking the ":actionText" button, copy and paste the URL below into your web browser:',
+ 'email_rights' => 'All rights reserved',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Privacy Policy',
+ 'terms_of_service' => 'Terms of Service',
+
+ // OpenSearch
+ 'opensearch_description' => 'Search :appName',
+];
diff --git a/lang/sq/components.php b/lang/sq/components.php
new file mode 100644
index 00000000000..c33b1d0b791
--- /dev/null
+++ b/lang/sq/components.php
@@ -0,0 +1,46 @@
+ 'Image Select',
+ 'image_list' => 'Image List',
+ 'image_details' => 'Image Details',
+ 'image_upload' => 'Upload Image',
+ 'image_intro' => 'Here you can select and manage images that have been previously uploaded to the system.',
+ 'image_intro_upload' => 'Upload a new image by dragging an image file into this window, or by using the "Upload Image" button above.',
+ 'image_all' => 'All',
+ 'image_all_title' => 'View all images',
+ 'image_book_title' => 'View images uploaded to this book',
+ 'image_page_title' => 'View images uploaded to this page',
+ 'image_search_hint' => 'Search by image name',
+ 'image_uploaded' => 'Uploaded :uploadedDate',
+ 'image_uploaded_by' => 'Uploaded by :userName',
+ 'image_uploaded_to' => 'Uploaded to :pageLink',
+ 'image_updated' => 'Updated :updateDate',
+ 'image_load_more' => 'Load More',
+ 'image_image_name' => 'Image Name',
+ 'image_delete_used' => 'This image is used in the pages below.',
+ 'image_delete_confirm_text' => 'Are you sure you want to delete this image?',
+ 'image_select_image' => 'Select Image',
+ 'image_dropzone' => 'Drop images or click here to upload',
+ 'image_dropzone_drop' => 'Drop images here to upload',
+ 'images_deleted' => 'Images Deleted',
+ 'image_preview' => 'Image Preview',
+ 'image_upload_success' => 'Image uploaded successfully',
+ 'image_update_success' => 'Image details successfully updated',
+ 'image_delete_success' => 'Image successfully deleted',
+ 'image_replace' => 'Replace Image',
+ 'image_replace_success' => 'Image file successfully updated',
+ 'image_rebuild_thumbs' => 'Regenerate Size Variations',
+ 'image_rebuild_thumbs_success' => 'Image size variations successfully rebuilt!',
+
+ // Code Editor
+ 'code_editor' => 'Edit Code',
+ 'code_language' => 'Code Language',
+ 'code_content' => 'Code Content',
+ 'code_session_history' => 'Session History',
+ 'code_save' => 'Save Code',
+];
diff --git a/lang/sq/editor.php b/lang/sq/editor.php
new file mode 100644
index 00000000000..0d250e9a7bd
--- /dev/null
+++ b/lang/sq/editor.php
@@ -0,0 +1,182 @@
+ 'General',
+ 'advanced' => 'Advanced',
+ 'none' => 'None',
+ 'cancel' => 'Cancel',
+ 'save' => 'Save',
+ 'close' => 'Close',
+ 'apply' => 'Apply',
+ 'undo' => 'Undo',
+ 'redo' => 'Redo',
+ 'left' => 'Left',
+ 'center' => 'Center',
+ 'right' => 'Right',
+ 'top' => 'Top',
+ 'middle' => 'Middle',
+ 'bottom' => 'Bottom',
+ 'width' => 'Width',
+ 'height' => 'Height',
+ 'More' => 'More',
+ 'select' => 'Select...',
+
+ // Toolbar
+ 'formats' => 'Formats',
+ 'header_large' => 'Large Header',
+ 'header_medium' => 'Medium Header',
+ 'header_small' => 'Small Header',
+ 'header_tiny' => 'Tiny Header',
+ 'paragraph' => 'Paragraph',
+ 'blockquote' => 'Blockquote',
+ 'inline_code' => 'Inline code',
+ 'callouts' => 'Callouts',
+ 'callout_information' => 'Information',
+ 'callout_success' => 'Success',
+ 'callout_warning' => 'Warning',
+ 'callout_danger' => 'Danger',
+ 'bold' => 'Bold',
+ 'italic' => 'Italic',
+ 'underline' => 'Underline',
+ 'strikethrough' => 'Strikethrough',
+ 'superscript' => 'Superscript',
+ 'subscript' => 'Subscript',
+ 'text_color' => 'Text color',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Custom color',
+ 'remove_color' => 'Remove color',
+ 'background_color' => 'Background color',
+ 'align_left' => 'Align left',
+ 'align_center' => 'Align center',
+ 'align_right' => 'Align right',
+ 'align_justify' => 'Justify',
+ 'list_bullet' => 'Bullet list',
+ 'list_numbered' => 'Numbered list',
+ 'list_task' => 'Task list',
+ 'indent_increase' => 'Increase indent',
+ 'indent_decrease' => 'Decrease indent',
+ 'table' => 'Table',
+ 'insert_image' => 'Insert image',
+ 'insert_image_title' => 'Insert/Edit Image',
+ 'insert_link' => 'Insert/edit link',
+ 'insert_link_title' => 'Insert/Edit Link',
+ 'insert_horizontal_line' => 'Insert horizontal line',
+ 'insert_code_block' => 'Insert code block',
+ 'edit_code_block' => 'Edit code block',
+ 'insert_drawing' => 'Insert/edit drawing',
+ 'drawing_manager' => 'Drawing manager',
+ 'insert_media' => 'Insert/edit media',
+ 'insert_media_title' => 'Insert/Edit Media',
+ 'clear_formatting' => 'Clear formatting',
+ 'source_code' => 'Source code',
+ 'source_code_title' => 'Source Code',
+ 'fullscreen' => 'Fullscreen',
+ 'image_options' => 'Image options',
+
+ // Tables
+ 'table_properties' => 'Table properties',
+ 'table_properties_title' => 'Table Properties',
+ 'delete_table' => 'Delete table',
+ 'table_clear_formatting' => 'Clear table formatting',
+ 'resize_to_contents' => 'Resize to contents',
+ 'row_header' => 'Row header',
+ 'insert_row_before' => 'Insert row before',
+ 'insert_row_after' => 'Insert row after',
+ 'delete_row' => 'Delete row',
+ 'insert_column_before' => 'Insert column before',
+ 'insert_column_after' => 'Insert column after',
+ 'delete_column' => 'Delete column',
+ 'table_cell' => 'Cell',
+ 'table_row' => 'Row',
+ 'table_column' => 'Column',
+ 'cell_properties' => 'Cell properties',
+ 'cell_properties_title' => 'Cell Properties',
+ 'cell_type' => 'Cell type',
+ 'cell_type_cell' => 'Cell',
+ 'cell_scope' => 'Scope',
+ 'cell_type_header' => 'Header cell',
+ 'merge_cells' => 'Merge cells',
+ 'split_cell' => 'Split cell',
+ 'table_row_group' => 'Row Group',
+ 'table_column_group' => 'Column Group',
+ 'horizontal_align' => 'Horizontal align',
+ 'vertical_align' => 'Vertical align',
+ 'border_width' => 'Border width',
+ 'border_style' => 'Border style',
+ 'border_color' => 'Border color',
+ 'row_properties' => 'Row properties',
+ 'row_properties_title' => 'Row Properties',
+ 'cut_row' => 'Cut row',
+ 'copy_row' => 'Copy row',
+ 'paste_row_before' => 'Paste row before',
+ 'paste_row_after' => 'Paste row after',
+ 'row_type' => 'Row type',
+ 'row_type_header' => 'Header',
+ 'row_type_body' => 'Body',
+ 'row_type_footer' => 'Footer',
+ 'alignment' => 'Alignment',
+ 'cut_column' => 'Cut column',
+ 'copy_column' => 'Copy column',
+ 'paste_column_before' => 'Paste column before',
+ 'paste_column_after' => 'Paste column after',
+ 'cell_padding' => 'Cell padding',
+ 'cell_spacing' => 'Cell spacing',
+ 'caption' => 'Caption',
+ 'show_caption' => 'Show caption',
+ 'constrain' => 'Constrain proportions',
+ 'cell_border_solid' => 'Solid',
+ 'cell_border_dotted' => 'Dotted',
+ 'cell_border_dashed' => 'Dashed',
+ 'cell_border_double' => 'Double',
+ 'cell_border_groove' => 'Groove',
+ 'cell_border_ridge' => 'Ridge',
+ 'cell_border_inset' => 'Inset',
+ 'cell_border_outset' => 'Outset',
+ 'cell_border_none' => 'None',
+ 'cell_border_hidden' => 'Hidden',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Source',
+ 'alt_desc' => 'Alternative description',
+ 'embed' => 'Embed',
+ 'paste_embed' => 'Paste your embed code below:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Text to display',
+ 'title' => 'Title',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Open link',
+ 'open_link_in' => 'Open link in...',
+ 'open_link_current' => 'Current window',
+ 'open_link_new' => 'New window',
+ 'remove_link' => 'Remove link',
+ 'insert_collapsible' => 'Insert collapsible block',
+ 'collapsible_unwrap' => 'Unwrap',
+ 'edit_label' => 'Edit label',
+ 'toggle_open_closed' => 'Toggle open/closed',
+ 'collapsible_edit' => 'Edit collapsible block',
+ 'toggle_label' => 'Toggle label',
+
+ // About view
+ 'about' => 'About the editor',
+ 'about_title' => 'About the WYSIWYG Editor',
+ 'editor_license' => 'Editor License & Copyright',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'This editor is built using :tinyLink which is provided under the MIT license.',
+ 'editor_tiny_license_link' => 'The copyright and license details of TinyMCE can be found here.',
+ 'save_continue' => 'Save Page & Continue',
+ 'callouts_cycle' => '(Keep pressing to toggle through types)',
+ 'link_selector' => 'Link to content',
+ 'shortcuts' => 'Shortcuts',
+ 'shortcut' => 'Shortcut',
+ 'shortcuts_intro' => 'The following shortcuts are available in the editor:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Description',
+];
diff --git a/lang/sq/entities.php b/lang/sq/entities.php
new file mode 100644
index 00000000000..74c50be3b2f
--- /dev/null
+++ b/lang/sq/entities.php
@@ -0,0 +1,476 @@
+ 'Recently Created',
+ 'recently_created_pages' => 'Recently Created Pages',
+ 'recently_updated_pages' => 'Recently Updated Pages',
+ 'recently_created_chapters' => 'Recently Created Chapters',
+ 'recently_created_books' => 'Recently Created Books',
+ 'recently_created_shelves' => 'Recently Created Shelves',
+ 'recently_update' => 'Recently Updated',
+ 'recently_viewed' => 'Recently Viewed',
+ 'recent_activity' => 'Recent Activity',
+ 'create_now' => 'Create one now',
+ 'revisions' => 'Revisions',
+ 'meta_revision' => 'Revision #:revisionCount',
+ 'meta_created' => 'Created :timeLength',
+ 'meta_created_name' => 'Created :timeLength by :user',
+ 'meta_updated' => 'Updated :timeLength',
+ 'meta_updated_name' => 'Updated :timeLength by :user',
+ 'meta_owned_name' => 'Owned by :user',
+ 'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
+ 'entity_select' => 'Entity Select',
+ 'entity_select_lack_permission' => 'You don\'t have the required permissions to select this item',
+ 'images' => 'Images',
+ 'my_recent_drafts' => 'My Recent Drafts',
+ 'my_recently_viewed' => 'My Recently Viewed',
+ 'my_most_viewed_favourites' => 'My Most Viewed Favourites',
+ 'my_favourites' => 'My Favourites',
+ 'no_pages_viewed' => 'You have not viewed any pages',
+ 'no_pages_recently_created' => 'No pages have been recently created',
+ 'no_pages_recently_updated' => 'No pages have been recently updated',
+ 'export' => 'Export',
+ 'export_html' => 'Contained Web File',
+ 'export_pdf' => 'PDF File',
+ 'export_text' => 'Plain Text File',
+ 'export_md' => 'Markdown File',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Permissions',
+ 'permissions_desc' => 'Set permissions here to override the default permissions provided by user roles.',
+ 'permissions_book_cascade' => 'Permissions set on books will automatically cascade to child chapters and pages, unless they have their own permissions defined.',
+ 'permissions_chapter_cascade' => 'Permissions set on chapters will automatically cascade to child pages, unless they have their own permissions defined.',
+ 'permissions_save' => 'Save Permissions',
+ 'permissions_owner' => 'Owner',
+ 'permissions_role_everyone_else' => 'Everyone Else',
+ 'permissions_role_everyone_else_desc' => 'Set permissions for all roles not specifically overridden.',
+ 'permissions_role_override' => 'Override permissions for role',
+ 'permissions_inherit_defaults' => 'Inherit defaults',
+
+ // Search
+ 'search_results' => 'Search Results',
+ 'search_total_results_found' => ':count result found|:count total results found',
+ 'search_clear' => 'Clear Search',
+ 'search_no_pages' => 'No pages matched this search',
+ 'search_for_term' => 'Search for :term',
+ 'search_more' => 'More Results',
+ 'search_advanced' => 'Advanced Search',
+ 'search_terms' => 'Search Terms',
+ 'search_content_type' => 'Content Type',
+ 'search_exact_matches' => 'Exact Matches',
+ 'search_tags' => 'Tag Searches',
+ 'search_options' => 'Options',
+ 'search_viewed_by_me' => 'Viewed by me',
+ 'search_not_viewed_by_me' => 'Not viewed by me',
+ 'search_permissions_set' => 'Permissions set',
+ 'search_created_by_me' => 'Created by me',
+ 'search_updated_by_me' => 'Updated by me',
+ 'search_owned_by_me' => 'Owned by me',
+ 'search_date_options' => 'Date Options',
+ 'search_updated_before' => 'Updated before',
+ 'search_updated_after' => 'Updated after',
+ 'search_created_before' => 'Created before',
+ 'search_created_after' => 'Created after',
+ 'search_set_date' => 'Set Date',
+ 'search_update' => 'Update Search',
+
+ // Shelves
+ 'shelf' => 'Shelf',
+ 'shelves' => 'Shelves',
+ 'x_shelves' => ':count Shelf|:count Shelves',
+ 'shelves_empty' => 'No shelves have been created',
+ 'shelves_create' => 'Create New Shelf',
+ 'shelves_popular' => 'Popular Shelves',
+ 'shelves_new' => 'New Shelves',
+ 'shelves_new_action' => 'New Shelf',
+ 'shelves_popular_empty' => 'The most popular shelves will appear here.',
+ 'shelves_new_empty' => 'The most recently created shelves will appear here.',
+ 'shelves_save' => 'Save Shelf',
+ 'shelves_books' => 'Books on this shelf',
+ 'shelves_add_books' => 'Add books to this shelf',
+ 'shelves_drag_books' => 'Drag books below to add them to this shelf',
+ 'shelves_empty_contents' => 'This shelf has no books assigned to it',
+ 'shelves_edit_and_assign' => 'Edit shelf to assign books',
+ 'shelves_edit_named' => 'Edit Shelf :name',
+ 'shelves_edit' => 'Edit Shelf',
+ 'shelves_delete' => 'Delete Shelf',
+ 'shelves_delete_named' => 'Delete Shelf :name',
+ 'shelves_delete_explain' => "This will delete the shelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Are you sure you want to delete this shelf?',
+ 'shelves_permissions' => 'Shelf Permissions',
+ 'shelves_permissions_updated' => 'Shelf Permissions Updated',
+ 'shelves_permissions_active' => 'Shelf Permissions Active',
+ 'shelves_permissions_cascade_warning' => 'Permissions on shelves do not automatically cascade to contained books. This is because a book can exist on multiple shelves. Permissions can however be copied down to child books using the option found below.',
+ 'shelves_permissions_create' => 'Shelf create permissions are only used for copying permissions to child books using the action below. They do not control the ability to create books.',
+ 'shelves_copy_permissions_to_books' => 'Copy Permissions to Books',
+ 'shelves_copy_permissions' => 'Copy Permissions',
+ 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this shelf to all books contained within. Before activating, ensure any changes to the permissions of this shelf have been saved.',
+ 'shelves_copy_permission_success' => 'Shelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'Book',
+ 'books' => 'Books',
+ 'x_books' => ':count Book|:count Books',
+ 'books_empty' => 'No books have been created',
+ 'books_popular' => 'Popular Books',
+ 'books_recent' => 'Recent Books',
+ 'books_new' => 'New Books',
+ 'books_new_action' => 'New Book',
+ 'books_popular_empty' => 'The most popular books will appear here.',
+ 'books_new_empty' => 'The most recently created books will appear here.',
+ 'books_create' => 'Create New Book',
+ 'books_delete' => 'Delete Book',
+ 'books_delete_named' => 'Delete Book :bookName',
+ 'books_delete_explain' => 'This will delete the book with the name \':bookName\'. All pages and chapters will be removed.',
+ 'books_delete_confirmation' => 'Are you sure you want to delete this book?',
+ 'books_edit' => 'Edit Book',
+ 'books_edit_named' => 'Edit Book :bookName',
+ 'books_form_book_name' => 'Book Name',
+ 'books_save' => 'Save Book',
+ 'books_permissions' => 'Book Permissions',
+ 'books_permissions_updated' => 'Book Permissions Updated',
+ 'books_empty_contents' => 'No pages or chapters have been created for this book.',
+ 'books_empty_create_page' => 'Create a new page',
+ 'books_empty_sort_current_book' => 'Sort the current book',
+ 'books_empty_add_chapter' => 'Add a chapter',
+ 'books_permissions_active' => 'Book Permissions Active',
+ 'books_search_this' => 'Search this book',
+ 'books_navigation' => 'Book Navigation',
+ 'books_sort' => 'Sort Book Contents',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Sort Book :bookName',
+ 'books_sort_name' => 'Sort by Name',
+ 'books_sort_created' => 'Sort by Created Date',
+ 'books_sort_updated' => 'Sort by Updated Date',
+ 'books_sort_chapters_first' => 'Chapters First',
+ 'books_sort_chapters_last' => 'Chapters Last',
+ 'books_sort_show_other' => 'Show Other Books',
+ 'books_sort_save' => 'Save New Order',
+ 'books_sort_show_other_desc' => 'Add other books here to include them in the sort operation, and allow easy cross-book reorganisation.',
+ 'books_sort_move_up' => 'Move Up',
+ 'books_sort_move_down' => 'Move Down',
+ 'books_sort_move_prev_book' => 'Move to Previous Book',
+ 'books_sort_move_next_book' => 'Move to Next Book',
+ 'books_sort_move_prev_chapter' => 'Move Into Previous Chapter',
+ 'books_sort_move_next_chapter' => 'Move Into Next Chapter',
+ 'books_sort_move_book_start' => 'Move to Start of Book',
+ 'books_sort_move_book_end' => 'Move to End of Book',
+ 'books_sort_move_before_chapter' => 'Move to Before Chapter',
+ 'books_sort_move_after_chapter' => 'Move to After Chapter',
+ 'books_copy' => 'Copy Book',
+ 'books_copy_success' => 'Book successfully copied',
+
+ // Chapters
+ 'chapter' => 'Chapter',
+ 'chapters' => 'Chapters',
+ 'x_chapters' => ':count Chapter|:count Chapters',
+ 'chapters_popular' => 'Popular Chapters',
+ 'chapters_new' => 'New Chapter',
+ 'chapters_create' => 'Create New Chapter',
+ 'chapters_delete' => 'Delete Chapter',
+ 'chapters_delete_named' => 'Delete Chapter :chapterName',
+ 'chapters_delete_explain' => 'This will delete the chapter with the name \':chapterName\'. All pages that exist within this chapter will also be deleted.',
+ 'chapters_delete_confirm' => 'Are you sure you want to delete this chapter?',
+ 'chapters_edit' => 'Edit Chapter',
+ 'chapters_edit_named' => 'Edit Chapter :chapterName',
+ 'chapters_save' => 'Save Chapter',
+ 'chapters_move' => 'Move Chapter',
+ 'chapters_move_named' => 'Move Chapter :chapterName',
+ 'chapters_copy' => 'Copy Chapter',
+ 'chapters_copy_success' => 'Chapter successfully copied',
+ 'chapters_permissions' => 'Chapter Permissions',
+ 'chapters_empty' => 'No pages are currently in this chapter.',
+ 'chapters_permissions_active' => 'Chapter Permissions Active',
+ 'chapters_permissions_success' => 'Chapter Permissions Updated',
+ 'chapters_search_this' => 'Search this chapter',
+ 'chapter_sort_book' => 'Sort Book',
+
+ // Pages
+ 'page' => 'Page',
+ 'pages' => 'Pages',
+ 'x_pages' => ':count Page|:count Pages',
+ 'pages_popular' => 'Popular Pages',
+ 'pages_new' => 'New Page',
+ 'pages_attachments' => 'Attachments',
+ 'pages_navigation' => 'Page Navigation',
+ 'pages_delete' => 'Delete Page',
+ 'pages_delete_named' => 'Delete Page :pageName',
+ 'pages_delete_draft_named' => 'Delete Draft Page :pageName',
+ 'pages_delete_draft' => 'Delete Draft Page',
+ 'pages_delete_success' => 'Page deleted',
+ 'pages_delete_draft_success' => 'Draft page deleted',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Are you sure you want to delete this page?',
+ 'pages_delete_draft_confirm' => 'Are you sure you want to delete this draft page?',
+ 'pages_editing_named' => 'Editing Page :pageName',
+ 'pages_edit_draft_options' => 'Draft Options',
+ 'pages_edit_save_draft' => 'Save Draft',
+ 'pages_edit_draft' => 'Edit Page Draft',
+ 'pages_editing_draft' => 'Editing Draft',
+ 'pages_editing_page' => 'Editing Page',
+ 'pages_edit_draft_save_at' => 'Draft saved at ',
+ 'pages_edit_delete_draft' => 'Delete Draft',
+ 'pages_edit_delete_draft_confirm' => 'Are you sure you want to delete your draft page changes? All of your changes, since the last full save, will be lost and the editor will be updated with the latest page non-draft save state.',
+ 'pages_edit_discard_draft' => 'Discard Draft',
+ 'pages_edit_switch_to_markdown' => 'Switch to Markdown Editor',
+ 'pages_edit_switch_to_markdown_clean' => '(Clean Content)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stable Content)',
+ 'pages_edit_switch_to_wysiwyg' => 'Switch to WYSIWYG Editor',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Set Changelog',
+ 'pages_edit_enter_changelog_desc' => 'Enter a brief description of the changes you\'ve made',
+ 'pages_edit_enter_changelog' => 'Enter Changelog',
+ 'pages_editor_switch_title' => 'Switch Editor',
+ 'pages_editor_switch_are_you_sure' => 'Are you sure you want to change the editor for this page?',
+ 'pages_editor_switch_consider_following' => 'Consider the following when changing editors:',
+ 'pages_editor_switch_consideration_a' => 'Once saved, the new editor option will be used by any future editors, including those that may not be able to change editor type themselves.',
+ 'pages_editor_switch_consideration_b' => 'This can potentially lead to a loss of detail and syntax in certain circumstances.',
+ 'pages_editor_switch_consideration_c' => 'Tag or changelog changes, made since last save, won\'t persist across this change.',
+ 'pages_save' => 'Save Page',
+ 'pages_title' => 'Page Title',
+ 'pages_name' => 'Page Name',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Preview',
+ 'pages_md_insert_image' => 'Insert Image',
+ 'pages_md_insert_link' => 'Insert Entity Link',
+ 'pages_md_insert_drawing' => 'Insert Drawing',
+ 'pages_md_show_preview' => 'Show preview',
+ 'pages_md_sync_scroll' => 'Sync preview scroll',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Unsaved Drawing Found',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'Page is not in a chapter',
+ 'pages_move' => 'Move Page',
+ 'pages_copy' => 'Copy Page',
+ 'pages_copy_desination' => 'Copy Destination',
+ 'pages_copy_success' => 'Page successfully copied',
+ 'pages_permissions' => 'Page Permissions',
+ 'pages_permissions_success' => 'Page permissions updated',
+ 'pages_revision' => 'Revision',
+ 'pages_revisions' => 'Page Revisions',
+ 'pages_revisions_desc' => 'Listed below are all the past revisions of this page. You can look back upon, compare, and restore old page versions if permissions allow. The full history of the page may not be fully reflected here since, depending on system configuration, old revisions could be auto-deleted.',
+ 'pages_revisions_named' => 'Page Revisions for :pageName',
+ 'pages_revision_named' => 'Page Revision for :pageName',
+ 'pages_revision_restored_from' => 'Restored from #:id; :summary',
+ 'pages_revisions_created_by' => 'Created By',
+ 'pages_revisions_date' => 'Revision Date',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revision Number',
+ 'pages_revisions_numbered' => 'Revision #:id',
+ 'pages_revisions_numbered_changes' => 'Revision #:id Changes',
+ 'pages_revisions_editor' => 'Editor Type',
+ 'pages_revisions_changelog' => 'Changelog',
+ 'pages_revisions_changes' => 'Changes',
+ 'pages_revisions_current' => 'Current Version',
+ 'pages_revisions_preview' => 'Preview',
+ 'pages_revisions_restore' => 'Restore',
+ 'pages_revisions_none' => 'This page has no revisions',
+ 'pages_copy_link' => 'Copy Link',
+ 'pages_edit_content_link' => 'Jump to section in editor',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Page Section Options',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Page Permissions Active',
+ 'pages_initial_revision' => 'Initial publish',
+ 'pages_references_update_revision' => 'System auto-update of internal links',
+ 'pages_initial_name' => 'New Page',
+ 'pages_editing_draft_notification' => 'You are currently editing a draft that was last saved :timeDiff.',
+ 'pages_draft_edited_notification' => 'This page has been updated by since that time. It is recommended that you discard this draft.',
+ 'pages_draft_page_changed_since_creation' => 'This page has been updated since this draft was created. It is recommended that you discard this draft or take care not to overwrite any page changes.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count users have started editing this page',
+ 'start_b' => ':userName has started editing this page',
+ 'time_a' => 'since the page was last updated',
+ 'time_b' => 'in the last :minCount minutes',
+ 'message' => ':start :time. Take care not to overwrite each other\'s updates!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'Specific Page',
+ 'pages_is_template' => 'Page Template',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'Page Tags',
+ 'chapter_tags' => 'Chapter Tags',
+ 'book_tags' => 'Book Tags',
+ 'shelf_tags' => 'Shelf Tags',
+ 'tag' => 'Tag',
+ 'tags' => 'Tags',
+ 'tags_index_desc' => 'Tags can be applied to content within the system to apply a flexible form of categorization. Tags can have both a key and value, with the value being optional. Once applied, content can then be queried using the tag name and value.',
+ 'tag_name' => 'Tag Name',
+ 'tag_value' => 'Tag Value (Optional)',
+ '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' => 'Add another tag',
+ 'tags_remove' => 'Remove this tag',
+ 'tags_usages' => 'Total tag usages',
+ 'tags_assigned_pages' => 'Assigned to Pages',
+ 'tags_assigned_chapters' => 'Assigned to Chapters',
+ 'tags_assigned_books' => 'Assigned to Books',
+ 'tags_assigned_shelves' => 'Assigned to Shelves',
+ 'tags_x_unique_values' => ':count unique values',
+ 'tags_all_values' => 'All values',
+ 'tags_view_tags' => 'View Tags',
+ 'tags_view_existing_tags' => 'View existing tags',
+ 'tags_list_empty_hint' => 'Tags can be assigned via the page editor sidebar or while editing the details of a book, chapter or shelf.',
+ 'attachments' => 'Attachments',
+ 'attachments_explain' => 'Upload some files or attach some links to display on your page. These are visible in the page sidebar.',
+ 'attachments_explain_instant_save' => 'Changes here are saved instantly.',
+ 'attachments_upload' => 'Upload File',
+ 'attachments_link' => 'Attach Link',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'Set Link',
+ 'attachments_delete' => 'Are you sure you want to delete this attachment?',
+ 'attachments_dropzone' => 'Drop files here to upload',
+ 'attachments_no_files' => 'No files have been uploaded',
+ 'attachments_explain_link' => 'You can attach a link if you\'d prefer not to upload a file. This can be a link to another page or a link to a file in the cloud.',
+ 'attachments_link_name' => 'Link Name',
+ 'attachment_link' => 'Attachment link',
+ 'attachments_link_url' => 'Link to file',
+ 'attachments_link_url_hint' => 'Url of site or file',
+ 'attach' => 'Attach',
+ 'attachments_insert_link' => 'Add Attachment Link to Page',
+ 'attachments_edit_file' => 'Edit File',
+ 'attachments_edit_file_name' => 'File Name',
+ 'attachments_edit_drop_upload' => 'Drop files or click here to upload and overwrite',
+ 'attachments_order_updated' => 'Attachment order updated',
+ 'attachments_updated_success' => 'Attachment details updated',
+ 'attachments_deleted' => 'Attachment deleted',
+ 'attachments_file_uploaded' => 'File successfully uploaded',
+ 'attachments_file_updated' => 'File successfully updated',
+ 'attachments_link_attached' => 'Link successfully attached to page',
+ 'templates' => 'Templates',
+ 'templates_set_as_template' => 'Page is a template',
+ 'templates_explain_set_as_template' => 'You can set this page as a template so its contents be utilized when creating other pages. Other users will be able to use this template if they have view permissions for this page.',
+ 'templates_replace_content' => 'Replace page content',
+ 'templates_append_content' => 'Append to page content',
+ 'templates_prepend_content' => 'Prepend to page content',
+
+ // Profile View
+ 'profile_user_for_x' => 'User for :time',
+ 'profile_created_content' => 'Created Content',
+ 'profile_not_created_pages' => ':userName has not created any pages',
+ 'profile_not_created_chapters' => ':userName has not created any chapters',
+ 'profile_not_created_books' => ':userName has not created any books',
+ 'profile_not_created_shelves' => ':userName has not created any shelves',
+
+ // Comments
+ 'comment' => 'Comment',
+ 'comments' => 'Comments',
+ 'comment_add' => 'Add Comment',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Leave a comment here',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Save Comment',
+ 'comment_new' => 'New Comment',
+ 'comment_created' => 'commented :createDiff',
+ 'comment_updated' => 'Updated :updateDiff by :username',
+ 'comment_updated_indicator' => 'Updated',
+ 'comment_deleted_success' => 'Comment deleted',
+ 'comment_created_success' => 'Comment added',
+ 'comment_updated_success' => 'Comment updated',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Are you sure you want to delete this comment?',
+ 'comment_in_reply_to' => 'In reply to :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Here are the comments that have been left on this page. Comments can be added & managed when viewing the saved page.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Are you sure you want to delete this revision?',
+ 'revision_restore_confirm' => 'Are you sure you want to restore this revision? The current page contents will be replaced.',
+ 'revision_cannot_delete_latest' => 'Cannot delete the latest revision.',
+
+ // Copy view
+ 'copy_consider' => 'Please consider the below when copying content.',
+ 'copy_consider_permissions' => 'Custom permission settings will not be copied.',
+ 'copy_consider_owner' => 'You will become the owner of all copied content.',
+ 'copy_consider_images' => 'Page image files will not be duplicated & the original images will retain their relation to the page they were originally uploaded to.',
+ 'copy_consider_attachments' => 'Page attachments will not be copied.',
+ 'copy_consider_access' => 'A change of location, owner or permissions may result in this content being accessible to those previously without access.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Convert to Shelf',
+ 'convert_to_shelf_contents_desc' => 'You can convert this book to a new shelf with the same contents. Chapters contained within this book will be converted to new books. If this book contains any pages, that are not in a chapter, this book will be renamed and contain such pages, and this book will become part of the new shelf.',
+ 'convert_to_shelf_permissions_desc' => 'Any permissions set on this book will be copied to the new shelf and to all new child books that don\'t have their own permissions enforced. Note that permissions on shelves do not auto-cascade to content within, as they do for books.',
+ 'convert_book' => 'Convert Book',
+ 'convert_book_confirm' => 'Are you sure you want to convert this book?',
+ 'convert_undo_warning' => 'This cannot be as easily undone.',
+ 'convert_to_book' => 'Convert to Book',
+ 'convert_to_book_desc' => 'You can convert this chapter to a new book with the same contents. Any permissions set on this chapter will be copied to the new book but any inherited permissions, from the parent book, will not be copied which could lead to a change of access control.',
+ 'convert_chapter' => 'Convert Chapter',
+ 'convert_chapter_confirm' => 'Are you sure you want to convert this chapter?',
+
+ // References
+ 'references' => 'References',
+ 'references_none' => 'There are no tracked references to this item.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Watch',
+ 'watch_title_default' => 'Default Preferences',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignore',
+ 'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
+ 'watch_title_new' => 'New Pages',
+ 'watch_desc_new' => 'Notify when any new page is created within this item.',
+ 'watch_title_updates' => 'All Page Updates',
+ 'watch_desc_updates' => 'Notify upon all new pages and page changes.',
+ 'watch_desc_updates_page' => 'Notify upon all page changes.',
+ 'watch_title_comments' => 'All Page Updates & Comments',
+ 'watch_desc_comments' => 'Notify upon all new pages, page changes and new comments.',
+ 'watch_desc_comments_page' => 'Notify upon page changes and new comments.',
+ 'watch_change_default' => 'Change default notification preferences',
+ 'watch_detail_ignore' => 'Ignoring notifications',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/sq/errors.php b/lang/sq/errors.php
new file mode 100644
index 00000000000..20537d59f0c
--- /dev/null
+++ b/lang/sq/errors.php
@@ -0,0 +1,135 @@
+ 'You do not have permission to access the requested page.',
+ 'permissionJson' => 'You do not have permission to perform the requested action.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'A user with the email :email already exists but with different credentials.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'Email has already been confirmed, Try logging in.',
+ 'email_confirmation_invalid' => 'This confirmation token is not valid or has already been used, Please try registering again.',
+ 'email_confirmation_expired' => 'The confirmation token has expired, A new confirmation email has been sent.',
+ 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed',
+ 'ldap_fail_anonymous' => 'LDAP access failed using anonymous bind',
+ 'ldap_fail_authed' => 'LDAP access failed using given dn & password details',
+ 'ldap_extension_not_installed' => 'LDAP PHP extension not installed',
+ 'ldap_cannot_connect' => 'Cannot connect to ldap server, Initial connection failed',
+ 'saml_already_logged_in' => 'Already logged in',
+ 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.',
+ 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'oidc_already_logged_in' => 'Already logged in',
+ 'oidc_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'oidc_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'social_no_action_defined' => 'No action defined',
+ 'social_login_bad_response' => "Error received during :socialAccount login: \n:error",
+ 'social_account_in_use' => 'This :socialAccount account is already in use, Try logging in via the :socialAccount option.',
+ 'social_account_email_in_use' => 'The email :email is already in use. If you already have an account you can connect your :socialAccount account from your profile settings.',
+ 'social_account_existing' => 'This :socialAccount is already attached to your profile.',
+ 'social_account_already_used_existing' => 'This :socialAccount account is already used by another user.',
+ 'social_account_not_used' => 'This :socialAccount account is not linked to any users. Please attach it in your profile settings. ',
+ 'social_account_register_instructions' => 'If you do not yet have an account, You can register an account using the :socialAccount option.',
+ 'social_driver_not_found' => 'Social driver not found',
+ 'social_driver_not_configured' => 'Your :socialAccount social settings are not configured correctly.',
+ 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // System
+ 'path_not_writable' => 'File path :filePath could not be uploaded to. Ensure it is writable to the server.',
+ 'cannot_get_image_from_url' => 'Cannot get image from :url',
+ 'cannot_create_thumbs' => 'The server cannot create thumbnails. Please check you have the GD PHP extension installed.',
+ 'server_upload_limit' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+ 'server_post_limit' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.',
+ 'uploaded' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'An error occurred uploading the image',
+ 'image_upload_type_error' => 'The image type being uploaded is invalid',
+ 'image_upload_replace_type' => 'Image file replacements must be of the same type',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Drawing data could not be loaded. The drawing file might no longer exist or you may not have permission to access it.',
+
+ // Attachments
+ 'attachment_not_found' => 'Attachment not found',
+ 'attachment_upload_error' => 'An error occurred uploading the attachment file',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Failed to save draft. Ensure you have internet connection before saving this page',
+ 'page_draft_delete_fail' => 'Failed to delete page draft and fetch current page saved content',
+ 'page_custom_home_deletion' => 'Cannot delete a page while it is set as a homepage',
+
+ // Entities
+ 'entity_not_found' => 'Entity not found',
+ 'bookshelf_not_found' => 'Shelf not found',
+ 'book_not_found' => 'Book not found',
+ 'page_not_found' => 'Page not found',
+ 'chapter_not_found' => 'Chapter not found',
+ 'selected_book_not_found' => 'The selected book was not found',
+ 'selected_book_chapter_not_found' => 'The selected Book or Chapter was not found',
+ 'guests_cannot_save_drafts' => 'Guests cannot save drafts',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'You cannot delete the only admin',
+ 'users_cannot_delete_guest' => 'You cannot delete the guest user',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'This role cannot be edited',
+ 'role_system_cannot_be_deleted' => 'This role is a system role and cannot be deleted',
+ 'role_registration_default_cannot_delete' => 'This role cannot be deleted while set as the default registration role',
+ 'role_cannot_remove_only_admin' => 'This user is the only user assigned to the administrator role. Assign the administrator role to another user before attempting to remove it here.',
+
+ // Comments
+ 'comment_list' => 'An error occurred while fetching the comments.',
+ 'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.',
+ 'comment_add' => 'An error occurred while adding / updating the comment.',
+ 'comment_delete' => 'An error occurred while deleting the comment.',
+ 'empty_comment' => 'Cannot add an empty comment.',
+
+ // Error pages
+ '404_page_not_found' => 'Page Not Found',
+ 'sorry_page_not_found' => 'Sorry, The page you were looking for could not be found.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
+ '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' => 'Return to home',
+ 'error_occurred' => 'An Error Occurred',
+ 'app_down' => ':appName is down right now',
+ 'back_soon' => 'It will be back up soon.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'No authorization token found on the request',
+ 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect',
+ 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token',
+ 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
+ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
+ 'api_user_token_expired' => 'The authorization token used has expired',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'The URL does not match the configured allowed SSR hosts',
+];
diff --git a/lang/sq/notifications.php b/lang/sq/notifications.php
new file mode 100644
index 00000000000..563ac24e84d
--- /dev/null
+++ b/lang/sq/notifications.php
@@ -0,0 +1,29 @@
+ 'New comment on page: :pageName',
+ 'new_comment_intro' => 'A user has commented on a page in :appName:',
+ 'new_page_subject' => 'New page: :pageName',
+ 'new_page_intro' => 'A new page has been created in :appName:',
+ 'updated_page_subject' => 'Updated page: :pageName',
+ 'updated_page_intro' => 'A page has been updated in :appName:',
+ 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Page Name:',
+ 'detail_page_path' => 'Page Path:',
+ 'detail_commenter' => 'Commenter:',
+ 'detail_comment' => 'Comment:',
+ 'detail_created_by' => 'Created By:',
+ 'detail_updated_by' => 'Updated By:',
+
+ 'action_view_comment' => 'View Comment',
+ 'action_view_page' => 'View Page',
+
+ 'footer_reason' => 'This notification was sent to you because :link cover this type of activity for this item.',
+ 'footer_reason_link' => 'your notification preferences',
+];
diff --git a/lang/sq/pagination.php b/lang/sq/pagination.php
new file mode 100644
index 00000000000..85bd12fc319
--- /dev/null
+++ b/lang/sq/pagination.php
@@ -0,0 +1,12 @@
+ '« Previous',
+ 'next' => 'Next »',
+
+];
diff --git a/lang/sq/passwords.php b/lang/sq/passwords.php
new file mode 100644
index 00000000000..b408f3c2fda
--- /dev/null
+++ b/lang/sq/passwords.php
@@ -0,0 +1,15 @@
+ 'Passwords must be at least eight characters and match the confirmation.',
+ 'user' => "We can't find a user with that e-mail address.",
+ 'token' => 'The password reset token is invalid for this email address.',
+ 'sent' => 'We have e-mailed your password reset link!',
+ 'reset' => 'Your password has been reset!',
+
+];
diff --git a/lang/sq/preferences.php b/lang/sq/preferences.php
new file mode 100644
index 00000000000..f4459d738e4
--- /dev/null
+++ b/lang/sq/preferences.php
@@ -0,0 +1,52 @@
+ 'My Account',
+
+ 'shortcuts' => 'Shortcuts',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Here you can enable or disable keyboard system interface shortcuts, used for navigation and actions.',
+ 'shortcuts_customize_desc' => 'You can customize each of the shortcuts below. Just press your desired key combination after selecting the input for a shortcut.',
+ 'shortcuts_toggle_label' => 'Keyboard shortcuts enabled',
+ 'shortcuts_section_navigation' => 'Navigation',
+ 'shortcuts_section_actions' => 'Common Actions',
+ 'shortcuts_save' => 'Save Shortcuts',
+ 'shortcuts_overlay_desc' => 'Note: When shortcuts are enabled a helper overlay is available via pressing "?" which will highlight the available shortcuts for actions currently visible on the screen.',
+ 'shortcuts_update_success' => 'Shortcut preferences have been updated!',
+ 'shortcuts_overview_desc' => 'Manage keyboard shortcuts you can use to navigate the system user interface.',
+
+ 'notifications' => 'Notification Preferences',
+ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.',
+ 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own',
+ 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notify upon replies to my comments',
+ 'notifications_save' => 'Save Preferences',
+ 'notifications_update_success' => 'Notification preferences have been updated!',
+ 'notifications_watched' => 'Watched & Ignored Items',
+ 'notifications_watched_desc' => 'Below are the items that have custom watch preferences applied. To update your preferences for these, view the item then find the watch options in the sidebar.',
+
+ 'auth' => 'Access & Security',
+ 'auth_change_password' => 'Change Password',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Password has been updated!',
+
+ 'profile' => 'Profile Details',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'View Public Profile',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Delete Account',
+ 'delete_my_account' => 'Delete My Account',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/sq/settings.php b/lang/sq/settings.php
new file mode 100644
index 00000000000..c4d1eb136eb
--- /dev/null
+++ b/lang/sq/settings.php
@@ -0,0 +1,374 @@
+ 'Settings',
+ 'settings_save' => 'Save Settings',
+ 'system_version' => 'System Version',
+ 'categories' => 'Categories',
+
+ // App Settings
+ 'app_customization' => 'Customization',
+ 'app_features_security' => 'Features & Security',
+ 'app_name' => 'Application Name',
+ 'app_name_desc' => 'This name is shown in the header and in any system-sent emails.',
+ 'app_name_header' => 'Show name in header',
+ 'app_public_access' => 'Public Access',
+ 'app_public_access_desc' => 'Enabling this option will allow visitors, that are not logged-in, to access content in your BookStack instance.',
+ 'app_public_access_desc_guest' => 'Access for public visitors can be controlled through the "Guest" user.',
+ 'app_public_access_toggle' => 'Allow public access',
+ 'app_public_viewing' => 'Allow public viewing?',
+ 'app_secure_images' => 'Higher Security Image Uploads',
+ 'app_secure_images_toggle' => 'Enable higher security image uploads',
+ 'app_secure_images_desc' => 'For performance reasons, all images are public. This option adds a random, hard-to-guess string in front of image urls. Ensure directory indexes are not enabled to prevent easy access.',
+ 'app_default_editor' => 'Default Page Editor',
+ 'app_default_editor_desc' => 'Select which editor will be used by default when editing new pages. This can be overridden at a page level where permissions allow.',
+ 'app_custom_html' => 'Custom HTML Head Content',
+ 'app_custom_html_desc' => 'Any content added here will be inserted into the bottom of the section of every page. This is handy for overriding styles or adding analytics code.',
+ 'app_custom_html_disabled_notice' => 'Custom HTML head content is disabled on this settings page to ensure any breaking changes can be reverted.',
+ 'app_logo' => 'Application Logo',
+ 'app_logo_desc' => 'This is used in the application header bar, among other areas. This image should be 86px in height. Large images will be scaled down.',
+ 'app_icon' => 'Application Icon',
+ 'app_icon_desc' => 'This icon is used for browser tabs and shortcut icons. This should be a 256px square PNG image.',
+ '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::" 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' => 'Disable Comments',
+ 'app_disable_comments_toggle' => 'Disable comments',
+ 'app_disable_comments_desc' => 'Disables comments across all pages in the application. Existing comments are not shown.',
+
+ // Color settings
+ 'color_scheme' => 'Application Color Scheme',
+ 'color_scheme_desc' => 'Set the colors to use in the application user interface. Colors can be configured separately for dark and light modes to best fit the theme and ensure legibility.',
+ 'ui_colors_desc' => 'Set the application primary color and default link color. The primary color is mainly used for the header banner, buttons and interface decorations. The default link color is used for text-based links and actions, both within written content and in the application interface.',
+ 'app_color' => 'Primary Color',
+ 'link_color' => 'Default Link Color',
+ 'content_colors_desc' => 'Set colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'bookshelf_color' => 'Shelf Color',
+ 'book_color' => 'Book Color',
+ 'chapter_color' => 'Chapter Color',
+ 'page_color' => 'Page Color',
+ 'page_draft_color' => 'Page Draft Color',
+
+ // Registration Settings
+ 'reg_settings' => 'Registration',
+ 'reg_enable' => 'Enable Registration',
+ 'reg_enable_toggle' => 'Enable registration',
+ 'reg_enable_desc' => 'When registration is enabled user will be able to sign themselves up as an application user. Upon registration they are given a single, default user role.',
+ 'reg_default_role' => 'Default user role after registration',
+ 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_email_confirmation' => 'Email Confirmation',
+ 'reg_email_confirmation_toggle' => 'Require email confirmation',
+ 'reg_confirm_email_desc' => 'If domain restriction is used then email confirmation will be required and this option will be ignored.',
+ 'reg_confirm_restrict_domain' => 'Domain Restriction',
+ 'reg_confirm_restrict_domain_desc' => 'Enter a comma separated list of email domains you would like to restrict registration to. Users will be sent an email to confirm their address before being allowed to interact with the application. Note that users will be able to change their email addresses after successful registration.',
+ 'reg_confirm_restrict_domain_placeholder' => 'No restriction set',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Maintenance',
+ 'maint_image_cleanup' => 'Cleanup Images',
+ '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' => 'Also delete images that only exist in old page revisions',
+ 'maint_image_cleanup_run' => 'Run Cleanup',
+ 'maint_image_cleanup_warning' => ':count potentially unused images were found. Are you sure you want to delete these images?',
+ 'maint_image_cleanup_success' => ':count potentially unused images found and deleted!',
+ '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_regen_references' => 'Regenerate References',
+ 'maint_regen_references_desc' => 'This action will rebuild the cross-item reference index within the database. This is usually handled automatically but this action can be useful to index old content or content added via unofficial methods.',
+ 'maint_regen_references_success' => 'Reference index has been regenerated!',
+ 'maint_timeout_command_note' => 'Note: This action can take time to run, which can lead to timeout issues in some web environments. As an alternative, this action be performed using a terminal command.',
+
+ // 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_parent' => 'Parent',
+ '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 from the system, along with any child elements listed below, 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_restore_parent' => 'Restore Parent',
+ '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 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_table_related' => 'Related Item or Detail',
+ 'audit_table_ip' => 'IP Address',
+ 'audit_table_date' => 'Activity Date',
+ 'audit_date_from' => 'Date Range From',
+ 'audit_date_to' => 'Date Range To',
+
+ // Role Settings
+ 'roles' => 'Roles',
+ 'role_user_roles' => 'User Roles',
+ 'roles_index_desc' => 'Roles are used to group users & provide system permission to their members. When a user is a member of multiple roles the privileges granted will stack and the user will inherit all abilities.',
+ 'roles_x_users_assigned' => ':count user assigned|:count users assigned',
+ 'roles_x_permissions_provided' => ':count permission|:count permissions',
+ 'roles_assigned_users' => 'Assigned Users',
+ 'roles_permissions_provided' => 'Provided Permissions',
+ 'role_create' => 'Create New Role',
+ '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_edit' => 'Edit Role',
+ 'role_details' => 'Role Details',
+ 'role_name' => 'Role Name',
+ 'role_desc' => 'Short Description of Role',
+ 'role_mfa_enforced' => 'Requires Multi-Factor Authentication',
+ 'role_external_auth_id' => 'External Authentication IDs',
+ 'role_system' => 'System Permissions',
+ 'role_manage_users' => 'Manage users',
+ 'role_manage_roles' => 'Manage roles & role permissions',
+ 'role_manage_entity_permissions' => 'Manage all book, chapter & page permissions',
+ 'role_manage_own_entity_permissions' => 'Manage permissions on own book, chapter & pages',
+ 'role_manage_page_templates' => 'Manage page templates',
+ 'role_access_api' => 'Access system API',
+ 'role_manage_settings' => 'Manage app settings',
+ 'role_export_content' => 'Export content',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Change page editor',
+ 'role_notifications' => 'Receive & manage notifications',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Asset Permissions',
+ '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' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.',
+ 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.',
+ 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'All',
+ 'role_own' => 'Own',
+ 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to',
+ 'role_save' => 'Save Role',
+ 'role_users' => 'Users in this role',
+ 'role_users_none' => 'No users are currently assigned to this role',
+
+ // Users
+ 'users' => 'Users',
+ 'users_index_desc' => 'Create & manage individual user accounts within the system. User accounts are used for login and attribution of content & activity. Access permissions are primarily role-based but user content ownership, among other factors, may also affect permissions & access.',
+ 'user_profile' => 'User Profile',
+ 'users_add_new' => 'Add New User',
+ 'users_search' => 'Search Users',
+ 'users_latest_activity' => 'Latest Activity',
+ 'users_details' => 'User 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',
+ 'users_role_desc' => 'Select which roles this user will be assigned to. If a user is assigned to multiple roles the permissions from those roles will stack and they will receive all abilities of the assigned roles.',
+ 'users_password' => 'User Password',
+ 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 8 characters long.',
+ 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.',
+ 'users_send_invite_option' => 'Send user invite email',
+ 'users_external_auth_id' => 'External Authentication ID',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ '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_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_edit' => 'Edit User',
+ 'users_edit_profile' => 'Edit Profile',
+ 'users_avatar' => 'User Avatar',
+ 'users_avatar_desc' => 'Select an image to represent this user. This should be approx 256px square.',
+ 'users_preferred_language' => 'Preferred Language',
+ 'users_preferred_language_desc' => 'This option will change the language used for the user-interface of the application. This will not affect any user-created content.',
+ 'users_social_accounts' => 'Social Accounts',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not revoke previously authorized access. Revoke access from your profile settings on the connected social account.',
+ 'users_social_connect' => 'Connect Account',
+ 'users_social_disconnect' => 'Disconnect Account',
+ 'users_social_status_connected' => 'Connected',
+ 'users_social_status_disconnected' => 'Disconnected',
+ 'users_social_connected' => ':socialAccount account was successfully attached to your profile.',
+ 'users_social_disconnected' => ':socialAccount account was successfully disconnected from your profile.',
+ 'users_api_tokens' => 'API Tokens',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'No API tokens have been created for this user',
+ 'users_api_tokens_create' => 'Create Token',
+ 'users_api_tokens_expires' => 'Expires',
+ 'users_api_tokens_docs' => 'API Documentation',
+ 'users_mfa' => 'Multi-Factor Authentication',
+ 'users_mfa_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'users_mfa_x_methods' => ':count method configured|:count methods configured',
+ 'users_mfa_configure' => 'Configure Methods',
+
+ // API Tokens
+ 'user_api_token_create' => 'Create API Token',
+ 'user_api_token_name' => 'Name',
+ 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
+ 'user_api_token_expiry' => 'Expiry Date',
+ 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
+ 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
+ 'user_api_token' => 'API Token',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
+ 'user_api_token_secret' => 'Token Secret',
+ 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
+ 'user_api_token_created' => 'Token created :timeAgo',
+ 'user_api_token_updated' => 'Token updated :timeAgo',
+ 'user_api_token_delete' => 'Delete Token',
+ 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
+ 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks are a way to send data to external URLs when certain actions and events occur within the system which allows event-based integration with external platforms such as messaging or notification systems.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'Create New Webhook',
+ 'webhooks_none_created' => 'No webhooks have yet been created.',
+ 'webhooks_edit' => 'Edit Webhook',
+ 'webhooks_save' => 'Save Webhook',
+ 'webhooks_details' => 'Webhook Details',
+ 'webhooks_details_desc' => 'Provide a user friendly name and a POST endpoint as a location for the webhook data to be sent to.',
+ 'webhooks_events' => 'Webhook Events',
+ 'webhooks_events_desc' => 'Select all the events that should trigger this webhook to be called.',
+ 'webhooks_events_warning' => 'Keep in mind that these events will be triggered for all selected events, even if custom permissions are applied. Ensure that use of this webhook won\'t expose confidential content.',
+ 'webhooks_events_all' => 'All system events',
+ 'webhooks_name' => 'Webhook Name',
+ 'webhooks_timeout' => 'Webhook Request Timeout (Seconds)',
+ 'webhooks_endpoint' => 'Webhook Endpoint',
+ 'webhooks_active' => 'Webhook Active',
+ 'webhook_events_table_header' => 'Events',
+ 'webhooks_delete' => 'Delete Webhook',
+ 'webhooks_delete_warning' => 'This will fully delete this webhook, with the name \':webhookName\', from the system.',
+ 'webhooks_delete_confirm' => 'Are you sure you want to delete this webhook?',
+ 'webhooks_format_example' => 'Webhook Format Example',
+ 'webhooks_format_example_desc' => 'Webhook data is sent as a POST request to the configured endpoint as JSON following the format below. The "related_item" and "url" properties are optional and will depend on the type of event triggered.',
+ 'webhooks_status' => 'Webhook Status',
+ 'webhooks_last_called' => 'Last Called:',
+ 'webhooks_last_errored' => 'Last Errored:',
+ 'webhooks_last_error_message' => 'Last Error Message:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/sq/validation.php b/lang/sq/validation.php
new file mode 100644
index 00000000000..ff028525df3
--- /dev/null
+++ b/lang/sq/validation.php
@@ -0,0 +1,123 @@
+ '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.',
+ 'backup_codes' => 'The provided code is not valid or has already been used.',
+ 'before' => 'The :attribute must be a date before :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.',
+ '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',
+ 'file' => 'The :attribute must be provided as a valid file.',
+ 'filled' => 'The :attribute field is required.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ 'array' => 'The :attribute may not have more than :max items.',
+ ],
+ 'mimes' => 'The :attribute must be a file of type: :values.',
+ 'min' => [
+ 'numeric' => 'The :attribute must be at least :min.',
+ 'file' => 'The :attribute must be at least :min kilobytes.',
+ 'string' => 'The :attribute must be at least :min characters.',
+ 'array' => 'The :attribute must have at least :min items.',
+ ],
+ 'not_in' => 'The selected :attribute is invalid.',
+ 'not_regex' => 'The :attribute format is invalid.',
+ 'numeric' => 'The :attribute must be a number.',
+ 'regex' => 'The :attribute format is invalid.',
+ 'required' => 'The :attribute field is required.',
+ 'required_if' => 'The :attribute field is required when :other is :value.',
+ 'required_with' => 'The :attribute field is required when :values is present.',
+ 'required_with_all' => 'The :attribute field is required when :values is present.',
+ 'required_without' => 'The :attribute field is required when :values is not present.',
+ 'required_without_all' => 'The :attribute field is required when none of :values are present.',
+ 'same' => 'The :attribute and :other must match.',
+ 'safe_url' => 'The provided link may not be safe.',
+ 'size' => [
+ 'numeric' => 'The :attribute must be :size.',
+ 'file' => 'The :attribute must be :size kilobytes.',
+ 'string' => 'The :attribute must be :size characters.',
+ 'array' => 'The :attribute must contain :size items.',
+ ],
+ 'string' => 'The :attribute must be a string.',
+ 'timezone' => 'The :attribute must be a valid zone.',
+ 'totp' => 'The provided code is not valid or has expired.',
+ 'unique' => 'The :attribute has already been taken.',
+ 'url' => 'The :attribute format is invalid.',
+ 'uploaded' => 'The file could not be uploaded. The server may not accept files of this size.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Password confirmation required',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/sr/activities.php b/lang/sr/activities.php
new file mode 100644
index 00000000000..b4aa5e2a7f4
--- /dev/null
+++ b/lang/sr/activities.php
@@ -0,0 +1,140 @@
+ 'креирана страница',
+ 'page_create_notification' => 'Страница је успешно креирана',
+ 'page_update' => 'ажурирана страница',
+ 'page_update_notification' => 'Страница је успешно ажурирана',
+ 'page_delete' => 'обрисана страница',
+ 'page_delete_notification' => 'Страница је успешно обрисана',
+ 'page_restore' => 'обновљена страна',
+ 'page_restore_notification' => 'Страница је успешно обновљена',
+ 'page_move' => 'премештена страна',
+ 'page_move_notification' => 'Страница је успешно померена',
+
+ // Chapters
+ 'chapter_create' => 'креирано поглавље',
+ 'chapter_create_notification' => 'Поглавље је успешно креирано',
+ 'chapter_update' => 'ажурирано поглавље',
+ 'chapter_update_notification' => 'Поглавље је успешно обновљено',
+ 'chapter_delete' => 'обрисано поглавље',
+ 'chapter_delete_notification' => 'Поглавље је успешно обрисано',
+ 'chapter_move' => 'премештено поглавље',
+ 'chapter_move_notification' => 'Поглавље успешно премештено',
+
+ // Books
+ 'book_create' => 'креирана књига',
+ 'book_create_notification' => 'Књига је успешно креирана',
+ 'book_create_from_chapter' => 'конвертовано поглавље у књигу',
+ 'book_create_from_chapter_notification' => 'Поглавље успешно конвертовано у књигу',
+ 'book_update' => 'књига је ажурирана',
+ 'book_update_notification' => 'Књига је успешно ажурирана',
+ 'book_delete' => 'књига је обрисана',
+ 'book_delete_notification' => 'Књига је успешно обрисана',
+ 'book_sort' => 'сортирана књига',
+ 'book_sort_notification' => 'Књига је успешно поновно сортирана',
+
+ // Bookshelves
+ 'bookshelf_create' => 'креирана полица',
+ 'bookshelf_create_notification' => 'Полица је успешно креирана',
+ 'bookshelf_create_from_book' => 'конвертована је књига у полицу',
+ 'bookshelf_create_from_book_notification' => 'Књига је успешно конвертована у полицу',
+ 'bookshelf_update' => 'ажурирана полица',
+ 'bookshelf_update_notification' => 'Полица је успешно ажурирана',
+ 'bookshelf_delete' => 'обрисана је полица',
+ 'bookshelf_delete_notification' => 'Полица је успешно обрисана',
+
+ // Revisions
+ 'revision_restore' => 'повраћена ревизија',
+ 'revision_delete' => 'обрисана ревизија',
+ 'revision_delete_notification' => 'Ревизија је успешно обрисана',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" је додато као ваше омиљено',
+ 'favourite_remove_notification' => '":name" је уклоњено као ваше омиљено',
+
+ // Watching
+ 'watch_update_level_notification' => 'Подешавање праћених предмета је успешно ажурирано',
+
+ // Auth
+ 'auth_login' => 'пријављени',
+ 'auth_register' => 'регистрован као нови корисник',
+ 'auth_password_reset_request' => 'захтевано ресетовање корисничке лозинке',
+ 'auth_password_reset_update' => 'ресетуј корисничку лозинку',
+ 'mfa_setup_method' => 'конфигурисан МФА метод',
+ 'mfa_setup_method_notification' => 'Вишефакторска метода је успешно конфигурисана',
+ 'mfa_remove_method' => 'уклоњен МФА метод',
+ 'mfa_remove_method_notification' => 'Вишефакторска метода је успешно уклоњена',
+
+ // Settings
+ 'settings_update' => 'ажурирана подешавања',
+ 'settings_update_notification' => 'Подешавања су успешно ажурирана',
+ 'maintenance_action_run' => 'покренуо акцију одржавања',
+
+ // Webhooks
+ 'webhook_create' => 'креиран вебхоок',
+ 'webhook_create_notification' => 'Вебхоок је успешно креиран',
+ 'webhook_update' => 'ажуриран вебхоок',
+ 'webhook_update_notification' => 'Вебхоок је успешно ажуриран',
+ 'webhook_delete' => 'обрисан вебхоок',
+ 'webhook_delete_notification' => 'Вебхоок је успешно обрисан',
+
+ // Imports
+ 'import_create' => 'креиран увоз',
+ 'import_create_notification' => 'Import successfully uploaded',
+ 'import_run' => 'ажуриран увоз',
+ 'import_run_notification' => 'Content successfully imported',
+ 'import_delete' => 'deleted import',
+ 'import_delete_notification' => 'Import successfully deleted',
+
+ // Users
+ 'user_create' => 'креирао корисника',
+ 'user_create_notification' => 'Корисник је успешно креиран',
+ 'user_update' => 'ажуриран корисник',
+ 'user_update_notification' => 'Корисник је успешно ажуриран',
+ 'user_delete' => 'избрисан корисника',
+ 'user_delete_notification' => 'Корисник је успешно уклоњен',
+
+ // API Tokens
+ 'api_token_create' => 'креирао апи токен',
+ 'api_token_create_notification' => 'АПИ токен је успешно креиран',
+ 'api_token_update' => 'ажуриран апи токен',
+ 'api_token_update_notification' => 'АПИ токен је успешно ажуриран',
+ 'api_token_delete' => 'обрисан апи токен',
+ 'api_token_delete_notification' => 'АПИ токен је успешно избрисан',
+
+ // Roles
+ 'role_create' => 'створена улога',
+ 'role_create_notification' => 'Улога је успешно направљена',
+ 'role_update' => 'ажурирана улога',
+ 'role_update_notification' => 'Улога је успешно ажурирана',
+ 'role_delete' => 'обрисана улога',
+ 'role_delete_notification' => 'Улога је успешно избрисана',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'испражњена корпа за отпатке',
+ 'recycle_bin_restore' => 'враћен из корпе за отпатке',
+ 'recycle_bin_destroy' => 'уклоњен из корпе за отпатке',
+
+ // Comments
+ 'commented_on' => 'коментарисао',
+ 'comment_create' => 'додао/ла коментар',
+ 'comment_update' => 'ажуриран коментар',
+ 'comment_delete' => 'обрисан коментар',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'ажуриране дозволе',
+];
diff --git a/lang/sr/auth.php b/lang/sr/auth.php
new file mode 100644
index 00000000000..0100e666fa3
--- /dev/null
+++ b/lang/sr/auth.php
@@ -0,0 +1,117 @@
+ 'Ови акредитиви се не поклапају са нашом евиденцијом.',
+ 'throttle' => 'Превише покушаја пријаве. Покушајте поново за :seconds секунди.',
+
+ // Login & Register
+ 'sign_up' => 'Региструј се',
+ 'log_in' => 'Пријави се',
+ 'log_in_with' => 'Пријавите се са :socialDriver',
+ 'sign_up_with' => 'Пријавите се са :socialDriver',
+ 'logout' => 'Одјави се',
+
+ 'name' => 'Име',
+ 'username' => 'Корисничко име',
+ 'email' => 'Е-пошта',
+ 'password' => 'Лозинка',
+ 'password_confirm' => 'Потврди лозинку',
+ 'password_hint' => 'Мора да има најмање 8 знакова',
+ 'forgot_password' => 'Заборавили сте лозинку?',
+ 'remember_me' => 'Запамти ме',
+ 'ldap_email_hint' => 'Унесите адресу е-поште коју ћете користити за овај налог.',
+ 'create_account' => 'Направи налог',
+ 'already_have_account' => 'Већ имате налог?',
+ 'dont_have_account' => 'Немате налог?',
+ 'social_login' => 'Пријава путем друштвених мрежа',
+ 'social_registration' => 'Регистрација путем друштвених мрежа',
+ 'social_registration_text' => 'Региструјте се и пријавите користећи другу услугу.',
+
+ 'register_thanks' => 'Хвала на регистрацији!',
+ 'register_confirm' => 'Проверите своју е-пошту и кликните на дугме за потврду да бисте приступили :appName.',
+ 'registrations_disabled' => 'Регистрације су тренутно онемогућене',
+ 'registration_email_domain_invalid' => 'Тај домен е-поште нема приступ овој апликацији',
+ 'register_success' => 'Хвала што сте се пријавили! Сада сте регистровани и пријављени.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Покушај пријаве',
+ 'auto_init_starting_desc' => 'Контактирамо ваш систем за аутентификацију да бисмо започели процес пријављивања. Ако нема напретка након 5 секунди, можете покушати да кликнете на везу испод.',
+ 'auto_init_start_link' => 'Наставите са аутентификацијом',
+
+ // Password Reset
+ 'reset_password' => 'Ресетуј лозинку',
+ 'reset_password_send_instructions' => 'Унесите своју адресу е-поште испод и биће вам послата порука е-поште са везом за ресетовање лозинке.',
+ 'reset_password_send_button' => 'Пошаљи везу за ресетовање',
+ 'reset_password_sent' => 'Веза за ресетовање лозинке ће бити послата на :email ако се та адреса е-поште пронађе у систему.',
+ 'reset_password_success' => 'Ваша лозинка је успешно ресетована.',
+ 'email_reset_subject' => 'Ресетујте лозинку за :appName',
+ 'email_reset_text' => 'Примили сте ову е-пошту јер смо примили захтев за ресетовање лозинке за ваш налог.',
+ 'email_reset_not_requested' => 'Ако нисте захтевали ресетовање лозинке, нису потребне додатне радње.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Потврдите своју е-пошту на :appName',
+ 'email_confirm_greeting' => 'Хвала што сте се придружили :appName!',
+ 'email_confirm_text' => 'Молимо потврдите своју адресу е-поште кликом на дугме испод:',
+ 'email_confirm_action' => 'Потврдите е-пошту',
+ 'email_confirm_send_error' => 'Потребна је потврда е-поште, али систем није могао да пошаље е-пошту. Контактирајте администратора да бисте се уверили да је е-пошта исправно подешена.',
+ 'email_confirm_success' => 'Ваша е-пошта је потврђена! Сада би требало да будете у могућности да се пријавите користећи ову адресу е-поште.',
+ 'email_confirm_resent' => 'Потврда е-поште је поново послата, проверите пријемно сандуче.',
+ 'email_confirm_thanks' => 'Хвала на потврди!',
+ 'email_confirm_thanks_desc' => 'Сачекајте тренутак док се обради ваша потврда. Ако не будете преусмерени након 3 секунде, притисните доњу везу „Настави“ да бисте наставили.',
+
+ 'email_not_confirmed' => 'Адреса е-поште није потврђена',
+ 'email_not_confirmed_text' => 'Ваша адреса е-поште још није потврђена.',
+ 'email_not_confirmed_click_link' => 'Кликните на везу у е-поруци која је послата убрзо након што сте се регистровали.',
+ 'email_not_confirmed_resend' => 'Ако не можете да пронађете е-пошту, можете поново да пошаљете е-поруку за потврду тако што ћете послати образац испод.',
+ 'email_not_confirmed_resend_button' => 'Пошаљи поново мејл за потврду',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Позвани сте да се придружите :appName!',
+ 'user_invite_email_greeting' => 'За вас је креиран налог на :appName.',
+ 'user_invite_email_text' => 'Кликните на дугме испод да бисте поставили лозинку за налог и добили приступ:',
+ 'user_invite_email_action' => 'Подесите лозинку за налог',
+ 'user_invite_page_welcome' => 'Добродошли у :appName!',
+ 'user_invite_page_text' => 'Да бисте завршили креирање налога и добили приступ, потребно је да поставите лозинку која ће се користити за пријаву на :appName приликом будућих посета.',
+ 'user_invite_page_confirm_button' => 'Потврди лозинку',
+ 'user_invite_success_login' => 'Лозинка је постављена, сада би требало да будете у могућности да се пријавите користећи постављену лозинку за приступ :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Подешавање вишефакторске аутентификације',
+ 'mfa_setup_desc' => 'Подесите вишефакторску аутентификацију као додатни ниво безбедности за ваш кориснички налог.',
+ 'mfa_setup_configured' => 'Већ конфигурисано',
+ 'mfa_setup_reconfigure' => 'Поново конфигуришите',
+ 'mfa_setup_remove_confirmation' => 'Да ли сте сигурни да желите да уклоните овај метод вишефакторске аутентификације?',
+ 'mfa_setup_action' => 'Подешавање',
+ 'mfa_backup_codes_usage_limit_warning' => 'Преостало вам је мање од 5 резервних кодова. Генеришите и сачувајте нови сет пре него што вам понестане кодова како бисте спречили да останете без налога.',
+ 'mfa_option_totp_title' => 'Aplikacije za mobilne uređaje',
+ 'mfa_option_totp_desc' => 'Да бисте користили вишефакторску аутентификацију, биће вам потребна мобилна апликација која подржава ТОТП, као што јеGoogle Authenticator, Authy или Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Резервни кодови',
+ 'mfa_option_backup_codes_desc' => 'Генерише скуп резервних кодова за једнократну употребу које ћете унети приликом пријављивања да бисте потврдили свој идентитет. Обавезно их чувајте на безбедном и безбедном месту.',
+ 'mfa_gen_confirm_and_enable' => 'Потврдите и омогућите',
+ 'mfa_gen_backup_codes_title' => 'Подешавање резервних кодова',
+ 'mfa_gen_backup_codes_desc' => 'Чувајте доњу листу кодова на безбедном месту. Када приступате систему, моћи ћете да користите један од кодова као други механизам за аутентификацију.',
+ 'mfa_gen_backup_codes_download' => 'Преузми кодове',
+ 'mfa_gen_backup_codes_usage_warning' => 'Сваки код се може искористити једном',
+ 'mfa_gen_totp_title' => 'Подешавање мобилне апликације',
+ 'mfa_gen_totp_desc' => 'Да бисте користили вишефакторску аутентификацију, биће вам потребна мобилна апликација која подржава ТОТП, као што је Google Authenticator, Authy или Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Скенирајте QR код у наставку помоћу жељене апликације за аутентификацију да бисте започели.',
+ 'mfa_gen_totp_verify_setup' => 'Верификуј подешавања',
+ 'mfa_gen_totp_verify_setup_desc' => 'Проверите да ли све функционише тако што ћете унети код, генерисан у вашој апликацији за потврду идентитета, у поље за унос испод:',
+ 'mfa_gen_totp_provide_code_here' => 'Овде унесите код који је генерисао апликација',
+ 'mfa_verify_access' => 'Верификуј приступ',
+ 'mfa_verify_access_desc' => 'Ваш кориснички налог захтева да потврдите свој идентитет путем додатног нивоа верификације пре него што вам се одобри приступ. Потврдите коришћењем једног од конфигурисаних метода да бисте наставили.',
+ 'mfa_verify_no_methods' => 'Методе нису конфигурисане',
+ 'mfa_verify_no_methods_desc' => 'Нису пронађене методе вишефакторске аутентификације за ваш налог. Мораћете да подесите најмање један метод пре него што добијете приступ.',
+ 'mfa_verify_use_totp' => 'Верификација путем мобилне апликације',
+ 'mfa_verify_use_backup_codes' => 'Проверите помоћу резервног кода',
+ 'mfa_verify_backup_code' => 'Резервни код',
+ 'mfa_verify_backup_code_desc' => 'Унесите један од преосталих резервних кодова у наставку:',
+ 'mfa_verify_backup_code_enter_here' => 'Унеси резервни код овде',
+ 'mfa_verify_totp_desc' => 'Унесите код, генерисан помоћу ваше мобилне апликације, у наставку:',
+ 'mfa_setup_login_notification' => 'Вишефакторска метода је конфигурисана, сада се поново пријавите користећи конфигурисани метод.',
+];
diff --git a/lang/sr/common.php b/lang/sr/common.php
new file mode 100644
index 00000000000..c5c62db6588
--- /dev/null
+++ b/lang/sr/common.php
@@ -0,0 +1,115 @@
+ 'Поништи',
+ 'close' => 'Затвори',
+ 'confirm' => 'Потврди',
+ 'back' => 'Назад',
+ 'save' => 'Сачувај',
+ 'continue' => 'Настави',
+ 'select' => 'Изабери',
+ 'toggle_all' => 'Сакриј/Прикажи све',
+ 'more' => 'Више',
+
+ // Form Labels
+ 'name' => 'Назив',
+ 'description' => 'Опис',
+ 'role' => 'Улога',
+ 'cover_image' => 'Насловна слика',
+ 'cover_image_description' => 'Ова слика би требало да буде приближно 440к250px иако ће бити флексибилно скалирана и исечена како би одговарала корисничком интерфејсу у различитим сценаријима по потреби, тако да ће се стварне димензије приказа разликовати.',
+
+ // Actions
+ 'actions' => 'Радње',
+ 'view' => 'Преглед',
+ 'view_all' => 'Прикажи све',
+ 'new' => 'Ново',
+ 'create' => 'Креирај',
+ 'update' => 'Ажурирање',
+ 'edit' => 'Уреди',
+ 'archive' => 'Архивирај',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Разврстај',
+ 'move' => 'Премести',
+ 'copy' => 'Умножи',
+ 'reply' => 'Одговор',
+ 'delete' => 'Обриши',
+ 'delete_confirm' => 'Потврди брисање',
+ 'search' => 'Претражи',
+ 'search_clear' => 'Обриши претрагу',
+ 'reset' => 'Ресетуј',
+ 'remove' => 'Уклони',
+ 'add' => 'Додај',
+ 'configure' => 'Конфигуриши',
+ 'manage' => 'Управљај',
+ 'fullscreen' => 'Преко целог екрана',
+ 'favourite' => 'Омиљено',
+ 'unfavourite' => 'Уклони из "Омиљено"',
+ 'next' => 'Даље',
+ 'previous' => 'Претходно',
+ 'filter_active' => 'Активни филтер:',
+ 'filter_clear' => 'Уклони филтер',
+ 'download' => 'Преузимања',
+ 'open_in_tab' => 'Отвори у картици',
+ 'open' => 'Отвори',
+
+ // Sort Options
+ 'sort_options' => 'Опције сортирања',
+ 'sort_direction_toggle' => 'Пребацивање смера сортирања',
+ 'sort_ascending' => 'Поређај растуће',
+ 'sort_descending' => 'Поређај опадајуће',
+ 'sort_name' => 'Назив',
+ 'sort_default' => 'Подразумевано',
+ 'sort_created_at' => 'Датум креирања',
+ 'sort_updated_at' => 'Датум ажурирања',
+
+ // Misc
+ 'deleted_user' => 'Избрисан корисник',
+ 'no_activity' => 'Нема активности за приказ',
+ 'no_items' => 'Нема доступних ставки',
+ 'back_to_top' => 'Назад на врх',
+ 'skip_to_main_content' => 'Пређи на главни садржај',
+ 'toggle_details' => 'Пребаци приказ детаља',
+ 'toggle_thumbnails' => 'Пребаци минијатуре',
+ 'details' => 'Детаљи',
+ 'grid_view' => 'Приказ мреже',
+ 'list_view' => 'Приказ листе',
+ 'default' => 'Подразумевано',
+ 'breadcrumb' => 'Навигација',
+ 'status' => 'Стање',
+ 'status_active' => 'Активан',
+ 'status_inactive' => 'Неактивно',
+ 'never' => 'Никад',
+ 'none' => 'Ништа',
+
+ // Header
+ 'homepage' => 'Почетна страна',
+ 'header_menu_expand' => 'Проширите мени заглавља',
+ 'profile_menu' => 'Мени профила',
+ 'view_profile' => 'Погледај Профил',
+ 'edit_profile' => 'Измени профил',
+ 'dark_mode' => 'Тамни режим',
+ 'light_mode' => 'Светли режим',
+ 'global_search' => 'Глобална претрага',
+
+ // Layout tabs
+ 'tab_info' => 'Информације',
+ 'tab_info_label' => 'Картица: Прикажи секундарне информације',
+ 'tab_content' => 'Садржај',
+ 'tab_content_label' => 'Картица: Прикажи примарни садржај',
+
+ // Email Content
+ 'email_action_help' => 'Ако имате проблема да кликнете на дугме ":actionText" копирајте и налепите УРЛ доле у свој веб прегледач:',
+ 'email_rights' => 'Сва права задржана',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Правила о приватности',
+ 'terms_of_service' => 'Услови коришћења',
+
+ // OpenSearch
+ 'opensearch_description' => 'Search :appName',
+];
diff --git a/lang/sr/components.php b/lang/sr/components.php
new file mode 100644
index 00000000000..2a78d819bf9
--- /dev/null
+++ b/lang/sr/components.php
@@ -0,0 +1,46 @@
+ 'Изаберите слику',
+ 'image_list' => 'Листа слика',
+ 'image_details' => 'Детаљи слике',
+ 'image_upload' => 'Додај слику',
+ 'image_intro' => 'Овде можете изабрати и управљати сликама које су претходно отпремљене у систем.',
+ 'image_intro_upload' => 'Отпремите нову слику тако што ћете превући датотеку слике у овај прозор или помоћу дугмета „Отпреми слику“ изнад.',
+ 'image_all' => 'Све',
+ 'image_all_title' => 'Прикажи све слике',
+ 'image_book_title' => 'Погледајте слике отпремљене уз ову књигу',
+ 'image_page_title' => 'Погледајте слике отпремљене на ову страницу',
+ 'image_search_hint' => 'Претражите по имену слике',
+ 'image_uploaded' => 'Отпремљено :uploadedDate',
+ 'image_uploaded_by' => 'Поставио :userName',
+ 'image_uploaded_to' => 'Отпремљено на :pageLink',
+ 'image_updated' => 'Ажурирано :updateDate',
+ 'image_load_more' => 'Учитај још',
+ 'image_image_name' => 'Назив слике',
+ 'image_delete_used' => 'Ова слика се користи на страницама испод.',
+ 'image_delete_confirm_text' => 'Да ли си сигуран да желиш да избришеш ову слику?',
+ 'image_select_image' => 'Изабери слику',
+ 'image_dropzone' => 'Испустите слике или кликните овде да их отпремите',
+ 'image_dropzone_drop' => 'Испустите слике да их отпремите',
+ 'images_deleted' => 'Слике су избрисане',
+ 'image_preview' => 'Слике су избрисане',
+ 'image_upload_success' => 'Слика је успешно отпремљена',
+ 'image_update_success' => 'Детаљи слике су успешно ажурирани',
+ 'image_delete_success' => 'Слика је успешно избрисана',
+ 'image_replace' => 'Замени слику',
+ 'image_replace_success' => 'Датотека слике је успешно ажурирана',
+ 'image_rebuild_thumbs' => 'Регенеришите варијације величине',
+ 'image_rebuild_thumbs_success' => 'Варијације величине слике су успешно обновљене!',
+
+ // Code Editor
+ 'code_editor' => 'Уреди код',
+ 'code_language' => 'Језик кода',
+ 'code_content' => 'Садржај кода',
+ 'code_session_history' => 'Историја сесије',
+ 'code_save' => 'Сачувај код',
+];
diff --git a/lang/sr/editor.php b/lang/sr/editor.php
new file mode 100644
index 00000000000..2756775a9f2
--- /dev/null
+++ b/lang/sr/editor.php
@@ -0,0 +1,182 @@
+ 'Опште',
+ 'advanced' => 'Напредно',
+ 'none' => 'Ништа',
+ 'cancel' => 'Поништи',
+ 'save' => 'Сачувај',
+ 'close' => 'Затвори',
+ 'apply' => 'Примени',
+ 'undo' => 'Опозови',
+ 'redo' => 'Понови',
+ 'left' => 'Лево',
+ 'center' => 'Центар',
+ 'right' => 'Десно',
+ 'top' => 'Врх',
+ 'middle' => 'Средина',
+ 'bottom' => 'Дно',
+ 'width' => 'Ширина',
+ 'height' => 'Висина',
+ 'More' => 'Више',
+ 'select' => 'Изабери...',
+
+ // Toolbar
+ 'formats' => 'Формати',
+ 'header_large' => 'Велико заглавље',
+ 'header_medium' => 'Средње заглавље',
+ 'header_small' => 'Мало заглавље',
+ 'header_tiny' => 'Малено заглавље',
+ 'paragraph' => 'Параграф',
+ 'blockquote' => 'Цитат',
+ 'inline_code' => 'Уграђени код',
+ 'callouts' => 'Облачићи',
+ 'callout_information' => 'Информација',
+ 'callout_success' => 'Успешно',
+ 'callout_warning' => 'Упозорење',
+ 'callout_danger' => 'Опасност',
+ 'bold' => 'Подебљано',
+ 'italic' => 'Курзив',
+ 'underline' => 'Подвучено',
+ 'strikethrough' => 'Прецртано',
+ 'superscript' => 'Надскрипт',
+ 'subscript' => 'Субкрипт',
+ 'text_color' => 'Боја текста',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Боја текста',
+ 'remove_color' => 'Уклоните боју',
+ 'background_color' => 'Боја позадине',
+ 'align_left' => 'Поравнај лево',
+ 'align_center' => 'Поравнај по средини',
+ 'align_right' => 'Поравнај деcно',
+ 'align_justify' => 'Поравнај',
+ 'list_bullet' => 'Листа ставки',
+ 'list_numbered' => 'Нумерисана листа',
+ 'list_task' => 'Листа задатака',
+ 'indent_increase' => 'Повећај увлачење',
+ 'indent_decrease' => 'Умањи увлачење',
+ 'table' => 'Tabela',
+ 'insert_image' => 'Уметни слику',
+ 'insert_image_title' => 'Убаци/уреди слику',
+ 'insert_link' => 'Убаци/измени везу',
+ 'insert_link_title' => 'Убаци/измени везу',
+ 'insert_horizontal_line' => 'Уметни водоравну линију',
+ 'insert_code_block' => 'Убаците блок кода',
+ 'edit_code_block' => 'Уредите блок кода',
+ 'insert_drawing' => 'Уметните/уредите цртеж',
+ 'drawing_manager' => 'Менаџер цртежа',
+ 'insert_media' => 'Убаците/уредите медиј',
+ 'insert_media_title' => 'Уметање/уређивање медија',
+ 'clear_formatting' => 'Обриши форматирање',
+ 'source_code' => 'Изворни код',
+ 'source_code_title' => 'Изворни код',
+ 'fullscreen' => 'Преко целог екрана',
+ 'image_options' => 'Подешавање слика',
+
+ // Tables
+ 'table_properties' => 'Својства табеле',
+ 'table_properties_title' => 'Својства табеле',
+ 'delete_table' => 'Обриши табелу',
+ 'table_clear_formatting' => 'Обриши форматирање табеле',
+ 'resize_to_contents' => 'Промени величину садржају',
+ 'row_header' => 'Заглавље реда',
+ 'insert_row_before' => 'Уметни ред испред',
+ 'insert_row_after' => 'Уметните ред после',
+ 'delete_row' => 'Обриши ред',
+ 'insert_column_before' => 'Уметни колону испред',
+ 'insert_column_after' => 'Уметни колону после',
+ 'delete_column' => 'Обриши колону',
+ 'table_cell' => 'Ћелија',
+ 'table_row' => 'Ред',
+ 'table_column' => 'Колона',
+ 'cell_properties' => 'Својства ћелије',
+ 'cell_properties_title' => 'Својства ћелије',
+ 'cell_type' => 'Тип ћелије',
+ 'cell_type_cell' => 'Ћелија',
+ 'cell_scope' => 'Обим',
+ 'cell_type_header' => 'Заглавље ћелије',
+ 'merge_cells' => 'Обједини ћелије',
+ 'split_cell' => 'Подели ћелију',
+ 'table_row_group' => 'Група редова',
+ 'table_column_group' => 'Група колона',
+ 'horizontal_align' => 'Хоризонтално поравнање',
+ 'vertical_align' => 'Вертикално поравнати',
+ 'border_width' => 'Ширина ивице',
+ 'border_style' => 'Стил ивице',
+ 'border_color' => 'Боја ивице',
+ 'row_properties' => 'Својства реда',
+ 'row_properties_title' => 'Својства реда',
+ 'cut_row' => 'Пресеци ред',
+ 'copy_row' => 'Копирај ред',
+ 'paste_row_before' => 'Налепите ред пре',
+ 'paste_row_after' => 'Налепите ред после',
+ 'row_type' => 'Врста реда',
+ 'row_type_header' => 'Заглавље',
+ 'row_type_body' => 'Садржај',
+ 'row_type_footer' => 'Подножје',
+ 'alignment' => 'Поравнавање',
+ 'cut_column' => 'Изрежите колону',
+ 'copy_column' => 'Копирај колону',
+ 'paste_column_before' => 'Налепите колону пре',
+ 'paste_column_after' => 'Налепите колону после',
+ 'cell_padding' => 'Попуна ћелија',
+ 'cell_spacing' => 'Размак ћелија',
+ 'caption' => 'Опис',
+ 'show_caption' => 'Прикажи титл',
+ 'constrain' => 'Ограничавају размере',
+ 'cell_border_solid' => 'Чврсто тело',
+ 'cell_border_dotted' => 'Тачкасто',
+ 'cell_border_dashed' => 'Испрекидана',
+ 'cell_border_double' => 'Двострук',
+ 'cell_border_groove' => 'Жлеб',
+ 'cell_border_ridge' => 'Гребен',
+ 'cell_border_inset' => 'Уметак',
+ 'cell_border_outset' => 'Почетак',
+ 'cell_border_none' => 'Без',
+ 'cell_border_hidden' => 'Сакривено',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Извор',
+ 'alt_desc' => 'Алтернативни опис',
+ 'embed' => 'Угради',
+ 'paste_embed' => 'Налепите свој код за уградњу испод:',
+ 'url' => 'УРЛ',
+ 'text_to_display' => 'Текст за приказ',
+ 'title' => 'Наслов',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Отвори везу',
+ 'open_link_in' => 'Отвори везу у...',
+ 'open_link_current' => 'Тренутни прозор',
+ 'open_link_new' => 'Нови Прозор',
+ 'remove_link' => 'Уклони везу',
+ 'insert_collapsible' => 'Уредите склопиви блок',
+ 'collapsible_unwrap' => 'Одмотати',
+ 'edit_label' => 'Уреди ознаку',
+ 'toggle_open_closed' => 'Отварање/затварање',
+ 'collapsible_edit' => 'Уредите склопиви блок',
+ 'toggle_label' => 'Укључите ознаку',
+
+ // About view
+ 'about' => 'О уређивачу',
+ 'about_title' => 'О уређивачу WYSIWYG',
+ 'editor_license' => 'Уредничка лиценца и ауторска права',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'Овај уређивач је направљен помоћу :tinyLink који је обезбеђен под МИТ лиценцом.',
+ 'editor_tiny_license_link' => 'Детаље о ауторским правима и лиценци за ТиниМЦЕ можете пронаћи овде.',
+ 'save_continue' => 'Сачувај страницу и настави',
+ 'callouts_cycle' => '(Наставите да притискате да бисте прелазили између типова)',
+ 'link_selector' => 'Линк до садржаја',
+ 'shortcuts' => 'Пречице',
+ 'shortcut' => 'Пречица',
+ 'shortcuts_intro' => 'Следеће пречице су доступне у уређивачу:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Опис',
+];
diff --git a/lang/sr/entities.php b/lang/sr/entities.php
new file mode 100644
index 00000000000..151edee40fa
--- /dev/null
+++ b/lang/sr/entities.php
@@ -0,0 +1,476 @@
+ 'Недавно додато',
+ 'recently_created_pages' => 'Недавно креиране странице',
+ 'recently_updated_pages' => 'Недавно ажуриране странице',
+ 'recently_created_chapters' => 'Недавно креирана поглавља',
+ 'recently_created_books' => 'Недавно креиране књиге',
+ 'recently_created_shelves' => 'Недавно креиране полице',
+ 'recently_update' => 'Недавно ажурирано',
+ 'recently_viewed' => 'Недавно прегледано',
+ 'recent_activity' => 'Скорашња активност',
+ 'create_now' => 'Направи један сада',
+ 'revisions' => 'Ревизије',
+ 'meta_revision' => 'Ревизија #:revisionCount',
+ 'meta_created' => 'Направљено :timeLength',
+ 'meta_created_name' => 'Направљено :timeLength од :user',
+ 'meta_updated' => 'Ажурирано :timeLength',
+ 'meta_updated_name' => 'Ажурирано :timeLength од :user',
+ 'meta_owned_name' => 'Власништво :user',
+ 'meta_reference_count' => 'Референтна од :count item|Референтна од :count items',
+ 'entity_select' => 'Избор ентитета',
+ 'entity_select_lack_permission' => 'Немате потребне дозволе да изаберете ову ставку',
+ 'images' => 'Слике',
+ 'my_recent_drafts' => 'Моји недавни нацрти',
+ 'my_recently_viewed' => 'Моје недавно прегледано',
+ 'my_most_viewed_favourites' => 'Моји најгледанији фаворити',
+ 'my_favourites' => 'Моји омиљени',
+ 'no_pages_viewed' => 'Нисте погледали ниједну страницу',
+ 'no_pages_recently_created' => 'Недавно није направљена ниједна страница',
+ 'no_pages_recently_updated' => 'Ниједна страница није недавно ажурирана',
+ 'export' => 'Извоз',
+ 'export_html' => 'Садржана веб датотека',
+ 'export_pdf' => 'PDF датотека',
+ 'export_text' => 'Датотеке чистог текста',
+ 'export_md' => 'Markdown File',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Подразумевани шаблон странице',
+ 'default_template_explain' => 'Доделите шаблон странице који ће се користити као подразумевани садржај за све странице креиране у оквиру ове ставке. Имајте на уму да ће се ово користити само ако креатор странице има приступ за преглед изабране странице шаблона.',
+ 'default_template_select' => 'Изаберите страницу са шаблоном',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Настави увоз',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Дозволе',
+ 'permissions_desc' => 'Подесите дозволе овде да бисте заменили подразумеване дозволе које дају корисничке улоге.',
+ 'permissions_book_cascade' => 'Дозволе постављене за књиге ће се аутоматски пребацивати на подређена поглавља и странице, осим ако немају дефинисане сопствене дозволе.',
+ 'permissions_chapter_cascade' => 'Дозволе постављене на поглављима ће се аутоматски каскадно пребацивати на подређене странице, осим ако немају дефинисане сопствене дозволе.',
+ 'permissions_save' => 'Сачувај дозволе',
+ 'permissions_owner' => 'Власник',
+ 'permissions_role_everyone_else' => 'Сви остали',
+ 'permissions_role_everyone_else_desc' => 'Подесите дозволе за све улоге које нису посебно замењене.',
+ 'permissions_role_override' => 'Замени дозволе за улогу',
+ 'permissions_inherit_defaults' => 'Наследи подразумеване вредности',
+
+ // Search
+ 'search_results' => 'Резултати претраге',
+ 'search_total_results_found' => ':count пронађених резултата|:count укупно пронађених резултата',
+ 'search_clear' => 'Обриши претрагу',
+ 'search_no_pages' => 'No pages matched this search',
+ 'search_for_term' => 'Search for :term',
+ 'search_more' => 'More Results',
+ 'search_advanced' => 'Advanced Search',
+ 'search_terms' => 'Search Terms',
+ 'search_content_type' => 'Content Type',
+ 'search_exact_matches' => 'Exact Matches',
+ 'search_tags' => 'Tag Searches',
+ 'search_options' => 'Options',
+ 'search_viewed_by_me' => 'Viewed by me',
+ 'search_not_viewed_by_me' => 'Not viewed by me',
+ 'search_permissions_set' => 'Permissions set',
+ 'search_created_by_me' => 'Created by me',
+ 'search_updated_by_me' => 'Updated by me',
+ 'search_owned_by_me' => 'Owned by me',
+ 'search_date_options' => 'Date Options',
+ 'search_updated_before' => 'Updated before',
+ 'search_updated_after' => 'Updated after',
+ 'search_created_before' => 'Created before',
+ 'search_created_after' => 'Created after',
+ 'search_set_date' => 'Set Date',
+ 'search_update' => 'Update Search',
+
+ // Shelves
+ 'shelf' => 'Shelf',
+ 'shelves' => 'Полице',
+ 'x_shelves' => ':count Shelf|:count Shelves',
+ 'shelves_empty' => 'No shelves have been created',
+ 'shelves_create' => 'Create New Shelf',
+ 'shelves_popular' => 'Popular Shelves',
+ 'shelves_new' => 'New Shelves',
+ 'shelves_new_action' => 'New Shelf',
+ 'shelves_popular_empty' => 'The most popular shelves will appear here.',
+ 'shelves_new_empty' => 'The most recently created shelves will appear here.',
+ 'shelves_save' => 'Save Shelf',
+ 'shelves_books' => 'Books on this shelf',
+ 'shelves_add_books' => 'Add books to this shelf',
+ 'shelves_drag_books' => 'Drag books below to add them to this shelf',
+ 'shelves_empty_contents' => 'This shelf has no books assigned to it',
+ 'shelves_edit_and_assign' => 'Edit shelf to assign books',
+ 'shelves_edit_named' => 'Edit Shelf :name',
+ 'shelves_edit' => 'Edit Shelf',
+ 'shelves_delete' => 'Delete Shelf',
+ 'shelves_delete_named' => 'Delete Shelf :name',
+ 'shelves_delete_explain' => "This will delete the shelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Are you sure you want to delete this shelf?',
+ 'shelves_permissions' => 'Shelf Permissions',
+ 'shelves_permissions_updated' => 'Shelf Permissions Updated',
+ 'shelves_permissions_active' => 'Shelf Permissions Active',
+ 'shelves_permissions_cascade_warning' => 'Permissions on shelves do not automatically cascade to contained books. This is because a book can exist on multiple shelves. Permissions can however be copied down to child books using the option found below.',
+ 'shelves_permissions_create' => 'Shelf create permissions are only used for copying permissions to child books using the action below. They do not control the ability to create books.',
+ 'shelves_copy_permissions_to_books' => 'Copy Permissions to Books',
+ 'shelves_copy_permissions' => 'Copy Permissions',
+ 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this shelf to all books contained within. Before activating, ensure any changes to the permissions of this shelf have been saved.',
+ 'shelves_copy_permission_success' => 'Shelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'Book',
+ 'books' => 'Books',
+ 'x_books' => ':count Book|:count Books',
+ 'books_empty' => 'No books have been created',
+ 'books_popular' => 'Popular Books',
+ 'books_recent' => 'Recent Books',
+ 'books_new' => 'New Books',
+ 'books_new_action' => 'New Book',
+ 'books_popular_empty' => 'The most popular books will appear here.',
+ 'books_new_empty' => 'The most recently created books will appear here.',
+ 'books_create' => 'Create New Book',
+ 'books_delete' => 'Delete Book',
+ 'books_delete_named' => 'Delete Book :bookName',
+ 'books_delete_explain' => 'This will delete the book with the name \':bookName\'. All pages and chapters will be removed.',
+ 'books_delete_confirmation' => 'Are you sure you want to delete this book?',
+ 'books_edit' => 'Edit Book',
+ 'books_edit_named' => 'Edit Book :bookName',
+ 'books_form_book_name' => 'Book Name',
+ 'books_save' => 'Save Book',
+ 'books_permissions' => 'Book Permissions',
+ 'books_permissions_updated' => 'Book Permissions Updated',
+ 'books_empty_contents' => 'No pages or chapters have been created for this book.',
+ 'books_empty_create_page' => 'Create a new page',
+ 'books_empty_sort_current_book' => 'Sort the current book',
+ 'books_empty_add_chapter' => 'Add a chapter',
+ 'books_permissions_active' => 'Book Permissions Active',
+ 'books_search_this' => 'Search this book',
+ 'books_navigation' => 'Book Navigation',
+ 'books_sort' => 'Sort Book Contents',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Sort Book :bookName',
+ 'books_sort_name' => 'Sort by Name',
+ 'books_sort_created' => 'Sort by Created Date',
+ 'books_sort_updated' => 'Sort by Updated Date',
+ 'books_sort_chapters_first' => 'Chapters First',
+ 'books_sort_chapters_last' => 'Chapters Last',
+ 'books_sort_show_other' => 'Show Other Books',
+ 'books_sort_save' => 'Save New Order',
+ 'books_sort_show_other_desc' => 'Add other books here to include them in the sort operation, and allow easy cross-book reorganisation.',
+ 'books_sort_move_up' => 'Move Up',
+ 'books_sort_move_down' => 'Move Down',
+ 'books_sort_move_prev_book' => 'Move to Previous Book',
+ 'books_sort_move_next_book' => 'Move to Next Book',
+ 'books_sort_move_prev_chapter' => 'Move Into Previous Chapter',
+ 'books_sort_move_next_chapter' => 'Move Into Next Chapter',
+ 'books_sort_move_book_start' => 'Move to Start of Book',
+ 'books_sort_move_book_end' => 'Move to End of Book',
+ 'books_sort_move_before_chapter' => 'Move to Before Chapter',
+ 'books_sort_move_after_chapter' => 'Move to After Chapter',
+ 'books_copy' => 'Copy Book',
+ 'books_copy_success' => 'Book successfully copied',
+
+ // Chapters
+ 'chapter' => 'Chapter',
+ 'chapters' => 'Chapters',
+ 'x_chapters' => ':count Chapter|:count Chapters',
+ 'chapters_popular' => 'Popular Chapters',
+ 'chapters_new' => 'New Chapter',
+ 'chapters_create' => 'Create New Chapter',
+ 'chapters_delete' => 'Delete Chapter',
+ 'chapters_delete_named' => 'Delete Chapter :chapterName',
+ 'chapters_delete_explain' => 'This will delete the chapter with the name \':chapterName\'. All pages that exist within this chapter will also be deleted.',
+ 'chapters_delete_confirm' => 'Are you sure you want to delete this chapter?',
+ 'chapters_edit' => 'Edit Chapter',
+ 'chapters_edit_named' => 'Edit Chapter :chapterName',
+ 'chapters_save' => 'Save Chapter',
+ 'chapters_move' => 'Move Chapter',
+ 'chapters_move_named' => 'Move Chapter :chapterName',
+ 'chapters_copy' => 'Copy Chapter',
+ 'chapters_copy_success' => 'Chapter successfully copied',
+ 'chapters_permissions' => 'Chapter Permissions',
+ 'chapters_empty' => 'No pages are currently in this chapter.',
+ 'chapters_permissions_active' => 'Chapter Permissions Active',
+ 'chapters_permissions_success' => 'Chapter Permissions Updated',
+ 'chapters_search_this' => 'Search this chapter',
+ 'chapter_sort_book' => 'Sort Book',
+
+ // Pages
+ 'page' => 'Page',
+ 'pages' => 'Pages',
+ 'x_pages' => ':count Page|:count Pages',
+ 'pages_popular' => 'Popular Pages',
+ 'pages_new' => 'New Page',
+ 'pages_attachments' => 'Attachments',
+ 'pages_navigation' => 'Page Navigation',
+ 'pages_delete' => 'Delete Page',
+ 'pages_delete_named' => 'Delete Page :pageName',
+ 'pages_delete_draft_named' => 'Delete Draft Page :pageName',
+ 'pages_delete_draft' => 'Delete Draft Page',
+ 'pages_delete_success' => 'Page deleted',
+ 'pages_delete_draft_success' => 'Draft page deleted',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Are you sure you want to delete this page?',
+ 'pages_delete_draft_confirm' => 'Are you sure you want to delete this draft page?',
+ 'pages_editing_named' => 'Editing Page :pageName',
+ 'pages_edit_draft_options' => 'Draft Options',
+ 'pages_edit_save_draft' => 'Save Draft',
+ 'pages_edit_draft' => 'Edit Page Draft',
+ 'pages_editing_draft' => 'Editing Draft',
+ 'pages_editing_page' => 'Editing Page',
+ 'pages_edit_draft_save_at' => 'Draft saved at ',
+ 'pages_edit_delete_draft' => 'Delete Draft',
+ 'pages_edit_delete_draft_confirm' => 'Are you sure you want to delete your draft page changes? All of your changes, since the last full save, will be lost and the editor will be updated with the latest page non-draft save state.',
+ 'pages_edit_discard_draft' => 'Discard Draft',
+ 'pages_edit_switch_to_markdown' => 'Switch to Markdown Editor',
+ 'pages_edit_switch_to_markdown_clean' => '(Clean Content)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stable Content)',
+ 'pages_edit_switch_to_wysiwyg' => 'Switch to WYSIWYG Editor',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Set Changelog',
+ 'pages_edit_enter_changelog_desc' => 'Enter a brief description of the changes you\'ve made',
+ 'pages_edit_enter_changelog' => 'Enter Changelog',
+ 'pages_editor_switch_title' => 'Switch Editor',
+ 'pages_editor_switch_are_you_sure' => 'Are you sure you want to change the editor for this page?',
+ 'pages_editor_switch_consider_following' => 'Consider the following when changing editors:',
+ 'pages_editor_switch_consideration_a' => 'Once saved, the new editor option will be used by any future editors, including those that may not be able to change editor type themselves.',
+ 'pages_editor_switch_consideration_b' => 'This can potentially lead to a loss of detail and syntax in certain circumstances.',
+ 'pages_editor_switch_consideration_c' => 'Tag or changelog changes, made since last save, won\'t persist across this change.',
+ 'pages_save' => 'Save Page',
+ 'pages_title' => 'Page Title',
+ 'pages_name' => 'Page Name',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Preview',
+ 'pages_md_insert_image' => 'Insert Image',
+ 'pages_md_insert_link' => 'Insert Entity Link',
+ 'pages_md_insert_drawing' => 'Insert Drawing',
+ 'pages_md_show_preview' => 'Show preview',
+ 'pages_md_sync_scroll' => 'Sync preview scroll',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Unsaved Drawing Found',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'Page is not in a chapter',
+ 'pages_move' => 'Move Page',
+ 'pages_copy' => 'Copy Page',
+ 'pages_copy_desination' => 'Copy Destination',
+ 'pages_copy_success' => 'Page successfully copied',
+ 'pages_permissions' => 'Page Permissions',
+ 'pages_permissions_success' => 'Page permissions updated',
+ 'pages_revision' => 'Revision',
+ 'pages_revisions' => 'Page Revisions',
+ 'pages_revisions_desc' => 'Listed below are all the past revisions of this page. You can look back upon, compare, and restore old page versions if permissions allow. The full history of the page may not be fully reflected here since, depending on system configuration, old revisions could be auto-deleted.',
+ 'pages_revisions_named' => 'Page Revisions for :pageName',
+ 'pages_revision_named' => 'Page Revision for :pageName',
+ 'pages_revision_restored_from' => 'Restored from #:id; :summary',
+ 'pages_revisions_created_by' => 'Created By',
+ 'pages_revisions_date' => 'Revision Date',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revision Number',
+ 'pages_revisions_numbered' => 'Revision #:id',
+ 'pages_revisions_numbered_changes' => 'Revision #:id Changes',
+ 'pages_revisions_editor' => 'Editor Type',
+ 'pages_revisions_changelog' => 'Changelog',
+ 'pages_revisions_changes' => 'Changes',
+ 'pages_revisions_current' => 'Current Version',
+ 'pages_revisions_preview' => 'Preview',
+ 'pages_revisions_restore' => 'Restore',
+ 'pages_revisions_none' => 'This page has no revisions',
+ 'pages_copy_link' => 'Copy Link',
+ 'pages_edit_content_link' => 'Jump to section in editor',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Page Section Options',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Page Permissions Active',
+ 'pages_initial_revision' => 'Initial publish',
+ 'pages_references_update_revision' => 'System auto-update of internal links',
+ 'pages_initial_name' => 'New Page',
+ 'pages_editing_draft_notification' => 'You are currently editing a draft that was last saved :timeDiff.',
+ 'pages_draft_edited_notification' => 'This page has been updated by since that time. It is recommended that you discard this draft.',
+ 'pages_draft_page_changed_since_creation' => 'This page has been updated since this draft was created. It is recommended that you discard this draft or take care not to overwrite any page changes.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count users have started editing this page',
+ 'start_b' => ':userName has started editing this page',
+ 'time_a' => 'since the page was last updated',
+ 'time_b' => 'in the last :minCount minutes',
+ 'message' => ':start :time. Take care not to overwrite each other\'s updates!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'Specific Page',
+ 'pages_is_template' => 'Page Template',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'Page Tags',
+ 'chapter_tags' => 'Chapter Tags',
+ 'book_tags' => 'Book Tags',
+ 'shelf_tags' => 'Shelf Tags',
+ 'tag' => 'Tag',
+ 'tags' => 'Tags',
+ 'tags_index_desc' => 'Tags can be applied to content within the system to apply a flexible form of categorization. Tags can have both a key and value, with the value being optional. Once applied, content can then be queried using the tag name and value.',
+ 'tag_name' => 'Tag Name',
+ 'tag_value' => 'Tag Value (Optional)',
+ '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' => 'Add another tag',
+ 'tags_remove' => 'Remove this tag',
+ 'tags_usages' => 'Total tag usages',
+ 'tags_assigned_pages' => 'Assigned to Pages',
+ 'tags_assigned_chapters' => 'Assigned to Chapters',
+ 'tags_assigned_books' => 'Assigned to Books',
+ 'tags_assigned_shelves' => 'Assigned to Shelves',
+ 'tags_x_unique_values' => ':count unique values',
+ 'tags_all_values' => 'All values',
+ 'tags_view_tags' => 'View Tags',
+ 'tags_view_existing_tags' => 'View existing tags',
+ 'tags_list_empty_hint' => 'Tags can be assigned via the page editor sidebar or while editing the details of a book, chapter or shelf.',
+ 'attachments' => 'Attachments',
+ 'attachments_explain' => 'Upload some files or attach some links to display on your page. These are visible in the page sidebar.',
+ 'attachments_explain_instant_save' => 'Changes here are saved instantly.',
+ 'attachments_upload' => 'Upload File',
+ 'attachments_link' => 'Attach Link',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'Set Link',
+ 'attachments_delete' => 'Are you sure you want to delete this attachment?',
+ 'attachments_dropzone' => 'Drop files here to upload',
+ 'attachments_no_files' => 'No files have been uploaded',
+ 'attachments_explain_link' => 'You can attach a link if you\'d prefer not to upload a file. This can be a link to another page or a link to a file in the cloud.',
+ 'attachments_link_name' => 'Link Name',
+ 'attachment_link' => 'Attachment link',
+ 'attachments_link_url' => 'Link to file',
+ 'attachments_link_url_hint' => 'Url of site or file',
+ 'attach' => 'Attach',
+ 'attachments_insert_link' => 'Add Attachment Link to Page',
+ 'attachments_edit_file' => 'Edit File',
+ 'attachments_edit_file_name' => 'File Name',
+ 'attachments_edit_drop_upload' => 'Drop files or click here to upload and overwrite',
+ 'attachments_order_updated' => 'Attachment order updated',
+ 'attachments_updated_success' => 'Attachment details updated',
+ 'attachments_deleted' => 'Attachment deleted',
+ 'attachments_file_uploaded' => 'File successfully uploaded',
+ 'attachments_file_updated' => 'File successfully updated',
+ 'attachments_link_attached' => 'Link successfully attached to page',
+ 'templates' => 'Templates',
+ 'templates_set_as_template' => 'Page is a template',
+ 'templates_explain_set_as_template' => 'You can set this page as a template so its contents be utilized when creating other pages. Other users will be able to use this template if they have view permissions for this page.',
+ 'templates_replace_content' => 'Replace page content',
+ 'templates_append_content' => 'Append to page content',
+ 'templates_prepend_content' => 'Prepend to page content',
+
+ // Profile View
+ 'profile_user_for_x' => 'User for :time',
+ 'profile_created_content' => 'Created Content',
+ 'profile_not_created_pages' => ':userName has not created any pages',
+ 'profile_not_created_chapters' => ':userName has not created any chapters',
+ 'profile_not_created_books' => ':userName has not created any books',
+ 'profile_not_created_shelves' => ':userName has not created any shelves',
+
+ // Comments
+ 'comment' => 'Comment',
+ 'comments' => 'Comments',
+ 'comment_add' => 'Add Comment',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Leave a comment here',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Save Comment',
+ 'comment_new' => 'New Comment',
+ 'comment_created' => 'commented :createDiff',
+ 'comment_updated' => 'Updated :updateDiff by :username',
+ 'comment_updated_indicator' => 'Updated',
+ 'comment_deleted_success' => 'Comment deleted',
+ 'comment_created_success' => 'Comment added',
+ 'comment_updated_success' => 'Comment updated',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Are you sure you want to delete this comment?',
+ 'comment_in_reply_to' => 'In reply to :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Here are the comments that have been left on this page. Comments can be added & managed when viewing the saved page.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Are you sure you want to delete this revision?',
+ 'revision_restore_confirm' => 'Are you sure you want to restore this revision? The current page contents will be replaced.',
+ 'revision_cannot_delete_latest' => 'Cannot delete the latest revision.',
+
+ // Copy view
+ 'copy_consider' => 'Please consider the below when copying content.',
+ 'copy_consider_permissions' => 'Custom permission settings will not be copied.',
+ 'copy_consider_owner' => 'You will become the owner of all copied content.',
+ 'copy_consider_images' => 'Page image files will not be duplicated & the original images will retain their relation to the page they were originally uploaded to.',
+ 'copy_consider_attachments' => 'Page attachments will not be copied.',
+ 'copy_consider_access' => 'A change of location, owner or permissions may result in this content being accessible to those previously without access.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Convert to Shelf',
+ 'convert_to_shelf_contents_desc' => 'You can convert this book to a new shelf with the same contents. Chapters contained within this book will be converted to new books. If this book contains any pages, that are not in a chapter, this book will be renamed and contain such pages, and this book will become part of the new shelf.',
+ 'convert_to_shelf_permissions_desc' => 'Any permissions set on this book will be copied to the new shelf and to all new child books that don\'t have their own permissions enforced. Note that permissions on shelves do not auto-cascade to content within, as they do for books.',
+ 'convert_book' => 'Convert Book',
+ 'convert_book_confirm' => 'Are you sure you want to convert this book?',
+ 'convert_undo_warning' => 'This cannot be as easily undone.',
+ 'convert_to_book' => 'Convert to Book',
+ 'convert_to_book_desc' => 'You can convert this chapter to a new book with the same contents. Any permissions set on this chapter will be copied to the new book but any inherited permissions, from the parent book, will not be copied which could lead to a change of access control.',
+ 'convert_chapter' => 'Convert Chapter',
+ 'convert_chapter_confirm' => 'Are you sure you want to convert this chapter?',
+
+ // References
+ 'references' => 'References',
+ 'references_none' => 'There are no tracked references to this item.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Watch',
+ 'watch_title_default' => 'Default Preferences',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignore',
+ 'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
+ 'watch_title_new' => 'New Pages',
+ 'watch_desc_new' => 'Notify when any new page is created within this item.',
+ 'watch_title_updates' => 'All Page Updates',
+ 'watch_desc_updates' => 'Notify upon all new pages and page changes.',
+ 'watch_desc_updates_page' => 'Notify upon all page changes.',
+ 'watch_title_comments' => 'All Page Updates & Comments',
+ 'watch_desc_comments' => 'Notify upon all new pages, page changes and new comments.',
+ 'watch_desc_comments_page' => 'Notify upon page changes and new comments.',
+ 'watch_change_default' => 'Change default notification preferences',
+ 'watch_detail_ignore' => 'Ignoring notifications',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/sr/errors.php b/lang/sr/errors.php
new file mode 100644
index 00000000000..55ba90a5c7a
--- /dev/null
+++ b/lang/sr/errors.php
@@ -0,0 +1,135 @@
+ 'Немате дозволу да приступите овој страни.',
+ 'permissionJson' => 'Немате овлашћење да извршите ову акцију.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Корисник са е-мејл адресом :email већ постоји са другим приступним подацима.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'Email has already been confirmed, Try logging in.',
+ 'email_confirmation_invalid' => 'This confirmation token is not valid or has already been used, Please try registering again.',
+ 'email_confirmation_expired' => 'The confirmation token has expired, A new confirmation email has been sent.',
+ 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed',
+ 'ldap_fail_anonymous' => 'LDAP access failed using anonymous bind',
+ 'ldap_fail_authed' => 'LDAP access failed using given dn & password details',
+ 'ldap_extension_not_installed' => 'LDAP PHP extension not installed',
+ 'ldap_cannot_connect' => 'Cannot connect to ldap server, Initial connection failed',
+ 'saml_already_logged_in' => 'Already logged in',
+ 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.',
+ 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'oidc_already_logged_in' => 'Already logged in',
+ 'oidc_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'oidc_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'social_no_action_defined' => 'No action defined',
+ 'social_login_bad_response' => "Error received during :socialAccount login: \n:error",
+ 'social_account_in_use' => 'This :socialAccount account is already in use, Try logging in via the :socialAccount option.',
+ 'social_account_email_in_use' => 'The email :email is already in use. If you already have an account you can connect your :socialAccount account from your profile settings.',
+ 'social_account_existing' => 'This :socialAccount is already attached to your profile.',
+ 'social_account_already_used_existing' => 'This :socialAccount account is already used by another user.',
+ 'social_account_not_used' => 'This :socialAccount account is not linked to any users. Please attach it in your profile settings. ',
+ 'social_account_register_instructions' => 'If you do not yet have an account, You can register an account using the :socialAccount option.',
+ 'social_driver_not_found' => 'Social driver not found',
+ 'social_driver_not_configured' => 'Your :socialAccount social settings are not configured correctly.',
+ 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // System
+ 'path_not_writable' => 'File path :filePath could not be uploaded to. Ensure it is writable to the server.',
+ 'cannot_get_image_from_url' => 'Cannot get image from :url',
+ 'cannot_create_thumbs' => 'The server cannot create thumbnails. Please check you have the GD PHP extension installed.',
+ 'server_upload_limit' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+ 'server_post_limit' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.',
+ 'uploaded' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'An error occurred uploading the image',
+ 'image_upload_type_error' => 'The image type being uploaded is invalid',
+ 'image_upload_replace_type' => 'Image file replacements must be of the same type',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Drawing data could not be loaded. The drawing file might no longer exist or you may not have permission to access it.',
+
+ // Attachments
+ 'attachment_not_found' => 'Attachment not found',
+ 'attachment_upload_error' => 'An error occurred uploading the attachment file',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Failed to save draft. Ensure you have internet connection before saving this page',
+ 'page_draft_delete_fail' => 'Failed to delete page draft and fetch current page saved content',
+ 'page_custom_home_deletion' => 'Cannot delete a page while it is set as a homepage',
+
+ // Entities
+ 'entity_not_found' => 'Entity not found',
+ 'bookshelf_not_found' => 'Shelf not found',
+ 'book_not_found' => 'Књига није пронађена',
+ 'page_not_found' => 'Страница није пронађена',
+ 'chapter_not_found' => 'Поглавље није пронађено',
+ 'selected_book_not_found' => 'Одабрана књига није пронађена',
+ 'selected_book_chapter_not_found' => 'The selected Book or Chapter was not found',
+ 'guests_cannot_save_drafts' => 'Гости не могу сачувати нацрте',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Не можете обрисати јединог администратора',
+ 'users_cannot_delete_guest' => 'Не можете обрисати госта',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Ова улога се не може мењати',
+ 'role_system_cannot_be_deleted' => 'Ово је системска улога и не може се мењати',
+ 'role_registration_default_cannot_delete' => 'This role cannot be deleted while set as the default registration role',
+ 'role_cannot_remove_only_admin' => 'This user is the only user assigned to the administrator role. Assign the administrator role to another user before attempting to remove it here.',
+
+ // Comments
+ 'comment_list' => 'An error occurred while fetching the comments.',
+ 'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.',
+ 'comment_add' => 'An error occurred while adding / updating the comment.',
+ 'comment_delete' => 'An error occurred while deleting the comment.',
+ 'empty_comment' => 'Cannot add an empty comment.',
+
+ // Error pages
+ '404_page_not_found' => 'Page Not Found',
+ 'sorry_page_not_found' => 'Sorry, The page you were looking for could not be found.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
+ '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' => 'Return to home',
+ 'error_occurred' => 'Догодила се грешка',
+ 'app_down' => ':appName is down right now',
+ 'back_soon' => 'It will be back up soon.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'No authorization token found on the request',
+ 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect',
+ 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token',
+ 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
+ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
+ 'api_user_token_expired' => 'The authorization token used has expired',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'The URL does not match the configured allowed SSR hosts',
+];
diff --git a/lang/sr/notifications.php b/lang/sr/notifications.php
new file mode 100644
index 00000000000..4cc499fdd40
--- /dev/null
+++ b/lang/sr/notifications.php
@@ -0,0 +1,29 @@
+ 'Нови коментар на станици: :pageName',
+ 'new_comment_intro' => 'Корисник је коментарисао на страници у :appName:',
+ 'new_page_subject' => 'Нова страница: :pageName',
+ 'new_page_intro' => 'Нова страница је креирана у :appName:',
+ 'updated_page_subject' => 'Ажурирана страница: :pageName',
+ 'updated_page_intro' => 'Страница је ажурирана у :appName:',
+ 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Назив странице:',
+ 'detail_page_path' => 'Путања странице:',
+ 'detail_commenter' => 'Commenter:',
+ 'detail_comment' => 'Коментар:',
+ 'detail_created_by' => 'Креирао/ла:',
+ 'detail_updated_by' => 'Отпремио/ла:',
+
+ 'action_view_comment' => 'Погледај коментар',
+ 'action_view_page' => 'Погледај страницу',
+
+ 'footer_reason' => 'This notification was sent to you because :link cover this type of activity for this item.',
+ 'footer_reason_link' => 'your notification preferences',
+];
diff --git a/lang/sr/pagination.php b/lang/sr/pagination.php
new file mode 100644
index 00000000000..85bd12fc319
--- /dev/null
+++ b/lang/sr/pagination.php
@@ -0,0 +1,12 @@
+ '« Previous',
+ 'next' => 'Next »',
+
+];
diff --git a/lang/sr/passwords.php b/lang/sr/passwords.php
new file mode 100644
index 00000000000..b408f3c2fda
--- /dev/null
+++ b/lang/sr/passwords.php
@@ -0,0 +1,15 @@
+ 'Passwords must be at least eight characters and match the confirmation.',
+ 'user' => "We can't find a user with that e-mail address.",
+ 'token' => 'The password reset token is invalid for this email address.',
+ 'sent' => 'We have e-mailed your password reset link!',
+ 'reset' => 'Your password has been reset!',
+
+];
diff --git a/lang/sr/preferences.php b/lang/sr/preferences.php
new file mode 100644
index 00000000000..f4459d738e4
--- /dev/null
+++ b/lang/sr/preferences.php
@@ -0,0 +1,52 @@
+ 'My Account',
+
+ 'shortcuts' => 'Shortcuts',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Here you can enable or disable keyboard system interface shortcuts, used for navigation and actions.',
+ 'shortcuts_customize_desc' => 'You can customize each of the shortcuts below. Just press your desired key combination after selecting the input for a shortcut.',
+ 'shortcuts_toggle_label' => 'Keyboard shortcuts enabled',
+ 'shortcuts_section_navigation' => 'Navigation',
+ 'shortcuts_section_actions' => 'Common Actions',
+ 'shortcuts_save' => 'Save Shortcuts',
+ 'shortcuts_overlay_desc' => 'Note: When shortcuts are enabled a helper overlay is available via pressing "?" which will highlight the available shortcuts for actions currently visible on the screen.',
+ 'shortcuts_update_success' => 'Shortcut preferences have been updated!',
+ 'shortcuts_overview_desc' => 'Manage keyboard shortcuts you can use to navigate the system user interface.',
+
+ 'notifications' => 'Notification Preferences',
+ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.',
+ 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own',
+ 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notify upon replies to my comments',
+ 'notifications_save' => 'Save Preferences',
+ 'notifications_update_success' => 'Notification preferences have been updated!',
+ 'notifications_watched' => 'Watched & Ignored Items',
+ 'notifications_watched_desc' => 'Below are the items that have custom watch preferences applied. To update your preferences for these, view the item then find the watch options in the sidebar.',
+
+ 'auth' => 'Access & Security',
+ 'auth_change_password' => 'Change Password',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Password has been updated!',
+
+ 'profile' => 'Profile Details',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'View Public Profile',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Delete Account',
+ 'delete_my_account' => 'Delete My Account',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/sr/settings.php b/lang/sr/settings.php
new file mode 100644
index 00000000000..f6c86827e69
--- /dev/null
+++ b/lang/sr/settings.php
@@ -0,0 +1,374 @@
+ 'Подешавања',
+ 'settings_save' => 'Сачувај подешавања',
+ 'system_version' => 'Верзија система',
+ 'categories' => 'Категорије',
+
+ // App Settings
+ 'app_customization' => 'Прилгођавање',
+ 'app_features_security' => 'Својства и сигурност',
+ 'app_name' => 'Назив апликације',
+ 'app_name_desc' => 'Ово име се приказује у заглављу и у свим системским порукама е-поште.',
+ 'app_name_header' => 'Прикажи назив у заглављу',
+ 'app_public_access' => 'Javni pristup',
+ 'app_public_access_desc' => 'Омогућавање ове опције ће омогућити посетиоцима, који нису пријављени, да приступе садржају у вашој Боокстак инстанци.',
+ 'app_public_access_desc_guest' => 'Приступ за јавне посетиоце може се контролисати преко корисника „Гост“.',
+ 'app_public_access_toggle' => 'Дозволи јавни приступ',
+ 'app_public_viewing' => 'Дозволити јавно гледање?',
+ 'app_secure_images' => 'Веће безбедност отпремања слика',
+ 'app_secure_images_toggle' => 'Омогућите већу безбедност отпремања слика',
+ 'app_secure_images_desc' => 'Из разлога перформанси, све слике су јавне. Ова опција додаје насумичан низ који је тешко погодити испред Урл-ова слике. Уверите се да индекси директоријума нису омогућени да бисте спречили лак приступ.',
+ 'app_default_editor' => 'Подразумевани уређивач страница',
+ 'app_default_editor_desc' => 'Изаберите који уређивач ће се подразумевано користити приликом уређивања нових страница. Ово се може заменити на нивоу странице где дозволе дозвољавају.',
+ 'app_custom_html' => 'Прилагођени ХТМЛ садржај заглавља',
+ 'app_custom_html_desc' => 'Сваки садржај који је додат овде биће уметнут у дно одељка сваке странице. Ово је згодно за надјачавање стилова или додавање кода за анализу.',
+ 'app_custom_html_disabled_notice' => 'Прилагођени садржај заглавља ХТМЛ-а је онемогућен на овој страници са подешавањима како би се осигурало да се све неоправдане промене могу поништити.',
+ 'app_logo' => 'Логотип апликације',
+ 'app_logo_desc' => 'Ово се користи у траци заглавља апликације, између осталих области. Висина ове слике треба да буде 86 пиксела. Велике слике ће бити смањене.',
+ 'app_icon' => 'Икона апликације',
+ 'app_icon_desc' => 'Ова икона се користи за картице претраживача и иконе пречица. Ово би требало да буде квадратна ПНГ слика величине 256 пиксела.',
+ 'app_homepage' => 'Почетна страница апликације',
+ 'app_homepage_desc' => 'Изаберите приказ који ће се приказати на почетној страници уместо подразумеваног приказа. Дозволе за страницу се занемарују за изабране странице.',
+ 'app_homepage_select' => 'Изаберите страницу',
+ 'app_footer_links' => 'Везе у подножју',
+ 'app_footer_links_desc' => 'Додајте везе које ће се приказати у подножју сајта. Они ће бити приказани на дну већине страница, укључујући и оне које не захтевају пријаву. Можете користити ознаку "trans::" да бисте користили системски дефинисане преводе. На пример: Коришћење "trans::common.privacy_policy"ће обезбедити преведени текст „Политика приватности“, а "trans::common.terms_of_service" ће обезбедити преведени текст „Услови коришћења услуге“.',
+ 'app_footer_links_label' => 'Ознака линка',
+ 'app_footer_links_url' => 'УРЛ линка',
+ 'app_footer_links_add' => 'Додај везу у подножју',
+ 'app_disable_comments' => 'Онемогући коментаре',
+ 'app_disable_comments_toggle' => 'Онемогући коментаре',
+ 'app_disable_comments_desc' => 'Онемогућава коментаре на свим страницама у апликацији. Постојећи коментари нису приказани.',
+
+ // Color settings
+ 'color_scheme' => 'Шема боја апликације',
+ 'color_scheme_desc' => 'Подесите боје које ће се користити у корисничком интерфејсу апликације. Боје се могу засебно конфигурисати за тамне и светле режиме како би најбоље одговарале теми и осигурале читљивост.',
+ 'ui_colors_desc' => 'Подесите примарну боју апликације и подразумевану боју везе. Примарна боја се углавном користи за банер заглавља, дугмад и декорацију интерфејса. Подразумевана боја везе се користи за везе и радње засноване на тексту, како унутар писаног садржаја, тако и у интерфејсу апликације.',
+ 'app_color' => 'Примарна боја',
+ 'link_color' => 'Подразумевана боја везе',
+ 'content_colors_desc' => 'Подесите боје за све елементе у хијерархији организације страница. За читљивост се препоручује одабир боја сличне осветљености као и подразумеване боје.',
+ 'bookshelf_color' => 'Боја полице',
+ 'book_color' => 'Боја књиге',
+ 'chapter_color' => 'Боја поглавља',
+ 'page_color' => 'Боја странице',
+ 'page_draft_color' => 'Боја нацрта странице',
+
+ // Registration Settings
+ 'reg_settings' => 'Регистрација',
+ 'reg_enable' => 'Дозволи регистрацију',
+ 'reg_enable_toggle' => 'Омогући регистрацију',
+ 'reg_enable_desc' => 'Када је регистрација омогућена, корисник ће моћи да се пријави као корисник апликације. Након регистрације добијају јединствену, подразумевану корисничку улогу.',
+ 'reg_default_role' => 'Подразумевана корисничка улога након регистрације',
+ 'reg_enable_external_warning' => 'Горња опција се занемарује док је активна екстерна ЛДАП или САМЛ аутентификација. Кориснички налози за непостојеће чланове биће аутоматски креирани ако је аутентификација, против спољашњег система који се користи, успешна.',
+ 'reg_email_confirmation' => 'Потврђивање е-поште',
+ 'reg_email_confirmation_toggle' => 'Захтевајте потврду е-поштом',
+ 'reg_confirm_email_desc' => 'Ако се користи ограничење домена, биће потребна потврда путем е-поште и ова опција ће бити занемарена.',
+ 'reg_confirm_restrict_domain' => 'Ограничени домени',
+ 'reg_confirm_restrict_domain_desc' => 'Унесите листу домена е-поште одвојене зарезима на које желите да ограничите регистрацију. Корисницима ће бити послата е-порука да потврде своју адресу пре него што им буде дозвољено да комуницирају са апликацијом. Имајте на уму да ће корисници моћи да промене своје адресе е-поште након успешне регистрације.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Нема постављених ограничења',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Одржавање',
+ 'maint_image_cleanup' => 'Чишћење слика',
+ 'maint_image_cleanup_desc' => 'Скенира садржај странице и ревидира садржај да би проверио које слике и цртежи су тренутно у употреби и које су слике сувишне. Уверите се да сте направили пуну базу података и резервну копију слике пре него што ово покренете.',
+ 'maint_delete_images_only_in_revisions' => 'Такође избришите слике које постоје само у старим ревизијама странице',
+ 'maint_image_cleanup_run' => 'Покрени чишћење',
+ 'maint_image_cleanup_warning' => ':count пронађене су потенцијално неискоришћене слике. Да ли сте сигурни да желите да избришете ове слике?',
+ 'maint_image_cleanup_success' => ':count potentially unused images found and deleted!',
+ '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_regen_references' => 'Regenerate References',
+ 'maint_regen_references_desc' => 'This action will rebuild the cross-item reference index within the database. This is usually handled automatically but this action can be useful to index old content or content added via unofficial methods.',
+ 'maint_regen_references_success' => 'Reference index has been regenerated!',
+ 'maint_timeout_command_note' => 'Note: This action can take time to run, which can lead to timeout issues in some web environments. As an alternative, this action be performed using a terminal command.',
+
+ // 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_parent' => 'Parent',
+ '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 from the system, along with any child elements listed below, 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_restore_parent' => 'Restore Parent',
+ '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 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' => 'Избрисана ставка',
+ 'audit_deleted_item_name' => 'Name: :name',
+ 'audit_table_user' => 'Корисник',
+ 'audit_table_event' => 'Догађај',
+ 'audit_table_related' => 'Related Item or Detail',
+ 'audit_table_ip' => 'ИП адреса',
+ 'audit_table_date' => 'Датум активности',
+ 'audit_date_from' => 'Date Range From',
+ 'audit_date_to' => 'Date Range To',
+
+ // Role Settings
+ 'roles' => 'Улоге',
+ 'role_user_roles' => 'User Roles',
+ 'roles_index_desc' => 'Roles are used to group users & provide system permission to their members. When a user is a member of multiple roles the privileges granted will stack and the user will inherit all abilities.',
+ 'roles_x_users_assigned' => ':count user assigned|:count users assigned',
+ 'roles_x_permissions_provided' => ':count permission|:count permissions',
+ 'roles_assigned_users' => 'Assigned Users',
+ 'roles_permissions_provided' => 'Provided Permissions',
+ 'role_create' => 'Create New Role',
+ 'role_delete' => 'Delete Role',
+ 'role_delete_confirm' => 'Ово ће избрисати улогу са именом \':roleName\'.',
+ 'role_delete_users_assigned' => 'Ова улога има :userCount корисника који су јој додељени. Ако желите да мигрирате кориснике са ове улоге, изаберите нову улогу испод.',
+ 'role_delete_no_migration' => "Немојте мигрирати кориснике",
+ 'role_delete_sure' => 'Да ли сте сигурни да желите да избришете ову улогу?',
+ 'role_edit' => 'Уреди улогу',
+ 'role_details' => 'Детаљи улоге',
+ 'role_name' => 'Назив улоге',
+ 'role_desc' => 'Кратак опис улоге',
+ 'role_mfa_enforced' => 'Захтева вишефакторску аутентификацију',
+ 'role_external_auth_id' => 'External Authentication IDs',
+ 'role_system' => 'System Permissions',
+ 'role_manage_users' => 'Manage users',
+ 'role_manage_roles' => 'Manage roles & role permissions',
+ 'role_manage_entity_permissions' => 'Manage all book, chapter & page permissions',
+ 'role_manage_own_entity_permissions' => 'Manage permissions on own book, chapter & pages',
+ 'role_manage_page_templates' => 'Manage page templates',
+ 'role_access_api' => 'Access system API',
+ 'role_manage_settings' => 'Manage app settings',
+ 'role_export_content' => 'Export content',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Change page editor',
+ 'role_notifications' => 'Receive & manage notifications',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Asset Permissions',
+ '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' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.',
+ 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.',
+ 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'All',
+ 'role_own' => 'Own',
+ 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to',
+ 'role_save' => 'Save Role',
+ 'role_users' => 'Users in this role',
+ 'role_users_none' => 'No users are currently assigned to this role',
+
+ // Users
+ 'users' => 'Users',
+ 'users_index_desc' => 'Create & manage individual user accounts within the system. User accounts are used for login and attribution of content & activity. Access permissions are primarily role-based but user content ownership, among other factors, may also affect permissions & access.',
+ 'user_profile' => 'User Profile',
+ 'users_add_new' => 'Add New User',
+ 'users_search' => 'Search Users',
+ 'users_latest_activity' => 'Latest Activity',
+ 'users_details' => 'User 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',
+ 'users_role_desc' => 'Select which roles this user will be assigned to. If a user is assigned to multiple roles the permissions from those roles will stack and they will receive all abilities of the assigned roles.',
+ 'users_password' => 'User Password',
+ 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 8 characters long.',
+ 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.',
+ 'users_send_invite_option' => 'Send user invite email',
+ 'users_external_auth_id' => 'External Authentication ID',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ '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_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_edit' => 'Edit User',
+ 'users_edit_profile' => 'Edit Profile',
+ 'users_avatar' => 'User Avatar',
+ 'users_avatar_desc' => 'Select an image to represent this user. This should be approx 256px square.',
+ 'users_preferred_language' => 'Preferred Language',
+ 'users_preferred_language_desc' => 'This option will change the language used for the user-interface of the application. This will not affect any user-created content.',
+ 'users_social_accounts' => 'Social Accounts',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not revoke previously authorized access. Revoke access from your profile settings on the connected social account.',
+ 'users_social_connect' => 'Connect Account',
+ 'users_social_disconnect' => 'Disconnect Account',
+ 'users_social_status_connected' => 'Connected',
+ 'users_social_status_disconnected' => 'Disconnected',
+ 'users_social_connected' => ':socialAccount account was successfully attached to your profile.',
+ 'users_social_disconnected' => ':socialAccount account was successfully disconnected from your profile.',
+ 'users_api_tokens' => 'API Tokens',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'No API tokens have been created for this user',
+ 'users_api_tokens_create' => 'Create Token',
+ 'users_api_tokens_expires' => 'Expires',
+ 'users_api_tokens_docs' => 'API Documentation',
+ 'users_mfa' => 'Multi-Factor Authentication',
+ 'users_mfa_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'users_mfa_x_methods' => ':count method configured|:count methods configured',
+ 'users_mfa_configure' => 'Configure Methods',
+
+ // API Tokens
+ 'user_api_token_create' => 'Create API Token',
+ 'user_api_token_name' => 'Name',
+ 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
+ 'user_api_token_expiry' => 'Expiry Date',
+ 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
+ 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
+ 'user_api_token' => 'API Token',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
+ 'user_api_token_secret' => 'Token Secret',
+ 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
+ 'user_api_token_created' => 'Token created :timeAgo',
+ 'user_api_token_updated' => 'Token updated :timeAgo',
+ 'user_api_token_delete' => 'Delete Token',
+ 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
+ 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks are a way to send data to external URLs when certain actions and events occur within the system which allows event-based integration with external platforms such as messaging or notification systems.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'Create New Webhook',
+ 'webhooks_none_created' => 'No webhooks have yet been created.',
+ 'webhooks_edit' => 'Edit Webhook',
+ 'webhooks_save' => 'Save Webhook',
+ 'webhooks_details' => 'Webhook Details',
+ 'webhooks_details_desc' => 'Provide a user friendly name and a POST endpoint as a location for the webhook data to be sent to.',
+ 'webhooks_events' => 'Webhook Events',
+ 'webhooks_events_desc' => 'Select all the events that should trigger this webhook to be called.',
+ 'webhooks_events_warning' => 'Keep in mind that these events will be triggered for all selected events, even if custom permissions are applied. Ensure that use of this webhook won\'t expose confidential content.',
+ 'webhooks_events_all' => 'All system events',
+ 'webhooks_name' => 'Webhook Name',
+ 'webhooks_timeout' => 'Webhook Request Timeout (Seconds)',
+ 'webhooks_endpoint' => 'Webhook Endpoint',
+ 'webhooks_active' => 'Webhook Active',
+ 'webhook_events_table_header' => 'Events',
+ 'webhooks_delete' => 'Delete Webhook',
+ 'webhooks_delete_warning' => 'This will fully delete this webhook, with the name \':webhookName\', from the system.',
+ 'webhooks_delete_confirm' => 'Are you sure you want to delete this webhook?',
+ 'webhooks_format_example' => 'Webhook Format Example',
+ 'webhooks_format_example_desc' => 'Webhook data is sent as a POST request to the configured endpoint as JSON following the format below. The "related_item" and "url" properties are optional and will depend on the type of event triggered.',
+ 'webhooks_status' => 'Webhook Status',
+ 'webhooks_last_called' => 'Last Called:',
+ 'webhooks_last_errored' => 'Last Errored:',
+ 'webhooks_last_error_message' => 'Last Error Message:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/sr/validation.php b/lang/sr/validation.php
new file mode 100644
index 00000000000..6770c5a8015
--- /dev/null
+++ b/lang/sr/validation.php
@@ -0,0 +1,123 @@
+ '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' => ':attribute мора бити низ.',
+ 'backup_codes' => 'The provided code is not valid or has already been used.',
+ 'before' => 'The :attribute must be a date before :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.',
+ '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',
+ 'file' => 'The :attribute must be provided as a valid file.',
+ 'filled' => 'The :attribute field is required.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ 'array' => 'The :attribute may not have more than :max items.',
+ ],
+ 'mimes' => 'The :attribute must be a file of type: :values.',
+ 'min' => [
+ 'numeric' => 'The :attribute must be at least :min.',
+ 'file' => 'The :attribute must be at least :min kilobytes.',
+ 'string' => 'The :attribute must be at least :min characters.',
+ 'array' => 'The :attribute must have at least :min items.',
+ ],
+ 'not_in' => 'The selected :attribute is invalid.',
+ 'not_regex' => 'The :attribute format is invalid.',
+ 'numeric' => 'The :attribute must be a number.',
+ 'regex' => 'The :attribute format is invalid.',
+ 'required' => 'The :attribute field is required.',
+ 'required_if' => 'The :attribute field is required when :other is :value.',
+ 'required_with' => 'The :attribute field is required when :values is present.',
+ 'required_with_all' => 'The :attribute field is required when :values is present.',
+ 'required_without' => 'The :attribute field is required when :values is not present.',
+ 'required_without_all' => 'The :attribute field is required when none of :values are present.',
+ 'same' => 'The :attribute and :other must match.',
+ 'safe_url' => 'The provided link may not be safe.',
+ 'size' => [
+ 'numeric' => 'The :attribute must be :size.',
+ 'file' => 'The :attribute must be :size kilobytes.',
+ 'string' => 'The :attribute must be :size characters.',
+ 'array' => 'The :attribute must contain :size items.',
+ ],
+ 'string' => 'The :attribute must be a string.',
+ 'timezone' => 'The :attribute must be a valid zone.',
+ 'totp' => 'The provided code is not valid or has expired.',
+ 'unique' => 'The :attribute has already been taken.',
+ 'url' => 'The :attribute format is invalid.',
+ 'uploaded' => 'The file could not be uploaded. The server may not accept files of this size.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Password confirmation required',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/sv/activities.php b/lang/sv/activities.php
new file mode 100644
index 00000000000..3acf6d4ff8d
--- /dev/null
+++ b/lang/sv/activities.php
@@ -0,0 +1,140 @@
+ 'skapade sidan',
+ 'page_create_notification' => 'Sidan har skapats',
+ 'page_update' => 'uppdaterade sidan',
+ 'page_update_notification' => 'Sidan har uppdaterats',
+ 'page_delete' => 'tog bort sidan',
+ 'page_delete_notification' => 'Sidan har tagits bort',
+ 'page_restore' => 'återställde sidan',
+ 'page_restore_notification' => 'Sidan har återställts',
+ 'page_move' => 'flyttade sidan',
+ 'page_move_notification' => 'Sidan har flyttats',
+
+ // Chapters
+ 'chapter_create' => 'skapade kapitlet',
+ 'chapter_create_notification' => 'Kapitlet har skapats',
+ 'chapter_update' => 'uppdaterade kapitlet',
+ 'chapter_update_notification' => 'Kapitlet har uppdaterats',
+ 'chapter_delete' => 'tog bort kapitlet',
+ 'chapter_delete_notification' => 'Kapitlet har tagits bort',
+ 'chapter_move' => 'flyttade kapitlet',
+ 'chapter_move_notification' => 'Kapitlet har flyttats',
+
+ // Books
+ 'book_create' => 'skapade boken',
+ 'book_create_notification' => 'Boken har skapats',
+ 'book_create_from_chapter' => 'konverterade kapitel till bok',
+ 'book_create_from_chapter_notification' => 'Kapitlet har konverterats till en bok',
+ 'book_update' => 'uppdaterade boken',
+ 'book_update_notification' => 'Boken har uppdaterats',
+ 'book_delete' => 'tog bort boken',
+ 'book_delete_notification' => 'Boken har tagits bort',
+ 'book_sort' => 'sorterade boken',
+ 'book_sort_notification' => 'Boken har sorterats om',
+
+ // Bookshelves
+ 'bookshelf_create' => 'skapade hylla',
+ 'bookshelf_create_notification' => 'Hyllan har skapats',
+ 'bookshelf_create_from_book' => 'konverterade bok till hylla',
+ 'bookshelf_create_from_book_notification' => 'Boken har konverterats till en hylla',
+ 'bookshelf_update' => 'uppdaterade hyllan',
+ 'bookshelf_update_notification' => 'Hyllan har uppdaterats',
+ 'bookshelf_delete' => 'raderade hyllan',
+ 'bookshelf_delete_notification' => 'Hyllan har tagits bort',
+
+ // Revisions
+ 'revision_restore' => 'återställde version',
+ 'revision_delete' => 'tog bort version',
+ 'revision_delete_notification' => 'Versionen har tagits bort',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" har lagts till i dina favoriter',
+ 'favourite_remove_notification' => '":name" har tagits bort från dina favoriter',
+
+ // Watching
+ 'watch_update_level_notification' => 'Inställningarna för bevakning har uppdaterats',
+
+ // Auth
+ 'auth_login' => 'loggade in',
+ 'auth_register' => 'registrerad som ny användare',
+ 'auth_password_reset_request' => 'begärd återställning av användarlösenord',
+ 'auth_password_reset_update' => 'återställa användarens lösenord',
+ 'mfa_setup_method' => 'konfigurerad MFA metod',
+ 'mfa_setup_method_notification' => 'Multifaktor-metod har konfigurerats',
+ 'mfa_remove_method' => 'tog bort MFA metod',
+ 'mfa_remove_method_notification' => 'Multifaktor-metod har tagits bort',
+
+ // Settings
+ 'settings_update' => 'uppdaterade inställningar',
+ 'settings_update_notification' => 'Inställningarna har uppdaterats',
+ 'maintenance_action_run' => 'körde underhållsåtgärder',
+
+ // Webhooks
+ 'webhook_create' => 'skapade webhook',
+ 'webhook_create_notification' => 'Webhook har skapats',
+ 'webhook_update' => 'uppdaterade webhook',
+ 'webhook_update_notification' => 'Webhook har uppdaterats',
+ 'webhook_delete' => 'raderade webhook',
+ 'webhook_delete_notification' => 'Webhook har tagits bort',
+
+ // Imports
+ 'import_create' => 'import skapades',
+ 'import_create_notification' => 'Import har laddats upp',
+ 'import_run' => 'import uppdaterad',
+ 'import_run_notification' => 'Innehållet har importerats',
+ 'import_delete' => 'import borttagen',
+ 'import_delete_notification' => 'Importen har tagits bort',
+
+ // Users
+ 'user_create' => 'skapade användare',
+ 'user_create_notification' => 'Användare skapades',
+ 'user_update' => 'uppdaterad användare',
+ 'user_update_notification' => 'Användaren har uppdaterats',
+ 'user_delete' => 'raderad användare',
+ 'user_delete_notification' => 'Användaren har tagits bort',
+
+ // API Tokens
+ 'api_token_create' => 'skapade API-token',
+ 'api_token_create_notification' => 'API-token har skapats',
+ 'api_token_update' => 'uppdaterad API-token',
+ 'api_token_update_notification' => 'API-token har uppdaterats',
+ 'api_token_delete' => 'raderad API-token',
+ 'api_token_delete_notification' => 'API-token har tagits bort',
+
+ // Roles
+ 'role_create' => 'skapad roll',
+ 'role_create_notification' => 'Rollen har skapats',
+ 'role_update' => 'uppdaterad roll',
+ 'role_update_notification' => 'Rollen har uppdaterats',
+ 'role_delete' => 'raderad roll',
+ 'role_delete_notification' => 'Rollen har tagits bort',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'tömd papperskorg',
+ 'recycle_bin_restore' => 'återställd från papperskorgen',
+ 'recycle_bin_destroy' => 'borttagen från papperskorgen',
+
+ // Comments
+ 'commented_on' => 'kommenterade',
+ 'comment_create' => 'lagt till kommentar',
+ 'comment_update' => 'uppdaterad kommentar',
+ 'comment_delete' => 'raderad kommentar',
+
+ // Sort Rules
+ 'sort_rule_create' => 'sorteringsregel skapad',
+ 'sort_rule_create_notification' => 'Sorteringsregel har skapats',
+ 'sort_rule_update' => 'sorteringsregel uppdaterad',
+ 'sort_rule_update_notification' => 'Sorteringsregel har uppdaterats',
+ 'sort_rule_delete' => 'sorteringsregel borttagen',
+ 'sort_rule_delete_notification' => 'Sorteringsregel har tagits bort',
+
+ // Other
+ 'permissions_update' => 'uppdaterade behörigheter',
+];
diff --git a/lang/sv/auth.php b/lang/sv/auth.php
new file mode 100644
index 00000000000..c9feb831218
--- /dev/null
+++ b/lang/sv/auth.php
@@ -0,0 +1,117 @@
+ 'Uppgifterna stämmer inte överens med våra register.',
+ 'throttle' => 'För många inloggningsförsök. Prova igen om :seconds sekunder.',
+
+ // Login & Register
+ 'sign_up' => 'Skapa konto',
+ 'log_in' => 'Logga in',
+ 'log_in_with' => 'Logga in med :socialDriver',
+ 'sign_up_with' => 'Registera dig med :socialDriver',
+ 'logout' => 'Logga ut',
+
+ 'name' => 'Namn',
+ 'username' => 'Användarnamn',
+ 'email' => 'E-post',
+ 'password' => 'Lösenord',
+ 'password_confirm' => 'Bekräfta lösenord',
+ 'password_hint' => 'Måste vara minst 8 tecken',
+ 'forgot_password' => 'Glömt lösenord?',
+ 'remember_me' => 'Kom ihåg mig',
+ 'ldap_email_hint' => 'Vänligen ange en e-postadress att använda till kontot.',
+ 'create_account' => 'Skapa konto',
+ 'already_have_account' => 'Har du redan ett konto?',
+ 'dont_have_account' => 'Har du ingen användare?',
+ 'social_login' => 'Logga in genom socialt medie',
+ 'social_registration' => 'Registrera dig genom socialt media',
+ 'social_registration_text' => 'Registrera dig och logga in genom en annan tjänst.',
+
+ 'register_thanks' => 'Tack för din registrering!',
+ 'register_confirm' => 'Vänligen kontrollera din mail och klicka på bekräftelselänken för att få tillgång till :appName.',
+ 'registrations_disabled' => 'Registrering är för närvarande avstängd',
+ 'registration_email_domain_invalid' => 'Den e-postadressen har inte tillgång till den här applikationen',
+ 'register_success' => 'Tack för din registrering! Du är nu registerad och inloggad.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Försöker Logga In',
+ 'auto_init_starting_desc' => 'Vi kontaktar ditt autentiseringssystem för att starta inloggningsprocessen. Om inget händer efter 5 sekunder kan du prova att klicka på länken nedan.',
+ 'auto_init_start_link' => 'Fortsätt med autentisering',
+
+ // Password Reset
+ 'reset_password' => 'Återställ lösenord',
+ 'reset_password_send_instructions' => 'Ange din e-postadress nedan så skickar vi ett mail med en länk för att återställa ditt lösenord.',
+ 'reset_password_send_button' => 'Skicka återställningslänk',
+ 'reset_password_sent' => 'En länk för återställning av lösenord kommer att skickas till :email om den e-postadressen finns i systemet.',
+ 'reset_password_success' => 'Ditt lösenord har återställts.',
+ 'email_reset_subject' => 'Återställ ditt lösenord till :appName',
+ 'email_reset_text' => 'Du får detta mail eftersom vi fått en begäran om att återställa lösenordet till ditt konto.',
+ 'email_reset_not_requested' => 'Om du inte begärt att få ditt lösenord återställt behöver du inte göra någonting',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Bekräfta din e-post på :appName',
+ 'email_confirm_greeting' => 'Tack för att du gått med i :appName!',
+ 'email_confirm_text' => 'Vänligen bekräfta din e-postadress genom att klicka på knappen nedan:',
+ 'email_confirm_action' => 'Bekräfta e-post',
+ 'email_confirm_send_error' => 'E-posten behöver bekräftas men systemet kan inte skicka mail. Kontakta adminstratören för att kontrollera att allt är konfigurerat korrekt.',
+ 'email_confirm_success' => 'Din e-postadress har bekräftats! Du bör nu kunna logga in med denna e-postadress.',
+ 'email_confirm_resent' => 'Bekräftelsemailet har skickats på nytt, kolla din mail',
+ 'email_confirm_thanks' => 'Tack för att du bekräftade!',
+ 'email_confirm_thanks_desc' => 'Vänta en stund medan din bekräftelse hanteras. Om du inte omdirigeras efter 3 sekunder tryck på "Fortsätt" länken nedan för att fortsätta.',
+
+ 'email_not_confirmed' => 'E-posadress ej bekräftad',
+ 'email_not_confirmed_text' => 'Din e-postadress har inte bekräftats ännu.',
+ 'email_not_confirmed_click_link' => 'Vänligen klicka på länken i det mail du fick strax efter att du registerade dig.',
+ 'email_not_confirmed_resend' => 'Om du inte hittar mailet kan du begära en ny bekräftelse genom att fylla i formuläret nedan.',
+ 'email_not_confirmed_resend_button' => 'Skicka bekräftelse på nytt',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Du har blivit inbjuden att gå med i :appName!',
+ 'user_invite_email_greeting' => 'Ett konto har skapats för dig i :appName.',
+ 'user_invite_email_text' => 'Klicka på knappen nedan för att ange ett lösenord och få tillgång:',
+ 'user_invite_email_action' => 'Ange kontolösenord',
+ 'user_invite_page_welcome' => 'Välkommen till :appName!',
+ 'user_invite_page_text' => 'För att slutföra ditt konto och få åtkomst måste du ange ett lösenord som kommer att användas för att logga in på :appName vid framtida besök.',
+ 'user_invite_page_confirm_button' => 'Bekräfta lösenord',
+ 'user_invite_success_login' => 'Lösenord inställt, du bör nu kunna logga in med ditt inställda lösenord för att komma åt :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Konfigurera multifaktorsautentisering',
+ 'mfa_setup_desc' => 'Konfigurera multifaktorsautentisering som ett extra skydd för ditt konto.',
+ 'mfa_setup_configured' => 'Redan konfigurerad',
+ 'mfa_setup_reconfigure' => 'Omkonfigurera',
+ 'mfa_setup_remove_confirmation' => 'Är du säker på att du vill ta bort denna multifaktorautentiseringsmetod?',
+ 'mfa_setup_action' => 'Konfigurera',
+ 'mfa_backup_codes_usage_limit_warning' => 'Du har mindre än 5 reservkoder kvar, Vänligen generera och lagra en nya innan du får slut på koder för att förhindra att du inte kommer åt ditt konto.',
+ 'mfa_option_totp_title' => 'Mobilapp',
+ 'mfa_option_totp_desc' => 'För att använda multifaktorautentisering behöver du en mobil app som stöder TOTP så som Google Authenticator, Authy eller Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Reservkoder',
+ 'mfa_option_backup_codes_desc' => 'Genererar en uppsättning engångsbaserade säkerhetskopieringskoder som du anger vid inloggningen för att verifiera din identitet. Se till att förvara dessa på en säker och säker plats.',
+ 'mfa_gen_confirm_and_enable' => 'Bekräfta och aktivera',
+ 'mfa_gen_backup_codes_title' => 'Konfiguration av reservkoder',
+ 'mfa_gen_backup_codes_desc' => 'Spara nedanstående koder på en säker plats. När du använder systemet kommer du att kunna använda en av koderna som en andra autentiseringsmekanism.',
+ 'mfa_gen_backup_codes_download' => 'Ladda ner koder',
+ 'mfa_gen_backup_codes_usage_warning' => 'Varje kod kan endast användas en gång',
+ 'mfa_gen_totp_title' => 'Konfiguration av mobilapp',
+ 'mfa_gen_totp_desc' => 'För att använda multifaktorautentisering behöver du en mobil app som stöder TOTP så som Google Authenticator, Authy eller Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Skanna QR-koden nedan med din föredragna autentiseringsapp för att komma igång.',
+ 'mfa_gen_totp_verify_setup' => 'Verifiera konfiguration',
+ 'mfa_gen_totp_verify_setup_desc' => 'Kontrollera att allt fungerar genom att ange en kod, genererad i din autentiseringsapp, i rutan nedan:',
+ 'mfa_gen_totp_provide_code_here' => 'Ange din appgenererade kod här',
+ 'mfa_verify_access' => 'Verifiera åtkomst',
+ 'mfa_verify_access_desc' => 'Ditt användarkonto kräver att du bekräftar din identitet via en ytterligare verifieringsmetod innan du får tillgång. Verifiera genom en av dina konfigurerade metoder för att fortsätta.',
+ 'mfa_verify_no_methods' => 'Inga metoder konfigurerade',
+ 'mfa_verify_no_methods_desc' => 'Inga multifaktorautentiseringsmetoder kunde hittas för ditt konto. Du måste konfigurera minst en metod innan du får tillgång.',
+ 'mfa_verify_use_totp' => 'Verifiera med en mobilapp',
+ 'mfa_verify_use_backup_codes' => 'Verifiera med en reservkod',
+ 'mfa_verify_backup_code' => 'Reservkod',
+ 'mfa_verify_backup_code_desc' => 'Ange en av dina återstående reservkoder nedan:',
+ 'mfa_verify_backup_code_enter_here' => 'Ange reservkod här',
+ 'mfa_verify_totp_desc' => 'Ange koden, som genereras med din mobilapp, nedan:',
+ 'mfa_setup_login_notification' => 'Multifaktormetod konfigurerad, Logga nu in igen med den konfigurerade metoden.',
+];
diff --git a/lang/sv/common.php b/lang/sv/common.php
new file mode 100644
index 00000000000..2eab9bd7b8d
--- /dev/null
+++ b/lang/sv/common.php
@@ -0,0 +1,115 @@
+ 'Avbryt',
+ 'close' => 'Stäng',
+ 'confirm' => 'Bekräfta',
+ 'back' => 'Bakåt',
+ 'save' => 'Spara',
+ 'continue' => 'Fortsätt',
+ 'select' => 'Välj',
+ 'toggle_all' => 'Ändra alla',
+ 'more' => 'Mer',
+
+ // Form Labels
+ 'name' => 'Namn',
+ 'description' => 'Beskrivning',
+ 'role' => 'Roll',
+ 'cover_image' => 'Omslagsbild',
+ 'cover_image_description' => 'Denna bild bör vara ungefär 440x250px även om den kommer att vara flexibelt skalad och beskuren för att passa användargränssnittet i olika scenarier där så krävs, kommer faktiska visningsmått att skilja sig.',
+
+ // Actions
+ 'actions' => 'Åtgärder',
+ 'view' => 'Visa',
+ 'view_all' => 'Visa alla',
+ 'new' => 'Ny',
+ 'create' => 'Skapa',
+ 'update' => 'Uppdatera',
+ 'edit' => 'Redigera',
+ 'archive' => 'Arkivera',
+ 'unarchive' => 'Avarkivera',
+ 'sort' => 'Sortera',
+ 'move' => 'Flytta',
+ 'copy' => 'Kopiera',
+ 'reply' => 'Svara',
+ 'delete' => 'Ta bort',
+ 'delete_confirm' => 'Bekräfta radering',
+ 'search' => 'Sök',
+ 'search_clear' => 'Rensa sökning',
+ 'reset' => 'Återställ',
+ 'remove' => 'Radera',
+ 'add' => 'Lägg till',
+ 'configure' => 'Konfigurera',
+ 'manage' => 'Hantera',
+ 'fullscreen' => 'Helskärm',
+ 'favourite' => 'Favorit',
+ 'unfavourite' => 'Ta bort favorit',
+ 'next' => 'Nästa',
+ 'previous' => 'Föregående',
+ 'filter_active' => 'Aktivt filter:',
+ 'filter_clear' => 'Rensa filter',
+ 'download' => 'Ladda ner',
+ 'open_in_tab' => 'Öppna i flik',
+ 'open' => 'Öppna',
+
+ // Sort Options
+ 'sort_options' => 'Sorteringsalternativ',
+ 'sort_direction_toggle' => 'Växla sorteringsriktning',
+ 'sort_ascending' => 'Sortera stigande',
+ 'sort_descending' => 'Sortera fallande',
+ 'sort_name' => 'Namn',
+ 'sort_default' => 'Standard',
+ 'sort_created_at' => 'Skapad',
+ 'sort_updated_at' => 'Uppdaterad',
+
+ // Misc
+ 'deleted_user' => 'Borttagen användare',
+ 'no_activity' => 'Ingen aktivitet att visa',
+ 'no_items' => 'Inga tillgängliga föremål',
+ 'back_to_top' => 'Tillbaka till toppen',
+ 'skip_to_main_content' => 'Hoppa till huvudinnehåll',
+ 'toggle_details' => 'Växla detaljer',
+ 'toggle_thumbnails' => 'Växla miniatyrer',
+ 'details' => 'Information',
+ 'grid_view' => 'Rutnätsvy',
+ 'list_view' => 'Listvy',
+ 'default' => 'Förvald',
+ 'breadcrumb' => 'Brödsmula',
+ 'status' => 'Status',
+ 'status_active' => 'Aktiv',
+ 'status_inactive' => 'Inaktiv',
+ 'never' => 'Aldrig',
+ 'none' => 'Inga',
+
+ // Header
+ 'homepage' => 'Startsida',
+ 'header_menu_expand' => 'Expandera sidhuvudsmenyn',
+ 'profile_menu' => 'Profilmeny',
+ 'view_profile' => 'Visa profil',
+ 'edit_profile' => 'Redigera profil',
+ 'dark_mode' => 'Mörkt läge',
+ 'light_mode' => 'Ljust läge',
+ 'global_search' => 'Global sökning',
+
+ // Layout tabs
+ 'tab_info' => 'Information',
+ 'tab_info_label' => 'Flik: Visa sekundär information',
+ 'tab_content' => 'Innehåll',
+ 'tab_content_label' => 'Flik: Visa primärt innehåll',
+
+ // Email Content
+ 'email_action_help' => 'Om du har problem att klicka på ":actionText"-knappen, kopiera och klistra in URL\'n nedan i din webbläsare:',
+ 'email_rights' => 'Alla rättigheter är reserverade',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Integritetspolicy',
+ 'terms_of_service' => 'Användarvillkor',
+
+ // OpenSearch
+ 'opensearch_description' => 'Sök :appName',
+];
diff --git a/lang/sv/components.php b/lang/sv/components.php
new file mode 100644
index 00000000000..315e1683c50
--- /dev/null
+++ b/lang/sv/components.php
@@ -0,0 +1,46 @@
+ 'Val av bild',
+ 'image_list' => 'Bildlista',
+ 'image_details' => 'Bilddetaljer',
+ 'image_upload' => 'Ladda upp bild',
+ 'image_intro' => 'Här kan du välja och hantera bilder som tidigare har laddats upp till systemet.',
+ 'image_intro_upload' => 'Ladda upp en ny bild genom att dra en bildfil till detta fönster, eller genom att använda knappen "Ladda upp bild" ovan.',
+ 'image_all' => 'Alla',
+ 'image_all_title' => 'Visa alla bilder',
+ 'image_book_title' => 'Visa bilder som laddats upp till den aktuella boken',
+ 'image_page_title' => 'Visa bilder som laddats upp till den aktuella sidan',
+ 'image_search_hint' => 'Sök efter bildens namn',
+ 'image_uploaded' => 'Laddades upp :uploadedDate',
+ 'image_uploaded_by' => 'Uppladdad av :userName',
+ 'image_uploaded_to' => 'Uppladdad till :pageLink',
+ 'image_updated' => 'Uppdaterad :updateDate',
+ 'image_load_more' => 'Ladda fler',
+ 'image_image_name' => 'Bildnamn',
+ 'image_delete_used' => 'Den här bilden används på nedanstående sidor.',
+ 'image_delete_confirm_text' => 'Är du säker på att du vill radera denna bild?',
+ 'image_select_image' => 'Välj bild',
+ 'image_dropzone' => 'Släpp bilder här eller klicka för att ladda upp',
+ 'image_dropzone_drop' => 'Släpp filer här för att ladda upp dem',
+ 'images_deleted' => 'Bilder borttagna',
+ 'image_preview' => 'Förhandsgranskning',
+ 'image_upload_success' => 'Bilden har laddats upp',
+ 'image_update_success' => 'Bildens uppgifter har ändrats',
+ 'image_delete_success' => 'Bilden har tagits bort',
+ 'image_replace' => 'Ersätt bild',
+ 'image_replace_success' => 'Bildfilen har uppdaterats',
+ 'image_rebuild_thumbs' => 'Återskapa variationer av bildstorlekar',
+ 'image_rebuild_thumbs_success' => 'Variationer av bildstorlekar har återskapats!',
+
+ // Code Editor
+ 'code_editor' => 'Redigera kod',
+ 'code_language' => 'Språk',
+ 'code_content' => 'Kod',
+ 'code_session_history' => 'Sessionshistorik',
+ 'code_save' => 'Spara',
+];
diff --git a/lang/sv/editor.php b/lang/sv/editor.php
new file mode 100644
index 00000000000..fbcdf8c3349
--- /dev/null
+++ b/lang/sv/editor.php
@@ -0,0 +1,182 @@
+ 'Allmän',
+ 'advanced' => 'Avancerad',
+ 'none' => 'Inga',
+ 'cancel' => 'Avbryt',
+ 'save' => 'Spara',
+ 'close' => 'Stäng',
+ 'apply' => 'Tillämpa',
+ 'undo' => 'Ångra',
+ 'redo' => 'Gör om',
+ 'left' => 'Vänster',
+ 'center' => 'Mitten',
+ 'right' => 'Höger',
+ 'top' => 'Topp',
+ 'middle' => 'Mitt',
+ 'bottom' => 'Botten',
+ 'width' => 'Bredd',
+ 'height' => 'Höjd',
+ 'More' => 'Mer',
+ 'select' => 'Välj...',
+
+ // Toolbar
+ 'formats' => 'Format',
+ 'header_large' => 'Stor rubrik',
+ 'header_medium' => 'Mellanstor rubrik',
+ 'header_small' => 'Mindre rubrik',
+ 'header_tiny' => 'Liten rubrik',
+ 'paragraph' => 'Paragraf',
+ 'blockquote' => 'Blockcitat',
+ 'inline_code' => 'Inline-kod',
+ 'callouts' => 'Anslag',
+ 'callout_information' => 'Information',
+ 'callout_success' => 'Slutfört',
+ 'callout_warning' => 'Varning',
+ 'callout_danger' => 'Fara',
+ 'bold' => 'Fetstil',
+ 'italic' => 'Kursiv',
+ 'underline' => 'Understruken',
+ 'strikethrough' => 'Genomstruken',
+ 'superscript' => 'Upphöjd',
+ 'subscript' => 'Nedsänkt',
+ 'text_color' => 'Textfärg',
+ 'highlight_color' => 'Markera färg',
+ 'custom_color' => 'Anpassad färg',
+ 'remove_color' => 'Ta bort färg',
+ 'background_color' => 'Bakgrundsfärg',
+ 'align_left' => 'Vänsterjustera',
+ 'align_center' => 'Centrera',
+ 'align_right' => 'Högerjustera',
+ 'align_justify' => 'Marginaljustera',
+ 'list_bullet' => 'Punktlista',
+ 'list_numbered' => 'Numrerad lista',
+ 'list_task' => 'Checklista',
+ 'indent_increase' => 'Öka indrag',
+ 'indent_decrease' => 'Minska indrag',
+ 'table' => 'Tabell',
+ 'insert_image' => 'Infoga bild',
+ 'insert_image_title' => 'Infoga/redigera bild',
+ 'insert_link' => 'Infoga/redigera länk',
+ 'insert_link_title' => 'Infoga/redigera länk',
+ 'insert_horizontal_line' => 'Infoga horisontell linje',
+ 'insert_code_block' => 'Infoga kodblock',
+ 'edit_code_block' => 'Redigera kodblock',
+ 'insert_drawing' => 'Infoga/redigera ritning',
+ 'drawing_manager' => 'Ritningshanterare',
+ 'insert_media' => 'Infoga/redigera media',
+ 'insert_media_title' => 'Infoga/redigera media',
+ 'clear_formatting' => 'Rensa formatering',
+ 'source_code' => 'Källkod',
+ 'source_code_title' => 'Källkod',
+ 'fullscreen' => 'Helskärm',
+ 'image_options' => 'Bildalternativ',
+
+ // Tables
+ 'table_properties' => 'Tabellegenskaper',
+ 'table_properties_title' => 'Tabellegenskaper',
+ 'delete_table' => 'Ta bort tabell',
+ 'table_clear_formatting' => 'Rensa tabell-formatering',
+ 'resize_to_contents' => 'Ändra storlek till innehåll',
+ 'row_header' => 'Radrubrik',
+ 'insert_row_before' => 'Infoga rad före',
+ 'insert_row_after' => 'Infoga rad efter',
+ 'delete_row' => 'Ta bort rad',
+ 'insert_column_before' => 'Infoga kolumn före',
+ 'insert_column_after' => 'Infoga kolumn efter',
+ 'delete_column' => 'Ta bort kolumn',
+ 'table_cell' => 'Cell',
+ 'table_row' => 'Rad',
+ 'table_column' => 'Kolumn',
+ 'cell_properties' => 'Cellegenskaper',
+ 'cell_properties_title' => 'Cellegenskaper',
+ 'cell_type' => 'Celltyp',
+ 'cell_type_cell' => 'Cell',
+ 'cell_scope' => 'Omfattning',
+ 'cell_type_header' => 'Rubrikcell',
+ 'merge_cells' => 'Sammanfoga celler',
+ 'split_cell' => 'Dela cell',
+ 'table_row_group' => 'Radgrupp',
+ 'table_column_group' => 'Kolumngrupp',
+ 'horizontal_align' => 'Horisontell justering',
+ 'vertical_align' => 'Vertikal justering',
+ 'border_width' => 'Kantbredd',
+ 'border_style' => 'Kantstil',
+ 'border_color' => 'Kantfärg',
+ 'row_properties' => 'Radegenskaper',
+ 'row_properties_title' => 'Radegenskaper',
+ 'cut_row' => 'Klipp rad',
+ 'copy_row' => 'Kopiera rad',
+ 'paste_row_before' => 'Infoga rad före',
+ 'paste_row_after' => 'Klistra in rad efter',
+ 'row_type' => 'Radtyp',
+ 'row_type_header' => 'Rubrik',
+ 'row_type_body' => 'Brödtext',
+ 'row_type_footer' => 'Sidfot',
+ 'alignment' => 'Justering',
+ 'cut_column' => 'Klipp kolumn',
+ 'copy_column' => 'Kopiera kolumn',
+ 'paste_column_before' => 'Infoga kolumn före',
+ 'paste_column_after' => 'Infoga kolumn före',
+ 'cell_padding' => 'Cellfyllning',
+ 'cell_spacing' => 'Cellavstånd',
+ 'caption' => 'Bildtext',
+ 'show_caption' => 'Visa bildtext',
+ 'constrain' => 'Begränsa proportioner',
+ 'cell_border_solid' => 'Solid',
+ 'cell_border_dotted' => 'Punktad',
+ 'cell_border_dashed' => 'Streckad',
+ 'cell_border_double' => 'Dubbel',
+ 'cell_border_groove' => 'Skåra',
+ 'cell_border_ridge' => 'Upphöjning',
+ 'cell_border_inset' => 'Infälld',
+ 'cell_border_outset' => 'Utfälld',
+ 'cell_border_none' => 'Ingen',
+ 'cell_border_hidden' => 'Dold',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Källa',
+ 'alt_desc' => 'Alternativ beskrivning',
+ 'embed' => 'Bädda in',
+ 'paste_embed' => 'Klistra in din inbäddningskod nedan:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Text som ska visas',
+ 'title' => 'Titel',
+ 'browse_links' => 'Bläddra bland länkar',
+ 'open_link' => 'Öppna länk',
+ 'open_link_in' => 'Öppna länk i...',
+ 'open_link_current' => 'Aktuellt fönster',
+ 'open_link_new' => 'Nytt fönster',
+ 'remove_link' => 'Radera länk',
+ 'insert_collapsible' => 'Infoga hopfällbart block',
+ 'collapsible_unwrap' => 'Expandera',
+ 'edit_label' => 'Redigera etikett',
+ 'toggle_open_closed' => 'Växla mellan öppen/stängd',
+ 'collapsible_edit' => 'Redigera hopfällbart block',
+ 'toggle_label' => 'Visa eller dölj etikett',
+
+ // About view
+ 'about' => 'Om redigeraren',
+ 'about_title' => 'Om WYSIWYG-redigeraren',
+ 'editor_license' => 'Licens och upphovsrätt för redigerare',
+ 'editor_lexical_license' => 'Denna editor är byggd som en fork av :lexicalLink som distribueras under MIT-licensen.',
+ 'editor_lexical_license_link' => 'Fullständiga licensdetaljer hittas här.',
+ 'editor_tiny_license' => 'Denna redigerare är byggd med :tinyLink som tillhandahålls under MIT licensen.',
+ 'editor_tiny_license_link' => 'Upphovsrätten och licensuppgifterna för TinyMCE hittar du här.',
+ 'save_continue' => 'Spara sida & fortsätt',
+ 'callouts_cycle' => '(Fortsätt trycka för att växla mellan typer)',
+ 'link_selector' => 'Länka till innehåll',
+ 'shortcuts' => 'Genvägar',
+ 'shortcut' => 'Genväg',
+ 'shortcuts_intro' => 'Följande genvägar finns i redigeraren:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Beskrivning',
+];
diff --git a/lang/sv/entities.php b/lang/sv/entities.php
new file mode 100644
index 00000000000..680e0908aa7
--- /dev/null
+++ b/lang/sv/entities.php
@@ -0,0 +1,476 @@
+ 'Nyligen skapat',
+ 'recently_created_pages' => 'Sidor som skapats nyligen',
+ 'recently_updated_pages' => 'Sidor som uppdaterats nyligen',
+ 'recently_created_chapters' => 'Kapitel som skapats nyligen',
+ 'recently_created_books' => 'Böcker som skapats nyligen',
+ 'recently_created_shelves' => 'Hyllor som skapats nyligen',
+ 'recently_update' => 'Nyligen uppdaterat',
+ 'recently_viewed' => 'Nyligen läst',
+ 'recent_activity' => 'Aktivitet',
+ 'create_now' => 'Skapa en nu',
+ 'revisions' => 'Revisioner',
+ 'meta_revision' => 'Revision #:revisionCount',
+ 'meta_created' => 'Skapad :timeLength',
+ 'meta_created_name' => 'Skapad :timeLength av :user',
+ 'meta_updated' => 'Uppdaterad :timeLength',
+ 'meta_updated_name' => 'Uppdaterad :timeLength av :user',
+ 'meta_owned_name' => 'Ägs av :user',
+ 'meta_reference_count' => 'Refererad till av :count item|Referenced by :count items',
+ 'entity_select' => 'Välj enhet',
+ 'entity_select_lack_permission' => 'Du har inte den behörighet som krävs för att välja det här objektet',
+ 'images' => 'Bilder',
+ 'my_recent_drafts' => 'Mina nyaste utkast',
+ 'my_recently_viewed' => 'Mina senast visade sidor',
+ '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',
+ 'export' => 'Exportera',
+ 'export_html' => 'Webb-fil',
+ 'export_pdf' => 'PDF-fil',
+ 'export_text' => 'Textfil',
+ 'export_md' => 'Markdown-fil',
+ 'export_zip' => 'Portabel ZIP',
+ 'default_template' => 'Förvald sidmall',
+ 'default_template_explain' => 'Tilldela en sidmall som kommer att användas som standardinnehåll för alla sidor som skapats inom detta objekt. Tänk på att detta endast kommer att användas om skaparen av sidan har tillgång till den valda mallsidan.',
+ 'default_template_select' => 'Välj en sidmall',
+ 'import' => 'Importera',
+ 'import_validate' => 'Validera import',
+ 'import_desc' => 'Importera böcker, kapitel och sidor med hjälp av en portabel ZIP-export från samma eller en annan instans. Välj en ZIP-fil för att fortsätta. Efter att filen har laddats upp och validerats kan du konfigurera och bekräfta importen i nästa vy.',
+ 'import_zip_select' => 'Välj ZIP-fil att ladda upp',
+ 'import_zip_validation_errors' => 'Fel upptäcktes vid validering av den angivna ZIP-filen:',
+ 'import_pending' => 'Väntande importer',
+ 'import_pending_none' => 'Ingen import har påbörjats.',
+ 'import_continue' => 'Fortsätt import',
+ 'import_continue_desc' => 'Granska innehållet som skall importeras från den uppladdade ZIP-filen. När du är redo, kör importen för att lägga till innehållet. Den uppladdade ZIP-baserade importfilen kommer automatiskt att tas bort vid lyckad import.',
+ 'import_details' => 'Importdetaljer',
+ 'import_run' => 'Kör import',
+ 'import_size' => ':size ZIP-storlek',
+ 'import_uploaded_at' => 'Uppladdad :relativeTime',
+ 'import_uploaded_by' => 'Uppladdad av',
+ 'import_location' => 'Importplats',
+ 'import_location_desc' => 'Välj en målplats för ditt importerade innehåll. Du behöver relevanta behörigheter för att skapa på den plats du väljer.',
+ 'import_delete_confirm' => 'Är du säker på att du vill ta bort denna import?',
+ 'import_delete_desc' => 'Detta kommer att ta bort den uppladdade ZIP-baserade importfilen och kan inte ångras.',
+ 'import_errors' => 'Importfel',
+ 'import_errors_desc' => 'Följande fel inträffade under importförsöket:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Rättigheter',
+ 'permissions_desc' => 'Sätt rättigheter här för att åsidosätta de standardrättigheter som tillhandahålls av användarroller.',
+ 'permissions_book_cascade' => 'Rättigheter som sätts på böcker kommer automatiskt att ärvas av underkapitel och sidor, såvida de inte har sina egna rättigheter definierade.',
+ 'permissions_chapter_cascade' => 'Rättigheter som sätts på kapitel kommer automatiskt att ärvas av underliggande sidor, såvida de inte har sina egna rättigheter definierade.',
+ 'permissions_save' => 'Spara rättigheter',
+ 'permissions_owner' => 'Ägare',
+ 'permissions_role_everyone_else' => 'Alla andra',
+ 'permissions_role_everyone_else_desc' => 'Ställ in rättigheter för alla roller som inte uttryckligen har åsidosatts.',
+ 'permissions_role_override' => 'Åsidosätt rättigheter för roll',
+ 'permissions_inherit_defaults' => 'Ärv standardrättigheter',
+
+ // Search
+ 'search_results' => 'Sökresultat',
+ 'search_total_results_found' => ':count resultat|:count resultat',
+ 'search_clear' => 'Rensa sökning',
+ 'search_no_pages' => 'Inga sidor matchade sökningen',
+ 'search_for_term' => 'Sök efter :term',
+ 'search_more' => 'Fler resultat',
+ 'search_advanced' => 'Avancerad sök',
+ 'search_terms' => 'Söktermer',
+ 'search_content_type' => 'Innehållstyp',
+ 'search_exact_matches' => 'Exakta matchningar',
+ 'search_tags' => 'Taggar',
+ 'search_options' => 'Alternativ',
+ 'search_viewed_by_me' => 'Visade av mig',
+ 'search_not_viewed_by_me' => 'Ej visade av mig',
+ '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' => 'Ägs av mig',
+ 'search_date_options' => 'Datumalternativ',
+ 'search_updated_before' => 'Uppdaterade före',
+ 'search_updated_after' => 'Uppdaterade efter',
+ 'search_created_before' => 'Skapade före',
+ 'search_created_after' => 'Skapade efter',
+ 'search_set_date' => 'Ange datum',
+ 'search_update' => 'Uppdatera sökning',
+
+ // Shelves
+ 'shelf' => 'Hylla',
+ 'shelves' => 'Hyllor',
+ 'x_shelves' => ':count hylla|:count hyllor',
+ 'shelves_empty' => 'Du har inte skapat någon hylla',
+ 'shelves_create' => 'Skapa ny hylla',
+ 'shelves_popular' => 'Populära hyllor',
+ 'shelves_new' => 'Nya hyllor',
+ 'shelves_new_action' => 'Ny hylla',
+ 'shelves_popular_empty' => 'De populäraste hyllorna kommer hamna här',
+ 'shelves_new_empty' => 'De senast skapade hyllorna kommer hamna här',
+ 'shelves_save' => 'Spara hylla',
+ 'shelves_books' => 'Böcker i denna hylla',
+ 'shelves_add_books' => 'Lägg till böcker till hyllan',
+ 'shelves_drag_books' => 'Drag böckerna nedan för att lägga till dem i den här hyllan',
+ 'shelves_empty_contents' => 'Denna hylla har inga böcker än',
+ 'shelves_edit_and_assign' => 'Redigera hyllan för att lägga till böcker',
+ 'shelves_edit_named' => 'Redigera hyllan :name',
+ 'shelves_edit' => 'Redigera hylla',
+ 'shelves_delete' => 'Ta bort hylla',
+ 'shelves_delete_named' => 'Ta bort hyllan :name',
+ 'shelves_delete_explain' => "Detta kommer att ta bort hyllan med namnet ':name'. Böcker i hyllan kommer inte tas bort.",
+ 'shelves_delete_confirmation' => 'Är du säker på att du vill ta bort den här hyllan?',
+ 'shelves_permissions' => 'Rättigheter för hylla',
+ 'shelves_permissions_updated' => 'Rättigheter för hylla uppdaterades',
+ 'shelves_permissions_active' => 'Rättigheter för hylla aktiverade',
+ 'shelves_permissions_cascade_warning' => 'Rättigheter för hyllor ärvs inte automatiskt ner till böckerna i hyllorna. Detta beror på att en bok kan finnas från flera hyllor. Rättigheter kan däremot kopieras ner till en bok i hyllan med hjälp av alternativet nedan.',
+ 'shelves_permissions_create' => 'Behörigheter för att skapa hyllor används endast för att kopiera behörigheter till underliggande böcker via åtgärden nedan. De styr inte möjligheten att skapa böcker.',
+ 'shelves_copy_permissions_to_books' => 'Kopiera rättigheter till böcker',
+ 'shelves_copy_permissions' => 'Kopiera rättigheter',
+ 'shelves_copy_permissions_explain' => 'Detta kommer att tillämpa rättigheterna från den här hyllan på alla böcker den innehåller. Se till att eventuella ändringar sparats innan tillämpningen genomförs.',
+ 'shelves_copy_permission_success' => 'Rättigheter för hyllan kopierades till :count böcker',
+
+ // Books
+ 'book' => 'Bok',
+ 'books' => 'Böcker',
+ 'x_books' => ':count bok|:count böcker',
+ 'books_empty' => 'Inga böcker har skapats',
+ 'books_popular' => 'Populära böcker',
+ 'books_recent' => 'Nya böcker',
+ 'books_new' => 'Nya böcker',
+ 'books_new_action' => 'Ny bok',
+ 'books_popular_empty' => 'De mest populära böckerna kommer att visas här.',
+ 'books_new_empty' => 'De senaste böckerna som skapats kommer att visas här.',
+ 'books_create' => 'Skapa ny bok',
+ 'books_delete' => 'Ta bort bok',
+ 'books_delete_named' => 'Ta bort boken :bookName',
+ 'books_delete_explain' => 'Du håller på att ta bort boken \':bookName\'. Alla sidor och kapitel kommer också att tas bort.',
+ 'books_delete_confirmation' => 'Är du säker på att du vill ta bort boken?',
+ 'books_edit' => 'Redigera bok',
+ 'books_edit_named' => 'Redigera bok :bookName',
+ 'books_form_book_name' => 'Bokens namn',
+ 'books_save' => 'Spara bok',
+ 'books_permissions' => 'Rättigheter för boken',
+ 'books_permissions_updated' => 'Bokens rättigheter har uppdaterats',
+ 'books_empty_contents' => 'Det finns inga sidor eller kapitel i den här boken.',
+ 'books_empty_create_page' => 'Skapa en ny sida',
+ 'books_empty_sort_current_book' => 'Sortera aktuell bok',
+ 'books_empty_add_chapter' => 'Lägg till kapitel',
+ 'books_permissions_active' => 'Anpassade rättigheter är i bruk',
+ 'books_search_this' => 'Sök i boken',
+ 'books_navigation' => 'Navigering',
+ 'books_sort' => 'Sortera bokens innehåll',
+ 'books_sort_desc' => 'Flytta kapitel och sidor inom en bok för att omorganisera dess innehåll. Andra böcker kan läggas till, vilket gör det enkelt att flytta kapitel och sidor mellan böcker. Du kan även ställa in en regel som automatiskt sorterar bokens innehåll vid ändringar.',
+ 'books_sort_auto_sort' => 'Automatiskt sorteringsalternativ',
+ 'books_sort_auto_sort_active' => 'Aktiv automatisk sorteringsregel: :sortName',
+ 'books_sort_named' => 'Sortera boken :bookName',
+ 'books_sort_name' => 'Sortera utifrån namn',
+ 'books_sort_created' => 'Sortera utifrån skapelse',
+ 'books_sort_updated' => 'Sortera utifrån uppdatering',
+ 'books_sort_chapters_first' => 'Kapitel först',
+ 'books_sort_chapters_last' => 'Kapitel sist',
+ 'books_sort_show_other' => 'Visa andra böcker',
+ 'books_sort_save' => 'Spara ordning',
+ 'books_sort_show_other_desc' => 'Lägg till andra böcker här för att inkludera dem i sorteringsåtgärden och möjliggöra enkel omorganisering mellan böcker.',
+ 'books_sort_move_up' => 'Flytta upp',
+ 'books_sort_move_down' => 'Flytta ned',
+ 'books_sort_move_prev_book' => 'Gå till förgående bok',
+ 'books_sort_move_next_book' => 'Gå till nästa bok',
+ 'books_sort_move_prev_chapter' => 'Gå till förgående kapitel',
+ 'books_sort_move_next_chapter' => 'Gå till nästa kapitel',
+ 'books_sort_move_book_start' => 'Gå till början av boken',
+ 'books_sort_move_book_end' => 'Gå till slutet av boken',
+ 'books_sort_move_before_chapter' => 'Gå till innan kapitlet',
+ 'books_sort_move_after_chapter' => 'Gå till efter kapitlet',
+ 'books_copy' => 'Kopiera bok',
+ 'books_copy_success' => 'Boken har kopierats',
+
+ // Chapters
+ 'chapter' => 'Kapitel',
+ 'chapters' => 'Kapitel',
+ 'x_chapters' => ':count kapitel|:count kapitel',
+ 'chapters_popular' => 'Populära kapitel',
+ 'chapters_new' => 'Nytt kapitel',
+ 'chapters_create' => 'Skapa nytt kapitel',
+ 'chapters_delete' => 'Radera kapitel',
+ 'chapters_delete_named' => 'Radera kapitlet :chapterName',
+ 'chapters_delete_explain' => 'Detta kommer att ta bort kapitlet med namnet \':chapterName\'. Alla sidor som finns inom detta kapitel kommer också att raderas.',
+ 'chapters_delete_confirm' => 'Är du säker på att du vill ta bort det här kapitlet?',
+ 'chapters_edit' => 'Redigera kapitel',
+ 'chapters_edit_named' => 'Redigera kapitel :chapterName',
+ 'chapters_save' => 'Spara kapitel',
+ 'chapters_move' => 'Flytta kapitel',
+ 'chapters_move_named' => 'Flytta kapitel :chapterName',
+ 'chapters_copy' => 'Kopiera kapitel',
+ 'chapters_copy_success' => 'Kapitel har kopierats',
+ 'chapters_permissions' => 'Rättigheter för kapitel',
+ 'chapters_empty' => 'Det finns inga sidor i det här kapitlet.',
+ 'chapters_permissions_active' => 'Anpassade rättigheter är i bruk',
+ 'chapters_permissions_success' => 'Rättigheterna för kapitlet har uppdaterats',
+ 'chapters_search_this' => 'Sök i detta kapitel',
+ 'chapter_sort_book' => 'Sortera bok',
+
+ // Pages
+ 'page' => 'Sida',
+ 'pages' => 'Sidor',
+ 'x_pages' => ':count sida|:count sidor',
+ 'pages_popular' => 'Populära sidor',
+ 'pages_new' => 'Ny sida',
+ 'pages_attachments' => 'Bilagor',
+ 'pages_navigation' => 'Navigering',
+ 'pages_delete' => 'Ta bort sida',
+ 'pages_delete_named' => 'Ta bort sidan :pageName',
+ 'pages_delete_draft_named' => 'Ta bort utkastet :pageName',
+ 'pages_delete_draft' => 'Ta bort utkast',
+ 'pages_delete_success' => 'Sidan har tagits bort',
+ 'pages_delete_draft_success' => 'Utkastet har tagits bort',
+ 'pages_delete_warning_template' => 'Denna sida används för närvarande som standardsidmall för en bok eller ett kapitel. Dessa böcker eller kapitel kommer inte längre ha någon tilldelad standardsidmall om sidan tas bort.',
+ 'pages_delete_confirm' => 'Är du säker på att du vill ta bort den här sidan?',
+ 'pages_delete_draft_confirm' => 'Är du säker på att du vill ta bort det här utkastet?',
+ 'pages_editing_named' => 'Redigerar sida :pageName',
+ 'pages_edit_draft_options' => 'Inställningar för utkast',
+ 'pages_edit_save_draft' => 'Spara utkast',
+ 'pages_edit_draft' => 'Redigera utkast',
+ 'pages_editing_draft' => 'Redigerar utkast',
+ 'pages_editing_page' => 'Redigerar sida',
+ 'pages_edit_draft_save_at' => 'Utkastet sparades ',
+ 'pages_edit_delete_draft' => 'Ta bort utkast',
+ 'pages_edit_delete_draft_confirm' => 'Är du säker på att du vill ta bort dina utkaständringar? Alla ändringar du gjort sedan den senaste fullständiga sparningen kommer att gå förlorade, och redigeraren kommer att uppdateras med det senaste icke-utkastet av sidan.',
+ 'pages_edit_discard_draft' => 'Ta bort utkastet',
+ 'pages_edit_switch_to_markdown' => 'Växla till Markdown-redigerare',
+ 'pages_edit_switch_to_markdown_clean' => '(Rent innehåll)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stabilt innehåll)',
+ 'pages_edit_switch_to_wysiwyg' => 'Växla till WYSIWYG-redigerare',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Växla till ny WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Beskriv dina ändringar',
+ 'pages_edit_enter_changelog_desc' => 'Ange en kort beskrivning av de ändringar du har gjort',
+ 'pages_edit_enter_changelog' => 'Ändringslogg',
+ 'pages_editor_switch_title' => 'Växla redigerare',
+ 'pages_editor_switch_are_you_sure' => 'Är du säker på att du vill ändra redigerare för denna sida?',
+ 'pages_editor_switch_consider_following' => 'Tänk på följande när du byter redigerare:',
+ 'pages_editor_switch_consideration_a' => 'När du har sparat kommer den nya redigeraren att användas vid alla framtida redigeringar, inklusive de som kanske inte själva kan ändra redigerare.',
+ 'pages_editor_switch_consideration_b' => 'Detta kan potentiellt leda till förlust av detaljer och syntax under vissa omständigheter.',
+ 'pages_editor_switch_consideration_c' => 'Osparade ändringar av taggar eller ändringsloggar kommer att gå förlorade.',
+ 'pages_save' => 'Spara sida',
+ 'pages_title' => 'Sidtitel',
+ 'pages_name' => 'Sidans namn',
+ 'pages_md_editor' => 'Redigerare',
+ 'pages_md_preview' => 'Förhandsvisa',
+ 'pages_md_insert_image' => 'Infoga bild',
+ 'pages_md_insert_link' => 'Infoga länk',
+ 'pages_md_insert_drawing' => 'Infoga teckning',
+ 'pages_md_show_preview' => 'Visa förhandsgranskning',
+ 'pages_md_sync_scroll' => 'Sync preview scroll',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Osparad ritning hittades',
+ 'pages_drawing_unsaved_confirm' => 'Osparade ritningsdata hittades från ett tidigare misslyckat sparförsök. Vill du återställa och fortsätta redigera den osparade ritningen?',
+ 'pages_not_in_chapter' => 'Sidan ligger inte i något kapitel',
+ 'pages_move' => 'Flytta sida',
+ 'pages_copy' => 'Kopiera sida',
+ 'pages_copy_desination' => 'Destination',
+ 'pages_copy_success' => 'Sidan har kopierats',
+ 'pages_permissions' => 'Rättigheter för sida',
+ 'pages_permissions_success' => 'Rättigheterna för sidan har uppdaterats',
+ 'pages_revision' => 'Revidering',
+ 'pages_revisions' => 'Sidrevisioner',
+ 'pages_revisions_desc' => 'Nedan listas alla tidigare versioner av denna sida. Du kan granska, jämföra och återställa äldre versioner om du har behörighet. Den fullständiga versionshistoriken kanske inte visas i sin helhet här, eftersom äldre versioner kan ha raderats automatiskt beroende på systemets konfiguration.',
+ 'pages_revisions_named' => 'Sidrevisioner för :pageName',
+ 'pages_revision_named' => 'Sidrevision för :pageName',
+ 'pages_revision_restored_from' => 'Återställd från #:id; :summary',
+ 'pages_revisions_created_by' => 'Skapad av',
+ 'pages_revisions_date' => 'Revisionsdatum',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revisionsnummer',
+ 'pages_revisions_numbered' => 'Revisions #:id',
+ 'pages_revisions_numbered_changes' => 'Revision #:id ändringar',
+ 'pages_revisions_editor' => 'Typ av redigerare',
+ 'pages_revisions_changelog' => 'Ändringslogg',
+ 'pages_revisions_changes' => 'Ändringar',
+ 'pages_revisions_current' => 'Nuvarande version',
+ 'pages_revisions_preview' => 'Förhandsgranska',
+ 'pages_revisions_restore' => 'Återställ',
+ 'pages_revisions_none' => 'Sidan har inga revisioner',
+ 'pages_copy_link' => 'Kopiera länk',
+ 'pages_edit_content_link' => 'Hoppa till sektionen i redigeraren',
+ 'pages_pointer_enter_mode' => 'Ange markeringsläge för sektion',
+ 'pages_pointer_label' => 'Alternativ för sidsektion',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Anpassade rättigheter är i bruk',
+ 'pages_initial_revision' => 'Första publicering',
+ 'pages_references_update_revision' => 'Automatisk uppdatering av interna länkar',
+ 'pages_initial_name' => 'Ny sida',
+ 'pages_editing_draft_notification' => 'Du redigerar just nu ett utkast som senast sparades :timeDiff.',
+ 'pages_draft_edited_notification' => 'Denna sida har uppdaterats sen dess. Vi rekommenderar att du förkastar dina ändringar.',
+ 'pages_draft_page_changed_since_creation' => 'Denna sida har uppdaterats sedan detta utkast skapades. Det rekommenderas att du slänger detta utkast eller försäkrar att du inte skriver över några sidändringar.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count har börjat redigera den här sidan',
+ 'start_b' => ':userName har börjat redigera den här sidan',
+ 'time_a' => 'sedan sidan senast uppdaterades',
+ 'time_b' => 'under de senaste :minCount minuterna',
+ 'message' => ':start :time. Var försiktiga så att ni inte skriver över varandras ändringar!',
+ ],
+ 'pages_draft_discarded' => 'Utkastet har tagits bort. Redigeringsverktyget har uppdaterats med aktuellt sidinnehåll',
+ 'pages_draft_deleted' => 'Utkastet har raderats. Redigeringsverktyget har uppdaterats med aktuellt sidinnehåll',
+ 'pages_specific' => 'Specifik sida',
+ 'pages_is_template' => 'Sidmall',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Visa/Dölj sidopanel',
+ 'page_tags' => 'Sidtaggar',
+ 'chapter_tags' => 'Kapiteltaggar',
+ 'book_tags' => 'Boktaggar',
+ 'shelf_tags' => 'Hylltaggar',
+ 'tag' => 'Tagg',
+ 'tags' => 'Taggar',
+ 'tags_index_desc' => 'Taggar kan användas på innehåll inom systemet för att skapa en flexibel form av kategorisering. Taggar kan ha både en nyckel och ett värde, där värdet är valfritt. När en tagg har tilldelats kan innehållet sökas fram med hjälp av taggens namn och värde.',
+ 'tag_name' => 'Etikettnamn',
+ 'tag_value' => 'Taggvärde (Frivilligt)',
+ 'tags_explain' => "Lägg till taggar för att kategorisera ditt innehåll bättre. \n Du kan tilldela ett värde till en tagg för ännu bättre organisering.",
+ 'tags_add' => 'Lägg till ännu en tagg',
+ 'tags_remove' => 'Ta bort denna etikett',
+ 'tags_usages' => 'Totalt antal taggar',
+ 'tags_assigned_pages' => 'Tilldelad till sidor',
+ 'tags_assigned_chapters' => 'Tilldelad till kapitel',
+ 'tags_assigned_books' => 'Tilldelad till böcker',
+ 'tags_assigned_shelves' => 'Tilldelad till hyllor',
+ 'tags_x_unique_values' => ':count unika värden',
+ 'tags_all_values' => 'Alla värden',
+ 'tags_view_tags' => 'Visa taggar',
+ 'tags_view_existing_tags' => 'Visa befintliga taggar',
+ 'tags_list_empty_hint' => 'Taggar kan tilldelas via sideditorns sidofält eller medan du redigerar detaljerna i en bok, kapitel eller hylla.',
+ 'attachments' => 'Bilagor',
+ 'attachments_explain' => 'Ladda upp filer eller bifoga länkar till ditt innehåll. Dessa visas i sidokolumnen.',
+ 'attachments_explain_instant_save' => 'Ändringar här sparas omgående.',
+ 'attachments_upload' => 'Ladda upp fil',
+ 'attachments_link' => 'Bifoga länk',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'Ange länk',
+ 'attachments_delete' => 'Är du säker på att du vill ta bort bilagan?',
+ 'attachments_dropzone' => 'Släpp filer här för uppladdning',
+ 'attachments_no_files' => 'Inga filer har laddats upp',
+ 'attachments_explain_link' => 'Du kan bifoga en länk om du inte vill ladda upp en fil. Detta kan vara en länk till en annan sida eller till en fil i molnet.',
+ 'attachments_link_name' => 'Länknamn',
+ 'attachment_link' => 'Länk till bilaga',
+ 'attachments_link_url' => 'Länk till fil',
+ 'attachments_link_url_hint' => 'URL till sida eller fil',
+ 'attach' => 'Bifoga',
+ 'attachments_insert_link' => 'Lägg till bilagelänk till sida',
+ 'attachments_edit_file' => 'Redigera fil',
+ 'attachments_edit_file_name' => 'Filnamn',
+ 'attachments_edit_drop_upload' => 'Släpp filer här eller klicka för att ladda upp och skriva över',
+ 'attachments_order_updated' => 'Ordningen på bilagorna har uppdaterats',
+ 'attachments_updated_success' => 'Bilagan har uppdaterats',
+ 'attachments_deleted' => 'Bilagan har tagits bort',
+ 'attachments_file_uploaded' => 'Filen har laddats upp',
+ 'attachments_file_updated' => 'Filen har uppdaterats',
+ 'attachments_link_attached' => 'Länken har bifogats till sidan',
+ 'templates' => 'Mallar',
+ 'templates_set_as_template' => 'Sidan är en mall',
+ 'templates_explain_set_as_template' => 'Du kan använda denna sida som en mall så att dess innehåll kan användas när du skapar andra sidor. Andra användare kommer att kunna använda denna mall om de har visningsrättigheter för den här sidan.',
+ 'templates_replace_content' => 'Ersätt sidinnehåll',
+ 'templates_append_content' => 'Lägg till till sidans innehåll',
+ 'templates_prepend_content' => 'Lägg till före sidans innehåll',
+
+ // Profile View
+ 'profile_user_for_x' => 'Användare i :time',
+ 'profile_created_content' => 'Skapat innehåll',
+ 'profile_not_created_pages' => ':userName har inte skapat några sidor',
+ 'profile_not_created_chapters' => ':userName har inte skapat några kapitel',
+ 'profile_not_created_books' => ':userName har inte skapat några böcker',
+ 'profile_not_created_shelves' => ':userName har inte skapat några hyllor',
+
+ // Comments
+ 'comment' => 'Kommentar',
+ 'comments' => 'Kommentarer',
+ 'comment_add' => 'Lägg till kommentar',
+ 'comment_none' => 'Inga kommentarer att visa',
+ 'comment_placeholder' => 'Lämna en kommentar här',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Spara kommentar',
+ 'comment_new' => 'Ny kommentar',
+ 'comment_created' => 'kommenterade :createDiff',
+ 'comment_updated' => 'Uppdaterade :updateDiff av :username',
+ 'comment_updated_indicator' => 'Uppdaterad',
+ 'comment_deleted_success' => 'Kommentar borttagen',
+ 'comment_created_success' => 'Kommentaren har sparats',
+ 'comment_updated_success' => 'Kommentaren har uppdaterats',
+ 'comment_archive_success' => 'Arkivera kommentar',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'Visa kommentar',
+ 'comment_jump_to_thread' => 'Hoppa till tråd',
+ 'comment_delete_confirm' => 'Är du säker på att du vill ta bort den här kommentaren?',
+ 'comment_in_reply_to' => 'Som svar på :commentId',
+ 'comment_reference' => 'Referens',
+ 'comment_reference_outdated' => '(Utdaterad)',
+ 'comment_editor_explain' => 'Här är kommentarer som lämnats på denna sida. Kommentarer kan läggas till och hanteras när den sparade sidan visas.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Är du säker på att du vill radera den här versionen?',
+ 'revision_restore_confirm' => 'Är du säker på att du vill använda denna revision? Det nuvarande innehållet kommer att ersättas.',
+ 'revision_cannot_delete_latest' => 'Det går inte att ta bort den senaste versionen.',
+
+ // Copy view
+ 'copy_consider' => 'Tänk på nedan när du kopierar innehåll.',
+ 'copy_consider_permissions' => 'Anpassade behörighetsinställningar kommer inte att kopieras.',
+ 'copy_consider_owner' => 'Du kommer att bli ägare till allt kopierat innehåll.',
+ 'copy_consider_images' => 'Bildfiler för sidan kommer inte att dupliceras och de ursprungliga bilderna kommer att behålla sin relation till den sida de ursprungligen laddades upp till.',
+ 'copy_consider_attachments' => 'Sidans bifogade filer kommer inte att kopieras.',
+ 'copy_consider_access' => 'Ändring av plats, ägare eller behörigheter kan leda till att detta innehåll blir tillgängligt för dem som tidigare inte haft åtkomst.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Konvertera till hylla',
+ 'convert_to_shelf_contents_desc' => 'Du kan konvertera denna bok till en ny hylla med samma innehåll. Kapitlen inom denna bok konverteras till nya böcker. Om denna bok innehåller sidor som inte är i ett kapitel så kommer denna bok att döpas om och innehålla dessa sidor. Denna bok blir då en del av den nya hyllan.',
+ 'convert_to_shelf_permissions_desc' => 'Alla behörigheter som ställs in på denna bok kommer att kopieras till den nya hyllan och till alla nya underböcker som inte har egna behörigheter applicerade. Observera att behörigheter på hyllor inte automatisk ärvs av innehåll inom hyllan, så som med böcker.',
+ 'convert_book' => 'Konvertera bok',
+ 'convert_book_confirm' => 'Är du säker på att du vill konvertera boken?',
+ 'convert_undo_warning' => 'Detta kan inte ångras lika lätt.',
+ 'convert_to_book' => 'Konvertera till bok',
+ 'convert_to_book_desc' => 'Du kan konvertera detta kapitel till en ny bok med samma innehåll. Eventuella behörigheter som angetts på detta kapitel kommer att kopieras till den nya boken men ärvda behörigheter från föräldraboken kommer inte att kopieras vilket kan leda till skillnader i åtkomsten.',
+ 'convert_chapter' => 'Konvertera kapitel',
+ 'convert_chapter_confirm' => 'Är du säker på att du vill konvertera det här kapitlet?',
+
+ // References
+ 'references' => 'Referenser',
+ 'references_none' => 'Det finns inga referenser kopplade till detta objekt.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Följ',
+ 'watch_title_default' => 'Standardinställningar',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignorera',
+ 'watch_desc_ignore' => 'Ignorera samtliga meddelanden, även sådana som styrs av användarens egna inställningar.',
+ 'watch_title_new' => 'Nya sidor',
+ 'watch_desc_new' => 'Meddela när en ny sida skapas inom detta objekt.',
+ 'watch_title_updates' => 'Alla siduppdateringar',
+ 'watch_desc_updates' => 'Meddela vid alla nya sidor och siduppdateringar.',
+ 'watch_desc_updates_page' => 'Meddela alla siduppdateringar.',
+ 'watch_title_comments' => 'All Page Updates & Comments',
+ 'watch_desc_comments' => 'Meddela vid alla nya sidor, siduppdateringar och nya kommentarer.',
+ 'watch_desc_comments_page' => 'Meddela vid siduppdateringar och nya kommentarer.',
+ 'watch_change_default' => 'Ändra standardinställningar för meddelanden',
+ 'watch_detail_ignore' => 'Ignorera meddelanden',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/sv/errors.php b/lang/sv/errors.php
new file mode 100644
index 00000000000..0548f96fd25
--- /dev/null
+++ b/lang/sv/errors.php
@@ -0,0 +1,135 @@
+ 'Du har inte tillgång till den här sidan.',
+ 'permissionJson' => 'Du har inte rätt att utföra den här åtgärden.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'En användare med adressen :email finns redan.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'E-posten har redan bekräftats, prova att logga in.',
+ 'email_confirmation_invalid' => 'Denna bekräftelsekod är inte giltig eller har redan använts. Vänligen prova att registrera dig på nytt.',
+ 'email_confirmation_expired' => 'Denna bekräftelsekod har gått ut. Vi har skickat dig en ny.',
+ 'email_confirmation_awaiting' => 'E-postadressen för det konto som används måste bekräftas',
+ 'ldap_fail_anonymous' => 'LDAP-inloggning misslyckades med anonym bindning',
+ 'ldap_fail_authed' => 'LDAP-inloggning misslyckades med angivna dn- och lösenordsuppgifter',
+ 'ldap_extension_not_installed' => 'LDAP PHP-tillägg inte installerat',
+ 'ldap_cannot_connect' => 'Kan inte ansluta till ldap-servern. Anslutningen misslyckades',
+ 'saml_already_logged_in' => 'Redan inloggad',
+ 'saml_no_email_address' => 'Kunde inte hitta en e-postadress för den här användaren i data som tillhandahålls av det externa autentiseringssystemet',
+ 'saml_invalid_response_id' => 'En begäran från det externa autentiseringssystemet känns inte igen av en process som startats av denna applikation. Att navigera bakåt efter en inloggning kan orsaka detta problem.',
+ 'saml_fail_authed' => 'Inloggning med :system misslyckades, systemet godkände inte auktoriseringen',
+ 'oidc_already_logged_in' => 'Redan inloggad',
+ 'oidc_no_email_address' => 'Kunde inte hitta en e-postadress för den här användaren i den data som tillhandahölls av det externa autentiseringssystemet',
+ 'oidc_fail_authed' => 'Inloggning med :system misslyckades, systemet presenterade inte en godkänd auktorisering',
+ 'social_no_action_defined' => 'Ingen åtgärd definierad',
+ 'social_login_bad_response' => "Ett fel inträffade vid inloggning genom :socialAccount: \n:error",
+ 'social_account_in_use' => 'Detta konto från :socialAccount används redan. Testa att logga in med :socialAccount istället.',
+ 'social_account_email_in_use' => 'E-posten :email används redan. Om du redan har ett konto kan du ansluta ditt konto från :socialAccount via dina profilinställningar.',
+ 'social_account_existing' => 'Detta konto från :socialAccount är redan länkat till din profil.',
+ 'social_account_already_used_existing' => 'Detta konto från :socialAccount används redan av en annan användare.',
+ 'social_account_not_used' => 'Detta konto från :socialAccount är inte länkat till någon användare. Vänligen anslut via dina profilinställningar. ',
+ 'social_account_register_instructions' => 'Om du inte har något konto ännu kan du registerar dig genom att välja :socialAccount.',
+ 'social_driver_not_found' => 'Drivrutinen för den här tjänsten hittades inte',
+ 'social_driver_not_configured' => 'Dina inställningar för :socialAccount är inte korrekta.',
+ 'invite_token_expired' => 'Denna inbjudningslänk har löpt ut. Du kan istället försöka återställa ditt kontos lösenord.',
+ 'login_user_not_found' => 'En användare för denna åtgärd kunde inte hittas.',
+
+ // System
+ 'path_not_writable' => 'Kunde inte ladda upp till sökvägen :filePath. Kontrollera att webbservern har skrivåtkomst.',
+ 'cannot_get_image_from_url' => 'Kan inte hämta bild från :url',
+ 'cannot_create_thumbs' => 'Servern kan inte skapa miniatyrer. Kontrollera att du har PHPs GD-tillägg aktiverat.',
+ 'server_upload_limit' => 'Servern tillåter inte så här stora filer. Prova en mindre fil.',
+ 'server_post_limit' => 'Servern kan inte ta emot den angivna mängden data. Försök igen med mindre data eller en mindre fil.',
+ 'uploaded' => 'Servern tillåter inte så här stora filer. Prova en mindre fil.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Ett fel inträffade vid uppladdningen',
+ 'image_upload_type_error' => 'Filtypen du försöker ladda upp är ogiltig',
+ 'image_upload_replace_type' => 'Bilder som skall ersättas måste vara av samma filtyp',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Misslyckades att skapa galleriminiatyrer på grund av otillräckliga systemresurser.',
+ 'drawing_data_not_found' => 'Drawing data could not be loaded. The drawing file might no longer exist or you may not have permission to access it.',
+
+ // Attachments
+ 'attachment_not_found' => 'Bilagan hittades ej',
+ 'attachment_upload_error' => 'An error occurred uploading the attachment file',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Kunde inte spara utkastet. Kontrollera att du är ansluten till internet.',
+ 'page_draft_delete_fail' => 'Failed to delete page draft and fetch current page saved content',
+ 'page_custom_home_deletion' => 'Det går inte att ta bort sidan medan den används som startsida',
+
+ // Entities
+ 'entity_not_found' => 'Innehållet hittades inte',
+ 'bookshelf_not_found' => 'Hyllan hittades inte',
+ 'book_not_found' => 'Boken hittades inte',
+ 'page_not_found' => 'Sidan hittades inte',
+ 'chapter_not_found' => 'Kapitlet hittades inte',
+ 'selected_book_not_found' => 'Den valda boken hittades inte',
+ 'selected_book_chapter_not_found' => 'Den valda boken eller kapitlet hittades inte',
+ 'guests_cannot_save_drafts' => 'Gäster kan inte spara utkast',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Du kan inte ta bort den enda admin-användaren',
+ 'users_cannot_delete_guest' => 'Du kan inte ta bort gästanvändaren',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Den här rollen kan inte redigeras',
+ 'role_system_cannot_be_deleted' => 'Det här är en systemroll och kan därför inte tas bort',
+ 'role_registration_default_cannot_delete' => 'Det går inte att ta bort rollen medan den används som standardroll.',
+ 'role_cannot_remove_only_admin' => 'Detta är den enda användaren med administratörsroll. Gör någon annan användare till administratör innan du tar bort denna.',
+
+ // Comments
+ 'comment_list' => 'Ett fel inträffade då kommentarer skulle hämtas.',
+ 'cannot_add_comment_to_draft' => 'Du kan inte kommentera ett utkast.',
+ 'comment_add' => 'Ett fel inträffade då kommentaren skulle sparas.',
+ 'comment_delete' => 'Ett fel inträffade då kommentaren skulle tas bort.',
+ 'empty_comment' => 'Kan inte lägga till en tom kommentar.',
+
+ // Error pages
+ '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' => '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',
+ 'back_soon' => 'Vi är snart tillbaka.',
+
+ // Import
+ 'import_zip_cant_read' => 'Kunde inte läsa ZIP-filen.',
+ 'import_zip_cant_decode_data' => 'Kunde inte hitta och avkoda ZIP data.json innehåll.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'ZIP-filen kunde inte valideras med fel:',
+ 'import_zip_failed_notification' => 'Det gick inte att importera ZIP-fil.',
+ 'import_perms_books' => 'Du saknar behörighet att skapa böcker.',
+ 'import_perms_chapters' => 'Du saknar behörighet att skapa kapitel.',
+ 'import_perms_pages' => 'Du saknar behörighet att skapa sidor.',
+ 'import_perms_images' => 'Du saknar behörighet för att skapa bilder.',
+ 'import_perms_attachments' => 'Du saknar behörighet att skapa bilagor.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Ingen auktoriseringstoken hittades på denna begäran',
+ 'api_bad_authorization_format' => 'En auktoriseringstoken hittades på denna begäran men formatet verkade felaktigt',
+ 'api_user_token_not_found' => 'Ingen matchande API-token hittades för den angivna auktoriseringstoken',
+ 'api_incorrect_token_secret' => 'Hemligheten för den angivna API-token är felaktig',
+ 'api_user_no_api_permission' => 'Ägaren av den använda API-token har inte behörighet att göra API-anrop',
+ 'api_user_token_expired' => 'Den använda auktoriseringstoken har löpt ut',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Ett fel uppstod när ett test mail skulle skickas:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'URL matchar inte de konfigurerade tillåtna SSR-värdarna',
+];
diff --git a/lang/sv/notifications.php b/lang/sv/notifications.php
new file mode 100644
index 00000000000..19933c049cb
--- /dev/null
+++ b/lang/sv/notifications.php
@@ -0,0 +1,29 @@
+ 'Ny kommentar på sidan: :pageName',
+ 'new_comment_intro' => 'En användare har kommenterat en sida i :appName:',
+ 'new_page_subject' => 'Ny sida: :pageName',
+ 'new_page_intro' => 'En ny sida har blivit skapad i :appName:',
+ 'updated_page_subject' => 'Uppdaterad sida: :pageName',
+ 'updated_page_intro' => 'En sida har blivit uppdaterad i :appName:',
+ 'updated_page_debounce' => 'För att förhindra en massa notiser, så kommer det inte skickas nya notiser på ett tag för ytterligare ändringar till denna sida av samma skribent.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Sidonamn:',
+ 'detail_page_path' => 'Sidosökväg:',
+ 'detail_commenter' => 'Kommentars-skapare:',
+ 'detail_comment' => 'Kommentar:',
+ 'detail_created_by' => 'Skapad av:',
+ 'detail_updated_by' => 'Uppdaterad av:',
+
+ 'action_view_comment' => 'Visa kommentar',
+ 'action_view_page' => 'Visa sida',
+
+ 'footer_reason' => 'Detta meddelande skickades till dig eftersom :link täcker denna typ av aktivitet för detta objekt.',
+ 'footer_reason_link' => 'dina notifikationspreferenser',
+];
diff --git a/resources/lang/sv/pagination.php b/lang/sv/pagination.php
similarity index 100%
rename from resources/lang/sv/pagination.php
rename to lang/sv/pagination.php
diff --git a/resources/lang/sv/passwords.php b/lang/sv/passwords.php
similarity index 100%
rename from resources/lang/sv/passwords.php
rename to lang/sv/passwords.php
diff --git a/lang/sv/preferences.php b/lang/sv/preferences.php
new file mode 100644
index 00000000000..7ebf2681350
--- /dev/null
+++ b/lang/sv/preferences.php
@@ -0,0 +1,52 @@
+ 'Mitt Konto',
+
+ 'shortcuts' => 'Genvägar',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Here you can enable or disable keyboard system interface shortcuts, used for navigation and actions.',
+ 'shortcuts_customize_desc' => 'You can customize each of the shortcuts below. Just press your desired key combination after selecting the input for a shortcut.',
+ 'shortcuts_toggle_label' => 'Keyboard shortcuts enabled',
+ 'shortcuts_section_navigation' => 'Navigation',
+ 'shortcuts_section_actions' => 'Common Actions',
+ 'shortcuts_save' => 'Spara genvägar',
+ 'shortcuts_overlay_desc' => 'Note: When shortcuts are enabled a helper overlay is available via pressing "?" which will highlight the available shortcuts for actions currently visible on the screen.',
+ 'shortcuts_update_success' => 'Shortcut preferences have been updated!',
+ 'shortcuts_overview_desc' => 'Manage keyboard shortcuts you can use to navigate the system user interface.',
+
+ 'notifications' => 'Notification Preferences',
+ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.',
+ 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own',
+ 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notify upon replies to my comments',
+ 'notifications_save' => 'Save Preferences',
+ 'notifications_update_success' => 'Notification preferences have been updated!',
+ 'notifications_watched' => 'Watched & Ignored Items',
+ 'notifications_watched_desc' => 'Below are the items that have custom watch preferences applied. To update your preferences for these, view the item then find the watch options in the sidebar.',
+
+ 'auth' => 'Access & Security',
+ 'auth_change_password' => 'Change Password',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Lösenordet har uppdaterats!',
+
+ 'profile' => 'Profildetaljer',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'Visa publik profil',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Radera konto',
+ 'delete_my_account' => 'Radera mitt konto',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/sv/settings.php b/lang/sv/settings.php
new file mode 100644
index 00000000000..773c4bff35e
--- /dev/null
+++ b/lang/sv/settings.php
@@ -0,0 +1,374 @@
+ 'Inställningar',
+ 'settings_save' => 'Spara inställningar',
+ 'system_version' => 'Systemversion',
+ 'categories' => 'Kategorier',
+
+ // App Settings
+ 'app_customization' => 'Sidanpassning',
+ 'app_features_security' => 'Funktioner och säkerhet',
+ 'app_name' => 'Applikationsnamn',
+ 'app_name_desc' => 'Namnet visas i sidhuvdet och i eventuella mail.',
+ 'app_name_header' => 'Visa applikationsnamn i sidhuvudet?',
+ 'app_public_access' => 'Offentlig åtkomst',
+ 'app_public_access_desc' => 'Om du aktiverar detta alternativ låter du icke inloggade besökare komma åt innehåll på din sida',
+ 'app_public_access_desc_guest' => 'Åtkomst för icke inloggade besökare kan styras via användaren "Guest".',
+ 'app_public_access_toggle' => 'Tillåt offentlig åtkomst',
+ 'app_public_viewing' => 'Tillåt publikt innehåll?',
+ 'app_secure_images' => 'Aktivera högre säkerhet för bilduppladdningar?',
+ 'app_secure_images_toggle' => 'Aktivera säkrare bilduppladdningar',
+ 'app_secure_images_desc' => 'Av prestandaskäl är alla bilder publika. Det här alternativet lägger till en slumpmässig, svårgissad sträng framför alla bild-URL:er. Se till att kataloglistning inte är aktivt för att förhindra åtkomst.',
+ 'app_default_editor' => 'Standard-sidredigerare',
+ 'app_default_editor_desc' => 'Välj vilken redigerare som ska användas som standard vid redigering av nya sidor. Detta kan ändras enskilt för sidor som tillåter det.',
+ 'app_custom_html' => 'Anpassat HTML-huvudinnehåll',
+ 'app_custom_html_desc' => 'Innehåll i det här fältet placeras längst ner i -sektionen på varje sida. Detta kan användas för att skriva över stilmallar eller lägga in spårningskoder.',
+ 'app_custom_html_disabled_notice' => 'Anpassat innehåll i HTML-huvudet är inaktiverat på denna inställningssida för att säkerställa att eventuella ändringar som påverkar funktionaliteten kan återställas.',
+ 'app_logo' => 'Applikationslogotyp',
+ 'app_logo_desc' => 'Detta används bland annat i applikationshuvudet. Bilden bör vara 86 pixlar i höjd. Stora bilder skalas ned.',
+ 'app_icon' => 'Applikationsikon',
+ 'app_icon_desc' => 'Den här ikonen syns i webbläsarens flikar, bokmärken och genvägar. Den skall vara 256x256 pixlar i PNG format.',
+ 'app_homepage' => 'Startsida',
+ 'app_homepage_desc' => 'Välj en vy att använda som startsida istället för standardvyn. Behörigheter för valda sidor kommer att ignoreras.',
+ 'app_homepage_select' => 'Välj en sida',
+ '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::" 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.',
+
+ // Color settings
+ 'color_scheme' => 'Programmets färgschema',
+ 'color_scheme_desc' => 'Ställ in de färger som ska användas i applikationens användargränssnitt. Färger kan konfigureras separat för mörka och ljusa lägen för att bäst passa temat och säkerställa läsbarhet.',
+ 'ui_colors_desc' => 'Ange applikationens primära färg och standard färg för länkar. Den primära färgen används främst för huvudrubriken, knappar och gränssnitt dekorationer. Standardfärgen på länken används för textbaserade länkar och åtgärder, både inom skriftligt innehåll och i applikationsgränssnittet.',
+ 'app_color' => 'Primärfärg',
+ 'link_color' => 'Standardfärg för länkar',
+ 'content_colors_desc' => 'Ange färger för alla element i sidans organisationshierarki. Det rekommenderas att välja färger med liknande ljusstyrka som standardfärgerna för att bibehålla läsbarheten.',
+ 'bookshelf_color' => 'Hyllfärg',
+ 'book_color' => 'Bokfärg',
+ 'chapter_color' => 'Kapitelfärg',
+ 'page_color' => 'Sidfärg',
+ 'page_draft_color' => 'Färg på sidutkast',
+
+ // Registration Settings
+ 'reg_settings' => 'Registrering',
+ 'reg_enable' => 'Aktivera registrering',
+ 'reg_enable_toggle' => 'Aktivera registrering',
+ 'reg_enable_desc' => 'När registrering är aktiverad kan användaren själv registrera sig och logga in i applikationen. Vid registrering tilldelas de en förvald användarroll.',
+ 'reg_default_role' => 'Förvald användarroll efter registrering',
+ 'reg_enable_external_warning' => 'Alternativet ovan ignoreras när extern LDAP- eller SAML-autentisering är aktiverad. Användarkonton för icke-existerande medlemmar kommer att skapas automatiskt, om autentisering mot det externa system som används lyckas.',
+ 'reg_email_confirmation' => 'E-postbekräftelse',
+ 'reg_email_confirmation_toggle' => 'Kräv e-postbekräftelse',
+ 'reg_confirm_email_desc' => 'Om domänbegränsning används kommer e-postbekräftelse att krävas och detta alternativ kommer att ignoreras.',
+ 'reg_confirm_restrict_domain' => 'Begränsning av domän',
+ 'reg_confirm_restrict_domain_desc' => 'Ange en kommaseparerad lista över e-postdomäner som du vill begränsa registrering för. Användare kommer att få ett e-postmeddelande för att bekräfta sin e-postadress innan de tillåts att logga in. Notera att användare kommer att kunna ändra sin e-postadress efter lyckad registrering.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Ingen begränsning inställd',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Välj standard sorteringsregel som skall tillämpas på nya böcker. Detta påverkar inte befintliga böcker och kan åsidosättas per bok.',
+ 'sorting_rules' => 'Sorteringsregler',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Tilldelad till :count bok|Tilldelad till :count böcker',
+ 'sort_rule_create' => 'Skapa sorteringsregel',
+ 'sort_rule_edit' => 'Redigera sorteringsregel',
+ 'sort_rule_delete' => 'Ta bort sorteringsregel',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Detaljer för sorteringsregler',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Tillgängliga åtgärder',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Namn - Alfabetisk ordning',
+ 'sort_rule_op_name_numeric' => 'Namn - Numerisk ordning',
+ 'sort_rule_op_created_date' => 'Datum skapat',
+ 'sort_rule_op_updated_date' => 'Datum uppdaterat',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Underhåll',
+ 'maint_image_cleanup' => 'Rensa bilder',
+ 'maint_image_cleanup_desc' => 'Söker igenom innehåll i sidor & revisioner för att se vilka bilder och teckningar som är i bruk och vilka som är överflödiga. Se till att ta en komplett backup av databas och bilder innan du kör detta.',
+ 'maint_delete_images_only_in_revisions' => 'Ta också bort bilder som bara finns i gamla sidrevideringar',
+ 'maint_image_cleanup_run' => 'Kör rensning',
+ 'maint_image_cleanup_warning' => 'Hittade :count bilder som potentiellt inte används. Vill du verkligen ta bort dessa bilder?',
+ 'maint_image_cleanup_success' => 'Hittade och raderade :count bilder som potentiellt inte används!',
+ 'maint_image_cleanup_nothing_found' => 'Hittade inga oanvända bilder, så inget har raderats!',
+ 'maint_send_test_email' => 'Skicka ett testmail',
+ 'maint_send_test_email_desc' => 'Detta skickar ett testmeddelande till den e-postadress som anges i din profil.',
+ 'maint_send_test_email_run' => 'Skicka testmail',
+ 'maint_send_test_email_success' => 'E-post skickat till :address',
+ 'maint_send_test_email_mail_subject' => 'Testmejl',
+ 'maint_send_test_email_mail_greeting' => 'E-postleverans verkar fungera!',
+ 'maint_send_test_email_mail_text' => 'Grattis! Eftersom du fick detta e-postmeddelande verkar dina e-postinställningar vara korrekt konfigurerade.',
+ 'maint_recycle_bin_desc' => 'Borttagna hyllor, böcker, kapitel & sidor skickas till papperskorgen så att de kan återställas eller raderas permanent. Äldre objekt i papperskorgen kan automatiskt tas bort efter ett tag beroende på systemkonfiguration.',
+ 'maint_recycle_bin_open' => 'Öppna papperskorgen',
+ 'maint_regen_references' => 'Regenerera referenser',
+ 'maint_regen_references_desc' => 'Den här åtgärden kommer att bygga om referensindex för kopplade objekt i databasen. Detta hanteras vanligtvis automatiskt, men denna åtgärd kan vara användbar för att indexera gammalt innehåll eller innehåll som lagts till via inofficiella metoder.',
+ 'maint_regen_references_success' => 'Referensindex har regenererats!',
+ 'maint_timeout_command_note' => 'Obs: Denna åtgärd kan ta tid att köra, vilket kan leda till timeoutproblem i vissa webbmiljöer. Som ett alternativ kan denna åtgärd utföras med ett terminalkommando.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Papperskorgen',
+ 'recycle_bin_desc' => 'Här kan du återställa objekt som har tagits bort eller välja att permanent ta bort dem från systemet. Denna lista är ofiltrerad till skillnad från liknande aktivitetslistor i systemet där behörighetsfilter tillämpas.',
+ 'recycle_bin_deleted_item' => 'Raderat objekt',
+ 'recycle_bin_deleted_parent' => 'Överordnad',
+ 'recycle_bin_deleted_by' => 'Borttagen av',
+ 'recycle_bin_deleted_at' => 'Tid för borttagning',
+ 'recycle_bin_permanently_delete' => 'Radera permanent',
+ 'recycle_bin_restore' => 'Återställ',
+ 'recycle_bin_contents_empty' => 'Papperskorgen är för närvarande tom',
+ 'recycle_bin_empty' => 'Töm papperskorgen',
+ 'recycle_bin_empty_confirm' => 'Detta kommer permanent att förstöra alla objekt i papperskorgen inklusive innehåll som finns i varje objekt. Är du säker du vill tömma papperskorgen?',
+ 'recycle_bin_destroy_confirm' => 'This action will permanently delete this item from the system, along with any child elements listed below, and you will not be able to restore this content. Are you sure you want to permanently delete this item?',
+ 'recycle_bin_destroy_list' => 'Objekt som ska förstöras',
+ 'recycle_bin_restore_list' => 'Objekt som ska återställas',
+ 'recycle_bin_restore_confirm' => 'Denna åtgärd kommer att återställa det raderade objektet, inklusive alla underordnade element, till deras ursprungliga plats. Om den ursprungliga platsen har tagits bort sedan dess, och är nu i papperskorgen, kommer det överordnade objektet också att behöva återställas.',
+ 'recycle_bin_restore_deleted_parent' => 'Föräldern till det här objektet har också tagits bort. Dessa kommer att förbli raderade tills den förälder är återställd.',
+ 'recycle_bin_restore_parent' => 'Återställ överordnad',
+ 'recycle_bin_destroy_notification' => 'Raderade :count totala objekt från papperskorgen.',
+ 'recycle_bin_restore_notification' => 'Återställt :count totala objekt från papperskorgen.',
+
+ // Audit Log
+ 'audit' => 'Auditlogg',
+ 'audit_desc' => 'Denna granskningslogg visar en lista över aktiviteter som spåras i systemet. Denna lista är ofiltrerad till skillnad från liknande aktivitetslistor i systemet där behörighetsfilter tillämpas.',
+ 'audit_event_filter' => 'Händelse Filter',
+ 'audit_event_filter_no_filter' => 'Inget filter',
+ 'audit_deleted_item' => 'Raderat objekt',
+ 'audit_deleted_item_name' => 'Namn: :name',
+ 'audit_table_user' => 'Användare',
+ 'audit_table_event' => 'Händelse',
+ 'audit_table_related' => 'Relaterat objekt eller detalj',
+ 'audit_table_ip' => 'IP-adress',
+ 'audit_table_date' => 'Datum för senaste aktiviteten',
+ 'audit_date_from' => 'Datumintervall från',
+ 'audit_date_to' => 'Datumintervall till',
+
+ // Role Settings
+ 'roles' => 'Roller',
+ 'role_user_roles' => 'Användarroller',
+ 'roles_index_desc' => 'Roles are used to group users & provide system permission to their members. When a user is a member of multiple roles the privileges granted will stack and the user will inherit all abilities.',
+ 'roles_x_users_assigned' => ':count user assigned|:count users assigned',
+ 'roles_x_permissions_provided' => ':count permission|:count permissions',
+ 'roles_assigned_users' => 'Assigned Users',
+ 'roles_permissions_provided' => 'Provided Permissions',
+ 'role_create' => 'Skapa ny roll',
+ 'role_delete' => 'Ta bort roll',
+ 'role_delete_confirm' => 'Rollen med namn \':roleName\' kommer att tas bort.',
+ 'role_delete_users_assigned' => 'Det finns :userCount användare som tillhör den här rollen. Om du vill migrera användarna från den här rollen, välj en ny roll nedan.',
+ 'role_delete_no_migration' => "Migrera inte användare",
+ 'role_delete_sure' => 'Är du säker på att du vill ta bort den här rollen?',
+ 'role_edit' => 'Redigera roll',
+ 'role_details' => 'Om rollen',
+ 'role_name' => 'Rollens namn',
+ 'role_desc' => 'Kort beskrivning av rollen',
+ 'role_mfa_enforced' => 'Kräver multifaktorsautentisering',
+ 'role_external_auth_id' => 'Externa autentiserings-ID:n',
+ 'role_system' => 'Systemrättigheter',
+ 'role_manage_users' => 'Hanter användare',
+ 'role_manage_roles' => 'Hantera roller & rättigheter',
+ 'role_manage_entity_permissions' => 'Hantera rättigheter för alla böcker, kapitel och sidor',
+ 'role_manage_own_entity_permissions' => 'Hantera rättigheter för egna böcker, kapitel och sidor',
+ 'role_manage_page_templates' => 'Hantera mallar',
+ 'role_access_api' => 'Åtkomst till systemets API',
+ 'role_manage_settings' => 'Hantera appinställningar',
+ 'role_export_content' => 'Exportera innehåll',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Ändra sidredigerare',
+ 'role_notifications' => 'Receive & manage notifications',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Tillgång till innehåll',
+ 'roles_system_warning' => 'Var medveten om att åtkomst till någon av ovanstående tre behörigheter kan tillåta en användare att ändra sina egna rättigheter eller andras rättigheter i systemet. Tilldela endast roller med dessa behörigheter till betrodda användare.',
+ 'role_asset_desc' => 'Det här är standardinställningarna för allt innehåll i systemet. Eventuella anpassade rättigheter på böcker, kapitel och sidor skriver över dessa inställningar.',
+ 'role_asset_admins' => 'Administratörer har automatisk tillgång till allt innehåll men dessa alternativ kan visa och dölja vissa gränssnittselement',
+ 'role_asset_image_view_note' => 'Detta avser synlighet inom bildhanteraren. Faktisk åtkomst för uppladdade bildfiler kommer att bero på alternativ för bildlagring.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Alla',
+ 'role_own' => 'Egna',
+ 'role_controlled_by_asset' => 'Kontrolleras av den sida de laddas upp till',
+ 'role_save' => 'Spara roll',
+ 'role_users' => 'Användare med denna roll',
+ 'role_users_none' => 'Inga användare tillhör den här rollen',
+
+ // Users
+ 'users' => 'Användare',
+ 'users_index_desc' => 'Create & manage individual user accounts within the system. User accounts are used for login and attribution of content & activity. Access permissions are primarily role-based but user content ownership, among other factors, may also affect permissions & access.',
+ 'user_profile' => 'Användarprofil',
+ 'users_add_new' => 'Lägg till användare',
+ 'users_search' => 'Sök användare',
+ 'users_latest_activity' => 'Senaste aktivitet',
+ 'users_details' => 'Användarinformation',
+ 'users_details_desc' => 'Ange ett visningsnamn och en e-postadress för den här användaren. E-postadressen kommer att användas vid inloggningen.',
+ 'users_details_desc_no_email' => 'Ange ett visningsnamn för den här användaren så att andra kan känna igen den.',
+ 'users_role' => 'Användarroller',
+ 'users_role_desc' => 'Välj vilka roller den här användaren ska tilldelas. Om en användare har tilldelats flera roller kommer behörigheterna från dessa roller att staplas och de kommer att få alla rättigheter i de tilldelade rollerna.',
+ 'users_password' => 'Användarlösenord',
+ 'users_password_desc' => 'Ange ett lösenord som ska användas för att logga in på sidan. Lösenordet måste vara minst 8 tecken långt.',
+ 'users_send_invite_text' => 'Du kan välja att skicka denna användare ett e-postmeddelande som tillåter dem att ställa in sitt eget lösenord, eller så kan du ställa in deras lösenord själv.',
+ 'users_send_invite_option' => 'Skicka e-post med inbjudan',
+ 'users_external_auth_id' => 'Externt ID för autentisering',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ 'users_system_public' => 'Den här användaren representerar eventuella gäster som använder systemet. Den kan inte användas för att logga in utan tilldeles automatiskt.',
+ 'users_delete' => 'Ta bort användare',
+ 'users_delete_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' => 'Ö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_edit' => 'Redigera användare',
+ 'users_edit_profile' => 'Redigera profil',
+ 'users_avatar' => 'Avatar',
+ 'users_avatar_desc' => 'Bilden bör vara kvadratisk och ca 256px stor.',
+ 'users_preferred_language' => 'Föredraget språk',
+ 'users_preferred_language_desc' => 'Det här alternativet kommer att ändra det språk som används i användargränssnittet. Detta påverkar inget användarskapat innehåll.',
+ 'users_social_accounts' => 'Anslutna konton',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Här kan du ansluta dina andra konton för snabbare och smidigare inloggning. Om du kopplar från en tjänst här kommer de behörigheter som tidigare givits inte att tas bort - ta bort behörigheter genom att logga in på ditt konto på tjänsten i fråga.',
+ 'users_social_connect' => 'Anslut konto',
+ 'users_social_disconnect' => 'Koppla från konto',
+ 'users_social_status_connected' => 'Ansluten',
+ 'users_social_status_disconnected' => 'Bortkopplad',
+ 'users_social_connected' => ':socialAccount har kopplats till ditt konto.',
+ 'users_social_disconnected' => ':socialAccount har kopplats bort från ditt konto.',
+ 'users_api_tokens' => 'API-nyckel',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'Inga API-tokens har skapats för den här användaren',
+ 'users_api_tokens_create' => 'Skapa token',
+ 'users_api_tokens_expires' => 'Förfaller',
+ 'users_api_tokens_docs' => 'API-dokumentation',
+ 'users_mfa' => 'Multifaktorautentisering',
+ 'users_mfa_desc' => 'Konfigurera multifaktorsautentisering som ett extra skydd för ditt konto.',
+ 'users_mfa_x_methods' => ':count metod konfigurerad|:count metoder konfigurerade',
+ 'users_mfa_configure' => 'Konfigurera metoder',
+
+ // API Tokens
+ 'user_api_token_create' => 'Skapa API-nyckel',
+ 'user_api_token_name' => 'Namn',
+ 'user_api_token_name_desc' => 'Ge din token ett läsbart namn som en framtida påminnelse om dess avsedda syfte.',
+ 'user_api_token_expiry' => 'Förfallodatum',
+ 'user_api_token_expiry_desc' => 'Ange ett datum då denna token går ut. Efter detta datum kommer förfrågningar som görs med denna token inte längre att fungera. Lämnar du detta fält tomt kommer utgångsdatum att sättas 100 år in i framtiden.',
+ 'user_api_token_create_secret_message' => 'Omedelbart efter att du skapat denna token kommer ett "Token ID" & "Token Secret" att genereras och visas. Token Secret kommer bara att visas en enda gång så se till att kopiera värdet till en säker plats innan du fortsätter.',
+ 'user_api_token' => 'API-nyckel',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'Detta är en icke-redigerbar systemgenererad identifierare för denna token som måste tillhandahållas i API-förfrågningar.',
+ 'user_api_token_secret' => 'Token Secret',
+ 'user_api_token_secret_desc' => 'Detta är en systemgenererad hemlighet för denna token som måste tillhandahållas i API-förfrågningar. Denna kommer bara att visas en gång så kopiera detta värde till en säker plats.',
+ 'user_api_token_created' => 'Token skapad :timeAgo',
+ 'user_api_token_updated' => 'Token Uppdaterad :timeAgo',
+ 'user_api_token_delete' => 'Ta bort token',
+ 'user_api_token_delete_warning' => 'Detta kommer att helt ta bort denna API-token med namnet \':tokenName\' från systemet.',
+ 'user_api_token_delete_confirm' => 'Är du säker på att du vill ta bort denna API-token?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks are a way to send data to external URLs when certain actions and events occur within the system which allows event-based integration with external platforms such as messaging or notification systems.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'Skapa ny webhook',
+ 'webhooks_none_created' => 'Inga webhooks har skapats än.',
+ 'webhooks_edit' => 'Redigera webhook',
+ 'webhooks_save' => 'Spara webhook',
+ 'webhooks_details' => 'Webhook-detaljer',
+ 'webhooks_details_desc' => 'Ange ett användarvänligt namn och en POST-slutpunkt dit data för denna webhook ska skickas.',
+ 'webhooks_events' => 'Webhook-händelser',
+ 'webhooks_events_desc' => 'Välja alla händelser som ska trigga ett anrop av denna webhook.',
+ 'webhooks_events_warning' => 'Tänk på att dessa händelser kommer att triggas för alla valda händelser, även om anpassade behörigheter tillämpas. Se till att användningen av denna webhook inte avslöjar konfidentiellt innehåll.',
+ 'webhooks_events_all' => 'Alla systemhändelser',
+ 'webhooks_name' => 'Namn på webhook',
+ 'webhooks_timeout' => 'Tidsgräns för webhook överskreds (sekunder)',
+ 'webhooks_endpoint' => 'Webhook-slutpunkt',
+ 'webhooks_active' => 'Webhook aktiv',
+ 'webhook_events_table_header' => 'Händelser',
+ 'webhooks_delete' => 'Ta bort webhook',
+ 'webhooks_delete_warning' => 'Detta kommer att ta bort följande webhook från systemet: \':webhookName\'.',
+ 'webhooks_delete_confirm' => 'Är du säker på att du vill ta bort denna webhook?',
+ 'webhooks_format_example' => 'Exempel på Webhook-format',
+ 'webhooks_format_example_desc' => 'Webhook-data skickas som en POST-begäran till den konfigurerade slutpunkten enligt nedanstående JSON-format. Egenskaperna "related_item" och "url" är valfria samt beroende av den utlösta händelsens typ.',
+ 'webhooks_status' => 'Webhook-status',
+ 'webhooks_last_called' => 'Senast anropad:',
+ 'webhooks_last_errored' => 'Senast felande:',
+ 'webhooks_last_error_message' => 'Senaste felmeddelande:',
+
+ // Licensing
+ 'licenses' => 'Licenser',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack licens',
+ 'licenses_php' => 'Licenser för PHP-bibliotek',
+ 'licenses_js' => 'Licenser för JavaScript-bibliotek',
+ 'licenses_other' => 'Andra licenser',
+ 'license_details' => 'Licensinformation',
+
+ //! 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' => 'Katalanska',
+ 'cs' => 'Česky',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Danska',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenska',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/sv/validation.php b/lang/sv/validation.php
new file mode 100644
index 00000000000..b0c1f7a1bb9
--- /dev/null
+++ b/lang/sv/validation.php
@@ -0,0 +1,123 @@
+ ':attribute måste godkännas.',
+ 'active_url' => ':attribute är inte en giltig URL.',
+ 'after' => ':attribute måste vara efter :date.',
+ 'alpha' => ':attribute får bara innehålla bokstäver.',
+ 'alpha_dash' => ':attribute får bara innehålla bokstäver, siffror och bindestreck.',
+ 'alpha_num' => ':attribute får bara innehålla bokstäver och siffror.',
+ 'array' => ':attribute måste vara en array.',
+ 'backup_codes' => 'Den angivna koden är inte giltig eller har redan använts.',
+ 'before' => ':attribute måste vara före :date.',
+ 'between' => [
+ 'numeric' => ':attribute måste vara mellan :min och :max.',
+ 'file' => ':attribute måste vara mellan :min och :max kilobyte stor.',
+ 'string' => ':attribute måste vara mellan :min och :max tecken.',
+ 'array' => ':attribute måste innehålla mellan :min och :max poster.',
+ ],
+ 'boolean' => ':attribute måste vara sant eller falskt.',
+ 'confirmed' => 'Bekräftelsen av :attribute stämmer inte.',
+ 'date' => ':attribute är inte ett giltigt datum.',
+ 'date_format' => ':attribute matchar inte formatet :format.',
+ 'different' => ':attribute och :other måste vara olika.',
+ 'digits' => ':attribute måste vara :digits siffror.',
+ 'digits_between' => ':attribute måste vara mellan :min och :max siffror.',
+ 'email' => ':attribute måste vara en giltig e-postadress.',
+ 'ends_with' => ':attribute måste sluta med något av följande: :values',
+ 'file' => ':attribute måste anges som en giltig fil.',
+ 'filled' => ':attribute är obligatoriskt.',
+ 'gt' => [
+ 'numeric' => ':attribute måste vara större än :value.',
+ 'file' => ':attribute måste vara större än :value kilobytes.',
+ 'string' => ':attribute måste vara större än :value tecken.',
+ 'array' => ':attribute måste ha mer än :value objekt.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute måste vara större än eller likamed :value.',
+ 'file' => ':attribute måste vara större än eller lika med :value kilobytes.',
+ 'string' => ':attribute måste vara större än eller lika med :value tecken.',
+ 'array' => ':attribute måste ha :value objekt eller mer.',
+ ],
+ 'exists' => 'Valt värde för :attribute är ogiltigt.',
+ 'image' => ':attribute måste vara en bild.',
+ 'image_extension' => ':attribute måste ha ett giltigt filtillägg.',
+ 'in' => 'Vald :attribute är ogiltigt.',
+ 'integer' => ':attribute måste vara en integer.',
+ 'ip' => ':attribute måste vara en giltig IP-adress.',
+ 'ipv4' => ':attribute måste vara en giltig IPv4-adress.',
+ 'ipv6' => ':attribute måste vara en giltig IPv6-adress.',
+ 'json' => ':attribute måste vara en giltig JSON-sträng.',
+ 'lt' => [
+ 'numeric' => ':attribute måste vara mindre än :value.',
+ 'file' => ':attribute måste vara mindre än :value kilobytes.',
+ 'string' => ':attribute måste vara mindre än :value tecken.',
+ 'array' => ':attribute måste ha mindre än :value objekt.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute måste vara mindre än eller lika :value.',
+ 'file' => ':attribute måste vara mindre än eller lika med :value kilobytes.',
+ 'string' => ':attribute måste vara mindre än eller lika med :value tecken.',
+ 'array' => ':attribute får inte innehålla mer än :max objekt.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute får inte vara större än :max.',
+ 'file' => ':attribute får inte vara större än :max kilobyte.',
+ 'string' => ':attribute får inte vara längre än :max tecken.',
+ 'array' => ':attribute får inte ha fler än :max poster.',
+ ],
+ 'mimes' => ':attribute måste vara en fil av typen: :values.',
+ 'min' => [
+ 'numeric' => ':attribute måste vara minst :min.',
+ 'file' => ':attribute måste vara minst :min kilobyte stor.',
+ 'string' => ':attribute måste vara minst :min tecken.',
+ 'array' => ':attribute måste ha minst :min poster.',
+ ],
+ 'not_in' => 'Vald :attribute är inte giltig',
+ 'not_regex' => 'Formatet på :attribute är ogiltigt.',
+ 'numeric' => ':attribute måste vara ett nummer.',
+ 'regex' => ':attribute har ett ogiltigt format.',
+ 'required' => ':attribute är obligatoriskt.',
+ 'required_if' => ':attribute är obligatoriskt när :other är :value.',
+ 'required_with' => ':attribute är obligatoriskt när :values finns.',
+ 'required_with_all' => ':attribute är obligatoriskt när :values finns.',
+ 'required_without' => ':attribute är obligatoriskt när :values inte finns.',
+ 'required_without_all' => ':attribute är obligatirskt när ingen av :values finns.',
+ 'same' => ':attribute och :other måste stämma överens.',
+ 'safe_url' => 'Den angivna länken kanske inte är säker.',
+ 'size' => [
+ 'numeric' => ':attribute måste vara :size.',
+ 'file' => ':attribute måste vara :size kilobyte.',
+ 'string' => ':attribute måste vara :size tecken.',
+ 'array' => ':attribute måste innehålla :size poster.',
+ ],
+ 'string' => ':attribute måste vara en sträng.',
+ 'timezone' => ':attribute måste vara en giltig tidszon.',
+ 'totp' => 'Den angivna koden är inte giltig eller har löpt ut.',
+ 'unique' => ':attribute är upptaget',
+ 'url' => 'Formatet på :attribute är ogiltigt.',
+ 'uploaded' => 'Filen kunde inte laddas upp. Servern kanske inte tillåter filer med denna storlek.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Lösenordet måste bekräftas',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/tk/activities.php b/lang/tk/activities.php
new file mode 100644
index 00000000000..4362fc02958
--- /dev/null
+++ b/lang/tk/activities.php
@@ -0,0 +1,140 @@
+ 'created page',
+ 'page_create_notification' => 'Page successfully created',
+ 'page_update' => 'updated page',
+ 'page_update_notification' => 'Page successfully updated',
+ 'page_delete' => 'deleted page',
+ 'page_delete_notification' => 'Page successfully deleted',
+ 'page_restore' => 'restored page',
+ 'page_restore_notification' => 'Page successfully restored',
+ 'page_move' => 'moved page',
+ 'page_move_notification' => 'Page successfully moved',
+
+ // Chapters
+ 'chapter_create' => 'created chapter',
+ 'chapter_create_notification' => 'Chapter successfully created',
+ 'chapter_update' => 'updated chapter',
+ 'chapter_update_notification' => 'Chapter successfully updated',
+ 'chapter_delete' => 'deleted chapter',
+ 'chapter_delete_notification' => 'Chapter successfully deleted',
+ 'chapter_move' => 'moved chapter',
+ 'chapter_move_notification' => 'Chapter successfully moved',
+
+ // Books
+ 'book_create' => 'created book',
+ 'book_create_notification' => 'Book successfully created',
+ 'book_create_from_chapter' => 'converted chapter to book',
+ 'book_create_from_chapter_notification' => 'Chapter successfully converted to a book',
+ 'book_update' => 'updated book',
+ 'book_update_notification' => 'Book successfully updated',
+ 'book_delete' => 'deleted book',
+ 'book_delete_notification' => 'Book successfully deleted',
+ 'book_sort' => 'sorted book',
+ 'book_sort_notification' => 'Book successfully re-sorted',
+
+ // Bookshelves
+ 'bookshelf_create' => 'created shelf',
+ 'bookshelf_create_notification' => 'Shelf successfully created',
+ 'bookshelf_create_from_book' => 'converted book to shelf',
+ 'bookshelf_create_from_book_notification' => 'Book successfully converted to a shelf',
+ 'bookshelf_update' => 'updated shelf',
+ 'bookshelf_update_notification' => 'Shelf successfully updated',
+ 'bookshelf_delete' => 'deleted shelf',
+ 'bookshelf_delete_notification' => 'Shelf successfully deleted',
+
+ // Revisions
+ 'revision_restore' => 'restored revision',
+ 'revision_delete' => 'deleted revision',
+ 'revision_delete_notification' => 'Revision successfully deleted',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" has been added to your favourites',
+ 'favourite_remove_notification' => '":name" has been removed from your favourites',
+
+ // Watching
+ 'watch_update_level_notification' => 'Watch preferences successfully updated',
+
+ // Auth
+ 'auth_login' => 'logged in',
+ 'auth_register' => 'registered as new user',
+ 'auth_password_reset_request' => 'requested user password reset',
+ 'auth_password_reset_update' => 'reset user password',
+ 'mfa_setup_method' => 'configured MFA method',
+ 'mfa_setup_method_notification' => 'Multi-factor method successfully configured',
+ 'mfa_remove_method' => 'removed MFA method',
+ 'mfa_remove_method_notification' => 'Multi-factor method successfully removed',
+
+ // Settings
+ 'settings_update' => 'updated settings',
+ 'settings_update_notification' => 'Settings successfully updated',
+ 'maintenance_action_run' => 'ran maintenance action',
+
+ // Webhooks
+ 'webhook_create' => 'created webhook',
+ 'webhook_create_notification' => 'Webhook successfully created',
+ 'webhook_update' => 'updated webhook',
+ 'webhook_update_notification' => 'Webhook successfully updated',
+ 'webhook_delete' => 'deleted webhook',
+ 'webhook_delete_notification' => 'Webhook successfully deleted',
+
+ // Imports
+ 'import_create' => 'created import',
+ 'import_create_notification' => 'Import successfully uploaded',
+ 'import_run' => 'updated import',
+ 'import_run_notification' => 'Content successfully imported',
+ 'import_delete' => 'deleted import',
+ 'import_delete_notification' => 'Import successfully deleted',
+
+ // Users
+ 'user_create' => 'created user',
+ 'user_create_notification' => 'User successfully created',
+ 'user_update' => 'updated user',
+ 'user_update_notification' => 'User successfully updated',
+ 'user_delete' => 'deleted user',
+ 'user_delete_notification' => 'User successfully removed',
+
+ // API Tokens
+ 'api_token_create' => 'created API token',
+ 'api_token_create_notification' => 'API token successfully created',
+ 'api_token_update' => 'updated API token',
+ 'api_token_update_notification' => 'API token successfully updated',
+ 'api_token_delete' => 'deleted API token',
+ 'api_token_delete_notification' => 'API token successfully deleted',
+
+ // Roles
+ 'role_create' => 'created role',
+ 'role_create_notification' => 'Role successfully created',
+ 'role_update' => 'updated role',
+ 'role_update_notification' => 'Role successfully updated',
+ 'role_delete' => 'deleted role',
+ 'role_delete_notification' => 'Role successfully deleted',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'emptied recycle bin',
+ 'recycle_bin_restore' => 'restored from recycle bin',
+ 'recycle_bin_destroy' => 'removed from recycle bin',
+
+ // Comments
+ 'commented_on' => 'commented on',
+ 'comment_create' => 'added comment',
+ 'comment_update' => 'updated comment',
+ 'comment_delete' => 'deleted comment',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'updated permissions',
+];
diff --git a/lang/tk/auth.php b/lang/tk/auth.php
new file mode 100644
index 00000000000..57f0cb5c632
--- /dev/null
+++ b/lang/tk/auth.php
@@ -0,0 +1,117 @@
+ 'These credentials do not match our records.',
+ 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.',
+
+ // Login & Register
+ 'sign_up' => 'Sign up',
+ 'log_in' => 'Log in',
+ 'log_in_with' => 'Login with :socialDriver',
+ 'sign_up_with' => 'Sign up with :socialDriver',
+ 'logout' => 'Logout',
+
+ 'name' => 'Name',
+ 'username' => 'Username',
+ 'email' => 'Email',
+ 'password' => 'Password',
+ 'password_confirm' => 'Confirm Password',
+ 'password_hint' => 'Must be at least 8 characters',
+ 'forgot_password' => 'Forgot Password?',
+ 'remember_me' => 'Remember Me',
+ 'ldap_email_hint' => 'Please enter an email to use for this account.',
+ 'create_account' => 'Create Account',
+ 'already_have_account' => 'Already have an account?',
+ 'dont_have_account' => 'Don\'t have an account?',
+ 'social_login' => 'Social Login',
+ 'social_registration' => 'Social Registration',
+ 'social_registration_text' => 'Register and sign in using another service.',
+
+ 'register_thanks' => 'Thanks for registering!',
+ 'register_confirm' => 'Please check your email and click the confirmation button to access :appName.',
+ 'registrations_disabled' => 'Registrations are currently disabled',
+ 'registration_email_domain_invalid' => 'That email domain does not have access to this application',
+ 'register_success' => 'Thanks for signing up! You are now registered and signed in.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Attempting Login',
+ 'auto_init_starting_desc' => 'We\'re contacting your authentication system to start the login process. If there\'s no progress after 5 seconds you can try clicking the link below.',
+ 'auto_init_start_link' => 'Proceed with authentication',
+
+ // Password Reset
+ 'reset_password' => 'Reset Password',
+ 'reset_password_send_instructions' => 'Enter your email below and you will be sent an email with a password reset link.',
+ 'reset_password_send_button' => 'Send Reset Link',
+ 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.',
+ 'reset_password_success' => 'Your password has been successfully reset.',
+ 'email_reset_subject' => 'Reset your :appName password',
+ 'email_reset_text' => 'You are receiving this email because we received a password reset request for your account.',
+ 'email_reset_not_requested' => 'If you did not request a password reset, no further action is required.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Confirm your email on :appName',
+ 'email_confirm_greeting' => 'Thanks for joining :appName!',
+ 'email_confirm_text' => 'Please confirm your email address by clicking the button below:',
+ 'email_confirm_action' => 'Confirm Email',
+ 'email_confirm_send_error' => 'Email confirmation required but the system could not send the email. Contact the admin to ensure email is set up correctly.',
+ 'email_confirm_success' => 'Your email has been confirmed! You should now be able to login using this email address.',
+ 'email_confirm_resent' => 'Confirmation email resent, Please check your inbox.',
+ 'email_confirm_thanks' => 'Thanks for confirming!',
+ 'email_confirm_thanks_desc' => 'Please wait a moment while your confirmation is handled. If you are not redirected after 3 seconds press the "Continue" link below to proceed.',
+
+ 'email_not_confirmed' => 'Email Address Not Confirmed',
+ 'email_not_confirmed_text' => 'Your email address has not yet been confirmed.',
+ 'email_not_confirmed_click_link' => 'Please click the link in the email that was sent shortly after you registered.',
+ 'email_not_confirmed_resend' => 'If you cannot find the email you can re-send the confirmation email by submitting the form below.',
+ 'email_not_confirmed_resend_button' => 'Resend Confirmation Email',
+
+ // User Invite
+ 'user_invite_email_subject' => 'You have been invited to join :appName!',
+ 'user_invite_email_greeting' => 'An account has been created for you on :appName.',
+ 'user_invite_email_text' => 'Click the button below to set an account password and gain access:',
+ 'user_invite_email_action' => 'Set Account Password',
+ 'user_invite_page_welcome' => 'Welcome to :appName!',
+ 'user_invite_page_text' => 'To finalise your account and gain access you need to set a password which will be used to log-in to :appName on future visits.',
+ 'user_invite_page_confirm_button' => 'Confirm Password',
+ 'user_invite_success_login' => 'Password set, you should now be able to login using your set password to access :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Setup Multi-Factor Authentication',
+ 'mfa_setup_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'mfa_setup_configured' => 'Already configured',
+ 'mfa_setup_reconfigure' => 'Reconfigure',
+ 'mfa_setup_remove_confirmation' => 'Are you sure you want to remove this multi-factor authentication method?',
+ 'mfa_setup_action' => 'Setup',
+ 'mfa_backup_codes_usage_limit_warning' => 'You have less than 5 backup codes remaining, Please generate and store a new set before you run out of codes to prevent being locked out of your account.',
+ 'mfa_option_totp_title' => 'Mobile App',
+ 'mfa_option_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Backup Codes',
+ 'mfa_option_backup_codes_desc' => 'Generates a set of one-time-use backup codes which you\'ll enter on login to verify your identity. Make sure to store these in a safe & secure place.',
+ 'mfa_gen_confirm_and_enable' => 'Confirm and Enable',
+ 'mfa_gen_backup_codes_title' => 'Backup Codes Setup',
+ 'mfa_gen_backup_codes_desc' => 'Store the below list of codes in a safe place. When accessing the system you\'ll be able to use one of the codes as a second authentication mechanism.',
+ 'mfa_gen_backup_codes_download' => 'Download Codes',
+ 'mfa_gen_backup_codes_usage_warning' => 'Each code can only be used once',
+ 'mfa_gen_totp_title' => 'Mobile App Setup',
+ 'mfa_gen_totp_desc' => 'To use multi-factor authentication you\'ll need a mobile application that supports TOTP such as Google Authenticator, Authy or Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Scan the QR code below using your preferred authentication app to get started.',
+ 'mfa_gen_totp_verify_setup' => 'Verify Setup',
+ 'mfa_gen_totp_verify_setup_desc' => 'Verify that all is working by entering a code, generated within your authentication app, in the input box below:',
+ 'mfa_gen_totp_provide_code_here' => 'Provide your app generated code here',
+ 'mfa_verify_access' => 'Verify Access',
+ 'mfa_verify_access_desc' => 'Your user account requires you to confirm your identity via an additional level of verification before you\'re granted access. Verify using one of your configured methods to continue.',
+ 'mfa_verify_no_methods' => 'No Methods Configured',
+ 'mfa_verify_no_methods_desc' => 'No multi-factor authentication methods could be found for your account. You\'ll need to set up at least one method before you gain access.',
+ 'mfa_verify_use_totp' => 'Verify using a mobile app',
+ 'mfa_verify_use_backup_codes' => 'Verify using a backup code',
+ 'mfa_verify_backup_code' => 'Backup Code',
+ 'mfa_verify_backup_code_desc' => 'Enter one of your remaining backup codes below:',
+ 'mfa_verify_backup_code_enter_here' => 'Enter backup code here',
+ 'mfa_verify_totp_desc' => 'Enter the code, generated using your mobile app, below:',
+ 'mfa_setup_login_notification' => 'Multi-factor method configured, Please now login again using the configured method.',
+];
diff --git a/lang/tk/common.php b/lang/tk/common.php
new file mode 100644
index 00000000000..06a9e855ce3
--- /dev/null
+++ b/lang/tk/common.php
@@ -0,0 +1,115 @@
+ 'Cancel',
+ 'close' => 'Close',
+ 'confirm' => 'Confirm',
+ 'back' => 'Back',
+ 'save' => 'Save',
+ 'continue' => 'Continue',
+ 'select' => 'Select',
+ 'toggle_all' => 'Toggle All',
+ 'more' => 'More',
+
+ // Form Labels
+ 'name' => 'Name',
+ 'description' => 'Description',
+ 'role' => 'Role',
+ 'cover_image' => 'Cover image',
+ 'cover_image_description' => 'This image should be approximately 440x250px although it will be flexibly scaled & cropped to fit the user interface in different scenarios as required, so actual dimensions for display will differ.',
+
+ // Actions
+ 'actions' => 'Actions',
+ 'view' => 'View',
+ 'view_all' => 'View All',
+ 'new' => 'New',
+ 'create' => 'Create',
+ 'update' => 'Update',
+ 'edit' => 'Edit',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Sort',
+ 'move' => 'Move',
+ 'copy' => 'Copy',
+ 'reply' => 'Reply',
+ 'delete' => 'Delete',
+ 'delete_confirm' => 'Confirm Deletion',
+ 'search' => 'Search',
+ 'search_clear' => 'Clear Search',
+ 'reset' => 'Reset',
+ 'remove' => 'Remove',
+ 'add' => 'Add',
+ 'configure' => 'Configure',
+ 'manage' => 'Manage',
+ 'fullscreen' => 'Fullscreen',
+ 'favourite' => 'Favourite',
+ 'unfavourite' => 'Unfavourite',
+ 'next' => 'Next',
+ 'previous' => 'Previous',
+ 'filter_active' => 'Active Filter:',
+ 'filter_clear' => 'Clear Filter',
+ 'download' => 'Download',
+ 'open_in_tab' => 'Open in Tab',
+ 'open' => 'Open',
+
+ // Sort Options
+ 'sort_options' => 'Sort Options',
+ 'sort_direction_toggle' => 'Sort Direction Toggle',
+ 'sort_ascending' => 'Sort Ascending',
+ 'sort_descending' => 'Sort Descending',
+ 'sort_name' => 'Name',
+ 'sort_default' => 'Default',
+ 'sort_created_at' => 'Created Date',
+ 'sort_updated_at' => 'Updated Date',
+
+ // Misc
+ 'deleted_user' => 'Deleted User',
+ 'no_activity' => 'No activity to show',
+ 'no_items' => 'No items available',
+ 'back_to_top' => 'Back to top',
+ 'skip_to_main_content' => 'Skip to main content',
+ 'toggle_details' => 'Toggle Details',
+ 'toggle_thumbnails' => 'Toggle Thumbnails',
+ 'details' => 'Details',
+ 'grid_view' => 'Grid View',
+ 'list_view' => 'List View',
+ 'default' => 'Default',
+ 'breadcrumb' => 'Breadcrumb',
+ 'status' => 'Status',
+ 'status_active' => 'Active',
+ 'status_inactive' => 'Inactive',
+ 'never' => 'Never',
+ 'none' => 'None',
+
+ // Header
+ 'homepage' => 'Homepage',
+ 'header_menu_expand' => 'Expand Header Menu',
+ 'profile_menu' => 'Profile Menu',
+ 'view_profile' => 'View Profile',
+ 'edit_profile' => 'Edit Profile',
+ 'dark_mode' => 'Dark Mode',
+ 'light_mode' => 'Light Mode',
+ 'global_search' => 'Global Search',
+
+ // Layout tabs
+ 'tab_info' => 'Info',
+ 'tab_info_label' => 'Tab: Show Secondary Information',
+ 'tab_content' => 'Content',
+ 'tab_content_label' => 'Tab: Show Primary Content',
+
+ // Email Content
+ 'email_action_help' => 'If you’re having trouble clicking the ":actionText" button, copy and paste the URL below into your web browser:',
+ 'email_rights' => 'All rights reserved',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Privacy Policy',
+ 'terms_of_service' => 'Terms of Service',
+
+ // OpenSearch
+ 'opensearch_description' => 'Search :appName',
+];
diff --git a/lang/tk/components.php b/lang/tk/components.php
new file mode 100644
index 00000000000..c33b1d0b791
--- /dev/null
+++ b/lang/tk/components.php
@@ -0,0 +1,46 @@
+ 'Image Select',
+ 'image_list' => 'Image List',
+ 'image_details' => 'Image Details',
+ 'image_upload' => 'Upload Image',
+ 'image_intro' => 'Here you can select and manage images that have been previously uploaded to the system.',
+ 'image_intro_upload' => 'Upload a new image by dragging an image file into this window, or by using the "Upload Image" button above.',
+ 'image_all' => 'All',
+ 'image_all_title' => 'View all images',
+ 'image_book_title' => 'View images uploaded to this book',
+ 'image_page_title' => 'View images uploaded to this page',
+ 'image_search_hint' => 'Search by image name',
+ 'image_uploaded' => 'Uploaded :uploadedDate',
+ 'image_uploaded_by' => 'Uploaded by :userName',
+ 'image_uploaded_to' => 'Uploaded to :pageLink',
+ 'image_updated' => 'Updated :updateDate',
+ 'image_load_more' => 'Load More',
+ 'image_image_name' => 'Image Name',
+ 'image_delete_used' => 'This image is used in the pages below.',
+ 'image_delete_confirm_text' => 'Are you sure you want to delete this image?',
+ 'image_select_image' => 'Select Image',
+ 'image_dropzone' => 'Drop images or click here to upload',
+ 'image_dropzone_drop' => 'Drop images here to upload',
+ 'images_deleted' => 'Images Deleted',
+ 'image_preview' => 'Image Preview',
+ 'image_upload_success' => 'Image uploaded successfully',
+ 'image_update_success' => 'Image details successfully updated',
+ 'image_delete_success' => 'Image successfully deleted',
+ 'image_replace' => 'Replace Image',
+ 'image_replace_success' => 'Image file successfully updated',
+ 'image_rebuild_thumbs' => 'Regenerate Size Variations',
+ 'image_rebuild_thumbs_success' => 'Image size variations successfully rebuilt!',
+
+ // Code Editor
+ 'code_editor' => 'Edit Code',
+ 'code_language' => 'Code Language',
+ 'code_content' => 'Code Content',
+ 'code_session_history' => 'Session History',
+ 'code_save' => 'Save Code',
+];
diff --git a/lang/tk/editor.php b/lang/tk/editor.php
new file mode 100644
index 00000000000..0d250e9a7bd
--- /dev/null
+++ b/lang/tk/editor.php
@@ -0,0 +1,182 @@
+ 'General',
+ 'advanced' => 'Advanced',
+ 'none' => 'None',
+ 'cancel' => 'Cancel',
+ 'save' => 'Save',
+ 'close' => 'Close',
+ 'apply' => 'Apply',
+ 'undo' => 'Undo',
+ 'redo' => 'Redo',
+ 'left' => 'Left',
+ 'center' => 'Center',
+ 'right' => 'Right',
+ 'top' => 'Top',
+ 'middle' => 'Middle',
+ 'bottom' => 'Bottom',
+ 'width' => 'Width',
+ 'height' => 'Height',
+ 'More' => 'More',
+ 'select' => 'Select...',
+
+ // Toolbar
+ 'formats' => 'Formats',
+ 'header_large' => 'Large Header',
+ 'header_medium' => 'Medium Header',
+ 'header_small' => 'Small Header',
+ 'header_tiny' => 'Tiny Header',
+ 'paragraph' => 'Paragraph',
+ 'blockquote' => 'Blockquote',
+ 'inline_code' => 'Inline code',
+ 'callouts' => 'Callouts',
+ 'callout_information' => 'Information',
+ 'callout_success' => 'Success',
+ 'callout_warning' => 'Warning',
+ 'callout_danger' => 'Danger',
+ 'bold' => 'Bold',
+ 'italic' => 'Italic',
+ 'underline' => 'Underline',
+ 'strikethrough' => 'Strikethrough',
+ 'superscript' => 'Superscript',
+ 'subscript' => 'Subscript',
+ 'text_color' => 'Text color',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Custom color',
+ 'remove_color' => 'Remove color',
+ 'background_color' => 'Background color',
+ 'align_left' => 'Align left',
+ 'align_center' => 'Align center',
+ 'align_right' => 'Align right',
+ 'align_justify' => 'Justify',
+ 'list_bullet' => 'Bullet list',
+ 'list_numbered' => 'Numbered list',
+ 'list_task' => 'Task list',
+ 'indent_increase' => 'Increase indent',
+ 'indent_decrease' => 'Decrease indent',
+ 'table' => 'Table',
+ 'insert_image' => 'Insert image',
+ 'insert_image_title' => 'Insert/Edit Image',
+ 'insert_link' => 'Insert/edit link',
+ 'insert_link_title' => 'Insert/Edit Link',
+ 'insert_horizontal_line' => 'Insert horizontal line',
+ 'insert_code_block' => 'Insert code block',
+ 'edit_code_block' => 'Edit code block',
+ 'insert_drawing' => 'Insert/edit drawing',
+ 'drawing_manager' => 'Drawing manager',
+ 'insert_media' => 'Insert/edit media',
+ 'insert_media_title' => 'Insert/Edit Media',
+ 'clear_formatting' => 'Clear formatting',
+ 'source_code' => 'Source code',
+ 'source_code_title' => 'Source Code',
+ 'fullscreen' => 'Fullscreen',
+ 'image_options' => 'Image options',
+
+ // Tables
+ 'table_properties' => 'Table properties',
+ 'table_properties_title' => 'Table Properties',
+ 'delete_table' => 'Delete table',
+ 'table_clear_formatting' => 'Clear table formatting',
+ 'resize_to_contents' => 'Resize to contents',
+ 'row_header' => 'Row header',
+ 'insert_row_before' => 'Insert row before',
+ 'insert_row_after' => 'Insert row after',
+ 'delete_row' => 'Delete row',
+ 'insert_column_before' => 'Insert column before',
+ 'insert_column_after' => 'Insert column after',
+ 'delete_column' => 'Delete column',
+ 'table_cell' => 'Cell',
+ 'table_row' => 'Row',
+ 'table_column' => 'Column',
+ 'cell_properties' => 'Cell properties',
+ 'cell_properties_title' => 'Cell Properties',
+ 'cell_type' => 'Cell type',
+ 'cell_type_cell' => 'Cell',
+ 'cell_scope' => 'Scope',
+ 'cell_type_header' => 'Header cell',
+ 'merge_cells' => 'Merge cells',
+ 'split_cell' => 'Split cell',
+ 'table_row_group' => 'Row Group',
+ 'table_column_group' => 'Column Group',
+ 'horizontal_align' => 'Horizontal align',
+ 'vertical_align' => 'Vertical align',
+ 'border_width' => 'Border width',
+ 'border_style' => 'Border style',
+ 'border_color' => 'Border color',
+ 'row_properties' => 'Row properties',
+ 'row_properties_title' => 'Row Properties',
+ 'cut_row' => 'Cut row',
+ 'copy_row' => 'Copy row',
+ 'paste_row_before' => 'Paste row before',
+ 'paste_row_after' => 'Paste row after',
+ 'row_type' => 'Row type',
+ 'row_type_header' => 'Header',
+ 'row_type_body' => 'Body',
+ 'row_type_footer' => 'Footer',
+ 'alignment' => 'Alignment',
+ 'cut_column' => 'Cut column',
+ 'copy_column' => 'Copy column',
+ 'paste_column_before' => 'Paste column before',
+ 'paste_column_after' => 'Paste column after',
+ 'cell_padding' => 'Cell padding',
+ 'cell_spacing' => 'Cell spacing',
+ 'caption' => 'Caption',
+ 'show_caption' => 'Show caption',
+ 'constrain' => 'Constrain proportions',
+ 'cell_border_solid' => 'Solid',
+ 'cell_border_dotted' => 'Dotted',
+ 'cell_border_dashed' => 'Dashed',
+ 'cell_border_double' => 'Double',
+ 'cell_border_groove' => 'Groove',
+ 'cell_border_ridge' => 'Ridge',
+ 'cell_border_inset' => 'Inset',
+ 'cell_border_outset' => 'Outset',
+ 'cell_border_none' => 'None',
+ 'cell_border_hidden' => 'Hidden',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Source',
+ 'alt_desc' => 'Alternative description',
+ 'embed' => 'Embed',
+ 'paste_embed' => 'Paste your embed code below:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Text to display',
+ 'title' => 'Title',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Open link',
+ 'open_link_in' => 'Open link in...',
+ 'open_link_current' => 'Current window',
+ 'open_link_new' => 'New window',
+ 'remove_link' => 'Remove link',
+ 'insert_collapsible' => 'Insert collapsible block',
+ 'collapsible_unwrap' => 'Unwrap',
+ 'edit_label' => 'Edit label',
+ 'toggle_open_closed' => 'Toggle open/closed',
+ 'collapsible_edit' => 'Edit collapsible block',
+ 'toggle_label' => 'Toggle label',
+
+ // About view
+ 'about' => 'About the editor',
+ 'about_title' => 'About the WYSIWYG Editor',
+ 'editor_license' => 'Editor License & Copyright',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'This editor is built using :tinyLink which is provided under the MIT license.',
+ 'editor_tiny_license_link' => 'The copyright and license details of TinyMCE can be found here.',
+ 'save_continue' => 'Save Page & Continue',
+ 'callouts_cycle' => '(Keep pressing to toggle through types)',
+ 'link_selector' => 'Link to content',
+ 'shortcuts' => 'Shortcuts',
+ 'shortcut' => 'Shortcut',
+ 'shortcuts_intro' => 'The following shortcuts are available in the editor:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Description',
+];
diff --git a/lang/tk/entities.php b/lang/tk/entities.php
new file mode 100644
index 00000000000..74c50be3b2f
--- /dev/null
+++ b/lang/tk/entities.php
@@ -0,0 +1,476 @@
+ 'Recently Created',
+ 'recently_created_pages' => 'Recently Created Pages',
+ 'recently_updated_pages' => 'Recently Updated Pages',
+ 'recently_created_chapters' => 'Recently Created Chapters',
+ 'recently_created_books' => 'Recently Created Books',
+ 'recently_created_shelves' => 'Recently Created Shelves',
+ 'recently_update' => 'Recently Updated',
+ 'recently_viewed' => 'Recently Viewed',
+ 'recent_activity' => 'Recent Activity',
+ 'create_now' => 'Create one now',
+ 'revisions' => 'Revisions',
+ 'meta_revision' => 'Revision #:revisionCount',
+ 'meta_created' => 'Created :timeLength',
+ 'meta_created_name' => 'Created :timeLength by :user',
+ 'meta_updated' => 'Updated :timeLength',
+ 'meta_updated_name' => 'Updated :timeLength by :user',
+ 'meta_owned_name' => 'Owned by :user',
+ 'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
+ 'entity_select' => 'Entity Select',
+ 'entity_select_lack_permission' => 'You don\'t have the required permissions to select this item',
+ 'images' => 'Images',
+ 'my_recent_drafts' => 'My Recent Drafts',
+ 'my_recently_viewed' => 'My Recently Viewed',
+ 'my_most_viewed_favourites' => 'My Most Viewed Favourites',
+ 'my_favourites' => 'My Favourites',
+ 'no_pages_viewed' => 'You have not viewed any pages',
+ 'no_pages_recently_created' => 'No pages have been recently created',
+ 'no_pages_recently_updated' => 'No pages have been recently updated',
+ 'export' => 'Export',
+ 'export_html' => 'Contained Web File',
+ 'export_pdf' => 'PDF File',
+ 'export_text' => 'Plain Text File',
+ 'export_md' => 'Markdown File',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Permissions',
+ 'permissions_desc' => 'Set permissions here to override the default permissions provided by user roles.',
+ 'permissions_book_cascade' => 'Permissions set on books will automatically cascade to child chapters and pages, unless they have their own permissions defined.',
+ 'permissions_chapter_cascade' => 'Permissions set on chapters will automatically cascade to child pages, unless they have their own permissions defined.',
+ 'permissions_save' => 'Save Permissions',
+ 'permissions_owner' => 'Owner',
+ 'permissions_role_everyone_else' => 'Everyone Else',
+ 'permissions_role_everyone_else_desc' => 'Set permissions for all roles not specifically overridden.',
+ 'permissions_role_override' => 'Override permissions for role',
+ 'permissions_inherit_defaults' => 'Inherit defaults',
+
+ // Search
+ 'search_results' => 'Search Results',
+ 'search_total_results_found' => ':count result found|:count total results found',
+ 'search_clear' => 'Clear Search',
+ 'search_no_pages' => 'No pages matched this search',
+ 'search_for_term' => 'Search for :term',
+ 'search_more' => 'More Results',
+ 'search_advanced' => 'Advanced Search',
+ 'search_terms' => 'Search Terms',
+ 'search_content_type' => 'Content Type',
+ 'search_exact_matches' => 'Exact Matches',
+ 'search_tags' => 'Tag Searches',
+ 'search_options' => 'Options',
+ 'search_viewed_by_me' => 'Viewed by me',
+ 'search_not_viewed_by_me' => 'Not viewed by me',
+ 'search_permissions_set' => 'Permissions set',
+ 'search_created_by_me' => 'Created by me',
+ 'search_updated_by_me' => 'Updated by me',
+ 'search_owned_by_me' => 'Owned by me',
+ 'search_date_options' => 'Date Options',
+ 'search_updated_before' => 'Updated before',
+ 'search_updated_after' => 'Updated after',
+ 'search_created_before' => 'Created before',
+ 'search_created_after' => 'Created after',
+ 'search_set_date' => 'Set Date',
+ 'search_update' => 'Update Search',
+
+ // Shelves
+ 'shelf' => 'Shelf',
+ 'shelves' => 'Shelves',
+ 'x_shelves' => ':count Shelf|:count Shelves',
+ 'shelves_empty' => 'No shelves have been created',
+ 'shelves_create' => 'Create New Shelf',
+ 'shelves_popular' => 'Popular Shelves',
+ 'shelves_new' => 'New Shelves',
+ 'shelves_new_action' => 'New Shelf',
+ 'shelves_popular_empty' => 'The most popular shelves will appear here.',
+ 'shelves_new_empty' => 'The most recently created shelves will appear here.',
+ 'shelves_save' => 'Save Shelf',
+ 'shelves_books' => 'Books on this shelf',
+ 'shelves_add_books' => 'Add books to this shelf',
+ 'shelves_drag_books' => 'Drag books below to add them to this shelf',
+ 'shelves_empty_contents' => 'This shelf has no books assigned to it',
+ 'shelves_edit_and_assign' => 'Edit shelf to assign books',
+ 'shelves_edit_named' => 'Edit Shelf :name',
+ 'shelves_edit' => 'Edit Shelf',
+ 'shelves_delete' => 'Delete Shelf',
+ 'shelves_delete_named' => 'Delete Shelf :name',
+ 'shelves_delete_explain' => "This will delete the shelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Are you sure you want to delete this shelf?',
+ 'shelves_permissions' => 'Shelf Permissions',
+ 'shelves_permissions_updated' => 'Shelf Permissions Updated',
+ 'shelves_permissions_active' => 'Shelf Permissions Active',
+ 'shelves_permissions_cascade_warning' => 'Permissions on shelves do not automatically cascade to contained books. This is because a book can exist on multiple shelves. Permissions can however be copied down to child books using the option found below.',
+ 'shelves_permissions_create' => 'Shelf create permissions are only used for copying permissions to child books using the action below. They do not control the ability to create books.',
+ 'shelves_copy_permissions_to_books' => 'Copy Permissions to Books',
+ 'shelves_copy_permissions' => 'Copy Permissions',
+ 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this shelf to all books contained within. Before activating, ensure any changes to the permissions of this shelf have been saved.',
+ 'shelves_copy_permission_success' => 'Shelf permissions copied to :count books',
+
+ // Books
+ 'book' => 'Book',
+ 'books' => 'Books',
+ 'x_books' => ':count Book|:count Books',
+ 'books_empty' => 'No books have been created',
+ 'books_popular' => 'Popular Books',
+ 'books_recent' => 'Recent Books',
+ 'books_new' => 'New Books',
+ 'books_new_action' => 'New Book',
+ 'books_popular_empty' => 'The most popular books will appear here.',
+ 'books_new_empty' => 'The most recently created books will appear here.',
+ 'books_create' => 'Create New Book',
+ 'books_delete' => 'Delete Book',
+ 'books_delete_named' => 'Delete Book :bookName',
+ 'books_delete_explain' => 'This will delete the book with the name \':bookName\'. All pages and chapters will be removed.',
+ 'books_delete_confirmation' => 'Are you sure you want to delete this book?',
+ 'books_edit' => 'Edit Book',
+ 'books_edit_named' => 'Edit Book :bookName',
+ 'books_form_book_name' => 'Book Name',
+ 'books_save' => 'Save Book',
+ 'books_permissions' => 'Book Permissions',
+ 'books_permissions_updated' => 'Book Permissions Updated',
+ 'books_empty_contents' => 'No pages or chapters have been created for this book.',
+ 'books_empty_create_page' => 'Create a new page',
+ 'books_empty_sort_current_book' => 'Sort the current book',
+ 'books_empty_add_chapter' => 'Add a chapter',
+ 'books_permissions_active' => 'Book Permissions Active',
+ 'books_search_this' => 'Search this book',
+ 'books_navigation' => 'Book Navigation',
+ 'books_sort' => 'Sort Book Contents',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Sort Book :bookName',
+ 'books_sort_name' => 'Sort by Name',
+ 'books_sort_created' => 'Sort by Created Date',
+ 'books_sort_updated' => 'Sort by Updated Date',
+ 'books_sort_chapters_first' => 'Chapters First',
+ 'books_sort_chapters_last' => 'Chapters Last',
+ 'books_sort_show_other' => 'Show Other Books',
+ 'books_sort_save' => 'Save New Order',
+ 'books_sort_show_other_desc' => 'Add other books here to include them in the sort operation, and allow easy cross-book reorganisation.',
+ 'books_sort_move_up' => 'Move Up',
+ 'books_sort_move_down' => 'Move Down',
+ 'books_sort_move_prev_book' => 'Move to Previous Book',
+ 'books_sort_move_next_book' => 'Move to Next Book',
+ 'books_sort_move_prev_chapter' => 'Move Into Previous Chapter',
+ 'books_sort_move_next_chapter' => 'Move Into Next Chapter',
+ 'books_sort_move_book_start' => 'Move to Start of Book',
+ 'books_sort_move_book_end' => 'Move to End of Book',
+ 'books_sort_move_before_chapter' => 'Move to Before Chapter',
+ 'books_sort_move_after_chapter' => 'Move to After Chapter',
+ 'books_copy' => 'Copy Book',
+ 'books_copy_success' => 'Book successfully copied',
+
+ // Chapters
+ 'chapter' => 'Chapter',
+ 'chapters' => 'Chapters',
+ 'x_chapters' => ':count Chapter|:count Chapters',
+ 'chapters_popular' => 'Popular Chapters',
+ 'chapters_new' => 'New Chapter',
+ 'chapters_create' => 'Create New Chapter',
+ 'chapters_delete' => 'Delete Chapter',
+ 'chapters_delete_named' => 'Delete Chapter :chapterName',
+ 'chapters_delete_explain' => 'This will delete the chapter with the name \':chapterName\'. All pages that exist within this chapter will also be deleted.',
+ 'chapters_delete_confirm' => 'Are you sure you want to delete this chapter?',
+ 'chapters_edit' => 'Edit Chapter',
+ 'chapters_edit_named' => 'Edit Chapter :chapterName',
+ 'chapters_save' => 'Save Chapter',
+ 'chapters_move' => 'Move Chapter',
+ 'chapters_move_named' => 'Move Chapter :chapterName',
+ 'chapters_copy' => 'Copy Chapter',
+ 'chapters_copy_success' => 'Chapter successfully copied',
+ 'chapters_permissions' => 'Chapter Permissions',
+ 'chapters_empty' => 'No pages are currently in this chapter.',
+ 'chapters_permissions_active' => 'Chapter Permissions Active',
+ 'chapters_permissions_success' => 'Chapter Permissions Updated',
+ 'chapters_search_this' => 'Search this chapter',
+ 'chapter_sort_book' => 'Sort Book',
+
+ // Pages
+ 'page' => 'Page',
+ 'pages' => 'Pages',
+ 'x_pages' => ':count Page|:count Pages',
+ 'pages_popular' => 'Popular Pages',
+ 'pages_new' => 'New Page',
+ 'pages_attachments' => 'Attachments',
+ 'pages_navigation' => 'Page Navigation',
+ 'pages_delete' => 'Delete Page',
+ 'pages_delete_named' => 'Delete Page :pageName',
+ 'pages_delete_draft_named' => 'Delete Draft Page :pageName',
+ 'pages_delete_draft' => 'Delete Draft Page',
+ 'pages_delete_success' => 'Page deleted',
+ 'pages_delete_draft_success' => 'Draft page deleted',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Are you sure you want to delete this page?',
+ 'pages_delete_draft_confirm' => 'Are you sure you want to delete this draft page?',
+ 'pages_editing_named' => 'Editing Page :pageName',
+ 'pages_edit_draft_options' => 'Draft Options',
+ 'pages_edit_save_draft' => 'Save Draft',
+ 'pages_edit_draft' => 'Edit Page Draft',
+ 'pages_editing_draft' => 'Editing Draft',
+ 'pages_editing_page' => 'Editing Page',
+ 'pages_edit_draft_save_at' => 'Draft saved at ',
+ 'pages_edit_delete_draft' => 'Delete Draft',
+ 'pages_edit_delete_draft_confirm' => 'Are you sure you want to delete your draft page changes? All of your changes, since the last full save, will be lost and the editor will be updated with the latest page non-draft save state.',
+ 'pages_edit_discard_draft' => 'Discard Draft',
+ 'pages_edit_switch_to_markdown' => 'Switch to Markdown Editor',
+ 'pages_edit_switch_to_markdown_clean' => '(Clean Content)',
+ 'pages_edit_switch_to_markdown_stable' => '(Stable Content)',
+ 'pages_edit_switch_to_wysiwyg' => 'Switch to WYSIWYG Editor',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Set Changelog',
+ 'pages_edit_enter_changelog_desc' => 'Enter a brief description of the changes you\'ve made',
+ 'pages_edit_enter_changelog' => 'Enter Changelog',
+ 'pages_editor_switch_title' => 'Switch Editor',
+ 'pages_editor_switch_are_you_sure' => 'Are you sure you want to change the editor for this page?',
+ 'pages_editor_switch_consider_following' => 'Consider the following when changing editors:',
+ 'pages_editor_switch_consideration_a' => 'Once saved, the new editor option will be used by any future editors, including those that may not be able to change editor type themselves.',
+ 'pages_editor_switch_consideration_b' => 'This can potentially lead to a loss of detail and syntax in certain circumstances.',
+ 'pages_editor_switch_consideration_c' => 'Tag or changelog changes, made since last save, won\'t persist across this change.',
+ 'pages_save' => 'Save Page',
+ 'pages_title' => 'Page Title',
+ 'pages_name' => 'Page Name',
+ 'pages_md_editor' => 'Editor',
+ 'pages_md_preview' => 'Preview',
+ 'pages_md_insert_image' => 'Insert Image',
+ 'pages_md_insert_link' => 'Insert Entity Link',
+ 'pages_md_insert_drawing' => 'Insert Drawing',
+ 'pages_md_show_preview' => 'Show preview',
+ 'pages_md_sync_scroll' => 'Sync preview scroll',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Unsaved Drawing Found',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'Page is not in a chapter',
+ 'pages_move' => 'Move Page',
+ 'pages_copy' => 'Copy Page',
+ 'pages_copy_desination' => 'Copy Destination',
+ 'pages_copy_success' => 'Page successfully copied',
+ 'pages_permissions' => 'Page Permissions',
+ 'pages_permissions_success' => 'Page permissions updated',
+ 'pages_revision' => 'Revision',
+ 'pages_revisions' => 'Page Revisions',
+ 'pages_revisions_desc' => 'Listed below are all the past revisions of this page. You can look back upon, compare, and restore old page versions if permissions allow. The full history of the page may not be fully reflected here since, depending on system configuration, old revisions could be auto-deleted.',
+ 'pages_revisions_named' => 'Page Revisions for :pageName',
+ 'pages_revision_named' => 'Page Revision for :pageName',
+ 'pages_revision_restored_from' => 'Restored from #:id; :summary',
+ 'pages_revisions_created_by' => 'Created By',
+ 'pages_revisions_date' => 'Revision Date',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revision Number',
+ 'pages_revisions_numbered' => 'Revision #:id',
+ 'pages_revisions_numbered_changes' => 'Revision #:id Changes',
+ 'pages_revisions_editor' => 'Editor Type',
+ 'pages_revisions_changelog' => 'Changelog',
+ 'pages_revisions_changes' => 'Changes',
+ 'pages_revisions_current' => 'Current Version',
+ 'pages_revisions_preview' => 'Preview',
+ 'pages_revisions_restore' => 'Restore',
+ 'pages_revisions_none' => 'This page has no revisions',
+ 'pages_copy_link' => 'Copy Link',
+ 'pages_edit_content_link' => 'Jump to section in editor',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Page Section Options',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Page Permissions Active',
+ 'pages_initial_revision' => 'Initial publish',
+ 'pages_references_update_revision' => 'System auto-update of internal links',
+ 'pages_initial_name' => 'New Page',
+ 'pages_editing_draft_notification' => 'You are currently editing a draft that was last saved :timeDiff.',
+ 'pages_draft_edited_notification' => 'This page has been updated by since that time. It is recommended that you discard this draft.',
+ 'pages_draft_page_changed_since_creation' => 'This page has been updated since this draft was created. It is recommended that you discard this draft or take care not to overwrite any page changes.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count users have started editing this page',
+ 'start_b' => ':userName has started editing this page',
+ 'time_a' => 'since the page was last updated',
+ 'time_b' => 'in the last :minCount minutes',
+ 'message' => ':start :time. Take care not to overwrite each other\'s updates!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'Specific Page',
+ 'pages_is_template' => 'Page Template',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'Page Tags',
+ 'chapter_tags' => 'Chapter Tags',
+ 'book_tags' => 'Book Tags',
+ 'shelf_tags' => 'Shelf Tags',
+ 'tag' => 'Tag',
+ 'tags' => 'Tags',
+ 'tags_index_desc' => 'Tags can be applied to content within the system to apply a flexible form of categorization. Tags can have both a key and value, with the value being optional. Once applied, content can then be queried using the tag name and value.',
+ 'tag_name' => 'Tag Name',
+ 'tag_value' => 'Tag Value (Optional)',
+ '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' => 'Add another tag',
+ 'tags_remove' => 'Remove this tag',
+ 'tags_usages' => 'Total tag usages',
+ 'tags_assigned_pages' => 'Assigned to Pages',
+ 'tags_assigned_chapters' => 'Assigned to Chapters',
+ 'tags_assigned_books' => 'Assigned to Books',
+ 'tags_assigned_shelves' => 'Assigned to Shelves',
+ 'tags_x_unique_values' => ':count unique values',
+ 'tags_all_values' => 'All values',
+ 'tags_view_tags' => 'View Tags',
+ 'tags_view_existing_tags' => 'View existing tags',
+ 'tags_list_empty_hint' => 'Tags can be assigned via the page editor sidebar or while editing the details of a book, chapter or shelf.',
+ 'attachments' => 'Attachments',
+ 'attachments_explain' => 'Upload some files or attach some links to display on your page. These are visible in the page sidebar.',
+ 'attachments_explain_instant_save' => 'Changes here are saved instantly.',
+ 'attachments_upload' => 'Upload File',
+ 'attachments_link' => 'Attach Link',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'Set Link',
+ 'attachments_delete' => 'Are you sure you want to delete this attachment?',
+ 'attachments_dropzone' => 'Drop files here to upload',
+ 'attachments_no_files' => 'No files have been uploaded',
+ 'attachments_explain_link' => 'You can attach a link if you\'d prefer not to upload a file. This can be a link to another page or a link to a file in the cloud.',
+ 'attachments_link_name' => 'Link Name',
+ 'attachment_link' => 'Attachment link',
+ 'attachments_link_url' => 'Link to file',
+ 'attachments_link_url_hint' => 'Url of site or file',
+ 'attach' => 'Attach',
+ 'attachments_insert_link' => 'Add Attachment Link to Page',
+ 'attachments_edit_file' => 'Edit File',
+ 'attachments_edit_file_name' => 'File Name',
+ 'attachments_edit_drop_upload' => 'Drop files or click here to upload and overwrite',
+ 'attachments_order_updated' => 'Attachment order updated',
+ 'attachments_updated_success' => 'Attachment details updated',
+ 'attachments_deleted' => 'Attachment deleted',
+ 'attachments_file_uploaded' => 'File successfully uploaded',
+ 'attachments_file_updated' => 'File successfully updated',
+ 'attachments_link_attached' => 'Link successfully attached to page',
+ 'templates' => 'Templates',
+ 'templates_set_as_template' => 'Page is a template',
+ 'templates_explain_set_as_template' => 'You can set this page as a template so its contents be utilized when creating other pages. Other users will be able to use this template if they have view permissions for this page.',
+ 'templates_replace_content' => 'Replace page content',
+ 'templates_append_content' => 'Append to page content',
+ 'templates_prepend_content' => 'Prepend to page content',
+
+ // Profile View
+ 'profile_user_for_x' => 'User for :time',
+ 'profile_created_content' => 'Created Content',
+ 'profile_not_created_pages' => ':userName has not created any pages',
+ 'profile_not_created_chapters' => ':userName has not created any chapters',
+ 'profile_not_created_books' => ':userName has not created any books',
+ 'profile_not_created_shelves' => ':userName has not created any shelves',
+
+ // Comments
+ 'comment' => 'Comment',
+ 'comments' => 'Comments',
+ 'comment_add' => 'Add Comment',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Leave a comment here',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Save Comment',
+ 'comment_new' => 'New Comment',
+ 'comment_created' => 'commented :createDiff',
+ 'comment_updated' => 'Updated :updateDiff by :username',
+ 'comment_updated_indicator' => 'Updated',
+ 'comment_deleted_success' => 'Comment deleted',
+ 'comment_created_success' => 'Comment added',
+ 'comment_updated_success' => 'Comment updated',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Are you sure you want to delete this comment?',
+ 'comment_in_reply_to' => 'In reply to :commentId',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Here are the comments that have been left on this page. Comments can be added & managed when viewing the saved page.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Are you sure you want to delete this revision?',
+ 'revision_restore_confirm' => 'Are you sure you want to restore this revision? The current page contents will be replaced.',
+ 'revision_cannot_delete_latest' => 'Cannot delete the latest revision.',
+
+ // Copy view
+ 'copy_consider' => 'Please consider the below when copying content.',
+ 'copy_consider_permissions' => 'Custom permission settings will not be copied.',
+ 'copy_consider_owner' => 'You will become the owner of all copied content.',
+ 'copy_consider_images' => 'Page image files will not be duplicated & the original images will retain their relation to the page they were originally uploaded to.',
+ 'copy_consider_attachments' => 'Page attachments will not be copied.',
+ 'copy_consider_access' => 'A change of location, owner or permissions may result in this content being accessible to those previously without access.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Convert to Shelf',
+ 'convert_to_shelf_contents_desc' => 'You can convert this book to a new shelf with the same contents. Chapters contained within this book will be converted to new books. If this book contains any pages, that are not in a chapter, this book will be renamed and contain such pages, and this book will become part of the new shelf.',
+ 'convert_to_shelf_permissions_desc' => 'Any permissions set on this book will be copied to the new shelf and to all new child books that don\'t have their own permissions enforced. Note that permissions on shelves do not auto-cascade to content within, as they do for books.',
+ 'convert_book' => 'Convert Book',
+ 'convert_book_confirm' => 'Are you sure you want to convert this book?',
+ 'convert_undo_warning' => 'This cannot be as easily undone.',
+ 'convert_to_book' => 'Convert to Book',
+ 'convert_to_book_desc' => 'You can convert this chapter to a new book with the same contents. Any permissions set on this chapter will be copied to the new book but any inherited permissions, from the parent book, will not be copied which could lead to a change of access control.',
+ 'convert_chapter' => 'Convert Chapter',
+ 'convert_chapter_confirm' => 'Are you sure you want to convert this chapter?',
+
+ // References
+ 'references' => 'References',
+ 'references_none' => 'There are no tracked references to this item.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Watch',
+ 'watch_title_default' => 'Default Preferences',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignore',
+ 'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
+ 'watch_title_new' => 'New Pages',
+ 'watch_desc_new' => 'Notify when any new page is created within this item.',
+ 'watch_title_updates' => 'All Page Updates',
+ 'watch_desc_updates' => 'Notify upon all new pages and page changes.',
+ 'watch_desc_updates_page' => 'Notify upon all page changes.',
+ 'watch_title_comments' => 'All Page Updates & Comments',
+ 'watch_desc_comments' => 'Notify upon all new pages, page changes and new comments.',
+ 'watch_desc_comments_page' => 'Notify upon page changes and new comments.',
+ 'watch_change_default' => 'Change default notification preferences',
+ 'watch_detail_ignore' => 'Ignoring notifications',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/tk/errors.php b/lang/tk/errors.php
new file mode 100644
index 00000000000..20537d59f0c
--- /dev/null
+++ b/lang/tk/errors.php
@@ -0,0 +1,135 @@
+ 'You do not have permission to access the requested page.',
+ 'permissionJson' => 'You do not have permission to perform the requested action.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'A user with the email :email already exists but with different credentials.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'Email has already been confirmed, Try logging in.',
+ 'email_confirmation_invalid' => 'This confirmation token is not valid or has already been used, Please try registering again.',
+ 'email_confirmation_expired' => 'The confirmation token has expired, A new confirmation email has been sent.',
+ 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed',
+ 'ldap_fail_anonymous' => 'LDAP access failed using anonymous bind',
+ 'ldap_fail_authed' => 'LDAP access failed using given dn & password details',
+ 'ldap_extension_not_installed' => 'LDAP PHP extension not installed',
+ 'ldap_cannot_connect' => 'Cannot connect to ldap server, Initial connection failed',
+ 'saml_already_logged_in' => 'Already logged in',
+ 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.',
+ 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'oidc_already_logged_in' => 'Already logged in',
+ 'oidc_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system',
+ 'oidc_fail_authed' => 'Login using :system failed, system did not provide successful authorization',
+ 'social_no_action_defined' => 'No action defined',
+ 'social_login_bad_response' => "Error received during :socialAccount login: \n:error",
+ 'social_account_in_use' => 'This :socialAccount account is already in use, Try logging in via the :socialAccount option.',
+ 'social_account_email_in_use' => 'The email :email is already in use. If you already have an account you can connect your :socialAccount account from your profile settings.',
+ 'social_account_existing' => 'This :socialAccount is already attached to your profile.',
+ 'social_account_already_used_existing' => 'This :socialAccount account is already used by another user.',
+ 'social_account_not_used' => 'This :socialAccount account is not linked to any users. Please attach it in your profile settings. ',
+ 'social_account_register_instructions' => 'If you do not yet have an account, You can register an account using the :socialAccount option.',
+ 'social_driver_not_found' => 'Social driver not found',
+ 'social_driver_not_configured' => 'Your :socialAccount social settings are not configured correctly.',
+ 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // System
+ 'path_not_writable' => 'File path :filePath could not be uploaded to. Ensure it is writable to the server.',
+ 'cannot_get_image_from_url' => 'Cannot get image from :url',
+ 'cannot_create_thumbs' => 'The server cannot create thumbnails. Please check you have the GD PHP extension installed.',
+ 'server_upload_limit' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+ 'server_post_limit' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.',
+ 'uploaded' => 'The server does not allow uploads of this size. Please try a smaller file size.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'An error occurred uploading the image',
+ 'image_upload_type_error' => 'The image type being uploaded is invalid',
+ 'image_upload_replace_type' => 'Image file replacements must be of the same type',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Drawing data could not be loaded. The drawing file might no longer exist or you may not have permission to access it.',
+
+ // Attachments
+ 'attachment_not_found' => 'Attachment not found',
+ 'attachment_upload_error' => 'An error occurred uploading the attachment file',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Failed to save draft. Ensure you have internet connection before saving this page',
+ 'page_draft_delete_fail' => 'Failed to delete page draft and fetch current page saved content',
+ 'page_custom_home_deletion' => 'Cannot delete a page while it is set as a homepage',
+
+ // Entities
+ 'entity_not_found' => 'Entity not found',
+ 'bookshelf_not_found' => 'Shelf not found',
+ 'book_not_found' => 'Book not found',
+ 'page_not_found' => 'Page not found',
+ 'chapter_not_found' => 'Chapter not found',
+ 'selected_book_not_found' => 'The selected book was not found',
+ 'selected_book_chapter_not_found' => 'The selected Book or Chapter was not found',
+ 'guests_cannot_save_drafts' => 'Guests cannot save drafts',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'You cannot delete the only admin',
+ 'users_cannot_delete_guest' => 'You cannot delete the guest user',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'This role cannot be edited',
+ 'role_system_cannot_be_deleted' => 'This role is a system role and cannot be deleted',
+ 'role_registration_default_cannot_delete' => 'This role cannot be deleted while set as the default registration role',
+ 'role_cannot_remove_only_admin' => 'This user is the only user assigned to the administrator role. Assign the administrator role to another user before attempting to remove it here.',
+
+ // Comments
+ 'comment_list' => 'An error occurred while fetching the comments.',
+ 'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.',
+ 'comment_add' => 'An error occurred while adding / updating the comment.',
+ 'comment_delete' => 'An error occurred while deleting the comment.',
+ 'empty_comment' => 'Cannot add an empty comment.',
+
+ // Error pages
+ '404_page_not_found' => 'Page Not Found',
+ 'sorry_page_not_found' => 'Sorry, The page you were looking for could not be found.',
+ 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.',
+ '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' => 'Return to home',
+ 'error_occurred' => 'An Error Occurred',
+ 'app_down' => ':appName is down right now',
+ 'back_soon' => 'It will be back up soon.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'No authorization token found on the request',
+ 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect',
+ 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token',
+ 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect',
+ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls',
+ 'api_user_token_expired' => 'The authorization token used has expired',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Error thrown when sending a test email:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'The URL does not match the configured allowed SSR hosts',
+];
diff --git a/lang/tk/notifications.php b/lang/tk/notifications.php
new file mode 100644
index 00000000000..563ac24e84d
--- /dev/null
+++ b/lang/tk/notifications.php
@@ -0,0 +1,29 @@
+ 'New comment on page: :pageName',
+ 'new_comment_intro' => 'A user has commented on a page in :appName:',
+ 'new_page_subject' => 'New page: :pageName',
+ 'new_page_intro' => 'A new page has been created in :appName:',
+ 'updated_page_subject' => 'Updated page: :pageName',
+ 'updated_page_intro' => 'A page has been updated in :appName:',
+ 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Page Name:',
+ 'detail_page_path' => 'Page Path:',
+ 'detail_commenter' => 'Commenter:',
+ 'detail_comment' => 'Comment:',
+ 'detail_created_by' => 'Created By:',
+ 'detail_updated_by' => 'Updated By:',
+
+ 'action_view_comment' => 'View Comment',
+ 'action_view_page' => 'View Page',
+
+ 'footer_reason' => 'This notification was sent to you because :link cover this type of activity for this item.',
+ 'footer_reason_link' => 'your notification preferences',
+];
diff --git a/lang/tk/pagination.php b/lang/tk/pagination.php
new file mode 100644
index 00000000000..85bd12fc319
--- /dev/null
+++ b/lang/tk/pagination.php
@@ -0,0 +1,12 @@
+ '« Previous',
+ 'next' => 'Next »',
+
+];
diff --git a/lang/tk/passwords.php b/lang/tk/passwords.php
new file mode 100644
index 00000000000..b408f3c2fda
--- /dev/null
+++ b/lang/tk/passwords.php
@@ -0,0 +1,15 @@
+ 'Passwords must be at least eight characters and match the confirmation.',
+ 'user' => "We can't find a user with that e-mail address.",
+ 'token' => 'The password reset token is invalid for this email address.',
+ 'sent' => 'We have e-mailed your password reset link!',
+ 'reset' => 'Your password has been reset!',
+
+];
diff --git a/lang/tk/preferences.php b/lang/tk/preferences.php
new file mode 100644
index 00000000000..f4459d738e4
--- /dev/null
+++ b/lang/tk/preferences.php
@@ -0,0 +1,52 @@
+ 'My Account',
+
+ 'shortcuts' => 'Shortcuts',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Here you can enable or disable keyboard system interface shortcuts, used for navigation and actions.',
+ 'shortcuts_customize_desc' => 'You can customize each of the shortcuts below. Just press your desired key combination after selecting the input for a shortcut.',
+ 'shortcuts_toggle_label' => 'Keyboard shortcuts enabled',
+ 'shortcuts_section_navigation' => 'Navigation',
+ 'shortcuts_section_actions' => 'Common Actions',
+ 'shortcuts_save' => 'Save Shortcuts',
+ 'shortcuts_overlay_desc' => 'Note: When shortcuts are enabled a helper overlay is available via pressing "?" which will highlight the available shortcuts for actions currently visible on the screen.',
+ 'shortcuts_update_success' => 'Shortcut preferences have been updated!',
+ 'shortcuts_overview_desc' => 'Manage keyboard shortcuts you can use to navigate the system user interface.',
+
+ 'notifications' => 'Notification Preferences',
+ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.',
+ 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own',
+ 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notify upon replies to my comments',
+ 'notifications_save' => 'Save Preferences',
+ 'notifications_update_success' => 'Notification preferences have been updated!',
+ 'notifications_watched' => 'Watched & Ignored Items',
+ 'notifications_watched_desc' => 'Below are the items that have custom watch preferences applied. To update your preferences for these, view the item then find the watch options in the sidebar.',
+
+ 'auth' => 'Access & Security',
+ 'auth_change_password' => 'Change Password',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Password has been updated!',
+
+ 'profile' => 'Profile Details',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'View Public Profile',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Delete Account',
+ 'delete_my_account' => 'Delete My Account',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/tk/settings.php b/lang/tk/settings.php
new file mode 100644
index 00000000000..c4d1eb136eb
--- /dev/null
+++ b/lang/tk/settings.php
@@ -0,0 +1,374 @@
+ 'Settings',
+ 'settings_save' => 'Save Settings',
+ 'system_version' => 'System Version',
+ 'categories' => 'Categories',
+
+ // App Settings
+ 'app_customization' => 'Customization',
+ 'app_features_security' => 'Features & Security',
+ 'app_name' => 'Application Name',
+ 'app_name_desc' => 'This name is shown in the header and in any system-sent emails.',
+ 'app_name_header' => 'Show name in header',
+ 'app_public_access' => 'Public Access',
+ 'app_public_access_desc' => 'Enabling this option will allow visitors, that are not logged-in, to access content in your BookStack instance.',
+ 'app_public_access_desc_guest' => 'Access for public visitors can be controlled through the "Guest" user.',
+ 'app_public_access_toggle' => 'Allow public access',
+ 'app_public_viewing' => 'Allow public viewing?',
+ 'app_secure_images' => 'Higher Security Image Uploads',
+ 'app_secure_images_toggle' => 'Enable higher security image uploads',
+ 'app_secure_images_desc' => 'For performance reasons, all images are public. This option adds a random, hard-to-guess string in front of image urls. Ensure directory indexes are not enabled to prevent easy access.',
+ 'app_default_editor' => 'Default Page Editor',
+ 'app_default_editor_desc' => 'Select which editor will be used by default when editing new pages. This can be overridden at a page level where permissions allow.',
+ 'app_custom_html' => 'Custom HTML Head Content',
+ 'app_custom_html_desc' => 'Any content added here will be inserted into the bottom of the section of every page. This is handy for overriding styles or adding analytics code.',
+ 'app_custom_html_disabled_notice' => 'Custom HTML head content is disabled on this settings page to ensure any breaking changes can be reverted.',
+ 'app_logo' => 'Application Logo',
+ 'app_logo_desc' => 'This is used in the application header bar, among other areas. This image should be 86px in height. Large images will be scaled down.',
+ 'app_icon' => 'Application Icon',
+ 'app_icon_desc' => 'This icon is used for browser tabs and shortcut icons. This should be a 256px square PNG image.',
+ '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::" 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' => 'Disable Comments',
+ 'app_disable_comments_toggle' => 'Disable comments',
+ 'app_disable_comments_desc' => 'Disables comments across all pages in the application. Existing comments are not shown.',
+
+ // Color settings
+ 'color_scheme' => 'Application Color Scheme',
+ 'color_scheme_desc' => 'Set the colors to use in the application user interface. Colors can be configured separately for dark and light modes to best fit the theme and ensure legibility.',
+ 'ui_colors_desc' => 'Set the application primary color and default link color. The primary color is mainly used for the header banner, buttons and interface decorations. The default link color is used for text-based links and actions, both within written content and in the application interface.',
+ 'app_color' => 'Primary Color',
+ 'link_color' => 'Default Link Color',
+ 'content_colors_desc' => 'Set colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'bookshelf_color' => 'Shelf Color',
+ 'book_color' => 'Book Color',
+ 'chapter_color' => 'Chapter Color',
+ 'page_color' => 'Page Color',
+ 'page_draft_color' => 'Page Draft Color',
+
+ // Registration Settings
+ 'reg_settings' => 'Registration',
+ 'reg_enable' => 'Enable Registration',
+ 'reg_enable_toggle' => 'Enable registration',
+ 'reg_enable_desc' => 'When registration is enabled user will be able to sign themselves up as an application user. Upon registration they are given a single, default user role.',
+ 'reg_default_role' => 'Default user role after registration',
+ 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.',
+ 'reg_email_confirmation' => 'Email Confirmation',
+ 'reg_email_confirmation_toggle' => 'Require email confirmation',
+ 'reg_confirm_email_desc' => 'If domain restriction is used then email confirmation will be required and this option will be ignored.',
+ 'reg_confirm_restrict_domain' => 'Domain Restriction',
+ 'reg_confirm_restrict_domain_desc' => 'Enter a comma separated list of email domains you would like to restrict registration to. Users will be sent an email to confirm their address before being allowed to interact with the application. Note that users will be able to change their email addresses after successful registration.',
+ 'reg_confirm_restrict_domain_placeholder' => 'No restriction set',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Maintenance',
+ 'maint_image_cleanup' => 'Cleanup Images',
+ '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' => 'Also delete images that only exist in old page revisions',
+ 'maint_image_cleanup_run' => 'Run Cleanup',
+ 'maint_image_cleanup_warning' => ':count potentially unused images were found. Are you sure you want to delete these images?',
+ 'maint_image_cleanup_success' => ':count potentially unused images found and deleted!',
+ '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_regen_references' => 'Regenerate References',
+ 'maint_regen_references_desc' => 'This action will rebuild the cross-item reference index within the database. This is usually handled automatically but this action can be useful to index old content or content added via unofficial methods.',
+ 'maint_regen_references_success' => 'Reference index has been regenerated!',
+ 'maint_timeout_command_note' => 'Note: This action can take time to run, which can lead to timeout issues in some web environments. As an alternative, this action be performed using a terminal command.',
+
+ // 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_parent' => 'Parent',
+ '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 from the system, along with any child elements listed below, 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_restore_parent' => 'Restore Parent',
+ '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 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_table_related' => 'Related Item or Detail',
+ 'audit_table_ip' => 'IP Address',
+ 'audit_table_date' => 'Activity Date',
+ 'audit_date_from' => 'Date Range From',
+ 'audit_date_to' => 'Date Range To',
+
+ // Role Settings
+ 'roles' => 'Roles',
+ 'role_user_roles' => 'User Roles',
+ 'roles_index_desc' => 'Roles are used to group users & provide system permission to their members. When a user is a member of multiple roles the privileges granted will stack and the user will inherit all abilities.',
+ 'roles_x_users_assigned' => ':count user assigned|:count users assigned',
+ 'roles_x_permissions_provided' => ':count permission|:count permissions',
+ 'roles_assigned_users' => 'Assigned Users',
+ 'roles_permissions_provided' => 'Provided Permissions',
+ 'role_create' => 'Create New Role',
+ '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_edit' => 'Edit Role',
+ 'role_details' => 'Role Details',
+ 'role_name' => 'Role Name',
+ 'role_desc' => 'Short Description of Role',
+ 'role_mfa_enforced' => 'Requires Multi-Factor Authentication',
+ 'role_external_auth_id' => 'External Authentication IDs',
+ 'role_system' => 'System Permissions',
+ 'role_manage_users' => 'Manage users',
+ 'role_manage_roles' => 'Manage roles & role permissions',
+ 'role_manage_entity_permissions' => 'Manage all book, chapter & page permissions',
+ 'role_manage_own_entity_permissions' => 'Manage permissions on own book, chapter & pages',
+ 'role_manage_page_templates' => 'Manage page templates',
+ 'role_access_api' => 'Access system API',
+ 'role_manage_settings' => 'Manage app settings',
+ 'role_export_content' => 'Export content',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Change page editor',
+ 'role_notifications' => 'Receive & manage notifications',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Asset Permissions',
+ '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' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.',
+ 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.',
+ 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'All',
+ 'role_own' => 'Own',
+ 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to',
+ 'role_save' => 'Save Role',
+ 'role_users' => 'Users in this role',
+ 'role_users_none' => 'No users are currently assigned to this role',
+
+ // Users
+ 'users' => 'Users',
+ 'users_index_desc' => 'Create & manage individual user accounts within the system. User accounts are used for login and attribution of content & activity. Access permissions are primarily role-based but user content ownership, among other factors, may also affect permissions & access.',
+ 'user_profile' => 'User Profile',
+ 'users_add_new' => 'Add New User',
+ 'users_search' => 'Search Users',
+ 'users_latest_activity' => 'Latest Activity',
+ 'users_details' => 'User 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',
+ 'users_role_desc' => 'Select which roles this user will be assigned to. If a user is assigned to multiple roles the permissions from those roles will stack and they will receive all abilities of the assigned roles.',
+ 'users_password' => 'User Password',
+ 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 8 characters long.',
+ 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.',
+ 'users_send_invite_option' => 'Send user invite email',
+ 'users_external_auth_id' => 'External Authentication ID',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ '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_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_edit' => 'Edit User',
+ 'users_edit_profile' => 'Edit Profile',
+ 'users_avatar' => 'User Avatar',
+ 'users_avatar_desc' => 'Select an image to represent this user. This should be approx 256px square.',
+ 'users_preferred_language' => 'Preferred Language',
+ 'users_preferred_language_desc' => 'This option will change the language used for the user-interface of the application. This will not affect any user-created content.',
+ 'users_social_accounts' => 'Social Accounts',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not revoke previously authorized access. Revoke access from your profile settings on the connected social account.',
+ 'users_social_connect' => 'Connect Account',
+ 'users_social_disconnect' => 'Disconnect Account',
+ 'users_social_status_connected' => 'Connected',
+ 'users_social_status_disconnected' => 'Disconnected',
+ 'users_social_connected' => ':socialAccount account was successfully attached to your profile.',
+ 'users_social_disconnected' => ':socialAccount account was successfully disconnected from your profile.',
+ 'users_api_tokens' => 'API Tokens',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'No API tokens have been created for this user',
+ 'users_api_tokens_create' => 'Create Token',
+ 'users_api_tokens_expires' => 'Expires',
+ 'users_api_tokens_docs' => 'API Documentation',
+ 'users_mfa' => 'Multi-Factor Authentication',
+ 'users_mfa_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'users_mfa_x_methods' => ':count method configured|:count methods configured',
+ 'users_mfa_configure' => 'Configure Methods',
+
+ // API Tokens
+ 'user_api_token_create' => 'Create API Token',
+ 'user_api_token_name' => 'Name',
+ 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.',
+ 'user_api_token_expiry' => 'Expiry Date',
+ 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.',
+ 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.',
+ 'user_api_token' => 'API Token',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.',
+ 'user_api_token_secret' => 'Token Secret',
+ 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.',
+ 'user_api_token_created' => 'Token created :timeAgo',
+ 'user_api_token_updated' => 'Token updated :timeAgo',
+ 'user_api_token_delete' => 'Delete Token',
+ 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.',
+ 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks are a way to send data to external URLs when certain actions and events occur within the system which allows event-based integration with external platforms such as messaging or notification systems.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'Create New Webhook',
+ 'webhooks_none_created' => 'No webhooks have yet been created.',
+ 'webhooks_edit' => 'Edit Webhook',
+ 'webhooks_save' => 'Save Webhook',
+ 'webhooks_details' => 'Webhook Details',
+ 'webhooks_details_desc' => 'Provide a user friendly name and a POST endpoint as a location for the webhook data to be sent to.',
+ 'webhooks_events' => 'Webhook Events',
+ 'webhooks_events_desc' => 'Select all the events that should trigger this webhook to be called.',
+ 'webhooks_events_warning' => 'Keep in mind that these events will be triggered for all selected events, even if custom permissions are applied. Ensure that use of this webhook won\'t expose confidential content.',
+ 'webhooks_events_all' => 'All system events',
+ 'webhooks_name' => 'Webhook Name',
+ 'webhooks_timeout' => 'Webhook Request Timeout (Seconds)',
+ 'webhooks_endpoint' => 'Webhook Endpoint',
+ 'webhooks_active' => 'Webhook Active',
+ 'webhook_events_table_header' => 'Events',
+ 'webhooks_delete' => 'Delete Webhook',
+ 'webhooks_delete_warning' => 'This will fully delete this webhook, with the name \':webhookName\', from the system.',
+ 'webhooks_delete_confirm' => 'Are you sure you want to delete this webhook?',
+ 'webhooks_format_example' => 'Webhook Format Example',
+ 'webhooks_format_example_desc' => 'Webhook data is sent as a POST request to the configured endpoint as JSON following the format below. The "related_item" and "url" properties are optional and will depend on the type of event triggered.',
+ 'webhooks_status' => 'Webhook Status',
+ 'webhooks_last_called' => 'Last Called:',
+ 'webhooks_last_errored' => 'Last Errored:',
+ 'webhooks_last_error_message' => 'Last Error Message:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/tk/validation.php b/lang/tk/validation.php
new file mode 100644
index 00000000000..ff028525df3
--- /dev/null
+++ b/lang/tk/validation.php
@@ -0,0 +1,123 @@
+ '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.',
+ 'backup_codes' => 'The provided code is not valid or has already been used.',
+ 'before' => 'The :attribute must be a date before :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.',
+ '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',
+ 'file' => 'The :attribute must be provided as a valid file.',
+ 'filled' => 'The :attribute field is required.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ '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.',
+ 'array' => 'The :attribute may not have more than :max items.',
+ ],
+ 'mimes' => 'The :attribute must be a file of type: :values.',
+ 'min' => [
+ 'numeric' => 'The :attribute must be at least :min.',
+ 'file' => 'The :attribute must be at least :min kilobytes.',
+ 'string' => 'The :attribute must be at least :min characters.',
+ 'array' => 'The :attribute must have at least :min items.',
+ ],
+ 'not_in' => 'The selected :attribute is invalid.',
+ 'not_regex' => 'The :attribute format is invalid.',
+ 'numeric' => 'The :attribute must be a number.',
+ 'regex' => 'The :attribute format is invalid.',
+ 'required' => 'The :attribute field is required.',
+ 'required_if' => 'The :attribute field is required when :other is :value.',
+ 'required_with' => 'The :attribute field is required when :values is present.',
+ 'required_with_all' => 'The :attribute field is required when :values is present.',
+ 'required_without' => 'The :attribute field is required when :values is not present.',
+ 'required_without_all' => 'The :attribute field is required when none of :values are present.',
+ 'same' => 'The :attribute and :other must match.',
+ 'safe_url' => 'The provided link may not be safe.',
+ 'size' => [
+ 'numeric' => 'The :attribute must be :size.',
+ 'file' => 'The :attribute must be :size kilobytes.',
+ 'string' => 'The :attribute must be :size characters.',
+ 'array' => 'The :attribute must contain :size items.',
+ ],
+ 'string' => 'The :attribute must be a string.',
+ 'timezone' => 'The :attribute must be a valid zone.',
+ 'totp' => 'The provided code is not valid or has expired.',
+ 'unique' => 'The :attribute has already been taken.',
+ 'url' => 'The :attribute format is invalid.',
+ 'uploaded' => 'The file could not be uploaded. The server may not accept files of this size.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Password confirmation required',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/tr/activities.php b/lang/tr/activities.php
new file mode 100644
index 00000000000..5bed9ea303b
--- /dev/null
+++ b/lang/tr/activities.php
@@ -0,0 +1,140 @@
+ 'sayfa oluşturdu',
+ 'page_create_notification' => 'Sayfa Başarıyla Oluşturuldu',
+ 'page_update' => 'sayfayı güncelledi',
+ 'page_update_notification' => 'Sayfa başarıyla güncellendi',
+ 'page_delete' => 'sayfa silindi',
+ 'page_delete_notification' => 'Sayfa başarıyla silindi',
+ 'page_restore' => 'sayfayı eski haline getirdi',
+ 'page_restore_notification' => 'Sayfa Başarıyla Eski Haline Getirildi',
+ 'page_move' => 'sayfa taşındı',
+ 'page_move_notification' => 'Sayfa başarıyla taşındı',
+
+ // Chapters
+ 'chapter_create' => 'bölüm oluşturdu',
+ 'chapter_create_notification' => 'Bölüm başarıyla oluşturuldu',
+ 'chapter_update' => 'bölümü güncelledi',
+ 'chapter_update_notification' => 'Bölüm başarıyla güncellendi',
+ 'chapter_delete' => 'bölümü sildi',
+ 'chapter_delete_notification' => 'Bölüm başarıyla silindi',
+ 'chapter_move' => 'bölümü taşıdı',
+ 'chapter_move_notification' => 'Bölüm başarıyla taşındı',
+
+ // Books
+ 'book_create' => 'kitap oluşturdu',
+ 'book_create_notification' => 'Kitap başarıyla oluşturuldu',
+ 'book_create_from_chapter' => 'converted chapter to book',
+ 'book_create_from_chapter_notification' => 'Bölüm başarıyla kitaba dönüştürüldü',
+ 'book_update' => 'güncellenen kitap',
+ 'book_update_notification' => 'Kitap başarıyla güncellendi',
+ 'book_delete' => 'kitabı sildi',
+ 'book_delete_notification' => 'Kitap başarıyla silindi',
+ 'book_sort' => 'kitabı sıraladı',
+ 'book_sort_notification' => 'Kitap başarıyla yeniden sıralandı',
+
+ // Bookshelves
+ 'bookshelf_create' => 'kitaplık oluşturuldu',
+ 'bookshelf_create_notification' => 'Kitaplık başarıyla oluşturuldu',
+ 'bookshelf_create_from_book' => 'converted book to shelf',
+ 'bookshelf_create_from_book_notification' => 'Kitap başarıyla kitaplığa dönüştürüldü',
+ 'bookshelf_update' => 'updated shelf',
+ 'bookshelf_update_notification' => 'Kitaplık başarıyla güncellendi',
+ 'bookshelf_delete' => 'deleted shelf',
+ 'bookshelf_delete_notification' => 'Kitaplık başarıyla silindi',
+
+ // Revisions
+ 'revision_restore' => 'geri yüklenen revizyon',
+ 'revision_delete' => 'silinmiş revizyon',
+ 'revision_delete_notification' => 'Değişiklik başarıyla silindi',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" favorilerinize eklendi',
+ 'favourite_remove_notification' => '":name" favorilerinizden çıkarıldı',
+
+ // Watching
+ 'watch_update_level_notification' => 'Watch preferences successfully updated',
+
+ // Auth
+ 'auth_login' => 'oturum açıldı',
+ 'auth_register' => 'yeni kullanıcı olarak kayıt yapıldı',
+ 'auth_password_reset_request' => 'talep edilmiş kullanıcı parola sıfırlamaları',
+ 'auth_password_reset_update' => 'Kullanıcı parolasını sıfırla',
+ 'mfa_setup_method' => 'uygulanan MFA yöntemi',
+ 'mfa_setup_method_notification' => 'Çok aşamalı kimlik doğrulama yöntemi başarıyla yapılandırıldı',
+ 'mfa_remove_method' => 'kaldırılan MFA yöntemi',
+ 'mfa_remove_method_notification' => 'Çok aşamalı kimlik doğrulama yöntemi başarıyla kaldırıldı',
+
+ // Settings
+ 'settings_update' => 'güncellenmiş ayarlar',
+ 'settings_update_notification' => 'Ayarlar başarıyla güncellendi',
+ 'maintenance_action_run' => 'bakım işlemine başla',
+
+ // Webhooks
+ 'webhook_create' => 'web kancası oluşturuldu',
+ 'webhook_create_notification' => 'Web kancası başarıyla oluşturuldu',
+ 'webhook_update' => 'web kancası güncellendi',
+ 'webhook_update_notification' => 'Web kancası başarıyla güncellendi',
+ 'webhook_delete' => 'web kancası silindi',
+ 'webhook_delete_notification' => 'Web kancası başarıyla silindi',
+
+ // Imports
+ 'import_create' => 'created import',
+ 'import_create_notification' => 'Import successfully uploaded',
+ 'import_run' => 'updated import',
+ 'import_run_notification' => 'Content successfully imported',
+ 'import_delete' => 'deleted import',
+ 'import_delete_notification' => 'Import successfully deleted',
+
+ // Users
+ 'user_create' => 'oluşturan kullanıcı',
+ 'user_create_notification' => 'Kullanıcı başarıyla oluşturuldu',
+ 'user_update' => 'updated user',
+ 'user_update_notification' => 'Kullanıcı başarıyla güncellendi',
+ 'user_delete' => 'kullanıcı silindi',
+ 'user_delete_notification' => 'Kullanıcı başarıyla silindi',
+
+ // API Tokens
+ 'api_token_create' => 'created API token',
+ 'api_token_create_notification' => 'API anahtarı başarıyla oluşturuldu',
+ 'api_token_update' => 'updated API token',
+ 'api_token_update_notification' => 'API anahtarı başarıyla güncellendi',
+ 'api_token_delete' => 'deleted API token',
+ 'api_token_delete_notification' => 'API anahtarı başarıyla silindi',
+
+ // Roles
+ 'role_create' => 'oluşturulan rol',
+ 'role_create_notification' => 'Rol başarıyla oluşturuldu',
+ 'role_update' => 'güncellenmiş rol',
+ 'role_update_notification' => 'Rol başarıyla güncellendi',
+ 'role_delete' => 'deleted role',
+ 'role_delete_notification' => 'Rol başarıyla silindi',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'emptied recycle bin',
+ 'recycle_bin_restore' => 'çöp kutusundan geri getirilen',
+ 'recycle_bin_destroy' => 'çöp kutusundan kaldırılan',
+
+ // Comments
+ 'commented_on' => 'yorum yaptı',
+ 'comment_create' => 'eklenen yorum',
+ 'comment_update' => 'güncellenen yorum',
+ 'comment_delete' => 'silinen yorum',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'güncellenmiş izinler',
+];
diff --git a/lang/tr/auth.php b/lang/tr/auth.php
new file mode 100644
index 00000000000..c9663f21e00
--- /dev/null
+++ b/lang/tr/auth.php
@@ -0,0 +1,117 @@
+ 'Girdiğiniz bilgiler kayıtlarımızla uyuşmuyor.',
+ 'throttle' => 'Çok fazla giriş yapmaya çalıştınız. Lütfen :seconds saniye içinde tekrar deneyin.',
+
+ // Login & Register
+ 'sign_up' => 'Kaydol',
+ 'log_in' => 'Giriş Yap',
+ 'log_in_with' => ':socialDriver ile giriş yap',
+ 'sign_up_with' => ':socialDriver ile kaydol',
+ 'logout' => 'Çıkış Yap',
+
+ 'name' => 'İsim',
+ 'username' => 'Kullanıcı Adı',
+ 'email' => 'E-posta',
+ 'password' => 'Şifre',
+ 'password_confirm' => 'Şifreyi Onaylayın',
+ 'password_hint' => 'En az 8 karakter olmalı',
+ 'forgot_password' => 'Şifrenizi mi unuttunuz?',
+ 'remember_me' => 'Beni Hatırla',
+ 'ldap_email_hint' => 'Bu hesap için kullanmak istediğiniz e-posta adresini giriniz.',
+ 'create_account' => 'Hesap Oluştur',
+ 'already_have_account' => 'Zaten bir hesabınız var mı?',
+ 'dont_have_account' => 'Hesabınız yok mu?',
+ 'social_login' => 'Diğer Servisler ile Giriş Yapın',
+ 'social_registration' => 'Diğer Servisler ile Kaydolun',
+ 'social_registration_text' => 'Başka bir servis aracılığıyla kaydolun ve giriş yapın.',
+
+ 'register_thanks' => 'Kaydolduğunuz için teşekkürler!',
+ 'register_confirm' => ':appName erişimi için lütfen e-posta adresinizi kontrol edin ve size gönderilen doğrulama bağlantısına tıklayın.',
+ 'registrations_disabled' => 'Kayıtlar devre dışı bırakılmıştır',
+ 'registration_email_domain_invalid' => 'Bu e-posta sağlayıcısının uygulamaya erişim izni bulunmuyor',
+ 'register_success' => 'Kaydolduğunuz için teşekkürler! Artık kayıtlı bir kullanıcı olarak giriş yaptınız.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Oturum açılmaya çalışılıyor',
+ 'auto_init_starting_desc' => 'Oturum açma işlemini başlatmak için kimlik doğrulama sisteminizle iletişime geçiyoruz. Eğer 5 saniye sonra herhangi bir ilerleme olmazsa aşağıdaki bağlantıya tıklamayı deneyebilirsiniz.',
+ 'auto_init_start_link' => 'Kimlik doğrulama ile devam edin',
+
+ // Password Reset
+ 'reset_password' => 'Şifreyi Sıfırla',
+ 'reset_password_send_instructions' => 'Aşağıya gireceğiniz e-posta adresine şifre sıfırlama bağlantısı gönderilecektir.',
+ 'reset_password_send_button' => 'Sıfırlama Bağlantısını Gönder',
+ 'reset_password_sent' => 'Şifre sıfırlama bağlantısı, :email adresinin sistemde bulunması durumunda e-posta olarak gönderilecektir.',
+ 'reset_password_success' => 'Şifreniz başarıyla sıfırlandı.',
+ 'email_reset_subject' => ':appName şifrenizi sıfırlayın',
+ 'email_reset_text' => 'Hesap şifrenizi sıfırlama isteğinde bulunduğunuz için bu e-postayı aldınız.',
+ 'email_reset_not_requested' => 'Şifre sıfırlama isteğinde bulunmadıysanız herhangi bir işlem yapmanıza gerek yoktur.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => ':appName için girdiğiniz e-posta adresini doğrulayın',
+ 'email_confirm_greeting' => ':appName uygulamasına katıldığınız için teşekkürler!',
+ 'email_confirm_text' => 'Lütfen aşağıdaki butona tıklayarak e-posta adresinizi doğrulayın:',
+ 'email_confirm_action' => 'E-posta Adresini Doğrula',
+ 'email_confirm_send_error' => 'E-posta adresinin doğrulanması gerekiyor fakat sistem, doğrulama bağlantısını göndermeyi başaramadı. E-posta adresinin doğru bir şekilde ayarlığından emin olmak için yöneticiyle iletişime geçin.',
+ 'email_confirm_success' => 'Email hesabınız onaylandı. Email adresinizi kullanarak giriş yapabilirsiniz.',
+ 'email_confirm_resent' => 'Doğrulama e-postası tekrar gönderildi, lütfen gelen kutunuzu kontrol ediniz.',
+ 'email_confirm_thanks' => 'Onayladığınız için teşekkürler!',
+ 'email_confirm_thanks_desc' => 'Lütfen onayınız işlenirken bir dakika bekleyin. Eğer 3 saniye sonra yönlendirilmediyseniz; devam etmek için aşağıdaki "Devam" linkine basınız.',
+
+ 'email_not_confirmed' => 'E-posta Adresi Doğrulanmadı',
+ 'email_not_confirmed_text' => 'E-posta adresiniz henüz doğrulanmadı.',
+ 'email_not_confirmed_click_link' => 'Lütfen kaydolduktan hemen sonra size gönderilen e-postadaki bağlantıya tıklayın.',
+ 'email_not_confirmed_resend' => 'Eğer e-postayı bulamıyorsanız, aşağıdaki formu doldurarak doğrulama e-postasının tekrar gönderilmesini sağlayabilirsiniz.',
+ 'email_not_confirmed_resend_button' => 'Doğrulama E-postasını Tekrar Gönder',
+
+ // User Invite
+ 'user_invite_email_subject' => ':appName uygulamasına davet edildiniz!',
+ 'user_invite_email_greeting' => ':appName üzerinde sizin için bir hesap oluşturuldu.',
+ 'user_invite_email_text' => 'Hesap şifrenizi belirlemek ve hesabınıza erişim sağlayabilmek için aşağıdaki butona tıklayın:',
+ 'user_invite_email_action' => 'Hesap Şifresini Belirleyin',
+ 'user_invite_page_welcome' => ':appName uygulamasına hoş geldiniz!',
+ 'user_invite_page_text' => 'Hesap kurulumunuzu tamamlamak ve gelecekteki :appName ziyaretlerinizde hesabınıza erişim sağlayabilmeniz için bir şifre belirlemeniz gerekiyor.',
+ 'user_invite_page_confirm_button' => 'Şifreyi Onayla',
+ 'user_invite_success_login' => 'Şifre belirlendi, :appName! uygulamasına giriş yapmak için belirlediğiniz şifreyi kullanabilirsiniz',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Çok Aşamalı Kimlik Doğrulama',
+ 'mfa_setup_desc' => 'Hesabınıza ekstra bir güvenlik katmanı daha eklemek için çok aşamalı kimlik doğrulamayı kurunuz.',
+ 'mfa_setup_configured' => 'Zaten yapılandırıldı',
+ 'mfa_setup_reconfigure' => 'Yeniden yapılandır',
+ 'mfa_setup_remove_confirmation' => '2 adımlı doğrulamayı kaldırmak istediğinize emin misiniz?',
+ 'mfa_setup_action' => 'Ayarlar',
+ 'mfa_backup_codes_usage_limit_warning' => 'Kalan yedekleme kodu sayınız 5\'ten az, hesabınızın kilitlenip kullanım dışı kalmaması için lütfen kodlarınız bitmeden yeni kod üretip saklayınız.',
+ 'mfa_option_totp_title' => 'Mobil Uygulama',
+ 'mfa_option_totp_desc' => 'Çok aşamalı kimlik doğrulamayı kullanabilmek için Google Authenticator, Authy veya Microsoft Authenticator gibi TOTP destekleyen bir mobil uygulamaya ihtiyacınız olacaktır.',
+ 'mfa_option_backup_codes_title' => 'Yedekleme Kodları',
+ 'mfa_option_backup_codes_desc' => 'Generates a set of one-time-use backup codes which you\'ll enter on login to verify your identity. Make sure to store these in a safe & secure place.',
+ 'mfa_gen_confirm_and_enable' => 'Onayla ve aktive et',
+ 'mfa_gen_backup_codes_title' => 'Yedekleme Kodları Kurulumu',
+ 'mfa_gen_backup_codes_desc' => 'Aşağıdaki kod listesini güvenli bir yerde sakla. Sisteme giriş yaparken kodlardan birini ikinci bir kimlik doğrulama mekanizması olarak kullanabileceksin.',
+ 'mfa_gen_backup_codes_download' => 'İndirme Kodları',
+ 'mfa_gen_backup_codes_usage_warning' => 'Her kod tek seferlik kullanılabilir',
+ 'mfa_gen_totp_title' => 'Mobil Uygulama Kurulumu',
+ 'mfa_gen_totp_desc' => 'Çok aşamalı kimlik doğrulamayı kullanabilmek için Google Authenticator, Authy veya Microsoft Authenticator gibi TOTP destekleyen bir mobil uygulamaya ihtiyacınız olacaktır.',
+ 'mfa_gen_totp_scan' => 'Başlamak için aşağıdaki QR kodunu tercih ettiğin kimlik doğrulama uygulamasında tara.',
+ 'mfa_gen_totp_verify_setup' => 'Kurulumu Doğrula',
+ 'mfa_gen_totp_verify_setup_desc' => 'Aşağıdaki kutuya kimlik doğrulama uygulamanızda üretilmiş olan kodu girerek hepsini doğrulayabilirsiniz:',
+ 'mfa_gen_totp_provide_code_here' => 'Uygulamada üretilen kodunuzu buraya giriniz',
+ 'mfa_verify_access' => 'Girişi Doğrula',
+ 'mfa_verify_access_desc' => 'Giriş yapmadan önce ek güvenlik doğrulaması amacıyla kimliğinizin doğrulanması gerekmektedir. Aşağıda belirtilen yöntemlerden birini kullanarak devam ediniz.',
+ 'mfa_verify_no_methods' => 'Hiçbir Yöntem Ayarlanmadı',
+ 'mfa_verify_no_methods_desc' => 'Hesabınızda çok aşamalı kimlik doğrulama yöntemi bulunamadı. Giriş yapabilmek için en az bir tane yöntemi ayarlamanız gerekmektedir.',
+ 'mfa_verify_use_totp' => 'Mobil uygulama kullanarak doğrula',
+ 'mfa_verify_use_backup_codes' => 'Yedekleme kodu kullanarak doğrula',
+ 'mfa_verify_backup_code' => 'Yedekleme Kodu',
+ 'mfa_verify_backup_code_desc' => 'Kalan yedekleme kodlarınızdan birini giriniz:',
+ 'mfa_verify_backup_code_enter_here' => 'Yedekleme kodunuzu buraya giriniz',
+ 'mfa_verify_totp_desc' => 'Mobil uygulamada üretilmiş kodu aşağıya giriniz:',
+ 'mfa_setup_login_notification' => '2 adımlı doğrulama ayarlandı, Lütfen 2 adımlı doğrulama kullanarak yeniden giriş yapınız.',
+];
diff --git a/lang/tr/common.php b/lang/tr/common.php
new file mode 100644
index 00000000000..5b5e753873a
--- /dev/null
+++ b/lang/tr/common.php
@@ -0,0 +1,115 @@
+ 'İptal',
+ 'close' => 'Kapat',
+ 'confirm' => 'Onayla',
+ 'back' => 'Geri',
+ 'save' => 'Kaydet',
+ 'continue' => 'Devam',
+ 'select' => 'Seç',
+ 'toggle_all' => 'Tümünü Aç/Kapat',
+ 'more' => 'Daha Fazla',
+
+ // Form Labels
+ 'name' => 'İsim',
+ 'description' => 'Açıklama',
+ 'role' => 'Rol',
+ 'cover_image' => 'Kapak resmi',
+ 'cover_image_description' => 'This image should be approximately 440x250px although it will be flexibly scaled & cropped to fit the user interface in different scenarios as required, so actual dimensions for display will differ.',
+
+ // Actions
+ 'actions' => 'İşlemler',
+ 'view' => 'Görüntüle',
+ 'view_all' => 'Hepsini Göster',
+ 'new' => 'Yeni',
+ 'create' => 'Oluştur',
+ 'update' => 'Güncelle',
+ 'edit' => 'Düzenle',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Sırala',
+ 'move' => 'Taşı',
+ 'copy' => 'Kopyala',
+ 'reply' => 'Yanıtla',
+ 'delete' => 'Sil',
+ 'delete_confirm' => 'Silmeyi Onayla',
+ 'search' => 'Ara',
+ 'search_clear' => 'Aramayı Temizle',
+ 'reset' => 'Sıfırla',
+ 'remove' => 'Kaldır',
+ 'add' => 'Ekle',
+ 'configure' => 'Yapılandır',
+ 'manage' => 'Manage',
+ 'fullscreen' => 'Tam Ekran',
+ 'favourite' => 'Favoriye ekle',
+ 'unfavourite' => 'Favorilerden çıkar',
+ 'next' => 'Sonraki',
+ 'previous' => 'Önceki',
+ 'filter_active' => 'Aktif Filtre:',
+ 'filter_clear' => 'Filtreyi Kaldır',
+ 'download' => 'İndir',
+ 'open_in_tab' => 'Sekmede aç',
+ 'open' => 'Open',
+
+ // Sort Options
+ 'sort_options' => 'Sıralama Seçenekleri',
+ 'sort_direction_toggle' => 'Sıralama Yönünü Değiştir',
+ 'sort_ascending' => 'Artan Sıralama',
+ 'sort_descending' => 'Azalan Sıralama',
+ 'sort_name' => 'İsim',
+ 'sort_default' => 'Varsayılan',
+ 'sort_created_at' => 'Oluşturulma Tarihi',
+ 'sort_updated_at' => 'Güncellenme Tarihi',
+
+ // Misc
+ 'deleted_user' => 'Silinmiş Kullanıcı',
+ 'no_activity' => 'Gösterilecek aktivite yok',
+ 'no_items' => 'Herhangi bir öge bulunamadı',
+ 'back_to_top' => 'Başa dön',
+ 'skip_to_main_content' => 'Ana içeriğe geç',
+ 'toggle_details' => 'Detayları Göster/Gizle',
+ 'toggle_thumbnails' => 'Ön İzleme Görsellerini Göster/Gizle',
+ 'details' => 'Detaylar',
+ 'grid_view' => 'Izgara Görünümü',
+ 'list_view' => 'Liste Görünümü',
+ 'default' => 'Varsayılan',
+ 'breadcrumb' => 'Gezinti Menüsü',
+ 'status' => 'Durum',
+ 'status_active' => 'Aktif',
+ 'status_inactive' => 'Aktif değil',
+ 'never' => 'Hiçbir zaman',
+ 'none' => 'Hiçbiri',
+
+ // Header
+ 'homepage' => 'Ana sayfa',
+ 'header_menu_expand' => 'Başlık Menüsünü Genişlet',
+ 'profile_menu' => 'Profil Menüsü',
+ 'view_profile' => 'Profili Görüntüle',
+ 'edit_profile' => 'Profili Düzenle',
+ 'dark_mode' => 'Gece Teması',
+ 'light_mode' => 'Aydınlık Modu',
+ 'global_search' => 'Genel Arama',
+
+ // Layout tabs
+ 'tab_info' => 'Bilgi',
+ 'tab_info_label' => 'Sekme: İkincil Bilgileri Göster',
+ 'tab_content' => 'İçerik',
+ 'tab_content_label' => 'Sekme: Birincil Bilgileri Göster',
+
+ // Email Content
+ 'email_action_help' => 'Eğer ":actionText" butonuna tıklamakta zorluk çekiyorsanız, aşağıda bulunan linki kopyalayıp tarayıcınıza yapıştırabilirsiniz.',
+ 'email_rights' => 'Tüm hakları saklıdır',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Gizlilik Politikası',
+ 'terms_of_service' => 'Hizmet Şartları',
+
+ // OpenSearch
+ 'opensearch_description' => 'Search :appName',
+];
diff --git a/lang/tr/components.php b/lang/tr/components.php
new file mode 100644
index 00000000000..863d7484b24
--- /dev/null
+++ b/lang/tr/components.php
@@ -0,0 +1,46 @@
+ 'Görsel Seç',
+ 'image_list' => 'Görsel Listesi',
+ 'image_details' => 'Görsel Detayları',
+ 'image_upload' => 'Görsel Yükle',
+ 'image_intro' => 'Burada sisteme daha önce yüklenmiş görselleri seçebilir veya yönetebilirsiniz.',
+ 'image_intro_upload' => 'Bir resim dosyasını bu pencereye sürükleyerek veya yukarıdaki "Resim Yükle" düğmesini kullanarak yeni bir resim yükleyin.',
+ 'image_all' => 'Hepsi',
+ 'image_all_title' => 'Bütün görselleri görüntüle',
+ 'image_book_title' => 'Bu kitaba ait görselleri görüntüle',
+ 'image_page_title' => 'Bu sayfaya ait görselleri görüntüle',
+ 'image_search_hint' => 'Görsel adıyla ara',
+ 'image_uploaded' => ':uploadedDate tarihinde yüklendi',
+ 'image_uploaded_by' => ':userName tarafından yüklendi',
+ 'image_uploaded_to' => ':pageLink \'e yüklendi',
+ 'image_updated' => ':updateDate \'de güncellendi',
+ 'image_load_more' => 'Devamını Göster',
+ 'image_image_name' => 'Görsel Adı',
+ 'image_delete_used' => 'Bu görsel aşağıda bulunan sayfalarda kullanılmış.',
+ 'image_delete_confirm_text' => 'Bu resmi silmek istediğinizden emin misiniz?',
+ 'image_select_image' => 'Görsel Seç',
+ 'image_dropzone' => 'Görselleri sürükleyin ya da seçin',
+ 'image_dropzone_drop' => 'Yüklemek için görselleri buraya bırakın',
+ 'images_deleted' => 'Görseller Silindi',
+ 'image_preview' => 'Görsel Ön İzlemesi',
+ 'image_upload_success' => 'Görsel başarıyla yüklendi',
+ 'image_update_success' => 'Görsel detayları başarıyla güncellendi',
+ 'image_delete_success' => 'Görsel başarıyla silindi',
+ 'image_replace' => 'Görseli Değiştir',
+ 'image_replace_success' => 'Görsel dosyası başarıyla güncellendi',
+ 'image_rebuild_thumbs' => 'Regenerate Size Variations',
+ 'image_rebuild_thumbs_success' => 'Image size variations successfully rebuilt!',
+
+ // Code Editor
+ 'code_editor' => 'Kodu Düzenle',
+ 'code_language' => 'Kod Dili',
+ 'code_content' => 'Kod İçeriği',
+ 'code_session_history' => 'Oturum Geçmişi',
+ 'code_save' => 'Kodu Kaydet',
+];
diff --git a/lang/tr/editor.php b/lang/tr/editor.php
new file mode 100644
index 00000000000..c020c82fddf
--- /dev/null
+++ b/lang/tr/editor.php
@@ -0,0 +1,182 @@
+ 'Genel',
+ 'advanced' => 'Gelişmiş seçenekler',
+ 'none' => 'Hiçbiri',
+ 'cancel' => 'İptal',
+ 'save' => 'Kaydet',
+ 'close' => 'Kapat',
+ 'apply' => 'Apply',
+ 'undo' => 'Geri al',
+ 'redo' => 'Yeniden yap',
+ 'left' => 'Sol',
+ 'center' => 'Merkez',
+ 'right' => 'Sağ',
+ 'top' => 'Üst',
+ 'middle' => 'Orta',
+ 'bottom' => 'Alt',
+ 'width' => 'Genişlik',
+ 'height' => 'Yükseklik',
+ 'More' => 'Daha fazla',
+ 'select' => 'Seç...',
+
+ // Toolbar
+ 'formats' => 'Formatlar',
+ 'header_large' => 'Büyük başlık',
+ 'header_medium' => 'Normal Başlık',
+ 'header_small' => 'Küçük Başlık',
+ 'header_tiny' => 'Minik Başlık',
+ 'paragraph' => 'Paragraf',
+ 'blockquote' => 'Blok alıntı',
+ 'inline_code' => 'Satır içi kod',
+ 'callouts' => 'Belirtme çizgileri',
+ 'callout_information' => 'Bilgi',
+ 'callout_success' => 'Başarılı',
+ 'callout_warning' => 'Uyarı',
+ 'callout_danger' => 'Tehlike',
+ 'bold' => 'Kalın',
+ 'italic' => 'İtalik',
+ 'underline' => 'Altı çizili',
+ 'strikethrough' => 'Üstü çizili',
+ 'superscript' => 'Üst simge',
+ 'subscript' => 'Alt simge',
+ 'text_color' => 'Metin rengi',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Özel renk',
+ 'remove_color' => 'Rengi kaldır',
+ 'background_color' => 'Arka plan rengi',
+ 'align_left' => 'Sola hizala',
+ 'align_center' => 'Merkeze hizala',
+ 'align_right' => 'Sağa hizala',
+ 'align_justify' => 'İki yana yasla',
+ 'list_bullet' => 'Noktalı liste',
+ 'list_numbered' => 'Numaralı liste',
+ 'list_task' => 'Görev listesi',
+ 'indent_increase' => 'Girintiyi artır',
+ 'indent_decrease' => 'Girintiyi azalt',
+ 'table' => 'Tablo',
+ 'insert_image' => 'Resim ekle',
+ 'insert_image_title' => 'Resim Ekle/Düzenle',
+ 'insert_link' => 'Bağlantı ekle/düzenle',
+ 'insert_link_title' => 'Bağlantı Ekle/Düzenle',
+ 'insert_horizontal_line' => 'Yatay çizgi ekle',
+ 'insert_code_block' => 'Kod bloğu ekle',
+ 'edit_code_block' => 'Kod bloğu düzenle',
+ 'insert_drawing' => 'Çizim ekle/düzenle',
+ 'drawing_manager' => 'Çizim yöneticisi',
+ 'insert_media' => 'Medya ekle/düzenle',
+ 'insert_media_title' => 'Medya Ekle/Düzenle',
+ 'clear_formatting' => 'Biçimlendirmeyi temizle',
+ 'source_code' => 'Kaynak kodu',
+ 'source_code_title' => 'Kaynak Kodu',
+ 'fullscreen' => 'Tam ekran',
+ 'image_options' => 'Resim seçenekleri',
+
+ // Tables
+ 'table_properties' => 'Tablo özellikleri',
+ 'table_properties_title' => 'Tablo Özellikleri',
+ 'delete_table' => 'Tabloyu sil',
+ 'table_clear_formatting' => 'Clear table formatting',
+ 'resize_to_contents' => 'Resize to contents',
+ 'row_header' => 'Row header',
+ 'insert_row_before' => 'Üste satır ekle',
+ 'insert_row_after' => 'Alta satır ekle',
+ 'delete_row' => 'Satırı sil',
+ 'insert_column_before' => 'Sola sütun ekle',
+ 'insert_column_after' => 'Sağa sütun ekle',
+ 'delete_column' => 'Sütunu sil',
+ 'table_cell' => 'Hücre',
+ 'table_row' => 'Satır',
+ 'table_column' => 'Sütun',
+ 'cell_properties' => 'Hücre özellikleri',
+ 'cell_properties_title' => 'Hücre Özellikleri',
+ 'cell_type' => 'Hücre tipi',
+ 'cell_type_cell' => 'Hücre',
+ 'cell_scope' => 'Kapsam',
+ 'cell_type_header' => 'Başlık hücresi',
+ 'merge_cells' => 'Hücreleri birleştir',
+ 'split_cell' => 'Hücreyi böl',
+ 'table_row_group' => 'Satır Grubu',
+ 'table_column_group' => 'Sütun Grubu',
+ 'horizontal_align' => 'Yatay hizalama',
+ 'vertical_align' => 'Dikey hizalama',
+ 'border_width' => 'Kenarlık genişliği',
+ 'border_style' => 'Kenarlık stili',
+ 'border_color' => 'Kenarlık rengi',
+ 'row_properties' => 'Satır özellikleri',
+ 'row_properties_title' => 'Satır Özellikleri',
+ 'cut_row' => 'Satırı kes',
+ 'copy_row' => 'Satırı kopyala',
+ 'paste_row_before' => 'Üste satırı yapıştır',
+ 'paste_row_after' => 'Alta satırı yapıştır',
+ 'row_type' => 'Satır tipi',
+ 'row_type_header' => 'Üstbaşlık',
+ 'row_type_body' => 'Gövde',
+ 'row_type_footer' => 'Altbilgi',
+ 'alignment' => 'Hizalama',
+ 'cut_column' => 'Sütünu kes',
+ 'copy_column' => 'Sütunu kopyala',
+ 'paste_column_before' => 'Sütünu sola yapıştır',
+ 'paste_column_after' => 'Sütunu sağa yapıştır',
+ 'cell_padding' => 'Hücre boşluğu',
+ 'cell_spacing' => 'Hücre aralığı',
+ 'caption' => 'Başlık',
+ 'show_caption' => 'Açıklamayı göster',
+ 'constrain' => 'Oranları sınırla',
+ 'cell_border_solid' => 'Düz',
+ 'cell_border_dotted' => 'Noktalı',
+ 'cell_border_dashed' => 'Kesik çizgili',
+ 'cell_border_double' => 'Çift',
+ 'cell_border_groove' => 'Oyuk',
+ 'cell_border_ridge' => 'Sırt',
+ 'cell_border_inset' => 'İçe Dönük',
+ 'cell_border_outset' => 'Dışa Dönük',
+ 'cell_border_none' => 'Hiçbiri',
+ 'cell_border_hidden' => 'Gizli',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Kaynak',
+ 'alt_desc' => 'Alternatif açıklama',
+ 'embed' => 'Yerleştir',
+ 'paste_embed' => 'Gömme kodunuzu aşağı yapıştırın:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Görüntülenecek metin',
+ 'title' => 'Başlık',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Bağlantıyı aç',
+ 'open_link_in' => 'Bağlantıyı şurada aç...',
+ 'open_link_current' => 'Geçerli pencere',
+ 'open_link_new' => 'Yeni pencere',
+ 'remove_link' => 'Bağlantıyı kaldır',
+ 'insert_collapsible' => 'Küçültülebilir blok ekle',
+ 'collapsible_unwrap' => 'Aç',
+ 'edit_label' => 'Etiketi düzenle',
+ 'toggle_open_closed' => 'Değiştir açık/kapalı',
+ 'collapsible_edit' => 'Küçültülebilir bloğu düzenle',
+ 'toggle_label' => 'Etiketleri aç/kapa',
+
+ // About view
+ 'about' => 'Editör hakkında',
+ 'about_title' => 'WYSIWYG editor hakkında',
+ 'editor_license' => 'Editor Lisans ve Telif Hakkı',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'Bu düzenleyici, MIT lisansı altında sağlanan :tinyLink kullanılarak oluşturulmuştur.',
+ 'editor_tiny_license_link' => 'TinyMCE telif ve lisans bilgilerini burada bulabilirsiniz.',
+ 'save_continue' => 'Kaydet & Devam Et',
+ 'callouts_cycle' => '(Türler arasında geçiş için basmaya devam ediniz)',
+ 'link_selector' => 'İçeriğe bağlantı',
+ 'shortcuts' => 'Kısayollar',
+ 'shortcut' => 'Kısayol',
+ 'shortcuts_intro' => 'Aşağıdaki kısayollar editörde kullanılabilir:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Açıklama',
+];
diff --git a/lang/tr/entities.php b/lang/tr/entities.php
new file mode 100644
index 00000000000..39feb7e3917
--- /dev/null
+++ b/lang/tr/entities.php
@@ -0,0 +1,476 @@
+ 'Yakın Zamanda Oluşturuldu',
+ 'recently_created_pages' => 'Yakın Zamanda Oluşturulan Sayfalar',
+ 'recently_updated_pages' => 'Yakın Zamanda Güncellenen Sayfalar',
+ 'recently_created_chapters' => 'Yakın Zamanda Oluşturulan Bölümler',
+ 'recently_created_books' => 'Yakın Zamanda Oluşturulan Kitaplar',
+ 'recently_created_shelves' => 'Yakın Zamanda Oluşturulan Kitaplıklar',
+ 'recently_update' => 'Yakın Zamanda Güncellenmiş',
+ 'recently_viewed' => 'Yakın Zamanda Görüntülenmiş',
+ 'recent_activity' => 'Son Hareketler',
+ 'create_now' => 'Hemen bir tane oluştur',
+ 'revisions' => 'Revizyonlar',
+ 'meta_revision' => 'Revizyon #:revisionCount',
+ 'meta_created' => ':timeLength Oluşturuldu',
+ 'meta_created_name' => ':user tarafından :timeLength oluşturuldu',
+ 'meta_updated' => ':timeLength güncellendi',
+ 'meta_updated_name' => ':user tarafından :timeLength güncellendi',
+ 'meta_owned_name' => ':user kişisine ait',
+ 'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
+ 'entity_select' => 'Öge Seçimi',
+ 'entity_select_lack_permission' => 'Bu öğeyi seçmek için gerekli izinlere sahip değilsiniz',
+ 'images' => 'Görseller',
+ 'my_recent_drafts' => 'Son Taslaklarım',
+ 'my_recently_viewed' => 'Son Görüntülediklerim',
+ 'my_most_viewed_favourites' => 'En Çok Görüntülenen Favoriler',
+ 'my_favourites' => 'Favorilerim',
+ 'no_pages_viewed' => 'Herhangi bir sayfa görüntülemediniz',
+ 'no_pages_recently_created' => 'Yakın zamanda bir sayfa oluşturulmadı',
+ 'no_pages_recently_updated' => 'Yakın zamanda bir sayfa güncellenmedi',
+ 'export' => 'Dışa Aktar',
+ 'export_html' => 'Web Dosyası',
+ 'export_pdf' => 'PDF Dosyası',
+ 'export_text' => 'Düz Metin Dosyası',
+ 'export_md' => 'Markdown Dosyası',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'İzinler',
+ 'permissions_desc' => 'Kullanıcı rolleri tarafından sağlanan varsayılan izinleri geçersiz kılmak için izinleri buradan ayarlayın.',
+ 'permissions_book_cascade' => 'Kitaplarda ayarlanan izinler, kendi izinleri tanımlanmadığı sürece otomatik olarak alt bölümlere ve sayfalara aktarılır.',
+ 'permissions_chapter_cascade' => 'Bölümlerde ayarlanan izinler, kendi izinleri tanımlanmadığı sürece otomatik olarak alt sayfalara aktarılır.',
+ 'permissions_save' => 'İzinleri Kaydet',
+ 'permissions_owner' => 'Sahip',
+ 'permissions_role_everyone_else' => 'Diğer Herkes',
+ 'permissions_role_everyone_else_desc' => 'Özellikle geçersiz kılınmamış tüm roller için izinleri ayarlayın.',
+ 'permissions_role_override' => 'Override permissions for role',
+ 'permissions_inherit_defaults' => 'Varsayılanları devral',
+
+ // Search
+ 'search_results' => 'Arama Sonuçları',
+ 'search_total_results_found' => ':count sonuç bulundu |:count toplam sonuç bulundu',
+ 'search_clear' => 'Aramayı Temizle',
+ 'search_no_pages' => 'Bu aramayla ilgili herhangi bir sayfa bulunamadı',
+ 'search_for_term' => ':term için Ara',
+ 'search_more' => 'Daha Fazla Sonuç',
+ 'search_advanced' => 'Gelişmiş Arama',
+ 'search_terms' => 'Terimleri Ara',
+ 'search_content_type' => 'İçerik Türü',
+ 'search_exact_matches' => 'Tam Eşleşmeler',
+ 'search_tags' => 'Etiket Aramaları',
+ 'search_options' => 'Ayarlar',
+ 'search_viewed_by_me' => 'Görüntülediklerim',
+ 'search_not_viewed_by_me' => 'Görüntülemediklerim',
+ 'search_permissions_set' => 'İzinler ayarlanmış',
+ 'search_created_by_me' => 'Oluşturduklarım',
+ 'search_updated_by_me' => 'Güncellediklerim',
+ 'search_owned_by_me' => 'Bana ait',
+ 'search_date_options' => 'Tarih Seçenekleri',
+ 'search_updated_before' => 'Önce güncellendi',
+ 'search_updated_after' => 'Sonra güncellendi',
+ 'search_created_before' => 'Önce oluşturuldu',
+ 'search_created_after' => 'Sonra oluşturuldu',
+ 'search_set_date' => 'Tarihi Ayarla',
+ 'search_update' => 'Aramayı Güncelle',
+
+ // Shelves
+ 'shelf' => 'Kitaplık',
+ 'shelves' => 'Kitaplıklar',
+ 'x_shelves' => ':count Kitaplık|:count Kitaplık',
+ 'shelves_empty' => 'Hiç kitaplık oluşturulmamış',
+ 'shelves_create' => 'Yeni Kitaplık Oluştur',
+ 'shelves_popular' => 'Popüler Kitaplıklar',
+ 'shelves_new' => 'Yeni Kitaplıklar',
+ 'shelves_new_action' => 'Yeni Kitaplık',
+ 'shelves_popular_empty' => 'En popüler kitaplıklar burada görüntülenecek.',
+ 'shelves_new_empty' => 'En son oluşturulmuş kitaplıklar burada görüntülenecek.',
+ 'shelves_save' => 'Kitaplığı Kaydet',
+ 'shelves_books' => 'Bu kitaplıktaki kitaplar',
+ 'shelves_add_books' => 'Bu kitaplığa kitap ekle',
+ 'shelves_drag_books' => 'Kitapları, bu kitaplığa eklemek için aşağıya sürükleyin',
+ 'shelves_empty_contents' => 'Bu kitaplıkta hiç kitap bulunamadı',
+ 'shelves_edit_and_assign' => 'Kitap eklemek için kitaplığı düzenleyin',
+ 'shelves_edit_named' => ':name Kitaplığını Düzenle',
+ 'shelves_edit' => 'Kitaplığı Düzenle',
+ 'shelves_delete' => 'Kitaplığı Sil',
+ 'shelves_delete_named' => ':name Kitaplığını Sil',
+ 'shelves_delete_explain' => "Bu işlem ':name' isimli kitaplığı silecektir. İçerdiği kitaplar silinmeyecektir.",
+ 'shelves_delete_confirmation' => 'Bu kitaplığı silmek istediğinize emin misiniz?',
+ 'shelves_permissions' => 'Kitaplık İzinleri',
+ 'shelves_permissions_updated' => 'Kitaplık İzinleri Güncellendi',
+ 'shelves_permissions_active' => 'Kitaplık İzinleri Aktif',
+ 'shelves_permissions_cascade_warning' => 'Kitaplıktaki izinler otomatik olarak içerilen kitaplara kademelendirilmez. Bunun nedeni, bir kitabın birden fazla kitaplıkta bulunabilmesidir. Ancak izinler, aşağıda bulunan seçenek kullanılarak alt kitaplara kopyalanabilir.',
+ 'shelves_permissions_create' => 'Shelf create permissions are only used for copying permissions to child books using the action below. They do not control the ability to create books.',
+ 'shelves_copy_permissions_to_books' => 'İzinleri Kitaplara Kopyala',
+ 'shelves_copy_permissions' => 'İzinleri Kopyala',
+ 'shelves_copy_permissions_explain' => 'Bu işlem sonucunda kitaplığınızın izinleri, içerdiği kitaplara da aynen uygulanır. Aktifleştirmeden önce bu kitaplığa ait izinleri kaydettiğinizden emin olun.',
+ 'shelves_copy_permission_success' => 'Kitaplık izinleri :count adet kitaba kopyalandı',
+
+ // Books
+ 'book' => 'Kitap',
+ 'books' => 'Kitaplar',
+ 'x_books' => ':count Kitap|:count Kitap',
+ 'books_empty' => 'Hiç kitap oluşturulmamış',
+ 'books_popular' => 'Popüler Kitaplar',
+ 'books_recent' => 'En Son Kitaplar',
+ 'books_new' => 'Yeni Kitaplar',
+ 'books_new_action' => 'Yeni Kitap',
+ 'books_popular_empty' => 'En popüler kitaplar burada görüntülenecek.',
+ 'books_new_empty' => 'En yeni kitaplar burada görüntülenecek.',
+ 'books_create' => 'Yeni Kitap Oluştur',
+ 'books_delete' => 'Kitabı Sil',
+ 'books_delete_named' => ':bookName Kitabını Sil',
+ 'books_delete_explain' => 'Bu işlem \':bookName\' kitabını silecektir. Ayrıca kitaba ait bütün sayfalar ve bölümler de silinecektir.',
+ 'books_delete_confirmation' => 'Bu kitabı silmek istediğinize emin misiniz?',
+ 'books_edit' => 'Kitabı Düzenle',
+ 'books_edit_named' => ':bookName Kitabını Düzenle',
+ 'books_form_book_name' => 'Kitap Adı',
+ 'books_save' => 'Kitabı Kaydet',
+ 'books_permissions' => 'Kitap İzinleri',
+ 'books_permissions_updated' => 'Kitap İzinleri Güncellendi',
+ 'books_empty_contents' => 'Bu kitaba ait sayfa veya bölüm oluşturulmamış.',
+ 'books_empty_create_page' => 'Yeni bir sayfa oluştur',
+ 'books_empty_sort_current_book' => 'Mevcut kitabı sırala',
+ 'books_empty_add_chapter' => 'Yeni bir bölüm ekle',
+ 'books_permissions_active' => 'Kitap İzinleri Aktif',
+ 'books_search_this' => 'Bu kitapta ara',
+ 'books_navigation' => 'Kitap Navigasyonu',
+ 'books_sort' => 'Kitap İçeriklerini Sırala',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => ':bookName Kitabını Sırala',
+ 'books_sort_name' => 'İsme Göre Sırala',
+ 'books_sort_created' => 'Oluşturulma Tarihine Göre Sırala',
+ 'books_sort_updated' => 'Güncelleme Tarihine Göre Sırala',
+ 'books_sort_chapters_first' => 'Önce Bölümler',
+ 'books_sort_chapters_last' => 'En Son Bölümler',
+ 'books_sort_show_other' => 'Diğer Kitapları Göster',
+ 'books_sort_save' => 'Yeni Düzeni Kaydet',
+ 'books_sort_show_other_desc' => 'Sıralama işlemine dahil etmek ve kitaplar arası yeniden düzenlemeyi kolaylaştırmak için diğer kitapları buraya ekleyin.',
+ 'books_sort_move_up' => 'Yukarı Taşı',
+ 'books_sort_move_down' => 'Aşağı Taşı',
+ 'books_sort_move_prev_book' => 'Move to Previous Book',
+ 'books_sort_move_next_book' => 'Move to Next Book',
+ 'books_sort_move_prev_chapter' => 'Önceki Bölüme Git',
+ 'books_sort_move_next_chapter' => 'Sonraki Bölüme Git',
+ 'books_sort_move_book_start' => 'Kitap Başlangıcına Git',
+ 'books_sort_move_book_end' => 'Kitap Sonuna Git',
+ 'books_sort_move_before_chapter' => 'Move to Before Chapter',
+ 'books_sort_move_after_chapter' => 'Move to After Chapter',
+ 'books_copy' => 'Kitabı Kopyala',
+ 'books_copy_success' => 'Kitap başarıyla kopyalandı',
+
+ // Chapters
+ 'chapter' => 'Bölüm',
+ 'chapters' => 'Bölümler',
+ 'x_chapters' => ':count Bölüm|:count Bölüm',
+ 'chapters_popular' => 'Popüler Bölümler',
+ 'chapters_new' => 'Yeni Bölüm',
+ 'chapters_create' => 'Yeni Bölüm Oluştur',
+ 'chapters_delete' => 'Bölümü Sil',
+ 'chapters_delete_named' => ':chapterName Bölümünü Sil',
+ 'chapters_delete_explain' => 'This will delete the chapter with the name \':chapterName\'. All pages that exist within this chapter will also be deleted.',
+ 'chapters_delete_confirm' => 'Bölümü silmek istediğinize emin misiniz?',
+ 'chapters_edit' => 'Bölümü Düzenle',
+ 'chapters_edit_named' => ':chapterName Bölümünü Düzenle',
+ 'chapters_save' => 'Bölümü Kaydet',
+ 'chapters_move' => 'Bölümü Taşı',
+ 'chapters_move_named' => ':chapterName Bölümünü Taşı',
+ 'chapters_copy' => 'Bölümü kopyala',
+ 'chapters_copy_success' => 'Bölüm başarıyla kopyalandı',
+ 'chapters_permissions' => 'Bölüm İzinleri',
+ 'chapters_empty' => 'Bu bölümde henüz bir sayfa bulunmuyor.',
+ 'chapters_permissions_active' => 'Bölüm İzinleri Aktif',
+ 'chapters_permissions_success' => 'Bölüm İzinleri Güncellendi',
+ 'chapters_search_this' => 'Bu bölümde ara',
+ 'chapter_sort_book' => 'Kitap Sırala',
+
+ // Pages
+ 'page' => 'Sayfa',
+ 'pages' => 'Sayfalar',
+ 'x_pages' => ':count Sayfa|:count Sayfa',
+ 'pages_popular' => 'Popüler Sayfalar',
+ 'pages_new' => 'Yeni Sayfa',
+ 'pages_attachments' => 'Ekler',
+ 'pages_navigation' => 'Sayfa Navigasyonu',
+ 'pages_delete' => 'Sayfayı Sil',
+ 'pages_delete_named' => ':pageName Sayfasını Sil',
+ 'pages_delete_draft_named' => ':pageName Sayfa Taslağını Sil',
+ 'pages_delete_draft' => 'Sayfa Taslağını Sil',
+ 'pages_delete_success' => 'Sayfa silindi',
+ 'pages_delete_draft_success' => 'Sayfa taslağı silindi',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Bu sayfayı silmek istediğinize emin misiniz?',
+ 'pages_delete_draft_confirm' => 'Bu sayfa taslağını silmek istediğinize emin misiniz?',
+ 'pages_editing_named' => ':pageName Sayfası Düzenleniyor',
+ 'pages_edit_draft_options' => 'Taslak Seçenekleri',
+ 'pages_edit_save_draft' => 'Taslağı Kaydet',
+ 'pages_edit_draft' => 'Sayfa Taslağını Düzenle',
+ 'pages_editing_draft' => 'Taslak Düzenleniyor',
+ 'pages_editing_page' => 'Sayfa Düzenleniyor',
+ 'pages_edit_draft_save_at' => 'Taslak kaydedildi ',
+ 'pages_edit_delete_draft' => 'Taslağı Sil',
+ 'pages_edit_delete_draft_confirm' => 'Taslak sayfa değişikliklerinizi silmek istediğinizden emin misiniz? Son tam kaydetmeden bu yana yaptığınız tüm değişiklikler kaybolacak ve düzenleyici en son sayfanın taslak olmayan kaydetme durumuyla güncellenecektir.',
+ 'pages_edit_discard_draft' => 'Taslağı Yoksay',
+ 'pages_edit_switch_to_markdown' => 'Markdown Editörüne Geç',
+ 'pages_edit_switch_to_markdown_clean' => '(Temiz İçerik)',
+ 'pages_edit_switch_to_markdown_stable' => '(Kararlı İçerik)',
+ 'pages_edit_switch_to_wysiwyg' => 'WYSIWYG düzenleyiciye geç',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'Değişim Günlüğünü Ayarla',
+ 'pages_edit_enter_changelog_desc' => 'Yaptığınız değişiklikler hakkında kısa bir açıklama girin',
+ 'pages_edit_enter_changelog' => 'Değişim Günlüğünü Yazın',
+ 'pages_editor_switch_title' => 'Düzenleyici Değiştir',
+ 'pages_editor_switch_are_you_sure' => 'Bu sayfa için düzenleyiciyi değiştirmek istediğinizden emin misiniz?',
+ 'pages_editor_switch_consider_following' => 'Düzenleyiciyi değiştirirken aşağıdakilere dikkat edin:',
+ 'pages_editor_switch_consideration_a' => 'Once saved, the new editor option will be used by any future editors, including those that may not be able to change editor type themselves.',
+ 'pages_editor_switch_consideration_b' => 'This can potentially lead to a loss of detail and syntax in certain circumstances.',
+ 'pages_editor_switch_consideration_c' => 'Tag or changelog changes, made since last save, won\'t persist across this change.',
+ 'pages_save' => 'Sayfayı Kaydet',
+ 'pages_title' => 'Sayfa Başlığı',
+ 'pages_name' => 'Sayfa İsmi',
+ 'pages_md_editor' => 'Düzenleyici',
+ 'pages_md_preview' => 'Ön İzleme',
+ 'pages_md_insert_image' => 'Görsel Ekle',
+ 'pages_md_insert_link' => 'Öge Bağlantısı Ekle',
+ 'pages_md_insert_drawing' => 'Çizim Ekle',
+ 'pages_md_show_preview' => 'Önizlemeyi göster',
+ 'pages_md_sync_scroll' => 'Sync preview scroll',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Unsaved Drawing Found',
+ 'pages_drawing_unsaved_confirm' => 'Unsaved drawing data was found from a previous failed drawing save attempt. Would you like to restore and continue editing this unsaved drawing?',
+ 'pages_not_in_chapter' => 'Bu sayfa, bir bölüme ait değil',
+ 'pages_move' => 'Sayfayı Taşı',
+ 'pages_copy' => 'Sayfayı Kopyala',
+ 'pages_copy_desination' => 'Kopyalama Hedefi',
+ 'pages_copy_success' => 'Sayfa başarıyla kopyalandı',
+ 'pages_permissions' => 'Sayfa İzinleri',
+ 'pages_permissions_success' => 'Sayfa izinleri güncellendi',
+ 'pages_revision' => 'Revizyon',
+ 'pages_revisions' => 'Sayfa Revizyonları',
+ 'pages_revisions_desc' => 'Listed below are all the past revisions of this page. You can look back upon, compare, and restore old page versions if permissions allow. The full history of the page may not be fully reflected here since, depending on system configuration, old revisions could be auto-deleted.',
+ 'pages_revisions_named' => ':pageName için Sayfa Revizyonları',
+ 'pages_revision_named' => ':pageName için Sayfa Revizyonu',
+ 'pages_revision_restored_from' => 'Restored from #:id; :summary',
+ 'pages_revisions_created_by' => 'Revize Eden',
+ 'pages_revisions_date' => 'Revizyon Tarihi',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Revizyon Numarası',
+ 'pages_revisions_numbered' => 'Revizyon #:id',
+ 'pages_revisions_numbered_changes' => 'Revizyon #:id Değişiklikleri',
+ 'pages_revisions_editor' => 'Düzenleyici Türü',
+ 'pages_revisions_changelog' => 'Değişim Günlüğü',
+ 'pages_revisions_changes' => 'Değişiklikler',
+ 'pages_revisions_current' => 'Şimdiki Sürüm',
+ 'pages_revisions_preview' => 'Ön İzleme',
+ 'pages_revisions_restore' => 'Geri Dön',
+ 'pages_revisions_none' => 'Bu sayfaya ait herhangi bir revizyon bulunamadı',
+ 'pages_copy_link' => 'Bağlantıyı kopyala',
+ 'pages_edit_content_link' => 'Düzenleyicide bölüme atla',
+ 'pages_pointer_enter_mode' => 'Enter section select mode',
+ 'pages_pointer_label' => 'Page Section Options',
+ 'pages_pointer_permalink' => 'Page Section Permalink',
+ 'pages_pointer_include_tag' => 'Page Section Include Tag',
+ 'pages_pointer_toggle_link' => 'Permalink mode, Press to show include tag',
+ 'pages_pointer_toggle_include' => 'Include tag mode, Press to show permalink',
+ 'pages_permissions_active' => 'Sayfa İzinleri Aktif',
+ 'pages_initial_revision' => 'İlk yayın',
+ 'pages_references_update_revision' => 'System auto-update of internal links',
+ 'pages_initial_name' => 'Yeni Sayfa',
+ 'pages_editing_draft_notification' => 'Şu anda en son :timeDiff tarihinde kaydedilmiş olan taslağı düzenliyorsunuz.',
+ 'pages_draft_edited_notification' => 'Bu sayfa o zamandan bu zamana güncellenmiş, bu nedenle bu taslağı yok saymanız önerilir.',
+ 'pages_draft_page_changed_since_creation' => 'This page has been updated since this draft was created. It is recommended that you discard this draft or take care not to overwrite any page changes.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count kullanıcı, bu sayfayı düzenlemeye başladı',
+ 'start_b' => ':userName, bu sayfayı düzenlemeye başladı',
+ 'time_a' => 'sayfa son güncellendiğinden beri',
+ 'time_b' => 'son :minCount dakikada',
+ 'message' => ':start :time. Düzenlemelerinizin çakışmamasına dikkat edin!',
+ ],
+ 'pages_draft_discarded' => 'Draft discarded! The editor has been updated with the current page content',
+ 'pages_draft_deleted' => 'Draft deleted! The editor has been updated with the current page content',
+ 'pages_specific' => 'Spesifik Sayfa',
+ 'pages_is_template' => 'Sayfa Şablonu',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'Sayfa Etiketleri',
+ 'chapter_tags' => 'Bölüm Etiketleri',
+ 'book_tags' => 'Kitap Etiketleri',
+ 'shelf_tags' => 'Kitaplık Etiketleri',
+ 'tag' => 'Etiket',
+ 'tags' => 'Etiketler',
+ 'tags_index_desc' => 'Tags can be applied to content within the system to apply a flexible form of categorization. Tags can have both a key and value, with the value being optional. Once applied, content can then be queried using the tag name and value.',
+ 'tag_name' => 'Etiket İsmi',
+ 'tag_value' => 'Etiket Değeri (Opsiyonel)',
+ 'tags_explain' => "İçeriğinizi daha iyi kategorize etmek için etiket ekleyin. Etiketlere değer atayarak daha derinlemesine bir düzen elde edebilirsiniz.",
+ 'tags_add' => 'Başka etiket ekle',
+ 'tags_remove' => 'Bu etiketi sil',
+ 'tags_usages' => 'Toplam etiket kullanımı',
+ 'tags_assigned_pages' => 'Sayfalara Atandı',
+ 'tags_assigned_chapters' => 'Bölümlere Atandı',
+ 'tags_assigned_books' => 'Kitaplara Atandı',
+ 'tags_assigned_shelves' => 'Kitaplıklara Atandı',
+ 'tags_x_unique_values' => ':count unique values',
+ 'tags_all_values' => 'Tüm değerler',
+ 'tags_view_tags' => 'Etiketleri Göster',
+ 'tags_view_existing_tags' => 'Mevcut etiketleri göster',
+ 'tags_list_empty_hint' => 'Etiketleri sayfa editörü yan menüsünden veya kitap, bölüm veya rafları düzenlerken ekleyebilirsiniz.',
+ 'attachments' => 'Ekler',
+ 'attachments_explain' => 'Sayfanızda göstermek için dosyalar yükleyin veya bağlantılar ekleyin. Bunlar, sayfaya ait yan menüde gösterilecektir.',
+ 'attachments_explain_instant_save' => 'Burada yapılan değişiklikler anında kaydedilir.',
+ 'attachments_upload' => 'Dosya Yükle',
+ 'attachments_link' => 'Link Ekle',
+ 'attachments_upload_drop' => 'Alternatively you can drag and drop a file here to upload it as an attachment.',
+ 'attachments_set_link' => 'Bağlantıyı Ata',
+ 'attachments_delete' => 'Bu eki silmek istediğinize emin misiniz?',
+ 'attachments_dropzone' => 'Yüklemek için dosyaları buraya bırakın',
+ 'attachments_no_files' => 'Hiçbir dosya yüklenmedi',
+ 'attachments_explain_link' => 'Eğer dosya yüklememeyi tercih ederseniz bağlantı ekleyebilirsiniz. Bu bağlantı başka bir sayfanın veya bulut depolamadaki bir dosyanın bağlantısı olabilir.',
+ 'attachments_link_name' => 'Bağlantı Adı',
+ 'attachment_link' => 'Ek bağlantısı',
+ 'attachments_link_url' => 'Dosya bağlantısı',
+ 'attachments_link_url_hint' => 'Dosyanın veya sitenin url adresi',
+ 'attach' => 'Ekle',
+ 'attachments_insert_link' => 'Sayfaya Bağlantı Ekle',
+ 'attachments_edit_file' => 'Dosyayı Düzenle',
+ 'attachments_edit_file_name' => 'Dosya Adı',
+ 'attachments_edit_drop_upload' => 'Üzerine yazılacak dosyaları sürükleyin veya seçin',
+ 'attachments_order_updated' => 'Ek sıralaması güncellendi',
+ 'attachments_updated_success' => 'Ek detayları güncellendi',
+ 'attachments_deleted' => 'Ek silindi',
+ 'attachments_file_uploaded' => 'Dosya başarıyla yüklendi',
+ 'attachments_file_updated' => 'Dosya başarıyla güncellendi',
+ 'attachments_link_attached' => 'Bağlantı, sayfaya başarıyla eklendi',
+ 'templates' => 'Şablonlar',
+ 'templates_set_as_template' => 'Bu sayfa, bir şablondur',
+ 'templates_explain_set_as_template' => 'Başka sayfalar oluştururken bu sayfanın içeriğini kullanabilmek için bu sayfayı bir şablon olarak ayarlayabilirsiniz. Bu sayfayı görüntüleme yetkisi olan kullanıcılar da bu şablonu kullanabileceklerdir.',
+ 'templates_replace_content' => 'Sayfa içeriğini değiştir',
+ 'templates_append_content' => 'Sayfa içeriğine ekle',
+ 'templates_prepend_content' => 'Sayfa içeriğinin başına ekle',
+
+ // Profile View
+ 'profile_user_for_x' => 'Üyelik süresi: :time',
+ 'profile_created_content' => 'Oluşturulan İçerik',
+ 'profile_not_created_pages' => ':userName herhangi bir sayfa oluşturmamış',
+ 'profile_not_created_chapters' => ':userName herhangi bir bölüm oluşturmamış',
+ 'profile_not_created_books' => ':userName herhangi bir kitap oluşturmamış',
+ 'profile_not_created_shelves' => ':userName herhangi bir kitaplık oluşturmamış',
+
+ // Comments
+ 'comment' => 'Yorum',
+ 'comments' => 'Yorumlar',
+ 'comment_add' => 'Yorum Ekle',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Buraya bir yorum yazın',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Yorumu Gönder',
+ 'comment_new' => 'Yeni Yorum',
+ 'comment_created' => ':createDiff yorum yaptı',
+ 'comment_updated' => ':username tarafından :updateDiff güncellendi',
+ 'comment_updated_indicator' => 'Güncellendi',
+ 'comment_deleted_success' => 'Yorum silindi',
+ 'comment_created_success' => 'Yorum gönderildi',
+ 'comment_updated_success' => 'Yorum güncellendi',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Bu yorumu silmek istediğinize emin misiniz?',
+ 'comment_in_reply_to' => ':commentId yorumuna yanıt olarak',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'İşte bu sayfaya bırakılan yorumlar. Kaydedilen sayfayı görüntülerken yorumlar eklenebilir ve yönetilebilir.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Bu revizyonu silmek istediğinize emin misiniz?',
+ 'revision_restore_confirm' => 'Bu revizyonu yeniden yüklemek istediğinize emin misiniz? Sayfanın şu anki içeriği değiştirilecektir.',
+ 'revision_cannot_delete_latest' => 'Son revizyonu silemezsiniz.',
+
+ // Copy view
+ 'copy_consider' => 'İçeriği kopyalarken aşağıdakileri hesaba katınız.',
+ 'copy_consider_permissions' => 'Özel izin ayarları kopyalanmayacak.',
+ 'copy_consider_owner' => 'Tüm kopyalanan içeriğin sahibi olacaksınız.',
+ 'copy_consider_images' => 'Sayfa resim dosyalarının ikinci bir kopyası oluşturulmayıp, resimlerin ilk yüklendiği sayfadaki bağlantısı tutulacaktır.',
+ 'copy_consider_attachments' => 'Sayfa ekleri kopyalanmayacak.',
+ 'copy_consider_access' => 'Konum, sahiplik veya izinlerde yapılan bir değişiklik önceden erişimi olmayanlara erişim hakkı kazandırabilir.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Kitaplığa Dünüştür',
+ 'convert_to_shelf_contents_desc' => 'Bu kitabı aynı içeriğe sahip yeni bir rafa dönüştürebilirsiniz. Bu kitapta yer alan bölümler yeni kitaplığa dönüştürülecektir. Bu kitapta bölüm olmayan herhangi bir sayfa varsa, bu kitap yeniden adlandırılacak ve bu sayfaları içerecek ve bu kitap yeni kitaplığın bir parçası haline gelecektir.',
+ 'convert_to_shelf_permissions_desc' => 'Bu kitapta ayarlanan tüm izinler yeni kitaplığa ve kendi izinleri uygulanmayan tüm yeni alt kitaplara kopyalanacaktır. Kitaplıklardaki izinlerin, kitaplarda olduğu gibi içindeki içeriğe otomatik olarak kademelendirilmediğini unutmayın.',
+ 'convert_book' => 'Kitabı Dönüştür',
+ 'convert_book_confirm' => 'Bu kitabı dönüştürmek istediğinize emin misiniz?',
+ 'convert_undo_warning' => 'Bu kolay kolay geri alınamaz.',
+ 'convert_to_book' => 'Kitaba Dönüştür',
+ 'convert_to_book_desc' => 'Bu bölümü aynı içeriğe sahip yeni bir kitaba dönüştürebilirsiniz. Bu bölümde ayarlanan tüm izinler yeni kitaba kopyalanacaktır, ancak ana kitaptan devralınan izinler kopyalanmayacaktır, bu da erişim kontrolünün değişmesine neden olabilir.',
+ 'convert_chapter' => 'Bölümü Dönüştür',
+ 'convert_chapter_confirm' => 'Bu bölümü dönüştürmek istediğinizden emin misiniz?',
+
+ // References
+ 'references' => 'Referanslar',
+ 'references_none' => 'Bu öğeye ilişkin takip edilen bir referans bulunmamaktadır.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Watch',
+ 'watch_title_default' => 'Default Preferences',
+ 'watch_desc_default' => 'Revert watching to just your default notification preferences.',
+ 'watch_title_ignore' => 'Ignore',
+ 'watch_desc_ignore' => 'Ignore all notifications, including those from user-level preferences.',
+ 'watch_title_new' => 'New Pages',
+ 'watch_desc_new' => 'Notify when any new page is created within this item.',
+ 'watch_title_updates' => 'All Page Updates',
+ 'watch_desc_updates' => 'Notify upon all new pages and page changes.',
+ 'watch_desc_updates_page' => 'Notify upon all page changes.',
+ 'watch_title_comments' => 'All Page Updates & Comments',
+ 'watch_desc_comments' => 'Notify upon all new pages, page changes and new comments.',
+ 'watch_desc_comments_page' => 'Notify upon page changes and new comments.',
+ 'watch_change_default' => 'Change default notification preferences',
+ 'watch_detail_ignore' => 'Ignoring notifications',
+ 'watch_detail_new' => 'Watching for new pages',
+ 'watch_detail_updates' => 'Watching new pages and updates',
+ 'watch_detail_comments' => 'Watching new pages, updates & comments',
+ 'watch_detail_parent_book' => 'Watching via parent book',
+ 'watch_detail_parent_book_ignore' => 'Ignoring via parent book',
+ 'watch_detail_parent_chapter' => 'Watching via parent chapter',
+ 'watch_detail_parent_chapter_ignore' => 'Ignoring via parent chapter',
+];
diff --git a/lang/tr/errors.php b/lang/tr/errors.php
new file mode 100644
index 00000000000..66d836867c0
--- /dev/null
+++ b/lang/tr/errors.php
@@ -0,0 +1,135 @@
+ 'Bu sayfaya erişim izniniz bulunmuyor.',
+ 'permissionJson' => 'Bu işlemi yapmaya yetkiniz bulunmuyor.',
+
+ // Auth
+ 'error_user_exists_different_creds' => ':email e-posta adresine sahip bir kullanıcı zaten var.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'E-posta adresi zaten doğrulanmış, giriş yapmayı deneyin.',
+ 'email_confirmation_invalid' => 'Bu doğrulama kodu ya geçersiz ya da daha önce kullanılmış, lütfen tekrar kaydolmayı deneyin.',
+ 'email_confirmation_expired' => 'Doğrulama kodunun süresi doldu, yeni bir doğrulama kodu e-posta adresine gönderildi.',
+ 'email_confirmation_awaiting' => 'Bu hesaba ait e-posta adresinin doğrulanması gerekiyor',
+ 'ldap_fail_anonymous' => 'Anonim olarak gerçekleştirilmeye çalışılan LDAP erişimi başarısız oldu',
+ 'ldap_fail_authed' => 'Verilen bilgiler kullanılarak gerçekleştirilmeye çalışılan LDAP erişimi başarısız oldu',
+ 'ldap_extension_not_installed' => 'LDAP PHP eklentisi kurulu değil',
+ 'ldap_cannot_connect' => 'LDAP sunucusuna bağlanılamadı, ilk bağlantı başarısız oldu',
+ 'saml_already_logged_in' => 'Zaten giriş yapılmış',
+ 'saml_no_email_address' => 'Harici kimlik doğrulama sisteminden gelen veriler, bu kullanıcının e-posta adresini içermiyor',
+ 'saml_invalid_response_id' => 'Harici doğrulama sistemi tarafından sağlanan bir veri talebi, bu uygulama tarafından başlatılan bir işlem tarafından tanınamadı. Giriş yaptıktan sonra geri dönmek bu soruna yol açmış olabilir.',
+ 'saml_fail_authed' => ':system kullanarak giriş yapma başarısız oldu; sistem, başarılı bir kimlik doğrulama sağlayamadı',
+ 'oidc_already_logged_in' => 'Zaten oturum açılmış',
+ 'oidc_no_email_address' => 'Harici kimlik doğrulama sisteminden gelen veriler, bu kullanıcının e-posta adresini içermiyor',
+ 'oidc_fail_authed' => ':system kullanarak giriş yapma başarısız oldu; sistem, başarılı bir kimlik doğrulama sağlayamadı',
+ 'social_no_action_defined' => 'Herhangi bir eylem tanımlanmamış',
+ 'social_login_bad_response' => ":socialAccount girişi sırasında bir hata meydana geldi: \n:error",
+ 'social_account_in_use' => 'Bu :socialAccount zaten kullanımda, :socialAccount hesabıyla giriş yapmayı deneyin.',
+ 'social_account_email_in_use' => ':email e-posta adresi zaten kullanılıyor. Zaten bir hesabınız varsa, :socialAccount hesabınızı profil ayarlarınızdan mevcut hesabınıza bağlayabilirsiniz.',
+ 'social_account_existing' => 'Bu :socialAccount zaten hesabınıza bağlanmış.',
+ 'social_account_already_used_existing' => 'Bu :socialAccount, başka bir kullanıcı tarafından kullanılıyor.',
+ 'social_account_not_used' => 'Bu :socialAccount hesabı hiç bir kullanıcıya bağlanmamış. Lütfen profil ayarlarınızdan mevcut hesabınıza bağlayınız. ',
+ 'social_account_register_instructions' => 'Hâlâ bir hesabınız yoksa, :socialAccount aracılığıyla kaydolabilirsiniz.',
+ 'social_driver_not_found' => 'Social driver bulunamadı',
+ 'social_driver_not_configured' => ':socialAccount ayarlarınız doğru bir şekilde ayarlanmadı.',
+ 'invite_token_expired' => 'Davetiye bağlantısının süresi doldu. Bunun yerine parolanızı sıfırlamayı deneyebilirsiniz.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // System
+ 'path_not_writable' => ':filePath dosya yolu yüklenemedi. Sunucuya yazılabilir olduğundan emin olun.',
+ 'cannot_get_image_from_url' => ':url adresindeki görsel alınamadı',
+ 'cannot_create_thumbs' => 'Sunucu, görsel ön izlemelerini oluşturamadı. Lütfen GD PHP eklentisinin kurulu olduğundan emin olun.',
+ 'server_upload_limit' => 'Sunucu bu boyutta dosya yüklemenize izin vermiyor. Lütfen daha küçük bir dosya deneyin.',
+ 'server_post_limit' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.',
+ 'uploaded' => 'Sunucu bu boyutta dosya yüklemenize izin vermiyor. Lütfen daha küçük bir dosya deneyin.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Görsel yüklenirken bir hata meydana geldi',
+ 'image_upload_type_error' => 'Yüklemeye çalıştığınız dosya türü geçersizdir',
+ 'image_upload_replace_type' => 'Görsel dosyası değişimleri, aynı dosya uzantı tipinde olmalı',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Çizim verileri yüklenemedi. Çizim dosyası artık mevcut olmayabilir veya erişim izniniz olmayabilir.',
+
+ // Attachments
+ 'attachment_not_found' => 'Ek bulunamadı',
+ 'attachment_upload_error' => 'Ekler yüklenirken bir hata oluştu',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Taslak kaydetme başarısız oldu. Bu sayfayı kaydetmeden önce internet bağlantınız olduğundan emin olun',
+ 'page_draft_delete_fail' => 'Sayfa taslağı silinemedi ve geçerli sayfanın kayıtlı içeriği getirilemedi',
+ 'page_custom_home_deletion' => 'Bu sayfa, "Ana Sayfa" olarak ayarlandığı için silinemez',
+
+ // Entities
+ 'entity_not_found' => 'Öge bulunamadı',
+ 'bookshelf_not_found' => 'Kitaplık bulunamadı',
+ 'book_not_found' => 'Kitap bulunamadı',
+ 'page_not_found' => 'Sayfa bulunamadı',
+ 'chapter_not_found' => 'Bölüm bulunamadı',
+ 'selected_book_not_found' => 'Seçilen kitap bulunamadı',
+ 'selected_book_chapter_not_found' => 'Seçilen kitap veya bölüm bulunamadı',
+ 'guests_cannot_save_drafts' => 'Misafirler taslak kaydedemezler',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Tek olan yöneticiyi silemezsiniz',
+ 'users_cannot_delete_guest' => 'Misafir kullanıyıcıyı silemezsiniz',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Bu rol düzenlenemez',
+ 'role_system_cannot_be_deleted' => 'Bu rol, bir sistem rolüdür ve silinemez',
+ 'role_registration_default_cannot_delete' => 'Bu rol, kaydolan üyelere varsayılan olarak atandığı için silinemez',
+ 'role_cannot_remove_only_admin' => 'Bu kullanıcı, yönetici rolü olan tek kullanıcı olduğu için silinemez. Bu kullanıcıyı silmek için önce başka bir kullanıcıya yönetici rolü atayın.',
+
+ // Comments
+ 'comment_list' => 'Yorumlar yüklenirken bir hata oluştu.',
+ 'cannot_add_comment_to_draft' => 'Taslaklara yorum ekleyemezsiniz.',
+ 'comment_add' => 'Yorum eklerken/güncellerken bir hata olıuştu.',
+ 'comment_delete' => 'Yorum silinirken bir hata oluştu.',
+ 'empty_comment' => 'Boş bir yorum ekleyemezsiniz.',
+
+ // Error pages
+ '404_page_not_found' => 'Sayfa Bulunamadı',
+ 'sorry_page_not_found' => 'Üzgünüz, aradığınız sayfa bulunamıyor.',
+ 'sorry_page_not_found_permission_warning' => 'Bu sayfanın var olduğunu düşünüyorsanız, görüntüleme iznine sahip olmayabilirsiniz.',
+ 'image_not_found' => 'Görsel Bulunamadı',
+ 'image_not_found_subtitle' => 'Üzgünüz, aradığınız görsel dosyası bulunamadı.',
+ 'image_not_found_details' => 'Bu resmin var olmasını bekliyorsanız silinmiş olabilir.',
+ 'return_home' => 'Ana sayfaya dön',
+ 'error_occurred' => 'Bir Hata Oluştu',
+ 'app_down' => ':appName şu anda erişilemez durumda',
+ 'back_soon' => 'En kısa sürede tekrar erişilebilir duruma gelecektir.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Yapılan istekte, yetkilendirme anahtarı bulunamadı',
+ 'api_bad_authorization_format' => 'Yapılan istekte bir yetkilendirme anahtarı bulundu fakat doğru görünmüyor',
+ 'api_user_token_not_found' => 'Sağlanan yetkilendirme anahtarı ile eşleşen bir API anahtarı bulunamadı',
+ 'api_incorrect_token_secret' => 'Kullanılan API için sağlanan gizli anahtar doğru değil',
+ 'api_user_no_api_permission' => 'Kullanılan API anahtarının sahibi API çağrısı yapmak için izne sahip değil',
+ 'api_user_token_expired' => 'Kullanılan yetkilendirme anahtarının süresi doldu',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Test e-postası gönderilirken bir hata meydana geldi:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'The URL does not match the configured allowed SSR hosts',
+];
diff --git a/lang/tr/notifications.php b/lang/tr/notifications.php
new file mode 100644
index 00000000000..5dfb719783e
--- /dev/null
+++ b/lang/tr/notifications.php
@@ -0,0 +1,29 @@
+ 'New comment on page: :pageName',
+ 'new_comment_intro' => 'A user has commented on a page in :appName:',
+ 'new_page_subject' => 'Yeni sayfa :pageName',
+ 'new_page_intro' => 'A new page has been created in :appName:',
+ 'updated_page_subject' => 'Updated page: :pageName',
+ 'updated_page_intro' => 'A page has been updated in :appName:',
+ 'updated_page_debounce' => 'To prevent a mass of notifications, for a while you won\'t be sent notifications for further edits to this page by the same editor.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Page Name:',
+ 'detail_page_path' => 'Page Path:',
+ 'detail_commenter' => 'Commenter:',
+ 'detail_comment' => 'Comment:',
+ 'detail_created_by' => 'Created By:',
+ 'detail_updated_by' => 'Updated By:',
+
+ 'action_view_comment' => 'View Comment',
+ 'action_view_page' => 'View Page',
+
+ 'footer_reason' => 'This notification was sent to you because :link cover this type of activity for this item.',
+ 'footer_reason_link' => 'your notification preferences',
+];
diff --git a/resources/lang/tr/pagination.php b/lang/tr/pagination.php
similarity index 100%
rename from resources/lang/tr/pagination.php
rename to lang/tr/pagination.php
diff --git a/resources/lang/tr/passwords.php b/lang/tr/passwords.php
similarity index 100%
rename from resources/lang/tr/passwords.php
rename to lang/tr/passwords.php
diff --git a/lang/tr/preferences.php b/lang/tr/preferences.php
new file mode 100644
index 00000000000..f4ec771b2d7
--- /dev/null
+++ b/lang/tr/preferences.php
@@ -0,0 +1,52 @@
+ 'My Account',
+
+ 'shortcuts' => 'Kısayollar',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Burada, gezinme ve eylemler için kullanılan klavye sistem arayüzü kısayollarını etkinleştirebilir veya devre dışı bırakabilirsiniz.',
+ 'shortcuts_customize_desc' => 'Aşağıdaki kısayolların her birini özelleştirebilirsiniz. Bir kısayol için girişi seçtikten sonra istediğiniz tuş kombinasyonuna basmanız yeterlidir.',
+ 'shortcuts_toggle_label' => 'Klavye kısayolları etkinleştirildi',
+ 'shortcuts_section_navigation' => 'Navigasyon',
+ 'shortcuts_section_actions' => 'Ortak Eylemler',
+ 'shortcuts_save' => 'Kısayolları Kaydet',
+ 'shortcuts_overlay_desc' => 'Not: Kısayollar etkinleştirildiğinde, "?" tuşuna basılarak o anda ekranda görünen eylemler için mevcut kısayolları vurgulayan bir yardımcı yer paylaşımı kullanılabilir.',
+ 'shortcuts_update_success' => 'Kısayol tercihleri güncellendi!',
+ 'shortcuts_overview_desc' => 'Manage keyboard shortcuts you can use to navigate the system user interface.',
+
+ 'notifications' => 'Notification Preferences',
+ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.',
+ 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own',
+ 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notify upon replies to my comments',
+ 'notifications_save' => 'Save Preferences',
+ 'notifications_update_success' => 'Notification preferences have been updated!',
+ 'notifications_watched' => 'Watched & Ignored Items',
+ 'notifications_watched_desc' => 'Below are the items that have custom watch preferences applied. To update your preferences for these, view the item then find the watch options in the sidebar.',
+
+ 'auth' => 'Access & Security',
+ 'auth_change_password' => 'Change Password',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Password has been updated!',
+
+ 'profile' => 'Profile Details',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'View Public Profile',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Delete Account',
+ 'delete_my_account' => 'Delete My Account',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/tr/settings.php b/lang/tr/settings.php
new file mode 100644
index 00000000000..a33d3e0ac04
--- /dev/null
+++ b/lang/tr/settings.php
@@ -0,0 +1,374 @@
+ 'Ayarlar',
+ 'settings_save' => 'Ayarları Kaydet',
+ 'system_version' => 'Sistem Sürümü',
+ 'categories' => 'Kategoriler',
+
+ // App Settings
+ 'app_customization' => 'Özelleştirme',
+ 'app_features_security' => 'Özellikler & Güvenlik',
+ 'app_name' => 'Uygulama Adı',
+ 'app_name_desc' => 'Bu isim, başlıkta ve sistem tarafından gönderilen bütün e-postalarda gösterilecektir.',
+ 'app_name_header' => 'İsmi başlıkta göster',
+ 'app_public_access' => 'Açık Erişim',
+ 'app_public_access_desc' => 'Bu özelliği aktifleştirmek, giriş yapmamış misafir kullanıcıların BookStack uygulamanıza erişimini sağlar.',
+ 'app_public_access_desc_guest' => 'Kayıtlı olmayan kullanıcılar için erişim yetkileri, "Guest" kullanıcısı üzerinden kontrol edilebilir.',
+ 'app_public_access_toggle' => 'Açık erişime izin ver',
+ 'app_public_viewing' => 'Herkese açık görüntülemeye izin verilsin mi?',
+ 'app_secure_images' => 'Daha Güvenli Görsel Yüklemeleri',
+ 'app_secure_images_toggle' => 'Daha güvenli görsel yüklemelerini aktifleştir',
+ 'app_secure_images_desc' => 'Bütün görseller, performans sebepleri nedeniyle herkes tarafından görüntülenebilir durumdadır. Bu seçeneği aktif ederseniz; görsel bağlantılarının önüne rastgele, tahmini zor karakterler eklenmesini sağlarsınız. Kolay erişimin önlenmesi için dizin indekslerinin kapalı olduğundan emin olun.',
+ 'app_default_editor' => 'Varsayılan Yazı Düzenleyici',
+ 'app_default_editor_desc' => 'Select which editor will be used by default when editing new pages. This can be overridden at a page level where permissions allow.',
+ 'app_custom_html' => 'Özel HTML "Head" İçeriği',
+ 'app_custom_html_desc' => 'Buraya yazacağınız içerik, etiketinin içine ve en sonuna eklenecektir. Bu işlem, stil değişikliklerinin uygulanmasında ya da analytics kodlarının eklenmesinde yararlı olmaktadır.',
+ 'app_custom_html_disabled_notice' => 'Olası hatalı değişikliklerin geriye alınabilmesi için bu sayfanın özelleştirilmiş HTML "head" içeriği devre dışı bırakıldı.',
+ 'app_logo' => 'Uygulama Logosu',
+ 'app_logo_desc' => 'This is used in the application header bar, among other areas. This image should be 86px in height. Large images will be scaled down.',
+ 'app_icon' => 'Uygulama Simgesi',
+ 'app_icon_desc' => 'This icon is used for browser tabs and shortcut icons. This should be a 256px square PNG image.',
+ 'app_homepage' => 'Ana Sayfa',
+ 'app_homepage_desc' => 'Varsayılan görünüm yerine ana sayfada görünmesi için bir görünüm seçin. Sayfa izinleri, burada seçeceğiniz sayfalar için yok sayılacaktır.',
+ 'app_homepage_select' => 'Bir sayfa seçin',
+ 'app_footer_links' => 'Altbilgi Bağlantıları',
+ '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::" 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' => 'Bağlantı Etiketi',
+ 'app_footer_links_url' => 'Bağlantı adresi',
+ 'app_footer_links_add' => 'Altbilgi Bağlantısı Ekle',
+ 'app_disable_comments' => 'Yorumları Devre Dışı Bırak',
+ 'app_disable_comments_toggle' => 'Yorumları devre dışı bırak',
+ 'app_disable_comments_desc' => 'Bütün sayfalar için yorumları devre dışı bırakır. Mevcut yorumlar gösterilmeyecektir.',
+
+ // Color settings
+ 'color_scheme' => 'Application Color Scheme',
+ 'color_scheme_desc' => 'Set the colors to use in the application user interface. Colors can be configured separately for dark and light modes to best fit the theme and ensure legibility.',
+ 'ui_colors_desc' => 'Set the application primary color and default link color. The primary color is mainly used for the header banner, buttons and interface decorations. The default link color is used for text-based links and actions, both within written content and in the application interface.',
+ 'app_color' => 'Birincil Renk',
+ 'link_color' => 'Varsayılan Bağlantı Rengi',
+ 'content_colors_desc' => 'Set colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.',
+ 'bookshelf_color' => 'Raf Rengi',
+ 'book_color' => 'Kitap Rengi',
+ 'chapter_color' => 'Bölüm Rengi',
+ 'page_color' => 'Sayfa Rengi',
+ 'page_draft_color' => 'Sayfa Taslağı Rengi',
+
+ // Registration Settings
+ 'reg_settings' => 'Kayıt İşlemleri',
+ 'reg_enable' => 'Kayıtları Aktifleştir',
+ 'reg_enable_toggle' => 'Kayıtları aktifleştir',
+ 'reg_enable_desc' => 'Kullanıcılar kaydolduktan sonra sizin belirleyeceğiniz bir role otomatik olarak atanabilirler.',
+ 'reg_default_role' => 'Kayıttan sonraki varsayılan kullanıcı rolü',
+ 'reg_enable_external_warning' => 'Harici LDAP veya SAML kimlik doğrulaması etkinken yukarıdaki seçenek yok sayılır. Mevcut harici üyelere yönelik kimlik doğrulama başarılı olursa, mevcut olmayan üyelerin kullanıcı hesapları otomatik olarak oluşturulur.',
+ 'reg_email_confirmation' => 'E-posta Doğrulaması',
+ 'reg_email_confirmation_toggle' => 'E-posta doğrulamasını zorunlu kıl',
+ 'reg_confirm_email_desc' => 'Eğer alan adı kısıtlaması kullanılıyorsa, bu seçenek yok sayılarak e-posta doğrulaması zorunlu kılınacaktır.',
+ 'reg_confirm_restrict_domain' => 'Alan Adı Kısıtlaması',
+ 'reg_confirm_restrict_domain_desc' => 'Kısıtlamak istediğiniz e-posta alan adlarını vigül ile ayırarak yazınız. Kullanıcılara, uygulamaya erişmeden önce adreslerini doğrulamaları için bir e-posta gönderilecektir. Başarılı bir kayıt işleminden sonra kullanıcıların e-posta adreslerini değiştirebileceklerini unutmayın.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Hiçbir kısıtlama tanımlanmamış',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Bakım',
+ 'maint_image_cleanup' => 'Görselleri Temizle',
+ 'maint_image_cleanup_desc' => 'Sayfaları ve revizyon içeriklerini tarayarak hangi görsellerin ve çizimlerin kullanımda olduğunu ve hangilerinin gereksiz olduğunu tespit eder. Bunu başlatmadan önce veritabanının ve görsellerin tam bir yedeğinin alındığından emin olun.',
+ 'maint_delete_images_only_in_revisions' => 'Eski sayfa revizyonlarındaki görselleri de sil',
+ 'maint_image_cleanup_run' => 'Temizliği Başlat',
+ 'maint_image_cleanup_warning' => 'Muhtemelen kullanılmayan :count adet görsel bulundu. Bu görselleri silmek istediğinize emin misiniz?',
+ 'maint_image_cleanup_success' => 'Muhtemelen kullanılmayan :count adet görsel bulundu ve silindi!',
+ 'maint_image_cleanup_nothing_found' => 'Kullanılmayan görsel bulunamadığından hiçbir şey silinmedi!',
+ 'maint_send_test_email' => 'Deneme E-postası Gönder',
+ 'maint_send_test_email_desc' => 'Bu işlem, profilinize tanımladığınız e-posta adresine bir deneme e-postası gönderir.',
+ 'maint_send_test_email_run' => 'Deneme e-postasını gönder',
+ 'maint_send_test_email_success' => 'E-posta, :address adresine gönderildi',
+ 'maint_send_test_email_mail_subject' => 'Deneme E-postası',
+ 'maint_send_test_email_mail_greeting' => 'E-posta iletimi çalışıyor gibi görünüyor!',
+ 'maint_send_test_email_mail_text' => 'Tebrikler! Eğer bu e-posta bildirimini alıyorsanız, e-posta ayarlarınız doğru bir şekilde ayarlanmış demektir.',
+ 'maint_recycle_bin_desc' => 'Silinen raflar, kitaplar, bölümler ve sayfalar geri dönüşüm kutusuna gönderilir, böylece geri yüklenebilir veya kalıcı olarak silinebilir. Geri dönüşüm kutusundaki daha eski öğeler, sistem yapılandırmasına bağlı olarak bir süre sonra otomatik olarak kaldırılabilir.',
+ 'maint_recycle_bin_open' => 'Geri Dönüşüm Kutusunu Aç',
+ 'maint_regen_references' => 'Referansları Yeniden Oluştur',
+ 'maint_regen_references_desc' => 'Bu eylem, veritabanındaki çapraz öğe referans dizinini yeniden oluşturur. Bu işlem genellikle otomatik olarak gerçekleştirilir ancak bu eylem eski içerikleri veya resmi olmayan yöntemlerle eklenen içerikleri indekslemek için yararlı olabilir.',
+ 'maint_regen_references_success' => 'Referans dizini yeniden oluşturuldu!',
+ 'maint_timeout_command_note' => 'Not: Bu eylemin çalışması zaman alabilir, bu da bazı web ortamlarında zaman aşımı sorunlarına yol açabilir. Alternatif olarak, bu eylem bir terminal komutu kullanılarak gerçekleştirilebilir.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Geri Dönüşüm Kutusu',
+ 'recycle_bin_desc' => 'Burada silinen öğeleri geri yükleyebilir veya bunları sistemden kalıcı olarak kaldırmayı seçebilirsiniz. Bu liste, izin filtrelerinin uygulandığı sistemdeki benzer etkinlik listelerinden farklı olarak filtrelenmez.',
+ 'recycle_bin_deleted_item' => 'Silinen öge',
+ 'recycle_bin_deleted_parent' => 'Üst',
+ 'recycle_bin_deleted_by' => 'Tarafından silindi',
+ 'recycle_bin_deleted_at' => 'Silinme Zamanı',
+ 'recycle_bin_permanently_delete' => 'Kalıcı Olarak Sil',
+ 'recycle_bin_restore' => 'Geri Yükle',
+ 'recycle_bin_contents_empty' => 'Geri dönüşüm kutusu boş',
+ 'recycle_bin_empty' => 'Geri Dönüşüm Kutusunu Boşalt',
+ 'recycle_bin_empty_confirm' => 'Bu işlem, her bir öğenin içinde bulunan içerik de dahil olmak üzere geri dönüşüm kutusundaki tüm öğeleri kalıcı olarak imha edecektir. Geri dönüşüm kutusunu boşaltmak istediğinizden emin misiniz?',
+ 'recycle_bin_destroy_confirm' => 'This action will permanently delete this item from the system, along with any child elements listed below, and you will not be able to restore this content. Are you sure you want to permanently delete this item?',
+ 'recycle_bin_destroy_list' => 'Kalıcı Olarak Silinecek Öğeler',
+ 'recycle_bin_restore_list' => 'Geri Yüklenecek Öğeler',
+ 'recycle_bin_restore_confirm' => 'Bu eylem, tüm alt öğeler dahil olmak üzere silinen öğeyi orijinal konumlarına geri yükleyecektir. Orijinal konum o zamandan beri silinmişse ve şimdi geri dönüşüm kutusunda bulunuyorsa, üst öğenin de geri yüklenmesi gerekecektir.',
+ 'recycle_bin_restore_deleted_parent' => 'Bu öğenin üst öğesi de silindi. Bunlar, üst öğe de geri yüklenene kadar silinmiş olarak kalacaktır.',
+ 'recycle_bin_restore_parent' => 'Restore Parent',
+ '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' => 'Denetim Kaydı',
+ 'audit_desc' => 'Bu denetim günlüğü, sistemde izlenen etkinliklerin bir listesini görüntüler. Bu liste, izin filtrelerinin uygulandığı sistemdeki benzer etkinlik listelerinden farklı olarak filtrelenmez.',
+ 'audit_event_filter' => 'Etkinlik Filtresi',
+ 'audit_event_filter_no_filter' => 'Filtre Yok',
+ 'audit_deleted_item' => 'Silinen Öge',
+ 'audit_deleted_item_name' => 'Isim: :name',
+ 'audit_table_user' => 'Kullanıcı',
+ 'audit_table_event' => 'Etkinlik',
+ 'audit_table_related' => 'İlgili Öğe veya Detay',
+ 'audit_table_ip' => 'IP Adresi',
+ 'audit_table_date' => 'Aktivite Tarihi',
+ 'audit_date_from' => 'Tarih Aralığından',
+ 'audit_date_to' => 'Tarih Aralığına',
+
+ // Role Settings
+ 'roles' => 'Roller',
+ 'role_user_roles' => 'Kullanıcı Rolleri',
+ 'roles_index_desc' => 'Roles are used to group users & provide system permission to their members. When a user is a member of multiple roles the privileges granted will stack and the user will inherit all abilities.',
+ 'roles_x_users_assigned' => ':count user assigned|:count users assigned',
+ 'roles_x_permissions_provided' => ':count permission|:count permissions',
+ 'roles_assigned_users' => 'Assigned Users',
+ 'roles_permissions_provided' => 'Provided Permissions',
+ 'role_create' => 'Yeni Rol Oluştur',
+ 'role_delete' => 'Rolü Sil',
+ 'role_delete_confirm' => 'Bu işlem, \':roleName\' adlı rolü silecektir.',
+ 'role_delete_users_assigned' => 'Bu role atanmış :userCount adet kullanıcı var. Eğer bu kullanıcıların rollerini değiştirmek istiyorsanız, aşağıdan yeni bir rol seçin.',
+ 'role_delete_no_migration' => "Kullanıcıları taşıma",
+ 'role_delete_sure' => 'Bu rolü silmek istediğinize emin misiniz?',
+ 'role_edit' => 'Rolü Düzenle',
+ 'role_details' => 'Rol Detayları',
+ 'role_name' => 'Rol Adı',
+ 'role_desc' => 'Rolün Kısa Tanımı',
+ 'role_mfa_enforced' => 'Çok Aşamalı Kimlik Doğrulama Gerekiyor',
+ 'role_external_auth_id' => 'Harici Doğrulama Kimlikleri',
+ 'role_system' => 'Sistem Yetkileri',
+ 'role_manage_users' => 'Kullanıcıları yönet',
+ 'role_manage_roles' => 'Rolleri ve rol izinlerini yönet',
+ 'role_manage_entity_permissions' => 'Bütün kitap, bölüm ve sayfa izinlerini yönet',
+ 'role_manage_own_entity_permissions' => 'Kendine ait kitabın, bölümün ve sayfaların izinlerini yönet',
+ 'role_manage_page_templates' => 'Sayfa şablonlarını yönet',
+ 'role_access_api' => 'Sistem programlama arayüzüne (API) eriş',
+ 'role_manage_settings' => 'Uygulama ayarlarını yönet',
+ 'role_export_content' => 'İçeriği dışa aktar',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Yazı editörünü değiştir',
+ 'role_notifications' => 'Receive & manage notifications',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Varlık Yetkileri',
+ 'roles_system_warning' => 'Yukarıdaki üç izinden herhangi birine erişimin, kullanıcının kendi ayrıcalıklarını veya sistemdeki diğerlerinin ayrıcalıklarını değiştirmesine izin verebileceğini unutmayın. Yalnızca bu izinlere sahip rolleri güvenilir kullanıcılara atayın.',
+ 'role_asset_desc' => 'Bu izinler, sistem içindeki varlıklara varsayılan erişim izinlerini ayarlar. Kitaplar, bölümler ve sayfalar üzerindeki izinler, buradaki izinleri geçersiz kılar.',
+ 'role_asset_admins' => 'Yöneticilere otomatik olarak bütün içeriğe erişim yetkisi verilir ancak bu seçenekler, kullanıcı arayüzündeki bazı seçeneklerin gösterilmesine veya gizlenmesine neden olabilir.',
+ 'role_asset_image_view_note' => 'This relates to visibility within the image manager. Actual access of uploaded image files will be dependant upon system image storage option.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Hepsi',
+ 'role_own' => 'Kendine Ait',
+ 'role_controlled_by_asset' => 'Yüklendikleri varlık tarafından kontrol ediliyor',
+ 'role_save' => 'Rolü Kaydet',
+ 'role_users' => 'Bu roldeki kullanıcılar',
+ 'role_users_none' => 'Bu role henüz bir kullanıcı atanmadı',
+
+ // Users
+ 'users' => 'Kullanıcılar',
+ 'users_index_desc' => 'Create & manage individual user accounts within the system. User accounts are used for login and attribution of content & activity. Access permissions are primarily role-based but user content ownership, among other factors, may also affect permissions & access.',
+ 'user_profile' => 'Kullanıcı Profili',
+ 'users_add_new' => 'Yeni Kullanıcı Ekle',
+ 'users_search' => 'Kullanıcı Ara',
+ 'users_latest_activity' => 'Son Etkinlik',
+ 'users_details' => 'Kullanıcı Detayları',
+ 'users_details_desc' => 'Bu kullanıcı için gösterilecek bir isim ve e-posta adresi belirleyin. Buraya yazacağınız e-posta adresi, uygulamaya giriş yaparken kullanılacaktır.',
+ 'users_details_desc_no_email' => 'Diğer kullanıcılar tarafından tanınabilmesi için bir isim belirleyin.',
+ 'users_role' => 'Kullanıcı Rolleri',
+ 'users_role_desc' => 'Bu kullanıcının hangi rollere atanacağını belirleyin. Birden fazla role sahip kullanıcılar, atandığı bütün rollerin yetkilerine sahip olurlar.',
+ 'users_password' => 'Kullanıcı Şifresi',
+ 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 8 characters long.',
+ 'users_send_invite_text' => 'Bu kullanıcıya kendi şifresini belirleyebilmesi için bir davetiye e-postası gönderebilir ya da kullanıcının şifresini kendiniz belirleyebilirsiniz.',
+ 'users_send_invite_option' => 'Kullanıcıya davetiye e-postası gönder',
+ 'users_external_auth_id' => 'Harici Doğrulama Kimliği',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ 'users_system_public' => 'Bu kullanıcı, uygulamanızı ziyaret eden bütün misafir kullanıcıları temsil eder. Giriş yapmak için kullanılamaz ancak otomatik olarak atanır.',
+ 'users_delete' => 'Kullanıcıyı Sil',
+ 'users_delete_named' => ':userName kullanıcısını sil ',
+ 'users_delete_warning' => 'Bu işlem \':userName\' kullanıcısını sistemden tamamen silecektir.',
+ 'users_delete_confirm' => 'Bu kullanıcıyı tamamen silmek istediğinize emin misiniz?',
+ 'users_migrate_ownership' => 'Sahipliği Taşıyın',
+ 'users_migrate_ownership_desc' => 'Başka bir kullanıcının şu anda bu kullanıcıya ait olan tüm öğelerin sahibi olmasını istiyorsanız buradan bir kullanıcı seçin.',
+ 'users_none_selected' => 'Hiçbir kullanıcı seçilmedi',
+ 'users_edit' => 'Kullanıcıyı Düzenle',
+ 'users_edit_profile' => 'Profili Düzenle',
+ 'users_avatar' => 'Avatar',
+ 'users_avatar_desc' => 'Bu kullanıcıyı temsil eden bir görsel seçin. Bu görsel yaklaşık 256px boyutunda bir kare olmalıdır.',
+ 'users_preferred_language' => 'Tercih Edilen Dil',
+ 'users_preferred_language_desc' => 'Bu seçenek, kullanıcı arayüzünün dilini değiştirmek için kullanılır. Burada yapılan değişiklik herhangi bir kullanıcı tarafından oluşturulmuş içeriği etkilemeyecektir.',
+ 'users_social_accounts' => 'Sosyal Hesaplar',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Buraya diğer hesaplarınızı ekleyerek, uygulamaya daha hızlı ve kolay bir giriş sağlayabilirsiniz. Bir hesabın bağlantısını kesmek daha önce sahip olduğunuz erişimi kaldırmaz. Bağlı sosyal hesabınızın erişimini, profil ayarlarınızdan kaldırabilirsiniz.',
+ 'users_social_connect' => 'Hesabı Bağla',
+ 'users_social_disconnect' => 'Hesabın Bağlantısını Kes',
+ 'users_social_status_connected' => 'Connected',
+ 'users_social_status_disconnected' => 'Disconnected',
+ 'users_social_connected' => ':socialAccount hesabı, profilinize başarıyla bağlandı.',
+ 'users_social_disconnected' => ':socialAccount hesabınızın profilinizle ilişiği başarıyla kesildi.',
+ 'users_api_tokens' => 'API Anahtarları',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'Bu kullanıcı için oluşturulmuş herhangi bir API anahtarı bulunamadı',
+ 'users_api_tokens_create' => 'Anahtar Oluştur',
+ 'users_api_tokens_expires' => 'Bitiş süresi',
+ 'users_api_tokens_docs' => 'API Dokümantasyonu',
+ 'users_mfa' => 'Çok Aşamalı Kimlik Doğrulama',
+ 'users_mfa_desc' => 'Setup multi-factor authentication as an extra layer of security for your user account.',
+ 'users_mfa_x_methods' => ':count method configured|:count methods configured',
+ 'users_mfa_configure' => 'Yöntemleri Yapılandır',
+
+ // API Tokens
+ 'user_api_token_create' => 'API Anahtarı Oluştur',
+ 'user_api_token_name' => 'İsim',
+ 'user_api_token_name_desc' => 'Anahtarınıza gelecekte ne amaçla kullanıldığını hatırlatması açısından anlamlı bir isim veriniz.',
+ 'user_api_token_expiry' => 'Bitiş Tarihi',
+ 'user_api_token_expiry_desc' => 'Bu anahtarın süresinin dolduğu bir tarih belirleyin. Bu tarihten sonra, bu anahtar kullanılarak yapılan istekler artık çalışmaz. Bu alanı boş bırakmak, bitiş tarihini 100 yıl sonrası yapar.',
+ 'user_api_token_create_secret_message' => 'Bu anahtar oluşturulduktan hemen sonra bir "ID Anahtarı" ve "Gizli Anahtar" üretilip görüntülenecektir. Gizli anahtar sadece bir defa gösterilecektir, bu yüzden devam etmeden önce bu değeri güvenli bir yere kopyaladığınızdan emin olun.',
+ 'user_api_token' => 'API Erişim Anahtarı',
+ 'user_api_token_id' => 'Anahtar ID',
+ 'user_api_token_id_desc' => 'Bu, API isteklerini karşılamak için sistem tarafından oluşturulmuş ve sonradan düzenlenemeyen bir tanımlayıcıdır.',
+ 'user_api_token_secret' => 'Gizli Anahtar',
+ 'user_api_token_secret_desc' => 'Bu, API isteklerinde sağlanması gereken anahtar için sistem tarafından oluşturulan bir gizli anahtardır. Bu anahtar sadece bir defa görüntülenecektir, bu nedenle bu değeri güvenli bir yere kopyalayın.',
+ 'user_api_token_created' => 'Anahtar :timeAgo Oluşturuldu',
+ 'user_api_token_updated' => 'Anahtar :timeAgo Güncellendi',
+ 'user_api_token_delete' => 'Anahtarı Sil',
+ 'user_api_token_delete_warning' => 'Bu işlem \':tokenName\' adındaki API anahtarını sistemden tamamen silecektir.',
+ 'user_api_token_delete_confirm' => 'Bu API anahtarını silmek istediğinize emin misiniz?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks are a way to send data to external URLs when certain actions and events occur within the system which allows event-based integration with external platforms such as messaging or notification systems.',
+ 'webhooks_x_trigger_events' => ':count trigger event|:count trigger events',
+ 'webhooks_create' => 'Create New Webhook',
+ 'webhooks_none_created' => 'No webhooks have yet been created.',
+ 'webhooks_edit' => 'Webhook\'u Düzenle',
+ 'webhooks_save' => 'Webhook\'u Kaydet',
+ 'webhooks_details' => 'Webhook Detayları',
+ 'webhooks_details_desc' => 'Provide a user friendly name and a POST endpoint as a location for the webhook data to be sent to.',
+ 'webhooks_events' => 'Webhook Olayları',
+ 'webhooks_events_desc' => 'Select all the events that should trigger this webhook to be called.',
+ 'webhooks_events_warning' => 'Keep in mind that these events will be triggered for all selected events, even if custom permissions are applied. Ensure that use of this webhook won\'t expose confidential content.',
+ 'webhooks_events_all' => 'Tüm sistem olayları',
+ 'webhooks_name' => 'Webhook Adı',
+ 'webhooks_timeout' => 'Webhook İsteği Zaman Aşımı (Saniyeler)',
+ 'webhooks_endpoint' => 'Webhook Endpoint',
+ 'webhooks_active' => 'Webhook Aktif',
+ 'webhook_events_table_header' => 'Etkinlikler',
+ 'webhooks_delete' => 'Web Kancasını Sil',
+ 'webhooks_delete_warning' => 'Bu, \':webhookName\' adıyla bu webhook, sistemden tamamen silecektir.',
+ 'webhooks_delete_confirm' => 'Bu web kancası silmek istediğinize emin misiniz?',
+ 'webhooks_format_example' => 'Webhook Biçimlendirme Örneği',
+ 'webhooks_format_example_desc' => 'Webhook verileri, yapılandırılmış uç noktaya aşağıdaki formatı izleyen JSON olarak bir POST isteği olarak gönderilir. "related_item" ve "url" özellikleri isteğe bağlıdır ve tetiklenen olayın türüne bağlı olacaktır.',
+ 'webhooks_status' => 'Webhook Durumu',
+ 'webhooks_last_called' => 'Last Called:',
+ 'webhooks_last_errored' => 'Last Errored:',
+ 'webhooks_last_error_message' => 'Son Hata Mesajı:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Danca',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'İbranice',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovence',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/tr/validation.php b/lang/tr/validation.php
new file mode 100644
index 00000000000..5916f454333
--- /dev/null
+++ b/lang/tr/validation.php
@@ -0,0 +1,123 @@
+ ':attribute kabul edilmelidir.',
+ 'active_url' => ':attribute, geçerli bir URL adresi değildir.',
+ 'after' => ':attribute tarihi, :date tarihinden sonraki bir tarih olmalıdır.',
+ 'alpha' => ':attribute sadece harflerden oluşabilir.',
+ 'alpha_dash' => ':attribute sadece harf, rakam ve tirelerden oluşabilir.',
+ 'alpha_num' => ':attribute sadece harflerden ve rakamlardan oluşabilir.',
+ 'array' => ':attribute bir dizi olmalıdır.',
+ 'backup_codes' => 'Girilen kod geçersiz veya daha önce kullanılmış.',
+ 'before' => ':attribute tarihi, :date tarihinden önceki bir tarih olmalıdır.',
+ 'between' => [
+ 'numeric' => ':attribute değeri, :min ve :max değerleri arasında olmalıdır.',
+ 'file' => ':attribute, :min ve :max kilobyte boyutları arasında olmalıdır.',
+ 'string' => ':attribute, :min ve :max karakter arasında olmalıdır.',
+ 'array' => ':attribute, :min ve :max öge arasında olmalıdır.',
+ ],
+ 'boolean' => ':attribute değeri true veya false olmalıdır.',
+ 'confirmed' => ':attribute doğrulaması eşleşmiyor.',
+ 'date' => ':attribute geçerli bir tarih değil.',
+ 'date_format' => ':attribute formatı, :format formatına uymuyor.',
+ 'different' => ':attribute ve :other birbirinden farklı olmalıdır.',
+ 'digits' => ':attribute, :digits basamaklı olmalıdır.',
+ 'digits_between' => ':attribute, en az :min ve en fazla :max basamaklı olmalıdır.',
+ 'email' => ':attribute, geçerli bir e-posta adresi olmalıdır.',
+ 'ends_with' => ':attribute, şunlardan birisiyle bitmelidir: :values',
+ 'file' => 'Geçerli bir dosya olara :attribute sağlanmalıdır.',
+ 'filled' => ':attribute alanı zorunludur.',
+ 'gt' => [
+ 'numeric' => ':attribute, :max değerinden büyük olmalıdır.',
+ 'file' => ':attribute, :value kilobayttan büyük olmalıdır.',
+ 'string' => ':attribute, :value karakterden fazla olmalıdır.',
+ 'array' => ':attribute, :value ögeden daha fazla öge içermelidir.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute, :value değerinden büyük veya bu değere eşit olmalıdır.',
+ 'file' => ':attribute, en az :value kilobayt olmalıdır.',
+ 'string' => ':attribute, en az :value karakter içermelidir.',
+ 'array' => ':attribute, en az :value öge içermelidir.',
+ ],
+ 'exists' => 'Seçilen :attribute geçersiz.',
+ 'image' => ':attribute, bir görsel olmalıdır.',
+ 'image_extension' => ':attribute, geçerli ve desteklenen bir görsel uzantısına sahip olmalıdır.',
+ 'in' => 'Seçilen :attribute geçersizdir.',
+ 'integer' => ':attribute, bir tam sayı olmalıdır.',
+ 'ip' => ':attribute, geçerli bir IP adresi olmalıdır.',
+ 'ipv4' => ':attribute, geçerli bir IPv4 adresi olmalıdır.',
+ 'ipv6' => ':attribute, geçerli bir IPv6 adresi olmalıdır.',
+ 'json' => ':attribute, geçerli bir JSON dizimi olmalıdır.',
+ 'lt' => [
+ 'numeric' => ':attribute, :value değerinden küçük olmalıdır.',
+ 'file' => ':attribute, :value kilobayttan küçük olmalıdır.',
+ 'string' => ':attribute, :value karakterden küçük olmalıdır.',
+ 'array' => ':attribute, :value ögeden az olmalıdır.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute, en fazla :value değerine eşit olmalıdır.',
+ 'file' => ':attribute, en fazla :value kilobayt olmalıdır.',
+ 'string' => ':attribute, en fazla :value karakter içermelidir.',
+ 'array' => ':attribute, en fazla :value öge içermelidir.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute, :max değerinden büyük olmayabilir.',
+ 'file' => ':attribute, :max kilobayttan büyük olmayabilir.',
+ 'string' => ':attribute, :max karakterden daha fazla karakter içermiyor olabilir.',
+ 'array' => ':attribute, :max ögeden daha fazla öge içermiyor olabilir.',
+ ],
+ 'mimes' => ':attribute, şu dosya tiplerinde olmalıdır: :values.',
+ 'min' => [
+ 'numeric' => ':attribute, :min değerinden az olmamalıdır.',
+ 'file' => ':attribute, :min kilobayttan küçük olmamalıdır.',
+ 'string' => ':attribute, en az :min karakter içermelidir.',
+ 'array' => ':attribute, en az :min öge içermelidir.',
+ ],
+ 'not_in' => 'Seçili :attribute geçersiz.',
+ 'not_regex' => ':attribute formatı geçersiz.',
+ 'numeric' => ':attribute, bir sayı olmalıdır.',
+ 'regex' => ':attribute formatı geçersiz.',
+ 'required' => ':attribute alanı zorunludur.',
+ 'required_if' => ':other alanının :value olması, :attribute alanını zorunlu kılar.',
+ 'required_with' => ':values değerinin mevcudiyeti, :attribute alanını zorunlu kılar.',
+ 'required_with_all' => ':values değerlerinin mevcudiyeti, :attribute alanını zorunlu kılar.',
+ 'required_without' => ':values değerinin bulunmuyor olması, :attribute alanını zorunlu kılar.',
+ 'required_without_all' => ':values değerlerinden hiçbirinin bulunmuyor olması, :attribute alanını zorunlu kılar.',
+ 'same' => ':attribute ve :other eşleşmelidir.',
+ 'safe_url' => 'Sağlanan bağlantı güvenli olmayabilir.',
+ 'size' => [
+ 'numeric' => ':attribute, :size boyutunda olmalıdır.',
+ 'file' => ':attribute, :size kilobayt olmalıdır.',
+ 'string' => ':attribute, :size karakter uzunluğunda olmalıdır.',
+ 'array' => ':attribute, :size sayıda öge içermelidir.',
+ ],
+ 'string' => ':attribute, string olmalıdır.',
+ 'timezone' => ':attribute, geçerli bir bölge olmalıdır.',
+ 'totp' => 'Girilen kod geçersiz veya süresi dolmuş.',
+ 'unique' => ':attribute zaten alınmış.',
+ 'url' => ':attribute formatı geçersiz.',
+ 'uploaded' => 'Dosya yüklemesi başarısız oldu. Sunucu, bu boyuttaki dosyaları kabul etmiyor olabilir.',
+
+ 'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => 'The :attribute needs to reference a file of type :validTypes, found :foundType.',
+ 'zip_model_expected' => 'Data object expected but ":type" found.',
+ 'zip_unique' => 'The :attribute must be unique for the object type within the ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Şifre onayı zorunludur',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/uk/activities.php b/lang/uk/activities.php
new file mode 100644
index 00000000000..e8b77e0d430
--- /dev/null
+++ b/lang/uk/activities.php
@@ -0,0 +1,140 @@
+ 'створено сторінку',
+ 'page_create_notification' => 'Сторінка успішно створена',
+ 'page_update' => 'оновив сторінку',
+ 'page_update_notification' => 'Сторінка успішно оновлена',
+ 'page_delete' => 'видалив сторінку',
+ 'page_delete_notification' => 'Сторінка успішно видалена',
+ 'page_restore' => 'відновив сторінку',
+ 'page_restore_notification' => 'Сторінка успішно відновлена',
+ 'page_move' => 'перемістив сторінку',
+ 'page_move_notification' => 'Сторінку успішно перенесено',
+
+ // Chapters
+ 'chapter_create' => 'створив розділ',
+ 'chapter_create_notification' => 'Розділ успішно створено',
+ 'chapter_update' => 'оновив розділ',
+ 'chapter_update_notification' => 'Розділ успішно оновлено',
+ 'chapter_delete' => 'видалив розділ',
+ 'chapter_delete_notification' => 'Розділ успішно видалено',
+ 'chapter_move' => 'перемістив розділ',
+ 'chapter_move_notification' => 'Розділ успішно перенесений',
+
+ // Books
+ 'book_create' => 'створив книгу',
+ 'book_create_notification' => 'Книгу успішно створено',
+ 'book_create_from_chapter' => 'перетворений розділ в книгу',
+ 'book_create_from_chapter_notification' => 'Розділ успішно перетворений в книгу',
+ 'book_update' => 'оновив книгу',
+ 'book_update_notification' => 'Книгу успішно оновлено',
+ 'book_delete' => 'видалив книгу',
+ 'book_delete_notification' => 'Книгу успішно видалено',
+ 'book_sort' => 'sorted книгу',
+ 'book_sort_notification' => 'Книгу успішно відновлено',
+
+ // Bookshelves
+ 'bookshelf_create' => 'створено полицю',
+ 'bookshelf_create_notification' => 'Полиця успішно створена',
+ 'bookshelf_create_from_book' => 'конвертовано книгу у полицю',
+ 'bookshelf_create_from_book_notification' => 'Книжку успішно конвертовано на полицю',
+ 'bookshelf_update' => 'оновлено полицю',
+ 'bookshelf_update_notification' => 'Полиця успішно оновлена',
+ 'bookshelf_delete' => 'видалена полиця',
+ 'bookshelf_delete_notification' => 'Полиця успішно видалена',
+
+ // Revisions
+ 'revision_restore' => 'відновлено версію',
+ 'revision_delete' => 'видалена версія',
+ 'revision_delete_notification' => 'Версію успішно видалено',
+
+ // Favourites
+ 'favourite_add_notification' => '":ім\'я" було додане до ваших улюлених',
+ 'favourite_remove_notification' => '":ім\'я" було видалено з ваших улюблених',
+
+ // Watching
+ 'watch_update_level_notification' => 'Налаштування перегляду успішно оновлено',
+
+ // Auth
+ 'auth_login' => 'ввійшли',
+ 'auth_register' => 'зареєстрований як новий користувач',
+ 'auth_password_reset_request' => 'запит на скидання пароля користувача',
+ 'auth_password_reset_update' => 'скинути пароль користувача',
+ 'mfa_setup_method' => 'налаштований метод MFA',
+ 'mfa_setup_method_notification' => 'Багатофакторний метод успішно налаштований',
+ 'mfa_remove_method' => 'видалив метод MFA',
+ 'mfa_remove_method_notification' => 'Багатофакторний метод успішно видалений',
+
+ // Settings
+ 'settings_update' => 'оновлені налаштування',
+ 'settings_update_notification' => 'Налаштування успішно оновлено',
+ 'maintenance_action_run' => 'виконуються дії щодо обслуговування',
+
+ // Webhooks
+ 'webhook_create' => 'створений вебхук',
+ 'webhook_create_notification' => 'Веб хук успішно створений',
+ 'webhook_update' => 'оновлений вебхук',
+ 'webhook_update_notification' => 'Вебхуки успішно оновлено',
+ 'webhook_delete' => 'видалений вебхук',
+ 'webhook_delete_notification' => 'Вебхуки успішно видалено',
+
+ // Imports
+ 'import_create' => 'створений імпорт',
+ 'import_create_notification' => 'Імпорт успішно завантажений',
+ 'import_run' => 'оновлений імпорт',
+ 'import_run_notification' => 'Контент успішно імпортовано',
+ 'import_delete' => 'видалений імпорт',
+ 'import_delete_notification' => 'Імпорт успішно видалено',
+
+ // Users
+ 'user_create' => 'створений користувач',
+ 'user_create_notification' => 'Користувач успішно створений',
+ 'user_update' => 'оновлений користувач',
+ 'user_update_notification' => 'Користувача було успішно оновлено',
+ 'user_delete' => 'вилучений користувач',
+ 'user_delete_notification' => 'Користувача успішно видалено',
+
+ // API Tokens
+ 'api_token_create' => 'створений APi токен',
+ 'api_token_create_notification' => 'API токен успішно створений',
+ 'api_token_update' => 'оновлено API токен',
+ 'api_token_update_notification' => 'Токен API успішно оновлено',
+ 'api_token_delete' => 'видалено API токен',
+ 'api_token_delete_notification' => 'API-токен успішно видалено',
+
+ // Roles
+ 'role_create' => 'створену роль',
+ 'role_create_notification' => 'Роль успішно створена',
+ 'role_update' => 'оновлена роль',
+ 'role_update_notification' => 'Роль успішно оновлена',
+ 'role_delete' => 'видалена роль',
+ 'role_delete_notification' => 'Роль успішно видалена',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'очищено кошик',
+ 'recycle_bin_restore' => 'відновлено із кошику',
+ 'recycle_bin_destroy' => 'видалено з кошика',
+
+ // Comments
+ 'commented_on' => 'прокоментував',
+ 'comment_create' => 'додано коментар',
+ 'comment_update' => 'оновлено коментар',
+ 'comment_delete' => 'видалений коментар',
+
+ // Sort Rules
+ 'sort_rule_create' => 'створене правило сортування',
+ 'sort_rule_create_notification' => 'Правило сортування успішно створено',
+ 'sort_rule_update' => 'оновлено правило сортування',
+ 'sort_rule_update_notification' => 'Правило сортування успішно оновлено',
+ 'sort_rule_delete' => 'видалено правило сортування',
+ 'sort_rule_delete_notification' => 'Правило сортування успішно видалено',
+
+ // Other
+ 'permissions_update' => 'оновив дозволи',
+];
diff --git a/lang/uk/auth.php b/lang/uk/auth.php
new file mode 100644
index 00000000000..27aae39367e
--- /dev/null
+++ b/lang/uk/auth.php
@@ -0,0 +1,117 @@
+ 'Цей обліковий запис не знайдено.',
+ 'throttle' => 'Забагато спроб входу в систему. Будь ласка, спробуйте ще раз через :seconds секунд.',
+
+ // Login & Register
+ 'sign_up' => 'Реєстрація',
+ 'log_in' => 'Увійти',
+ 'log_in_with' => 'Увійти через :socialDriver',
+ 'sign_up_with' => 'Зареєструватися через :socialDriver',
+ 'logout' => 'Вихід',
+
+ 'name' => 'Ім\'я',
+ 'username' => 'Логін',
+ 'email' => 'Адреса електронної пошти',
+ 'password' => 'Пароль',
+ 'password_confirm' => 'Підтвердження пароля',
+ 'password_hint' => 'Повинен бути щонайменше 8 символів',
+ 'forgot_password' => 'Забули пароль?',
+ 'remember_me' => 'Запам\'ятати мене',
+ 'ldap_email_hint' => 'Введіть email для цього облікового запису.',
+ 'create_account' => 'Створити обліковий запис',
+ 'already_have_account' => 'Вже є обліковий запис?',
+ 'dont_have_account' => 'Немає облікового запису?',
+ 'social_login' => 'Вхід через соціальну мережу',
+ 'social_registration' => 'Реєстрація через соціальну мережу',
+ 'social_registration_text' => 'Реєстрація і вхід через інший сервіс.',
+
+ 'register_thanks' => 'Дякуємо за реєстрацію!',
+ 'register_confirm' => 'Будь ласка, перевірте свою електронну пошту та натисніть кнопку підтвердження, щоб отримати доступ до :appName.',
+ 'registrations_disabled' => 'Реєстрацію вимкнено',
+ 'registration_email_domain_invalid' => 'Цей домен електронної пошти заборонений для реєстрації',
+ 'register_success' => 'Дякуємо за реєстрацію! Ви зареєстровані та ввійшли в систему.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Спроба входу в систему',
+ 'auto_init_starting_desc' => 'Ми пишемо вашій системі аутентифікації, щоб запустити процес авторизації. Якщо після 5 секунд Ви можете спробувати натиснути на посилання нижче.',
+ 'auto_init_start_link' => 'Продовжити з автентифікацією',
+
+ // Password Reset
+ 'reset_password' => 'Скинути пароль',
+ 'reset_password_send_instructions' => 'Введіть адресу електронної пошти нижче, і вам буде надіслано електронне повідомлення з посиланням на зміну пароля.',
+ 'reset_password_send_button' => 'Надіслати посилання для скидання пароля',
+ 'reset_password_sent' => 'Посилання для скидання пароля буде надіслано на :email, якщо ця електронна адреса вказана в системі.',
+ 'reset_password_success' => 'Ваш пароль успішно скинуто.',
+ 'email_reset_subject' => 'Скинути ваш пароль :appName',
+ 'email_reset_text' => 'Ви отримали цей електронний лист, оскільки до нас надійшов запит на скидання пароля для вашого облікового запису.',
+ 'email_reset_not_requested' => 'Якщо ви не надсилали запит на скидання пароля, подальші дії не потрібні.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Підтвердьте свою електронну пошту на :appName',
+ 'email_confirm_greeting' => 'Дякуємо, що приєдналися до :appName!',
+ 'email_confirm_text' => 'Будь ласка, підтвердьте свою адресу електронної пошти, натиснувши кнопку нижче:',
+ 'email_confirm_action' => 'Підтвердити Email',
+ 'email_confirm_send_error' => 'Необхідно підтвердження електронною поштою, але система не змогла надіслати електронний лист. Зверніться до адміністратора, щоб правильно налаштувати електронну пошту.',
+ 'email_confirm_success' => 'Ваша адреса електронної пошти була підтверджена! Тепер ви можете увійти в систему, використовуючи цю адресу електронної пошти.',
+ 'email_confirm_resent' => 'Лист з підтвердженням надіслано, перевірте свою пошту.',
+ 'email_confirm_thanks' => 'Дякуємо за підтвердження!',
+ 'email_confirm_thanks_desc' => 'Будь ласка, зачекайте деякий час, поки підтвердження буде оброблено. Якщо ви не перенаправлені через 3 секунди, натисніть посилання "Продовжити" нижче, щоб продовжити.',
+
+ 'email_not_confirmed' => 'Адресу електронної скриньки не підтверджено',
+ 'email_not_confirmed_text' => 'Ваша електронна адреса ще не підтверджена.',
+ 'email_not_confirmed_click_link' => 'Будь-ласка, натисніть на посилання в електронному листі, яке було надіслано після реєстрації.',
+ 'email_not_confirmed_resend' => 'Якщо ви не можете знайти електронний лист, ви можете повторно надіслати підтвердження електронною поштою, на формі нижче.',
+ 'email_not_confirmed_resend_button' => 'Повторне підтвердження електронної пошти',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Вас запросили приєднатися до :appName!',
+ 'user_invite_email_greeting' => 'Для вас створено обліковий запис на :appName.',
+ 'user_invite_email_text' => 'Натисніть кнопку нижче, щоб встановити пароль облікового запису та отримати доступ:',
+ 'user_invite_email_action' => 'Встановити пароль облікового запису',
+ 'user_invite_page_welcome' => 'Ласкаво просимо до :appName!',
+ 'user_invite_page_text' => 'Для завершення процесу створення облікового запису та отримання доступу вам потрібно задати пароль, який буде використовуватися для входу в :appName в майбутньому.',
+ 'user_invite_page_confirm_button' => 'Підтвердити пароль',
+ 'user_invite_success_login' => 'Пароль встановлено, ви повинні увійти в систему, використовуючи свій встановлений пароль для доступу :appNam!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Налаштувати двофакторну автентифікацію',
+ 'mfa_setup_desc' => 'Двофакторна аутентифікація додає ще один рівень безпеки для вашого облікового запису.',
+ 'mfa_setup_configured' => 'Вже налаштовано',
+ 'mfa_setup_reconfigure' => 'Переналаштувати',
+ 'mfa_setup_remove_confirmation' => 'Ви впевнені, що хочете видалити цей метод багатофакторної автентифікації?',
+ 'mfa_setup_action' => 'Встановлення',
+ 'mfa_backup_codes_usage_limit_warning' => 'Залишилося менше 5 резервних кодів, Будь ласка, створіть та збережіть новий набір до того, як у вас не вистачає кодів, щоб запобігти блокуванню вашої обліковки.',
+ 'mfa_option_totp_title' => 'Мобільний додаток',
+ 'mfa_option_totp_desc' => 'Для використання багатофакторної автентифікації вам потрібен мобільний додаток, який підтримує TOTP такі як Google Authenticator, Authy або Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Резервні коди',
+ 'mfa_option_backup_codes_desc' => 'Генерує набір резервних кодів для використання одноразового використання, які ви вводите в систему, щоб перевірити свою особу. Переконайтеся, що зберігайте їх в безпечному та безпечному місці.',
+ 'mfa_gen_confirm_and_enable' => 'Підтвердити та увімкнути',
+ 'mfa_gen_backup_codes_title' => 'Налаштування резервних кодів',
+ 'mfa_gen_backup_codes_desc' => 'Зберігайте список кодів в безпечному місці. Для доступу до системи ви зможете використовувати один з кодів як другий механізм аутентифікації.',
+ 'mfa_gen_backup_codes_download' => 'Завантажити коди',
+ 'mfa_gen_backup_codes_usage_warning' => 'Кожний код можна використати лише один раз',
+ 'mfa_gen_totp_title' => 'Налаштування мобільного додатка',
+ 'mfa_gen_totp_desc' => 'Для використання багатофакторної автентифікації вам потрібен мобільний додаток, який підтримує TOTP такі як Google Authenticator, Authy або Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Проскануйте QR-код внизу за допомогою бажаного додатку для аутентифікації, щоб розпочати.',
+ 'mfa_gen_totp_verify_setup' => 'Перевірка налаштувань',
+ 'mfa_gen_totp_verify_setup_desc' => 'Переконайтеся, що все працює, ввівши код, згенерований у вашому додатку аутентифікації, в полі вводу нижче:',
+ 'mfa_gen_totp_provide_code_here' => 'Вкажіть код вашої програми тут',
+ 'mfa_verify_access' => 'Підтвердити доступ',
+ 'mfa_verify_access_desc' => 'Ваш обліковий запис користувача вимагає підтвердження за допомогою додаткового рівня перевірки, перш ніж отримати доступ. Перевірте, використовуючи один з ваших налаштованих способів для продовження.',
+ 'mfa_verify_no_methods' => 'Немає налаштованих методів',
+ 'mfa_verify_no_methods_desc' => 'Для вашого облікового запису не знайдено жодних методів багатофакторної аутентифікації. Вам потрібно буде налаштувати хоча б один спосіб перш ніж отримати доступ.',
+ 'mfa_verify_use_totp' => 'Перевірити за допомогою мобільного додатку',
+ 'mfa_verify_use_backup_codes' => 'Перевірка використовуючи резервний код',
+ 'mfa_verify_backup_code' => 'Резервний код',
+ 'mfa_verify_backup_code_desc' => 'Введіть один з резервних кодів нижче:',
+ 'mfa_verify_backup_code_enter_here' => 'Введіть резервний код тут',
+ 'mfa_verify_totp_desc' => 'Введіть код, згенерований за допомогою мобільного додатку:',
+ 'mfa_setup_login_notification' => 'Налаштовано багатофакторний метод аутентифікації. Будь ласка, зараз увійдіть в систему знову, використовуючи налаштований метод.',
+];
diff --git a/lang/uk/common.php b/lang/uk/common.php
new file mode 100644
index 00000000000..d71f5716200
--- /dev/null
+++ b/lang/uk/common.php
@@ -0,0 +1,115 @@
+ 'Скасувати',
+ 'close' => 'Закрити',
+ 'confirm' => 'Застосувати',
+ 'back' => 'Назад',
+ 'save' => 'Зберегти',
+ 'continue' => 'Продовжити',
+ 'select' => 'Вибрати',
+ 'toggle_all' => 'Увімкнути все',
+ 'more' => 'Ще',
+
+ // Form Labels
+ 'name' => 'Назва',
+ 'description' => 'Опис',
+ 'role' => 'Роль',
+ 'cover_image' => 'Обкладинка',
+ 'cover_image_description' => 'Це зображення має бути приблизно 440х250пікс, щоб його було легко масштабувати та обводити відповідно до інтерфейсу користувача у різних сценаріях, як це необхідно, тому реальні розміри для відображення відрізняються.',
+
+ // Actions
+ 'actions' => 'Дії',
+ 'view' => 'Подивитись',
+ 'view_all' => 'Подивитись все',
+ 'new' => 'Новий',
+ 'create' => 'Створити',
+ 'update' => 'Оновити',
+ 'edit' => 'Редагувати',
+ 'archive' => 'Архів',
+ 'unarchive' => 'Розархівувати',
+ 'sort' => 'Сортувати',
+ 'move' => 'Перемістити',
+ 'copy' => 'Копіювати',
+ 'reply' => 'Відповісти',
+ 'delete' => 'Видалити',
+ 'delete_confirm' => 'Підтвердити видалення',
+ 'search' => 'Шукати',
+ 'search_clear' => 'Очистити пошук',
+ 'reset' => 'Скинути',
+ 'remove' => 'Видалити',
+ 'add' => 'Додати',
+ 'configure' => 'Налаштувати',
+ 'manage' => 'Управління',
+ 'fullscreen' => 'На весь екран',
+ 'favourite' => 'Улюблене',
+ 'unfavourite' => 'Прибрати з обраного',
+ 'next' => 'Уперед',
+ 'previous' => 'Назад',
+ 'filter_active' => 'Активний фільтр:',
+ 'filter_clear' => 'Очистити фільтр',
+ 'download' => 'Завантажити',
+ 'open_in_tab' => 'Відкрити в новій вкладці',
+ 'open' => 'Відкрити',
+
+ // Sort Options
+ 'sort_options' => 'Параметри сортування',
+ 'sort_direction_toggle' => 'Перемикач напрямку сортування',
+ 'sort_ascending' => 'За зростанням',
+ 'sort_descending' => 'За спаданням',
+ 'sort_name' => 'Ім\'я',
+ 'sort_default' => 'За замовчуванням',
+ 'sort_created_at' => 'Дата створення',
+ 'sort_updated_at' => 'Дата оновлення',
+
+ // Misc
+ 'deleted_user' => 'Видалений користувач',
+ 'no_activity' => 'Немає активності для показу',
+ 'no_items' => 'Немає доступних елементів',
+ 'back_to_top' => 'Повернутися до початку',
+ 'skip_to_main_content' => 'Перейти до змісту',
+ 'toggle_details' => 'Подробиці',
+ 'toggle_thumbnails' => 'Мініатюри',
+ 'details' => 'Деталі',
+ 'grid_view' => 'Вигляд Сіткою',
+ 'list_view' => 'Вигляд Списком',
+ 'default' => 'За замовчуванням',
+ 'breadcrumb' => 'Навігація',
+ 'status' => 'Стан',
+ 'status_active' => 'Активний',
+ 'status_inactive' => 'Неактивний',
+ 'never' => 'Ніколи',
+ 'none' => 'Відсутньо',
+
+ // Header
+ 'homepage' => 'Домашня Сторінка',
+ 'header_menu_expand' => 'Розгорнути меню заголовка',
+ 'profile_menu' => 'Меню профілю',
+ 'view_profile' => 'Переглянути профіль',
+ 'edit_profile' => 'Редагувати профіль',
+ 'dark_mode' => 'Темний режим',
+ 'light_mode' => 'Світлий режим',
+ 'global_search' => 'Глобальний Пошук',
+
+ // Layout tabs
+ 'tab_info' => 'Інфо',
+ 'tab_info_label' => 'Вкладка: показувати додаткову інформацію',
+ 'tab_content' => 'Вміст',
+ 'tab_content_label' => 'Вкладка: Показати основний вміст',
+
+ // Email Content
+ 'email_action_help' => 'Якщо у вас виникають проблеми при натисканні кнопки ":actionText", скопіюйте та вставте URL у свій веб-браузер:',
+ 'email_rights' => 'Всі права захищені',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Політика приватності',
+ 'terms_of_service' => 'Умови використання',
+
+ // OpenSearch
+ 'opensearch_description' => 'Шукати :appName',
+];
diff --git a/lang/uk/components.php b/lang/uk/components.php
new file mode 100644
index 00000000000..bbcfbfe1efc
--- /dev/null
+++ b/lang/uk/components.php
@@ -0,0 +1,46 @@
+ 'Вибрати зображення',
+ 'image_list' => 'Список зображень',
+ 'image_details' => 'Деталі зображення',
+ 'image_upload' => 'Завантажити зображення',
+ 'image_intro' => 'Тут ви можете вибрати і керувати зображеннями, які раніше були завантажені в систему.',
+ 'image_intro_upload' => 'Завантажте нове зображення, перетягуючи файл зображення до цього вікна або скориставшись кнопкою "Завантажити зображення" вище.',
+ 'image_all' => 'Всі',
+ 'image_all_title' => 'Переглянути всі зображення',
+ 'image_book_title' => 'Переглянути зображення, завантажені в цю книгу',
+ 'image_page_title' => 'Переглянути зображення, завантажені на цю сторінку',
+ 'image_search_hint' => 'Пошук по імені зображення',
+ 'image_uploaded' => 'Завантажено :uploadedDate',
+ 'image_uploaded_by' => 'Завантажено :userName',
+ 'image_uploaded_to' => 'Завантажено на :pageLink',
+ 'image_updated' => 'Оновлено :updateDate',
+ 'image_load_more' => 'Завантажити ще',
+ 'image_image_name' => 'Назва зображення',
+ 'image_delete_used' => 'Це зображення використовується на наступних сторінках.',
+ 'image_delete_confirm_text' => 'Ви дійсно хочете видалити це зображення?',
+ 'image_select_image' => 'Вибрати зображення',
+ 'image_dropzone' => 'Перетягніть зображення, або натисніть тут для завантаження',
+ 'image_dropzone_drop' => 'Перетягніть зображення сюди для завантаження',
+ 'images_deleted' => 'Зображень видалено',
+ 'image_preview' => 'Попередній перегляд зображення',
+ 'image_upload_success' => 'Зображення завантажено успішно',
+ 'image_update_success' => 'Деталі зображення успішно оновлені',
+ 'image_delete_success' => 'Зображення успішно видалено',
+ 'image_replace' => 'Замінити зображення',
+ 'image_replace_success' => 'Файл зображення успішно оновлено',
+ 'image_rebuild_thumbs' => 'Оновити розмір',
+ 'image_rebuild_thumbs_success' => 'Варіації розміру зображень успішно перебудовані!',
+
+ // Code Editor
+ 'code_editor' => 'Редагувати код',
+ 'code_language' => 'Мова коду',
+ 'code_content' => 'Вміст коду',
+ 'code_session_history' => 'Історія сесії',
+ 'code_save' => 'Зберегти Код',
+];
diff --git a/lang/uk/editor.php b/lang/uk/editor.php
new file mode 100644
index 00000000000..b9024e052b4
--- /dev/null
+++ b/lang/uk/editor.php
@@ -0,0 +1,182 @@
+ 'Основне',
+ 'advanced' => 'Розширений',
+ 'none' => 'Відсутньо',
+ 'cancel' => 'Скасувати',
+ 'save' => 'Зберегти',
+ 'close' => 'Закрити',
+ 'apply' => 'Застосувати',
+ 'undo' => 'Відмінити',
+ 'redo' => 'Відновити',
+ 'left' => 'Ліворуч',
+ 'center' => 'По центру',
+ 'right' => 'Праворуч',
+ 'top' => 'Вгору',
+ 'middle' => 'Посередині',
+ 'bottom' => 'Внизу',
+ 'width' => 'Ширина',
+ 'height' => 'Висота',
+ 'More' => 'Більше',
+ 'select' => 'Вибрати…',
+
+ // Toolbar
+ 'formats' => 'Формати',
+ 'header_large' => 'Великий заголовок',
+ 'header_medium' => 'Середній заголовок',
+ 'header_small' => 'Маленький заголовок',
+ 'header_tiny' => 'Крихітний заголовок',
+ 'paragraph' => 'Параграф',
+ 'blockquote' => 'Цитата',
+ 'inline_code' => 'Вставка коду',
+ 'callouts' => 'Виноски',
+ 'callout_information' => 'Інформація',
+ 'callout_success' => 'Успішно',
+ 'callout_warning' => 'Попередження',
+ 'callout_danger' => 'Небезпека',
+ 'bold' => 'Жирний',
+ 'italic' => 'Курсив',
+ 'underline' => 'Підкреслений',
+ 'strikethrough' => 'Закреслений',
+ 'superscript' => 'Верхній індекс',
+ 'subscript' => 'Нижній індекс',
+ 'text_color' => 'Колір тексту',
+ 'highlight_color' => 'Колір підсвічування',
+ 'custom_color' => 'Власний колір',
+ 'remove_color' => 'Видалити колір',
+ 'background_color' => 'Колір фону',
+ 'align_left' => 'Вирівняти по лівому краю',
+ 'align_center' => 'Вирівняти по центру',
+ 'align_right' => 'Вирівнювання по правому краю',
+ 'align_justify' => 'За шириною',
+ 'list_bullet' => 'Маркований список',
+ 'list_numbered' => 'Нумерований список',
+ 'list_task' => 'Список завдань',
+ 'indent_increase' => 'Збільшити відступ',
+ 'indent_decrease' => 'Зменшити відступ',
+ 'table' => 'Таблиця',
+ 'insert_image' => 'Вставити зображення',
+ 'insert_image_title' => 'Вставити/Редагувати зображення',
+ 'insert_link' => 'Вставити/редагувати посилання',
+ 'insert_link_title' => 'Вставити/редагувати посилання',
+ 'insert_horizontal_line' => 'Вставити горизонтальну лінію',
+ 'insert_code_block' => 'Вставити блок коду',
+ 'edit_code_block' => 'Редагування код блоку',
+ 'insert_drawing' => 'Вставити/редагувати малюнок',
+ 'drawing_manager' => 'Диспетчер малювання',
+ 'insert_media' => 'Вставити/редагувати медіа',
+ 'insert_media_title' => 'Вставити/редагувати медіа',
+ 'clear_formatting' => 'Очистити форматування',
+ 'source_code' => 'Вихідний код',
+ 'source_code_title' => 'Вихідний код',
+ 'fullscreen' => 'На весь екран',
+ 'image_options' => 'Параметри зображень',
+
+ // Tables
+ 'table_properties' => 'Властивості таблиці',
+ 'table_properties_title' => 'Властивості таблиці',
+ 'delete_table' => 'Видалити таблицю',
+ 'table_clear_formatting' => 'Очистити форматування таблиці',
+ 'resize_to_contents' => 'Змінити розмір до вмісту',
+ 'row_header' => 'Заголовок рядка',
+ 'insert_row_before' => 'Вставити рядок перед',
+ 'insert_row_after' => 'Вставити рядок після',
+ 'delete_row' => 'Видалити рядок',
+ 'insert_column_before' => 'Вставити стовпець перед',
+ 'insert_column_after' => 'Вставити стовпець після',
+ 'delete_column' => 'Видалити стовпець',
+ 'table_cell' => 'Комірка',
+ 'table_row' => 'Рядок',
+ 'table_column' => 'Стовпчик',
+ 'cell_properties' => 'Властивості клітинки',
+ 'cell_properties_title' => 'Властивості клітинки',
+ 'cell_type' => 'Тип клітинки',
+ 'cell_type_cell' => 'Комірка',
+ 'cell_scope' => 'Область використання',
+ 'cell_type_header' => 'Комірка заголовка',
+ 'merge_cells' => 'Об\'єднати комірки',
+ 'split_cell' => 'Роз\'єднати комірку',
+ 'table_row_group' => 'Група рядків',
+ 'table_column_group' => 'Група стовпців',
+ 'horizontal_align' => 'Горизонтальне вирівнювання',
+ 'vertical_align' => 'Вертикальне вирівнювання',
+ 'border_width' => 'Ширина бордюру',
+ 'border_style' => 'Стиль рамки',
+ 'border_color' => 'Колір рамки',
+ 'row_properties' => 'Властивості рядка',
+ 'row_properties_title' => 'Властивості рядка',
+ 'cut_row' => 'Вирізати рядок',
+ 'copy_row' => 'Копіювати рядок',
+ 'paste_row_before' => 'Вставити рядок перед',
+ 'paste_row_after' => 'Вставити рядок після',
+ 'row_type' => 'Тип рядка',
+ 'row_type_header' => 'Заголовок',
+ 'row_type_body' => 'Тіло',
+ 'row_type_footer' => 'Низ',
+ 'alignment' => 'Вирівнювання',
+ 'cut_column' => 'Вирізати стовпчик',
+ 'copy_column' => 'Копіювати стовпчик',
+ 'paste_column_before' => 'Вставити стовпець перед',
+ 'paste_column_after' => 'Вставити стовпець після',
+ 'cell_padding' => 'Всередині клітинок',
+ 'cell_spacing' => 'Інтервал між комірками',
+ 'caption' => 'Підпис',
+ 'show_caption' => 'Показати заголовок',
+ 'constrain' => 'Обмеження пропорції',
+ 'cell_border_solid' => 'Суцільний',
+ 'cell_border_dotted' => 'В крапку',
+ 'cell_border_dashed' => 'Пунктир',
+ 'cell_border_double' => 'Подвійна',
+ 'cell_border_groove' => 'Паз',
+ 'cell_border_ridge' => 'Рідж',
+ 'cell_border_inset' => 'Врізка',
+ 'cell_border_outset' => 'Початок',
+ 'cell_border_none' => 'Відсутньо',
+ 'cell_border_hidden' => 'Прихований',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Вихідний код',
+ 'alt_desc' => 'Альтернативний опис',
+ 'embed' => 'Вбудувати',
+ 'paste_embed' => 'Вставте ваш код вставки нижче:',
+ 'url' => 'Адреса URL',
+ 'text_to_display' => 'Текст для показу',
+ 'title' => 'Назва',
+ 'browse_links' => 'Переглянути посилання',
+ 'open_link' => 'Відкрити посилання',
+ 'open_link_in' => 'Відкрити посилання в...',
+ 'open_link_current' => 'Поточне вікно',
+ 'open_link_new' => 'Нове вікно',
+ 'remove_link' => 'Видалити посилання',
+ 'insert_collapsible' => 'Вставити згорнутий блок',
+ 'collapsible_unwrap' => 'Розгорнути',
+ 'edit_label' => 'Редагувати мітку',
+ 'toggle_open_closed' => 'Перемкнути відкрити/закритий',
+ 'collapsible_edit' => 'Редагування згорнутого блоку',
+ 'toggle_label' => 'Перемкнути ярлики',
+
+ // About view
+ 'about' => 'Про редактор',
+ 'about_title' => 'Про WYSIWYG редактор',
+ 'editor_license' => 'Ліцензія редактора і авторські права',
+ 'editor_lexical_license' => 'Цей редактор побудований як форк :lexicalLink який поширюється під ліцензією MIT.',
+ 'editor_lexical_license_link' => 'Тут ви можете знайти повну інформацію про ліцензію.',
+ 'editor_tiny_license' => 'Цей редактор побудований за допомогою :tinylink, яке надається за ліцензією MIT.',
+ 'editor_tiny_license_link' => 'Тут можна знайти авторські та умови ліцензії.',
+ 'save_continue' => 'Зберегти і продовжити',
+ 'callouts_cycle' => '(Тримайте натискання для перемикання між типами)',
+ 'link_selector' => 'Перейти до вмісту',
+ 'shortcuts' => 'Ярлики',
+ 'shortcut' => 'Ярлик',
+ 'shortcuts_intro' => 'Наступні ярлики доступні в редакторі:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Опис',
+];
diff --git a/lang/uk/entities.php b/lang/uk/entities.php
new file mode 100644
index 00000000000..cf79b530cff
--- /dev/null
+++ b/lang/uk/entities.php
@@ -0,0 +1,476 @@
+ 'Недавно створено',
+ 'recently_created_pages' => 'Нещодавно створені сторінки',
+ 'recently_updated_pages' => 'Нещодавно оновлені сторінки',
+ 'recently_created_chapters' => 'Нещодавно створені розділи',
+ 'recently_created_books' => 'Нещодавно створені книги',
+ 'recently_created_shelves' => 'Нещодавно створені полиці',
+ 'recently_update' => 'Недавно оновлено',
+ 'recently_viewed' => 'Недавно переглянуто',
+ 'recent_activity' => 'Остання активність',
+ 'create_now' => 'Створити зараз',
+ 'revisions' => 'Версія',
+ 'meta_revision' => 'Версія #:revisionCount',
+ 'meta_created' => 'Створено :timeLength',
+ 'meta_created_name' => ':user створив :timeLength',
+ 'meta_updated' => 'Оновлено :timeLength',
+ 'meta_updated_name' => ':user оновив :timeLength',
+ 'meta_owned_name' => 'Власник :user',
+ 'meta_reference_count' => 'Посилання на :count елемент|Посилання – :count елементів',
+ 'entity_select' => 'Вибір об\'єкта',
+ 'entity_select_lack_permission' => 'У вас немає необхідних прав для вибору цього елемента',
+ 'images' => 'Зображення',
+ 'my_recent_drafts' => 'Мої останні чернетки',
+ 'my_recently_viewed' => 'Мої недавні перегляди',
+ 'my_most_viewed_favourites' => 'Мої найпопулярніші улюблені',
+ 'my_favourites' => 'Моє обране',
+ 'no_pages_viewed' => 'Ви не переглядали жодної сторінки',
+ 'no_pages_recently_created' => 'Не було створено жодної сторінки',
+ 'no_pages_recently_updated' => 'Немає недавно оновлених сторінок',
+ 'export' => 'Експорт',
+ 'export_html' => 'Вбудований веб-файл',
+ 'export_pdf' => 'PDF файл',
+ 'export_text' => 'Текстовий файл',
+ 'export_md' => 'Файл розмітки',
+ 'export_zip' => 'Портативний ZIP',
+ 'default_template' => 'Типовий шаблон сторінки',
+ 'default_template_explain' => 'Призначити шаблон сторінки, який буде використовуватися як типовий вміст для всіх сторінок, створених у цьому елементі. Майте на увазі, що ця сторінка буде використана лише у випадку, якщо вона має доступ до обраної сторінки шаблону.',
+ 'default_template_select' => 'Виберіть сторінку шаблону',
+ 'import' => 'Імпорт',
+ 'import_validate' => 'Перевірка імпорту',
+ 'import_desc' => 'Імпортувати книги, розділи і сторінки, використовуючи портативний zip-експорт з одного або іншого екземпляру. Виберіть ZIP-файл для продовження. Після завантаження файлу і підтвердження, ви зможете налаштувати та підтвердити імпорт в наступному вікні.',
+ 'import_zip_select' => 'Виберіть ZIP-файл для завантаження',
+ 'import_zip_validation_errors' => 'Під час перевірки вказаного ZIP-файлу були виявлені помилки:',
+ 'import_pending' => 'Іпорт на розгляді',
+ 'import_pending_none' => 'Імпорти не були розпочаті.',
+ 'import_continue' => 'Продовжити імпорт',
+ 'import_continue_desc' => 'Переглянути вміст через імпортування з завантаженого ZIP-файлу. Якщо готово, запустіть імпорт, щоб додати його вміст в цю систему. Завантажений ZIP файл імпорту буде автоматично вилучено при успішному імпорті.',
+ 'import_details' => 'Імпортувати деталі',
+ 'import_run' => 'Запустити імпорт',
+ 'import_size' => ':size Розмір Імпорту ZIP',
+ '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' => 'Переглянути інші сторінки',
+ '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_save' => 'Зберегти дозволи',
+ 'permissions_owner' => 'Власник',
+ 'permissions_role_everyone_else' => 'Всі інші',
+ 'permissions_role_everyone_else_desc' => 'Встановити дозвіл для всіх ролей не спеціально перевизначений.',
+ 'permissions_role_override' => 'Змінити права доступу для ролі',
+ 'permissions_inherit_defaults' => 'Успадковувати за замовчуванням',
+
+ // Search
+ 'search_results' => 'Результати пошуку',
+ 'search_total_results_found' => ':count результатів знайдено|:count всього результатів знайдено',
+ 'search_clear' => 'Очистити пошук',
+ 'search_no_pages' => 'Немає сторінок, які відповідають цьому пошуку',
+ 'search_for_term' => 'Шукати :term',
+ 'search_more' => 'Більше результатів',
+ 'search_advanced' => 'Розширений пошук',
+ 'search_terms' => 'Пошукові фрази',
+ 'search_content_type' => 'Тип вмісту',
+ 'search_exact_matches' => 'Точна відповідність',
+ 'search_tags' => 'Пошукові теги',
+ 'search_options' => 'Параметри',
+ 'search_viewed_by_me' => 'Переглянуто мною',
+ 'search_not_viewed_by_me' => 'Не переглянуто мною',
+ 'search_permissions_set' => 'Налаштування дозволів',
+ 'search_created_by_me' => 'Створено мною',
+ 'search_updated_by_me' => 'Оновлено мною',
+ 'search_owned_by_me' => 'Належать мені',
+ 'search_date_options' => 'Параметри дати',
+ 'search_updated_before' => 'Оновлено до',
+ 'search_updated_after' => 'Оновлено після',
+ 'search_created_before' => 'Створено до',
+ 'search_created_after' => 'Створено після',
+ 'search_set_date' => 'Встановити дату',
+ 'search_update' => 'Оновити пошук',
+
+ // Shelves
+ 'shelf' => 'Полиця',
+ 'shelves' => 'Полиці',
+ 'x_shelves' => ':count Полиця|:count Полиць',
+ 'shelves_empty' => 'Жодних полиць не було створено',
+ 'shelves_create' => 'Створити нову полицю',
+ 'shelves_popular' => 'Популярні полиці',
+ 'shelves_new' => 'Нові полиці',
+ 'shelves_new_action' => 'Нова полиця',
+ 'shelves_popular_empty' => 'Найпопулярніші полиці з\'являться тут.',
+ 'shelves_new_empty' => 'Тут будуть з\'являтися останні створені полиці.',
+ 'shelves_save' => 'Зберегти полицю',
+ 'shelves_books' => 'Книги на цій полиці',
+ 'shelves_add_books' => 'Додати книги до цієї полиці',
+ 'shelves_drag_books' => 'Перетягніть книги нижче, щоб додати їх до цієї полиці',
+ 'shelves_empty_contents' => 'Ця полиця не має призначених їй книг',
+ 'shelves_edit_and_assign' => 'Редагувати полицю для присвоєння книг',
+ 'shelves_edit_named' => 'Редагувати полицю :name',
+ 'shelves_edit' => 'Редагувати полицю',
+ 'shelves_delete' => 'Видалити полицю',
+ 'shelves_delete_named' => 'Видалити полицю :name',
+ 'shelves_delete_explain' => "Це видалить полицю з ім'ям ':name'. Якщо містить книги, не буде видалено.",
+ 'shelves_delete_confirmation' => 'Ви упевнені, що хочете видалити цю полицю?',
+ 'shelves_permissions' => 'Дозволи полиці',
+ 'shelves_permissions_updated' => 'Дозволи полиці оновлено',
+ 'shelves_permissions_active' => 'Дозволи полиці активні',
+ 'shelves_permissions_cascade_warning' => 'Дозволи на полицях не каскадують автоматично до вміщених книг. Це тому, що книга може стояти на кількох полицях. Однак дозволи можна скопіювати до дочірніх книг за допомогою наведеної нижче опції.',
+ 'shelves_permissions_create' => 'Створення привілеїв для копіювання дозволів для дочірніх книг, використовуючи наведену нижче дію. Вони не контролюють можливість створення книг.',
+ 'shelves_copy_permissions_to_books' => 'Копіювати дозволи на книги',
+ 'shelves_copy_permissions' => 'Копіювати дозволи',
+ 'shelves_copy_permissions_explain' => 'Це застосує поточні налаштування дозволів цієї полиці до всіх книг, які містяться в ній. Перед активацією переконайтеся, що будь-які зміни в дозволах цієї полиці збережено.',
+ 'shelves_copy_permission_success' => 'Права полиці скопійовано до :count книг',
+
+ // Books
+ 'book' => 'Книга',
+ 'books' => 'Книги',
+ 'x_books' => ':count книга|:count книг',
+ 'books_empty' => 'Немає створених книг',
+ 'books_popular' => 'Популярні книги',
+ 'books_recent' => 'Останні книги',
+ 'books_new' => 'Нові книги',
+ 'books_new_action' => 'Нова книга',
+ 'books_popular_empty' => 'Найпопулярніші книги з\'являться тут.',
+ 'books_new_empty' => 'Найновіші книги з\'являться тут.',
+ 'books_create' => 'Створити нову книгу',
+ 'books_delete' => 'Видалити книгу',
+ 'books_delete_named' => 'Видалити книгу :bookName',
+ 'books_delete_explain' => 'Це призведе до видалення книги з назвою \':bookName\'. Всі сторінки та розділи будуть видалені.',
+ 'books_delete_confirmation' => 'Ви впевнені, що хочете видалити цю книгу?',
+ 'books_edit' => 'Редагувати книгу',
+ 'books_edit_named' => 'Редагувати книгу :bookName',
+ 'books_form_book_name' => 'Назва книги',
+ 'books_save' => 'Зберегти книгу',
+ 'books_permissions' => 'Дозволи на книгу',
+ 'books_permissions_updated' => 'Дозволи на книгу оновлено',
+ 'books_empty_contents' => 'Для цієї книги не створено жодної сторінки або розділів.',
+ 'books_empty_create_page' => 'Створити нову сторінку',
+ 'books_empty_sort_current_book' => 'Сортувати поточну книгу',
+ 'books_empty_add_chapter' => 'Додати розділ',
+ 'books_permissions_active' => 'Діючі дозволи на книгу',
+ 'books_search_this' => 'Шукати цю книгу',
+ 'books_navigation' => 'Навігація по книзі',
+ '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_chapters_first' => 'Спершу розділи',
+ 'books_sort_chapters_last' => 'Розділи в кінці',
+ 'books_sort_show_other' => 'Показати інші книги',
+ 'books_sort_save' => 'Зберегти нове замовлення',
+ 'books_sort_show_other_desc' => 'Додавайте інші книги, щоб включити їх у операцію сортування та дозволити легку повторну організацію перехресних книг.',
+ 'books_sort_move_up' => 'Перемістити вгору',
+ 'books_sort_move_down' => 'Перемістити нижче',
+ 'books_sort_move_prev_book' => 'Перейти до попередньої книги',
+ 'books_sort_move_next_book' => 'Перейти до наступної книги',
+ 'books_sort_move_prev_chapter' => 'Перейти до попереднього розділу',
+ 'books_sort_move_next_chapter' => 'Перейти до наступного розділу',
+ 'books_sort_move_book_start' => 'Перейти до початку книги',
+ 'books_sort_move_book_end' => 'Перейти до кінця книги',
+ 'books_sort_move_before_chapter' => 'Перейти до розділу',
+ 'books_sort_move_after_chapter' => 'Перехід в кінець розділу',
+ 'books_copy' => 'Копіювати книгу',
+ 'books_copy_success' => 'Сторінка успішно скопійована',
+
+ // Chapters
+ 'chapter' => 'Розділ',
+ 'chapters' => 'Розділи',
+ 'x_chapters' => ':count розділ|:count розділів',
+ 'chapters_popular' => 'Популярні розділи',
+ 'chapters_new' => 'Новий розділ',
+ 'chapters_create' => 'Створити новий розділ',
+ 'chapters_delete' => 'Видалити розділ',
+ 'chapters_delete_named' => 'Видалити розділ :chapterName',
+ 'chapters_delete_explain' => 'Це видалить розділ під назвою \':chapterName\'. Усі сторінки, що існують у цьому розділі, також будуть видалені.',
+ 'chapters_delete_confirm' => 'Ви впевнені, що хочете видалити цей розділ?',
+ 'chapters_edit' => 'Редагувати розділ',
+ 'chapters_edit_named' => 'Редагувати розділ :chapterName',
+ 'chapters_save' => 'Зберегти розділ',
+ 'chapters_move' => 'Перемістити розділ',
+ 'chapters_move_named' => 'Перемістити розділ :chapterName',
+ 'chapters_copy' => 'Копіювати розділ',
+ 'chapters_copy_success' => 'Розділ успішно скопійовано',
+ 'chapters_permissions' => 'Дозволи розділу',
+ 'chapters_empty' => 'У цьому розділі немає сторінок.',
+ 'chapters_permissions_active' => 'Діючі дозволи на розділ',
+ 'chapters_permissions_success' => 'Дозволи на розділ оновлено',
+ 'chapters_search_this' => 'Шукати в цьому розділі',
+ 'chapter_sort_book' => 'Сортувати книгу',
+
+ // Pages
+ 'page' => 'Сторінка',
+ 'pages' => 'Сторінки',
+ 'x_pages' => ':count сторінка|:count сторінок',
+ 'pages_popular' => 'Популярні сторінки',
+ 'pages_new' => 'Нова сторінка',
+ 'pages_attachments' => 'Вкладення',
+ 'pages_navigation' => 'Навігація по сторінці',
+ 'pages_delete' => 'Видалити сторінку',
+ 'pages_delete_named' => 'Видалити сторінку :pageName',
+ 'pages_delete_draft_named' => 'Видалити чернетку :pageName',
+ 'pages_delete_draft' => 'Видалити чернетку',
+ 'pages_delete_success' => 'Сторінка видалена',
+ 'pages_delete_draft_success' => 'Чернетка видалена',
+ 'pages_delete_warning_template' => 'Ця сторінка використовується в якості шаблону сторінки за промовчанням. У цих книгах або розділах більше не буде встановлено шаблон стандартної сторінки, який використовується після того, як ця сторінка буде видалена.',
+ 'pages_delete_confirm' => 'Ви впевнені, що хочете видалити цю сторінку?',
+ 'pages_delete_draft_confirm' => 'Ви впевнені, що хочете видалити цю чернетку?',
+ 'pages_editing_named' => 'Редагування сторінки :pageName',
+ 'pages_edit_draft_options' => 'Параметри чернетки',
+ 'pages_edit_save_draft' => 'Зберегти чернетку',
+ 'pages_edit_draft' => 'Редагувати чернетку сторінки',
+ 'pages_editing_draft' => 'Редагування чернетки',
+ 'pages_editing_page' => 'Редагування сторінки',
+ 'pages_edit_draft_save_at' => 'Чернетка збережена о ',
+ 'pages_edit_delete_draft' => 'Видалити чернетку',
+ 'pages_edit_delete_draft_confirm' => 'Ви дійсно бажаєте видалити зміни у чернетці? Всі зміни, починаючи з останнього повного збереження, будуть втрачені і редактор буде оновлений з останньою сторінкою збереження без чернетки.',
+ 'pages_edit_discard_draft' => 'Відхилити чернетку',
+ 'pages_edit_switch_to_markdown' => 'Змінити редактор на Markdown',
+ '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',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(На бета-тестування)',
+ 'pages_edit_set_changelog' => 'Встановити журнал змін',
+ 'pages_edit_enter_changelog_desc' => 'Введіть короткий опис внесених вами змін',
+ 'pages_edit_enter_changelog' => 'Введіть список змін',
+ 'pages_editor_switch_title' => 'Змінити редактор',
+ 'pages_editor_switch_are_you_sure' => 'Ви впевнені, що хочете змінити редактор цієї сторінки?',
+ 'pages_editor_switch_consider_following' => 'Врахуйте наступне при зміні редакторів:',
+ 'pages_editor_switch_consideration_a' => 'Після збереження нова опція редактора буде використовуватися будь-якими майбутніми редакторами, включаючи ті, які не можуть змінювати сам редактор редакторів.',
+ 'pages_editor_switch_consideration_b' => 'Це може потенційно призвести до втрати деталізації та синтаксису за певних обставин.',
+ 'pages_editor_switch_consideration_c' => 'Мітка або список змін, зроблених з часу останнього збереження, не буде зберігатися в цих змінах.',
+ 'pages_save' => 'Зберегти сторінку',
+ 'pages_title' => 'Заголовок сторінки',
+ 'pages_name' => 'Назва сторінки',
+ 'pages_md_editor' => 'Редактор',
+ 'pages_md_preview' => 'Попередній перегляд',
+ 'pages_md_insert_image' => 'Вставити зображення',
+ 'pages_md_insert_link' => 'Вставити посилання на об\'єкт',
+ 'pages_md_insert_drawing' => 'Вставити малюнок',
+ 'pages_md_show_preview' => 'Показати попередній перегляд',
+ 'pages_md_sync_scroll' => 'Синхронізація прокручування попереднього перегляду',
+ 'pages_md_plain_editor' => 'Текстовий редактор',
+ 'pages_drawing_unsaved' => 'Знайдено незбережену чернетку',
+ 'pages_drawing_unsaved_confirm' => 'Незбережені чернетки були знайдені з попередньої спроби зберегти звіт. Хочете відновити і продовжити редагування цієї чернетки?',
+ 'pages_not_in_chapter' => 'Сторінка не знаходиться в розділі',
+ 'pages_move' => 'Перемістити сторінку',
+ 'pages_copy' => 'Копіювати сторінку',
+ 'pages_copy_desination' => 'Ціль копіювання',
+ 'pages_copy_success' => 'Сторінка успішно скопійована',
+ 'pages_permissions' => 'Дозволи на сторінку',
+ 'pages_permissions_success' => 'Дозволи на сторінку оновлено',
+ 'pages_revision' => 'Версія',
+ 'pages_revisions' => 'Версія сторінки',
+ 'pages_revisions_desc' => 'Нижче наведено всі попередні версії цієї сторінки. Ви можете переглядати, порівнювати та відновлювати старі версії сторінок, якщо це дозволено. Повна історія сторінки може бути показана не повністю, оскільки, залежно від конфігурації системи, старі версії можуть автоматично видалятися.',
+ 'pages_revisions_named' => 'Версії сторінки для :pageName',
+ 'pages_revision_named' => 'Версія сторінки для :pageName',
+ 'pages_revision_restored_from' => 'Відновлено з #:id; :summary',
+ 'pages_revisions_created_by' => 'Створена',
+ 'pages_revisions_date' => 'Дата версії',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Номер редакції',
+ 'pages_revisions_numbered' => 'Версія #:id',
+ 'pages_revisions_numbered_changes' => 'Зміни версії #:id',
+ 'pages_revisions_editor' => 'Тип редактора',
+ 'pages_revisions_changelog' => 'Історія змін',
+ 'pages_revisions_changes' => 'Зміни',
+ 'pages_revisions_current' => 'Поточна версія',
+ 'pages_revisions_preview' => 'Попередній перегляд',
+ 'pages_revisions_restore' => 'Відновити',
+ 'pages_revisions_none' => 'Ця сторінка не має версій',
+ 'pages_copy_link' => 'Копіювати посилання',
+ 'pages_edit_content_link' => 'Перейти до розділу в редакторі',
+ 'pages_pointer_enter_mode' => 'Введіть режим вибору розділу',
+ 'pages_pointer_label' => 'Параметри розділу сторінки',
+ 'pages_pointer_permalink' => 'Постійне посилання на секцію сторінок',
+ 'pages_pointer_include_tag' => ' Секція сторінки включаючи тег',
+ 'pages_pointer_toggle_link' => 'Постійне посилання, натисніть для включення тегу',
+ 'pages_pointer_toggle_include' => 'Включити режим тегів, натисніть для відображення постійного посилання',
+ 'pages_permissions_active' => 'Активні дозволи сторінки',
+ 'pages_initial_revision' => 'Початкова публікація',
+ 'pages_references_update_revision' => 'Автоматичне оновлення системних посилань',
+ 'pages_initial_name' => 'Нова сторінка',
+ 'pages_editing_draft_notification' => 'Ви наразі редагуєте чернетку, що була збережена останньою :timeDiff.',
+ 'pages_draft_edited_notification' => 'З того часу ця сторінка була оновлена. Рекомендуємо відмовитися від цього проекту.',
+ 'pages_draft_page_changed_since_creation' => 'Ця сторінка була оновлена, оскільки була створена ця чернетка. Рекомендується відхилити цей проект або перейматися тим, що ви не перезапишете будь-які зміни в сторінках.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count користувачі(в) почали редагувати цю сторінку',
+ 'start_b' => ':userName розпочав редагування цієї сторінки',
+ 'time_a' => 'з моменту останньої оновлення сторінки',
+ 'time_b' => 'за останні :minCount хвилин',
+ 'message' => ':start :time. Будьте обережні, щоб не перезаписати оновлення інших!',
+ ],
+ 'pages_draft_discarded' => 'Чернетку відкинуто! Редактор був оновлений з поточним вмістом сторінки',
+ 'pages_draft_deleted' => 'Чернетку видалено! Редактор був оновлений з поточною сторінкою вмісту',
+ 'pages_specific' => 'Конкретна сторінка',
+ 'pages_is_template' => 'Шаблон сторінки',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Перемикач бічної панелі',
+ 'page_tags' => 'Теги сторінки',
+ 'chapter_tags' => 'Теги розділів',
+ 'book_tags' => 'Теги книг',
+ 'shelf_tags' => 'Теги полиць',
+ 'tag' => 'Тег',
+ 'tags' => 'Теги',
+ 'tags_index_desc' => 'Теги можна застосовувати до вмісту в системі, щоб застосувати гнучку форму категоризації. Теги можуть мати як ключ, так і значення, при цьому значення є необов’язковим. Після застосування вміст можна запитувати за допомогою імені та значення тегу.',
+ 'tag_name' => 'Назва тегу',
+ 'tag_value' => 'Значення тегу (необов\'язково)',
+ 'tags_explain' => "Додайте кілька тегів, щоб краще класифікувати ваш вміст. \n Ви можете присвоїти значення тегу для більш глибокої організації.",
+ 'tags_add' => 'Додати ще один тег',
+ 'tags_remove' => 'Видалити цей тег',
+ 'tags_usages' => 'Усього тегів використано',
+ 'tags_assigned_pages' => 'Призначено до сторінок',
+ 'tags_assigned_chapters' => 'Призначені до груп',
+ 'tags_assigned_books' => 'Призначено до книг',
+ 'tags_assigned_shelves' => 'Призначені до полиць',
+ 'tags_x_unique_values' => ':count унікальних значень',
+ 'tags_all_values' => 'Всі значення',
+ 'tags_view_tags' => 'Перегляд міток',
+ 'tags_view_existing_tags' => 'Перегляд існуючих тегів',
+ 'tags_list_empty_hint' => 'Теги можуть бути призначені через бічну панель редактора сторінки, або під час редагування деталей книги, глави чи полиці.',
+ 'attachments' => 'Вкладення',
+ 'attachments_explain' => 'Завантажте файли, або додайте посилання, які відображатимуться на вашій сторінці. Їх буде видно на бічній панелі сторінки.',
+ 'attachments_explain_instant_save' => 'Зміни тут зберігаються миттєво.',
+ 'attachments_upload' => 'Завантажити файл',
+ 'attachments_link' => 'Приєднати посилання',
+ 'attachments_upload_drop' => 'Крім того, ви можете перетягувати файл тут і завантажити його в якості вкладення.',
+ 'attachments_set_link' => 'Встановити посилання',
+ 'attachments_delete' => 'Дійсно хочете видалити це вкладення?',
+ 'attachments_dropzone' => 'Для завантаження перетягніть файли',
+ 'attachments_no_files' => 'Файли не завантажені',
+ 'attachments_explain_link' => 'Ви можете приєднати посилання, якщо не бажаєте завантажувати файл. Це може бути посилання на іншу сторінку або посилання на файл у хмарі.',
+ 'attachments_link_name' => 'Назва посилання',
+ 'attachment_link' => 'Посилання на вкладення',
+ 'attachments_link_url' => 'Посилання на файл',
+ 'attachments_link_url_hint' => 'URL-адреса сайту або файлу',
+ 'attach' => 'Приєднати',
+ 'attachments_insert_link' => 'Додати посилання на вкладення',
+ 'attachments_edit_file' => 'Редагувати файл',
+ 'attachments_edit_file_name' => 'Назва файлу',
+ 'attachments_edit_drop_upload' => 'Перетягніть файли, або натисніть тут щоб завантажити та перезаписати',
+ 'attachments_order_updated' => 'Порядок вкладень оновлено',
+ 'attachments_updated_success' => 'Деталі вкладень оновлено',
+ 'attachments_deleted' => 'Вкладення видалено',
+ 'attachments_file_uploaded' => 'Файл успішно завантажений',
+ 'attachments_file_updated' => 'Файл успішно оновлено',
+ 'attachments_link_attached' => 'Посилання успішно додано до сторінки',
+ 'templates' => 'Шаблони',
+ 'templates_set_as_template' => 'Сторінка це шаблон',
+ 'templates_explain_set_as_template' => 'Ви можете встановити цю сторінку як шаблон, щоб її вміст використовувався під час створення інших сторінок. Інші користувачі зможуть користуватися цим шаблоном, якщо вони мають права перегляду для цієї сторінки.',
+ 'templates_replace_content' => 'Замінити вміст сторінки',
+ 'templates_append_content' => 'Додати до вмісту сторінки',
+ 'templates_prepend_content' => 'Додати на початок вмісту сторінки',
+
+ // Profile View
+ 'profile_user_for_x' => 'Користувач вже :time',
+ 'profile_created_content' => 'Створений контент',
+ 'profile_not_created_pages' => ':userName не створив жодної сторінки',
+ 'profile_not_created_chapters' => ':userName не створив жодного розділу',
+ 'profile_not_created_books' => ':userName не створив жодної книги',
+ 'profile_not_created_shelves' => ':userName не створив жодної полиці',
+
+ // Comments
+ 'comment' => 'Коментар',
+ 'comments' => 'Коментарі',
+ 'comment_add' => 'Додати коментар',
+ 'comment_none' => 'Немає коментарів для відображення',
+ 'comment_placeholder' => 'Залиште коментар тут',
+ 'comment_thread_count' => ':count тема коментарів|:count теми коментарів',
+ 'comment_archived_count' => 'Архівовано :count',
+ 'comment_archived_threads' => 'Архівовані теми',
+ 'comment_save' => 'Зберегти коментар',
+ 'comment_new' => 'Новий коментар',
+ 'comment_created' => 'прокоментував :createDiff',
+ 'comment_updated' => 'Оновлено :updateDiff користувачем :username',
+ 'comment_updated_indicator' => 'Оновлено',
+ 'comment_deleted_success' => 'Коментар видалено',
+ 'comment_created_success' => 'Коментар додано',
+ 'comment_updated_success' => 'Коментар оновлено',
+ 'comment_archive_success' => 'Коментар архівовано',
+ 'comment_unarchive_success' => 'Коментар розархівовано',
+ 'comment_view' => 'Переглянути коментар',
+ 'comment_jump_to_thread' => 'Перейти до теми',
+ 'comment_delete_confirm' => 'Ви впевнені, що хочете видалити цей коментар?',
+ 'comment_in_reply_to' => 'У відповідь на :commentId',
+ 'comment_reference' => 'По посиланню',
+ 'comment_reference_outdated' => '(Застарілий)',
+ 'comment_editor_explain' => 'Ось коментарі, які залишилися на цій сторінці. Коментарі можна додати та керовані при перегляді збереженої сторінки.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Ви впевнені, що хочете видалити цю версію?',
+ 'revision_restore_confirm' => 'Дійсно відновити цю версію? Вміст поточної сторінки буде замінено.',
+ 'revision_cannot_delete_latest' => 'Неможливо видалити останню версію.',
+
+ // Copy view
+ 'copy_consider' => 'Будь ласка, наведені нижче при копіюванні вмісту.',
+ 'copy_consider_permissions' => 'Спеціальні налаштування дозволів не будуть скопійовані.',
+ 'copy_consider_owner' => 'Ви станете власником всіх скопійованих матеріалів.',
+ 'copy_consider_images' => 'Файли зображень сторінки не будуть дубльовані і оригінальні зображення збережуть зв\'язок з сторінкою, до якої вони були завантажені.',
+ 'copy_consider_attachments' => 'Вкладення сторінки не буде скопійовано.',
+ 'copy_consider_access' => 'Зміна розташування або дозволів може призвести до доступу до цього вмісту без попереднього доступу.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Перетворити на полиця',
+ 'convert_to_shelf_contents_desc' => 'Ви можете перетворити цю книгу на нову полицю з одним змістом. Розділи, що містяться в цій книзі, будуть перетворені в нові книги. Якщо ця книга містить будь-які сторінки, яких немає у главі, цю книгу буде перейменовано і містить такі сторінки, а ця книга стане частиною нової полиці.',
+ 'convert_to_shelf_permissions_desc' => 'Будь-які дозволи, встановлені на цій книзі, будуть скопійовані в нову полицю та до всіх нових дитячих книг, які не мають прав на виконання. Зверніть увагу, що дозволи на полицях не автоматично каскад до вмісту в межах, як вони роблять для книг.',
+ 'convert_book' => 'Перетворити книгу',
+ 'convert_book_confirm' => 'Ви впевнені, що хочете конвертувати цю книгу?',
+ 'convert_undo_warning' => 'Це не так легко відмінити.',
+ 'convert_to_book' => 'Конвертувати в книгу',
+ 'convert_to_book_desc' => 'Ви можете конвертувати цей розділ в нову книгу з одним контентом. Будь-які дозволи, встановлені на цьому розділі, будуть скопійовані в нову книгу, але будь-які успадковані дозволи, з батьківської книги не буде скопійований, що може призвести до зміни контролю доступу.',
+ 'convert_chapter' => 'Перетворити розділ',
+ 'convert_chapter_confirm' => 'Ви впевнені, що хочете конвертувати цей розділ?',
+
+ // References
+ 'references' => 'Посилання',
+ 'references_none' => 'Немає відслідковуваних посилань для цього елемента.',
+ 'references_to_desc' => 'У списку наведений нижче всі відомі вміст системи, посилання на цей вузол.',
+
+ // Watch Options
+ 'watch' => 'Дивитися',
+ 'watch_title_default' => 'Властивості по замовчуванню',
+ 'watch_desc_default' => 'Відновити перегляд лише до типових налаштувань сповіщень.',
+ 'watch_title_ignore' => 'Ігнорувати',
+ 'watch_desc_ignore' => 'Ігнорувати всі повідомлення, у тому числі з налаштувань рівня користувача.',
+ 'watch_title_new' => 'Нові сторінки',
+ 'watch_desc_new' => 'Сповіщати при створенні нової сторінки у цьому елементі.',
+ 'watch_title_updates' => 'Оновлення всієї сторінки',
+ 'watch_desc_updates' => 'Сповіщати про всі нові сторінки і зміни сторінок.',
+ 'watch_desc_updates_page' => 'Сповіщати про зміни на всіх сторінках.',
+ 'watch_title_comments' => 'Всі оновлення та коментарі до сторінки',
+ 'watch_desc_comments' => 'Повідомляти про всі нові сторінки, зміни до сторінки і нові коментарі.',
+ 'watch_desc_comments_page' => 'Повідомляти про зміни сторінки і нові коментарі.',
+ 'watch_change_default' => 'Змінити налаштування сповіщень за замовчуванням',
+ 'watch_detail_ignore' => 'Ігнорування сповіщень',
+ 'watch_detail_new' => 'Перегляд нових сторінок',
+ 'watch_detail_updates' => 'Перегляд нових сторінок і оновлень',
+ 'watch_detail_comments' => 'Перегляд нових сторінок, оновлень та коментарів',
+ 'watch_detail_parent_book' => 'Перегляд за допомогою батьківської книги',
+ 'watch_detail_parent_book_ignore' => 'Ігнорування за допомогою батьківської книги',
+ 'watch_detail_parent_chapter' => 'Перегляд через батьківську главу',
+ 'watch_detail_parent_chapter_ignore' => 'Ігнорування через батьківську главу',
+];
diff --git a/lang/uk/errors.php b/lang/uk/errors.php
new file mode 100644
index 00000000000..e7632359310
--- /dev/null
+++ b/lang/uk/errors.php
@@ -0,0 +1,135 @@
+ 'Ви не маєте дозволу на доступ до цієї сторінки.',
+ 'permissionJson' => 'Ви не маєте дозволу виконувати заявлену дію.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Користувач з електронною адресою: електронна адреса вже існує, але з іншими обліковими даними.',
+ 'auth_pre_register_theme_prevention' => 'Обліковий запис користувача не може бути зареєстрований за наданими деталями',
+ 'email_already_confirmed' => 'Електронна пошта вже підтверджена, спробуйте увійти.',
+ 'email_confirmation_invalid' => 'Цей токен підтвердження недійсний або вже був використаний, будь ласка, спробуйте знову зареєструватися.',
+ 'email_confirmation_expired' => 'Термін дії токена підтвердження минув, новий електронний лист підтвердження був відправлений.',
+ 'email_confirmation_awaiting' => 'Потрібно підтвердити адресу електронної пошти для облікового запису, який використовується',
+ 'ldap_fail_anonymous' => 'LDAP-доступ невдалий, з використання анонімного зв\'язку',
+ 'ldap_fail_authed' => 'LDAP-доступ невдалий, використовуючи задані параметри dn та password',
+ 'ldap_extension_not_installed' => 'Розширення PHP LDAP не встановлено',
+ 'ldap_cannot_connect' => 'Неможливо підключитися до ldap-сервера, Помилка з\'єднання',
+ 'saml_already_logged_in' => 'Вже увійшли',
+ 'saml_no_email_address' => 'Не вдалося знайти електронну адресу для цього користувача у даних, наданих зовнішньою системою аутентифікації',
+ 'saml_invalid_response_id' => 'Запит із зовнішньої системи аутентифікації не розпізнається процесом, розпочатим цим додатком. Повернення назад після входу могла спричинити цю проблему.',
+ 'saml_fail_authed' => 'Вхід із використанням «:system» не вдався, система не здійснила успішну авторизацію',
+ 'oidc_already_logged_in' => 'Вже ввійшли в систему',
+ 'oidc_no_email_address' => 'Не вдалося знайти адресу електронної пошти для цього користувача у даних, наданих зовнішньою системою автентифікації',
+ 'oidc_fail_authed' => 'Увійти за допомогою :system не вдалося, система не надала успішної авторизації',
+ 'social_no_action_defined' => 'Жодних дій не визначено',
+ 'social_login_bad_response' => "Помилка, отримана під час входу з :socialAccount помилка : \n:error",
+ 'social_account_in_use' => 'Цей :socialAccount обліковий запис вже використовується, спробуйте ввійти з параметрами :socialAccount.',
+ 'social_account_email_in_use' => 'Електронна пошта :email вже використовується. Якщо у вас вже є обліковий запис, ви можете підключити свій обліковий запис :socialAccount з налаштувань вашого профілю.',
+ 'social_account_existing' => 'Цей :socialAccount вже додано до вашого профілю.',
+ 'social_account_already_used_existing' => 'Цей обліковий запис :socialAccount вже використовується іншим користувачем.',
+ 'social_account_not_used' => 'Цей обліковий запис :socialAccount account не пов\'язаний з жодним користувачем. Будь ласка, додайте його в налаштуваннях вашого профілю. ',
+ 'social_account_register_instructions' => 'Якщо у вас ще немає облікового запису, ви можете зареєструвати обліковий запис за допомогою параметра :socialAccount.',
+ 'social_driver_not_found' => 'Драйвер для СоціальноїМережі не знайдено',
+ 'social_driver_not_configured' => 'Ваші соціальні настройки :socialAccount не правильно налаштовані.',
+ 'invite_token_expired' => 'Термін дії цього запрошення закінчився. Замість цього ви можете спробувати скинути пароль свого облікового запису.',
+ 'login_user_not_found' => 'Користувач для цієї дії не знайдений.',
+
+ // System
+ 'path_not_writable' => 'Не вдається завантажити шлях до файлу :filePath. Переконайтеся, що він доступний для запису на сервер.',
+ 'cannot_get_image_from_url' => 'Неможливо отримати зображення з :url',
+ 'cannot_create_thumbs' => 'Сервер не може створювати ескізи. Будь ласка, перевірте, чи встановлено розширення GD PHP.',
+ 'server_upload_limit' => 'Сервер не дозволяє завантажувати файли такого розміру. Спробуйте менший розмір файлу.',
+ 'server_post_limit' => 'Сервер не може отримати вказаний обсяг даних. Спробуйте ще раз з меншими даними або меншим файлом.',
+ 'uploaded' => 'Сервер не дозволяє завантажувати файли такого розміру. Спробуйте менший розмір файлу.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Виникла помилка під час завантаження зображення',
+ 'image_upload_type_error' => 'Тип завантаженого зображення недійсний',
+ 'image_upload_replace_type' => 'Замінники файлів зображень повинні мати однаковий тип',
+ 'image_upload_memory_limit' => 'Не вдалося завантажити зображення і/або створити ескізи через обмеження системних ресурсів.',
+ 'image_thumbnail_memory_limit' => 'Не вдалося створити варіації розміру зображення через обмеження системних ресурсів.',
+ 'image_gallery_thumbnail_memory_limit' => 'Не вдалося створити галерею через обмеження системних ресурсів.',
+ 'drawing_data_not_found' => 'Не вдалося завантажити дані малюнка. Файл малюнка може більше не існувати або у вас немає дозволу на доступ до нього.',
+
+ // Attachments
+ 'attachment_not_found' => 'Вкладення не знайдено',
+ 'attachment_upload_error' => 'Сталася помилка при завантаженні файлу',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Не вдалося зберегти чернетку. Перед збереженням цієї сторінки переконайтеся, що у вас є зв\'язок з сервером.',
+ 'page_draft_delete_fail' => 'Не вдалося видалити чернетку сторінки та отримати збережений вміст сторінки',
+ 'page_custom_home_deletion' => 'Неможливо видалити сторінку, коли вона встановлена як домашня сторінка',
+
+ // Entities
+ 'entity_not_found' => 'Об\'єкт не знайдено',
+ 'bookshelf_not_found' => 'Книжкова полиця не знайдена',
+ 'book_not_found' => 'Книга не знайдена',
+ 'page_not_found' => 'Сторінку не знайдено',
+ 'chapter_not_found' => 'Розділ не знайдено',
+ 'selected_book_not_found' => 'Вибрана книга не знайдена',
+ 'selected_book_chapter_not_found' => 'Вибрана книга або глава не знайдена',
+ 'guests_cannot_save_drafts' => 'Гості не можуть зберігати чернетки',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Ви не можете видалити єдиного адміністратора',
+ 'users_cannot_delete_guest' => 'Ви не можете видалити гостьового користувача',
+ 'users_could_not_send_invite' => 'Не вдалося створити користувача, оскільки не вдалося надіслати електронний лист із запрошенням',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Цю роль не можна редагувати',
+ 'role_system_cannot_be_deleted' => 'Ця роль є системною, і її не можна видалити',
+ 'role_registration_default_cannot_delete' => 'Цю роль не можна видалити, бо вона встановлена як роль реєстрації за умовчанням',
+ 'role_cannot_remove_only_admin' => 'Цей користувач є єдиним користувачем, призначеним для ролі адміністратора. Призначте роль адміністратора іншому користувачеві, перш ніж спробувати його видалити.',
+
+ // Comments
+ 'comment_list' => 'Під час отримання коментарів сталася помилка.',
+ 'cannot_add_comment_to_draft' => 'Ви не можете додати коментарі до проекту.',
+ 'comment_add' => 'Під час додавання/оновлення коментарів сталася помилка.',
+ 'comment_delete' => 'Під час видалення коментаря сталася помилка.',
+ 'empty_comment' => 'Неможливо додати порожній коментар.',
+
+ // Error pages
+ '404_page_not_found' => 'Сторінку не знайдено',
+ 'sorry_page_not_found' => 'Вибачте, сторінку, яку ви шукали, не знайдено.',
+ 'sorry_page_not_found_permission_warning' => 'Якщо ви очікували що ця сторінки існує – можливо у вас немає дозволу на її перегляд.',
+ 'image_not_found' => 'Зображення не знайдено',
+ 'image_not_found_subtitle' => 'Вибачте, файл зображення, що ви шукали, не знайдено.',
+ 'image_not_found_details' => 'Якщо ви очікували існування цього зображення, його, можливо, було видалено.',
+ 'return_home' => 'Повернутися на головну',
+ 'error_occurred' => 'Виникла помилка',
+ 'app_down' => ':appName зараз недоступний',
+ 'back_soon' => 'Він повернеться найближчим часом.',
+
+ // Import
+ 'import_zip_cant_read' => 'Не вдалося прочитати ZIP-файл.',
+ 'import_zip_cant_decode_data' => 'Не вдалося знайти і розшифрувати контент ZIP data.json.',
+ 'import_zip_no_data' => 'ZIP-файл не містить очікуваної книги, глави або вмісту сторінки.',
+ 'import_zip_data_too_large' => 'Вміст ZIP data.json перевищує налаштований максимальний розмір додатка.',
+ 'import_validation_failed' => 'Не вдалося виконати перевірку ZIP-адреси із помилками:',
+ 'import_zip_failed_notification' => 'Не вдалося імпортувати ZIP-файл.',
+ 'import_perms_books' => 'У Вас не вистачає необхідних прав для створення книг.',
+ 'import_perms_chapters' => 'Вам не вистачає необхідних дозволів для створення розділів.',
+ 'import_perms_pages' => 'У Вас немає необхідних прав для створення сторінок.',
+ 'import_perms_images' => 'У Вас немає необхідних прав для створення зображень.',
+ 'import_perms_attachments' => 'У Вас немає необхідних прав для створення вкладень.',
+
+ // API errors
+ 'api_no_authorization_found' => 'У запиті не знайдено токен авторизації',
+ 'api_bad_authorization_format' => 'У запиті знайдено токен авторизації, але формат недійсний',
+ 'api_user_token_not_found' => 'Не знайдено відповідного API-токена для наданого токена авторизації',
+ 'api_incorrect_token_secret' => 'Секрет, наданий для даного використовуваного токена API є неправильним',
+ 'api_user_no_api_permission' => 'Власник використовуваного токена API не має дозволу здійснювати виклики API',
+ 'api_user_token_expired' => 'Термін дії токена авторизації закінчився',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Помилка під час надсилання тестового електронного листа:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'URL-адреса не відповідає налаштованим дозволеним SSR хостів',
+];
diff --git a/lang/uk/notifications.php b/lang/uk/notifications.php
new file mode 100644
index 00000000000..896808c7574
--- /dev/null
+++ b/lang/uk/notifications.php
@@ -0,0 +1,29 @@
+ 'Новий коментар на сторінці: :pageName',
+ 'new_comment_intro' => 'Користувач прокоментував на сторінці у :appName:',
+ 'new_page_subject' => 'Нова сторінка: :pageName',
+ 'new_page_intro' => 'Створено сторінку у :appName:',
+ 'updated_page_subject' => 'Оновлено сторінку: :pageName',
+ 'updated_page_intro' => 'Оновлено сторінку у :appName:',
+ 'updated_page_debounce' => 'Для запобігання кількості сповіщень, деякий час ви не будете відправлені повідомлення для подальших змін на цій сторінці тим самим редактором.',
+ 'comment_mention_subject' => 'Вас згадали в коментарях на сторінці: :pageName',
+ 'comment_mention_intro' => 'Вас згадали в коментарі до :appName:',
+
+ 'detail_page_name' => 'Назва сторінки:',
+ 'detail_page_path' => 'Шлях до сторінки:',
+ 'detail_commenter' => 'Коментатор:',
+ 'detail_comment' => 'Коментар:',
+ 'detail_created_by' => 'Створено:',
+ 'detail_updated_by' => 'Оновлено:',
+
+ 'action_view_comment' => 'Переглянути коментар',
+ 'action_view_page' => 'Дивитись сторінку',
+
+ 'footer_reason' => 'Дане повідомлення було надіслано вам тому, що :link покриває цю діяльність для цього елемента.',
+ 'footer_reason_link' => 'ваші налаштування сповіщень',
+];
diff --git a/resources/lang/uk/pagination.php b/lang/uk/pagination.php
similarity index 100%
rename from resources/lang/uk/pagination.php
rename to lang/uk/pagination.php
diff --git a/resources/lang/uk/passwords.php b/lang/uk/passwords.php
similarity index 100%
rename from resources/lang/uk/passwords.php
rename to lang/uk/passwords.php
diff --git a/lang/uk/preferences.php b/lang/uk/preferences.php
new file mode 100644
index 00000000000..149cf320527
--- /dev/null
+++ b/lang/uk/preferences.php
@@ -0,0 +1,52 @@
+ 'Мій аккаунт',
+
+ 'shortcuts' => 'Ярлики',
+ 'shortcuts_interface' => 'Налаштування ярлика інтерфейсу',
+ 'shortcuts_toggle_desc' => 'Тут ви можете увімкнути або вимкнути ярлики інтерфейсу клавіатури, які використовуються для навігації та дій.',
+ 'shortcuts_customize_desc' => 'Ви можете налаштувати кожен з ярликів нижче. Просто натисніть на комбінацію бажаного ключа після вибору вводу для ярлика.',
+ 'shortcuts_toggle_label' => 'Клавіатурні скорочення увімкнено',
+ 'shortcuts_section_navigation' => 'Навігація',
+ 'shortcuts_section_actions' => 'Загальні дії',
+ 'shortcuts_save' => 'Зберегти ярлики',
+ 'shortcuts_overlay_desc' => 'Примітка: якщо ярлики ввімкнено, допоміжне накладання доступне, натиснувши "?" який виділить доступні ярлики для дій, які зараз видно на екрані.',
+ 'shortcuts_update_success' => 'Налаштування ярликів оновлено!',
+ 'shortcuts_overview_desc' => 'Керуйте комбінаціями клавіатур можна використовувати для навігації інтерфейсу системи користувача.',
+
+ 'notifications' => 'Налаштування сповіщень',
+ 'notifications_desc' => 'Контролюйте сповіщення по електронній пошті, які ви отримуєте, коли виконується певна активність у системі.',
+ 'notifications_opt_own_page_changes' => 'Повідомляти при змінах сторінок якими я володію',
+ 'notifications_opt_own_page_comments' => 'Повідомляти при коментарях на моїх сторінках',
+ 'notifications_opt_comment_mentions' => 'Сповіщати, якщо мене згадали у коментарі',
+ 'notifications_opt_comment_replies' => 'Повідомляти про відповіді на мої коментарі',
+ 'notifications_save' => 'Зберегти налаштування',
+ 'notifications_update_success' => 'Налаштування сповіщень було оновлено!',
+ 'notifications_watched' => 'Переглянуті та ігноровані елементи',
+ 'notifications_watched_desc' => 'Нижче наведені предмети, які мають застосовані налаштування перегляду. Щоб оновити ваші налаштування для них, перегляньте елемент, а потім знайдіть параметри перегляду на бічній панелі.',
+
+ 'auth' => 'Доступ і безпека',
+ 'auth_change_password' => 'Змінити пароль',
+ 'auth_change_password_desc' => 'Змініть пароль, який ви використовуєте для входу в програму. Це має бути щонайменше 8 символів.',
+ 'auth_change_password_success' => 'Пароль оновлено!',
+
+ 'profile' => 'Деталі профілю',
+ 'profile_desc' => 'Керуйте інформацією вашого облікового запису, що представляє вам інші користувачі, додатково до деталей, що використовуються для комунікації та особистості системи.',
+ 'profile_view_public' => 'Перегляд загального профілю',
+ 'profile_name_desc' => 'Налаштування відображуваного імена, які будуть видимі іншим користувачам в системі через здійснені вами дії та власний контент.',
+ 'profile_email_desc' => 'Цей email буде використовуватися для сповіщення і в залежності від активної автентифікації системи, доступу до системи.',
+ 'profile_email_no_permission' => 'На жаль, у вас немає дозволу на зміну адреси електронної пошти. Якщо ви хочете змінити це, ви маєте попросити адміністратора змінити це для вас.',
+ 'profile_avatar_desc' => 'Виберіть зображення, яке буде використовуватися для того, щоб представити себе іншим у системі. В ідеалі це зображення має бути квадратне і близько 256пікс в ширину і висоту.',
+ 'profile_admin_options' => 'Параметри адміністратора',
+ 'profile_admin_options_desc' => 'Додаткові параметри на рівні адміністратора, так як і для управління призначеннями роль, ви можете знайти для вашого облікового запису в області "Налаштування> Користувачі" додатку.',
+
+ 'delete_account' => 'Видалити обліковий запис',
+ 'delete_my_account' => 'Видалити мій обліковий запис',
+ 'delete_my_account_desc' => 'Це повністю видалить ваш обліковий запис з системи. Ви не зможете відновити або скасувати цю дію. Контент, який Ви створили, наприклад створені сторінки і вивантажені зображення, залишиться.',
+ 'delete_my_account_warning' => 'Ви впевнені, що хочете видалити свій обліковий запис?',
+];
diff --git a/lang/uk/settings.php b/lang/uk/settings.php
new file mode 100644
index 00000000000..afeb2c48928
--- /dev/null
+++ b/lang/uk/settings.php
@@ -0,0 +1,374 @@
+ 'Налаштування',
+ 'settings_save' => 'Зберегти налаштування',
+ 'system_version' => 'Версія',
+ 'categories' => 'Категорії',
+
+ // App Settings
+ 'app_customization' => 'Налаштування',
+ 'app_features_security' => 'Особливості та безпека',
+ 'app_name' => 'Назва програми',
+ 'app_name_desc' => 'Ця назва показується у заголовку та в усіх листах.',
+ 'app_name_header' => 'Показати назву програми в заголовку',
+ 'app_public_access' => 'Публічний доступ',
+ 'app_public_access_desc' => 'Увімкнення цієї опції дозволить відвідувачам, які не увійшли в систему, отримати доступ до вмісту у вашому екземплярі BookStack.',
+ 'app_public_access_desc_guest' => 'Доступ для публічних відвідувачів можна контролювати через користувача "Гість".',
+ 'app_public_access_toggle' => 'Дозволити публічний доступ',
+ 'app_public_viewing' => 'Дозволити публічний перегляд?',
+ 'app_secure_images' => 'Вищі налаштування безпеки для зображень',
+ 'app_secure_images_toggle' => 'Увімкунти вищі налаштування безпеки для завантаження зображень',
+ 'app_secure_images_desc' => 'З міркувань продуктивності всі зображення є загальнодоступними. Цей параметр додає випадковий, важко передбачуваний рядок перед URL-адресами зображень. Переконайтеся, що індексація каталогів не активована, щоб запобігти легкому доступу.',
+ 'app_default_editor' => 'Стандартний редактор сторінок',
+ 'app_default_editor_desc' => 'Виберіть, який редактор буде використовуватися за замовчуванням під час редагування нових сторінок. Це можна перевизначити на рівні дозволів сторінки.',
+ 'app_custom_html' => 'Користувацький вміст HTML-заголовку',
+ 'app_custom_html_desc' => 'Будь-який доданий тут вміст буде вставлено в нижню частину розділу кожної сторінки. Це зручно для перевизначення стилів, або додавання коду аналітики.',
+ 'app_custom_html_disabled_notice' => 'На цій сторінці налаштувань відключений користувацький вміст заголовка HTML, щоб гарантувати, що будь-які невдалі зміни можна буде відновити.',
+ 'app_logo' => 'Логотип програми',
+ 'app_logo_desc' => 'Це використовується в панелі заголовка програми, серед інших областей. Це зображення має бути 86 пікселів у висоту. Великі зображення будуть зменшені.',
+ 'app_icon' => 'Значок додатка',
+ 'app_icon_desc' => 'Цей значок використовується для вкладок браузера та піктограм ярликів. Це має бути квадратне зображення PNG на 256px.',
+ 'app_homepage' => 'Домашня сторінка програми',
+ 'app_homepage_desc' => 'Виберіть сторінку, яка показуватиметься на домашній сторінці замість перегляду за замовчуванням. Права на сторінку не враховуються для вибраних сторінок.',
+ 'app_homepage_select' => 'Вибрати сторінку',
+ 'app_footer_links' => 'Посилання нижньої частини сайту',
+ 'app_footer_links_desc' => 'Додайте посилання до нижньої частини сайту. Вони будуть відображатися в нижній частині більшості сторінок, включаючи ті, що не потребують входу. Для використання системних перекладів ви можете скористатися мітками "trans::". Наприклад: додавання "trans:common.privacy_policy" покаже перекладений текст "Політика конфіденційності" а "trans:common.terms_of_service" покаже перекладений текст "Умови надання послуг".',
+ 'app_footer_links_label' => 'Назва посилання',
+ 'app_footer_links_url' => 'URL посилання',
+ 'app_footer_links_add' => 'Додати посилання до нижньої частини сайту',
+ 'app_disable_comments' => 'Вимкнути коментарі',
+ 'app_disable_comments_toggle' => 'Вимкнути коментарі',
+ 'app_disable_comments_desc' => 'Вимкнути коментарі на всіх сторінках програми. Існуючі коментарі не відображаються.',
+
+ // Color settings
+ 'color_scheme' => 'Колірна схема застосунку',
+ 'color_scheme_desc' => 'Встановіть кольори для використання в інтерфейсі користувача програми. Кольори можуть бути налаштовані окремо для темних і світлих режимів, щоб найкращим чином відповідати темі й забезпечити розбірливість.',
+ 'ui_colors_desc' => 'Встановіть основний колір програми та колір посилання за замовчуванням. Основний колір в основному використовується для банера заголовка, кнопок і прикрас інтерфейсу. Колір посилання за замовчуванням використовується для текстових посилань і дій, як всередині письмового вмісту, так і в інтерфейсі програми.',
+ 'app_color' => 'Головний колір',
+ 'link_color' => 'Колір посилання за замовчуванням',
+ 'content_colors_desc' => 'Установіть кольори для всіх елементів в ієрархії організації сторінки. Для зручності читання рекомендується вибирати кольори з такою ж яскравістю, як і кольори за замовчуванням.',
+ 'bookshelf_color' => 'Колір полиці',
+ 'book_color' => 'Колір книги',
+ 'chapter_color' => 'Колір глави',
+ 'page_color' => 'Колір сторінки',
+ 'page_draft_color' => 'Колір чернетки',
+
+ // Registration Settings
+ 'reg_settings' => 'Реєстрація',
+ 'reg_enable' => 'Дозвіл на реєстрацію',
+ 'reg_enable_toggle' => 'Дозволити реєстрацію',
+ 'reg_enable_desc' => 'При включенні реєстрації відвідувач зможе зареєструватися як користувач програми. Після реєстрації їм надається єдина роль користувача за замовчуванням.',
+ 'reg_default_role' => 'Роль користувача за умовчанням після реєстрації',
+ 'reg_enable_external_warning' => 'Цей параметр ігнорується, якщо активна зовнішня автентифікація LDAP або SAML. Облікові записи користувачів для неіснуючих учасників будуть створені автоматично, якщо аутентифікація у зовнішній системі буде успішною.',
+ 'reg_email_confirmation' => 'Підтвердження електронною поштою',
+ 'reg_email_confirmation_toggle' => 'Необхідне підтвердження електронною поштою',
+ 'reg_confirm_email_desc' => 'Якщо використовується обмеження домену, то підтвердження електронною поштою буде потрібно, а нижче значення буде проігноровано.',
+ 'reg_confirm_restrict_domain' => 'Обмеження по домену',
+ 'reg_confirm_restrict_domain_desc' => 'Введіть список розділених комами доменів електронної пошти, до яких ви хочете обмежити реєстрацію. Користувачам буде надіслано електронне повідомлення для підтвердження своєї адреси, перш ніж дозволяти взаємодіяти з додатком. Зауважте, що користувачі зможуть змінювати свої електронні адреси після успішної реєстрації.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Не встановлено обмежень',
+
+ // Sorting Settings
+ 'sorting' => 'Списки і сортування',
+ 'sorting_book_default' => 'Типовий порядок сортування книги',
+ 'sorting_book_default_desc' => 'Виберіть правило сортування за замовчуванням для застосування нових книг. Це не вплине на існуючі книги, і може бути перевизначено для кожної книги.',
+ 'sorting_rules' => 'Сортувати правила',
+ 'sorting_rules_desc' => 'Це попередньо визначені операції сортування, які можуть бути застосовані до вмісту в системі.',
+ 'sort_rule_assigned_to_x_books' => 'Призначено :count книгу|Призначення на :count книг(и)',
+ 'sort_rule_create' => 'Створити правило сортування',
+ 'sort_rule_edit' => 'Змінити правило сортування',
+ 'sort_rule_delete' => 'Видалити правило сортування',
+ 'sort_rule_delete_desc' => 'Видалення даного правила сортування з системи. Книги за допомогою цього сортування будуть повернутися до ручного сортування.',
+ 'sort_rule_delete_warn_books' => 'Це правило сортування використовується на :count книг(у,и). Ви впевнені, що хочете видалити це?',
+ 'sort_rule_delete_warn_default' => 'Правило сортування в даний час використовується як правило за замовчуванням для книг. Ви впевнені, що хочете видалити це?',
+ 'sort_rule_details' => 'Опис правил сортування',
+ 'sort_rule_details_desc' => 'Вкажіть ім\'я для цього правила сортування, яке буде відображатися в списках при виборі сортування користувачем.',
+ 'sort_rule_operations' => 'Операції сортування',
+ 'sort_rule_operations_desc' => 'Налаштуйте дії, які слід виконати, переміщаючи їх зі списку доступних операцій. Після використання операцій буде застосовано відповідно до самого низу. Будь-які зміни, внесені сюди, будуть застосовані до всіх призначених книг при збереженні.',
+ 'sort_rule_available_operations' => 'Доступні операції',
+ 'sort_rule_available_operations_empty' => 'Не залишилось операцій',
+ 'sort_rule_configured_operations' => 'Налаштовані операції',
+ 'sort_rule_configured_operations_empty' => 'Перетягніть операції зі списку "Доступні операції"',
+ 'sort_rule_op_asc' => '(За зростанням)',
+ 'sort_rule_op_desc' => '(За спаданням)',
+ 'sort_rule_op_name' => 'Назва - за алфавітом',
+ 'sort_rule_op_name_numeric' => 'Назва - Числове',
+ 'sort_rule_op_created_date' => 'Дата створення',
+ 'sort_rule_op_updated_date' => 'Дата оновлення',
+ 'sort_rule_op_chapters_first' => 'Спочатку розділи',
+ 'sort_rule_op_chapters_last' => 'Розділи останні',
+ 'sorting_page_limits' => 'Обмеження відображення сторінок',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Обслуговування',
+ 'maint_image_cleanup' => 'Очищення зображень',
+ 'maint_image_cleanup_desc' => 'Сканує вміст сторінки та версій, щоб перевірити, які зображення та малюнки в даний час використовуються, а також які зображення зайві. Переконайтеся, що ви створили повну резервну копію бази даних та зображення, перш ніж запускати це.',
+ 'maint_delete_images_only_in_revisions' => 'Також видалити зображення, що існують лише в старих версіях сторінки',
+ 'maint_image_cleanup_run' => 'Запустити очищення',
+ 'maint_image_cleanup_warning' => ':count потенційно невикористаних зображень було знайдено. Ви впевнені, що хочете видалити ці зображення?',
+ 'maint_image_cleanup_success' => ':count потенційно невикористані зображення знайдено і видалено!',
+ 'maint_image_cleanup_nothing_found' => 'Не знайдено невикористовуваних зображень, нічого не видалено!',
+ 'maint_send_test_email' => 'Надіслати тестове повідомлення',
+ 'maint_send_test_email_desc' => 'Надіслати тестового листа на адресу електронної пошти, що вказана у вашому профілі.',
+ 'maint_send_test_email_run' => 'Надіслати тестовий лист',
+ 'maint_send_test_email_success' => 'Лист відправлений на : адреса',
+ '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_regen_references' => 'Перегенерувати посилання',
+ 'maint_regen_references_desc' => 'Ця дія перебудує міжелементний посилальний індекс у базі даних. Зазвичай це виконується автоматично, але ця дія може бути корисною для індексування старого вмісту або вмісту, доданого неофіційними методами.',
+ 'maint_regen_references_success' => 'Індекс посилань перестворений!',
+ 'maint_timeout_command_note' => 'Примітка: Ця дія може зайняти час для запуску, що може призвести до тимчасових проблем в деяких веб-середовищах. Як альтернативу, цю дію виконуються за допомогою термінальної команди.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Кошик',
+ 'recycle_bin_desc' => 'Тут ви можете відновити видалені елементи, або назавжди видалити їх із системи. Цей список нефільтрований, на відміну від подібних списків активності в системі, де застосовуються фільтри дозволів.',
+ 'recycle_bin_deleted_item' => 'Виадлений елемент',
+ 'recycle_bin_deleted_parent' => 'Батьківський',
+ '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_restore_parent' => 'Відновити батьківську',
+ 'recycle_bin_destroy_notification' => 'Видалено :count елементів із кошика.',
+ 'recycle_bin_restore_notification' => 'Відновлено :count елементів із кошика.',
+
+ // Audit Log
+ 'audit' => 'Журнал аудиту',
+ 'audit_desc' => 'Цей журнал аудиту показує список відстежуваних у системі дій. Цей список нефільтрований, на відміну від подібних списків активності в системі, де застосовуються фільтри дозволів.',
+ '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_ip' => 'IP-адреса',
+ 'audit_table_date' => 'Дата активності',
+ 'audit_date_from' => 'Діапазон дат від',
+ 'audit_date_to' => 'Діапазон дат до',
+
+ // Role Settings
+ 'roles' => 'Ролі',
+ 'role_user_roles' => 'Ролі користувача',
+ 'roles_index_desc' => 'Ролі використовуються для групування користувачів і надання системних дозволів їхнім учасникам. Якщо користувач є членом кількох ролей, надані привілеї сумуються, і користувач успадковує всі здібності.',
+ 'roles_x_users_assigned' => ':count користувач призначений|:count користувачів призначених',
+ 'roles_x_permissions_provided' => ':count дозвіл|:count дозволів',
+ 'roles_assigned_users' => 'Призначені користувачі',
+ 'roles_permissions_provided' => 'Надані доступи',
+ 'role_create' => 'Створити нову роль',
+ 'role_delete' => 'Видалити роль',
+ 'role_delete_confirm' => 'Це призведе до видалення ролі з назвою \':roleName\'.',
+ 'role_delete_users_assigned' => 'Цій ролі належать :userCount користувачі(в). Якщо ви хочете перенести користувачів із цієї ролі, виберіть нову роль нижче.',
+ 'role_delete_no_migration' => "Не мігрувати користувачів",
+ 'role_delete_sure' => 'Ви впевнені, що хочете видалити цю роль?',
+ 'role_edit' => 'Редагувати роль',
+ 'role_details' => 'Деталі ролі',
+ 'role_name' => 'Назва ролі',
+ 'role_desc' => 'Короткий опис ролі',
+ 'role_mfa_enforced' => 'Потрібна двофактова автентифікація',
+ 'role_external_auth_id' => 'Зовнішні ID автентифікації',
+ 'role_system' => 'Системні дозволи',
+ 'role_manage_users' => 'Керування користувачами',
+ 'role_manage_roles' => 'Керування правами ролей та ролями',
+ 'role_manage_entity_permissions' => 'Керування всіма правами на книги, розділи та сторінки',
+ 'role_manage_own_entity_permissions' => 'Керування дозволами на власну книгу, розділ та сторінки',
+ 'role_manage_page_templates' => 'Управління шаблонами сторінок',
+ 'role_access_api' => 'Доступ до системного API',
+ 'role_manage_settings' => 'Керування налаштуваннями програми',
+ 'role_export_content' => 'Вміст експорту',
+ 'role_import_content' => 'Імпортувати вміст',
+ 'role_editor_change' => 'Змінити редактор сторінок',
+ 'role_notifications' => 'Отримувати та керувати повідомленнями',
+ 'role_permission_note_users_and_roles' => 'Ці дозволи технічно також забезпечать видимість і пошук ролей у системі.',
+ 'role_asset' => 'Дозволи',
+ 'roles_system_warning' => 'Майте на увазі, що доступ до будь-якого з вищезазначених трьох дозволів може дозволити користувачеві змінювати власні привілеї або привілеї інших в системі. Ролі з цими дозволами призначайте лише довіреним користувачам.',
+ 'role_asset_desc' => 'Ці дозволи контролюють стандартні доступи всередині системи. Права на книги, розділи та сторінки перевизначать ці дозволи.',
+ 'role_asset_admins' => 'Адміністратори автоматично отримують доступ до всього вмісту, але ці параметри можуть відображати або приховувати параметри інтерфейсу користувача.',
+ 'role_asset_image_view_note' => 'Це стосується видимості в менеджері зображень. Фактичний доступ завантажуваних зображень буде залежний від опції зберігання системних зображень.',
+ 'role_asset_users_note' => 'Ці дозволи технічно також забезпечать видимість і пошук користувачів і ролей у системі.',
+ 'role_all' => 'Все',
+ 'role_own' => 'Власне',
+ 'role_controlled_by_asset' => 'Контролюється за об\'єктом, до якого вони завантажуються',
+ 'role_save' => 'Зберегти роль',
+ 'role_users' => 'Користувачі в цій ролі',
+ 'role_users_none' => 'Наразі жоден користувач не призначений для цієї ролі',
+
+ // Users
+ 'users' => 'Користувачі',
+ 'users_index_desc' => 'Створюйте та керуйте індивідуальними обліковими записами користувачів у системі. Облікові записи користувачів використовуються для входу та атрибуції вмісту та активності. Дозволи доступу в основному залежать від ролей, але право власності на вміст користувача, серед інших факторів, також може впливати на дозволи та доступ.',
+ 'user_profile' => 'Профіль користувача',
+ 'users_add_new' => 'Додати нового користувача',
+ 'users_search' => 'Пошук користувачів',
+ 'users_latest_activity' => 'Остання активність',
+ 'users_details' => 'Відомості про користувача',
+ 'users_details_desc' => 'Встановіть ім\'я та електронну адресу для цього користувача. Адреса електронної пошти буде використана для входу до програми.',
+ 'users_details_desc_no_email' => 'Встановіть ім\'я для цього користувача, щоб інші могли його розпізнати.',
+ 'users_role' => 'Ролі користувача',
+ 'users_role_desc' => 'Виберіть, до яких ролей буде призначено цього користувача. Якщо користувачеві призначено декілька ролей, дозволи з цих ролей будуть складатись і вони отримуватимуть усі можливості призначених ролей.',
+ 'users_password' => 'Пароль користувача',
+ 'users_password_desc' => 'Встановіть пароль для входу. Він повинен містити принаймні 5 символів.',
+ 'users_send_invite_text' => 'Ви можете надіслати цьому користувачеві лист із запрошенням, що дозволить йому встановити пароль власноруч, або ви можете встановити йому пароль самостійно.',
+ 'users_send_invite_option' => 'Надіслати листа із запрошенням користувачу',
+ 'users_external_auth_id' => 'Зовнішній ID автентифікації',
+ 'users_external_auth_id_desc' => 'Коли використовується зовнішня система аутентифікації (наприклад, SAML2, OIDC або LDAP), це ідентифікатор, який пов\'язує цього користувача BookStack з обліковим записом системи аутентифікації. Ви можете ігнорувати це поле, якщо використовуєте типову автентифікацію на основі електронної пошти.',
+ 'users_password_warning' => 'Заповніть поле нижче, лише якщо ви хочете змінити пароль для цього користувача.',
+ 'users_system_public' => 'Цей користувач представляє будь-яких гостьових користувачів, які відвідують ваш екземпляр. Його не можна використовувати для входу, але він призначається автоматично.',
+ 'users_delete' => 'Видалити користувача',
+ 'users_delete_named' => 'Видалити користувача :userName',
+ 'users_delete_warning' => 'Це повне видалення цього користувача з ім\'ям \':userName\' з системи.',
+ 'users_delete_confirm' => 'Ви впевнені, що хочете видалити цього користувача?',
+ 'users_migrate_ownership' => 'Право власності при міграції',
+ 'users_migrate_ownership_desc' => 'Виберіть тут користувача, якщо ви хочете, щоб інший користувач став власником усіх елементів, які зараз належать цьому користувачеві.',
+ 'users_none_selected' => 'Не вибрано жодного користувача',
+ 'users_edit' => 'Редагувати користувача',
+ 'users_edit_profile' => 'Редагувати профіль',
+ 'users_avatar' => 'Аватар користувача',
+ 'users_avatar_desc' => 'Це квадратне зображення має бути приблизно 256px.',
+ 'users_preferred_language' => 'Бажана мова',
+ 'users_preferred_language_desc' => 'Цей параметр змінить мову інтерфейсу користувача в програмі. Не вплине на створений користувачем вміст.',
+ 'users_social_accounts' => 'Соціальні акаунти',
+ 'users_social_accounts_desc' => 'Перегляд стану підключених соціальних облікових записів для цього користувача. Соціальні акаунти можуть використовуватися на додаток до первинної системи аутентифікації для доступу до системи.',
+ 'users_social_accounts_info' => 'Тут ви можете підключити інші облікові записи для швидшого та легшого входу. Від\'єднання соціального облікового запису тут не дозволяється. Скасуйте доступ із налаштувань вашого профілю в пов\'язаній соціальній мережі.',
+ 'users_social_connect' => 'Підключити обліковий запис',
+ 'users_social_disconnect' => 'Від\'єднати обліковий запис',
+ 'users_social_status_connected' => 'Під’єднано',
+ 'users_social_status_disconnected' => 'Від\'єднано',
+ 'users_social_connected' => 'Обліковий запис :socialAccount успішно додано до вашого профілю.',
+ 'users_social_disconnected' => 'Обліковий запис :socialAccount був успішно відключений від вашого профілю.',
+ 'users_api_tokens' => 'API токени',
+ 'users_api_tokens_desc' => 'Створюйте та керуйте токенами доступу, які використовуються для автентифікації за допомогою BookStack REST API. Дозволи для API управляються через користувача, якому належить токен.',
+ 'users_api_tokens_none' => 'Жодного токена API не створено для цього користувача',
+ 'users_api_tokens_create' => 'Створити токен',
+ 'users_api_tokens_expires' => 'Закінчується',
+ 'users_api_tokens_docs' => 'Документація API',
+ 'users_mfa' => 'Багатофакторна Автентифікація',
+ 'users_mfa_desc' => 'Двофакторна аутентифікація додає ще один рівень безпеки для вашого облікового запису.',
+ 'users_mfa_x_methods' => ':count метод налаштовано|:count методів налаштовано',
+ 'users_mfa_configure' => 'Налаштувати Методи',
+
+ // API Tokens
+ 'user_api_token_create' => 'Створити токен API',
+ 'user_api_token_name' => 'Назва',
+ 'user_api_token_name_desc' => 'Дайте своєму токену читабельну назву як майбутнє нагадування про його пряме призначення.',
+ 'user_api_token_expiry' => 'Дата закінчення',
+ 'user_api_token_expiry_desc' => 'Встановіть дату закінчення терміну дії цього токена. Після цієї дати запити, зроблені за допомогою цього токена, більше не працюватимуть. Якщо залишити це поле порожнім, термін дії токена закінчиться через 100 років.',
+ 'user_api_token_create_secret_message' => 'Відразу після створення цього токена буде створено та показано «Ідентифікатор токена» та «Ключ токена». Ключ буде показано лише один раз, тому перед тим, як продовжити, не забудьте скопіювати значення ключа в надійне та безпечне місце.',
+ 'user_api_token' => 'Токен API',
+ 'user_api_token_id' => 'Ідентифікатор (ID) токена',
+ 'user_api_token_id_desc' => 'Системний ідентифікатор цього токена, який потрібно буде вказати в запитах API. Його редагування неможливе.',
+ 'user_api_token_secret' => 'Ключ токена',
+ 'user_api_token_secret_desc' => 'Це ключ, згенерований системою для цього токена, його потрібно буде надати в запитах API. Він буде видимий лише цього разу, тому скопіюйте це значення в безпечне та надійне місце.',
+ 'user_api_token_created' => 'Токен створено :timeAgo',
+ 'user_api_token_updated' => 'Токен оновлено :timeAgo',
+ 'user_api_token_delete' => 'Видалити токен',
+ 'user_api_token_delete_warning' => 'Ця дія повністю видалить цей токен API із назвою \':tokenName\' з системи.',
+ 'user_api_token_delete_confirm' => 'Дійсно хочете видалити цей токен API?',
+
+ // Webhooks
+ 'webhooks' => 'Веб-хуки',
+ 'webhooks_index_desc' => 'Вебхуки – це спосіб надсилання даних на зовнішні URL-адреси, коли в системі відбуваються певні дії та події, що дозволяє інтегрувати події на основі зовнішніх платформ, таких як системи обміну повідомленнями чи сповіщення.',
+ 'webhooks_x_trigger_events' => ':count тригерна подія|:count тригерних подій',
+ 'webhooks_create' => 'Створити новий Веб-хук',
+ 'webhooks_none_created' => 'Немає створених Веб-хуків.',
+ 'webhooks_edit' => 'Редагувати Веб-хук',
+ 'webhooks_save' => 'Зберегти Веб-хук',
+ 'webhooks_details' => 'Деталі вебхуків',
+ 'webhooks_details_desc' => 'Вкажіть дружнє ім\'я користувача та кінцеву точку POST як місце для надсилання даних вебхуків.',
+ 'webhooks_events' => 'Події вебхуків',
+ 'webhooks_events_desc' => 'Оберіть всі події, які мають викликати цей web-хук, щоб бути викликані.',
+ 'webhooks_events_warning' => 'Майте на увазі, що ці події будуть запущені для всіх вибраних подій, навіть якщо використовуються користувацькі дозволи. Переконайтеся, що використання цього вебхука не розкриє конфіденційний контент.',
+ 'webhooks_events_all' => 'Всі системні події',
+ 'webhooks_name' => 'Назва вебхука',
+ 'webhooks_timeout' => 'Час очікування запиту веб хука (в секундах)',
+ 'webhooks_endpoint' => 'Webhook кінцевої точки',
+ 'webhooks_active' => 'Веб хук активний',
+ 'webhook_events_table_header' => 'Події',
+ 'webhooks_delete' => 'Видалити Webhook',
+ 'webhooks_delete_warning' => 'Ця дія повністю видалить цей токен Api із назвою \':tokenName\' з системи.',
+ 'webhooks_delete_confirm' => 'Ви впевнені, що хочете видалити цей веб хук?',
+ 'webhooks_format_example' => 'Приклад формату веб хука',
+ 'webhooks_format_example_desc' => 'Дані веб хука надсилаються як POST запит до налаштованої кінцевої точки у вигляді JSON з відповідним форматом. Властивості "related_item" і "url" є необов\'язковими та залежатимуть від типу події.',
+ 'webhooks_status' => 'Статус веб хука',
+ 'webhooks_last_called' => 'Останній виклик:',
+ 'webhooks_last_errored' => 'Остання помилка:',
+ 'webhooks_last_error_message' => 'Останнє повідомлення про помилку:',
+
+ // Licensing
+ 'licenses' => 'Ліцензії',
+ 'licenses_desc' => 'На цій сторінці детально описано ліцензійну інформацію для BookStack на додаток до проектів і бібліотек, які використовуються в BookStack. Багато проектів із списку можна використовувати лише в контексті розробки.',
+ 'licenses_bookstack' => 'Ліцензія BookStack',
+ 'licenses_php' => 'Ліцензії на бібліотеки PHP',
+ 'licenses_js' => 'Ліцензії бібліотеки JavaScript',
+ 'licenses_other' => 'Інші ліцензії',
+ 'license_details' => 'Про ліцензію',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/uk/validation.php b/lang/uk/validation.php
new file mode 100644
index 00000000000..22f27b6ccd1
--- /dev/null
+++ b/lang/uk/validation.php
@@ -0,0 +1,123 @@
+ 'Ви повинні прийняти :attribute.',
+ 'active_url' => 'Поле :attribute не є правильним URL.',
+ 'after' => 'Поле :attribute має містити дату не раніше :date.',
+ 'alpha' => 'Поле :attribute має містити лише літери.',
+ 'alpha_dash' => 'Поле :attribute має містити лише літери, цифри, дефіси та підкреслення.',
+ 'alpha_num' => 'Поле :attribute має містити лише літери та цифри.',
+ 'array' => 'Поле :attribute має бути масивом.',
+ 'backup_codes' => 'Наданий код є недійсним або вже використаний.',
+ 'before' => 'Поле :attribute має містити дату не пізніше :date.',
+ 'between' => [
+ 'numeric' => 'Поле :attribute має бути між :min та :max.',
+ 'file' => 'Розмір файлу в полі :attribute має бути не менше :min та не більше :max кілобайт.',
+ 'string' => 'Текст в полі :attribute має бути не менше :min та не більше :max символів.',
+ 'array' => 'Поле :attribute має містити від :min до :max елементів.',
+ ],
+ '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',
+ 'file' => 'Поле :attribute повинне містити коректний файл.',
+ 'filled' => 'Поле :attribute є обов\'язковим для заповнення.',
+ 'gt' => [
+ 'numeric' => 'Поле :attribute має бути більше ніж :value.',
+ 'file' => 'Поле :attribute має бути більше ніж :value кілобайт.',
+ 'string' => 'Поле :attribute має бути більше ніж :value символів.',
+ 'array' => 'Поле :attribute має містити більше ніж :value елементів.',
+ ],
+ 'gte' => [
+ 'numeric' => 'Поле :attribute має дорівнювати чи бути більше ніж :value.',
+ 'file' => 'Поле :attribute має дорівнювати чи бути більше ніж :value кілобайт.',
+ 'string' => 'Поле :attribute має дорівнювати чи бути більше ніж :value символів.',
+ 'array' => 'Поле :attribute має містити :value чи більше елементів.',
+ ],
+ 'exists' => 'Вибране для :attribute значення не коректне.',
+ 'image' => 'Поле :attribute має містити зображення.',
+ 'image_extension' => 'Поле :attribute має містити дійсне та підтримуване розширення зображення.',
+ 'in' => 'Вибране для :attribute значення не коректне.',
+ 'integer' => 'Поле :attribute має містити ціле число.',
+ 'ip' => 'Поле :attribute має містити IP адресу.',
+ 'ipv4' => 'Поле :attribute має містити IPv4 адресу.',
+ 'ipv6' => 'Поле :attribute має містити IPv6 адресу.',
+ 'json' => 'Дані поля :attribute мають бути в форматі JSON.',
+ 'lt' => [
+ 'numeric' => 'Поле :attribute має бути менше ніж :value.',
+ 'file' => 'Поле :attribute має бути менше ніж :value кілобайт.',
+ 'string' => 'Поле :attribute має бути менше ніж :value символів.',
+ 'array' => 'Поле :attribute має містити менше ніж :value елементів.',
+ ],
+ 'lte' => [
+ 'numeric' => 'Поле :attribute має дорівнювати чи бути менше ніж :value.',
+ 'file' => 'Поле :attribute має дорівнювати чи бути менше ніж :value кілобайт.',
+ 'string' => 'Поле :attribute має дорівнювати чи бути менше ніж :value символів.',
+ 'array' => 'Поле :attribute має містити не більше ніж :value елементів.',
+ ],
+ 'max' => [
+ 'numeric' => 'Поле :attribute має бути не більше :max.',
+ 'file' => 'Файл в полі :attribute має бути не більше :max кілобайт.',
+ 'string' => 'Текст в полі :attribute повинен мати довжину не більшу за :max.',
+ 'array' => 'Поле :attribute повинне містити не більше :max елементів.',
+ ],
+ 'mimes' => 'Поле :attribute повинне містити файл одного з типів: :values.',
+ 'min' => [
+ 'numeric' => 'Поле :attribute повинне бути не менше :min.',
+ 'file' => 'Розмір файлу в полі :attribute має бути не меншим :min кілобайт.',
+ 'string' => 'Текст в полі :attribute повинен містити не менше :min символів.',
+ 'array' => 'Поле :attribute повинне містити не менше :min елементів.',
+ ],
+ 'not_in' => 'Вибране для :attribute значення не коректне.',
+ 'not_regex' => 'Формат поля :attribute не вірний.',
+ 'numeric' => 'Поле :attribute повинно містити число.',
+ 'regex' => 'Поле :attribute має хибний формат.',
+ 'required' => 'Поле :attribute є обов\'язковим для заповнення.',
+ 'required_if' => 'Поле :attribute є обов\'язковим для заповнення, коли :other є рівним :value.',
+ 'required_with' => 'Поле :attribute є обов\'язковим для заповнення, коли :values вказано.',
+ 'required_with_all' => 'Поле :attribute є обов\'язковим для заповнення, коли :values вказано.',
+ 'required_without' => 'Поле :attribute є обов\'язковим для заповнення, коли :values не вказано.',
+ 'required_without_all' => 'Поле :attribute є обов\'язковим для заповнення, коли :values не вказано.',
+ 'same' => 'Поля :attribute та :other мають збігатися.',
+ 'safe_url' => 'Надане посилання може бути небезпечним.',
+ 'size' => [
+ 'numeric' => 'Поле :attribute має бути довжини :size.',
+ 'file' => 'Файл в полі :attribute має бути розміром :size кілобайт.',
+ 'string' => 'Текст в полі :attribute повинен містити :size символів.',
+ 'array' => 'Поле :attribute повинне містити :size елементів.',
+ ],
+ 'string' => 'Поле :attribute повинне містити текст.',
+ 'timezone' => 'Поле :attribute повинне містити коректну часову зону.',
+ 'totp' => 'Наданий код не є дійсним або прострочений.',
+ 'unique' => 'Вказане значення поля :attribute вже існує.',
+ 'url' => 'Формат поля :attribute неправильний.',
+ 'uploaded' => 'Не вдалося завантажити файл. Сервер може не приймати файли такого розміру.',
+
+ 'zip_file' => 'Поле :attribute повинне вказувати файл в ZIP.',
+ 'zip_file_size' => 'Файл :attribute не повинен перевищувати :size МБ.',
+ 'zip_file_mime' => 'Поле :attribute повинне посилатись на файл типу :validtypes, знайдений :foundType.',
+ 'zip_model_expected' => 'Очікувався об’єкт даних, але знайдено ":type".',
+ 'zip_unique' => 'Поле :attribute має бути унікальним для типу об\'єкта в ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Необхідне підтвердження пароля',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/uz/activities.php b/lang/uz/activities.php
new file mode 100644
index 00000000000..84764192d77
--- /dev/null
+++ b/lang/uz/activities.php
@@ -0,0 +1,140 @@
+ 'yaratilgan sahifa',
+ 'page_create_notification' => 'Sahifa muvaffaqiyatli yaratildi',
+ 'page_update' => 'yangilangan sahifa',
+ 'page_update_notification' => 'Sahifa muvaffaqiyatli yangilandi',
+ 'page_delete' => 'o‘chirilgan sahifa',
+ 'page_delete_notification' => 'Sahifa muvaffaqiyatli o‘chirildi',
+ 'page_restore' => 'tiklangan sahifa',
+ 'page_restore_notification' => 'Sahifa muvaffaqiyatli qayta tiklandi',
+ 'page_move' => 'ko‘chirilgan sahifa',
+ 'page_move_notification' => 'Page successfully moved',
+
+ // Chapters
+ 'chapter_create' => 'yaratilgan bo‘lim',
+ 'chapter_create_notification' => 'Bo‘lim muvaffaqiyatli yaratildi',
+ 'chapter_update' => 'yangilangan bo‘lim',
+ 'chapter_update_notification' => 'Bo‘lim muvaffaqiyatli yangilandi',
+ 'chapter_delete' => 'o‘chirilgan bo‘lim',
+ 'chapter_delete_notification' => 'Bo‘lim muvaffaqiyatli o‘chirildi',
+ 'chapter_move' => 'ko‘chirilgan bo‘lim',
+ 'chapter_move_notification' => 'Bo‘lim muvaffaqiyatli ko‘chirildi',
+
+ // Books
+ 'book_create' => 'yaratilgan kitob',
+ 'book_create_notification' => 'Kitob muvaffaqiyatli yaratildi',
+ 'book_create_from_chapter' => 'bo‘lim kitobga o‘girildi',
+ 'book_create_from_chapter_notification' => 'Bo‘lim kitobga muvaffaqiyatli o‘girildi',
+ 'book_update' => 'yangilangan kitob',
+ 'book_update_notification' => 'Kitob muvaffaqiyatli yangilandi',
+ 'book_delete' => 'o‘chirilgan kitob',
+ 'book_delete_notification' => 'Kitob muvaffaqiyatli o‘chirildi',
+ 'book_sort' => 'tartiblangan kitob',
+ 'book_sort_notification' => 'Kitob muvaffaqiyatli qayta tartiblandi',
+
+ // Bookshelves
+ 'bookshelf_create' => 'Javon yaratildi',
+ 'bookshelf_create_notification' => 'Javon muvaffaqiyatli yaratildi',
+ 'bookshelf_create_from_book' => 'kitob javonga o‘girildi',
+ 'bookshelf_create_from_book_notification' => 'kitob javonga muvaffaqiyatli o‘girildi',
+ 'bookshelf_update' => 'updated shelf',
+ 'bookshelf_update_notification' => 'Shelf successfully updated',
+ 'bookshelf_delete' => 'deleted shelf',
+ 'bookshelf_delete_notification' => 'Shelf successfully deleted',
+
+ // Revisions
+ 'revision_restore' => 'restored revision',
+ 'revision_delete' => 'deleted revision',
+ 'revision_delete_notification' => 'Revision successfully deleted',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" sevimlilaringizga qo‘shildi',
+ 'favourite_remove_notification' => '":name" sevimlilaringizdan olib tashlandi',
+
+ // Watching
+ 'watch_update_level_notification' => 'Watch preferences successfully updated',
+
+ // Auth
+ 'auth_login' => 'logged in',
+ 'auth_register' => 'registered as new user',
+ 'auth_password_reset_request' => 'requested user password reset',
+ 'auth_password_reset_update' => 'reset user password',
+ 'mfa_setup_method' => 'configured MFA method',
+ 'mfa_setup_method_notification' => 'Multi-faktor uslubi muvaffaqiyatli sozlandi',
+ 'mfa_remove_method' => 'removed MFA method',
+ 'mfa_remove_method_notification' => 'Multi-faktor uslubi muvaffaqiyatli o‘chirildi',
+
+ // Settings
+ 'settings_update' => 'updated settings',
+ 'settings_update_notification' => 'Settings successfully updated',
+ 'maintenance_action_run' => 'ran maintenance action',
+
+ // Webhooks
+ 'webhook_create' => 'yaratilgan webhook',
+ 'webhook_create_notification' => 'Webhook muvaffaqiyatli yaratildi',
+ 'webhook_update' => 'yangilangan webhook',
+ 'webhook_update_notification' => 'Webhook muvaffaqiyatli yangilandi',
+ 'webhook_delete' => 'o‘chirilgan webhook',
+ 'webhook_delete_notification' => 'Webhook muvaffaqiyatli o‘chirildi',
+
+ // Imports
+ 'import_create' => 'created import',
+ 'import_create_notification' => 'Import successfully uploaded',
+ 'import_run' => 'updated import',
+ 'import_run_notification' => 'Content successfully imported',
+ 'import_delete' => 'deleted import',
+ 'import_delete_notification' => 'Import successfully deleted',
+
+ // Users
+ 'user_create' => 'created user',
+ 'user_create_notification' => 'User successfully created',
+ 'user_update' => 'updated user',
+ 'user_update_notification' => 'Foydalanuvchi muvaffaqiyatli yangilandi',
+ 'user_delete' => 'deleted user',
+ 'user_delete_notification' => 'Foydalanuvchi muvaffaqiyatli olib tashlandi',
+
+ // API Tokens
+ 'api_token_create' => 'created API token',
+ 'api_token_create_notification' => 'API token successfully created',
+ 'api_token_update' => 'updated API token',
+ 'api_token_update_notification' => 'API token successfully updated',
+ 'api_token_delete' => 'deleted API token',
+ 'api_token_delete_notification' => 'API token successfully deleted',
+
+ // Roles
+ 'role_create' => 'created role',
+ 'role_create_notification' => 'Role successfully created',
+ 'role_update' => 'updated role',
+ 'role_update_notification' => 'Role successfully updated',
+ 'role_delete' => 'deleted role',
+ 'role_delete_notification' => 'Role successfully deleted',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'emptied recycle bin',
+ 'recycle_bin_restore' => 'restored from recycle bin',
+ 'recycle_bin_destroy' => 'removed from recycle bin',
+
+ // Comments
+ 'commented_on' => 'fikr qoldirdi',
+ 'comment_create' => 'added comment',
+ 'comment_update' => 'updated comment',
+ 'comment_delete' => 'deleted comment',
+
+ // Sort Rules
+ 'sort_rule_create' => 'created sort rule',
+ 'sort_rule_create_notification' => 'Sort rule successfully created',
+ 'sort_rule_update' => 'updated sort rule',
+ 'sort_rule_update_notification' => 'Sort rule successfully updated',
+ 'sort_rule_delete' => 'deleted sort rule',
+ 'sort_rule_delete_notification' => 'Sort rule successfully deleted',
+
+ // Other
+ 'permissions_update' => 'yangilangan huquqlar',
+];
diff --git a/lang/uz/auth.php b/lang/uz/auth.php
new file mode 100644
index 00000000000..59a620daeca
--- /dev/null
+++ b/lang/uz/auth.php
@@ -0,0 +1,117 @@
+ 'Uchbu ma‘lumotlar, bizdagi ma‘lumotlarga mos kelmadi.',
+ 'throttle' => 'Kirishga urinishlar juda ko‘p. Iltimos :seconds soniyadan so‘ng urinib ko‘ring.',
+
+ // Login & Register
+ 'sign_up' => 'Ro‘yxatdan o‘tish',
+ 'log_in' => 'Kirish',
+ 'log_in_with' => ':socialDriver orqali kirish',
+ 'sign_up_with' => ':socialDriver orqali ro‘yxatdan o‘tish',
+ 'logout' => 'Chiqish',
+
+ 'name' => 'Ism',
+ 'username' => 'Foydalanuvchi nomi',
+ 'email' => 'Elektron pochta',
+ 'password' => 'Parol',
+ 'password_confirm' => 'Parolni tasdiqlash',
+ 'password_hint' => 'Kamida 8 belgi bo‘lishi kerak',
+ 'forgot_password' => 'Parolni unutdingizmi?',
+ 'remember_me' => 'Eslab qoling',
+ 'ldap_email_hint' => 'Ush hisob bilan o‘tish uchun emailni kiritish.',
+ 'create_account' => 'Profil yaratildi',
+ 'already_have_account' => 'Profilingiz bormi?',
+ 'dont_have_account' => 'Profilingiz yo‘qmi?',
+ 'social_login' => 'Ijtimoiy tarmoqlar orqali kirish',
+ 'social_registration' => 'Ijtimoiy tarmoqlar orqali ro‘yxatdan o‘tish',
+ 'social_registration_text' => 'Boshqa tarmoqdan foydalanish.',
+
+ 'register_thanks' => 'Ro‘yxatdan o‘tganingiz uchun rahmat!',
+ 'register_confirm' => ':appName dan foydalanish uchun iltimos emailingizga yuborilgan xatni ochib, tasdiqlovchi link orqali o‘ting.',
+ 'registrations_disabled' => 'Hozirda ro‘yxatdan o‘tish yopilgan',
+ 'registration_email_domain_invalid' => 'Ush domendagi email bilan ro‘yxatdan o‘tib bo‘lmaydi',
+ 'register_success' => 'Ro‘yxatdan o‘tganingiz uchun rahmat! Endi siz ushbu hisob bilan saytga kirishingiz mumkin.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Kirishga urinish',
+ 'auto_init_starting_desc' => 'Kirish jarayonini boshlash uchun kirish orqali murojaat qilyapmiz. Agar 5 soniyadan keyin hech qanday o‘zgarish bo‘lmasa, havolani bosib ko‘ tiklash mumkin.',
+ 'auto_init_start_link' => 'Kirish uchun bosing',
+
+ // Password Reset
+ 'reset_password' => 'Parolni qayta tiklash',
+ 'reset_password_send_instructions' => 'Parolni tiklash manzilini olish uchun emailingizni maydonga kiriting.',
+ 'reset_password_send_button' => 'Tiklash manzilini yuborish',
+ 'reset_password_sent' => 'Agar tizimda ushbu elektron pochta manzili topilsa, parolni tiklash havolasi :email manziliga yuboriladi.',
+ 'reset_password_success' => 'Parolingiz yaxshilandi.',
+ 'email_reset_subject' => ':appName parolingizni tiklash',
+ 'email_reset_text' => 'Profilingiz uchun parolni oʻ Soʻrovini olganimiz uchun sizga bu xat keldi.',
+ 'email_reset_not_requested' => 'Agar sizga parolni tiklashni so‘ramagan bo‘lsangiz, boshqa hech qanday harakat talab qilish mumkin.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => ':appName orqali elektron pochtangizni tasdiqlang',
+ 'email_confirm_greeting' => ':appName\'ga qo‘shilganingiz uchun tashakkur!',
+ 'email_confirm_text' => 'Quyidagi tugmani bosish orqali elektron pochta manzilingizni tasdiqlang:',
+ 'email_confirm_action' => 'E-pochta manzilini tasdiqlash',
+ 'email_confirm_send_error' => 'Elektron pochtani tasdiqlash talab qilinadi, lekin tizim elektron pochta xabarini yubora olmadi. Elektron pochta toʻgʻri sozlanganligiga ishonch hosil qilish uchun administrator bilan bogʻlaning.',
+ 'email_confirm_success' => 'Emailingiz tasdiqlandi! Endi siz ushbu elektron pochta manzilidan foydalanib tizimga kirishingiz kerak.',
+ 'email_confirm_resent' => 'Tasdiqlash xati qayta yuborildi. Iltimos, pochta qutingizni tekshiring.',
+ 'email_confirm_thanks' => 'Tasdiqlaganingiz uchun tashakkur!',
+ 'email_confirm_thanks_desc' => 'Tasdiqlash jarayoni tugaguncha biroz kuting. Agar 3 soniyadan keyin qayta yoʻnaltirilmasangiz, davom etish uchun quyidagi “Davom etish” havolasini bosing.',
+
+ 'email_not_confirmed' => 'Elektron pochta manzili tasdiqlanmagan',
+ 'email_not_confirmed_text' => 'Sizning elektron pochta manzilingiz hali tasdiqlanmagan.',
+ 'email_not_confirmed_click_link' => 'Roʻyxatdan oʻtganingizdan soʻng, elektron pochtaga yuborilgan havolani bosing.',
+ 'email_not_confirmed_resend' => 'Agar elektron pochta manzilini topa olmasangiz, quyidagi shaklni yuborish orqali tasdiqlash xatini qayta yuborishingiz mumkin.',
+ 'email_not_confirmed_resend_button' => 'Tasdiqlash xatini qayta yuborish',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Siz :appName ilovasiga qo‘shilishga taklif qilindingiz!',
+ 'user_invite_email_greeting' => 'Siz uchun :appName ilovasida hisob yaratildi.',
+ 'user_invite_email_text' => 'Hisob qaydnomasi parolini o‘rnatish va unga kirish uchun quyidagi tugmani bosing:',
+ 'user_invite_email_action' => 'Hisob parolini o‘rnating',
+ 'user_invite_page_welcome' => ':appName ga xush kelibsiz!',
+ 'user_invite_page_text' => 'Hisob qaydnomangizni yakunlash va kirish huquqini qo‘lga kiritish uchun parolni o‘rnatishingiz kerak, undan keyingi tashriflaringizda :appName tizimiga kirish uchun foydalaniladi.',
+ 'user_invite_page_confirm_button' => 'Parolni tasdiqlang',
+ 'user_invite_success_login' => 'Parol o‘rnatilgan, endi siz o‘rnatilgan parolingizdan foydalanib tizimga kirishingiz kerak: appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Ko‘p faktorli autentifikatsiyani sozlash',
+ 'mfa_setup_desc' => 'Ko‘p faktorli autentifikatsiyani foydalanuvchi hisobingiz uchun qo‘shimcha xavfsizlik qatlami sifatida o‘rnatish.',
+ 'mfa_setup_configured' => 'Allaqachon sozlangan',
+ 'mfa_setup_reconfigure' => 'Qayta sozlang',
+ 'mfa_setup_remove_confirmation' => 'Haqiqatan ham bu koʻp faktorli autentifikatsiya usulini olib tashlamoqchimisiz?',
+ 'mfa_setup_action' => 'Sozlash; O‘rnatish',
+ 'mfa_backup_codes_usage_limit_warning' => 'Sizda 5 tadan kam zaxira kodingiz qoldi. Profilingiz bloklanib qolmasligi uchun kodlar tugashidan oldin yangi to‘plamni yarating va saqlang.',
+ 'mfa_option_totp_title' => 'Mobil ilova',
+ 'mfa_option_totp_desc' => 'Ko‘p faktorli autentifikatsiyadan foydalanish uchun sizga Google Authenticator, Authy yoki Microsoft Authenticator kabi OTPni qo‘llab-quvvatlaydigan mobil ilova kerak bo‘ladi.',
+ 'mfa_option_backup_codes_title' => 'Zaxira kodlari',
+ 'mfa_option_backup_codes_desc' => 'Shaxsingizni tasdiqlash uchun tizimga kirishda kiritadigan bir martalik zaxira kodlari to\'plamini yaratadi. Bularni xavfsiz va ishonchli joyda saqlang.',
+ 'mfa_gen_confirm_and_enable' => 'Tasdiqlash va yoqish',
+ 'mfa_gen_backup_codes_title' => 'Zaxira kodlarini sozlash',
+ 'mfa_gen_backup_codes_desc' => 'Quyidagi kodlar ro‘yxatini xavfsiz joyda saqlang. Tizimga kirishda siz kodlardan birini ikkinchi autentifikatsiya mexanizmi sifatida ishlatishingiz mumkin.',
+ 'mfa_gen_backup_codes_download' => 'Kodlarni yuklab olish',
+ 'mfa_gen_backup_codes_usage_warning' => 'Har bir kod faqat bir marta ishlatilishi mumkin',
+ 'mfa_gen_totp_title' => 'Mobil ilovani sozlash',
+ 'mfa_gen_totp_desc' => 'Ko‘p faktorli autentifikatsiyadan foydalanish uchun sizga Google Authenticator, Authy yoki Microsoft Authenticator kabi TOTPni qo‘llab-quvvatlaydigan mobil ilova kerak bo‘ladi.',
+ 'mfa_gen_totp_scan' => 'Ishni boshlash uchun siz tanlagan autentifikatsiya ilovasi yordamida quyidagi QR kodni skanerlang.',
+ 'mfa_gen_totp_verify_setup' => 'Oʻrnatishni tasdiqlang',
+ 'mfa_gen_totp_verify_setup_desc' => 'Quyidagi kiritish maydoniga autentifikatsiya ilovangizda yaratilgan kodni kiritish orqali hammasi ishlayotganiga ishonch hosil qiling:',
+ 'mfa_gen_totp_provide_code_here' => 'Bu yerda ilovangiz tomonidan yaratilgan kodni kiriting',
+ 'mfa_verify_access' => 'Kirishni tasdiqlang',
+ 'mfa_verify_access_desc' => 'Sizning foydalanuvchi hisobingiz sizga ruxsat berishdan oldin shaxsingizni tasdiqlashning qoʻshimcha darajasi orqali tasdiqlashingizni talab qiladi. Davom etish uchun sozlangan usullardan biri yordamida tasdiqlang.',
+ 'mfa_verify_no_methods' => 'Hech qanday usul sozlanmagan',
+ 'mfa_verify_no_methods_desc' => 'Profilingiz uchun ko‘p faktorli autentifikatsiya usullari topilmadi. Kirishdan oldin kamida bitta usulni sozlashingiz kerak.',
+ 'mfa_verify_use_totp' => 'Mobil ilova yordamida tasdiqlang',
+ 'mfa_verify_use_backup_codes' => 'Zaxira kod yordamida tasdiqlang',
+ 'mfa_verify_backup_code' => 'Zaxira kodi',
+ 'mfa_verify_backup_code_desc' => 'Qolgan zaxira kodlaringizdan birini pastga kiriting:',
+ 'mfa_verify_backup_code_enter_here' => 'Bu yerga zaxira kodini kiriting',
+ 'mfa_verify_totp_desc' => 'Quyida mobil ilovangiz yordamida yaratilgan kodni kiriting:',
+ 'mfa_setup_login_notification' => 'Ko‘p faktorli usul sozlangan. Iltimos, endi sozlangan usul yordamida qayta kiring.',
+];
diff --git a/lang/uz/common.php b/lang/uz/common.php
new file mode 100644
index 00000000000..2c1788bee01
--- /dev/null
+++ b/lang/uz/common.php
@@ -0,0 +1,115 @@
+ 'Bekor qilsih',
+ 'close' => 'Yopish',
+ 'confirm' => 'Tasdiqlang',
+ 'back' => 'Orqaga',
+ 'save' => 'Saqlash',
+ 'continue' => 'Davom etish',
+ 'select' => 'Tanlang',
+ 'toggle_all' => 'Hammasini almashtirish',
+ 'more' => 'Ko‘proq',
+
+ // Form Labels
+ 'name' => 'Nom',
+ 'description' => 'Tavsif',
+ 'role' => 'Rol',
+ 'cover_image' => 'Muqova rasmi',
+ 'cover_image_description' => 'This image should be approximately 440x250px although it will be flexibly scaled & cropped to fit the user interface in different scenarios as required, so actual dimensions for display will differ.',
+
+ // Actions
+ 'actions' => 'Harakatlar',
+ 'view' => 'Ko‘rinish',
+ 'view_all' => 'Hammasini ko‘rish',
+ 'new' => 'Yangi',
+ 'create' => 'Yaratish',
+ 'update' => 'Yangilash',
+ 'edit' => 'Tahrirlash',
+ 'archive' => 'Archive',
+ 'unarchive' => 'Un-Archive',
+ 'sort' => 'Saralash',
+ 'move' => 'Ko‘chirish',
+ 'copy' => 'Nusxalash',
+ 'reply' => 'Javob berish',
+ 'delete' => 'Oʻchirish',
+ 'delete_confirm' => 'Oʻchirishni tasdiqlang',
+ 'search' => 'Qidirish',
+ 'search_clear' => 'Qidiruvni tozalash',
+ 'reset' => 'Qayta o‘rnatish',
+ 'remove' => 'O‘chirish',
+ 'add' => 'Qo‘shish',
+ 'configure' => 'Sozlash',
+ 'manage' => 'Boshqarish',
+ 'fullscreen' => 'To‘liq ekran',
+ 'favourite' => 'Sevimli',
+ 'unfavourite' => 'Sevimli emas',
+ 'next' => 'Keyingisi',
+ 'previous' => 'Oldingi',
+ 'filter_active' => 'Faol filtr:',
+ 'filter_clear' => 'Filtrni tozalash',
+ 'download' => 'Yuklab olish',
+ 'open_in_tab' => 'Tabda ochish',
+ 'open' => 'Open',
+
+ // Sort Options
+ 'sort_options' => 'Saralash opsiyalari',
+ 'sort_direction_toggle' => 'Saralash yoʻnalishini almashtirish',
+ 'sort_ascending' => 'O‘sish bo‘yicha tartiblash',
+ 'sort_descending' => 'Kamayish bo‘yicha tartiblash',
+ 'sort_name' => 'Nomi',
+ 'sort_default' => 'Standart',
+ 'sort_created_at' => 'Yaratilgan sana',
+ 'sort_updated_at' => 'Yangilangan sana',
+
+ // Misc
+ 'deleted_user' => 'O‘chirilgan foydalanuvchi',
+ 'no_activity' => 'Ko‘rsatiladigan faollik yo‘q',
+ 'no_items' => 'Hech narsa mavjud emas',
+ 'back_to_top' => 'Yuqoriga qaytish',
+ 'skip_to_main_content' => 'Asosiy tarkibga o‘tish',
+ 'toggle_details' => 'Tafsilotlarni almashtirish',
+ 'toggle_thumbnails' => 'Eskizlarni almashtirish',
+ 'details' => 'Tafsilotlar',
+ 'grid_view' => 'To‘r ko‘rinishi',
+ 'list_view' => 'Roʻyxat koʻrinishi',
+ 'default' => 'Standart',
+ 'breadcrumb' => 'Non bo‘laklari',
+ 'status' => 'Holat',
+ 'status_active' => 'Faol',
+ 'status_inactive' => 'Faol emas',
+ 'never' => 'Hech qachon',
+ 'none' => 'Yo‘q',
+
+ // Header
+ 'homepage' => 'Bosh sahifa',
+ 'header_menu_expand' => 'Sarlavha menyusini kengaytirish',
+ 'profile_menu' => 'Profil menyusi',
+ 'view_profile' => 'Profilni ko‘rish',
+ 'edit_profile' => 'Profilni tahrirlash',
+ 'dark_mode' => 'Qorong‘i rejim',
+ 'light_mode' => 'Nur rejimi',
+ 'global_search' => 'Global qidiruv',
+
+ // Layout tabs
+ 'tab_info' => 'Ma‘lumot',
+ 'tab_info_label' => 'Yorliq: Ikkilamchi ma‘lumotni ko‘rsatish',
+ 'tab_content' => 'Tarkib',
+ 'tab_content_label' => 'Yorliq: Asosiy tarkibni ko‘rsatish',
+
+ // Email Content
+ 'email_action_help' => 'Agar siz ":actionText" tugmasini bosishda muammoga duch kelsangiz, quyidagi URL manzilidan nusxa oling va veb-brauzeringizga joylashtiring:',
+ 'email_rights' => 'Barcha huquqlar himoyalangan',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Maxfiylik siyosati',
+ 'terms_of_service' => 'Xizmat ko‘rsatish shartlari',
+
+ // OpenSearch
+ 'opensearch_description' => 'Search :appName',
+];
diff --git a/lang/uz/components.php b/lang/uz/components.php
new file mode 100644
index 00000000000..29fc0f2598e
--- /dev/null
+++ b/lang/uz/components.php
@@ -0,0 +1,46 @@
+ 'Rasmni tanlash',
+ 'image_list' => 'Rasmlar roʻyxati',
+ 'image_details' => 'Tasvir tafsilotlari',
+ 'image_upload' => 'Rasm yuklash',
+ 'image_intro' => 'Bu yerda siz avvalroq tizimga yuklangan rasmlarni tanlashingiz va boshqarishingiz mumkin.',
+ 'image_intro_upload' => 'Tasvir faylini ushbu oynaga sudrab yoki yuqoridagi "Rasmni yuklash" tugmasini bosib yangi rasmni yuklang.',
+ 'image_all' => 'Barchasi',
+ 'image_all_title' => 'Barcha rasmlarni ko‘rish',
+ 'image_book_title' => 'Ush kitobga yuklangan barcha rasmlarni ko‘rish',
+ 'image_page_title' => 'Ush sahifaga yuklangan barcha rasmlarni ko‘rish',
+ 'image_search_hint' => 'Rasmni nomi bo‘yicha izlash',
+ 'image_uploaded' => ':uploadedDate sanada yuklangan',
+ 'image_uploaded_by' => ':userName tomonidan yuklangan',
+ 'image_uploaded_to' => ':pageLink manziliga yuklangan',
+ 'image_updated' => 'Yangilangan: updateDate',
+ 'image_load_more' => 'Yana yuklash',
+ 'image_image_name' => 'Rasm nomi',
+ 'image_delete_used' => 'Ushbu rasm quyidagi sahifalarda qo‘llaniladi.',
+ 'image_delete_confirm_text' => 'Haqiqatan ham bu rasmni oʻchirib tashlamoqchimisiz?',
+ 'image_select_image' => 'Rasmni tanlash',
+ 'image_dropzone' => 'Rasmlarni tortib, tashlang yoki yuklash uchun shu yerni bosing',
+ 'image_dropzone_drop' => 'Yuklash uchun rasmlarni shu yerga tashlang',
+ 'images_deleted' => 'Tasvirlar oʻchirildi',
+ 'image_preview' => 'Tasvirni oldindan ko‘rish',
+ 'image_upload_success' => 'Rasm muvaffaqiyatli yuklandi',
+ 'image_update_success' => 'Rasm tafsilotlari muvaffaqiyatli yangilandi',
+ 'image_delete_success' => 'Rasm muvaffaqiyatli oʻchirildi',
+ 'image_replace' => 'Rasmni almashtirish',
+ 'image_replace_success' => 'Rasm fayli muvaffaqiyatli yangilandi',
+ 'image_rebuild_thumbs' => 'Regenerate Size Variations',
+ 'image_rebuild_thumbs_success' => 'Image size variations successfully rebuilt!',
+
+ // Code Editor
+ 'code_editor' => 'Kodni tahrirlash',
+ 'code_language' => 'Kod tili',
+ 'code_content' => 'Kod matni',
+ 'code_session_history' => 'Sessiya tarixi',
+ 'code_save' => 'Kod saqlanadi',
+];
diff --git a/lang/uz/editor.php b/lang/uz/editor.php
new file mode 100644
index 00000000000..a7f91d76916
--- /dev/null
+++ b/lang/uz/editor.php
@@ -0,0 +1,182 @@
+ 'Umumiy',
+ 'advanced' => 'Murakkab',
+ 'none' => 'Yo‘q',
+ 'cancel' => 'Bekor qilish',
+ 'save' => 'Saqlash',
+ 'close' => 'Yopish',
+ 'apply' => 'Apply',
+ 'undo' => 'Bekor qilish',
+ 'redo' => 'Qayta qiling',
+ 'left' => 'Chapga',
+ 'center' => 'Markaz',
+ 'right' => 'To‘g‘ri',
+ 'top' => 'Yuqori',
+ 'middle' => 'O‘rta',
+ 'bottom' => 'Pastki',
+ 'width' => 'Kengligi',
+ 'height' => 'Balandligi',
+ 'More' => 'Ko‘proq',
+ 'select' => 'Tanlang...',
+
+ // Toolbar
+ 'formats' => 'Formatlar',
+ 'header_large' => 'Katta sarlavha',
+ 'header_medium' => 'O‘rta sarlavha',
+ 'header_small' => 'Kichik sarlavha',
+ 'header_tiny' => 'Kichkina sarlavha',
+ 'paragraph' => 'Paragraf',
+ 'blockquote' => 'Blok tirnoq',
+ 'inline_code' => 'Inline kod',
+ 'callouts' => 'Qo‘ng‘iroqlar',
+ 'callout_information' => 'Ma`lumot',
+ 'callout_success' => 'Muvaffaqiyat',
+ 'callout_warning' => 'Ogohlantirish',
+ 'callout_danger' => 'Xavfli',
+ 'bold' => 'Qalin',
+ 'italic' => 'Kursiv',
+ 'underline' => 'tagiga chizish',
+ 'strikethrough' => 'Chizilgan',
+ 'superscript' => 'Yuqori yozuv',
+ 'subscript' => 'Subscript',
+ 'text_color' => 'Matn rangi',
+ 'highlight_color' => 'Highlight color',
+ 'custom_color' => 'Maxsus rang',
+ 'remove_color' => 'Rangni olib tashlash',
+ 'background_color' => 'Fon rangi',
+ 'align_left' => 'Chapga tekislash',
+ 'align_center' => 'Markazni tekislaash',
+ 'align_right' => 'O‘ngga tekislaash',
+ 'align_justify' => 'Ogohlantirish',
+ 'list_bullet' => 'Belgilar ro‘yxati',
+ 'list_numbered' => 'Raqamlangan ro‘yxat',
+ 'list_task' => 'Vazifalar ro‘yxati',
+ 'indent_increase' => 'Chiziqni oshirish',
+ 'indent_decrease' => 'Chiziqni kamaytirish',
+ 'table' => 'Jadval',
+ 'insert_image' => 'Rasm kiritish',
+ 'insert_image_title' => 'Tasvirni kiritish/tahrirlash',
+ 'insert_link' => 'Havolani kiritish/tahrirlash',
+ 'insert_link_title' => 'Havola kiritish/tahrirlash',
+ 'insert_horizontal_line' => 'Gorizontal chiziqni kiritish',
+ 'insert_code_block' => 'Kod blokini kiritish',
+ 'edit_code_block' => 'Kod blokini tahrirlash',
+ 'insert_drawing' => 'Chizmani kiritish/tahrirlash',
+ 'drawing_manager' => 'Chizma menejeri',
+ 'insert_media' => 'Mediani kiritish/tahrirlash',
+ 'insert_media_title' => 'Media qo‘shish/tahrirlash',
+ 'clear_formatting' => 'Formatlashni tozalash',
+ 'source_code' => 'Manba kodi',
+ 'source_code_title' => 'Manba kodi',
+ 'fullscreen' => 'To‘liq ekran',
+ 'image_options' => 'Rasm variantlari',
+
+ // Tables
+ 'table_properties' => 'Jadval xususiyatlari',
+ 'table_properties_title' => 'Jadval xususiyatlari',
+ 'delete_table' => 'Jadvalni o‘chirish',
+ 'table_clear_formatting' => 'Clear table formatting',
+ 'resize_to_contents' => 'Resize to contents',
+ 'row_header' => 'Row header',
+ 'insert_row_before' => 'Oldinga qator kiritish',
+ 'insert_row_after' => 'Keyingi qatorni kiritish',
+ 'delete_row' => 'Qatorni o‘chirish',
+ 'insert_column_before' => 'Oldinga ustunni kiritish',
+ 'insert_column_after' => 'Ustunni keyin kiritish',
+ 'delete_column' => 'Ustunni o‘chirish',
+ 'table_cell' => 'Katak',
+ 'table_row' => 'Qator',
+ 'table_column' => 'Ustun',
+ 'cell_properties' => 'Katak xossalari',
+ 'cell_properties_title' => 'Katak xususiyatlari',
+ 'cell_type' => 'Katak turi',
+ 'cell_type_cell' => 'Katak',
+ 'cell_scope' => 'Qo‘llash doirasi',
+ 'cell_type_header' => 'Sarlavha katagi',
+ 'merge_cells' => 'Kataklarni birlashtirish',
+ 'split_cell' => 'Bo‘lingan katak',
+ 'table_row_group' => 'Qator guruhi',
+ 'table_column_group' => 'Ustunlar guruhi',
+ 'horizontal_align' => 'Gorizontal tekislash',
+ 'vertical_align' => 'Vertikal tekislash',
+ 'border_width' => 'Chegara kengligi',
+ 'border_style' => 'Chegara uslubi',
+ 'border_color' => 'Chegara rangi',
+ 'row_properties' => 'Qator xususiyatlari',
+ 'row_properties_title' => 'Qator xususiyatlari',
+ 'cut_row' => 'Qatorni kesib olish',
+ 'copy_row' => 'Qatorni nusxalash',
+ 'paste_row_before' => 'Oldinga qatorni joylashtirish',
+ 'paste_row_after' => 'Keyin qatorni qo‘yish',
+ 'row_type' => 'Qator turi',
+ 'row_type_header' => 'Sarlavha',
+ 'row_type_body' => 'Tana',
+ 'row_type_footer' => 'Altbilgi',
+ 'alignment' => 'Hizalama',
+ 'cut_column' => 'Kesilgan ustun',
+ 'copy_column' => 'Ustunni nusxalash',
+ 'paste_column_before' => 'Oldinga ustun qo‘yish',
+ 'paste_column_after' => 'Ustunni keyin joylashtirish',
+ 'cell_padding' => 'Katak to‘plami',
+ 'cell_spacing' => 'Katak oralig‘i',
+ 'caption' => 'Sarlavha',
+ 'show_caption' => 'Sarlavhani ko‘rsatish',
+ 'constrain' => 'Proportionlarni cheklash',
+ 'cell_border_solid' => 'Qattiq',
+ 'cell_border_dotted' => 'Nuqtali',
+ 'cell_border_dashed' => 'Chiziqli',
+ 'cell_border_double' => 'Ikki marta',
+ 'cell_border_groove' => 'Groove',
+ 'cell_border_ridge' => 'Ridge',
+ 'cell_border_inset' => 'Kiritilgan',
+ 'cell_border_outset' => 'Boshlanish',
+ 'cell_border_none' => 'Yo‘q',
+ 'cell_border_hidden' => 'Yashirin',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Manba',
+ 'alt_desc' => 'Muqobil tavsif',
+ 'embed' => 'Oʻrnatish',
+ 'paste_embed' => 'O‘rnatish kodingizni pastga qo‘ying:',
+ 'url' => 'URL',
+ 'text_to_display' => 'Ko‘rish uchun matn',
+ 'title' => 'Sarlavha',
+ 'browse_links' => 'Browse links',
+ 'open_link' => 'Havolani ochish',
+ 'open_link_in' => 'Havolani ochish...',
+ 'open_link_current' => 'Joriy oyna',
+ 'open_link_new' => 'Yangi oyna',
+ 'remove_link' => 'Havolani olib tashlang',
+ 'insert_collapsible' => 'Yig‘iladigan blokni joylashtiring',
+ 'collapsible_unwrap' => 'Oʻramni yech',
+ 'edit_label' => 'Yorliqni tahrirlash',
+ 'toggle_open_closed' => 'Ochiq/yopiq o‘tish',
+ 'collapsible_edit' => 'Yig‘iladigan blokni tahrirlash',
+ 'toggle_label' => 'Yorliqni almashtirish',
+
+ // About view
+ 'about' => 'Muharrir haqida',
+ 'about_title' => 'WYSIWYG muharriri haqida',
+ 'editor_license' => 'Muharrir litsenziyasi va mualliflik huquqi',
+ 'editor_lexical_license' => 'This editor is built as a fork of :lexicalLink which is distributed under the MIT license.',
+ 'editor_lexical_license_link' => 'Full license details can be found here.',
+ 'editor_tiny_license' => 'Ushbu muharrir MIT litsenziyasi ostida taqdim etilgan :tinyLink yordamida yaratilgan.',
+ 'editor_tiny_license_link' => 'TinyMCE mualliflik huquqi va litsenziya tafsilotlarini bu yerda topishingiz mumkin.',
+ 'save_continue' => 'Sahifani saqlang va Davom eting',
+ 'callouts_cycle' => '(Turlar bo‘yicha o‘tish uchun bosing)',
+ 'link_selector' => 'Kontentga havola',
+ 'shortcuts' => 'Qisqa klavishlar',
+ 'shortcut' => 'Yorliq',
+ 'shortcuts_intro' => 'Tahrirlovchida quyidagi yorliqlar mavjud:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Tavsif',
+];
diff --git a/lang/uz/entities.php b/lang/uz/entities.php
new file mode 100644
index 00000000000..e35a485b65d
--- /dev/null
+++ b/lang/uz/entities.php
@@ -0,0 +1,476 @@
+ 'Oxirgi yaratilgan',
+ 'recently_created_pages' => 'Oxirgi yaratilgan sahifalar',
+ 'recently_updated_pages' => 'Oxirgi yangilangan sahifalar',
+ 'recently_created_chapters' => 'Oxirgi yaratilgan bo\'limlar',
+ 'recently_created_books' => 'Oxirgi yaratilgan kitoblar',
+ 'recently_created_shelves' => 'Oxirgi yaratilgan kitobjavonlar',
+ 'recently_update' => 'Oxirgi yangilangan',
+ 'recently_viewed' => 'Oxirgi koʻrilgan',
+ 'recent_activity' => 'Oxirgi faolliklar',
+ 'create_now' => 'Yangi yaratish',
+ 'revisions' => 'Revizionlar',
+ 'meta_revision' => '#:revisionCount reviziya',
+ 'meta_created' => ':timeLength da yaratilgan',
+ 'meta_created_name' => ':user tomonidan :timeLength da yaratilgan',
+ 'meta_updated' => ':timeLength da yangilangan',
+ 'meta_updated_name' => ':user tomonidan :timeLength da yangilangan',
+ 'meta_owned_name' => 'Muallif: foydalanuvchi',
+ 'meta_reference_count' => 'Referenced by :count item|Referenced by :count items',
+ 'entity_select' => 'Ob\'ektni tanlash',
+ 'entity_select_lack_permission' => 'Sizda bu elementni tanlash uchun kerakli ruxsatlar yo‘q',
+ 'images' => 'Rasmlar',
+ 'my_recent_drafts' => 'Mening keyingi qoralamalarim',
+ 'my_recently_viewed' => 'Mening keyingi ko‘rganlarim',
+ 'my_most_viewed_favourites' => 'Mening eng sevimli sevimliga qo‘shganlarim',
+ 'my_favourites' => 'Mening sevimlilarim',
+ 'no_pages_viewed' => 'Siz hech qaysi sahifani koʻrmagansiz',
+ 'no_pages_recently_created' => 'Siz hali hech qanday sahifa yaratmagansiz',
+ 'no_pages_recently_updated' => 'Siz hali sahifalarni yangilamagansiz',
+ 'export' => 'Eksport',
+ 'export_html' => 'HTML holatida',
+ 'export_pdf' => 'PDF holatida',
+ 'export_text' => 'Oddiy matn holatida',
+ 'export_md' => 'Markdown fayli holatida',
+ 'export_zip' => 'Portable ZIP',
+ 'default_template' => 'Default Page Template',
+ 'default_template_explain' => 'Assign a page template that will be used as the default content for all pages created within this item. Keep in mind this will only be used if the page creator has view access to the chosen template page.',
+ 'default_template_select' => 'Select a template page',
+ 'import' => 'Import',
+ 'import_validate' => 'Validate Import',
+ 'import_desc' => 'Import books, chapters & pages using a portable zip export from the same, or a different, instance. Select a ZIP file to proceed. After the file has been uploaded and validated you\'ll be able to configure & confirm the import in the next view.',
+ 'import_zip_select' => 'Select ZIP file to upload',
+ 'import_zip_validation_errors' => 'Errors were detected while validating the provided ZIP file:',
+ 'import_pending' => 'Pending Imports',
+ 'import_pending_none' => 'No imports have been started.',
+ 'import_continue' => 'Continue Import',
+ 'import_continue_desc' => 'Review the content due to be imported from the uploaded ZIP file. When ready, run the import to add its contents to this system. The uploaded ZIP import file will be automatically removed on successful import.',
+ 'import_details' => 'Import Details',
+ 'import_run' => 'Run Import',
+ 'import_size' => ':size Import ZIP Size',
+ 'import_uploaded_at' => 'Uploaded :relativeTime',
+ 'import_uploaded_by' => 'Uploaded by',
+ 'import_location' => 'Import Location',
+ 'import_location_desc' => 'Select a target location for your imported content. You\'ll need the relevant permissions to create within the location you choose.',
+ 'import_delete_confirm' => 'Are you sure you want to delete this import?',
+ 'import_delete_desc' => 'This will delete the uploaded import ZIP file, and cannot be undone.',
+ 'import_errors' => 'Import Errors',
+ 'import_errors_desc' => 'The follow errors occurred during the import attempt:',
+ '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',
+
+ // Permissions and restrictions
+ 'permissions' => 'Huquqlar',
+ 'permissions_desc' => 'Foydalanuvchi rollari tomonidan berilgan standart ruxsatlarni bekor qilish uchun bu yerda ruxsatlarni o‘rnating.',
+ 'permissions_book_cascade' => 'Kitoblarga oʻrnatilgan ruxsatlar, agar ularda oʻz ruxsatnomalari belgilanmagan boʻlsa, avtomatik ravishda bolalar boʻlimlari va sahifalariga oʻtadi.',
+ 'permissions_chapter_cascade' => 'Bo\'limlarda o\'rnatilgan ruxsatlar, agar ular o\'zlarining ruxsatlari aniqlanmagan bo\'lsa, avtomatik ravishda pastki sahifalarga o\'tadi.',
+ 'permissions_save' => 'Ruxsatlarni saqlash',
+ 'permissions_owner' => 'Muallifi',
+ 'permissions_role_everyone_else' => 'Boshqa hamma',
+ 'permissions_role_everyone_else_desc' => 'Maxsus bekor qilinmagan barcha rollar uchun ruxsatlarni o\'rnating.',
+ 'permissions_role_override' => 'Rol uchun ruxsatlarni bekor qilish',
+ 'permissions_inherit_defaults' => 'Standartlarni meros qilib olish',
+
+ // Search
+ 'search_results' => 'Qidiruv yordam',
+ 'search_total_results_found' => ':son natija topildi|:topilgan jami natijalar soni',
+ 'search_clear' => 'Qidiruvni tozalash',
+ 'search_no_pages' => 'Qidiruvga mos sahifalar topilmadi',
+ 'search_for_term' => ':term bo‘yicha haqida',
+ 'search_more' => 'Qo‘shimcha ilova',
+ 'search_advanced' => 'Kengay olingan',
+ 'search_terms' => 'Qidiruv parametrlari',
+ 'search_content_type' => 'Kontent turi',
+ 'search_exact_matches' => 'Mos kelgan hudud',
+ 'search_tags' => 'Teg haqida',
+ 'search_options' => 'Opsiyalar',
+ 'search_viewed_by_me' => 'Men kuzatuvdan ko‘rilgan',
+ 'search_not_viewed_by_me' => 'Men kuzatuvdan ko‘rilmagan',
+ 'search_permissions_set' => 'Ruxsatlar oʻrnatilgan',
+ 'search_created_by_me' => 'Men tomonidan yaratilgan',
+ 'search_updated_by_me' => 'Men tomonidan yangilangan',
+ 'search_owned_by_me' => 'Menga tegishli',
+ 'search_date_options' => 'Sana opsiyalari',
+ 'search_updated_before' => 'Oldin yangilangan',
+ 'search_updated_after' => 'Keyin yangilangan',
+ 'search_created_before' => 'Oldin yaratilgan',
+ 'search_created_after' => 'keyin yaratilgan',
+ 'search_set_date' => 'Sana belgilash',
+ 'search_update' => 'Qidiruvni yangilash',
+
+ // Shelves
+ 'shelf' => 'Raf',
+ 'shelves' => 'Tokchalar',
+ 'x_shelves' => ':count Shelf|:count Raflar',
+ 'shelves_empty' => 'Hech qanday javon yaratilmagan',
+ 'shelves_create' => 'Yangi javon yaratish',
+ 'shelves_popular' => 'Mashhur javonlar',
+ 'shelves_new' => 'Yangi javonlar',
+ 'shelves_new_action' => 'Yangi javon',
+ 'shelves_popular_empty' => 'Bu erda eng mashhur javonlar paydo bo\'ladi.',
+ 'shelves_new_empty' => 'Eng so\'nggi yaratilgan javonlar bu erda paydo bo\'ladi.',
+ 'shelves_save' => 'Rafni saqlang',
+ 'shelves_books' => 'Bu javonda kitoblar',
+ 'shelves_add_books' => 'Ushbu javonga kitob qo\'shing',
+ 'shelves_drag_books' => 'Kitoblarni ushbu javonga qo‘shish uchun ularni pastga torting',
+ 'shelves_empty_contents' => 'Bu javonda unga hech qanday kitob ajratilmagan',
+ 'shelves_edit_and_assign' => 'Kitoblarni belgilash uchun javonni tahrirlang',
+ 'shelves_edit_named' => 'Rafni tahrirlash: nom',
+ 'shelves_edit' => 'Rafni tahrirlash',
+ 'shelves_delete' => 'Rafni o\'chirish',
+ 'shelves_delete_named' => 'Rafni o\'chirish: nomi',
+ 'shelves_delete_explain' => "This will delete the shelf with the name ':name'. Contained books will not be deleted.",
+ 'shelves_delete_confirmation' => 'Haqiqatan ham bu javonni oʻchirib tashlamoqchimisiz?',
+ 'shelves_permissions' => 'Rafga ruxsatlar',
+ 'shelves_permissions_updated' => 'Rafga ruxsatlar yangilandi',
+ 'shelves_permissions_active' => 'Rafga ruxsatlar faol',
+ 'shelves_permissions_cascade_warning' => 'Javonlardagi ruxsatlar avtomatik ravishda saqlangan kitoblarga o\'tmaydi. Buning sababi, kitob bir nechta javonlarda mavjud bo\'lishi mumkin. Ruxsatlarni quyida joylashgan variantdan foydalanib, bolalar kitoblariga nusxalash mumkin.',
+ 'shelves_permissions_create' => 'Javon yaratish ruxsatlari faqat quyidagi amal yordamida bolalar kitoblariga ruxsatlarni nusxalash uchun ishlatiladi. Ular kitob yaratish qobiliyatini nazorat qilmaydi.',
+ 'shelves_copy_permissions_to_books' => 'Kitoblarga koʻchirish ruxsatnomalari',
+ 'shelves_copy_permissions' => 'Nusxa olish uchun ruxsatlar',
+ 'shelves_copy_permissions_explain' => 'Bu javonning joriy ruxsat sozlamalarini undagi barcha kitoblarga qo‘llaydi. Faollashtirishdan oldin ushbu javon ruxsatnomalariga kiritilgan har qanday o\'zgarishlar saqlanganligiga ishonch hosil qiling.',
+ 'shelves_copy_permission_success' => 'Raf ruxsatlari :count kitoblariga nusxalandi',
+
+ // Books
+ 'book' => 'Kitob',
+ 'books' => 'Kitoblar',
+ 'x_books' => ':count Book|:count Books',
+ 'books_empty' => 'Kitob yaratilmagan',
+ 'books_popular' => 'Ommabop kitoblar',
+ 'books_recent' => 'Oxirgi kitoblar',
+ 'books_new' => 'Yangi kitoblar',
+ 'books_new_action' => 'Yangi kitob',
+ 'books_popular_empty' => 'Eng ommabop kitoblar shu yerda aks etadi.',
+ 'books_new_empty' => 'Eng shaxsiy kitoblar bu yerda aks etadi.',
+ 'books_create' => 'Yangi kitob',
+ 'books_delete' => 'Kitobni o‘chirish',
+ 'books_delete_named' => ':bookName kitobni o‘chirish',
+ 'books_delete_explain' => 'Bu \':bookName\' nomli kitobni o\'chirib tashlaydi. Barcha sahifalar va bo\'limlar o\'chiriladi.',
+ 'books_delete_confirmation' => 'Haqiqatan ham bu kitobni oʻchirib tashlamoqchimisiz?',
+ 'books_edit' => 'Kitobni tahrirlash',
+ 'books_edit_named' => 'Kitobni tahrirlash: kitob nomi',
+ 'books_form_book_name' => 'Kitob nomi',
+ 'books_save' => 'Kitobni saqlash',
+ 'books_permissions' => 'Kitob ruxsatnomalari',
+ 'books_permissions_updated' => 'Kitob ruxsatnomalari yangilandi',
+ 'books_empty_contents' => 'Ushbu kitob uchun hech qanday sahifa yoki bob yaratilmagan.',
+ 'books_empty_create_page' => 'Yangi sahifa yarating',
+ 'books_empty_sort_current_book' => 'Joriy kitobni tartiblang',
+ 'books_empty_add_chapter' => 'Bo\'lim qo\'shing',
+ 'books_permissions_active' => 'Kitob ruxsatlari faol',
+ 'books_search_this' => 'Ushbu kitobni qidiring',
+ 'books_navigation' => 'Kitob navigatsiya',
+ 'books_sort' => 'Kitob tarkibini saralash',
+ 'books_sort_desc' => 'Move chapters and pages within a book to reorganise its contents. Other books can be added which allows easy moving of chapters and pages between books. Optionally an auto sort rule can be set to automatically sort this book\'s contents upon changes.',
+ 'books_sort_auto_sort' => 'Auto Sort Option',
+ 'books_sort_auto_sort_active' => 'Auto Sort Active: :sortName',
+ 'books_sort_named' => 'Kitobni tartiblash: kitob nomi',
+ 'books_sort_name' => 'Nomi bo\'yicha saralash',
+ 'books_sort_created' => 'Yaratilgan sana bo\'yicha saralash',
+ 'books_sort_updated' => 'Yangilangan sana bo\'yicha saralash',
+ 'books_sort_chapters_first' => 'Birinchi bo\'limlar',
+ 'books_sort_chapters_last' => 'Oxirgi bo\'limlar',
+ 'books_sort_show_other' => 'Boshqa kitoblarni ko\'rsatish',
+ 'books_sort_save' => 'Yangi buyurtmani saqlash',
+ 'books_sort_show_other_desc' => 'Boshqa kitoblarni saralash jarayoniga qo\'shish uchun bu yerga qo\'shing va kitoblar o\'rtasida osongina qayta tashkil etishga ruxsat bering.',
+ 'books_sort_move_up' => 'Yuqoriga harakatlanmoq',
+ 'books_sort_move_down' => 'Pastga siljiting',
+ 'books_sort_move_prev_book' => 'Oldingi kitobga o\'tish',
+ 'books_sort_move_next_book' => 'Keyingi kitobga o\'ting',
+ 'books_sort_move_prev_chapter' => 'Oldingi bo\'limga o\'tish',
+ 'books_sort_move_next_chapter' => 'Keyingi bo\'limga o\'tish',
+ 'books_sort_move_book_start' => 'Kitobning boshiga o\'ting',
+ 'books_sort_move_book_end' => 'Kitobning oxiriga o\'ting',
+ 'books_sort_move_before_chapter' => 'Oldingi bo\'limga o\'ting',
+ 'books_sort_move_after_chapter' => 'Keyingi bo\'limga o\'ting',
+ 'books_copy' => 'Kitobni nusxalash',
+ 'books_copy_success' => 'Kitob muvaffaqiyatli nusxalandi',
+
+ // Chapters
+ 'chapter' => 'Bob',
+ 'chapters' => 'Boblar',
+ 'x_chapters' => ':count bo\'lim|:boblarni hisoblash',
+ 'chapters_popular' => 'Mashhur bo\'limlar',
+ 'chapters_new' => 'Yangi bo\'lim',
+ 'chapters_create' => 'Yangi bo\'lim yaratish',
+ 'chapters_delete' => 'Bo\'limni o\'chirish',
+ 'chapters_delete_named' => 'Bo\'limni o\'chirish: bo\'limName',
+ 'chapters_delete_explain' => 'Bu \':chapterName\' nomli bo\'limni o\'chiradi. Ushbu bo\'limda mavjud bo\'lgan barcha sahifalar ham o\'chiriladi.',
+ 'chapters_delete_confirm' => 'Haqiqatan ham bu bobni oʻchirib tashlamoqchimisiz?',
+ 'chapters_edit' => 'Bo\'limni tahrirlash',
+ 'chapters_edit_named' => 'Bobni tahrirlang: bo\'lim nomi',
+ 'chapters_save' => 'Bo\'limni saqlash',
+ 'chapters_move' => 'Bo\'limni ko\'chirish',
+ 'chapters_move_named' => 'Bo\'limni ko\'chiring: bo\'lim nomi',
+ 'chapters_copy' => 'Bobni nusxalash',
+ 'chapters_copy_success' => 'Bob muvaffaqiyatli nusxalandi',
+ 'chapters_permissions' => 'Bo\'limga ruxsatlar',
+ 'chapters_empty' => 'Hozirda bu bobda hech qanday sahifa yoʻq.',
+ 'chapters_permissions_active' => 'Bo\'lim ruxsatlari faol',
+ 'chapters_permissions_success' => 'Bo\'lim ruxsatlari yangilandi',
+ 'chapters_search_this' => 'Ushbu bo\'limni qidiring',
+ 'chapter_sort_book' => 'Tartiblash kitobi',
+
+ // Pages
+ 'page' => 'Sahifa',
+ 'pages' => 'Sahifalar',
+ 'x_pages' => ':count Page|:Sahifalarni hisoblash',
+ 'pages_popular' => 'Mashhur sahifalar',
+ 'pages_new' => 'Yangi sahifa',
+ 'pages_attachments' => 'Qo\'shimchalar',
+ 'pages_navigation' => 'Sahifa navigatsiyasi',
+ 'pages_delete' => 'Sahifani o\'chirish',
+ 'pages_delete_named' => 'Sahifani o\'chirish :pageName',
+ 'pages_delete_draft_named' => 'Qoralama sahifani oʻchirish: pageName',
+ 'pages_delete_draft' => 'Qoralama sahifani oʻchirish',
+ 'pages_delete_success' => 'Sahifa oʻchirildi',
+ 'pages_delete_draft_success' => 'Qoralama sahifa oʻchirildi',
+ 'pages_delete_warning_template' => 'This page is in active use as a book or chapter default page template. These books or chapters will no longer have a default page template assigned after this page is deleted.',
+ 'pages_delete_confirm' => 'Haqiqatan ham bu sahifani oʻchirib tashlamoqchimisiz?',
+ 'pages_delete_draft_confirm' => 'Haqiqatan ham bu qoralama sahifani oʻchirib tashlamoqchimisiz?',
+ 'pages_editing_named' => 'Sahifani tahrirlash :pageName',
+ 'pages_edit_draft_options' => 'Qoralama variantlari',
+ 'pages_edit_save_draft' => 'Qoralamani saqlash',
+ 'pages_edit_draft' => 'Sahifa qoralamasini tahrirlash',
+ 'pages_editing_draft' => 'Qoralamani tahrirlash',
+ 'pages_editing_page' => 'Tahrirlash sahifasi',
+ 'pages_edit_draft_save_at' => 'Qoralama saqlangan',
+ 'pages_edit_delete_draft' => 'Qoralamani oʻchirish',
+ 'pages_edit_delete_draft_confirm' => 'Haqiqatan ham qoralama sahifadagi oʻzgarishlarni oʻchirib tashlamoqchimisiz? Oxirgi toʻliq saqlashdan buyon barcha oʻzgarishlaringiz yoʻqoladi va muharrir soʻnggi sahifaning qoralama saqlanmagan holati bilan yangilanadi.',
+ 'pages_edit_discard_draft' => 'Qoralamani bekor qilish',
+ 'pages_edit_switch_to_markdown' => 'Markdown muharririga o\'ting',
+ 'pages_edit_switch_to_markdown_clean' => '(Toza tarkib)',
+ 'pages_edit_switch_to_markdown_stable' => '(Barqaror tarkib)',
+ 'pages_edit_switch_to_wysiwyg' => 'WYSIWYG muharririga o\'ting',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
+ 'pages_edit_set_changelog' => 'O\'zgarishlar jurnalini o\'rnating',
+ 'pages_edit_enter_changelog_desc' => 'Siz kiritgan o\'zgarishlarning qisqacha tavsifini kiriting',
+ 'pages_edit_enter_changelog' => 'O\'zgarishlar jurnaliga kiring',
+ 'pages_editor_switch_title' => 'Muharrirni almashtirish',
+ 'pages_editor_switch_are_you_sure' => 'Haqiqatan ham bu sahifa muharririni oʻzgartirmoqchimisiz?',
+ 'pages_editor_switch_consider_following' => 'Tahrirlovchilarni o\'zgartirishda quyidagilarga e\'tibor bering:',
+ 'pages_editor_switch_consideration_a' => 'Saqlangandan so\'ng, yangi tahrirlovchi opsiyasidan kelajakdagi muharrirlar, jumladan, tahrirlovchi turini o\'zlari o\'zgartira olmaydiganlar ham foydalanadi.',
+ 'pages_editor_switch_consideration_b' => 'Bu ma\'lum holatlarda tafsilotlar va sintaksisning yo\'qolishiga olib kelishi mumkin.',
+ 'pages_editor_switch_consideration_c' => 'Oxirgi saqlashdan keyin kiritilgan teg yoki oʻzgarishlar jurnali oʻzgarishlari bu oʻzgarish davomida saqlanib qolmaydi.',
+ 'pages_save' => 'Sahifani saqlash',
+ 'pages_title' => 'Sahifa sarlavhasi',
+ 'pages_name' => 'Sahifa nomi',
+ 'pages_md_editor' => 'muharrir',
+ 'pages_md_preview' => 'Ko‘rib chiqish',
+ 'pages_md_insert_image' => 'Rasm kiritish',
+ 'pages_md_insert_link' => 'Ob\'ekt havolasini kiriting',
+ 'pages_md_insert_drawing' => 'Chizma kiritish',
+ 'pages_md_show_preview' => 'Ko‘rish',
+ 'pages_md_sync_scroll' => 'Sinxronizatsiyani oldindan ko\'rish aylantirish',
+ 'pages_md_plain_editor' => 'Plaintext editor',
+ 'pages_drawing_unsaved' => 'Saqlanmagan chizma topildi',
+ 'pages_drawing_unsaved_confirm' => 'Saqlanmagan chizma maʼlumotlari avvalgi muvaffaqiyatsiz chizmani saqlash urinishidan topildi. Ushbu saqlanmagan chizmani qayta tiklash va tahrirlashni davom ettirmoqchimisiz?',
+ 'pages_not_in_chapter' => 'Sahifa bir bobda emas',
+ 'pages_move' => 'Sahifani ko\'chirish',
+ 'pages_copy' => 'Sahifani nusxalash',
+ 'pages_copy_desination' => 'Belgilangan joydan nusxa oling',
+ 'pages_copy_success' => 'Sahifa muvaffaqiyatli nusxalandi',
+ 'pages_permissions' => 'Sahifa ruxsatnomalari',
+ 'pages_permissions_success' => 'Sahifa ruxsatnomalari yangilandi',
+ 'pages_revision' => 'Qayta ko\'rib chiqish',
+ 'pages_revisions' => 'Sahifani tahrirlash',
+ 'pages_revisions_desc' => 'Quyida ushbu sahifaning barcha o\'tgan tahrirlari keltirilgan. Ruxsatlar ruxsat bersa, eski sahifa versiyalarini qayta ko\'rib chiqishingiz, solishtirishingiz va tiklashingiz mumkin. Sahifaning toʻliq tarixi bu yerda toʻliq aks ettirilmasligi mumkin, chunki tizim konfiguratsiyasiga qarab, eski tahrirlar avtomatik ravishda oʻchirilishi mumkin.',
+ 'pages_revisions_named' => ':pageName uchun sahifa tahrirlari',
+ 'pages_revision_named' => ':pageName uchun sahifa tahriri',
+ 'pages_revision_restored_from' => '#:id dan tiklangan; : xulosa',
+ 'pages_revisions_created_by' => 'Tomonidan yaratilgan',
+ 'pages_revisions_date' => 'Tekshirish sanasi',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Tahrir raqami',
+ 'pages_revisions_numbered' => 'Tahrir #: identifikator',
+ 'pages_revisions_numbered_changes' => 'Tahrir #: id o\'zgarishlari',
+ 'pages_revisions_editor' => 'Muharrir turi',
+ 'pages_revisions_changelog' => 'O\'zgarishlar jurnali',
+ 'pages_revisions_changes' => 'O\'zgarishlar',
+ 'pages_revisions_current' => 'Joriy versiya',
+ 'pages_revisions_preview' => 'Ko‘rib chiqish',
+ 'pages_revisions_restore' => 'Qayta tiklash',
+ 'pages_revisions_none' => 'Bu sahifada hech qanday tahrir yo\'q',
+ 'pages_copy_link' => 'Havolani nusxalash',
+ 'pages_edit_content_link' => 'Tahrirlovchida bo\'limga o\'tish',
+ 'pages_pointer_enter_mode' => 'Bo\'limni tanlash rejimiga kiring',
+ 'pages_pointer_label' => 'Sahifa bo\'limi parametrlari',
+ 'pages_pointer_permalink' => 'Sahifa bo\'limi doimiy havola',
+ 'pages_pointer_include_tag' => 'Sahifa bo\'limi tegni o\'z ichiga oladi',
+ 'pages_pointer_toggle_link' => 'Doimiy havola rejimi, Oʻz ichiga tegni koʻrsatish uchun bosing',
+ 'pages_pointer_toggle_include' => 'Teg rejimini qo\'shish, doimiy havolani ko\'rsatish uchun bosing',
+ 'pages_permissions_active' => 'Sahifa ruxsatlari faol',
+ 'pages_initial_revision' => 'Dastlabki nashr',
+ 'pages_references_update_revision' => 'Tizim ichki havolalarni avtomatik yangilash',
+ 'pages_initial_name' => 'Yangi sahifa',
+ 'pages_editing_draft_notification' => 'Siz hozirda oxirgi saqlangan qoralamani tahrir qilyapsiz :timeDiff.',
+ 'pages_draft_edited_notification' => 'Ushbu sahifa o\'sha paytdan beri yangilangan. Ushbu qoralamani bekor qilish tavsiya etiladi.',
+ 'pages_draft_page_changed_since_creation' => 'Bu qoralama yaratilganidan beri bu sahifa yangilandi. Ushbu qoralamadan voz kechishingiz yoki sahifadagi o\'zgarishlarni qayta yozmaslikka harakat qilishingiz tavsiya etiladi.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count foydalanuvchilari ushbu sahifani tahrirlashni boshladilar',
+ 'start_b' => ':userName bu sahifani tahrirlashni boshladi',
+ 'time_a' => 'sahifa oxirgi yangilanganidan beri',
+ 'time_b' => 'oxirgi :minCount daqiqada',
+ 'message' => ':Boshlanish vaqti. Bir-biringizning yangilanishlarini qayta yozmaslikka ehtiyot bo\'ling!',
+ ],
+ 'pages_draft_discarded' => 'Qoralama bekor qilindi! Tahrirlovchi joriy sahifa mazmuni bilan yangilandi',
+ 'pages_draft_deleted' => 'Qoralama oʻchirildi! Tahrirlovchi joriy sahifa mazmuni bilan yangilandi',
+ 'pages_specific' => 'Maxsus sahifa',
+ 'pages_is_template' => 'Sahifa shabloni',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Toggle Sidebar',
+ 'page_tags' => 'Sahifa teglari',
+ 'chapter_tags' => 'Bo\'lim teglari',
+ 'book_tags' => 'Kitob teglari',
+ 'shelf_tags' => 'Raf teglari',
+ 'tag' => 'teg',
+ 'tags' => 'Tags',
+ 'tags_index_desc' => 'Teglar turkumlashning moslashuvchan shaklini qo\'llash uchun tizim ichidagi tarkibga qo\'llanilishi mumkin. Teglar ham kalitga, ham qiymatga ega bo\'lishi mumkin, qiymat ixtiyoriydir. Qo\'llanilgandan so\'ng, kontent teg nomi va qiymatidan foydalanib so\'ralishi mumkin.',
+ 'tag_name' => 'Tag Name',
+ 'tag_value' => 'Teg qiymati (ixtiyoriy)',
+ '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' => 'Boshqa teg qo\'shing',
+ 'tags_remove' => 'Ushbu tegni olib tashlang',
+ 'tags_usages' => 'Jami teg foydalanish',
+ 'tags_assigned_pages' => 'Sahifalarga tayinlangan',
+ 'tags_assigned_chapters' => 'Bo\'limlarga tayinlangan',
+ 'tags_assigned_books' => 'Kitoblarga tayinlangan',
+ 'tags_assigned_shelves' => 'Raflarga tayinlangan',
+ 'tags_x_unique_values' => ': noyob qiymatlarni hisoblash',
+ 'tags_all_values' => 'Barcha qadriyatlar',
+ 'tags_view_tags' => 'Teglarni ko\'rish',
+ 'tags_view_existing_tags' => 'Mavjud teglarni ko\'rish',
+ 'tags_list_empty_hint' => 'Teglar sahifa muharririning yon paneli orqali yoki kitob, bob yoki javon tafsilotlarini tahrirlashda tayinlanishi mumkin.',
+ 'attachments' => 'Qo\'shimchalar',
+ 'attachments_explain' => 'Ba\'zi fayllarni yuklang yoki sahifangizda ko\'rsatish uchun havolalarni qo\'shing. Ular sahifaning yon panelida ko\'rinadi.',
+ 'attachments_explain_instant_save' => 'Bu yerdagi o\'zgarishlar bir zumda saqlanadi.',
+ 'attachments_upload' => 'Faylni yuklash',
+ 'attachments_link' => 'Havolani biriktiring',
+ 'attachments_upload_drop' => 'Shu bilan bir qatorda, faylni ilova sifatida yuklash uchun bu yerga sudrab olib tashlashingiz mumkin.',
+ 'attachments_set_link' => 'Bog\'lanishni o\'rnatish',
+ 'attachments_delete' => 'Haqiqatan ham bu biriktirmani oʻchirib tashlamoqchimisiz?',
+ 'attachments_dropzone' => 'Yuklash uchun fayllarni bu yerga tashlang',
+ 'attachments_no_files' => 'Hech qanday fayl yuklanmagan',
+ 'attachments_explain_link' => 'Agar fayl yuklamaslikni xohlasangiz, havolani biriktirishingiz mumkin. Bu boshqa sahifaga havola yoki bulutdagi faylga havola bo\'lishi mumkin.',
+ 'attachments_link_name' => 'Havola nomi',
+ 'attachment_link' => 'Qo\'shimcha havola',
+ 'attachments_link_url' => 'Faylga havola',
+ 'attachments_link_url_hint' => 'Sayt yoki faylning URL manzili',
+ 'attach' => 'Biriktiring',
+ 'attachments_insert_link' => 'Sahifaga havola qo\'shing',
+ 'attachments_edit_file' => 'Faylni tahrirlash',
+ 'attachments_edit_file_name' => 'Fayl nomi',
+ 'attachments_edit_drop_upload' => 'Fayllarni tashlab yuboring yoki yuklash va ustiga yozish uchun shu yerni bosing',
+ 'attachments_order_updated' => 'Biriktirish tartibi yangilandi',
+ 'attachments_updated_success' => 'Birikma tafsilotlari yangilandi',
+ 'attachments_deleted' => 'Biriktirma oʻchirildi',
+ 'attachments_file_uploaded' => 'Fayl muvaffaqiyatli yuklandi',
+ 'attachments_file_updated' => 'Fayl muvaffaqiyatli yangilandi',
+ 'attachments_link_attached' => 'Havola sahifaga muvaffaqiyatli biriktirildi',
+ 'templates' => 'Shablonlar',
+ 'templates_set_as_template' => 'Sahifa shablondir',
+ 'templates_explain_set_as_template' => 'Siz ushbu sahifani shablon sifatida sozlashingiz mumkin, shunda uning mazmuni boshqa sahifalarni yaratishda foydalaniladi. Boshqa foydalanuvchilar ushbu sahifani koʻrish ruxsatiga ega boʻlsa, ushbu andozadan foydalanishlari mumkin.',
+ 'templates_replace_content' => 'Sahifa tarkibini almashtiring',
+ 'templates_append_content' => 'Sahifa tarkibiga qo\'shing',
+ 'templates_prepend_content' => 'Sahifa mazmuniga oldin qo\'ying',
+
+ // Profile View
+ 'profile_user_for_x' => 'Foydalanuvchi uchun: time',
+ 'profile_created_content' => 'Yaratilgan tarkib',
+ 'profile_not_created_pages' => ':userName hech qanday sahifa yaratmagan',
+ 'profile_not_created_chapters' => ':userName hech qanday bob yaratmagan',
+ 'profile_not_created_books' => ':userName hech qanday kitob yaratmagan',
+ 'profile_not_created_shelves' => ':userName hech qanday javon yaratmagan',
+
+ // Comments
+ 'comment' => 'Izoh',
+ 'comments' => 'Izohlar',
+ 'comment_add' => 'Fikr qo\'shish',
+ 'comment_none' => 'No comments to display',
+ 'comment_placeholder' => 'Bu yerda fikr qoldiring',
+ 'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
+ 'comment_archived_count' => ':count Archived',
+ 'comment_archived_threads' => 'Archived Threads',
+ 'comment_save' => 'Fikrni saqlash',
+ 'comment_new' => 'Yangi izoh',
+ 'comment_created' => 'izoh berdi:createDiff',
+ 'comment_updated' => 'Yangilangan :updateDiff tomonidan :username',
+ 'comment_updated_indicator' => 'Yangilangan',
+ 'comment_deleted_success' => 'Fikr o‘chirildi',
+ 'comment_created_success' => 'Fikr qo\'shildi',
+ 'comment_updated_success' => 'Fikr yangilandi',
+ 'comment_archive_success' => 'Comment archived',
+ 'comment_unarchive_success' => 'Comment un-archived',
+ 'comment_view' => 'View comment',
+ 'comment_jump_to_thread' => 'Jump to thread',
+ 'comment_delete_confirm' => 'Haqiqatan ham bu fikrni oʻchirib tashlamoqchimisiz?',
+ 'comment_in_reply_to' => ':commentId ga javoban',
+ 'comment_reference' => 'Reference',
+ 'comment_reference_outdated' => '(Outdated)',
+ 'comment_editor_explain' => 'Mana shu sahifada qolgan izohlar. Saqlangan sahifani ko\'rishda sharhlar qo\'shilishi va boshqarilishi mumkin.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Haqiqatan ham bu tahrirni oʻchirib tashlamoqchimisiz?',
+ 'revision_restore_confirm' => 'Haqiqatan ham bu tahrirni qayta tiklamoqchimisiz? Joriy sahifa mazmuni almashtiriladi.',
+ 'revision_cannot_delete_latest' => 'Oxirgi versiyani oʻchirib boʻlmadi.',
+
+ // Copy view
+ 'copy_consider' => 'Kontentni nusxalashda quyidagini hisobga oling.',
+ 'copy_consider_permissions' => 'Maxsus ruxsat sozlamalari nusxalanmaydi.',
+ 'copy_consider_owner' => 'Siz barcha nusxalangan kontent egasiga aylanasiz.',
+ 'copy_consider_images' => 'Sahifa tasvirlari fayllari takrorlanmaydi va asl tasvirlar dastlab yuklangan sahifaga aloqasini saqlab qoladi.',
+ 'copy_consider_attachments' => 'Sahifa qo\'shimchalari nusxalanmaydi.',
+ 'copy_consider_access' => 'Joylashuv, egasi yoki ruxsatlarning oʻzgarishi ushbu kontentga avval ruxsati boʻlmaganlar uchun ochiq boʻlishiga olib kelishi mumkin.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Rafga aylantirish',
+ 'convert_to_shelf_contents_desc' => 'Siz ushbu kitobni bir xil tarkibga ega yangi javonga aylantirishingiz mumkin. Ushbu kitobdagi boblar yangi kitoblarga aylantiriladi. Agar bu kitobda bobda bo\'lmagan sahifalar bo\'lsa, bu kitob nomi o\'zgartiriladi va shunday sahifalarni o\'z ichiga oladi va bu kitob yangi javonning bir qismiga aylanadi.',
+ 'convert_to_shelf_permissions_desc' => 'Bu kitobga oʻrnatilgan har qanday ruxsatlar yangi javonga va oʻz ruxsatnomalariga ega boʻlmagan barcha yangi bolalar kitoblariga koʻchiriladi. Esda tutingki, javonlardagi ruxsatlar kitoblar uchun bo\'lgani kabi ichki kontentga avtomatik ravishda kaskad bo\'lmaydi.',
+ 'convert_book' => 'Kitobni aylantirish',
+ 'convert_book_confirm' => 'Haqiqatan ham bu kitobni aylantirmoqchimisiz?',
+ 'convert_undo_warning' => 'Buni osonlikcha qaytarib bo\'lmaydi.',
+ 'convert_to_book' => 'Kitobga aylantirish',
+ 'convert_to_book_desc' => 'Siz ushbu bobni xuddi shu mazmundagi yangi kitobga aylantirishingiz mumkin. Ushbu bobda oʻrnatilgan har qanday ruxsatnomalar yangi kitobga koʻchiriladi, lekin ota-ona kitobidan meros qilib olingan ruxsatlar koʻchirilmaydi, bu esa kirishni boshqarishni oʻzgartirishga olib kelishi mumkin.',
+ 'convert_chapter' => 'Bo\'limni aylantirish',
+ 'convert_chapter_confirm' => 'Haqiqatan ham bu bobni aylantirmoqchimisiz?',
+
+ // References
+ 'references' => 'Ma\'lumotnomalar',
+ 'references_none' => 'Bu elementga kuzatilgan havolalar mavjud emas.',
+ 'references_to_desc' => 'Listed below is all the known content in the system that links to this item.',
+
+ // Watch Options
+ 'watch' => 'Tomosha qiling',
+ 'watch_title_default' => 'Standart sozlamalar',
+ 'watch_desc_default' => 'Tomosha qilishni faqat birlamchi bildirishnoma sozlamalaringizga qaytaring.',
+ 'watch_title_ignore' => 'E\'tibor bermaslik',
+ 'watch_desc_ignore' => 'Barcha bildirishnomalarga, jumladan, foydalanuvchi darajasidagi sozlamalarga e\'tibor bermang.',
+ 'watch_title_new' => 'Yangi sahifalar',
+ 'watch_desc_new' => 'Ushbu element ichida har qanday yangi sahifa yaratilganda xabar bering.',
+ 'watch_title_updates' => 'Barcha sahifa yangilanishlari',
+ 'watch_desc_updates' => 'Barcha yangi sahifalar va sahifa o\'zgarishlari haqida xabar bering.',
+ 'watch_desc_updates_page' => 'Barcha sahifa o\'zgarishlari haqida xabar bering.',
+ 'watch_title_comments' => 'Barcha sahifa yangilanishlari va sharhlar',
+ 'watch_desc_comments' => 'Barcha yangi sahifalar, sahifa o\'zgarishlari va yangi sharhlar haqida xabar bering.',
+ 'watch_desc_comments_page' => 'Sahifadagi o\'zgarishlar va yangi sharhlar haqida xabar bering.',
+ 'watch_change_default' => 'Standart bildirishnoma sozlamalarini o\'zgartiring',
+ 'watch_detail_ignore' => 'Bildirishnomalarga e\'tibor bermaslik',
+ 'watch_detail_new' => 'Yangi sahifalarni tomosha qilish',
+ 'watch_detail_updates' => 'Yangi sahifalar va yangilanishlarni tomosha qilish',
+ 'watch_detail_comments' => 'Yangi sahifalar, yangilanishlar va sharhlarni tomosha qilish',
+ 'watch_detail_parent_book' => 'Ota-onalar kitobi orqali tomosha qilish',
+ 'watch_detail_parent_book_ignore' => 'Ota-ona kitobi orqali e\'tiborsizlik',
+ 'watch_detail_parent_chapter' => 'Ota-onalar bo\'limi orqali tomosha qilish',
+ 'watch_detail_parent_chapter_ignore' => 'Ota-bob orqali e\'tiborsizlik',
+];
diff --git a/lang/uz/errors.php b/lang/uz/errors.php
new file mode 100644
index 00000000000..50593eae6bf
--- /dev/null
+++ b/lang/uz/errors.php
@@ -0,0 +1,135 @@
+ 'Sizda soʻralgan sahifaga kirish ruxsatingiz yoʻq.',
+ 'permissionJson' => 'Sizda soʻralgan amalni bajarish uchun ruxsat yoʻq.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'E-pochta manzili boʻlgan foydalanuvchi allaqachon mavjud, ammo hisob ma\'lumotlari boshqacha.',
+ 'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
+ 'email_already_confirmed' => 'Elektron pochta allaqachon tasdiqlangan, tizimga kiring.',
+ 'email_confirmation_invalid' => 'Bu tasdiqlovchi token yaroqsiz yoki allaqachon ishlatilgan. Iltimos, qayta roʻyxatdan oʻtishga urinib koʻring.',
+ 'email_confirmation_expired' => 'Tasdiqlash belgisi muddati tugadi, yangi tasdiqlovchi elektron pochta xabari yuborildi.',
+ 'email_confirmation_awaiting' => 'Amaldagi hisob uchun elektron pochta manzili tasdiqlanishi kerak',
+ 'ldap_fail_anonymous' => 'Anonim ulanishdan foydalanib, LDAP ruxsati amalga oshmadi',
+ 'ldap_fail_authed' => 'Berilgan dn va parol maʼlumotlari yordamida LDAP kirish amalga oshmadi',
+ 'ldap_extension_not_installed' => 'LDAP PHP kengaytmasi oʻrnatilmagan',
+ 'ldap_cannot_connect' => 'Ldap serveriga ulanib boʻlmadi, Dastlabki ulanish amalga oshmadi',
+ 'saml_already_logged_in' => 'Allaqachon tizimga kirgan',
+ 'saml_no_email_address' => 'Tashqi autentifikatsiya tizimi tomonidan taqdim etilgan maʼlumotlarda ushbu foydalanuvchi uchun elektron pochta manzili topilmadi',
+ 'saml_invalid_response_id' => 'Tashqi autentifikatsiya tizimidagi so‘rov ushbu ilova tomonidan boshlangan jarayon tomonidan tan olinmaydi. Kirishdan keyin orqaga qaytish bu muammoga olib kelishi mumkin.',
+ 'saml_fail_authed' => ':tizim yordamida tizimga kirish amalga oshmadi, tizim muvaffaqiyatli avtorizatsiyani taqdim etmadi',
+ 'oidc_already_logged_in' => 'Allaqachon tizimga kirgan',
+ 'oidc_no_email_address' => 'Tashqi autentifikatsiya tizimi tomonidan taqdim etilgan maʼlumotlarda ushbu foydalanuvchi uchun elektron pochta manzili topilmadi',
+ 'oidc_fail_authed' => ':tizim yordamida tizimga kirish amalga oshmadi, tizim muvaffaqiyatli avtorizatsiyani taqdim etmadi',
+ 'social_no_action_defined' => 'Hech qanday harakat belgilanmagan',
+ 'social_login_bad_response' => ":socialAccount login paytida xatolik qabul qilindi: \n:xato",
+ 'social_account_in_use' => 'Bu :socialAccount hisobi allaqachon ishlatilmoqda, :socialAccount opsiyasi orqali tizimga kiring.',
+ 'social_account_email_in_use' => 'Elektron pochta: elektron pochta allaqachon ishlatilmoqda. Agar sizda allaqachon hisob qaydnomangiz boʻlsa, profil sozlamalaringizdan :socialAccount hisobingizni ulashingiz mumkin.',
+ 'social_account_existing' => 'Bu :socialAccount allaqachon profilingizga biriktirilgan.',
+ 'social_account_already_used_existing' => 'Bu :socialAccount hisobi allaqachon boshqa foydalanuvchi tomonidan foydalanilgan.',
+ 'social_account_not_used' => 'Bu :socialAccount hisobi hech qanday foydalanuvchi bilan bog‘lanmagan. Iltimos, uni profil sozlamalaringizga biriktiring.',
+ 'social_account_register_instructions' => 'Agar sizda hali hisob qaydnomangiz boʻlmasa, :socialAccount opsiyasidan foydalanib hisob qaydnomangizni roʻyxatdan oʻtkazishingiz mumkin.',
+ 'social_driver_not_found' => 'Ijtimoiy haydovchi topilmadi',
+ 'social_driver_not_configured' => 'Sizning :socialAccount ijtimoiy sozlamalaringiz toʻgʻri sozlanmagan.',
+ 'invite_token_expired' => 'Bu taklif havolasi muddati tugagan. Buning oʻrniga hisobingiz parolini tiklashga urinib koʻrishingiz mumkin.',
+ 'login_user_not_found' => 'A user for this action could not be found.',
+
+ // System
+ 'path_not_writable' => 'Fayl yoʻli :filePath faylini yuklab boʻlmadi. Uning serverga yozilishi mumkinligiga ishonch hosil qiling.',
+ 'cannot_get_image_from_url' => ':url dan rasmni olib boʻlmadi',
+ 'cannot_create_thumbs' => 'Server eskiz yarata olmaydi. GD PHP kengaytmasi oʻrnatilganligini tekshiring.',
+ 'server_upload_limit' => 'Server bunday hajmdagi yuklashga ruxsat bermaydi. Kichikroq fayl hajmini sinab koʻring.',
+ 'server_post_limit' => 'The server cannot receive the provided amount of data. Try again with less data or a smaller file.',
+ 'uploaded' => 'Server bunday hajmdagi yuklashga ruxsat bermaydi. Kichikroq fayl hajmini sinab koʻring.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Rasmni yuklashda xatolik yuz berdi',
+ 'image_upload_type_error' => 'Yuklanayotgan rasm turi yaroqsiz',
+ 'image_upload_replace_type' => 'Tasvir faylini almashtirish bir xil turdagi boʻlishi kerak',
+ 'image_upload_memory_limit' => 'Failed to handle image upload and/or create thumbnails due to system resource limits.',
+ 'image_thumbnail_memory_limit' => 'Failed to create image size variations due to system resource limits.',
+ 'image_gallery_thumbnail_memory_limit' => 'Failed to create gallery thumbnails due to system resource limits.',
+ 'drawing_data_not_found' => 'Chizma maʼlumotlarini yuklab boʻlmadi. Chizma fayli endi mavjud boʻlmasligi yoki unga kirishga ruxsatingiz boʻlmasligi mumkin.',
+
+ // Attachments
+ 'attachment_not_found' => 'Biriktirma topilmadi',
+ 'attachment_upload_error' => 'Biriktirilgan faylni yuklashda xatolik yuz berdi',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Qoralama saqlanmadi. Ushbu sahifani saqlashdan oldin internet aloqangiz borligiga ishonch hosil qiling',
+ 'page_draft_delete_fail' => 'Sahifaning qoralamasini o‘chirib bo‘lmadi va joriy sahifada saqlangan kontentni olib bo‘lmadi',
+ 'page_custom_home_deletion' => 'Bosh sahifa sifatida belgilangan sahifani oʻchirib boʻlmaydi',
+
+ // Entities
+ 'entity_not_found' => 'Ob\'ekt topilmadi',
+ 'bookshelf_not_found' => 'Raf topilmadi',
+ 'book_not_found' => 'Kitob topilmadi',
+ 'page_not_found' => 'sahifa topilmadi',
+ 'chapter_not_found' => 'Boʻlim topilmadi',
+ 'selected_book_not_found' => 'Tanlangan kitob topilmadi',
+ 'selected_book_chapter_not_found' => 'Tanlangan kitob yoki bob topilmadi',
+ 'guests_cannot_save_drafts' => 'Mehmonlar qoralamalarni saqlay olmaydi',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Siz yagona administratorni oʻchira olmaysiz',
+ 'users_cannot_delete_guest' => 'Siz mehmon foydalanuvchini oʻchira olmaysiz',
+ 'users_could_not_send_invite' => 'Could not create user since invite email failed to send',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Bu rolni tahrirlab bo‘lmaydi',
+ 'role_system_cannot_be_deleted' => 'Bu rol tizim rolidir va uni oʻchirib boʻlmaydi',
+ 'role_registration_default_cannot_delete' => 'Standart ro‘yxatga olish roli sifatida belgilangan bo‘lsa, bu rolni o‘chirib bo‘lmaydi',
+ 'role_cannot_remove_only_admin' => 'Bu foydalanuvchi administrator roliga tayinlangan yagona foydalanuvchi hisoblanadi. Administrator rolini bu yerda olib tashlashdan oldin boshqa foydalanuvchiga tayinlang.',
+
+ // Comments
+ 'comment_list' => 'Sharhlarni olishda xatolik yuz berdi.',
+ 'cannot_add_comment_to_draft' => 'Siz qoralamaga izoh qo‘sha olmaysiz.',
+ 'comment_add' => 'Sharh qo‘shish/yangilashda xatolik yuz berdi.',
+ 'comment_delete' => 'Fikrni o‘chirishda xatolik yuz berdi.',
+ 'empty_comment' => 'Boʻsh fikr qoʻshib boʻlmaydi.',
+
+ // Error pages
+ '404_page_not_found' => 'Sahifa topilmadi',
+ 'sorry_page_not_found' => 'Kechirasiz, siz izlayotgan sahifa topilmadi.',
+ 'sorry_page_not_found_permission_warning' => 'Agar siz ushbu sahifa mavjudligini kutgan boʻlsangiz, uni koʻrish uchun ruxsatingiz boʻlmasligi mumkin.',
+ 'image_not_found' => 'Rasm topilmadi',
+ 'image_not_found_subtitle' => 'Kechirasiz, siz izlayotgan rasm fayli topilmadi.',
+ 'image_not_found_details' => 'Agar siz ushbu rasm mavjudligini kutgan boʻlsangiz, u oʻchirilgan boʻlishi mumkin.',
+ 'return_home' => 'Uyga qaytish',
+ 'error_occurred' => 'Xatolik yuz berdi',
+ 'app_down' => ':appName hozir ishlamayapti',
+ 'back_soon' => 'Tez orada zaxiralanadi.',
+
+ // Import
+ 'import_zip_cant_read' => 'Could not read ZIP file.',
+ 'import_zip_cant_decode_data' => 'Could not find and decode ZIP data.json content.',
+ 'import_zip_no_data' => 'ZIP file data has no expected book, chapter or page content.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Import ZIP failed to validate with errors:',
+ 'import_zip_failed_notification' => 'Failed to import ZIP file.',
+ 'import_perms_books' => 'You are lacking the required permissions to create books.',
+ 'import_perms_chapters' => 'You are lacking the required permissions to create chapters.',
+ 'import_perms_pages' => 'You are lacking the required permissions to create pages.',
+ 'import_perms_images' => 'You are lacking the required permissions to create images.',
+ 'import_perms_attachments' => 'You are lacking the required permission to create attachments.',
+
+ // API errors
+ 'api_no_authorization_found' => 'So‘rovda hech qanday avtorizatsiya belgisi topilmadi',
+ 'api_bad_authorization_format' => 'So‘rovda avtorizatsiya belgisi topildi, lekin format noto‘g‘ri ko‘rindi',
+ 'api_user_token_not_found' => 'Taqdim etilgan avtorizatsiya tokeniga mos keladigan API tokeni topilmadi',
+ 'api_incorrect_token_secret' => 'Foydalanilgan API tokeni uchun berilgan sir notoʻgʻri',
+ 'api_user_no_api_permission' => 'Foydalanilgan API tokeni egasi API qoʻngʻiroqlarini amalga oshirishga ruxsatga ega emas',
+ 'api_user_token_expired' => 'Amaldagi avtorizatsiya tokeni muddati tugagan',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Sinov xatini yuborishda xatolik yuz berdi:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'URL sozlangan ruxsat etilgan SSR xostlariga mos kelmaydi',
+];
diff --git a/lang/uz/notifications.php b/lang/uz/notifications.php
new file mode 100644
index 00000000000..ece09441e9c
--- /dev/null
+++ b/lang/uz/notifications.php
@@ -0,0 +1,29 @@
+ ':pageName sahifada yangi izoh',
+ 'new_comment_intro' => ':appName ichida foydalanuvchi izoh qoldirdi:',
+ 'new_page_subject' => ':pageName yangi sahifa.',
+ 'new_page_intro' => ':appName ichida yangi sahifa yaratildi:',
+ 'updated_page_subject' => ':pageName sahifasi yangilandi',
+ 'updated_page_intro' => ':appName ichida sahifa yangilandi:',
+ 'updated_page_debounce' => 'Xabarnomalar koʻp boʻlishining oldini olish uchun bir muncha vaqt oʻsha muharrir tomonidan ushbu sahifaga keyingi tahrirlar haqida bildirishnomalar yuborilmaydi.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Sahifa nomi:',
+ 'detail_page_path' => 'Page Path:',
+ 'detail_commenter' => 'Izoh egasi:',
+ 'detail_comment' => 'Izoh:',
+ 'detail_created_by' => 'Tomonidan yaratildi:',
+ 'detail_updated_by' => 'Tomonidan tahrirlandi:',
+
+ 'action_view_comment' => 'Izohlarni ko‘rish',
+ 'action_view_page' => 'Sahifani ko‘rish',
+
+ 'footer_reason' => ':link ushbu element uchun ushbu turdagi faoliyatni qamrab olgani uchun sizga bildirishnoma yuborildi.',
+ 'footer_reason_link' => 'Bildirishnoma sozlamalari',
+];
diff --git a/lang/uz/pagination.php b/lang/uz/pagination.php
new file mode 100644
index 00000000000..b3a2e33e0e8
--- /dev/null
+++ b/lang/uz/pagination.php
@@ -0,0 +1,12 @@
+ '« Oldingi',
+ 'next' => 'Kegingi »',
+
+];
diff --git a/lang/uz/passwords.php b/lang/uz/passwords.php
new file mode 100644
index 00000000000..8a7f4cc1899
--- /dev/null
+++ b/lang/uz/passwords.php
@@ -0,0 +1,15 @@
+ 'Parollar kamida sakkiz belgidan iborat bo\'lishi va tasdiqlashga mos kelishi kerak.',
+ 'user' => "Bunday elektron pochta manziliga ega foydalanuvchini topa olmadik.",
+ 'token' => 'Ushbu e-pochta manzili uchun parolni tiklash tokeni yaroqsiz.',
+ 'sent' => 'Parolni tiklash havolasini elektron pochta orqali yubordik!',
+ 'reset' => 'Parolingiz qayta tiklandi!',
+
+];
diff --git a/lang/uz/preferences.php b/lang/uz/preferences.php
new file mode 100644
index 00000000000..996f9d3c4bb
--- /dev/null
+++ b/lang/uz/preferences.php
@@ -0,0 +1,52 @@
+ 'My Account',
+
+ 'shortcuts' => 'Qisqa klavishlar',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Bu erda siz navigatsiya va harakatlar uchun ishlatiladigan klaviatura tizimi interfeysi yorliqlarini yoqishingiz yoki oʻchirishingiz mumkin.',
+ 'shortcuts_customize_desc' => 'Quyidagi yorliqlarning har birini sozlashingiz mumkin. Qisqa klavish uchun kiritishni tanlagandan soʻng, kerakli tugmalar birikmasini bosing.',
+ 'shortcuts_toggle_label' => 'Klaviatura yorliqlari yoqilgan',
+ 'shortcuts_section_navigation' => 'Navigatsiya',
+ 'shortcuts_section_actions' => 'Umumiy harakatlar',
+ 'shortcuts_save' => 'Yorliqlarni saqlash',
+ 'shortcuts_overlay_desc' => 'Eslatma: Yorliqlar yoqilgan boʻlsa, "?" tugmasini bosish orqali yordamchi qatlam mavjud boʻladi. hozirda ekranda koʻrinadigan amallar uchun mavjud yorliqlarni ajratib koʻrsatadi.',
+ 'shortcuts_update_success' => 'Qisqa klavishlar sozlamalari yangilandi!',
+ 'shortcuts_overview_desc' => 'Tizim foydalanuvchi interfeysida harakatlanish uchun foydalanishingiz mumkin boʻlgan klaviatura yorliqlarini boshqaring.',
+
+ 'notifications' => 'Bildirishnoma sozlamalari',
+ 'notifications_desc' => 'Tizimda muayyan harakatlar amalga oshirilganda qabul qilinadigan elektron pochta xabarnomalarini boshqaring.',
+ 'notifications_opt_own_page_changes' => 'Menga tegishli boʻlgan sahifalarimdagi oʻzgarishlar haqida xabar bering',
+ 'notifications_opt_own_page_comments' => 'Menga tegishli sahifalardagi sharhlar haqida xabar bering',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Fikrlarimga javoblarim haqida xabar bering',
+ 'notifications_save' => 'Afzalliklarni saqlash',
+ 'notifications_update_success' => 'Bildirishnoma sozlamalari yangilandi!',
+ 'notifications_watched' => 'Koʻrilgan va e\'tiborga olinmagan narsalar',
+ 'notifications_watched_desc' => 'Quyida maxsus soat sozlamalari qoʻllaniladigan elementlar mavjud. Bular uchun afzalliklaringizni yangilash uchun elementni koʻring, soʻngra yon paneldagi tomosha parametrlarini toping.',
+
+ 'auth' => 'Access & Security',
+ 'auth_change_password' => 'Change Password',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Password has been updated!',
+
+ 'profile' => 'Profile Details',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'View Public Profile',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Delete Account',
+ 'delete_my_account' => 'Delete My Account',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/uz/settings.php b/lang/uz/settings.php
new file mode 100644
index 00000000000..259aee71a3f
--- /dev/null
+++ b/lang/uz/settings.php
@@ -0,0 +1,374 @@
+ 'Sozlamalar',
+ 'settings_save' => 'Sozlamalarni saqlash',
+ 'system_version' => 'Tizim versiyasi',
+ 'categories' => 'Kategoriyalar',
+
+ // App Settings
+ 'app_customization' => 'Moslashtirish',
+ 'app_features_security' => 'Xususiyatlar va xavfsizlik',
+ 'app_name' => 'Ilova nomi',
+ 'app_name_desc' => 'Ushbu nom sarlavhada va tizim tomonidan yuborilgan har qanday elektron pochta xabarlarida ko\'rsatilgan.',
+ 'app_name_header' => 'Sarlavhada nomni ko\'rsatish',
+ 'app_public_access' => 'Umumiy foydalanish imkoniyati',
+ 'app_public_access_desc' => 'Ushbu parametr yoqilsa, tizimga kirmagan tashrif buyuruvchilarga BookStack nusxangiz tarkibiga kirishga ruxsat beriladi.',
+ 'app_public_access_desc_guest' => 'Ommaviy tashrif buyuruvchilar uchun kirishni "Mehmon" foydalanuvchisi orqali boshqarish mumkin.',
+ 'app_public_access_toggle' => 'Umumiy foydalanishga ruxsat bering',
+ 'app_public_viewing' => 'Hammaga ochiq koʻrishga ruxsat berilsinmi?',
+ 'app_secure_images' => 'Yuqori darajadagi xavfsizlik tasvirini yuklash',
+ 'app_secure_images_toggle' => 'Yuqori darajadagi xavfsizlik tasvirini yuklashni yoqing',
+ 'app_secure_images_desc' => 'Ishlash sabablariga ko\'ra, barcha tasvirlar ommaviydir. Ushbu parametr tasvir URL manzillari oldiga tasodifiy, taxmin qilish qiyin bo\'lgan qatorni qo\'shadi. Oson kirishni oldini olish uchun katalog indekslari yoqilmaganligiga ishonch hosil qiling.',
+ 'app_default_editor' => 'Standart sahifa muharriri',
+ 'app_default_editor_desc' => 'Yangi sahifalarni tahrirlashda sukut bo\'yicha qaysi muharrir ishlatilishini tanlang. Bu ruxsatlar ruxsat etilgan sahifa darajasida bekor qilinishi mumkin.',
+ 'app_custom_html' => 'Maxsus HTML bosh tarkibi',
+ 'app_custom_html_desc' => 'Bu yerga qo\'shilgan har qanday kontent har bir sahifaning bo\'limining pastki qismiga kiritiladi. Bu uslublarni bekor qilish yoki analitik kodni qo\'shish uchun qulay.',
+ 'app_custom_html_disabled_notice' => 'Har qanday buzilgan oʻzgarishlarni qaytarib olish uchun maxsus HTML bosh kontenti ushbu sozlamalar sahifasida oʻchirib qoʻyilgan.',
+ 'app_logo' => 'Ilova logotipi',
+ 'app_logo_desc' => 'Bu boshqa sohalar qatorida dastur sarlavhasi satrida ishlatiladi. Ushbu rasm balandligi 86px bo\'lishi kerak. Katta tasvirlar kichraytiriladi.',
+ 'app_icon' => 'Ilova belgisi',
+ 'app_icon_desc' => 'Ushbu belgi brauzer yorliqlari va yorliqlar uchun ishlatiladi. Bu 256px kvadrat PNG tasvir bo\'lishi kerak.',
+ 'app_homepage' => 'Ilova bosh sahifasi',
+ 'app_homepage_desc' => 'Bosh sahifada standart koʻrinish oʻrniga koʻrsatish uchun koʻrinishni tanlang. Tanlangan sahifalar uchun sahifa ruxsatnomalari hisobga olinmaydi.',
+ 'app_homepage_select' => 'Sahifani tanlang',
+ 'app_footer_links' => 'Altbilgi havolalari',
+ 'app_footer_links_desc' => 'Sayt altbilgisida ko\'rsatish uchun havolalarni qo\'shing. Ular ko\'pchilik sahifalarning pastki qismida, jumladan, kirishni talab qilmaydigan sahifalarda ko\'rsatiladi. Tizim tomonidan belgilangan tarjimalardan foydalanish uchun "trans::" yorlig\'idan foydalanishingiz mumkin. Masalan: "trans::common.privacy_policy" dan foydalanish "Maxfiylik siyosati" tarjima qilingan matnni va "trans::common.terms_of_service" tarjima qilingan "Xizmat shartlari" matnini taqdim etadi.',
+ 'app_footer_links_label' => 'Havola yorlig\'i',
+ 'app_footer_links_url' => 'Havola URL',
+ 'app_footer_links_add' => 'Altbilgi havolasini qo\'shing',
+ 'app_disable_comments' => 'Fikrlarni o‘chirib qo‘yish',
+ 'app_disable_comments_toggle' => 'Fikrlarni o\'chirib qo\'ying',
+ 'app_disable_comments_desc' => 'Ilovaning barcha sahifalarida sharhlarni o\'chirib qo\'yadi. Mavjud sharhlar ko\'rsatilmaydi.',
+
+ // Color settings
+ 'color_scheme' => 'Ilova rang sxemasi',
+ 'color_scheme_desc' => 'Ilova foydalanuvchi interfeysida foydalanish uchun ranglarni o\'rnating. Mavzuga eng mos kelishi va tushunarliligini ta\'minlash uchun ranglar qorong\'u va yorug\'lik rejimlari uchun alohida sozlanishi mumkin.',
+ 'ui_colors_desc' => 'Ilovaning asosiy rangini va standart havola rangini o\'rnating. Asosiy rang asosan sarlavhali banner, tugmalar va interfeys bezaklari uchun ishlatiladi. Standart havola rangi yozma tarkibda ham, ilova interfeysida ham matnga asoslangan havolalar va harakatlar uchun ishlatiladi.',
+ 'app_color' => 'Asosiy rang',
+ 'link_color' => 'Standart havola rangi',
+ 'content_colors_desc' => 'Sahifani tashkil etish ierarxiyasidagi barcha elementlar uchun ranglarni o\'rnating. O\'qish uchun standart ranglarga o\'xshash yorqinlikdagi ranglarni tanlash tavsiya etiladi.',
+ 'bookshelf_color' => 'Raf rangi',
+ 'book_color' => 'Kitob rangi',
+ 'chapter_color' => 'Bo\'lim rangi',
+ 'page_color' => 'Sahifa rangi',
+ 'page_draft_color' => 'Sahifa qoralama rangi',
+
+ // Registration Settings
+ 'reg_settings' => 'Roʻyxatdan oʻtish',
+ 'reg_enable' => 'Ro‘yxatdan o‘tishni yoqing',
+ 'reg_enable_toggle' => 'Ro‘yxatdan o‘tishni yoqish',
+ 'reg_enable_desc' => 'Ro\'yxatdan o\'tish yoqilganda, foydalanuvchi o\'zini dastur foydalanuvchisi sifatida ro\'yxatdan o\'tkazishi mumkin bo\'ladi. Roʻyxatdan oʻtgandan soʻng ularga yagona, standart foydalanuvchi roli beriladi.',
+ 'reg_default_role' => 'Ro\'yxatdan o\'tgandan keyin standart foydalanuvchi roli',
+ 'reg_enable_external_warning' => 'Tashqi LDAP yoki SAML autentifikatsiyasi faol bo\'lganda yuqoridagi parametr e\'tiborga olinmaydi. Mavjud bo\'lmagan a\'zolar uchun foydalanuvchi hisoblari, agar foydalanilayotgan tashqi tizimga qarshi autentifikatsiya muvaffaqiyatli bo\'lsa, avtomatik yaratiladi.',
+ 'reg_email_confirmation' => 'Elektron pochtani tasdiqlash',
+ 'reg_email_confirmation_toggle' => 'Elektron pochta orqali tasdiqlashni talab qiling',
+ 'reg_confirm_email_desc' => 'Agar domen cheklovi ishlatilsa, elektron pochta orqali tasdiqlash talab qilinadi va bu parametr e\'tiborga olinmaydi.',
+ 'reg_confirm_restrict_domain' => 'Domenni cheklash',
+ 'reg_confirm_restrict_domain_desc' => 'Roʻyxatdan oʻtishni cheklamoqchi boʻlgan elektron pochta domenlarining vergul bilan ajratilgan roʻyxatini kiriting. Ilova bilan ishlashga ruxsat berishdan oldin foydalanuvchilarga manzillarini tasdiqlash uchun elektron pochta xabari yuboriladi. E\'tibor bering, foydalanuvchilar muvaffaqiyatli ro\'yxatdan o\'tgandan so\'ng elektron pochta manzillarini o\'zgartirishi mumkin.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Cheklov oʻrnatilmagan',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Select the default sort rule to apply to new books. This won\'t affect existing books, and can be overridden per-book.',
+ 'sorting_rules' => 'Sort Rules',
+ 'sorting_rules_desc' => 'These are predefined sorting operations which can be applied to content in the system.',
+ 'sort_rule_assigned_to_x_books' => 'Assigned to :count Book|Assigned to :count Books',
+ 'sort_rule_create' => 'Create Sort Rule',
+ 'sort_rule_edit' => 'Edit Sort Rule',
+ 'sort_rule_delete' => 'Delete Sort Rule',
+ 'sort_rule_delete_desc' => 'Remove this sort rule from the system. Books using this sort will revert to manual sorting.',
+ 'sort_rule_delete_warn_books' => 'This sort rule is currently used on :count book(s). Are you sure you want to delete this?',
+ 'sort_rule_delete_warn_default' => 'This sort rule is currently used as the default for books. Are you sure you want to delete this?',
+ 'sort_rule_details' => 'Sort Rule Details',
+ 'sort_rule_details_desc' => 'Set a name for this sort rule, which will appear in lists when users are selecting a sort.',
+ 'sort_rule_operations' => 'Sort Operations',
+ 'sort_rule_operations_desc' => 'Configure the sort actions to be performed by moving them from the list of available operations. Upon use, the operations will be applied in order, from top to bottom. Any changes made here will be applied to all assigned books upon save.',
+ 'sort_rule_available_operations' => 'Available Operations',
+ 'sort_rule_available_operations_empty' => 'No operations remaining',
+ 'sort_rule_configured_operations' => 'Configured Operations',
+ 'sort_rule_configured_operations_empty' => 'Drag/add operations from the "Available Operations" list',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => 'Name - Alphabetical',
+ 'sort_rule_op_name_numeric' => 'Name - Numeric',
+ 'sort_rule_op_created_date' => 'Created Date',
+ 'sort_rule_op_updated_date' => 'Updated Date',
+ 'sort_rule_op_chapters_first' => 'Chapters First',
+ 'sort_rule_op_chapters_last' => 'Chapters Last',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Xizmat',
+ 'maint_image_cleanup' => 'Tasvirlarni tozalash',
+ 'maint_image_cleanup_desc' => 'Qaysi rasm va chizmalardan foydalanilayotganini va qaysi rasmlar ortiqcha ekanligini tekshirish uchun sahifa va tahrir tarkibini skanerlaydi. Buni ishga tushirishdan oldin to\'liq ma\'lumotlar bazasi va rasmning zaxira nusxasini yaratganingizga ishonch hosil qiling.',
+ 'maint_delete_images_only_in_revisions' => 'Faqat eski sahifa tahrirlarida mavjud bo\'lgan rasmlarni ham o\'chiring',
+ 'maint_image_cleanup_run' => 'Tozalashni ishga tushiring',
+ 'maint_image_cleanup_warning' => ':potentsial foydalanilmagan rasmlar soni topildi. Haqiqatan ham bu rasmlarni oʻchirib tashlamoqchimisiz?',
+ 'maint_image_cleanup_success' => ':topilgan va oʻchirilgan potentsial foydalanilmagan rasmlarni hisoblang!',
+ 'maint_image_cleanup_nothing_found' => 'Foydalanilmayotgan rasmlar topilmadi, hech narsa o\'chirilmadi!',
+ 'maint_send_test_email' => 'Test elektron pochta xabarini yuboring',
+ 'maint_send_test_email_desc' => 'Bu sizning profilingizda ko\'rsatilgan elektron pochta manzilingizga test elektron pochta xabarini yuboradi.',
+ 'maint_send_test_email_run' => 'Test elektron pochta xabarini yuboring',
+ 'maint_send_test_email_success' => 'Elektron pochta manzili: manzilga yuborildi',
+ 'maint_send_test_email_mail_subject' => 'Test elektron pochta',
+ 'maint_send_test_email_mail_greeting' => 'Elektron pochta orqali yetkazib berish ishlayotganga o‘xshaydi!',
+ 'maint_send_test_email_mail_text' => 'Tabriklaymiz! Ushbu e-pochta xabarnomasini olganingizdan so\'ng, sizning elektron pochta sozlamalaringiz to\'g\'ri sozlanganga o\'xshaydi.',
+ 'maint_recycle_bin_desc' => 'O\'chirilgan javonlar, kitoblar, boblar va sahifalar qayta tiklanishi yoki butunlay o\'chirilishi uchun axlat qutisiga yuboriladi. Chiqindi qutisidagi eski narsalar tizim konfiguratsiyasiga qarab bir muncha vaqt o\'tgach avtomatik ravishda olib tashlanishi mumkin.',
+ 'maint_recycle_bin_open' => 'Chiqindi qutisini oching',
+ 'maint_regen_references' => 'Ma\'lumotnomalarni qayta tiklash',
+ 'maint_regen_references_desc' => 'Ushbu harakat ma\'lumotlar bazasida o\'zaro mos yozuvlar indeksini qayta quradi. Bu odatda avtomatik tarzda amalga oshiriladi, ammo bu amal eski tarkibni yoki norasmiy usullar orqali qo\'shilgan tarkibni indekslash uchun foydali bo\'lishi mumkin.',
+ 'maint_regen_references_success' => 'Malumot indeksi qayta tiklandi!',
+ 'maint_timeout_command_note' => 'Eslatma: Ushbu amalni bajarish uchun vaqt kerak bo\'lishi mumkin, bu esa ba\'zi veb-muhitlarda vaqt tugashiga olib kelishi mumkin. Shu bilan bir qatorda, bu harakat terminal buyrug\'i yordamida amalga oshiriladi.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Chiqindi qutisi',
+ 'recycle_bin_desc' => 'Bu erda siz o\'chirilgan narsalarni qayta tiklashingiz yoki ularni tizimdan butunlay olib tashlashni tanlashingiz mumkin. Ruxsat filtrlari qo\'llaniladigan tizimdagi o\'xshash harakatlar ro\'yxatidan farqli o\'laroq, bu ro\'yxat filtrlanmagan.',
+ 'recycle_bin_deleted_item' => 'O\'chirilgan element',
+ 'recycle_bin_deleted_parent' => 'Ota-ona',
+ 'recycle_bin_deleted_by' => 'tomonidan oʻchirilgan',
+ 'recycle_bin_deleted_at' => 'O\'chirish vaqti',
+ 'recycle_bin_permanently_delete' => 'Doimiy o\'chirish',
+ 'recycle_bin_restore' => 'Qayta tiklash',
+ 'recycle_bin_contents_empty' => 'Qayta ishlash qutisi hozir bo\'sh',
+ 'recycle_bin_empty' => 'Chiqindi qutisini bo\'shatish',
+ 'recycle_bin_empty_confirm' => 'Bu axlat qutisidagi barcha narsalarni, shu jumladan har bir element ichidagi kontentni butunlay yo\'q qiladi. Chiqindi qutisini bo\'shatishga ishonchingiz komilmi?',
+ 'recycle_bin_destroy_confirm' => 'This action will permanently delete this item from the system, along with any child elements listed below, and you will not be able to restore this content. Are you sure you want to permanently delete this item?',
+ 'recycle_bin_destroy_list' => 'Yo\'q qilinishi kerak bo\'lgan narsalar',
+ 'recycle_bin_restore_list' => 'Qayta tiklanadigan narsalar',
+ 'recycle_bin_restore_confirm' => 'Bu amal oʻchirilgan elementni, shu jumladan har qanday yordamchi elementlarni asl joyiga tiklaydi. Agar asl joy o\'chirilgan bo\'lsa va hozir axlat qutisida bo\'lsa, asosiy element ham tiklanishi kerak bo\'ladi.',
+ 'recycle_bin_restore_deleted_parent' => 'Bu elementning ota-onasi ham oʻchirib tashlangan. Ular ota-ona ham tiklanmaguncha oʻchirib tashlanadi.',
+ 'recycle_bin_restore_parent' => 'Ota-onani tiklash',
+ 'recycle_bin_destroy_notification' => 'Oʻchirildi: axlat qutisidan jami elementlarni sanash.',
+ 'recycle_bin_restore_notification' => 'Qayta tiklandi: axlat qutisidagi jami narsalarni sanash.',
+
+ // Audit Log
+ 'audit' => 'Audit jurnali',
+ 'audit_desc' => 'Ushbu audit jurnali tizimda kuzatilgan harakatlar ro\'yxatini ko\'rsatadi. Ruxsat filtrlari qo\'llaniladigan tizimdagi o\'xshash harakatlar ro\'yxatidan farqli o\'laroq, bu ro\'yxat filtrlanmagan.',
+ 'audit_event_filter' => 'Voqea filtri',
+ 'audit_event_filter_no_filter' => 'Filtr yo\'q',
+ 'audit_deleted_item' => 'O\'chirilgan element',
+ 'audit_deleted_item_name' => 'Ism: :ism',
+ 'audit_table_user' => 'Foydalanuvchi',
+ 'audit_table_event' => 'Tadbir',
+ 'audit_table_related' => 'Tegishli element yoki tafsilotlar',
+ 'audit_table_ip' => 'IP manzili',
+ 'audit_table_date' => 'Faoliyat sanasi',
+ 'audit_date_from' => 'Sana diapazoni boshlab',
+ 'audit_date_to' => 'Sana oraligʻi',
+
+ // Role Settings
+ 'roles' => 'Rollar',
+ 'role_user_roles' => 'Foydalanuvchi rollari',
+ 'roles_index_desc' => 'Rollar foydalanuvchilarni guruhlash va ularning a\'zolariga tizim ruxsatini berish uchun ishlatiladi. Agar foydalanuvchi bir nechta rollarning a\'zosi bo\'lsa, berilgan imtiyozlar to\'planadi va foydalanuvchi barcha qobiliyatlarni meros qilib oladi.',
+ 'roles_x_users_assigned' => ': tayinlangan foydalanuvchini hisoblash|: tayinlangan foydalanuvchilarni hisoblash',
+ 'roles_x_permissions_provided' => ':count ruxsati|:ruxsat soni',
+ 'roles_assigned_users' => 'Belgilangan foydalanuvchilar',
+ 'roles_permissions_provided' => 'Taqdim etilgan ruxsatnomalar',
+ 'role_create' => 'Yangi rol yaratish',
+ 'role_delete' => 'Rolni o\'chirish',
+ 'role_delete_confirm' => 'Bu \':roleName\' nomli rolni o\'chirib tashlaydi.',
+ 'role_delete_users_assigned' => 'Bu rolga :userCount foydalanuvchilari tayinlangan. Agar siz ushbu roldan foydalanuvchilarni koʻchirmoqchi boʻlsangiz, quyida yangi rolni tanlang.',
+ 'role_delete_no_migration' => "Don\\'t migrate users",
+ 'role_delete_sure' => 'Haqiqatan ham bu rolni oʻchirib tashlamoqchimisiz?',
+ 'role_edit' => 'Rolni tahrirlash',
+ 'role_details' => 'Rol tafsilotlari',
+ 'role_name' => 'Rol nomi',
+ 'role_desc' => 'Rolning qisqacha tavsifi',
+ 'role_mfa_enforced' => 'Ko\'p faktorli autentifikatsiyani talab qiladi',
+ 'role_external_auth_id' => 'Tashqi autentifikatsiya identifikatorlari',
+ 'role_system' => 'Tizim ruxsatnomalari',
+ 'role_manage_users' => 'Foydalanuvchilarni boshqarish',
+ 'role_manage_roles' => 'Rol va rol ruxsatnomalarini boshqaring',
+ 'role_manage_entity_permissions' => 'Barcha kitob, bob va sahifa ruxsatlarini boshqaring',
+ 'role_manage_own_entity_permissions' => 'Shaxsiy kitob, bob va sahifalar uchun ruxsatlarni boshqaring',
+ 'role_manage_page_templates' => 'Sahifa shablonlarini boshqarish',
+ 'role_access_api' => 'Kirish tizimi API',
+ 'role_manage_settings' => 'Ilova sozlamalarini boshqaring',
+ 'role_export_content' => 'Kontentni eksport qilish',
+ 'role_import_content' => 'Import content',
+ 'role_editor_change' => 'Sahifa muharririni o\'zgartirish',
+ 'role_notifications' => 'Bildirishnomalarni qabul qilish va boshqarish',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Obyektga ruxsatlar',
+ 'roles_system_warning' => 'Shuni yodda tutingki, yuqoridagi uchta ruxsatdan birortasiga kirish foydalanuvchiga o\'z imtiyozlarini yoki tizimdagi boshqalarning imtiyozlarini o\'zgartirishi mumkin. Ishonchli foydalanuvchilarga faqat ushbu ruxsatlarga ega rollarni tayinlang.',
+ 'role_asset_desc' => 'Bu ruxsatlar tizim ichidagi aktivlarga standart kirishni nazorat qiladi. Kitoblar, boblar va sahifalardagi ruxsatlar bu ruxsatlarni bekor qiladi.',
+ 'role_asset_admins' => 'Administratorlarga avtomatik ravishda barcha kontentga kirish huquqi beriladi, lekin bu parametrlar UI parametrlarini koʻrsatishi yoki yashirishi mumkin.',
+ 'role_asset_image_view_note' => 'Bu tasvir menejeridagi ko\'rinishga tegishli. Yuklangan rasm fayllariga haqiqiy kirish tizim tasvirini saqlash opsiyasiga bog\'liq bo\'ladi.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Hammasi',
+ 'role_own' => 'Shaxsiy',
+ 'role_controlled_by_asset' => 'Ular yuklangan obyekt tomonidan nazorat qilinadi',
+ 'role_save' => 'Rolni saqlash',
+ 'role_users' => 'Ushbu roldagi foydalanuvchilar',
+ 'role_users_none' => 'Hozirda bu rolga hech qanday foydalanuvchi tayinlanmagan',
+
+ // Users
+ 'users' => 'Foydalanuvchilar',
+ 'users_index_desc' => 'Tizimda individual foydalanuvchi hisoblarini yarating va boshqaring. Foydalanuvchi hisoblari tizimga kirish va kontent va faoliyat atributi uchun ishlatiladi. Kirish ruxsatlari asosan rolga asoslangan, lekin foydalanuvchi kontentiga egalik, boshqa omillar qatori, ruxsat va kirishga ham ta\'sir qilishi mumkin.',
+ 'user_profile' => 'Foydalanuvchi profili',
+ 'users_add_new' => 'Yangi foydalanuvchi qo\'shish',
+ 'users_search' => 'Foydalanuvchilarni qidirish',
+ 'users_latest_activity' => 'Oxirgi faoliyat',
+ 'users_details' => 'Foydalanuvchi tafsilotlari',
+ 'users_details_desc' => 'Ushbu foydalanuvchi uchun ko\'rsatiladigan nom va elektron pochta manzilini o\'rnating. Elektron pochta manzili ilovaga kirish uchun ishlatiladi.',
+ 'users_details_desc_no_email' => 'Bu foydalanuvchini boshqalar tanib olishi uchun ko‘rsatiladigan nomni o‘rnating.',
+ 'users_role' => 'Foydalanuvchi rollari',
+ 'users_role_desc' => 'Ushbu foydalanuvchi qaysi rollarga tayinlanishini tanlang. Agar foydalanuvchi bir nechta rollarga tayinlangan bo\'lsa, bu rollarning ruxsatlari yig\'iladi va ular tayinlangan rollarning barcha qobiliyatlarini oladi.',
+ 'users_password' => 'Foydalanuvchi paroli',
+ 'users_password_desc' => 'Ilovaga kirish uchun ishlatiladigan parolni o\'rnating. Bu kamida 8 ta belgidan iborat boʻlishi kerak.',
+ 'users_send_invite_text' => 'Siz ushbu foydalanuvchiga oʻz parolini oʻrnatishga imkon beruvchi taklif e-pochtasini yuborishni tanlashingiz mumkin, aks holda uning parolini oʻzingiz belgilashingiz mumkin.',
+ 'users_send_invite_option' => 'Foydalanuvchi taklifnomasini elektron pochta orqali yuboring',
+ 'users_external_auth_id' => 'Tashqi autentifikatsiya identifikatori',
+ 'users_external_auth_id_desc' => 'When an external authentication system is in use (such as SAML2, OIDC or LDAP) this is the ID which links this BookStack user to the authentication system account. You can ignore this field if using the default email-based authentication.',
+ 'users_password_warning' => 'Only fill the below if you would like to change the password for this user.',
+ 'users_system_public' => 'Bu foydalanuvchi sizning misolingizga tashrif buyurgan har qanday mehmon foydalanuvchilarini ifodalaydi. U tizimga kirish uchun ishlatilmaydi, lekin avtomatik ravishda tayinlanadi.',
+ 'users_delete' => 'Foydalanuvchini oʻchirish',
+ 'users_delete_named' => 'Foydalanuvchini o\'chirish :userName',
+ 'users_delete_warning' => 'Bu \':userName\' nomli foydalanuvchini tizimdan butunlay o\'chirib tashlaydi.',
+ 'users_delete_confirm' => 'Bu foydalanuvchini oʻchirib tashlamoqchimisiz?',
+ 'users_migrate_ownership' => 'Egalikni ko‘chirish',
+ 'users_migrate_ownership_desc' => 'Agar boshqa foydalanuvchi ushbu foydalanuvchiga tegishli barcha elementlarning egasi boʻlishini istasangiz, bu yerda foydalanuvchini tanlang.',
+ 'users_none_selected' => 'Hech qanday foydalanuvchi tanlanmagan',
+ 'users_edit' => 'Foydalanuvchini tahrirlash',
+ 'users_edit_profile' => 'Profilni tahrirlash',
+ 'users_avatar' => 'Foydalanuvchi avatar',
+ 'users_avatar_desc' => 'Ushbu foydalanuvchini ifodalash uchun rasmni tanlang. Bu taxminan 256px kvadrat bo\'lishi kerak.',
+ 'users_preferred_language' => 'Afzal til',
+ 'users_preferred_language_desc' => 'Ushbu parametr ilovaning foydalanuvchi interfeysi uchun ishlatiladigan tilni o\'zgartiradi. Bu foydalanuvchi tomonidan yaratilgan kontentga ta\'sir qilmaydi.',
+ 'users_social_accounts' => 'Ijtimoiy hisoblar',
+ 'users_social_accounts_desc' => 'View the status of the connected social accounts for this user. Social accounts can be used in addition to the primary authentication system for system access.',
+ 'users_social_accounts_info' => 'Bu yerda siz tezroq va osonroq kirish uchun boshqa hisoblaringizni ulashingiz mumkin. Bu yerda hisobni uzish avval ruxsat berilgan ruxsatni bekor qilmaydi. Ulangan ijtimoiy hisob qaydnomangizdagi profil sozlamalaringizdan kirishni bekor qiling.',
+ 'users_social_connect' => 'Hisobni ulash',
+ 'users_social_disconnect' => 'Hisobni o\'chirish',
+ 'users_social_status_connected' => 'Connected',
+ 'users_social_status_disconnected' => 'Disconnected',
+ 'users_social_connected' => ':socialAccount hisobi profilingizga muvaffaqiyatli biriktirildi.',
+ 'users_social_disconnected' => ':socialAccount hisobi profilingizdan muvaffaqiyatli uzildi.',
+ 'users_api_tokens' => 'API tokenlari',
+ 'users_api_tokens_desc' => 'Create and manage the access tokens used to authenticate with the BookStack REST API. Permissions for the API are managed via the user that the token belongs to.',
+ 'users_api_tokens_none' => 'Bu foydalanuvchi uchun API tokenlari yaratilmagan',
+ 'users_api_tokens_create' => 'Token yaratish',
+ 'users_api_tokens_expires' => 'Muddati tugaydi',
+ 'users_api_tokens_docs' => 'API hujjatlari',
+ 'users_mfa' => 'Ko\'p faktorli autentifikatsiya',
+ 'users_mfa_desc' => 'Ko\'p faktorli autentifikatsiyani foydalanuvchi hisobingiz uchun qo\'shimcha xavfsizlik qatlami sifatida o\'rnating.',
+ 'users_mfa_x_methods' => ':count usuli tuzilgan|:count usullari sozlangan',
+ 'users_mfa_configure' => 'Usullarni sozlash',
+
+ // API Tokens
+ 'user_api_token_create' => 'API tokenini yarating',
+ 'user_api_token_name' => 'Ism',
+ 'user_api_token_name_desc' => 'Belgilangan maqsadni kelajakda eslatish uchun o\'qilishi mumkin bo\'lgan nom bering.',
+ 'user_api_token_expiry' => 'Quyidagi sanagacha foydalanilsin',
+ 'user_api_token_expiry_desc' => 'Ushbu tokenning amal qilish muddati tugash sanasini belgilang. Bu sanadan keyin ushbu token yordamida qilingan soʻrovlar ishlamaydi. Bu maydonni boʻsh qoldirish kelajakda 100 yil oʻtib muddatini belgilaydi.',
+ 'user_api_token_create_secret_message' => 'Ushbu token yaratilgandan so\'ng darhol "Token ID" va "Token Secret" yaratiladi va ko\'rsatiladi. Sir faqat bir marta ko\'rsatiladi, shuning uchun davom etishdan oldin qiymatni xavfsiz va xavfsiz joyga nusxalashni unutmang.',
+ 'user_api_token' => 'API tokeni',
+ 'user_api_token_id' => 'Token ID',
+ 'user_api_token_id_desc' => 'Bu token uchun tahrir qilib boʻlmaydigan tizim tomonidan yaratilgan identifikator boʻlib, API soʻrovlarida taqdim etilishi kerak.',
+ 'user_api_token_secret' => 'Token siri',
+ 'user_api_token_secret_desc' => 'Bu API so\'rovlarida taqdim etilishi kerak bo\'lgan ushbu token uchun yaratilgan tizim siridir. Bu faqat bir marta ko\'rsatiladi, shuning uchun bu qiymatni xavfsiz va xavfsiz joyga nusxalang.',
+ 'user_api_token_created' => 'Token yaratilgan: timeAgo',
+ 'user_api_token_updated' => 'Token yangilandi: timeAgo',
+ 'user_api_token_delete' => 'Tokenni oʻchirish',
+ 'user_api_token_delete_warning' => 'Bu \':tokenName\' nomli ushbu API tokenini tizimdan butunlay oʻchirib tashlaydi.',
+ 'user_api_token_delete_confirm' => 'Haqiqatan ham ushbu API tokenini oʻchirib tashlamoqchimisiz?',
+
+ // Webhooks
+ 'webhooks' => 'Webhuklar',
+ 'webhooks_index_desc' => 'Veb-huklar tizim ichida ma\'lum harakatlar va hodisalar sodir bo\'lganda tashqi URL manzillariga ma\'lumotlarni yuborish usuli bo\'lib, xabar almashish yoki bildirishnoma tizimlari kabi tashqi platformalar bilan voqealarga asoslangan integratsiyani ta\'minlaydi.',
+ 'webhooks_x_trigger_events' => ':count trigger hodisasi|: count trigger voqealari',
+ 'webhooks_create' => 'Yangi Webhook yaratish',
+ 'webhooks_none_created' => 'Hali hech qanday vebhuk yaratilmagan.',
+ 'webhooks_edit' => 'Webhook-ni tahrirlash',
+ 'webhooks_save' => 'Webhook-ni saqlang',
+ 'webhooks_details' => 'Webhook tafsilotlari',
+ 'webhooks_details_desc' => 'Webhook ma\'lumotlari yuboriladigan joy sifatida foydalanuvchiga qulay nom va POST so\'nggi nuqtasini taqdim eting.',
+ 'webhooks_events' => 'Webhook voqealari',
+ 'webhooks_events_desc' => 'Ushbu veb-hukni chaqirishi kerak bo\'lgan barcha hodisalarni tanlang.',
+ 'webhooks_events_warning' => 'Shuni esda tutingki, bu hodisalar, hatto maxsus ruxsatlar qo\'llanilsa ham, tanlangan barcha hodisalar uchun ishga tushadi. Ushbu vebhukdan foydalanish maxfiy kontentni oshkor qilmasligiga ishonch hosil qiling.',
+ 'webhooks_events_all' => 'Barcha tizim hodisalari',
+ 'webhooks_name' => 'Webhook nomi',
+ 'webhooks_timeout' => 'Webhook so\'rovining kutish vaqti (soniyalar)',
+ 'webhooks_endpoint' => 'Webhook oxirgi nuqtasi',
+ 'webhooks_active' => 'Webhook faol',
+ 'webhook_events_table_header' => 'Voqealar',
+ 'webhooks_delete' => 'Webhook-ni o\'chirish',
+ 'webhooks_delete_warning' => 'Bu \':webhookName\' nomli ushbu vebhukni tizimdan butunlay o\'chirib tashlaydi.',
+ 'webhooks_delete_confirm' => 'Haqiqatan ham bu vebhukni oʻchirib tashlamoqchimisiz?',
+ 'webhooks_format_example' => 'Webhook formatiga misol',
+ 'webhooks_format_example_desc' => 'Webhook maʼlumotlari POST soʻrovi sifatida sozlangan soʻnggi nuqtaga quyidagi formatga muvofiq JSON sifatida yuboriladi. "Related_item" va "url" xususiyatlari ixtiyoriy va ishga tushirilgan hodisa turiga bog\'liq bo\'ladi.',
+ 'webhooks_status' => 'Webhook holati',
+ 'webhooks_last_called' => 'Oxirgi qo\'ng\'iroq:',
+ 'webhooks_last_errored' => 'Oxirgi xato:',
+ 'webhooks_last_error_message' => 'Oxirgi xato xabari:',
+
+ // Licensing
+ 'licenses' => 'Licenses',
+ 'licenses_desc' => 'This page details license information for BookStack in addition to the projects & libraries that are used within BookStack. Many projects listed may only be used in a development context.',
+ 'licenses_bookstack' => 'BookStack License',
+ 'licenses_php' => 'PHP Library Licenses',
+ 'licenses_js' => 'JavaScript Library Licenses',
+ 'licenses_other' => 'Other Licenses',
+ 'license_details' => 'License Details',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Dansk',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/uz/validation.php b/lang/uz/validation.php
new file mode 100644
index 00000000000..a8c12b1b8b1
--- /dev/null
+++ b/lang/uz/validation.php
@@ -0,0 +1,123 @@
+ ':attribute qabul qilinishi kerak.',
+ 'active_url' => ':attribute qiymati to‘g‘ri URL emas.',
+ 'after' => ':attribute qiymati :date sanadan kegingi sana bo‘lishi kerak.',
+ 'alpha' => ':attribute qiymati faqat harflardan iborat bo‘lishi kerak.',
+ 'alpha_dash' => ':attribute qiymati faqat harflar, raqamlar chiziqcha va ostki chiziqdan iborat bo‘lishi kerak.',
+ 'alpha_num' => ':attribute qiymati faqat harflar va raqamlardan iborat bo‘lishi kerak.',
+ 'array' => ':attribute qiymati massiv bo‘lishi kerak.',
+ 'backup_codes' => 'Kiritilgan kod to‘g‘ri emas yoki ishlatib bo‘lingan.',
+ 'before' => ':attribute qiymati :date sanadan oldingi sana bo‘lishi kerak.',
+ 'between' => [
+ 'numeric' => ':attribute qiymati :min va :max orasida bo‘lishi kerak.',
+ 'file' => ':attribute hajmi :min va :max kilobayt orasida bo‘lishi kerak.',
+ 'string' => ':attribute uzunligi soni :min va :max orasida bo‘lishi kerak.',
+ 'array' => ':attribute soni :min va :max orasida bo‘lishi kerak.',
+ ],
+ 'boolean' => ':attribute qiymati faqat «true» yoki «false» bo`lishi kerak.',
+ 'confirmed' => ':attribute tasdiqlash qiymati mos emas.',
+ 'date' => ':attribute qiymati sana emas.',
+ 'date_format' => ':attribute qiymati :format formatdagi sana emas.',
+ 'different' => ':attribute va :other qiymatlari har xil bo‘lishi kerak.',
+ 'digits' => ':attribute qiymati :digits raqamlarda iborat bo‘lishi kerak.',
+ 'digits_between' => ':attribute qiymati :min va :max orasidagi raqamlarda iborat bo‘lishi kerak.',
+ 'email' => ':attribute qiymati email bo‘lishi kerak.',
+ 'ends_with' => ':attribute qiymati quyidagilarda biri bo‘lishi kerak: :values ',
+ 'file' => ':attribute fayl bo‘lishi kerak.',
+ 'filled' => ':attribute qiymatini kiritish majburiy.',
+ 'gt' => [
+ 'numeric' => ':attribute qiymati :value\'dan katta bo‘lishi kerak.',
+ 'file' => ':attribute hajmi :value kilobaytdan katta bo‘lishi kerak.',
+ 'string' => ':attribute uzunligi :value\'dan katta bo‘lishi kerak.',
+ 'array' => ':attribute soni :value\'dan katta bo‘lishi kerak.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute qiymati :value\'dan katta yoki teng bo‘lishi kerak.',
+ 'file' => ':attribute hajmi :value kilobaytdan katta yoki teng bo‘lishi kerak.',
+ 'string' => ':attribute uzunligi :value\'dan katta yoki teng bo‘lishi kerak.',
+ 'array' => ':attribute soni :value\'dan katta yoki teng bo‘lishi kerak.',
+ ],
+ 'exists' => ':attribute\'ning tanlangan qiymati to‘g‘ri emas.',
+ 'image' => ':attribute rasm bo‘lishi kerak.',
+ 'image_extension' => ':attribute rasm bo‘lishi va to‘g‘ri formatda bo‘lishi kerak.',
+ 'in' => ':attribute qiymati noto‘g‘ri.',
+ 'integer' => ':attribute qiymati butun son bo‘lishi kerak.',
+ 'ip' => ':attribute qiymati IP manzil bo‘lishi kerak.',
+ 'ipv4' => ':attribute qiymati IPv4 manzil bo‘lishi kerak.',
+ 'ipv6' => ':attribute qiymati IPv6 manzil bo‘lishi kerak.',
+ 'json' => ':attribute qiymati JSON formatida bo‘lishi kerak.',
+ 'lt' => [
+ 'numeric' => ':attribute qiymati :value\'dan kichik bo‘lishi kerak.',
+ 'file' => ':attribute hajmi :value kilobaytdan kichik bo‘lishi kerak.',
+ 'string' => ':attribute uzunligi :value\'dan kichik bo‘lishi kerak.',
+ 'array' => ':attribute soni :value\'dan kichik bo‘lishi kerak.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute qiymati :value\'dan kichik yoki teng bo‘lishi kerak.',
+ 'file' => ':attribute hajmi :value kilobaytdan kichik yoki teng bo‘lishi kerak.',
+ 'string' => ':attribute uzunligi :value\'dan kichik yoki teng bo‘lishi kerak.',
+ 'array' => ':attribute soni :value\'dan kichik yoki teng bo‘lishi kerak.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute qiymati maksimum :value bo‘lishi kerak.',
+ 'file' => ':attribute hajmi maksimum :value kilobayt bo‘lishi kerak.',
+ 'string' => ':attribute uzunligi maksimum :value bo‘lishi kerak.',
+ 'array' => ':attribute soni maksimum :value bo‘lishi kerak.',
+ ],
+ 'mimes' => ':attribute fayl mime turi quyidagilardan biri bo‘lishi kerak: :values.',
+ 'min' => [
+ 'numeric' => ':attribute qiymati minimum :value bo‘lishi kerak.',
+ 'file' => ':attribute hajmi minimum :value kilobayt bo‘lishi kerak.',
+ 'string' => ':attribute uzunligi minimum :value bo‘lishi kerak.',
+ 'array' => ':attribute soni minimum :value bo‘lishi kerak.',
+ ],
+ 'not_in' => 'selected :attribute qiymati noto‘g‘ri.',
+ 'not_regex' => ':attribute formati noto‘g‘ri.',
+ 'numeric' => ':attribute qiymati raqam bo‘lishi kerak.',
+ 'regex' => ':attribute formati noto‘g‘ri.',
+ 'required' => ':attribute\'ni kiritish majburiy.',
+ 'required_if' => ':other qiymati :value bo‘lganda :attribute\'ni kiritish majburiy.',
+ 'required_with' => ':values kiritilgan holatlarda :attribute\'ni kiritish majburiy.',
+ 'required_with_all' => ':values kiritilgan holatlarda :attribute\'ni kiritish majburiy.',
+ 'required_without' => ':values kiritilmagan holatlarda :attribute\'ni kiritish majburiy.',
+ 'required_without_all' => ':values kiritilmagan holatlarda :attribute\'ni kiritish majburiy.',
+ 'same' => ':attribute va :other qiymatlari teng bo‘lishi shart.',
+ 'safe_url' => 'Kiritilgan manzil xavsiz emas.',
+ 'size' => [
+ 'numeric' => ':attribute qiymati :value bo‘lishi kerak.',
+ 'file' => ':attribute hajmi :value kilobayt bo‘lishi kerak.',
+ 'string' => ':attribute uzunligi :value bo‘lishi kerak.',
+ 'array' => ':attribute soni :value bo‘lishi kerak.',
+ ],
+ 'string' => ':attribute qiymati matn bo‘lishi kerak.',
+ 'timezone' => ':attribute qiymati to‘g‘ri vaqt zonasi bo‘lishi kerak.',
+ 'totp' => 'Kiritilgan xavsizlik kodi notpo‘g‘ri yoki eskirgan.',
+ 'unique' => ':attribute qiymati allaqachon mavjud.',
+ 'url' => ':attribute URL formatida emas.',
+ 'uploaded' => 'Faylni yuklashda xatolik. Server bunday hajmdagi faylllarni yuklamasligi mumkin.',
+
+ 'zip_file' => ':attribute ZIP ichidagi faylga havola qilishi kerak.',
+ 'zip_file_size' => ':attribute fayli :size MB dan oshmasligi kerak.',
+ 'zip_file_mime' => ':attribute :validTypes turidagi faylga havola qilishi kerak, lekin :foundType turida keldi.',
+ 'zip_model_expected' => 'Ma\'lumotlar obyekti kutilmoqda, ammo ":type" topildi.',
+ 'zip_unique' => ':attribute ZIP ichidagi obyekt turi uchun noyob bo\'lishi kerak.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Takroriy parolni to‘ldirish majburiy',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/vi/activities.php b/lang/vi/activities.php
new file mode 100644
index 00000000000..00ec6ce04d5
--- /dev/null
+++ b/lang/vi/activities.php
@@ -0,0 +1,140 @@
+ 'đã tạo trang',
+ 'page_create_notification' => 'Trang đã được tạo thành công',
+ 'page_update' => 'đã cập nhật trang',
+ 'page_update_notification' => 'Trang đã được cập nhật thành công',
+ 'page_delete' => 'đã xóa trang',
+ 'page_delete_notification' => 'Trang đã được xóa thành công',
+ 'page_restore' => 'đã khôi phục trang',
+ 'page_restore_notification' => 'Trang đã được khôi phục thành công',
+ 'page_move' => 'đã di chuyển trang',
+ 'page_move_notification' => 'Đã di chuyển trang thành công',
+
+ // Chapters
+ 'chapter_create' => 'đã tạo chương',
+ 'chapter_create_notification' => 'Chương đã được tạo thành công',
+ 'chapter_update' => 'đã cập nhật chương',
+ 'chapter_update_notification' => 'Chương đã được cập nhật thành công',
+ 'chapter_delete' => 'đã xóa chương',
+ 'chapter_delete_notification' => 'Chương đã được xóa thành công',
+ 'chapter_move' => 'đã di chuyển chương',
+ 'chapter_move_notification' => 'Đã chuyển chương thành công',
+
+ // Books
+ 'book_create' => 'đã tạo sách',
+ 'book_create_notification' => 'Sách đã được tạo thành công',
+ 'book_create_from_chapter' => 'chuyển chương thành sách',
+ 'book_create_from_chapter_notification' => 'Chuyển chương thành sách thành công',
+ 'book_update' => 'đã cập nhật sách',
+ 'book_update_notification' => 'Sách đã được cập nhật thành công',
+ 'book_delete' => 'đã xóa sách',
+ 'book_delete_notification' => 'Sách đã được xóa thành công',
+ 'book_sort' => 'đã sắp xếp sách',
+ 'book_sort_notification' => 'Sách đã được sắp xếp lại thành công',
+
+ // Bookshelves
+ 'bookshelf_create' => 'đã tạo giá sách',
+ 'bookshelf_create_notification' => 'Giá sách đã được tạo thành công',
+ 'bookshelf_create_from_book' => 'chuyển sách thành giá sách',
+ 'bookshelf_create_from_book_notification' => 'Chuyển sách thành giá sách thành công',
+ 'bookshelf_update' => 'cập nhật giá sách',
+ 'bookshelf_update_notification' => 'Giá sách được cập nhật thành công',
+ 'bookshelf_delete' => 'xoá giá sách',
+ 'bookshelf_delete_notification' => 'Xoá giá sách thành công',
+
+ // Revisions
+ 'revision_restore' => 'đã khôi phục sửa đổi',
+ 'revision_delete' => 'đã xóa bản sửa đổi',
+ 'revision_delete_notification' => 'Bản sửa đổi đã được xóa thành công',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" đã được thêm vào danh sách yêu thích của bạn',
+ 'favourite_remove_notification' => '":name" đã được gỡ khỏi danh sách yêu thích của bạn',
+
+ // Watching
+ 'watch_update_level_notification' => 'Đã cập nhật tùy chọn xem thành công',
+
+ // Auth
+ 'auth_login' => 'đăng nhập',
+ 'auth_register' => 'đã đăng ký như người dùng mới',
+ 'auth_password_reset_request' => 'yêu cầu người dùng đặt lại mật khẩu',
+ 'auth_password_reset_update' => 'đặt lại mật khẩu người dùng',
+ 'mfa_setup_method' => 'đã định cấu hình phương thức MFA',
+ 'mfa_setup_method_notification' => 'Cấu hình xác thực nhiều bước thành công',
+ 'mfa_remove_method' => 'loại bỏ phương thức MFA',
+ 'mfa_remove_method_notification' => 'Đã gỡ xác thực nhiều bước',
+
+ // Settings
+ 'settings_update' => 'cập nhật cài đặt',
+ 'settings_update_notification' => 'Cài đặt đã cập nhật thành công',
+ 'maintenance_action_run' => 'chạy hành động bảo trì',
+
+ // Webhooks
+ 'webhook_create' => 'đã tạo webhook',
+ 'webhook_create_notification' => 'Webhook đã được tạo thành công',
+ 'webhook_update' => 'đã cập nhật webhook',
+ 'webhook_update_notification' => 'Webhook đã được cập nhật thành công',
+ 'webhook_delete' => 'đã xóa webhook',
+ 'webhook_delete_notification' => 'Webhook đã được xóa thành công',
+
+ // Imports
+ 'import_create' => 'đã tạo nhập',
+ 'import_create_notification' => 'Tải lên nhập thành công',
+ 'import_run' => 'đã nhập cập nhật',
+ 'import_run_notification' => 'Nội dung đã được nhập thành công',
+ 'import_delete' => 'Đã xóa nhập',
+ 'import_delete_notification' => 'Nhập đã được xóa thành công',
+
+ // Users
+ 'user_create' => 'đã tạo người dùng',
+ 'user_create_notification' => 'Người dùng được tạo thành công',
+ 'user_update' => 'người dùng được cập nhật',
+ 'user_update_notification' => 'Người dùng được cập nhật thành công',
+ 'user_delete' => 'người dùng đã bị xóa',
+ 'user_delete_notification' => 'Người dùng đã được xóa thành công',
+
+ // API Tokens
+ 'api_token_create' => 'Đã tạo Token API ',
+ 'api_token_create_notification' => 'Token API đã tạo thành công',
+ 'api_token_update' => 'Đã cập nhật token API ',
+ 'api_token_update_notification' => 'Token API đã cập nhật thành công',
+ 'api_token_delete' => 'Đã xóa token API',
+ 'api_token_delete_notification' => 'Đã xóa token API thành công',
+
+ // Roles
+ 'role_create' => 'Đã tạo vai trò',
+ 'role_create_notification' => 'Vai trò mới đã được tạo thành công',
+ 'role_update' => 'Vai trò đã cập nhật',
+ 'role_update_notification' => 'Vai trò đã được cập nhật thành công',
+ 'role_delete' => 'đã xóa vai trò',
+ 'role_delete_notification' => 'Vai trò đã được xóa thành công',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => 'làm trống thùng rác',
+ 'recycle_bin_restore' => 'khôi phục từ thùng rác',
+ 'recycle_bin_destroy' => 'đã xóa khỏi thùng rác',
+
+ // Comments
+ 'commented_on' => 'đã bình luận về',
+ 'comment_create' => 'thêm bình luận',
+ 'comment_update' => 'cập nhật bình luận',
+ 'comment_delete' => 'đã xóa bình luận',
+
+ // Sort Rules
+ 'sort_rule_create' => '',
+ 'sort_rule_create_notification' => '',
+ 'sort_rule_update' => 'xóa quy tắc sắp xếp',
+ 'sort_rule_update_notification' => 'Đã cập nhật quy tắc sắp xếp thành công',
+ 'sort_rule_delete' => 'xóa quy tắc sắp xếp',
+ 'sort_rule_delete_notification' => 'Đã xóa quy tắc sắp xếp thành công',
+
+ // Other
+ 'permissions_update' => 'các quyền đã được cập nhật',
+];
diff --git a/lang/vi/auth.php b/lang/vi/auth.php
new file mode 100644
index 00000000000..d53d2cf4cb6
--- /dev/null
+++ b/lang/vi/auth.php
@@ -0,0 +1,117 @@
+ 'Thông tin đăng nhập này không khớp với dữ liệu của chúng tôi.',
+ 'throttle' => 'Quá nhiều lần đăng nhập sai. Vui lòng thử lại sau :seconds giây.',
+
+ // Login & Register
+ 'sign_up' => 'Đăng ký',
+ 'log_in' => 'Đăng nhập',
+ 'log_in_with' => 'Đăng nhập với :socialDriver',
+ 'sign_up_with' => 'Đăng kí với :socialDriver',
+ 'logout' => 'Đăng xuất',
+
+ 'name' => 'Tên',
+ 'username' => 'Tên đăng nhập',
+ 'email' => 'Email',
+ 'password' => 'Mật khẩu',
+ 'password_confirm' => 'Xác nhận mật khẩu',
+ 'password_hint' => 'Phải có ít nhất 8 ký tự',
+ 'forgot_password' => 'Quên Mật khẩu?',
+ 'remember_me' => 'Ghi nhớ đăng nhập',
+ 'ldap_email_hint' => 'Vui lòng điền một địa chỉ email để sử dụng tài khoản này.',
+ 'create_account' => 'Tạo Tài khoản',
+ 'already_have_account' => 'Bạn đã có tài khoản?',
+ 'dont_have_account' => 'Bạn không có tài khoản?',
+ 'social_login' => 'Đăng nhập bằng MXH',
+ 'social_registration' => 'Đăng kí bằng MXH',
+ 'social_registration_text' => 'Đăng kí và đăng nhập bằng dịch vụ khác.',
+
+ 'register_thanks' => 'Cảm ơn bạn đã đăng ký!',
+ 'register_confirm' => 'Vui lòng kiểm tra email và bấm vào nút xác nhận để truy cập :appName.',
+ 'registrations_disabled' => 'Việc đăng kí đang bị tắt',
+ 'registration_email_domain_invalid' => 'Tên miền của email không có quyền truy cập tới ứng dụng này',
+ 'register_success' => 'Cảm ơn bạn đã đăng kí! Bạn đã được xác nhận và đăng nhập.',
+
+ // Login auto-initiation
+ 'auto_init_starting' => 'Đang thử đăng nhập',
+ 'auto_init_starting_desc' => 'Chúng tôi đang liên lạc với hệ thống xác thực của bạn để bắt đầu quá trình đăng nhập. Nếu sau 5 giây không có tiến triển, bạn có thể thử nhấp vào liên kết dưới đây.',
+ 'auto_init_start_link' => 'Tiến hành xác thực',
+
+ // Password Reset
+ 'reset_password' => 'Đặt lại mật khẩu',
+ 'reset_password_send_instructions' => 'Nhập email vào ô dưới đây và bạn sẽ nhận được một email với liên kết để đặt lại mật khẩu.',
+ 'reset_password_send_button' => 'Gửi liên kết đặt lại mật khẩu',
+ 'reset_password_sent' => 'Một đường dẫn đặt lại mật khẩu sẽ được gửi tới :email nếu địa chỉ email đó tồn tại trong hệ thống.',
+ 'reset_password_success' => 'Mật khẩu đã được đặt lại thành công.',
+ 'email_reset_subject' => 'Đặt lại mật khẩu của :appName',
+ 'email_reset_text' => 'Bạn nhận được email này bởi vì chúng tôi nhận được một yêu cầu đặt lại mật khẩu cho tài khoản của bạn.',
+ 'email_reset_not_requested' => 'Nếu bạn không yêu cầu đặt lại mật khẩu, không cần có bất cứ hành động nào khác.',
+
+ // Email Confirmation
+ 'email_confirm_subject' => 'Xác nhận email trên :appName',
+ 'email_confirm_greeting' => 'Cảm ơn bạn đã tham gia :appName!',
+ 'email_confirm_text' => 'Xin hãy xác nhận địa chỉa email bằng cách bấm vào nút dưới đây:',
+ 'email_confirm_action' => 'Xác nhận Email',
+ 'email_confirm_send_error' => 'Email xác nhận cần gửi nhưng hệ thống đã không thể gửi được email. Liên hệ với quản trị viên để chắc chắn email được thiết lập đúng.',
+ 'email_confirm_success' => 'Email của bạn đã được xác nhận! Bạn có thể đăng nhập với email này ngay bây giờ.',
+ 'email_confirm_resent' => 'Email xác nhận đã được gửi lại, Vui lòng kiểm tra hộp thư.',
+ 'email_confirm_thanks' => 'Cảm ơn bạn đã xác nhận!',
+ 'email_confirm_thanks_desc' => 'Vui lòng chờ trong giây lát khi yêu cầu xác nhận của bạn được xử lý. Nếu sau 3 giây bạn không được chuyển hướng, nhấp vào liên kết "Tiếp tục" dưới đây để tiếp tục.',
+
+ 'email_not_confirmed' => 'Địa chỉ email chưa được xác nhận',
+ 'email_not_confirmed_text' => 'Địa chỉ email của bạn hiện vẫn chưa được xác nhận.',
+ 'email_not_confirmed_click_link' => 'Vui lòng bấm vào liên kết trong email được gửi trong thời gian ngắn ngay sau khi bạn đăng kí.',
+ 'email_not_confirmed_resend' => 'Nếu bạn không tìm thấy e-mail bạn có thể yêu cầu gửi lại e-mail xác nhận bằng cách gửi mẫu dưới đây.',
+ 'email_not_confirmed_resend_button' => 'Gửi lại e-mail xác nhận',
+
+ // User Invite
+ 'user_invite_email_subject' => 'Bạn được mời tham gia :appName!',
+ 'user_invite_email_greeting' => 'Một tài khoản đã được tạo dành cho bạn trên :appName.',
+ 'user_invite_email_text' => 'Bấm vào nút dưới đây để đặt lại mật khẩu tài khoản và lấy quyền truy cập:',
+ 'user_invite_email_action' => 'Đặt mật khẩu tài khoản',
+ 'user_invite_page_welcome' => 'Chào mừng đến với :appName!',
+ 'user_invite_page_text' => 'Để hoàn tất tài khoản và lấy quyền truy cập bạn cần đặt mật khẩu để sử dụng cho các lần đăng nhập sắp tới tại :appName.',
+ 'user_invite_page_confirm_button' => 'Xác nhận Mật khẩu',
+ 'user_invite_success_login' => 'Đã đặt mật khẩu, bạn có thể đăng nhập với mật khẩu trên để truy cập :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => 'Cài đặt xác thực nhiều bước',
+ 'mfa_setup_desc' => 'Cài đặt xác thực nhiều bước như một lớp bảo mật khác cho tài khoản của bạn.',
+ 'mfa_setup_configured' => 'Đã cài đặt',
+ 'mfa_setup_reconfigure' => 'Cài đặt lại',
+ 'mfa_setup_remove_confirmation' => 'Bạn có chắc muốn gỡ bỏ phương thức xác thực nhiều bước này?',
+ 'mfa_setup_action' => 'Cài đặt',
+ 'mfa_backup_codes_usage_limit_warning' => 'Bạn có ít hơn 5 mã dự phòng, Xin vui lòng tạo và lưu trữ bộ mã mới trước khi bạn dùng hết mã để tránh việc bị khóa quyền truy cập tài khoản.',
+ 'mfa_option_totp_title' => 'Ứng dụng di động',
+ 'mfa_option_totp_desc' => 'Để sử dụng xác thực đa lớp bạn cần ưng dụng trên điện thoại có hỗ trợ TOTP như Google Authenticator, Authy hoặc Microsoft Authenticator.',
+ 'mfa_option_backup_codes_title' => 'Mã dự phòng',
+ 'mfa_option_backup_codes_desc' => 'Tạo một bộ mã dự phòng sử dụng một lần mà bạn sẽ nhập khi đăng nhập để xác minh danh tính của mình. Hãy đảm bảo cất giữ những thứ này ở nơi an toàn và bảo mật.',
+ 'mfa_gen_confirm_and_enable' => 'Xác nhận và Mở',
+ 'mfa_gen_backup_codes_title' => 'Cài đặt Mã dự phòng',
+ 'mfa_gen_backup_codes_desc' => 'Lưu trữ các mã dưới đây ở một nơi an toàn. Khi truy cập vào hệ thống bạn sẽ có thể sử dụng được một trong các đoạn mã đó như là một phương thức xác thực dự phòng.',
+ 'mfa_gen_backup_codes_download' => 'Tải mã',
+ 'mfa_gen_backup_codes_usage_warning' => 'Mỗi mã chỉ có thể sử dụng một lần',
+ 'mfa_gen_totp_title' => 'Cài đặt ứng dụng di động',
+ 'mfa_gen_totp_desc' => 'Để sử dụng xác thực nhiều bước, bạn cần một ứng dụng di động hỗ trợ TOTP ví dụ như Google Authenticator, Authy hoặc Microsoft Authenticator.',
+ 'mfa_gen_totp_scan' => 'Quét mã QR dưới đây bằng ứng dụng xác thực mà bạn muốn để bắt đầu.',
+ 'mfa_gen_totp_verify_setup' => 'Xác nhận cài đặt',
+ 'mfa_gen_totp_verify_setup_desc' => 'Xác nhận rằng tất cả hoạt động bằng cách nhập vào một mã, được tạo ra bởi ứng dụng xác thực của bạn vào ô dưới đây:',
+ 'mfa_gen_totp_provide_code_here' => 'Cung cấp mã bạn tạo được từ ứng dụng ở đây',
+ 'mfa_verify_access' => 'Xác thực truy cập',
+ 'mfa_verify_access_desc' => 'Tài khoản của bạn cần xác nhận danh tính của bạn thông qua một lớp xác thực bổ sung trước khi bạn được cấp quyền truy cập. Xác thực qua việc sử dụng một trong các phương thức để tiếp tục.',
+ 'mfa_verify_no_methods' => 'Không có phương pháp nào được cấu hình',
+ 'mfa_verify_no_methods_desc' => 'Tài khoản của bạn chưa đăng ký xác thực nhiều lớp. Bạn cần thiết lập ít nhất một phương pháp trước khi yêu cầu truy cập.',
+ 'mfa_verify_use_totp' => 'Xác thực sử dụng mã di động',
+ 'mfa_verify_use_backup_codes' => 'Xác thực sử dụng mã backup',
+ 'mfa_verify_backup_code' => 'Mã dự phòng',
+ 'mfa_verify_backup_code_desc' => 'Nhập một trong các mã dự phòng còn lại của bạn vào ô phía dưới:',
+ 'mfa_verify_backup_code_enter_here' => 'Nhập mã xác thực của bạn tại đây',
+ 'mfa_verify_totp_desc' => 'Nhập mã do ứng dụng di động của bạn tạo ra vào dưới đây:',
+ 'mfa_setup_login_notification' => 'Đã cài đặt xác thực nhiều bước, bạn vui lòng đăng nhập lại sử dụng phương thức đã cài đặt.',
+];
diff --git a/lang/vi/common.php b/lang/vi/common.php
new file mode 100644
index 00000000000..5035788f8fd
--- /dev/null
+++ b/lang/vi/common.php
@@ -0,0 +1,116 @@
+ 'Huỷ',
+ 'close' => 'Đóng',
+ 'confirm' => 'Xác nhận',
+ 'back' => 'Quay lại',
+ 'save' => 'Lưu',
+ 'continue' => 'Tiếp tục',
+ 'select' => 'Chọn',
+ 'toggle_all' => 'Bật/tắt tất cả',
+ 'more' => 'Thêm',
+
+ // Form Labels
+ 'name' => 'Tên',
+ 'description' => 'Mô tả',
+ 'role' => 'Vai trò',
+ 'cover_image' => 'Ảnh bìa',
+ 'cover_image_description' => 'Hình ảnh này phải có kích thước khoảng 440x250px mặc dù nó sẽ được thu nhỏ & cắt xén linh hoạt để phù hợp với giao diện người dùng trong các trường hợp khác nhau theo yêu cầu, do đó kích thước thực tế để hiển thị sẽ khác nhau.',
+
+ // Actions
+ 'actions' => 'Hành động',
+ 'view' => 'Xem',
+ 'view_all' => 'Xem tất cả',
+ 'new' => 'Mới',
+ 'create' => 'Tạo',
+ 'update' => 'Cập nhật',
+ 'edit' => 'Sửa',
+ 'archive' => 'Lưu trữ',
+ 'unarchive' => 'Bỏ lưu trữ',
+ 'sort' => 'Sắp xếp',
+ 'move' => 'Di chuyển',
+ 'copy' => 'Sao chép',
+ 'reply' => 'Trả lời',
+ 'delete' => 'Xóa',
+ 'delete_confirm' => 'Xác nhận Xóa',
+ 'search' => 'Tìm kiếm',
+ 'search_clear' => 'Xoá tìm kiếm',
+ 'reset' => 'Thiết lập lại',
+ 'remove' => 'Xóa bỏ',
+ 'add' => 'Thêm',
+ 'configure' => 'Cấu hình',
+ 'manage' => 'Quản lý',
+ 'fullscreen' => 'Toàn màn hình',
+ 'favourite' => 'Yêu thích',
+ 'unfavourite' => 'Bỏ yêu thích',
+ 'next' => 'Tiếp theo',
+ 'previous' => 'Trước đó',
+ 'filter_active' => 'Bộ lọc có hiệu lực:',
+ 'filter_clear' => 'Xóa bộ lọc',
+ 'download' => 'Tải về',
+ 'open_in_tab' => 'Mở trong thẻ mới',
+ 'open' => 'Mở',
+
+ // Sort Options
+ 'sort_options' => 'Tùy Chọn Sắp Xếp',
+ 'sort_direction_toggle' => 'Đảo chiều sắp xếp',
+ 'sort_ascending' => 'Sắp xếp tăng dần',
+ 'sort_descending' => 'Sắp xếp giảm dần',
+ 'sort_name' => 'Tên',
+ 'sort_default' => 'Mặc định',
+ 'sort_created_at' => 'Ngày Tạo',
+ 'sort_updated_at' => 'Ngày cập nhật',
+
+ // Misc
+ 'deleted_user' => 'Người dùng bị xóa',
+ 'no_activity' => 'Không có hoạt động nào',
+ 'no_items' => 'Không có mục nào khả dụng',
+ 'back_to_top' => 'Lên đầu trang',
+ 'skip_to_main_content' => 'Nhảy đến nội dung chính',
+ 'toggle_details' => 'Bật/tắt chi tiết',
+ 'toggle_thumbnails' => 'Bật/tắt ảnh ảnh nhỏ',
+ 'details' => 'Chi tiết',
+ 'grid_view' => 'Hiển thị dạng lưới',
+ 'list_view' => 'Hiển thị dạng danh sách',
+ 'default' => 'Mặc định',
+ 'breadcrumb' => 'Đường dẫn liên kết',
+ 'status' => 'Trạng thái',
+ 'status_active' => 'Hoạt động',
+ 'status_inactive' => 'Không hoạt động',
+ 'never' => 'Không bao giờ',
+ 'none' => 'Không',
+
+ // Header
+ 'homepage' => 'Trang chủ',
+ 'header_menu_expand' => 'Mở rộng Header Menu',
+ 'profile_menu' => 'Menu Hồ sơ',
+ 'view_profile' => 'Xem Hồ sơ',
+ 'edit_profile' => 'Sửa Hồ sơ',
+ 'dark_mode' => 'Chế độ Tối',
+ 'light_mode' => 'Chế độ Sáng',
+ 'global_search' => 'Tìm kiếm toàn trang',
+
+ // Layout tabs
+ 'tab_info' => 'Thông tin',
+ 'tab_info_label' => 'Tab: Hiển thị thông tin phụ',
+ 'tab_content' => 'Nội dung',
+ 'tab_content_label' => 'Tab: Hiển thị nội dung chính',
+
+ // Email Content
+ 'email_action_help' => 'Nếu bạn gặp sự cố khi nhấp vào nút ": actionText", hãy sao chép và dán URL bên dưới
+vào trình duyệt web của bạn:',
+ 'email_rights' => 'Bản quyền đã được bảo hộ',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => 'Chính Sách Quyền Riêng Tư',
+ 'terms_of_service' => 'Điều khoản Dịch vụ',
+
+ // OpenSearch
+ 'opensearch_description' => 'Tìm kiếm :appName',
+];
diff --git a/lang/vi/components.php b/lang/vi/components.php
new file mode 100644
index 00000000000..eb17b4acd05
--- /dev/null
+++ b/lang/vi/components.php
@@ -0,0 +1,46 @@
+ 'Chọn Ảnh',
+ 'image_list' => 'Danh sách hình ảnh',
+ 'image_details' => 'Chi tiết hình ảnh',
+ 'image_upload' => 'Tải ảnh lên',
+ 'image_intro' => 'Bạn có thể lựa chọn và quản lý các hình ảnh đã được tải lên hệ thống từ trước ở đây.',
+ 'image_intro_upload' => 'Tải lên ảnh mới bằng cách kéo và thả nó vào cửa sổ này, hoặc sử dụng nút tải ảnh ở bên trên.',
+ 'image_all' => 'Tất cả',
+ 'image_all_title' => 'Xem tất cả các ảnh',
+ 'image_book_title' => 'Xem các ảnh đã được tải lên trong sách này',
+ 'image_page_title' => 'Xem các ảnh đã được tải lên trong trang này',
+ 'image_search_hint' => 'Tìm kiếm ảnh bằng tên',
+ 'image_uploaded' => 'Đã tải lên :uploadedDate',
+ 'image_uploaded_by' => 'Tải lên bởi :userName',
+ 'image_uploaded_to' => 'Đã tải lên :pageLink',
+ 'image_updated' => 'Đã cập nhật :updateDate',
+ 'image_load_more' => 'Hiện thêm',
+ 'image_image_name' => 'Tên Ảnh',
+ 'image_delete_used' => 'Ảnh này được sử dụng trong các trang dưới đây.',
+ 'image_delete_confirm_text' => 'Bạn có chắc chắn muốn xóa hình ảnh này?',
+ 'image_select_image' => 'Chọn Ảnh',
+ 'image_dropzone' => 'Thả các ảnh hoặc bấm vào đây để tải lên',
+ 'image_dropzone_drop' => 'Kéo các tệp vào đây để tải lên',
+ 'images_deleted' => 'Các ảnh đã được xóa',
+ 'image_preview' => 'Xem trước Ảnh',
+ 'image_upload_success' => 'Ảnh đã tải lên thành công',
+ 'image_update_success' => 'Chi tiết ảnh được cập nhật thành công',
+ 'image_delete_success' => 'Ảnh đã được xóa thành công',
+ 'image_replace' => 'Thay thế hình ảnh',
+ 'image_replace_success' => 'Đã cập nhật thành công tệp hình ảnh',
+ 'image_rebuild_thumbs' => 'Tái tạo các biến thể kích thước',
+ 'image_rebuild_thumbs_success' => 'Các biến thể kích thước hình ảnh được xây dựng lại thành công!',
+
+ // Code Editor
+ 'code_editor' => 'Sửa Mã',
+ 'code_language' => 'Ngôn ngữ Mã',
+ 'code_content' => 'Nội dung Mã',
+ 'code_session_history' => 'Lịch sử Phiên',
+ 'code_save' => 'Lưu Mã',
+];
diff --git a/lang/vi/editor.php b/lang/vi/editor.php
new file mode 100644
index 00000000000..fd3dbdfb12e
--- /dev/null
+++ b/lang/vi/editor.php
@@ -0,0 +1,182 @@
+ 'Tổng quát',
+ 'advanced' => 'Nâng cao',
+ 'none' => 'Không',
+ 'cancel' => 'Hủy',
+ 'save' => 'Lưu',
+ 'close' => 'Đóng',
+ 'apply' => 'Áp dụng',
+ 'undo' => 'Hoàn tác',
+ 'redo' => 'Làm lại',
+ 'left' => 'Bên trái',
+ 'center' => 'Chính giữa',
+ 'right' => 'Bên phải',
+ 'top' => 'Trên cùng',
+ 'middle' => 'Giữa',
+ 'bottom' => 'Dưới cùng',
+ 'width' => 'Chiều rộng',
+ 'height' => 'Chiều cao',
+ 'More' => 'Thêm',
+ 'select' => 'Chọn...',
+
+ // Toolbar
+ 'formats' => 'Định dạng',
+ 'header_large' => 'Tiêu đề lớn',
+ 'header_medium' => 'Tiêu đề trung bình',
+ 'header_small' => 'Tiêu đề nhỏ',
+ 'header_tiny' => 'Tiêu đề cực nhỏ',
+ 'paragraph' => 'Đoạn văn',
+ 'blockquote' => 'Trích dẫn',
+ 'inline_code' => 'Mã nội tuyến',
+ 'callouts' => 'Chú thích',
+ 'callout_information' => 'Thông tin',
+ 'callout_success' => 'Thành công',
+ 'callout_warning' => 'Cảnh báo',
+ 'callout_danger' => 'Nguy hiểm',
+ 'bold' => 'In đậm',
+ 'italic' => 'In nghiêng',
+ 'underline' => 'Gạch chân',
+ 'strikethrough' => 'Gạch ngang',
+ 'superscript' => 'Chỉ số trên',
+ 'subscript' => 'Chỉ số dưới',
+ 'text_color' => 'Màu chữ',
+ 'highlight_color' => 'Màu đánh dấu',
+ 'custom_color' => 'Màu tùy chỉnh',
+ 'remove_color' => 'Xóa màu',
+ 'background_color' => 'Màu nền',
+ 'align_left' => 'Canh lề trái',
+ 'align_center' => 'Căn giữa',
+ 'align_right' => 'Căn lề phải',
+ 'align_justify' => 'Căn đều',
+ 'list_bullet' => 'Danh sách kiểu ký hiệu',
+ 'list_numbered' => 'Danh sách kiểu số',
+ 'list_task' => 'Danh sách tác vụ',
+ 'indent_increase' => 'Tăng thụt lề',
+ 'indent_decrease' => 'Giảm thụt lề',
+ 'table' => 'Bảng',
+ 'insert_image' => 'Chèn hình ảnh',
+ 'insert_image_title' => 'Chèn/Sửa hình ảnh',
+ 'insert_link' => 'Chèn/sửa liên kết',
+ 'insert_link_title' => 'Chèn/sửa liên kết',
+ 'insert_horizontal_line' => 'Chèn đường ngang',
+ 'insert_code_block' => 'Chèn khối mã',
+ 'edit_code_block' => 'Chỉnh sửa khối mã',
+ 'insert_drawing' => 'Chèn/chỉnh sửa bản vẽ',
+ 'drawing_manager' => 'Quản lý hình vẽ',
+ 'insert_media' => 'Chèn/chỉnh sửa media',
+ 'insert_media_title' => 'Chèn/chỉnh sửa media',
+ 'clear_formatting' => 'Xóa định dạng',
+ 'source_code' => 'Mã nguồn',
+ 'source_code_title' => 'Mã Nguồn',
+ 'fullscreen' => 'Toàn màn hình',
+ 'image_options' => 'Tùy chọn hình ảnh',
+
+ // Tables
+ 'table_properties' => 'Thuộc tính bảng',
+ 'table_properties_title' => 'Thuộc tính bảng',
+ 'delete_table' => 'Xóa bảng',
+ 'table_clear_formatting' => 'Xóa định dạng bảng',
+ 'resize_to_contents' => 'Thay đổi kích thước theo nội dung',
+ 'row_header' => 'Tiêu đề hàng',
+ 'insert_row_before' => 'Chèn thêm hàng ở trên',
+ 'insert_row_after' => 'Chèn thêm hàng ở dưới',
+ 'delete_row' => 'Xóa hàng',
+ 'insert_column_before' => 'Chèn cột mới vào bên trái',
+ 'insert_column_after' => 'Chèn cột mới vào bên phải',
+ 'delete_column' => 'Xóa cột',
+ 'table_cell' => 'Ô',
+ 'table_row' => 'Hàng',
+ 'table_column' => 'Cột',
+ 'cell_properties' => 'Đặt thuộc tính ô',
+ 'cell_properties_title' => 'Đặt thuộc tính ô',
+ 'cell_type' => 'Kiểu ô',
+ 'cell_type_cell' => 'Ô',
+ 'cell_scope' => 'Phạm vi',
+ 'cell_type_header' => 'Ô tiêu đề',
+ 'merge_cells' => 'Sát nhập các ô',
+ 'split_cell' => 'Chia tách ô',
+ 'table_row_group' => 'Nhóm hàng',
+ 'table_column_group' => 'Nhóm cột',
+ 'horizontal_align' => 'Căn chỉnh theo chiều ngang',
+ 'vertical_align' => 'Căn chỉnh theo chiều dọc',
+ 'border_width' => 'Chiều rộng viền',
+ 'border_style' => 'Kiểu đường viền',
+ 'border_color' => 'Màu viền',
+ 'row_properties' => 'Đặt thuộc tính hàng',
+ 'row_properties_title' => 'Đặt thuộc tính hàng',
+ 'cut_row' => 'Cắt hàng',
+ 'copy_row' => 'Sao chép hàng',
+ 'paste_row_before' => 'Dán hàng vào bên trên',
+ 'paste_row_after' => 'Dán hàng vào bên dưới',
+ 'row_type' => 'Kiểu hàng',
+ 'row_type_header' => 'Tiêu đề',
+ 'row_type_body' => 'Nội dung',
+ 'row_type_footer' => 'Chân trang',
+ 'alignment' => 'Canh lề',
+ 'cut_column' => 'Cắt cột',
+ 'copy_column' => 'Sao chép cột',
+ 'paste_column_before' => 'Dán cột vào bên trái',
+ 'paste_column_after' => 'Dán cột vào bên phải',
+ 'cell_padding' => 'Đệm ô',
+ 'cell_spacing' => 'Khoảng cách ô',
+ 'caption' => 'Chú thích',
+ 'show_caption' => 'Hiện chú thích',
+ 'constrain' => 'Ràng buộc các thuộc tính',
+ 'cell_border_solid' => 'Đặc',
+ 'cell_border_dotted' => 'Chấm chấm',
+ 'cell_border_dashed' => 'Nét đứt',
+ 'cell_border_double' => 'Đôi',
+ 'cell_border_groove' => 'Rãnh',
+ 'cell_border_ridge' => 'Gờ',
+ 'cell_border_inset' => 'Lõm',
+ 'cell_border_outset' => 'Lồi',
+ 'cell_border_none' => 'Không',
+ 'cell_border_hidden' => 'Ẩn',
+
+ // Images, links, details/summary & embed
+ 'source' => 'Nguồn',
+ 'alt_desc' => 'Mô tả thay thế',
+ 'embed' => 'Mã nhúng',
+ 'paste_embed' => 'Dán mã nhúng của bạn vào bên dưới:',
+ 'url' => 'Đường dẫn',
+ 'text_to_display' => 'Văn bản hiển thị',
+ 'title' => 'Tiêu đề',
+ 'browse_links' => 'Duyệt liên kết',
+ 'open_link' => 'Mở liên kết',
+ 'open_link_in' => 'Mở liên kết trong...',
+ 'open_link_current' => 'Cửa sổ hiện tại',
+ 'open_link_new' => 'Cửa sổ mới',
+ 'remove_link' => 'Loại bỏ liên kết',
+ 'insert_collapsible' => 'Chèn khối có thể thu gọn',
+ 'collapsible_unwrap' => 'Tháo bỏ',
+ 'edit_label' => 'Chỉnh sửa nhãn',
+ 'toggle_open_closed' => 'Chuyển đổi mở/đóng',
+ 'collapsible_edit' => 'Chỉnh sửa khối có thể thu gọn',
+ 'toggle_label' => 'Chuyển đổi nhãn',
+
+ // About view
+ 'about' => 'Giới thiệu về trình soạn thảo',
+ 'about_title' => 'Giới thiệu về trình soạn thảo WYSIWYG',
+ 'editor_license' => 'Giấy phép & Bản quyền của trình soạn thảo',
+ 'editor_lexical_license' => 'Trình soạn thảo này được xây dựng dựa trên :lexicalLink được phân phối theo giấy phép MIT.',
+ 'editor_lexical_license_link' => 'Chi tiết giấy phép đầy đủ có thể tìm thấy tại đây.',
+ 'editor_tiny_license' => 'Trình soạn thảo này được xây dựng bằng cách sử dụng :tinyLink theo giấy phép MIT.',
+ 'editor_tiny_license_link' => 'Chi tiết về bản quyền và giấy phép của TinyMCE có thể được tìm thấy tại đây.',
+ 'save_continue' => 'Lưu trang & Tiếp tục',
+ 'callouts_cycle' => '(Nhấn tiếp để chuyển đổi giữa các loại)',
+ 'link_selector' => 'Bộ chọn liên kết',
+ 'shortcuts' => 'Phím tắt',
+ 'shortcut' => 'Phím tắt',
+ 'shortcuts_intro' => 'Các phím tắt sau có sẵn trong trình soạn thảo:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => 'Mô tả',
+];
diff --git a/lang/vi/entities.php b/lang/vi/entities.php
new file mode 100644
index 00000000000..f538f993ca2
--- /dev/null
+++ b/lang/vi/entities.php
@@ -0,0 +1,476 @@
+ 'Được tạo gần đây',
+ 'recently_created_pages' => 'Trang được tạo gần đây',
+ 'recently_updated_pages' => 'Trang được cập nhật gần đây',
+ 'recently_created_chapters' => 'Chương được tạo gần đây',
+ 'recently_created_books' => 'Sách được tạo gần đây',
+ 'recently_created_shelves' => 'Giá sách được tạo gần đây',
+ 'recently_update' => 'Được cập nhật gần đây',
+ 'recently_viewed' => 'Được xem gần đây',
+ 'recent_activity' => 'Hoạt động gần đây',
+ 'create_now' => 'Tạo ngay',
+ 'revisions' => 'Phiên bản',
+ 'meta_revision' => 'Phiên bản #:revisionCount',
+ 'meta_created' => 'Được tạo :timeLength',
+ 'meta_created_name' => 'Được tạo :timeLength bởi :user',
+ 'meta_updated' => 'Được cập nhật :timeLength',
+ 'meta_updated_name' => 'Được cập nhật :timeLength bởi :user',
+ 'meta_owned_name' => 'Được sở hữu bởi :user',
+ 'meta_reference_count' => 'Được tham chiếu bởi :count mục|Được tham chiếu bởi :count mục',
+ 'entity_select' => 'Chọn thực thể',
+ 'entity_select_lack_permission' => 'Bạn không có quyền để chọn mục này',
+ 'images' => 'Ảnh',
+ 'my_recent_drafts' => 'Bản nháp gần đây của tôi',
+ 'my_recently_viewed' => 'Xem gần đây của tôi',
+ 'my_most_viewed_favourites' => 'Yêu thích được tôi xem nhiều nhất',
+ 'my_favourites' => 'Danh sách yêu thích của tôi',
+ 'no_pages_viewed' => 'Bạn chưa xem bất cứ trang nào',
+ 'no_pages_recently_created' => 'Không có trang nào được tạo gần đây',
+ 'no_pages_recently_updated' => 'Không có trang nào được cập nhật gần đây',
+ 'export' => 'Xuất',
+ 'export_html' => 'Đang chứa tệp tin Web',
+ 'export_pdf' => 'Tệp PDF',
+ 'export_text' => 'Tệp văn bản thuần túy',
+ 'export_md' => 'Tệp Markdown',
+ 'export_zip' => 'ZIP di động',
+ 'default_template' => 'Mẫu trang mặc định',
+ 'default_template_explain' => 'Chỉ định một mẫu trang sẽ được sử dụng làm nội dung mặc định cho tất cả các trang được tạo trong mục này. Hãy chú ý rằng điều này sẽ chỉ được sử dụng nếu người tạo trang có quyền truy cập xem vào trang mẫu đã chọn.',
+ 'default_template_select' => 'Chọn một trang mẫu',
+ 'import' => 'Nhập',
+ 'import_validate' => 'Xác thực nhập',
+ 'import_desc' => 'Nhập sách, chương & trang bằng cách sử dụng tệp xuất zip di động từ cùng một phiên bản hoặc một phiên bản khác. Chọn tệp ZIP để tiếp tục. Sau khi tệp được tải lên và xác thực, bạn sẽ có thể cấu hình & xác nhận việc nhập trong chế độ xem tiếp theo.',
+ 'import_zip_select' => 'Chọn tệp ZIP để tải lên',
+ 'import_zip_validation_errors' => 'Đã phát hiện lỗi khi xác thực tệp ZIP được cung cấp:',
+ 'import_pending' => 'Nhập đang chờ xử lý',
+ 'import_pending_none' => 'Chưa có lượt nhập nào được bắt đầu.',
+ 'import_continue' => 'Tiếp tục nhập',
+ 'import_continue_desc' => 'Xem lại nội dung sẽ được nhập từ tệp ZIP đã tải lên. Khi sẵn sàng, hãy chạy nhập để thêm nội dung của nó vào hệ thống này. Tệp nhập ZIP đã tải lên sẽ tự động bị xóa khi nhập thành công.',
+ 'import_details' => 'Chi tiết nhập',
+ 'import_run' => 'Chạy nhập',
+ 'import_size' => 'Kích thước tệp ZIP nhập: :size',
+ 'import_uploaded_at' => 'Đã tải lên :relativeTime',
+ 'import_uploaded_by' => 'Đã tải lên bởi',
+ 'import_location' => 'Vị trí nhập',
+ 'import_location_desc' => 'Chọn vị trí đích cho nội dung đã nhập của bạn. Bạn sẽ cần các quyền liên quan để tạo trong vị trí bạn chọn.',
+ 'import_delete_confirm' => 'Bạn có chắc chắn muốn xóa lượt nhập này không?',
+ 'import_delete_desc' => 'Thao tác này sẽ xóa tệp ZIP đã tải lên, và không thể hoàn tác.',
+ 'import_errors' => 'Lỗi khi nhập dữ liệu',
+ 'import_errors_desc' => 'Các lỗi sau đã xảy ra trong quá trình nhập:',
+ 'breadcrumb_siblings_for_page' => 'Điều hướng anh chị em cho trang',
+ 'breadcrumb_siblings_for_chapter' => 'Điều hướng anh chị em cho chương',
+ 'breadcrumb_siblings_for_book' => 'Điều hướng anh chị em cho sách',
+ 'breadcrumb_siblings_for_bookshelf' => 'Điều hướng anh chị em cho kệ sách',
+
+ // Permissions and restrictions
+ 'permissions' => 'Quyền',
+ 'permissions_desc' => 'Đặt quyền ở đây để ghi đè các quyền mặc định do vai trò người dùng cung cấp.',
+ 'permissions_book_cascade' => 'Quyền được đặt trên sách sẽ tự động xếp tầng cho các chương và trang con, trừ khi chúng được xác định quyền riêng.',
+ 'permissions_chapter_cascade' => 'Quyền được đặt trên các chương sẽ tự động xếp tầng cho các trang con, trừ khi chúng được xác định quyền riêng.',
+ 'permissions_save' => 'Lưu quyền hạn',
+ 'permissions_owner' => 'Chủ sở hữu',
+ 'permissions_role_everyone_else' => 'Những người khác',
+ 'permissions_role_everyone_else_desc' => 'Đặt quyền cho tất cả vai trò không được ghi đè cụ thể.',
+ 'permissions_role_override' => 'Ghi đè quyền cho vai trò',
+ 'permissions_inherit_defaults' => 'Kế thừa giá trị mặc định',
+
+ // Search
+ 'search_results' => 'Kết quả Tìm kiếm',
+ 'search_total_results_found' => 'Tìm thấy :count kết quả|:count tổng kết quả',
+ 'search_clear' => 'Xóa tìm kiếm',
+ 'search_no_pages' => 'Không trang nào khớp với tìm kiếm này',
+ 'search_for_term' => 'Tìm kiếm cho :term',
+ 'search_more' => 'Thêm kết quả',
+ 'search_advanced' => 'Tìm kiếm Nâng cao',
+ 'search_terms' => 'Cụm từ Tìm kiếm',
+ 'search_content_type' => 'Kiểu Nội dung',
+ 'search_exact_matches' => 'Hoàn toàn trùng khớp',
+ 'search_tags' => 'Tìm kiếm Thẻ',
+ 'search_options' => 'Tùy chọn',
+ 'search_viewed_by_me' => 'Được xem bởi tôi',
+ 'search_not_viewed_by_me' => 'Không được xem bởi tôi',
+ 'search_permissions_set' => 'Phân quyền',
+ 'search_created_by_me' => 'Được tạo bởi tôi',
+ 'search_updated_by_me' => 'Được cập nhật bởi tôi',
+ 'search_owned_by_me' => 'Của tôi',
+ 'search_date_options' => 'Tùy chọn ngày',
+ 'search_updated_before' => 'Đã được cập nhật trước đó',
+ 'search_updated_after' => 'Đã được cập nhật sau',
+ 'search_created_before' => 'Đã được tạo trước',
+ 'search_created_after' => 'Đã được tạo sau',
+ 'search_set_date' => 'Đặt ngày',
+ 'search_update' => 'Cập nhật tìm kiếm',
+
+ // Shelves
+ 'shelf' => 'Giá sách',
+ 'shelves' => 'Giá sách',
+ 'x_shelves' => ':count Giá sách|:count Giá sách',
+ 'shelves_empty' => 'Không có giá sách nào được tạo',
+ 'shelves_create' => 'Tạo Giá sách mới',
+ 'shelves_popular' => 'Các Giá sách phổ biến',
+ 'shelves_new' => 'Các Giá sách mới',
+ 'shelves_new_action' => 'Giá sách mới',
+ 'shelves_popular_empty' => 'Các giá sách phổ biến sẽ xuất hiện ở đây.',
+ 'shelves_new_empty' => 'Các Giá sách được tạo gần đây sẽ xuất hiện ở đây.',
+ 'shelves_save' => 'Lưu Giá sách',
+ 'shelves_books' => 'Sách trên Giá sách này',
+ 'shelves_add_books' => 'Thêm sách vào Giá sách này',
+ 'shelves_drag_books' => 'Kéo sách bên dưới để thêm vào kệ sách này',
+ 'shelves_empty_contents' => 'Giá sách này không có sách nào',
+ 'shelves_edit_and_assign' => 'Chỉnh sửa kệ để gán sách',
+ 'shelves_edit_named' => 'Chỉnh sửa kệ :name',
+ 'shelves_edit' => 'Chỉnh sửa kệ',
+ 'shelves_delete' => 'Xóa kệ',
+ 'shelves_delete_named' => 'Xóa kệ :name',
+ 'shelves_delete_explain' => "Thao tác này sẽ xóa kệ có tên ':name'. Sách chứa sẽ không bị xóa.",
+ 'shelves_delete_confirmation' => 'Bạn có chắc chắn muốn xóa kệ sách này không?',
+ 'shelves_permissions' => 'Quyền cho kệ sách',
+ 'shelves_permissions_updated' => 'Quyền cho kệ sách đã được cập nhật',
+ 'shelves_permissions_active' => 'Quyền của kệ đang hoạt động',
+ 'shelves_permissions_cascade_warning' => 'Quyền trên kệ sách không tự động xếp theo các sách được chứa. Điều này là do một cuốn sách có thể tồn tại trên nhiều kệ. Tuy nhiên, quyền có thể được sao chép xuống sách con bằng cách sử dụng tùy chọn bên dưới.',
+ 'shelves_permissions_create' => 'Quyền tạo giá sách chỉ được sử dụng để sao chép quyền vào sách con bằng cách sử dụng tác vụ bên dưới. Chúng không kiểm soát khả năng tạo ra sách.',
+ 'shelves_copy_permissions_to_books' => 'Sao chép các quyền cho sách',
+ 'shelves_copy_permissions' => 'Sao chép các quyền',
+ 'shelves_copy_permissions_explain' => 'Thao tác này sẽ áp dụng cài đặt quyền hiện tại của giá sách này cho tất cả sách có trong đó. Trước khi kích hoạt, hãy đảm bảo mọi thay đổi đối với quyền của giá sách này đã được lưu.',
+ 'shelves_copy_permission_success' => 'Đã sao chép quyền của kệ vào :count sách',
+
+ // Books
+ 'book' => 'Sách',
+ 'books' => 'Tất cả sách',
+ 'x_books' => ':count Sách|:count Tất cả sách',
+ 'books_empty' => 'Không có cuốn sách nào được tạo',
+ 'books_popular' => 'Những cuốn sách phổ biến',
+ 'books_recent' => 'Những cuốn sách gần đây',
+ 'books_new' => 'Những cuốn sách mới',
+ 'books_new_action' => 'Sách mới',
+ 'books_popular_empty' => 'Những cuốn sách phổ biến nhất sẽ xuất hiện ở đây.',
+ 'books_new_empty' => 'Những cuốn sách tạo gần đây sẽ được xuất hiện ở đây.',
+ 'books_create' => 'Tạo cuốn sách mới',
+ 'books_delete' => 'Xóa sách',
+ 'books_delete_named' => 'Xóa sách :bookName',
+ 'books_delete_explain' => 'Điều này sẽ xóa cuốn sách với tên \':bookName\'. Tất cả các trang và các chương sẽ bị xóa.',
+ 'books_delete_confirmation' => 'Bạn có chắc chắn muốn xóa cuốn sách này?',
+ 'books_edit' => 'Sửa sách',
+ 'books_edit_named' => 'Sửa sách :bookName',
+ 'books_form_book_name' => 'Tên sách',
+ 'books_save' => 'Lưu sách',
+ 'books_permissions' => 'Các quyền của cuốn sách',
+ 'books_permissions_updated' => 'Các quyền của cuốn sách đã được cập nhật',
+ 'books_empty_contents' => 'Không có trang hay chương nào được tạo cho cuốn sách này.',
+ 'books_empty_create_page' => 'Tạo một trang mới',
+ 'books_empty_sort_current_book' => 'Sắp xếp cuốn sách này',
+ 'books_empty_add_chapter' => 'Thêm một chương mới',
+ 'books_permissions_active' => 'Đang bật các quyền hạn từ Sách',
+ 'books_search_this' => 'Tìm cuốn sách này',
+ 'books_navigation' => 'Điều hướng cuốn sách',
+ 'books_sort' => 'Sắp xếp nội dung cuốn sách',
+ 'books_sort_desc' => 'Di chuyển các chương và trang trong một cuốn sách để sắp xếp lại nội dung của nó. Các sách khác có thể được thêm vào để dễ dàng di chuyển các chương và trang giữa các sách. Tùy chọn, một quy tắc sắp xếp tự động có thể được đặt để tự động sắp xếp nội dung cuốn sách này khi có thay đổi.',
+ 'books_sort_auto_sort' => 'Tùy chọn sắp xếp tự động',
+ 'books_sort_auto_sort_active' => 'Sắp xếp tự động đang hoạt động: :sortName',
+ 'books_sort_named' => 'Sắp xếp sách :bookName',
+ 'books_sort_name' => 'Sắp xếp theo tên',
+ 'books_sort_created' => 'Sắp xếp theo ngày tạo',
+ 'books_sort_updated' => 'Sắp xếp theo ngày cập nhật',
+ 'books_sort_chapters_first' => 'Các Chương đầu',
+ 'books_sort_chapters_last' => 'Các Chương cuối',
+ 'books_sort_show_other' => 'Hiển thị các Sách khác',
+ 'books_sort_save' => 'Lưu thứ tự mới',
+ 'books_sort_show_other_desc' => 'Thêm các sách khác vào đây để đưa chúng vào thao tác sắp xếp và cho phép sắp xếp lại nhiều sách dễ dàng.',
+ 'books_sort_move_up' => 'Đưa lên trên',
+ 'books_sort_move_down' => 'Đưa xuống dưới',
+ 'books_sort_move_prev_book' => 'Chuyển tới sách phía trước',
+ 'books_sort_move_next_book' => 'Chuyển tới sách phía sau',
+ 'books_sort_move_prev_chapter' => 'Chuyển sang chương trước',
+ 'books_sort_move_next_chapter' => 'Chuyển sang chương tiếp theo',
+ 'books_sort_move_book_start' => 'Di chuyển đến đầu sách',
+ 'books_sort_move_book_end' => 'Di chuyển đến cuối sách',
+ 'books_sort_move_before_chapter' => 'Chuyển về trước chương',
+ 'books_sort_move_after_chapter' => 'Chuyển tới chương sau',
+ 'books_copy' => 'Sao chép sách',
+ 'books_copy_success' => 'Đã sao chép thành công',
+
+ // Chapters
+ 'chapter' => 'Chương',
+ 'chapters' => 'Các chương',
+ 'x_chapters' => ':count Chương|:count Chương',
+ 'chapters_popular' => 'Các Chương phổ biến',
+ 'chapters_new' => 'Chương mới',
+ 'chapters_create' => 'Tạo Chương mới',
+ 'chapters_delete' => 'Xóa Chương',
+ 'chapters_delete_named' => 'Xóa Chương :chapterName',
+ 'chapters_delete_explain' => 'Hành động này sẽ xoá chương \':chapterName\'. Tất cả các trang trong chương này cũng sẽ bị xoá.',
+ 'chapters_delete_confirm' => 'Bạn có chắc chắn muốn xóa chương này?',
+ 'chapters_edit' => 'Sửa Chương',
+ 'chapters_edit_named' => 'Sửa chương :chapterName',
+ 'chapters_save' => 'Lưu Chương',
+ 'chapters_move' => 'Di chuyển Chương',
+ 'chapters_move_named' => 'Di chuyển Chương :chapterName',
+ 'chapters_copy' => 'Sao chép chương',
+ 'chapters_copy_success' => 'Chương đã được sao chép thành công',
+ 'chapters_permissions' => 'Quyền hạn Chương',
+ 'chapters_empty' => 'Không có trang nào hiện có trong chương này.',
+ 'chapters_permissions_active' => 'Đang bật các quyền hạn từ Chương',
+ 'chapters_permissions_success' => 'Quyền hạn Chương được cập nhật',
+ 'chapters_search_this' => 'Tìm kiếm trong Chương này',
+ 'chapter_sort_book' => 'Sắp xếp sách',
+
+ // Pages
+ 'page' => 'Trang',
+ 'pages' => 'Các trang',
+ 'x_pages' => ':count Trang|:count Trang',
+ 'pages_popular' => 'Các Trang phổ biến',
+ 'pages_new' => 'Trang Mới',
+ 'pages_attachments' => 'Các đính kèm',
+ 'pages_navigation' => 'Điều hướng Trang',
+ 'pages_delete' => 'Xóa Trang',
+ 'pages_delete_named' => 'Xóa Trang :pageName',
+ 'pages_delete_draft_named' => 'Xóa Trang Nháp :pageName',
+ 'pages_delete_draft' => 'Xóa Trang Nháp',
+ 'pages_delete_success' => 'Đã xóa Trang',
+ 'pages_delete_draft_success' => 'Đã xóa trang Nháp',
+ 'pages_delete_warning_template' => 'Trang này đang được sử dụng làm mẫu trang mặc định của sách hoặc chương. Hãy chú ý: Những cuốn sách hoặc chương này sẽ không còn được chỉ định mẫu trang mặc định sau khi trang này bị xóa.',
+ 'pages_delete_confirm' => 'Bạn có chắc chắn muốn xóa trang này?',
+ 'pages_delete_draft_confirm' => 'Bạn có chắc chắn muốn xóa trang nháp này?',
+ 'pages_editing_named' => 'Đang chỉnh sửa Trang :pageName',
+ 'pages_edit_draft_options' => 'Tùy chọn bản nháp',
+ 'pages_edit_save_draft' => 'Lưu Nháp',
+ 'pages_edit_draft' => 'Sửa trang nháp',
+ 'pages_editing_draft' => 'Đang chỉnh sửa Nháp',
+ 'pages_editing_page' => 'Đang chỉnh sửa Trang',
+ 'pages_edit_draft_save_at' => 'Bản nháp đã lưu lúc ',
+ 'pages_edit_delete_draft' => 'Xóa Bản nháp',
+ 'pages_edit_delete_draft_confirm' => 'Bạn có chắc chắn muốn xóa các thay đổi trên trang nháp của mình không? Tất cả các thay đổi của bạn, kể từ lần lưu đầy đủ gần đây nhất, sẽ bị mất và trình chỉnh sửa sẽ được cập nhật với trạng thái lưu trang không phải bản nháp mới nhất.',
+ 'pages_edit_discard_draft' => 'Hủy bỏ Bản nháp',
+ 'pages_edit_switch_to_markdown' => 'Chuyển sang trình soạn thảo Markdown',
+ 'pages_edit_switch_to_markdown_clean' => '(Nội dung sạch)',
+ 'pages_edit_switch_to_markdown_stable' => '(Nội dung ổn định)',
+ 'pages_edit_switch_to_wysiwyg' => 'Chuyển sang trình soạn thảo WYSIWYG',
+ 'pages_edit_switch_to_new_wysiwyg' => 'Chuyển sang WYSIWYG mới',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(Đang thử nghiệm Beta)',
+ 'pages_edit_set_changelog' => 'Đặt Changelog',
+ 'pages_edit_enter_changelog_desc' => 'Viết mô tả ngắn gọn cho các thay đổi mà bạn tạo',
+ 'pages_edit_enter_changelog' => 'Viết Changelog',
+ 'pages_editor_switch_title' => 'Đổi trình soạn thảo',
+ 'pages_editor_switch_are_you_sure' => 'Bạn có chắc chắn muốn thay đổi trình soạn thảo cho trang này không?',
+ 'pages_editor_switch_consider_following' => 'Hãy cân nhắc những điều sau đây khi thay đổi trình soạn thảo:',
+ 'pages_editor_switch_consideration_a' => 'Sau khi lưu, tùy chọn trình soạn thảo mới sẽ được sử dụng bởi bất kỳ trình chỉnh sửa nào trong tương lai, kể cả những người không thể tự thay đổi loại trình chỉnh sửa.',
+ 'pages_editor_switch_consideration_b' => 'Điều này có khả năng dẫn đến mất chi tiết và cú pháp trong một số trường hợp nhất định.',
+ 'pages_editor_switch_consideration_c' => 'Các thay đổi thẻ hoặc nhật ký thay đổi, được thực hiện kể từ lần lưu cuối cùng, sẽ không tồn tại sau thay đổi này.',
+ 'pages_save' => 'Lưu Trang',
+ 'pages_title' => 'Tiêu đề Trang',
+ 'pages_name' => 'Tên Trang',
+ 'pages_md_editor' => 'Trình chỉnh sửa',
+ 'pages_md_preview' => 'Xem trước',
+ 'pages_md_insert_image' => 'Chèn hình ảnh',
+ 'pages_md_insert_link' => 'Chèn liên kết thực thể',
+ 'pages_md_insert_drawing' => 'Chèn bản vẽ',
+ 'pages_md_show_preview' => 'Hiển thị bản xem trước',
+ 'pages_md_sync_scroll' => 'Đồng bộ hóa cuộn xem trước',
+ 'pages_md_plain_editor' => 'Trình soạn thảo văn bản thuần túy',
+ 'pages_drawing_unsaved' => 'Tìm thấy bản vẽ chưa lưu',
+ 'pages_drawing_unsaved_confirm' => 'Dữ liệu bản vẽ chưa lưu được tìm thấy từ lần lưu bản vẽ không thành công trước đó. Bạn có muốn khôi phục và tiếp tục chỉnh sửa bản vẽ chưa lưu này không?',
+ 'pages_not_in_chapter' => 'Trang không nằm trong một chương',
+ 'pages_move' => 'Di chuyển Trang',
+ 'pages_copy' => 'Sao chép Trang',
+ 'pages_copy_desination' => 'Sao lưu đến',
+ 'pages_copy_success' => 'Trang được sao chép thành công',
+ 'pages_permissions' => 'Quyền hạn Trang',
+ 'pages_permissions_success' => 'Quyền hạn Trang được cập nhật',
+ 'pages_revision' => 'Phiên bản',
+ 'pages_revisions' => 'Phiên bản Trang',
+ 'pages_revisions_desc' => 'Dưới đây là tất cả các bản sửa đổi trước đây của trang này. Bạn có thể xem lại, so sánh và khôi phục các phiên bản trang cũ nếu được phép. Lịch sử đầy đủ của trang có thể không được phản ánh đầy đủ ở đây vì, tùy thuộc vào cấu hình hệ thống, các bản sửa đổi cũ có thể tự động bị xóa.',
+ 'pages_revisions_named' => 'Phiên bản Trang cho :pageName',
+ 'pages_revision_named' => 'Phiên bản Trang cho :pageName',
+ 'pages_revision_restored_from' => 'Khôi phục từ #:id; :summary',
+ 'pages_revisions_created_by' => 'Tạo bởi',
+ 'pages_revisions_date' => 'Ngày của Phiên bản',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => 'Số phiên bản',
+ 'pages_revisions_numbered' => 'Phiên bản #:id',
+ 'pages_revisions_numbered_changes' => 'Các thay đổi của phiên bản #:id',
+ 'pages_revisions_editor' => 'Loại trình chỉnh sửa',
+ 'pages_revisions_changelog' => 'Nhật ký thay đổi',
+ 'pages_revisions_changes' => 'Các thay đổi',
+ 'pages_revisions_current' => 'Phiên bản hiện tại',
+ 'pages_revisions_preview' => 'Xem trước',
+ 'pages_revisions_restore' => 'Khôi phục',
+ 'pages_revisions_none' => 'Trang này không có phiên bản nào',
+ 'pages_copy_link' => 'Sao chép Liên kết',
+ 'pages_edit_content_link' => 'Chuyển đến phần trong trình chỉnh sửa',
+ 'pages_pointer_enter_mode' => 'Vào chế độ chọn phần',
+ 'pages_pointer_label' => 'Tùy chọn phần trang',
+ 'pages_pointer_permalink' => 'Liên kết cố định phần trang',
+ 'pages_pointer_include_tag' => 'Phần trang bao gồm thẻ',
+ 'pages_pointer_toggle_link' => 'Chế độ Liên kết cố định, Nhấn để hiển thị thẻ bao gồm',
+ 'pages_pointer_toggle_include' => 'Bao gồm chế độ thẻ, Nhấn để hiển thị liên kết cố định',
+ 'pages_permissions_active' => 'Đang bật các quyền hạn từ Trang',
+ 'pages_initial_revision' => 'Đăng bài mở đầu',
+ 'pages_references_update_revision' => 'Hệ thống tự động cập nhật liên kết nội bộ',
+ 'pages_initial_name' => 'Trang mới',
+ 'pages_editing_draft_notification' => 'Bạn hiện đang chỉnh sửa một bản nháp được lưu cách đây :timeDiff.',
+ 'pages_draft_edited_notification' => 'Trang này đã được cập nhật từ lúc đó. Bạn nên loại bỏ bản nháp này.',
+ 'pages_draft_page_changed_since_creation' => 'Trang này đã được cập nhật kể từ khi bản nháp này được tạo. Bạn nên bỏ bản nháp này hoặc cẩn thận không ghi đè bất kỳ thay đổi nào của trang.',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count người dùng đang bắt đầu chỉnh sửa trang này',
+ 'start_b' => ':userName đang bắt đầu chỉnh sửa trang này',
+ 'time_a' => 'kể từ khi trang được cập nhật lần cuối',
+ 'time_b' => 'trong :minCount phút cuối',
+ 'message' => ':start :time. Hãy cẩn thận đừng ghi đè vào các bản cập nhật của nhau!',
+ ],
+ 'pages_draft_discarded' => 'Bản nháp đã bị loại bỏ! Trình chỉnh sửa đã được cập nhật với nội dung trang hiện tại',
+ 'pages_draft_deleted' => 'Bản nháp đã bị xóa! Trình chỉnh sửa đã được cập nhật với nội dung trang hiện tại',
+ 'pages_specific' => 'Trang cụ thể',
+ 'pages_is_template' => 'Biểu mẫu trang',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => 'Chuyển đổi thanh bên',
+ 'page_tags' => 'Các Thẻ Trang',
+ 'chapter_tags' => 'Các Thẻ Chương',
+ 'book_tags' => 'Các Thẻ Sách',
+ 'shelf_tags' => 'Các Thẻ Kệ',
+ 'tag' => 'Nhãn',
+ 'tags' => 'Các Thẻ',
+ 'tags_index_desc' => 'Thẻ có thể được áp dụng cho nội dung trong hệ thống để áp dụng một hình thức phân loại linh hoạt. Thẻ có thể có cả khóa và giá trị, với giá trị là tùy chọn. Sau khi được áp dụng, nội dung sau đó có thể được truy vấn bằng tên thẻ và giá trị.',
+ 'tag_name' => 'Tên Nhãn',
+ 'tag_value' => 'Giá trị Thẻ (Tùy chọn)',
+ 'tags_explain' => "Thêm vài thẻ để phân loại nội dung của bạn tốt hơn. \n Bạn có thể đặt giá trị cho thẻ để quản lí kĩ càng hơn.",
+ 'tags_add' => 'Thêm thẻ khác',
+ 'tags_remove' => 'Xóa thẻ này',
+ 'tags_usages' => 'Tổng số lượt sử dụng thẻ',
+ 'tags_assigned_pages' => 'Đã gán cho Trang',
+ 'tags_assigned_chapters' => 'Đã gán cho Chương',
+ 'tags_assigned_books' => 'Đã gán cho Sách',
+ 'tags_assigned_shelves' => 'Đã gán cho Kệ',
+ 'tags_x_unique_values' => ':count giá trị duy nhất',
+ 'tags_all_values' => 'Tất cả giá trị',
+ 'tags_view_tags' => 'Xem Thẻ',
+ 'tags_view_existing_tags' => 'Xem các thẻ hiện có',
+ 'tags_list_empty_hint' => 'Thẻ có thể được gán thông qua thanh bên của trình chỉnh sửa trang hoặc trong khi chỉnh sửa chi tiết của sách, chương hoặc kệ.',
+ 'attachments' => 'Các Đính kèm',
+ 'attachments_explain' => 'Cập nhật một số tập tin và đính một số liên kết để hiển thị trên trang của bạn. Chúng được hiện trong sidebar của trang.',
+ 'attachments_explain_instant_save' => 'Các thay đổi ở đây sẽ được lưu ngay lập tức.',
+ 'attachments_upload' => 'Tải lên Tập tin',
+ 'attachments_link' => 'Đính kèm Liên kết',
+ 'attachments_upload_drop' => 'Ngoài ra, bạn có thể kéo và thả tệp vào đây để tải lên làm tệp đính kèm.',
+ 'attachments_set_link' => 'Đặt Liên kết',
+ 'attachments_delete' => 'Bạn có chắc chắn muốn xóa tập tin đính kèm này?',
+ 'attachments_dropzone' => 'Thả tệp vào đây để tải lên',
+ 'attachments_no_files' => 'Không có tập tin nào được tải lên',
+ 'attachments_explain_link' => 'Bạn có thể đính kèm một liên kết nếu bạn lựa chọn không tải lên tập tin. Liên kết này có thể trỏ đến một trang khác hoặc một tập tin ở trên mạng (đám mây).',
+ 'attachments_link_name' => 'Tên Liên kết',
+ 'attachment_link' => 'Liên kết đính kèm',
+ 'attachments_link_url' => 'Liên kết đến tập tin',
+ 'attachments_link_url_hint' => 'URL của trang hoặc tập tin',
+ 'attach' => 'Đính kèm',
+ 'attachments_insert_link' => 'Thêm Đường dẫn Tập tin đính kèm vào Trang',
+ 'attachments_edit_file' => 'Sửa tập tin',
+ 'attachments_edit_file_name' => 'Tên tệp tin',
+ 'attachments_edit_drop_upload' => 'Thả tập tin hoặc bấm vào đây để tải lên và ghi đè',
+ 'attachments_order_updated' => 'Đã cập nhật thứ tự đính kèm',
+ 'attachments_updated_success' => 'Đã cập nhật chi tiết đính kèm',
+ 'attachments_deleted' => 'Đính kèm đã được xóa',
+ 'attachments_file_uploaded' => 'Tập tin tải lên thành công',
+ 'attachments_file_updated' => 'Tập tin cập nhật thành công',
+ 'attachments_link_attached' => 'Liên kết được đính kèm đến trang thành công',
+ 'templates' => 'Các Mẫu',
+ 'templates_set_as_template' => 'Trang là một mẫu',
+ 'templates_explain_set_as_template' => 'Bạn có thể đặt trang này làm mẫu, nội dung của nó sẽ được sử dụng lại khi tạo các trang mới. Người dùng khác có thể sử dụng mẫu này nếu họ có quyền hạn xem trang này.',
+ 'templates_replace_content' => 'Thay thế nội dung trang',
+ 'templates_append_content' => 'Viết vào nội dung trang',
+ 'templates_prepend_content' => 'Thêm vào đầu nội dung trang',
+
+ // Profile View
+ 'profile_user_for_x' => 'Đã là người dùng trong :time',
+ 'profile_created_content' => 'Đã tạo nội dung',
+ 'profile_not_created_pages' => ':userName chưa tạo bất kỳ trang nào',
+ 'profile_not_created_chapters' => ':userName chưa tạo bất kì chương nào',
+ 'profile_not_created_books' => ':userName chưa tạo bất cứ sách nào',
+ 'profile_not_created_shelves' => ':userName chưa tạo bất kỳ giá sách nào',
+
+ // Comments
+ 'comment' => 'Bình luận',
+ 'comments' => 'Các bình luận',
+ 'comment_add' => 'Thêm bình luận',
+ 'comment_none' => 'Không có bình luận nào để hiển thị',
+ 'comment_placeholder' => 'Đăng bình luận tại đây',
+ 'comment_thread_count' => ':count Chuỗi bình luận|:count Chuỗi bình luận',
+ 'comment_archived_count' => ':count Đã lưu trữ',
+ 'comment_archived_threads' => 'Chuỗi đã lưu trữ',
+ 'comment_save' => 'Lưu bình luận',
+ 'comment_new' => 'Bình luận mới',
+ 'comment_created' => 'đã bình luận :createDiff',
+ 'comment_updated' => 'Đã cập nhật :updateDiff bởi :username',
+ 'comment_updated_indicator' => 'Đã cập nhật',
+ 'comment_deleted_success' => 'Bình luận đã bị xóa',
+ 'comment_created_success' => 'Đã thêm bình luận',
+ 'comment_updated_success' => 'Bình luận đã được cập nhật',
+ 'comment_archive_success' => 'Đã lưu trữ bình luận',
+ 'comment_unarchive_success' => 'Đã bỏ lưu trữ bình luận',
+ 'comment_view' => 'Xem bình luận',
+ 'comment_jump_to_thread' => 'Chuyển đến chuỗi',
+ 'comment_delete_confirm' => 'Bạn có chắc bạn muốn xóa bình luận này?',
+ 'comment_in_reply_to' => 'Trả lời cho :commentId',
+ 'comment_reference' => 'Tham chiếu',
+ 'comment_reference_outdated' => '(Đã lỗi thời)',
+ 'comment_editor_explain' => 'Đây là những bình luận đã được để lại trên trang này. Bình luận có thể được thêm & quản lý khi xem trang đã lưu.',
+
+ // Revision
+ 'revision_delete_confirm' => 'Bạn có chắc bạn muốn xóa phiên bản này?',
+ 'revision_restore_confirm' => 'Bạn có chắc bạn muốn khôi phục phiên bản này? Nội dung trang hiện tại sẽ được thay thế.',
+ 'revision_cannot_delete_latest' => 'Không thể xóa phiên bản mới nhất.',
+
+ // Copy view
+ 'copy_consider' => 'Vui lòng xem xét những điều sau đây khi sao chép nội dung.',
+ 'copy_consider_permissions' => 'Cài đặt quyền tùy chỉnh sẽ không được sao chép.',
+ 'copy_consider_owner' => 'Bạn sẽ trở thành chủ sở hữu của tất cả nội dung được sao chép.',
+ 'copy_consider_images' => 'Các tệp hình ảnh trang sẽ không được nhân đôi & các hình ảnh gốc sẽ giữ lại mối quan hệ của chúng với trang mà chúng được tải lên ban đầu.',
+ 'copy_consider_attachments' => 'Các tệp đính kèm trang sẽ không được sao chép.',
+ 'copy_consider_access' => 'Việc thay đổi vị trí, chủ sở hữu hoặc quyền có thể dẫn đến nội dung này có thể truy cập được đối với những người trước đây không có quyền truy cập.',
+
+ // Conversions
+ 'convert_to_shelf' => 'Chuyển đổi thành Kệ sách',
+ 'convert_to_shelf_contents_desc' => 'Bạn có thể chuyển đổi cuốn sách này thành một kệ sách mới với nội dung tương tự. Các chương có trong cuốn sách này sẽ được chuyển đổi thành các cuốn sách mới. Nếu cuốn sách này chứa bất kỳ trang nào không nằm trong một chương, cuốn sách này sẽ được đổi tên và chứa các trang đó, và cuốn sách này sẽ trở thành một phần của kệ sách mới.',
+ 'convert_to_shelf_permissions_desc' => 'Bất kỳ quyền nào được đặt trên cuốn sách này sẽ được sao chép sang kệ sách mới và tất cả các cuốn sách con mới không có quyền riêng của chúng. Lưu ý rằng quyền trên kệ sách không tự động xếp tầng xuống nội dung bên trong, như đối với sách.',
+ 'convert_book' => 'Chuyển đổi sách',
+ 'convert_book_confirm' => 'Bạn có chắc chắn muốn chuyển đổi cuốn sách này?',
+ 'convert_undo_warning' => 'Việc này không thể dễ dàng hoàn tác.',
+ 'convert_to_book' => 'Chuyển đổi thành Sách',
+ 'convert_to_book_desc' => 'Bạn có thể chuyển đổi chương này thành một cuốn sách mới với nội dung tương tự. Bất kỳ quyền nào được đặt trên chương này sẽ được sao chép sang cuốn sách mới nhưng bất kỳ quyền thừa kế nào từ cuốn sách mẹ sẽ không được sao chép, điều này có thể dẫn đến thay đổi kiểm soát truy cập.',
+ 'convert_chapter' => 'Chuyển đổi Chương',
+ 'convert_chapter_confirm' => 'Bạn có chắc chắn muốn chuyển đổi chương này?',
+
+ // References
+ 'references' => 'Tham chiếu',
+ 'references_none' => 'Không có tham chiếu nào được theo dõi đến mục này.',
+ 'references_to_desc' => 'Dưới đây là tất cả nội dung đã biết trong hệ thống liên kết đến mục này.',
+
+ // Watch Options
+ 'watch' => 'Theo dõi',
+ 'watch_title_default' => 'Tùy chọn mặc định',
+ 'watch_desc_default' => 'Khôi phục việc theo dõi chỉ về các tùy chọn thông báo mặc định của bạn.',
+ 'watch_title_ignore' => 'Bỏ qua',
+ 'watch_desc_ignore' => 'Bỏ qua tất cả các thông báo, bao gồm cả những thông báo từ tùy chọn cấp người dùng.',
+ 'watch_title_new' => 'Trang mới',
+ 'watch_desc_new' => 'Thông báo khi bất kỳ trang mới nào được tạo trong mục này.',
+ 'watch_title_updates' => 'Tất cả cập nhật trang',
+ 'watch_desc_updates' => 'Thông báo khi có tất cả các trang mới và thay đổi trang.',
+ 'watch_desc_updates_page' => 'Thông báo khi có tất cả các thay đổi trang.',
+ 'watch_title_comments' => 'Tất cả cập nhật trang & Bình luận',
+ 'watch_desc_comments' => 'Thông báo khi có tất cả các trang mới, thay đổi trang và bình luận mới.',
+ 'watch_desc_comments_page' => 'Thông báo khi có thay đổi trang và bình luận mới.',
+ 'watch_change_default' => 'Thay đổi tùy chọn thông báo mặc định',
+ 'watch_detail_ignore' => 'Đang bỏ qua thông báo',
+ 'watch_detail_new' => 'Đang theo dõi các trang mới',
+ 'watch_detail_updates' => 'Đang theo dõi các trang mới và cập nhật',
+ 'watch_detail_comments' => 'Đang theo dõi các trang mới, cập nhật & bình luận',
+ 'watch_detail_parent_book' => 'Đang theo dõi thông qua sách cha',
+ 'watch_detail_parent_book_ignore' => 'Đang bỏ qua thông qua sách cha',
+ 'watch_detail_parent_chapter' => 'Đang theo dõi thông qua chương cha',
+ 'watch_detail_parent_chapter_ignore' => 'Đang bỏ qua thông qua chương cha',
+];
diff --git a/lang/vi/errors.php b/lang/vi/errors.php
new file mode 100644
index 00000000000..18980c17ea2
--- /dev/null
+++ b/lang/vi/errors.php
@@ -0,0 +1,135 @@
+ 'Bạn không có quyền truy cập đến trang này.',
+ 'permissionJson' => 'Bạn không có quyền để thực hiện hành động này.',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Đã có người sử dụng email :email nhưng với thông tin định danh khác.',
+ 'auth_pre_register_theme_prevention' => 'Tài khoản người dùng không thể đăng ký với các chi tiết được cung cấp',
+ 'email_already_confirmed' => 'Email đã được xác nhận trước đó, Đang đăng nhập.',
+ 'email_confirmation_invalid' => 'Token xác nhận này không hợp lệ hoặc đã được sử dụng trước đó, Xin hãy thử đăng ký lại.',
+ 'email_confirmation_expired' => 'Token xác nhận đã hết hạn, Một email xác nhận mới đã được gửi.',
+ 'email_confirmation_awaiting' => 'Địa chỉ email của tài khoản bạn đang sử dụng cần phải được xác nhận',
+ 'ldap_fail_anonymous' => 'Truy cập đến LDAP sử dụng gán ẩn danh thất bại',
+ 'ldap_fail_authed' => 'Truy cập đến LDAP sử dụng dn và mật khẩu thất bại',
+ 'ldap_extension_not_installed' => 'Tiện ích mở rộng LDAP PHP chưa được cài đặt',
+ 'ldap_cannot_connect' => 'Không thể kết nối đến máy chủ LDAP, mở đầu kết nối thất bại',
+ 'saml_already_logged_in' => 'Đã đăng nhập',
+ 'saml_no_email_address' => 'Không tìm thấy địa chỉ email cho người dùng này trong dữ liệu được cung cấp bới hệ thống xác thực ngoài',
+ 'saml_invalid_response_id' => 'Yêu cầu từ hệ thống xác thực bên ngoài không được nhận diện bởi quy trình chạy cho ứng dụng này. Điều hướng trở lại sau khi đăng nhập có thể đã gây ra vấn đề này.',
+ 'saml_fail_authed' => 'Đăng nhập sử dụng :system thất bại, hệ thống không cung cấp được sự xác thực thành công',
+ 'oidc_already_logged_in' => 'Đã đăng nhập',
+ 'oidc_no_email_address' => 'Không tìm thấy địa chỉ email cho người dùng này, trong dữ liệu được cung cấp bới hệ thống xác thực ngoài',
+ 'oidc_fail_authed' => 'Đăng nhập sử dụng :system thất bại, hệ thống không cung cấp được sự xác thực thành công',
+ 'social_no_action_defined' => 'Không có hành động được xác định',
+ 'social_login_bad_response' => "Xảy ra lỗi trong lúc đăng nhập :socialAccount: \n:error",
+ 'social_account_in_use' => 'Tài khoản :socialAccount này đang được sử dụng, Vui lòng thử đăng nhập bằng tùy chọn :socialAccount.',
+ 'social_account_email_in_use' => 'Địa chỉ email :email đã được sử dụng. Nếu bạn đã có tài khoản bạn có thể kết nối đến tài khoản :socialAccount của mình từ cài đặt cá nhân của bạn.',
+ 'social_account_existing' => ':socialAccount đã được gắn với hồ sơ của bạn từ trước.',
+ 'social_account_already_used_existing' => 'Tài khoản :socialAccount đã được sử dụng bởi một người dùng khác.',
+ 'social_account_not_used' => 'Tài khoản :socialAccount này chưa được liên kết bởi bất cứ người dùng nào. Vui lòng liên kết nó tại cài đặt cá nhân của bạn. ',
+ 'social_account_register_instructions' => 'Nếu bạn chưa có tài khoản, Bạn có thể đăng ký một tài khoản bằng tùy chọn :socialAccount.',
+ 'social_driver_not_found' => 'Không tìm thấy driver cho MXH',
+ 'social_driver_not_configured' => 'Cài đặt MXH :socialAccount của bạn đang không được cấu hình hợp lệ.',
+ 'invite_token_expired' => 'Liên kết mời này đã hết hạn. Bạn có thể thử đặt lại mật khẩu của tài khoản.',
+ 'login_user_not_found' => 'Không tìm thấy người dùng cho hành động này.',
+
+ // System
+ 'path_not_writable' => 'Đường dẫn tệp tin :filePath không thể tải đến được. Đảm bảo rằng đường dẫn này có thể ghi được ở trên máy chủ.',
+ 'cannot_get_image_from_url' => 'Không thể lấy ảnh từ :url',
+ 'cannot_create_thumbs' => 'Máy chủ không thể tạo ảnh nhỏ. Vui lòng kiểm tra bạn đã cài đặt tiện ích mở rộng GD PHP.',
+ 'server_upload_limit' => 'Máy chủ không cho phép tải lên kích thước này. Vui lòng thử lại với tệp tin nhỏ hơn.',
+ 'server_post_limit' => 'Máy chủ không thể nhận lượng dữ liệu được cung cấp. Hãy thử lại với ít dữ liệu hoặc tệp nhỏ hơn.',
+ 'uploaded' => 'Máy chủ không cho phép tải lên kích thước này. Vui lòng thử lại với tệp tin nhỏ hơn.',
+
+ // Drawing & Images
+ 'image_upload_error' => 'Đã xảy ra lỗi khi đang tải lên ảnh',
+ 'image_upload_type_error' => 'Ảnh đang được tải lên không hợp lệ',
+ 'image_upload_replace_type' => 'Các tệp hình ảnh thay thế phải cùng loại',
+ 'image_upload_memory_limit' => 'Không xử lý được hình ảnh tải lên và/hoặc tạo hình thu nhỏ do giới hạn tài nguyên hệ thống.',
+ 'image_thumbnail_memory_limit' => 'Không tạo được các biến thể kích thước hình ảnh do giới hạn tài nguyên hệ thống.',
+ 'image_gallery_thumbnail_memory_limit' => 'Không tạo được hình thu nhỏ thư viện do giới hạn tài nguyên hệ thống.',
+ 'drawing_data_not_found' => 'Không thể tải dữ liệu bản vẽ. Tệp bản vẽ có thể không còn tồn tại hoặc bạn không có quyền truy cập vào nó.',
+
+ // Attachments
+ 'attachment_not_found' => 'Không tìm thấy đính kèm',
+ 'attachment_upload_error' => 'Đã xảy ra lỗi khi tải tệp đính kèm',
+
+ // Pages
+ 'page_draft_autosave_fail' => 'Lưu bản nháp thất bại. Đảm bảo rằng bạn có kết nối đến internet trước khi lưu trang này',
+ 'page_draft_delete_fail' => 'Không thể xóa bản nháp trang và lấy nội dung đã lưu của trang hiện tại',
+ 'page_custom_home_deletion' => 'Không thể xóa trang khi nó đang được đặt là trang chủ',
+
+ // Entities
+ 'entity_not_found' => 'Không tìm thấy thực thể',
+ 'bookshelf_not_found' => 'Không tìm thấy giá sách',
+ 'book_not_found' => 'Không tìm thấy sách',
+ 'page_not_found' => 'Không tìm thấy trang',
+ 'chapter_not_found' => 'Không tìm thấy chương',
+ 'selected_book_not_found' => 'Không tìm thấy sách được chọn',
+ 'selected_book_chapter_not_found' => 'Không tìm thấy Sách hoặc Chương được chọn',
+ 'guests_cannot_save_drafts' => 'Khách không thể lưu bản nháp',
+
+ // Users
+ 'users_cannot_delete_only_admin' => 'Bạn không thể xóa quản trị viên duy nhất',
+ 'users_cannot_delete_guest' => 'Bạn không thể xóa người dùng khách',
+ 'users_could_not_send_invite' => 'Không thể tạo người dùng vì email mời không gửi được',
+
+ // Roles
+ 'role_cannot_be_edited' => 'Không thể chỉnh sửa quyền này',
+ 'role_system_cannot_be_deleted' => 'Quyền này là quyền hệ thống và không thể bị xóa',
+ 'role_registration_default_cannot_delete' => 'Quyền này không thể bị xóa trong khi đang đặt là quyền mặc định khi đăng ký',
+ 'role_cannot_remove_only_admin' => 'Người dùng này là người dùng duy nhất được chỉ định quyền quản trị viên. Gán quyền quản trị viên cho người dùng khác trước khi thử xóa người dùng này.',
+
+ // Comments
+ 'comment_list' => 'Đã có lỗi xảy ra khi tải bình luận.',
+ 'cannot_add_comment_to_draft' => 'Bạn không thể thêm bình luận vào bản nháp.',
+ 'comment_add' => 'Đã xảy ra lỗi khi thêm / sửa bình luận.',
+ 'comment_delete' => 'Đã xảy ra lỗi khi xóa bình luận.',
+ 'empty_comment' => 'Không thể thêm bình luận bị bỏ trống.',
+
+ // Error pages
+ '404_page_not_found' => 'Không Tìm Thấy Trang',
+ 'sorry_page_not_found' => 'Xin lỗi, Không tìm thấy trang bạn đang tìm kiếm.',
+ 'sorry_page_not_found_permission_warning' => 'Nếu trang bạn tìm kiếm tồn tại, có thể bạn đang không có quyền truy cập.',
+ 'image_not_found' => 'Không tìm thấy Ảnh',
+ 'image_not_found_subtitle' => 'Rất tiếc, không thể tìm thấy Ảnh bạn đang tìm kiếm.',
+ 'image_not_found_details' => 'Nếu bạn hi vọng ảnh này tồn tại, rất có thể nó đã bị xóa.',
+ 'return_home' => 'Quay lại trang chủ',
+ 'error_occurred' => 'Đã xảy ra lỗi',
+ 'app_down' => ':appName hiện đang ngoại tuyến',
+ 'back_soon' => 'Nó sẽ sớm hoạt động trở lại.',
+
+ // Import
+ 'import_zip_cant_read' => 'Không thể đọc tệp ZIP.',
+ 'import_zip_cant_decode_data' => 'Không thể tìm và giải mã nội dung ZIP data.json.',
+ 'import_zip_no_data' => 'Dữ liệu tệp ZIP không có nội dung sách, chương hoặc trang mong đợi.',
+ 'import_zip_data_too_large' => 'ZIP data.json content exceeds the configured application maximum upload size.',
+ 'import_validation_failed' => 'Nhập tệp ZIP không hợp lệ với các lỗi:',
+ 'import_zip_failed_notification' => 'Không thể nhập tệp ZIP.',
+ 'import_perms_books' => 'Bạn không có quyền cần thiết để tạo sách.',
+ 'import_perms_chapters' => 'Bạn không có quyền cần thiết để tạo chương.',
+ 'import_perms_pages' => 'Bạn không có quyền cần thiết để tạo trang.',
+ 'import_perms_images' => 'Bạn không có quyền cần thiết để tạo hình ảnh.',
+ 'import_perms_attachments' => 'Bạn không có quyền cần thiết để tạo tệp đính kèm.',
+
+ // API errors
+ 'api_no_authorization_found' => 'Không tìm thấy token ủy quyền trong yêu cầu',
+ 'api_bad_authorization_format' => 'Đã tìm thấy một token ủy quyền trong yêu cầu nhưng định dạng hiển thị không hợp lệ',
+ 'api_user_token_not_found' => 'Không tìm thấy token API nào khớp với token ủy quyền được cung cấp',
+ 'api_incorrect_token_secret' => 'Mã bí mật được cung cấp cho token API đang được sử dụng không hợp lệ',
+ 'api_user_no_api_permission' => 'Chủ của token API đang sử dụng không có quyền gọi API',
+ 'api_user_token_expired' => 'Token sử dụng cho việc ủy quyền đã hết hạn',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => 'Lỗi khi gửi email thử:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'URL không khớp với các máy chủ SSR được cấu hình cho phép',
+];
diff --git a/lang/vi/notifications.php b/lang/vi/notifications.php
new file mode 100644
index 00000000000..45fb4434ffa
--- /dev/null
+++ b/lang/vi/notifications.php
@@ -0,0 +1,29 @@
+ 'Bình luận mới trên trang: :pageName',
+ 'new_comment_intro' => 'Một người dùng đã bình luận trên một trang tại :appName:',
+ 'new_page_subject' => 'Trang mới: :pageName',
+ 'new_page_intro' => 'Một trang mới đã được khởi tạo trong :appName:',
+ 'updated_page_subject' => 'Trang đã cập nhật: :pageName',
+ 'updated_page_intro' => 'Một trang mới đã được cập nhật trong :appName:',
+ 'updated_page_debounce' => 'Để tránh việc nhận quá nhiều thông báo, trong một thời gian, bạn sẽ không nhận được thông báo về những chỉnh sửa tiếp theo cho trang này từ cùng một biên tập viên.',
+ 'comment_mention_subject' => 'You have been mentioned in a comment on page: :pageName',
+ 'comment_mention_intro' => 'You were mentioned in a comment on :appName:',
+
+ 'detail_page_name' => 'Tên Trang:',
+ 'detail_page_path' => 'Đường dẫn trang:',
+ 'detail_commenter' => 'Người bình luận:',
+ 'detail_comment' => 'Bình luận:',
+ 'detail_created_by' => 'Tạo bởi:',
+ 'detail_updated_by' => 'Cập nhật bởi:',
+
+ 'action_view_comment' => 'Xem bình luận',
+ 'action_view_page' => 'Xem Trang',
+
+ 'footer_reason' => 'Đây là thông báo được gửi tới bạn bởi vì :link bao gồm hoạt động cho mục này.',
+ 'footer_reason_link' => 'ưu tiên thông báo của bạn',
+];
diff --git a/resources/lang/vi/pagination.php b/lang/vi/pagination.php
similarity index 100%
rename from resources/lang/vi/pagination.php
rename to lang/vi/pagination.php
diff --git a/resources/lang/vi/passwords.php b/lang/vi/passwords.php
similarity index 100%
rename from resources/lang/vi/passwords.php
rename to lang/vi/passwords.php
diff --git a/lang/vi/preferences.php b/lang/vi/preferences.php
new file mode 100644
index 00000000000..3e06ccd3026
--- /dev/null
+++ b/lang/vi/preferences.php
@@ -0,0 +1,52 @@
+ 'My Account',
+
+ 'shortcuts' => 'Lối tắt',
+ 'shortcuts_interface' => 'UI Shortcut Preferences',
+ 'shortcuts_toggle_desc' => 'Tại đây, bạn có thể bật hoặc tắt các phím tắt trên giao diện hệ thống bàn phím, được sử dụng để điều hướng và thực hiện các thao tác.',
+ 'shortcuts_customize_desc' => 'Bạn có thể tùy chỉnh từng phím tắt dưới đây. Chỉ cần nhấn tổ hợp phím mong muốn của bạn sau khi chọn đầu vào cho một phím tắt.',
+ 'shortcuts_toggle_label' => 'Bật phím tắt',
+ 'shortcuts_section_navigation' => 'Điều hướng',
+ 'shortcuts_section_actions' => 'Hành động chung',
+ 'shortcuts_save' => 'Lưu phím tắt',
+ 'shortcuts_overlay_desc' => 'Lưu ý: Khi các phím tắt được bật, lớp phủ trợ giúp sẽ khả dụng bằng cách nhấn "?" sẽ làm nổi bật các lối tắt khả dụng cho các tác vụ hiện đang hiển thị trên màn hình.',
+ 'shortcuts_update_success' => 'Các tùy chọn phím tắt đã được cập nhật!',
+ 'shortcuts_overview_desc' => 'Manage keyboard shortcuts you can use to navigate the system user interface.',
+
+ 'notifications' => 'Notification Preferences',
+ 'notifications_desc' => 'Control the email notifications you receive when certain activity is performed within the system.',
+ 'notifications_opt_own_page_changes' => 'Notify upon changes to pages I own',
+ 'notifications_opt_own_page_comments' => 'Notify upon comments on pages I own',
+ 'notifications_opt_comment_mentions' => 'Notify when I\'m mentioned in a comment',
+ 'notifications_opt_comment_replies' => 'Notify upon replies to my comments',
+ 'notifications_save' => 'Save Preferences',
+ 'notifications_update_success' => 'Notification preferences have been updated!',
+ 'notifications_watched' => 'Watched & Ignored Items',
+ 'notifications_watched_desc' => 'Below are the items that have custom watch preferences applied. To update your preferences for these, view the item then find the watch options in the sidebar.',
+
+ 'auth' => 'Access & Security',
+ 'auth_change_password' => 'Change Password',
+ 'auth_change_password_desc' => 'Change the password you use to log-in to the application. This must be at least 8 characters long.',
+ 'auth_change_password_success' => 'Password has been updated!',
+
+ 'profile' => 'Profile Details',
+ 'profile_desc' => 'Manage the details of your account which represents you to other users, in addition to details that are used for communication and system personalisation.',
+ 'profile_view_public' => 'View Public Profile',
+ 'profile_name_desc' => 'Configure your display name which will be visible to other users in the system through the activity you perform, and content you own.',
+ 'profile_email_desc' => 'This email will be used for notifications and, depending on active system authentication, system access.',
+ 'profile_email_no_permission' => 'Unfortunately you don\'t have permission to change your email address. If you want to change this, you\'d need to ask an administrator to change this for you.',
+ 'profile_avatar_desc' => 'Select an image which will be used to represent yourself to others in the system. Ideally this image should be square and about 256px in width and height.',
+ 'profile_admin_options' => 'Administrator Options',
+ 'profile_admin_options_desc' => 'Additional administrator-level options, like those to manage role assignments, can be found for your user account in the "Settings > Users" area of the application.',
+
+ 'delete_account' => 'Delete Account',
+ 'delete_my_account' => 'Delete My Account',
+ 'delete_my_account_desc' => 'This will fully delete your user account from the system. You will not be able to recover this account or revert this action. Content you\'ve created, such as created pages and uploaded images, will remain.',
+ 'delete_my_account_warning' => 'Are you sure you want to delete your account?',
+];
diff --git a/lang/vi/settings.php b/lang/vi/settings.php
new file mode 100644
index 00000000000..f5f2377c81b
--- /dev/null
+++ b/lang/vi/settings.php
@@ -0,0 +1,374 @@
+ 'Cài đặt',
+ 'settings_save' => 'Lưu Cài đặt',
+ 'system_version' => 'Phiên bản Hệ thống',
+ 'categories' => 'Danh mục',
+
+ // App Settings
+ 'app_customization' => 'Tuỳ biến',
+ 'app_features_security' => 'Chức năng & Bảo mật',
+ 'app_name' => 'Tên Ứng dụng',
+ 'app_name_desc' => 'Tên này được hiển thị trong header và trong bất kỳ email hệ thống được gửi.',
+ 'app_name_header' => 'Hiển thị tên trong header',
+ 'app_public_access' => 'Quyền truy cập công khai',
+ 'app_public_access_desc' => 'Bật tùy chọn này sẽ cho phép khách, người không cần đăng nhập, truy cập đến nội dung bản BookStack của bạn.',
+ 'app_public_access_desc_guest' => 'Quyền truy cập của khách có thể được điều khiển thông qua người dùng "Guest".',
+ 'app_public_access_toggle' => 'Cho phép truy cập công khai',
+ 'app_public_viewing' => 'Cho phép xem công khai?',
+ 'app_secure_images' => 'Bảo mật tốt hơn cho việc tải lên ảnh',
+ 'app_secure_images_toggle' => 'Bật bảo mật tốt hơn cho các ảnh được tải lên',
+ 'app_secure_images_desc' => 'Vì lý do hiệu năng, tất cả các ảnh đều được truy cập công khai. Tùy chọn này thêm một chuỗi ngẫu nhiên, khó đoán vào phần liên kết đến ảnh. Đảm bảo rằng tránh việc index thư mục để ngăn chặn việc truy cập đến ảnh một cách dễ dàng.',
+ 'app_default_editor' => 'Trình soạn thảo mặc định',
+ 'app_default_editor_desc' => 'Chọn trình soạn thảo nào sẽ được sử dụng theo mặc định khi chỉnh sửa trang mới. Điều này có thể bị ghi đè ở cấp độ trang nơi quyền cho phép.',
+ 'app_custom_html' => 'Tùy chọn nội dung Head HTML',
+ 'app_custom_html_desc' => 'Bất cứ nội dung nào được thêm vào đây sẽ được đưa vào phần cuối của khu vực của mỗi trang. Tiện cho việc ghi đè style hoặc thêm mã phân tích dữ liệu.',
+ 'app_custom_html_disabled_notice' => 'Nội dung tùy biến HTML head bị tắt tại trang cài đặt này để đảm bảo mọi thay đổi làm hỏng hệ thống có để được khôi phục.',
+ 'app_logo' => 'Logo Ứng dụng',
+ 'app_logo_desc' => 'Điều này được sử dụng trong thanh tiêu đề của ứng dụng, trong số những khu vực khác. Hình ảnh này nên có chiều cao 86px. Những hình ảnh lớn sẽ được thu nhỏ lại.',
+ 'app_icon' => 'Biểu tượng ứng dụng',
+ 'app_icon_desc' => 'Biểu tượng này được sử dụng cho các tab trình duyệt và các biểu tượng phím tắt. Đây phải là hình ảnh PNG hình vuông 256px.',
+ 'app_homepage' => 'Trang chủ Ứng dụng',
+ 'app_homepage_desc' => 'Chọn hiển thị để hiện tại trang chủ thay cho hiển thị mặc định. Quyền cho trang được bỏ qua cho các trang được chọn.',
+ 'app_homepage_select' => 'Chọn một trang',
+ 'app_footer_links' => 'Liên kết chân trang',
+ 'app_footer_links_desc' => 'Thêm liên kết để hiển thị trong phần chân trang. Chúng sẽ được hiển thị ở dưới cùng của hầu hết các trang, bao gồm cả những trang không yêu cầu đăng nhập. Bạn có thể sử dụng nhãn "trans::" để dùng bản dịch do hệ thống xác định. Ví dụ: Sử dụng "trans::common.privacy_policy" sẽ cung cấp văn bản được dịch là "Chính sách quyền riêng tư" và "trans::common.terms_of_service" sẽ cung cấp văn bản được dịch là "Điều khoản dịch vụ".',
+ 'app_footer_links_label' => 'Nhãn liên kết',
+ 'app_footer_links_url' => 'Địa chỉ liên kết',
+ 'app_footer_links_add' => 'Thêm liên kết chân trang',
+ 'app_disable_comments' => 'Tắt bình luận',
+ 'app_disable_comments_toggle' => 'Tắt bình luận',
+ 'app_disable_comments_desc' => 'Tắt các bình luận trên tất cả các trang của ứng dụng. Các bình luận đã tồn tại sẽ không được hiển thị.',
+
+ // Color settings
+ 'color_scheme' => 'Bảng màu ứng dụng',
+ 'color_scheme_desc' => 'Đặt các màu được sử dụng trong giao diện người dùng của ứng dụng. Màu sắc có thể được cấu hình riêng cho chế độ tối và sáng để phù hợp nhất với chủ đề và đảm bảo khả năng đọc.',
+ 'ui_colors_desc' => 'Đặt màu chính của ứng dụng và màu liên kết mặc định. Màu chính chủ yếu được sử dụng cho biểu ngữ đầu trang, nút và trang trí giao diện. Màu liên kết mặc định được sử dụng cho các liên kết và hành động dựa trên văn bản, cả trong nội dung đã viết và trong giao diện ứng dụng.',
+ 'app_color' => 'Màu cơ bản',
+ 'link_color' => 'Màu liên kết mặc định',
+ 'content_colors_desc' => 'Đặt màu cho tất cả các thành phần trong phân cấp tổ chức trang. Nên chọn màu có độ sáng tương tự với màu mặc định để có thể đọc được.',
+ 'bookshelf_color' => 'Màu Giá sách',
+ 'book_color' => 'Màu Sách',
+ 'chapter_color' => 'Màu Chương',
+ 'page_color' => 'Màu Trang',
+ 'page_draft_color' => 'Màu Trang Nháp',
+
+ // Registration Settings
+ 'reg_settings' => 'Đăng ký',
+ 'reg_enable' => 'Bật Đăng ký',
+ 'reg_enable_toggle' => 'Bật đăng ký',
+ 'reg_enable_desc' => 'Khi đăng ký được bật, người dùng sẽ có thể tự đăng ký để trở thành người dùng của ứng dụng. Khi đăng kí, người dùng sẽ được cấp một quyền sử dụng mặc định.',
+ 'reg_default_role' => 'Quyền người dùng mặc định sau khi đăng kí',
+ 'reg_enable_external_warning' => 'Tùy chọn trên bị bỏ qua khi xác thực từ bên ngoài LDAP hoặc SAML được bật. Tài khoản người dùng chưa phải là thành viên sẽ được tự động tạo nếu xác thực với hệ thống bên ngoài thành công.',
+ 'reg_email_confirmation' => 'Xác nhận Email',
+ 'reg_email_confirmation_toggle' => 'Yêu cầu xác nhận email',
+ 'reg_confirm_email_desc' => 'Nếu giới hạn tên miền được sử dụng, xác nhận email là bắt buộc và tùy chọn này sẽ bị bỏ qua.',
+ 'reg_confirm_restrict_domain' => 'Giới hạn tên miền',
+ 'reg_confirm_restrict_domain_desc' => 'Điền dấu phẩy ngăn cách danh sách các tên miền email dành cho việc bạn muốn giới hạn đăng nhập. Người dùng sẽ nhận được email xác nhận địa chỉ của họ trước khi được phép tương tác với ứng dụng. Lưu ý rằng người dùng có thể thay đổi địa chỉ email của họ sau khi đăng ký thành công.',
+ 'reg_confirm_restrict_domain_placeholder' => 'Không có giới hạn nào được thiết lập',
+
+ // Sorting Settings
+ 'sorting' => 'Lists & Sorting',
+ 'sorting_book_default' => 'Default Book Sort Rule',
+ 'sorting_book_default_desc' => 'Chọn quy tắc sắp xếp mặc định để áp dụng cho sách mới. Điều này sẽ không ảnh hưởng đến các sách hiện có và có thể được ghi đè cho từng sách.',
+ 'sorting_rules' => 'Quy tắc sắp xếp',
+ 'sorting_rules_desc' => 'Đây là các thao tác sắp xếp được xác định trước có thể được áp dụng cho nội dung trong hệ thống.',
+ 'sort_rule_assigned_to_x_books' => 'Được gán cho :count sách|Được gán cho :count sách',
+ 'sort_rule_create' => 'Tạo quy tắc sắp xếp',
+ 'sort_rule_edit' => 'Chỉnh sửa quy tắc sắp xếp',
+ 'sort_rule_delete' => 'Xóa quy tắc sắp xếp',
+ 'sort_rule_delete_desc' => 'Xóa quy tắc sắp xếp này khỏi hệ thống. Sách sử dụng quy tắc này sẽ trở lại sắp xếp thủ công.',
+ 'sort_rule_delete_warn_books' => 'Quy tắc sắp xếp này hiện đang được sử dụng trên :count sách. Bạn có chắc chắn muốn xóa quy tắc này không?',
+ 'sort_rule_delete_warn_default' => 'Quy tắc sắp xếp này hiện đang được sử dụng làm mặc định cho sách. Bạn có chắc chắn muốn xóa quy tắc này không?',
+ 'sort_rule_details' => 'Chi tiết quy tắc sắp xếp',
+ 'sort_rule_details_desc' => 'Đặt tên cho quy tắc sắp xếp này, tên này sẽ xuất hiện trong danh sách khi người dùng chọn một sắp xếp.',
+ 'sort_rule_operations' => 'Thao tác sắp xếp',
+ 'sort_rule_operations_desc' => 'Cấu hình các hành động sắp xếp sẽ được thực hiện bằng cách di chuyển chúng từ danh sách các thao tác khả dụng. Khi sử dụng, các thao tác sẽ được áp dụng theo thứ tự, từ trên xuống dưới. Bất kỳ thay đổi nào được thực hiện ở đây sẽ được áp dụng cho tất cả các sách được gán khi lưu.',
+ 'sort_rule_available_operations' => 'Thao tác khả dụng',
+ 'sort_rule_available_operations_empty' => 'Không còn thao tác nào',
+ 'sort_rule_configured_operations' => 'Thao tác đã cấu hình',
+ 'sort_rule_configured_operations_empty' => 'Kéo/thêm thao tác từ danh sách "Thao tác khả dụng"',
+ 'sort_rule_op_asc' => '(Tăng dần)',
+ 'sort_rule_op_desc' => '(Giảm dần)',
+ 'sort_rule_op_name' => 'Tên - Theo bảng chữ cái',
+ 'sort_rule_op_name_numeric' => 'Tên - Theo số',
+ 'sort_rule_op_created_date' => 'Ngày tạo',
+ 'sort_rule_op_updated_date' => 'Ngày cập nhật',
+ 'sort_rule_op_chapters_first' => 'Chương trước',
+ 'sort_rule_op_chapters_last' => 'Chương sau',
+ 'sorting_page_limits' => 'Per-Page Display Limits',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => 'Bảo trì',
+ 'maint_image_cleanup' => 'Dọn dẹp ảnh',
+ 'maint_image_cleanup_desc' => 'Quét nội dung trang và phiên bản để kiểm tra xem các ảnh và hình vẽ nào đang được sử dụng và ảnh nào dư thừa. Đảm bảo rằng bạn đã tạo bản sao lưu toàn bộ dữ liệu và ảnh trước khi chạy chức năng này.',
+ 'maint_delete_images_only_in_revisions' => 'Cũng xóa hình ảnh chỉ tồn tại trong các phiên bản trang cũ',
+ 'maint_image_cleanup_run' => 'Chạy Dọn dẹp',
+ 'maint_image_cleanup_warning' => 'Đã tìm thấy :count ảnh có thể không được sử dụng. Bạn muốn chắc rằng muốn xóa các ảnh này?',
+ 'maint_image_cleanup_success' => ':count ảnh có thể không được sử dụng đã được tìm thấy và xóa!',
+ 'maint_image_cleanup_nothing_found' => 'Không tìm thấy ảnh nào không được sử dụng, Không có gì để xóa!',
+ 'maint_send_test_email' => 'Gửi một email thử',
+ 'maint_send_test_email_desc' => 'Chức năng này gửi một email thử đến địa chỉ email bạn chỉ định trong hồ sơ của mình.',
+ 'maint_send_test_email_run' => 'Gửi email thử',
+ 'maint_send_test_email_success' => 'Email đã được gửi đến :address',
+ 'maint_send_test_email_mail_subject' => 'Thử Email',
+ 'maint_send_test_email_mail_greeting' => 'Chức năng gửi email có vẻ đã hoạt động!',
+ 'maint_send_test_email_mail_text' => 'Chúc mừng! Khi bạn nhận được email thông báo này, cài đặt email của bạn có vẻ đã được cấu hình đúng.',
+ 'maint_recycle_bin_desc' => 'Giá, sách, chương & trang đã xóa được gửi vào thùng rác để có thể khôi phục hoặc xóa vĩnh viễn. Các mục cũ hơn trong thùng rác có thể được tự động xóa sau một thời gian tùy thuộc vào cấu hình hệ thống.',
+ 'maint_recycle_bin_open' => 'Mở Thùng Rác',
+ 'maint_regen_references' => 'Tạo lại tài liệu tham khảo',
+ 'maint_regen_references_desc' => 'Hành động này sẽ tạo lại chỉ mục tham chiếu nhiều mục trong cơ sở dữ liệu. Thao tác này thường được xử lý tự động nhưng hành động này có thể hữu ích để lập chỉ mục nội dung cũ hoặc nội dung được thêm vào thông qua các phương pháp không chính thức.',
+ 'maint_regen_references_success' => 'Chỉ mục tham chiếu đã được tạo lại!',
+ 'maint_timeout_command_note' => 'Lưu ý: Hành động này có thể mất thời gian để chạy, điều này có thể dẫn đến các vấn đề về thời gian chờ trong một số môi trường web. Thay vào đó, hành động này được thực hiện bằng cách sử dụng một lệnh đầu cuối.',
+
+ // Recycle Bin
+ 'recycle_bin' => 'Thùng Rác',
+ 'recycle_bin_desc' => 'Tại đây, bạn có thể khôi phục các mục đã bị xóa hoặc chọn xóa chúng vĩnh viễn khỏi hệ thống. Danh sách này không được lọc không giống như các danh sách hoạt động tương tự trong hệ thống áp dụng các bộ lọc quyền.',
+ 'recycle_bin_deleted_item' => 'Mục Đã Xóa',
+ 'recycle_bin_deleted_parent' => 'Thư mục cha',
+ 'recycle_bin_deleted_by' => 'Xóa Bởi',
+ 'recycle_bin_deleted_at' => 'Thời điểm Xóa',
+ 'recycle_bin_permanently_delete' => 'Xóa Vĩnh viễn',
+ 'recycle_bin_restore' => 'Khôi phục',
+ 'recycle_bin_contents_empty' => 'Thùng rác hiện đang trống',
+ 'recycle_bin_empty' => 'Dọn dẹp Thùng Rác',
+ 'recycle_bin_empty_confirm' => 'Thao tác này sẽ hủy vĩnh viễn tất cả các mục trong thùng rác bao gồm cả nội dung có trong mỗi mục. Bạn có chắc chắn muốn làm trống thùng rác?',
+ 'recycle_bin_destroy_confirm' => 'Hành động này sẽ xóa vĩnh viễn mục này khỏi hệ thống, cùng với bất kỳ phần tử con nào được liệt kê bên dưới và bạn sẽ không thể khôi phục nội dung này. Bạn có chắc chắn muốn xóa vĩnh viễn mục này không?',
+ 'recycle_bin_destroy_list' => 'Các mục sẽ bị hủy',
+ 'recycle_bin_restore_list' => 'Các mục sẽ được khôi phục',
+ 'recycle_bin_restore_confirm' => 'Hành động này sẽ khôi phục mục đã xóa, bao gồm mọi phần tử con, về vị trí ban đầu của chúng. Nếu vị trí ban đầu đã bị xóa và hiện đang nằm trong thùng rác, mục cha cũng sẽ cần được khôi phục.',
+ 'recycle_bin_restore_deleted_parent' => 'Mục cha của mục này cũng đã bị xóa. Chúng sẽ vẫn bị xóa cho đến khi mục cha đó cũng được khôi phục.',
+ 'recycle_bin_restore_parent' => 'Khôi phục mục cha',
+ 'recycle_bin_destroy_notification' => 'Đã xóa :count tổng số mục khỏi thùng rác.',
+ 'recycle_bin_restore_notification' => 'Đã khôi phục :count tổng số mục khỏi thùng rác.',
+
+ // Audit Log
+ 'audit' => 'Nhật ký kiểm tra',
+ 'audit_desc' => 'Nhật ký kiểm tra này hiển thị danh sách các hoạt động được theo dõi trong hệ thống. Danh sách này không được lọc không giống như các danh sách hoạt động tương tự trong hệ thống nơi các bộ lọc quyền được áp dụng.',
+ 'audit_event_filter' => 'Bộ lọc sự kiện',
+ 'audit_event_filter_no_filter' => 'Không Lọc',
+ 'audit_deleted_item' => 'Mục Đã Xóa',
+ 'audit_deleted_item_name' => 'Tên: :name',
+ 'audit_table_user' => 'Người dùng',
+ 'audit_table_event' => 'Sự kiện',
+ 'audit_table_related' => 'Mục hoặc chi tiết liên quan',
+ 'audit_table_ip' => 'Địa chỉ IP',
+ 'audit_table_date' => 'Ngày hoạt động',
+ 'audit_date_from' => 'Ngày từ khoảng',
+ 'audit_date_to' => 'Ngày đến khoảng',
+
+ // Role Settings
+ 'roles' => 'Quyền',
+ 'role_user_roles' => 'Quyền người dùng',
+ 'roles_index_desc' => 'Các quyền được sử dụng để nhóm người dùng và cung cấp quyền hệ thống cho các thành viên của họ. Khi một người dùng là thành viên của nhiều quyền, các đặc quyền được cấp sẽ chồng lên nhau và người dùng sẽ thừa hưởng tất cả các khả năng.',
+ 'roles_x_users_assigned' => ':count người dùng được gán|:count người dùng được gán',
+ 'roles_x_permissions_provided' => ':count quyền|:count quyền',
+ 'roles_assigned_users' => 'Người dùng được gán',
+ 'roles_permissions_provided' => 'Quyền được cung cấp',
+ 'role_create' => 'Tạo quyền mới',
+ 'role_delete' => 'Xóa quyền',
+ 'role_delete_confirm' => 'Chức năng này sẽ xóa quyền với tên \':roleName\'.',
+ 'role_delete_users_assigned' => 'Quyền này có :userCount người dùng được gán. Nếu bạn muốn di dời các người dùng từ quyền này hãy chọn một quyền mới bên dưới.',
+ 'role_delete_no_migration' => "Không di dời người dùng",
+ 'role_delete_sure' => 'Bạn có chắc rằng muốn xóa quyền này?',
+ 'role_edit' => 'Sửa quyền',
+ 'role_details' => 'Thông tin chi tiết Quyền',
+ 'role_name' => 'Tên quyền',
+ 'role_desc' => 'Thông tin vắn tắt của Quyền',
+ 'role_mfa_enforced' => 'Yêu cầu xác thực đa yếu tố',
+ 'role_external_auth_id' => 'Mã của xác thực ngoài',
+ 'role_system' => 'Quyền Hệ thống',
+ 'role_manage_users' => 'Quản lý người dùng',
+ 'role_manage_roles' => 'Quản lý quyền và chức năng quyền',
+ 'role_manage_entity_permissions' => 'Quản lý tất cả quyền của các sách, chương & trang',
+ 'role_manage_own_entity_permissions' => 'Quản lý quyền trên sách, chương & trang bạn tạo ra',
+ 'role_manage_page_templates' => 'Quản lý các mẫu trang',
+ 'role_access_api' => 'Truy cập đến API hệ thống',
+ 'role_manage_settings' => 'Quản lý cài đặt của ứng dụng',
+ 'role_export_content' => 'Xuất nội dung',
+ 'role_import_content' => 'Nhập nội dung',
+ 'role_editor_change' => 'Thay đổi trình soạn thảo trang',
+ 'role_notifications' => 'Nhận & quản lý thông báo',
+ 'role_permission_note_users_and_roles' => 'These permissions will technically also provide visibility & searching of users & roles in the system.',
+ 'role_asset' => 'Quyền tài sản (asset)',
+ 'roles_system_warning' => 'Cần lưu ý rằng việc truy cập vào bất kỳ ba quyền trên có thể cho phép người dùng thay đổi đặc quyền của chính họ hoặc đặc quyền của những người khác trong hệ thống. Chỉ gán các vai trò có các quyền này cho những người dùng đáng tin cậy.',
+ 'role_asset_desc' => 'Các quyền này điều khiển truy cập mặc định tới tài sản (asset) nằm trong hệ thống. Quyền tại Sách, Chương và Trang sẽ ghi đè các quyền này.',
+ 'role_asset_admins' => 'Quản trị viên được tự động cấp quyền truy cập đến toàn bộ nội dung, tuy nhiên các tùy chọn đó có thể hiện hoặc ẩn tùy chọn giao diện.',
+ 'role_asset_image_view_note' => 'Điều này liên quan đến khả năng hiển thị trong trình quản lý hình ảnh. Quyền truy cập thực tế vào các tệp hình ảnh đã tải lên sẽ phụ thuộc vào tùy chọn lưu trữ hình ảnh của hệ thống.',
+ 'role_asset_users_note' => 'These permissions will technically also provide visibility & searching of users in the system.',
+ 'role_all' => 'Tất cả',
+ 'role_own' => 'Sở hữu',
+ 'role_controlled_by_asset' => 'Kiểm soát các tài sản (asset) người dùng tải lên',
+ 'role_save' => 'Lưu Quyền',
+ 'role_users' => 'Người dùng được gán quyền này',
+ 'role_users_none' => 'Không có người dùng nào hiện được gán quyền này',
+
+ // Users
+ 'users' => 'Người dùng',
+ 'users_index_desc' => 'Tạo và quản lý các tài khoản người dùng riêng lẻ trong hệ thống. Các tài khoản người dùng được sử dụng để đăng nhập và gán nội dung & hoạt động. Quyền truy cập chủ yếu dựa trên vai trò nhưng quyền sở hữu nội dung của người dùng, cùng với các yếu tố khác, cũng có thể ảnh hưởng đến quyền và truy cập.',
+ 'user_profile' => 'Hồ sơ người dùng',
+ 'users_add_new' => 'Thêm người dùng mới',
+ 'users_search' => 'Tìm kiếm người dùng',
+ 'users_latest_activity' => 'Hoạt động mới nhất',
+ 'users_details' => 'Chi tiết người dùng',
+ 'users_details_desc' => 'Hiển thị tên và địa chỉ email cho người dùng này. Địa chỉ email sẽ được sử dụng để đăng nhập vào ứng dụng.',
+ 'users_details_desc_no_email' => 'Đặt tên cho người dùng này để giúp người dùng khác nhận ra họ.',
+ 'users_role' => 'Quyền người dùng',
+ 'users_role_desc' => 'Chọn quyền mà người dùng sẽ được gán. Nếu người dùng được gán nhiều quyền, các quyền hạn sẽ ghi đè lên nhau và họ sẽ nhận được tất cả các quyền hạn từ quyền được gán.',
+ 'users_password' => 'Mật khẩu người dùng',
+ 'users_password_desc' => 'Đặt mật khẩu được sử dụng để đăng nhập vào ứng dụng. Mật khẩu phải dài ít nhất 8 ký tự.',
+ 'users_send_invite_text' => 'Bạn có thể chọn để gửi cho người dùng này một email mời, giúp họ có thể tự đặt mật khẩu cho chính họ. Nếu không bạn có thể đặt mật khẩu cho họ.',
+ 'users_send_invite_option' => 'Gửi email mời người dùng',
+ 'users_external_auth_id' => 'Mã của xác thực ngoài',
+ 'users_external_auth_id_desc' => 'Khi một hệ thống xác thực bên ngoài đang được sử dụng (chẳng hạn như SAML2, OIDC hoặc LDAP) đây là ID liên kết người dùng BookStack này với tài khoản hệ thống xác thực. Bạn có thể bỏ qua trường này nếu sử dụng xác thực dựa trên email mặc định.',
+ 'users_password_warning' => 'Chỉ điền vào phần bên dưới nếu bạn muốn thay đổi mật khẩu cho người dùng này.',
+ 'users_system_public' => 'Người dùng này đại diện cho bất kỳ khách nào thăm trang của bạn. Nó được tự động gán và không thể dùng để đăng nhập.',
+ 'users_delete' => 'Xóa Người dùng',
+ 'users_delete_named' => 'Xóa người dùng :userName',
+ 'users_delete_warning' => 'Chức năng này sẽ hoàn toàn xóa người dùng với tên \':userName\' khỏi hệ thống.',
+ 'users_delete_confirm' => 'Bạn có chắc muốn xóa người dùng này không?',
+ 'users_migrate_ownership' => 'Di chuyển quyền sở hữu',
+ 'users_migrate_ownership_desc' => 'Chọn một người dùng tại đây nếu bạn muốn một người dùng khác trở thành chủ sở hữu của tất cả các mục hiện thuộc sở hữu của người dùng này.',
+ 'users_none_selected' => 'Chưa chọn người dùng',
+ 'users_edit' => 'Sửa người dùng',
+ 'users_edit_profile' => 'Sửa Hồ sơ',
+ 'users_avatar' => 'Ảnh đại diện',
+ 'users_avatar_desc' => 'Chọn ảnh để đại diện cho người dùng này. Ảnh nên có kích cỡ hình vuông 256px.',
+ 'users_preferred_language' => 'Ngôn ngữ ưu tiên',
+ 'users_preferred_language_desc' => 'Tùy chọn này sẽ thay đổi ngôn ngữ sử dụng cho giao diện người dùng của ứng dụng. Nó sẽ không ảnh hưởng đến bất cứ nội dung nào người dùng tạo ra.',
+ 'users_social_accounts' => 'Tài khoản MXH',
+ 'users_social_accounts_desc' => 'Xem trạng thái của các tài khoản xã hội được kết nối cho người dùng này. Các tài khoản xã hội có thể được sử dụng ngoài hệ thống xác thực chính để truy cập hệ thống.',
+ 'users_social_accounts_info' => 'Bạn có thể kết nối đến các tài khoản khác để đăng nhập nhanh chóng và dễ dàng. Ngắt kết nối đến một tài khoản ở đây không thu hồi việc ủy quyền truy cập trước đó. Thu hồi truy cập của các tài khoản kết nối MXH từ trang cài đặt hồ sơ của bạn.',
+ 'users_social_connect' => 'Kết nối tài khoản',
+ 'users_social_disconnect' => 'Ngắt kết nối tài khoản',
+ 'users_social_status_connected' => 'Đã kết nối',
+ 'users_social_status_disconnected' => 'Đã ngắt kết nối',
+ 'users_social_connected' => 'Tài khoản :socialAccount đã được liên kết với hồ sơ của bạn thành công.',
+ 'users_social_disconnected' => 'Tài khoản :socialAccount đã được ngắt kết nối khỏi hồ sơ của bạn thành công.',
+ 'users_api_tokens' => 'Các Token API',
+ 'users_api_tokens_desc' => 'Tạo và quản lý các mã thông báo truy cập được sử dụng để xác thực với API REST của BookStack. Quyền cho API được quản lý thông qua người dùng mà mã thông báo thuộc về.',
+ 'users_api_tokens_none' => 'Không có Token API nào được tạo cho người dùng này',
+ 'users_api_tokens_create' => 'Tạo Token',
+ 'users_api_tokens_expires' => 'Hết hạn',
+ 'users_api_tokens_docs' => 'Tài liệu API',
+ 'users_mfa' => 'Xác thực đa yếu tố',
+ 'users_mfa_desc' => 'Thiết lập xác thực đa yếu tố như một lớp bảo mật bổ sung cho tài khoản người dùng của bạn.',
+ 'users_mfa_x_methods' => ':count phương thức đã cấu hình|:count phương thức đã cấu hình',
+ 'users_mfa_configure' => 'Cấu hình phương thức',
+
+ // API Tokens
+ 'user_api_token_create' => 'Tạo Token API',
+ 'user_api_token_name' => 'Tên',
+ 'user_api_token_name_desc' => 'Đặt cho token của bạn một tên dễ đọc để nhắc nhở mục đích sử dụng của nó trong tương lai.',
+ 'user_api_token_expiry' => 'Ngày hết hạn',
+ 'user_api_token_expiry_desc' => 'Đặt một ngày hết hạn cho token này. Sau ngày này, các yêu cầu được tạo khi sử dụng token này sẽ không còn hoạt động. Để trống trường này sẽ đặt ngày hết hạn sau 100 năm tới.',
+ 'user_api_token_create_secret_message' => 'Ngay sau khi tạo token này một "Mã Token" & "Mật khẩu Token" sẽ được tạo và hiển thị. Mật khẩu sẽ chỉ được hiện một lần duy nhất nên hãy chắc rằng bạn sao lưu giá trị của nó ở nơi an toàn và bảo mật trước khi tiếp tục.',
+ 'user_api_token' => 'Token API',
+ 'user_api_token_id' => 'Mã Token',
+ 'user_api_token_id_desc' => 'Đây là hệ thống sinh ra định danh không thể chỉnh sửa cho token này, thứ mà sẽ cần phải cung cấp khi yêu cầu API.',
+ 'user_api_token_secret' => 'Mật khẩu Token',
+ 'user_api_token_secret_desc' => 'Đây là mật khẩu được hệ thống tạo ra cho token để phục vụ cho các yêu cầu API này. Nó sẽ chỉ được hiển thị một lần duy nhất nên hãy sao lưu nó vào nơi nào đó an toàn và bảo mật.',
+ 'user_api_token_created' => 'Token được tạo :timeAgo',
+ 'user_api_token_updated' => 'Token được cập nhật :timeAgo',
+ 'user_api_token_delete' => 'Xóa Token',
+ 'user_api_token_delete_warning' => 'Chức năng này sẽ hoàn toàn xóa token API với tên \':tokenName\' khỏi hệ thống.',
+ 'user_api_token_delete_confirm' => 'Bạn có chắc rằng muốn xóa token API này?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhooks là một cách để gửi dữ liệu đến các URL bên ngoài khi một số hành động và sự kiện nhất định xảy ra trong hệ thống, cho phép tích hợp dựa trên sự kiện với các nền tảng bên ngoài như hệ thống nhắn tin hoặc thông báo.',
+ 'webhooks_x_trigger_events' => ':count sự kiện kích hoạt|:count sự kiện kích hoạt',
+ 'webhooks_create' => 'Tạo Webhook mới',
+ 'webhooks_none_created' => 'Chưa có webhooks nào được tạo.',
+ 'webhooks_edit' => 'Chỉnh sửa Webhook',
+ 'webhooks_save' => 'Lưu Webhook',
+ 'webhooks_details' => 'Chi tiết Webhook',
+ 'webhooks_details_desc' => 'Cung cấp một tên thân thiện với người dùng và một điểm cuối POST làm vị trí để dữ liệu webhook được gửi đến.',
+ 'webhooks_events' => 'Sự kiện Webhook',
+ 'webhooks_events_desc' => 'Chọn tất cả các sự kiện sẽ kích hoạt webhook này được gọi.',
+ 'webhooks_events_warning' => 'Hãy nhớ rằng các sự kiện này sẽ được kích hoạt cho tất cả các sự kiện đã chọn, ngay cả khi các quyền tùy chỉnh được áp dụng. Đảm bảo rằng việc sử dụng webhook này sẽ không làm lộ nội dung bí mật.',
+ 'webhooks_events_all' => 'Tất cả các sự kiện hệ thống',
+ 'webhooks_name' => 'Tên Webhook',
+ 'webhooks_timeout' => 'Thời gian chờ yêu cầu Webhook (Giây)',
+ 'webhooks_endpoint' => 'Điểm cuối Webhook',
+ 'webhooks_active' => 'Webhook hoạt động',
+ 'webhook_events_table_header' => 'Sự kiện',
+ 'webhooks_delete' => 'Xóa Webhook',
+ 'webhooks_delete_warning' => 'Điều này sẽ xóa hoàn toàn webhook này, với tên \':webhookName\', khỏi hệ thống.',
+ 'webhooks_delete_confirm' => 'Bạn có chắc chắn muốn xóa webhook này không?',
+ 'webhooks_format_example' => 'Ví dụ định dạng Webhook',
+ 'webhooks_format_example_desc' => 'Dữ liệu webhook được gửi dưới dạng yêu cầu POST đến điểm cuối đã cấu hình dưới dạng JSON theo định dạng bên dưới. Các thuộc tính "related_item" và "url" là tùy chọn và sẽ phụ thuộc vào loại sự kiện được kích hoạt.',
+ 'webhooks_status' => 'Trạng thái Webhook',
+ 'webhooks_last_called' => 'Lần cuối được gọi:',
+ 'webhooks_last_errored' => 'Lần cuối xảy ra lỗi:',
+ 'webhooks_last_error_message' => 'Nội dung lỗi gần nhất:',
+
+ // Licensing
+ 'licenses' => 'Giấy phép',
+ 'licenses_desc' => 'Trang này trình bày chi tiết thông tin giấy phép cho BookStack ngoài các dự án & thư viện được sử dụng trong BookStack. Nhiều dự án được liệt kê có thể chỉ được sử dụng trong ngữ cảnh phát triển.',
+ 'licenses_bookstack' => 'Giấy phép BookStack',
+ 'licenses_php' => 'Giấy phép thư viện PHP',
+ 'licenses_js' => 'Giấy phép thư viện JavaScript',
+ 'licenses_other' => 'Các giấy phép khác',
+ 'license_details' => 'Chi tiết giấy phép',
+
+ //! 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',
+ 'cy' => 'Cymraeg',
+ 'da' => 'Đan Mạch',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/vi/validation.php b/lang/vi/validation.php
new file mode 100644
index 00000000000..d7d9a9de7f6
--- /dev/null
+++ b/lang/vi/validation.php
@@ -0,0 +1,123 @@
+ ':attribute phải được chấp nhận.',
+ 'active_url' => ':attribute không phải là một đường dẫn hợp lệ.',
+ 'after' => ':attribute phải là một ngày sau :date.',
+ 'alpha' => ':attribute chỉ được chứa chữ cái.',
+ 'alpha_dash' => ':attribute chỉ được chứa chữ cái, chữ số, gạch nối và gạch dưới.',
+ 'alpha_num' => ':attribute chỉ được chứa chữ cái hoặc chữ số.',
+ 'array' => ':attribute phải là một mảng.',
+ 'backup_codes' => 'Mã cung cấp không hợp lệ hoặc đã được sử dụng.',
+ 'before' => ':attribute phải là một ngày trước :date.',
+ 'between' => [
+ 'numeric' => ':attribute phải nằm trong khoảng :min đến :max.',
+ 'file' => ':attribute phải nằm trong khoảng :min đến :max KB.',
+ 'string' => ':attribute phải trong khoảng :min đến :max ký tự.',
+ 'array' => ':attribute phải nằm trong khoảng :min đến :max mục.',
+ ],
+ 'boolean' => 'Trường :attribute phải có giá trị đúng hoặc sai.',
+ 'confirmed' => 'Xác nhận :attribute không khớp.',
+ 'date' => ':attribute không phải là ngày hợp lệ.',
+ 'date_format' => ':attribute không khớp với định dạng :format.',
+ 'different' => ':attribute và :other phải khác nhau.',
+ 'digits' => ':attribute phải có :digits chữ số.',
+ 'digits_between' => ':attribute phải có từ :min đến :max chữ số.',
+ 'email' => ':attribute phải là địa chỉ email hợp lệ.',
+ 'ends_with' => ':attribute phải kết thúc bằng một trong các ký tự: :values',
+ 'file' => ':attribute phải được cung cấp dưới dạng tệp hợp lệ.',
+ 'filled' => 'Trường :attribute là bắt buộc.',
+ 'gt' => [
+ 'numeric' => ':attribute phải lớn hơn :value.',
+ 'file' => ':attribute phải lớn hơn :value KB.',
+ 'string' => ':attribute phải có nhiều hơn :value ký tự.',
+ 'array' => ':attribute phải có nhiều hơn :value mục.',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute phải lớn hơn hoặc bằng :value.',
+ 'file' => ':attribute phải lớn hơn hoặc bằng :value KB.',
+ 'string' => ':attribute phải có nhiều hơn hoặc bằng :value ký tự.',
+ 'array' => ':attribute phải có :value mục trở lên.',
+ ],
+ 'exists' => ':attribute đã chọn không hợp lệ.',
+ 'image' => ':attribute phải là ảnh.',
+ 'image_extension' => ':attribute phải có định dạng ảnh hợp lệ và được hỗ trợ.',
+ 'in' => ':attribute đã chọn không hợp lệ.',
+ 'integer' => ':attribute phải là một số nguyên.',
+ 'ip' => ':attribute phải là một địa chỉ IP hợp lệ.',
+ 'ipv4' => ':attribute phải là địa chỉ IPv4 hợp lệ.',
+ 'ipv6' => ':attribute phải là địa chỉ IPv6 hợp lệ.',
+ 'json' => ':attribute phải là một chuỗi JSON hợp lệ.',
+ 'lt' => [
+ 'numeric' => ':attribute phải nhỏ hơn :value.',
+ 'file' => ':attribute phải nhỏ hơn :value KB.',
+ 'string' => ':attribute phải có it hơn :value ký tự.',
+ 'array' => ':attribute phải có ít hơn :value mục.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute phải nhỏ hơn hoặc bằng :value.',
+ 'file' => ':attribute phải nhỏ hơn hoặc bằng :value KB.',
+ 'string' => ':attribute phải có ít hơn hoặc bằng :value ký tự.',
+ 'array' => ':attribute không được có nhiều hơn :value mục.',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute không được lớn hơn :max.',
+ 'file' => ':attribute không được lớn hơn :max KB.',
+ 'string' => ':attribute không được nhiều hơn :max ký tự.',
+ 'array' => ':attribute không thể có nhiều hơn :max mục.',
+ ],
+ 'mimes' => ':attribute phải là tệp tin có kiểu: :values.',
+ 'min' => [
+ 'numeric' => ':attribute phải tối thiểu là :min.',
+ 'file' => ':attribute phải tối thiểu là :min KB.',
+ 'string' => ':attribute phải có tối thiểu :min ký tự.',
+ 'array' => ':attribute phải có tối thiểu :min mục.',
+ ],
+ 'not_in' => ':attribute đã chọn không hợp lệ.',
+ 'not_regex' => 'Định dạng của :attribute không hợp lệ.',
+ 'numeric' => ':attribute phải là một số.',
+ 'regex' => 'Định dạng của :attribute không hợp lệ.',
+ 'required' => 'Trường :attribute là bắt buộc.',
+ 'required_if' => 'Trường :attribute là bắt buộc khi :other là :value.',
+ 'required_with' => 'Trường :attribute là bắt buộc khi :values tồn tại.',
+ 'required_with_all' => 'Trường :attribute là bắt buộc khi :values tồn tại.',
+ 'required_without' => 'Trường :attribute là bắt buộc khi :values không tồn tại.',
+ 'required_without_all' => 'Trường :attribute là bắt buộc khi không có bất cứ :values nào tồn tại.',
+ 'same' => ':attribute và :other phải trùng khớp với nhau.',
+ 'safe_url' => 'Đường dẫn cung cấp có thể không an toàn.',
+ 'size' => [
+ 'numeric' => ':attribute phải có cỡ :size.',
+ 'file' => ':attribute phải có cỡ :size KB.',
+ 'string' => ':attribute phải có :size ký tự.',
+ 'array' => ':attribute phải chứa :size mục.',
+ ],
+ 'string' => ':attribute phải là một chuỗi.',
+ 'timezone' => ':attribute phải là một khu vực hợp lệ.',
+ 'totp' => 'Mã cung cấp không hợp lệ hoặc đã hết hạn.',
+ 'unique' => ':attribute đã có người sử dụng.',
+ 'url' => 'Định dạng của :attribute không hợp lệ.',
+ 'uploaded' => 'Tệp tin đã không được tải lên. Máy chủ không chấp nhận các tệp tin với dung lượng lớn như tệp tin trên.',
+
+ 'zip_file' => ':attribute cần tham chiếu đến một tệp trong ZIP.',
+ 'zip_file_size' => 'The file :attribute must not exceed :size MB.',
+ 'zip_file_mime' => ':attribute cần tham chiếu đến một tệp có kiểu: :validTypes, tìm thấy :foundType.',
+ 'zip_model_expected' => 'Đối tượng dữ liệu được mong đợi nhưng tìm thấy ":type".',
+ 'zip_unique' => ':attribute phải là duy nhất cho kiểu đối tượng trong ZIP.',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => 'Bắt buộc xác nhận mật khẩu',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/zh_CN/activities.php b/lang/zh_CN/activities.php
new file mode 100644
index 00000000000..a2a2acd24f2
--- /dev/null
+++ b/lang/zh_CN/activities.php
@@ -0,0 +1,140 @@
+ '页面已创建',
+ 'page_create_notification' => '页面创建成功',
+ 'page_update' => '页面已更新',
+ 'page_update_notification' => '页面更新成功',
+ 'page_delete' => '页面已删除',
+ 'page_delete_notification' => '页面删除成功',
+ 'page_restore' => '页面已恢复',
+ 'page_restore_notification' => '页面恢复成功',
+ 'page_move' => '页面已移动',
+ 'page_move_notification' => '页面移动成功',
+
+ // Chapters
+ 'chapter_create' => '章节已创建',
+ 'chapter_create_notification' => '章节创建成功',
+ 'chapter_update' => '章节已更新',
+ 'chapter_update_notification' => '章节更新成功',
+ 'chapter_delete' => '章节已删除',
+ 'chapter_delete_notification' => '章节删除成功',
+ 'chapter_move' => '章节已移动',
+ 'chapter_move_notification' => '章节移动成功',
+
+ // Books
+ 'book_create' => '书籍已创建',
+ 'book_create_notification' => '成功创建书籍',
+ 'book_create_from_chapter' => '将章节转换为书籍',
+ 'book_create_from_chapter_notification' => '章节已成功转换为书籍',
+ 'book_update' => '书籍已更新',
+ 'book_update_notification' => '书籍更新成功',
+ 'book_delete' => '书籍已删除',
+ 'book_delete_notification' => '书籍删除成功',
+ 'book_sort' => '书籍已排序',
+ 'book_sort_notification' => '书籍重新排序成功',
+
+ // Bookshelves
+ 'bookshelf_create' => '书架已创建',
+ 'bookshelf_create_notification' => '书架创建成功',
+ 'bookshelf_create_from_book' => '将书籍转换为书架',
+ 'bookshelf_create_from_book_notification' => '书籍已成功转换为书架',
+ 'bookshelf_update' => '书架已更新',
+ 'bookshelf_update_notification' => '书架更新成功',
+ 'bookshelf_delete' => '书架已删除',
+ 'bookshelf_delete_notification' => '书架删除成功',
+
+ // Revisions
+ 'revision_restore' => '已还原修改',
+ 'revision_delete' => '已删除修订',
+ 'revision_delete_notification' => '修订删除成功',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" 已添加到您的收藏',
+ 'favourite_remove_notification' => '":name" 已从您的收藏中删除',
+
+ // Watching
+ 'watch_update_level_notification' => '关注偏好设置已更新成功',
+
+ // Auth
+ 'auth_login' => '已登录',
+ 'auth_register' => '已注册为新用户',
+ 'auth_password_reset_request' => '已请求密码重置',
+ 'auth_password_reset_update' => '重置用户密码',
+ 'mfa_setup_method' => '已配置多重身份验证',
+ 'mfa_setup_method_notification' => '多重身份认证设置成功',
+ 'mfa_remove_method' => '已移除多重身份验证',
+ 'mfa_remove_method_notification' => '多重身份认证已成功移除',
+
+ // Settings
+ 'settings_update' => '设置已更新',
+ 'settings_update_notification' => '设置更新成功',
+ 'maintenance_action_run' => '维护操作已运行',
+
+ // Webhooks
+ 'webhook_create' => 'Webhook 已创建',
+ 'webhook_create_notification' => 'Webhook 创建成功',
+ 'webhook_update' => 'Webhook 已更新',
+ 'webhook_update_notification' => 'Webhook 更新成功',
+ 'webhook_delete' => 'Webhook 已删除',
+ 'webhook_delete_notification' => 'Webhook 删除成功',
+
+ // Imports
+ 'import_create' => '创建导入',
+ 'import_create_notification' => '导入上传成功',
+ 'import_run' => '更新导入',
+ 'import_run_notification' => '内容成功导入',
+ 'import_delete' => '删除导入',
+ 'import_delete_notification' => '导入删除成功',
+
+ // Users
+ 'user_create' => '用户已创建',
+ 'user_create_notification' => '用户创建成功',
+ 'user_update' => '用户已更新',
+ 'user_update_notification' => '用户更新成功',
+ 'user_delete' => '用户已删除',
+ 'user_delete_notification' => '成功移除用户',
+
+ // API Tokens
+ 'api_token_create' => '已创建 API 令牌',
+ 'api_token_create_notification' => '成功创建 API 令牌',
+ 'api_token_update' => '已更新 API 令牌',
+ 'api_token_update_notification' => 'API 令牌更新成功',
+ 'api_token_delete' => '已删除 API 令牌',
+ 'api_token_delete_notification' => 'API 令牌删除成功',
+
+ // Roles
+ 'role_create' => '角色已创建',
+ 'role_create_notification' => '角色创建成功',
+ 'role_update' => '角色已更新',
+ 'role_update_notification' => '角色更新成功',
+ 'role_delete' => '角色已删除',
+ 'role_delete_notification' => '角色删除成功',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => '回收站已清空',
+ 'recycle_bin_restore' => '已从回收站中恢复',
+ 'recycle_bin_destroy' => '已从回收站中移除',
+
+ // Comments
+ 'commented_on' => '评论',
+ 'comment_create' => '评论已添加',
+ 'comment_update' => '评论已更新',
+ 'comment_delete' => '评论已删除',
+
+ // Sort Rules
+ 'sort_rule_create' => '创建排序规则',
+ 'sort_rule_create_notification' => '排序规则创建成功',
+ 'sort_rule_update' => '更新排序规则',
+ 'sort_rule_update_notification' => '排序规则更新成功',
+ 'sort_rule_delete' => '删除排序规则',
+ 'sort_rule_delete_notification' => '排序规则删除成功',
+
+ // Other
+ 'permissions_update' => '权限已更新',
+];
diff --git a/lang/zh_CN/auth.php b/lang/zh_CN/auth.php
new file mode 100644
index 00000000000..8c4ba63f9e2
--- /dev/null
+++ b/lang/zh_CN/auth.php
@@ -0,0 +1,117 @@
+ '用户名或密码错误。',
+ 'throttle' => '您的登录次数过多,请在:seconds秒后重试。',
+
+ // Login & Register
+ 'sign_up' => '注册',
+ 'log_in' => '登录',
+ 'log_in_with' => '使用 :socialDriver 账户登录',
+ 'sign_up_with' => '通过 :socialDriver 账号登录',
+ 'logout' => '注销',
+
+ 'name' => '名称',
+ 'username' => '用户名',
+ 'email' => 'Email地址',
+ 'password' => '密码',
+ 'password_confirm' => '确认密码',
+ 'password_hint' => '必须至少有 8 个字符',
+ 'forgot_password' => '忘记密码?',
+ 'remember_me' => '记住我',
+ 'ldap_email_hint' => '请输入用于此账户的电子邮件。',
+ 'create_account' => '创建账户',
+ 'already_have_account' => '已经有账号了?',
+ 'dont_have_account' => '您还没有账号吗?',
+ 'social_login' => 'SNS登录',
+ 'social_registration' => '使用社交网站账号注册',
+ 'social_registration_text' => '使用其他服务注册并登录。',
+
+ 'register_thanks' => '注册完成!',
+ 'register_confirm' => '请点击查收您的Email,并点击确认。',
+ 'registrations_disabled' => '注册目前被禁用',
+ 'registration_email_domain_invalid' => '该Email域名无权访问此应用程序',
+ 'register_success' => '感谢您注册!您现在已注册并登录。',
+
+ // Login auto-initiation
+ 'auto_init_starting' => '尝试登录中',
+ 'auto_init_starting_desc' => '我们正在联系您的身份验证系统以启动登录过程。如果 5 秒后还没有进展,您可以尝试点击下面的链接。',
+ 'auto_init_start_link' => '继续进行身份验证',
+
+ // Password Reset
+ 'reset_password' => '重置密码',
+ 'reset_password_send_instructions' => '在下面输入您的Email地址,您将收到一封带有密码重置链接的邮件。',
+ 'reset_password_send_button' => '发送重置链接',
+ 'reset_password_sent' => '重置密码的链接将通过您的电子邮箱发送:email。',
+ 'reset_password_success' => '您的密码已成功重置。',
+ 'email_reset_subject' => '重置您的:appName密码',
+ 'email_reset_text' => '您收到此电子邮件是因为我们收到了您的账户的密码重置请求。',
+ 'email_reset_not_requested' => '如果您没有要求重置密码,则不需要采取进一步的操作。',
+
+ // Email Confirmation
+ 'email_confirm_subject' => '确认您在:appName的Email地址',
+ 'email_confirm_greeting' => '感谢您加入:appName!',
+ 'email_confirm_text' => '请点击下面的按钮确认您的Email地址:',
+ 'email_confirm_action' => '确认Email',
+ 'email_confirm_send_error' => '需要Email验证,但系统无法发送电子邮件,请联系网站管理员。',
+ 'email_confirm_success' => '您已成功验证电子邮件地址!您现在可以使用此电子邮件地址登录。',
+ 'email_confirm_resent' => '验证邮件已重新发送,请检查收件箱。',
+ 'email_confirm_thanks' => '感谢您的确认!',
+ 'email_confirm_thanks_desc' => '请稍等,您的确认正在处理。如果您在3秒后未被重定向,请按下面的“继续“链接继续。',
+
+ 'email_not_confirmed' => 'Email地址未验证',
+ 'email_not_confirmed_text' => '您的电子邮件地址尚未确认。',
+ 'email_not_confirmed_click_link' => '请检查注册时收到的电子邮件,然后点击确认链接。',
+ 'email_not_confirmed_resend' => '如果找不到电子邮件,请通过下面的表单重新发送确认Email。',
+ 'email_not_confirmed_resend_button' => '重新发送确认Email',
+
+ // User Invite
+ 'user_invite_email_subject' => '您已受邀加入 :appName!',
+ 'user_invite_email_greeting' => ':appName 已为您创建了一个账户。',
+ 'user_invite_email_text' => '点击下面的按钮以设置账户密码并获得访问权限:',
+ 'user_invite_email_action' => '设置账号密码',
+ 'user_invite_page_welcome' => '欢迎来到 :appName!',
+ 'user_invite_page_text' => '要完成您的账户并获得访问权限,您需要设置一个密码,该密码将在以后访问时用于登录 :appName。',
+ 'user_invite_page_confirm_button' => '确认密码',
+ 'user_invite_success_login' => '密码已设置,您现在可以使用您设置的密码登录 :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => '设置多重身份认证',
+ 'mfa_setup_desc' => '设置多重身份认证能增加您账户的安全性。',
+ 'mfa_setup_configured' => '已经设置过了',
+ 'mfa_setup_reconfigure' => '重新配置',
+ 'mfa_setup_remove_confirmation' => '您确定想要移除多重身份认证吗?',
+ 'mfa_setup_action' => '设置',
+ 'mfa_backup_codes_usage_limit_warning' => '您剩余的备用认证码少于 5 个,请在用完认证码之前生成并保存新的认证码,以防止您的账户被锁定。',
+ 'mfa_option_totp_title' => '移动设备 App',
+ 'mfa_option_totp_desc' => '要使用多重身份认证功能,您需要一个支持 TOTP(基于时间的一次性密码算法) 的移动设备 App,如谷歌身份验证器(Google Authenticator)、Authy 或微软身份验证器(Microsoft Authenticator)。',
+ 'mfa_option_backup_codes_title' => '备用认证码',
+ 'mfa_option_backup_codes_desc' => '生成一组一次性使用的备份码,您将在登录时输入以验证您的身份。 请确保将它们存储在一个安全可靠的地方。',
+ 'mfa_gen_confirm_and_enable' => '确认并启用',
+ 'mfa_gen_backup_codes_title' => '备用认证码设置',
+ 'mfa_gen_backup_codes_desc' => '将下面的认证码存放在一个安全的地方。访问系统时,您可以使用其中的一个验证码进行二次认证。',
+ 'mfa_gen_backup_codes_download' => '下载认证码',
+ 'mfa_gen_backup_codes_usage_warning' => '每个认证码只能使用一次',
+ 'mfa_gen_totp_title' => '移动设备 App',
+ 'mfa_gen_totp_desc' => '要使用多重身份认证功能,您需要一个支持 TOTP(基于时间的一次性密码算法) 的移动设备 App,如谷歌身份验证器(Google Authenticator)、Authy 或微软身份验证器(Microsoft Authenticator)。',
+ 'mfa_gen_totp_scan' => '要开始操作,请使用您的身份验证 App 扫描下面的二维码。',
+ 'mfa_gen_totp_verify_setup' => '验证设置',
+ 'mfa_gen_totp_verify_setup_desc' => '请在下面的框中输入您在身份验证 App 中生成的认证码来验证一切是否正常:',
+ 'mfa_gen_totp_provide_code_here' => '在此输入您的 App 生成的认证码',
+ 'mfa_verify_access' => '认证访问',
+ 'mfa_verify_access_desc' => '您的账户要求您在访问前通过额外的验证确认您的身份。使用您设置的认证方法认证以继续。',
+ 'mfa_verify_no_methods' => '没有设置认证方法',
+ 'mfa_verify_no_methods_desc' => '您的账户没有设置多重身份认证。您需要至少设置一种才能访问。',
+ 'mfa_verify_use_totp' => '使用移动设备 App 进行认证',
+ 'mfa_verify_use_backup_codes' => '使用备用认证码进行认证',
+ 'mfa_verify_backup_code' => '备用认证码',
+ 'mfa_verify_backup_code_desc' => '在下面输入您的其中一个备用认证码:',
+ 'mfa_verify_backup_code_enter_here' => '在这里输入备用认证码',
+ 'mfa_verify_totp_desc' => '在下面输入您的移动 App 生成的认证码:',
+ 'mfa_setup_login_notification' => '多重身份认证已设置,请使用新配置的方法重新登录。',
+];
diff --git a/lang/zh_CN/common.php b/lang/zh_CN/common.php
new file mode 100644
index 00000000000..dde4bdf7db0
--- /dev/null
+++ b/lang/zh_CN/common.php
@@ -0,0 +1,115 @@
+ '取消',
+ 'close' => '关闭',
+ 'confirm' => '确认',
+ 'back' => '返回',
+ 'save' => '保存',
+ 'continue' => '继续',
+ 'select' => '选择',
+ 'toggle_all' => '切换全部',
+ 'more' => '更多',
+
+ // Form Labels
+ 'name' => '名称',
+ 'description' => '概要',
+ 'role' => '角色',
+ 'cover_image' => '封面图片',
+ 'cover_image_description' => '此图像的大小应约为 440 x 250 像素,但会根据需要灵活缩放和裁剪以适应不同场景下的用户界面,因此实际显示尺寸会有所不同。',
+
+ // Actions
+ 'actions' => '操作',
+ 'view' => '浏览',
+ 'view_all' => '查看全部',
+ 'new' => '新',
+ 'create' => '创建',
+ 'update' => '更新',
+ 'edit' => '编辑',
+ 'archive' => '存档',
+ 'unarchive' => '取消存档',
+ 'sort' => '排序',
+ 'move' => '移动',
+ 'copy' => '复制',
+ 'reply' => '回复',
+ 'delete' => '删除',
+ 'delete_confirm' => '确认删除',
+ 'search' => '搜索',
+ 'search_clear' => '清除搜索',
+ 'reset' => '重置',
+ 'remove' => '删除',
+ 'add' => '添加',
+ 'configure' => '配置',
+ 'manage' => '管理',
+ 'fullscreen' => '全屏',
+ 'favourite' => '收藏',
+ 'unfavourite' => '取消收藏',
+ 'next' => '下一页',
+ 'previous' => '上一页',
+ 'filter_active' => '标签过滤器:',
+ 'filter_clear' => '清除过滤器',
+ 'download' => '下载',
+ 'open_in_tab' => '在标签页中打开。',
+ 'open' => '打开',
+
+ // Sort Options
+ 'sort_options' => '排序选项',
+ 'sort_direction_toggle' => '排序方向切换',
+ 'sort_ascending' => '升序',
+ 'sort_descending' => '降序',
+ 'sort_name' => '名称',
+ 'sort_default' => '默认',
+ 'sort_created_at' => '创建时间',
+ 'sort_updated_at' => '更新时间',
+
+ // Misc
+ 'deleted_user' => '删除用户',
+ 'no_activity' => '没有活动要显示',
+ 'no_items' => '没有可用的项目',
+ 'back_to_top' => '回到顶部',
+ 'skip_to_main_content' => '跳转到主要内容',
+ 'toggle_details' => '显示/隐藏详细信息',
+ 'toggle_thumbnails' => '显示/隐藏缩略图',
+ 'details' => '详细信息',
+ 'grid_view' => '网格视图',
+ 'list_view' => '列表视图',
+ 'default' => '默认',
+ 'breadcrumb' => '面包屑导航',
+ 'status' => '状态',
+ 'status_active' => '已激活',
+ 'status_inactive' => '未激活',
+ 'never' => '从未',
+ 'none' => '无',
+
+ // Header
+ 'homepage' => '主页',
+ 'header_menu_expand' => '展开标头菜单',
+ 'profile_menu' => '个人资料',
+ 'view_profile' => '查看个人资料',
+ 'edit_profile' => '编辑个人资料',
+ 'dark_mode' => '深色模式',
+ 'light_mode' => '浅色模式',
+ 'global_search' => '全局搜索',
+
+ // Layout tabs
+ 'tab_info' => '信息',
+ 'tab_info_label' => '标签:显示次要信息',
+ 'tab_content' => '内容',
+ 'tab_content_label' => '标签:显示主要内容',
+
+ // Email Content
+ 'email_action_help' => '如果您无法点击“:actionText”按钮,请将下面的网址复制到您的浏览器中打开:',
+ 'email_rights' => '版权所有',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => '隐私政策',
+ 'terms_of_service' => '服务条款',
+
+ // OpenSearch
+ 'opensearch_description' => '搜索 :appName',
+];
diff --git a/lang/zh_CN/components.php b/lang/zh_CN/components.php
new file mode 100644
index 00000000000..c2ca50d3691
--- /dev/null
+++ b/lang/zh_CN/components.php
@@ -0,0 +1,46 @@
+ '选择图片',
+ 'image_list' => '图片列表',
+ 'image_details' => '图片详情',
+ 'image_upload' => '上传图片',
+ 'image_intro' => '您可以在此选择和管理以前上传到系统的图片。',
+ 'image_intro_upload' => '通过将图片文件拖到此窗口或使用上面的“上传图片”按钮来上传新图片。',
+ 'image_all' => '全部',
+ 'image_all_title' => '查看所有图片',
+ 'image_book_title' => '查看上传到本书的图片',
+ 'image_page_title' => '查看上传到本页面的图片',
+ 'image_search_hint' => '按图片名称搜索',
+ 'image_uploaded' => '上传于 :uploadedDate',
+ 'image_uploaded_by' => '由 :userName 上传',
+ 'image_uploaded_to' => '上传到 :pageLink',
+ 'image_updated' => ':updateDate 更新',
+ 'image_load_more' => '显示更多',
+ 'image_image_name' => '图片名称',
+ 'image_delete_used' => '该图像用于以下页面。',
+ 'image_delete_confirm_text' => '您确认要删除此图片吗?',
+ 'image_select_image' => '选择图片',
+ 'image_dropzone' => '拖放图片或点击此处上传',
+ 'image_dropzone_drop' => '将图片拖放到此处上传',
+ 'images_deleted' => '图片已删除',
+ 'image_preview' => '图片预览',
+ 'image_upload_success' => '图片上传成功',
+ 'image_update_success' => '图片详细信息更新成功',
+ 'image_delete_success' => '图片删除成功',
+ 'image_replace' => '替换图片',
+ 'image_replace_success' => '图片文件更新成功',
+ 'image_rebuild_thumbs' => '重新生成大小变化',
+ 'image_rebuild_thumbs_success' => '图像大小变化成功重建!',
+
+ // Code Editor
+ 'code_editor' => '编辑代码',
+ 'code_language' => '编程语言',
+ 'code_content' => '代码内容',
+ 'code_session_history' => '会话历史',
+ 'code_save' => '保存代码',
+];
diff --git a/lang/zh_CN/editor.php b/lang/zh_CN/editor.php
new file mode 100644
index 00000000000..4bac4cf0d6b
--- /dev/null
+++ b/lang/zh_CN/editor.php
@@ -0,0 +1,182 @@
+ '通用',
+ 'advanced' => '高级',
+ 'none' => '无',
+ 'cancel' => '取消',
+ 'save' => '保存',
+ 'close' => '关闭',
+ 'apply' => '应用',
+ 'undo' => '撤销',
+ 'redo' => '重做',
+ 'left' => '左对齐',
+ 'center' => '居中',
+ 'right' => '右对齐',
+ 'top' => '上对齐',
+ 'middle' => '居中对齐',
+ 'bottom' => '底端对齐',
+ 'width' => '宽度',
+ 'height' => '高度',
+ 'More' => '更多',
+ 'select' => '选择...',
+
+ // Toolbar
+ 'formats' => '格式',
+ 'header_large' => '大标题',
+ 'header_medium' => '中标题',
+ 'header_small' => '小标题',
+ 'header_tiny' => '微标题',
+ 'paragraph' => '段落',
+ 'blockquote' => '块引用',
+ 'inline_code' => '行内代码',
+ 'callouts' => '标注',
+ 'callout_information' => '信息',
+ 'callout_success' => '成功',
+ 'callout_warning' => '警告',
+ 'callout_danger' => '危险',
+ 'bold' => '加粗',
+ 'italic' => '倾斜',
+ 'underline' => '下划线',
+ 'strikethrough' => '删除线',
+ 'superscript' => '上标',
+ 'subscript' => '下标',
+ 'text_color' => '文本颜色',
+ 'highlight_color' => '高亮颜色',
+ 'custom_color' => '自定义颜色',
+ 'remove_color' => '移除颜色',
+ 'background_color' => '背景色',
+ 'align_left' => '左对齐',
+ 'align_center' => '居中',
+ 'align_right' => '右对齐',
+ 'align_justify' => '两端对齐',
+ 'list_bullet' => '无序列表',
+ 'list_numbered' => '有序列表',
+ 'list_task' => '任务列表',
+ 'indent_increase' => '增加缩进',
+ 'indent_decrease' => '减少缩进',
+ 'table' => '表格',
+ 'insert_image' => '插入图片',
+ 'insert_image_title' => '插入/编辑图片',
+ 'insert_link' => '插入/编辑链接',
+ 'insert_link_title' => '插入/编辑链接',
+ 'insert_horizontal_line' => '插入水平线',
+ 'insert_code_block' => '插入代码块',
+ 'edit_code_block' => '编辑代码块',
+ 'insert_drawing' => '插入/编辑绘图',
+ 'drawing_manager' => '绘图管理器',
+ 'insert_media' => '插入/编辑媒体',
+ 'insert_media_title' => '插入/编辑媒体',
+ 'clear_formatting' => '清除格式',
+ 'source_code' => '源代码',
+ 'source_code_title' => '源代码',
+ 'fullscreen' => '全屏',
+ 'image_options' => '图片选项',
+
+ // Tables
+ 'table_properties' => '表格属性',
+ 'table_properties_title' => '表格属性',
+ 'delete_table' => '删除表格',
+ 'table_clear_formatting' => '清除表格格式',
+ 'resize_to_contents' => '根据内容调整大小',
+ 'row_header' => '行头',
+ 'insert_row_before' => '在上方插入行',
+ 'insert_row_after' => '在下方插入行',
+ 'delete_row' => '删除行',
+ 'insert_column_before' => '在左侧插入列',
+ 'insert_column_after' => '在右侧插入列',
+ 'delete_column' => '删除列',
+ 'table_cell' => '单元格',
+ 'table_row' => '行',
+ 'table_column' => '列',
+ 'cell_properties' => '单元格属性',
+ 'cell_properties_title' => '单元格属性',
+ 'cell_type' => '单元格类型',
+ 'cell_type_cell' => '单元格',
+ 'cell_scope' => '范围',
+ 'cell_type_header' => '表头',
+ 'merge_cells' => '合并单元格',
+ 'split_cell' => '拆分单元格',
+ 'table_row_group' => '按行分组',
+ 'table_column_group' => '按列分组',
+ 'horizontal_align' => '水平对齐',
+ 'vertical_align' => '垂直对齐',
+ 'border_width' => '边框宽度',
+ 'border_style' => '边框样式',
+ 'border_color' => '边框颜色',
+ 'row_properties' => '行属性',
+ 'row_properties_title' => '行属性',
+ 'cut_row' => '剪切行',
+ 'copy_row' => '复制行',
+ 'paste_row_before' => '在上方粘贴行',
+ 'paste_row_after' => '在下方粘贴行',
+ 'row_type' => '行类型',
+ 'row_type_header' => '表头',
+ 'row_type_body' => '表体',
+ 'row_type_footer' => '表脚',
+ 'alignment' => '对齐方式',
+ 'cut_column' => '剪切列',
+ 'copy_column' => '复制列',
+ 'paste_column_before' => '在左侧粘贴列',
+ 'paste_column_after' => '在右侧粘贴列',
+ 'cell_padding' => '单元格间距',
+ 'cell_spacing' => '单元格间距',
+ 'caption' => '标题',
+ 'show_caption' => '显示标题',
+ 'constrain' => '保持宽高比',
+ 'cell_border_solid' => '实线',
+ 'cell_border_dotted' => '点虚线',
+ 'cell_border_dashed' => '短虚线',
+ 'cell_border_double' => '双实线',
+ 'cell_border_groove' => '浮入',
+ 'cell_border_ridge' => '浮出',
+ 'cell_border_inset' => '陷入',
+ 'cell_border_outset' => '突出',
+ 'cell_border_none' => '无',
+ 'cell_border_hidden' => '隐藏边框',
+
+ // Images, links, details/summary & embed
+ 'source' => '来源',
+ 'alt_desc' => '替代描述',
+ 'embed' => '嵌入',
+ 'paste_embed' => '在下面粘贴您的嵌入代码:',
+ 'url' => '网址',
+ 'text_to_display' => '要显示的文本',
+ 'title' => '标题',
+ 'browse_links' => '浏览链接',
+ 'open_link' => '打开链接',
+ 'open_link_in' => '打开链接于……',
+ 'open_link_current' => '覆盖当前窗口',
+ 'open_link_new' => '新建窗口',
+ 'remove_link' => '移除链接',
+ 'insert_collapsible' => '插入可折叠块',
+ 'collapsible_unwrap' => '展开',
+ 'edit_label' => '编辑标签',
+ 'toggle_open_closed' => '切换打开/关闭',
+ 'collapsible_edit' => '编辑可折叠块',
+ 'toggle_label' => '切换标签',
+
+ // About view
+ 'about' => '关于编辑器',
+ 'about_title' => '关于所见即所得(WYSIWYG)编辑器',
+ 'editor_license' => '编辑器许可证与版权信息',
+ 'editor_lexical_license' => '该编辑器是 :lexicalLink 的一个分支构建的,并根据 MIT 许可证进行分发.',
+ 'editor_lexical_license_link' => '许可证详细信息请点击此处',
+ 'editor_tiny_license' => '此编辑器是用 :tinyLink 构建的,基于 MIT 许可证。',
+ 'editor_tiny_license_link' => 'TinyMCE 的版权和许可证详细信息可以在这里找到。',
+ 'save_continue' => '保存页面并继续',
+ 'callouts_cycle' => '(继续按下以切换类型)',
+ 'link_selector' => '链接到内容',
+ 'shortcuts' => '快捷键',
+ 'shortcut' => '快捷键',
+ 'shortcuts_intro' => '编辑器中提供了以下快捷键:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => '描述',
+];
diff --git a/lang/zh_CN/entities.php b/lang/zh_CN/entities.php
new file mode 100644
index 00000000000..c4ec0414dab
--- /dev/null
+++ b/lang/zh_CN/entities.php
@@ -0,0 +1,476 @@
+ '最近创建',
+ 'recently_created_pages' => '最近创建的页面',
+ 'recently_updated_pages' => '最近更新的页面',
+ 'recently_created_chapters' => '最近创建的章节',
+ 'recently_created_books' => '最近创建的图书',
+ 'recently_created_shelves' => '最近创建的书架',
+ 'recently_update' => '最近更新',
+ 'recently_viewed' => '最近查看',
+ 'recent_activity' => '近期活动',
+ 'create_now' => '立刻创建',
+ 'revisions' => '修订历史',
+ 'meta_revision' => '版本号 #:revisionCount',
+ 'meta_created' => '创建于 :timeLength',
+ 'meta_created_name' => '由 :user 创建于 :timeLength',
+ 'meta_updated' => '更新于 :timeLength',
+ 'meta_updated_name' => '由 :user 更新于 :timeLength',
+ 'meta_owned_name' => '拥有者 :user',
+ 'meta_reference_count' => '被 :count 个页面引用|被 :count 个页面引用',
+ 'entity_select' => '选择项目',
+ 'entity_select_lack_permission' => '您没有选择此项目所需的权限',
+ 'images' => '图片',
+ 'my_recent_drafts' => '我最近的草稿',
+ 'my_recently_viewed' => '我最近看过',
+ 'my_most_viewed_favourites' => '我浏览最多的收藏',
+ 'my_favourites' => '我的收藏',
+ 'no_pages_viewed' => '您尚未查看任何页面',
+ 'no_pages_recently_created' => '最近没有页面被创建',
+ 'no_pages_recently_updated' => '最近没有页面被更新',
+ 'export' => '导出',
+ 'export_html' => '网页文件',
+ 'export_pdf' => 'PDF文件',
+ 'export_text' => '纯文本文件',
+ 'export_md' => 'Markdown 文件',
+ 'export_zip' => '便携版本 ZIP',
+ 'default_template' => '默认页面模板',
+ 'default_template_explain' => '指定一个页面模板,该模板将作为此项目中所有页面的默认内容。请注意,仅当页面创建者具有对所选页面模板的查看访问权限时,此功能才会生效。',
+ 'default_template_select' => '选择模板页面',
+ 'import' => '导入',
+ 'import_validate' => '验证导入',
+ 'import_desc' => '使用便携式 zip 导出从相同或不同的实例导入书籍、章节和页面。选择一个 ZIP 文件以继续。文件上传并验证后,您就可以在下一个视图中配置和确认导入。',
+ 'import_zip_select' => '选择要上传的 ZIP 文件',
+ 'import_zip_validation_errors' => '验证提供的 ZIP 文件时检测到错误:',
+ 'import_pending' => '等待导入',
+ 'import_pending_none' => '尚未开始导入。',
+ 'import_continue' => '继续导入',
+ 'import_continue_desc' => '查看从上传的 ZIP 文件中导入的内容。准备就绪后,运行导入将其内容添加到本系统中。成功导入后,上传的 ZIP 导入文件将自动删除。',
+ 'import_details' => '导入详情',
+ 'import_run' => '执行导入',
+ 'import_size' => ':size 导入 ZIP 文件大小',
+ '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' => '导航页面',
+ '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_save' => '保存权限',
+ 'permissions_owner' => '拥有者',
+ 'permissions_role_everyone_else' => '其他所有人',
+ 'permissions_role_everyone_else_desc' => '为所有未被特别覆盖的角色设置权限。',
+ 'permissions_role_override' => '覆盖角色权限',
+ 'permissions_inherit_defaults' => '继承默认值',
+
+ // Search
+ 'search_results' => '搜索结果',
+ 'search_total_results_found' => '共找到了:count个结果',
+ 'search_clear' => '清除搜索',
+ 'search_no_pages' => '没有找到相匹配的页面',
+ 'search_for_term' => '“:term”的搜索结果',
+ 'search_more' => '更多结果',
+ 'search_advanced' => '高级搜索',
+ 'search_terms' => '搜索关键词',
+ 'search_content_type' => '种类',
+ 'search_exact_matches' => '精确匹配',
+ 'search_tags' => '标签搜索',
+ 'search_options' => '选项',
+ 'search_viewed_by_me' => '我看过的',
+ 'search_not_viewed_by_me' => '我没看过的',
+ 'search_permissions_set' => '权限设置',
+ 'search_created_by_me' => '我创建的',
+ 'search_updated_by_me' => '我更新的',
+ 'search_owned_by_me' => '我拥有的',
+ 'search_date_options' => '日期选项',
+ 'search_updated_before' => '在此之前更新',
+ 'search_updated_after' => '在此之后更新',
+ 'search_created_before' => '在此之前创建',
+ 'search_created_after' => '在此之后创建',
+ 'search_set_date' => '设置日期',
+ 'search_update' => '只显示更新操作',
+
+ // Shelves
+ 'shelf' => '书架',
+ 'shelves' => '书架',
+ 'x_shelves' => ':count 书架|:count 书架',
+ 'shelves_empty' => '当前未创建书架',
+ 'shelves_create' => '创建新书架',
+ 'shelves_popular' => '热门书架',
+ 'shelves_new' => '新书架',
+ 'shelves_new_action' => '新书架',
+ 'shelves_popular_empty' => '最热门的书架',
+ 'shelves_new_empty' => '最新创建的书架',
+ 'shelves_save' => '保存书架',
+ 'shelves_books' => '书籍已在此书架里',
+ 'shelves_add_books' => '将书籍加入此书架',
+ 'shelves_drag_books' => '拖动下面的书籍将其添加到此书架',
+ 'shelves_empty_contents' => '这个书架没有分配书籍',
+ 'shelves_edit_and_assign' => '编辑书架以分配书籍',
+ 'shelves_edit_named' => '编辑书架 :name',
+ 'shelves_edit' => '编辑书架',
+ 'shelves_delete' => '删除书架',
+ 'shelves_delete_named' => '删除书架 :name',
+ 'shelves_delete_explain' => "此操作将删除书架 ”:name”。书架中的书籍不会被删除。",
+ 'shelves_delete_confirmation' => '您确定要删除此书架吗?',
+ 'shelves_permissions' => '书架权限',
+ 'shelves_permissions_updated' => '书架权限已更新',
+ 'shelves_permissions_active' => '书架权限已启用',
+ 'shelves_permissions_cascade_warning' => '书架上的权限不会自动应用到书架里的书籍上,这是因为书籍可以在多个书架上存在。使用下面的选项可以将权限复制到书架里的书籍上。',
+ 'shelves_permissions_create' => '书架创建权限仅用于使用下面的操作将权限复制到子书籍。这个权限不是用来控制创建书籍的。',
+ 'shelves_copy_permissions_to_books' => '将权限复制到书籍',
+ 'shelves_copy_permissions' => '复制权限',
+ 'shelves_copy_permissions_explain' => '此操作会将此书架的当前权限设置应用于其中包含的所有书籍上。 启用前请确保已保存对此书架权限的任何更改。',
+ 'shelves_copy_permission_success' => '书架权限已复制到 :count 本书籍上',
+
+ // Books
+ 'book' => '书籍',
+ 'books' => '书籍',
+ 'x_books' => ':count 本书',
+ 'books_empty' => '不存在已创建的书',
+ 'books_popular' => '热门书籍',
+ 'books_recent' => '最近的书',
+ 'books_new' => '新书',
+ 'books_new_action' => '新书',
+ 'books_popular_empty' => '最受欢迎的书籍将出现在这里。',
+ 'books_new_empty' => '最近创建的书籍将出现在这里。',
+ 'books_create' => '创建书籍',
+ 'books_delete' => '删除书籍',
+ 'books_delete_named' => '删除书籍「:bookName」',
+ 'books_delete_explain' => '此操作将删除书籍 “:bookName”。书籍中的所有的章节和页面都会被删除。',
+ 'books_delete_confirmation' => '您确定要删除此书籍吗?',
+ 'books_edit' => '编辑书籍',
+ 'books_edit_named' => '编辑书籍「:bookName」',
+ 'books_form_book_name' => '书名',
+ 'books_save' => '保存书籍',
+ 'books_permissions' => '书籍权限',
+ 'books_permissions_updated' => '书籍权限已更新',
+ 'books_empty_contents' => '本书目前没有页面或章节。',
+ 'books_empty_create_page' => '创建页面',
+ 'books_empty_sort_current_book' => '排序当前书籍',
+ 'books_empty_add_chapter' => '添加章节',
+ 'books_permissions_active' => '书籍权限已启用',
+ 'books_search_this' => '搜索这本书',
+ 'books_navigation' => '书籍导航',
+ '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_chapters_first' => '章节正序',
+ 'books_sort_chapters_last' => '章节倒序',
+ 'books_sort_show_other' => '显示其他书籍',
+ 'books_sort_save' => '保存新顺序',
+ 'books_sort_show_other_desc' => '在此添加其他书籍进入排序界面,这样就可以轻松跨书籍重新排序。',
+ 'books_sort_move_up' => '上移',
+ 'books_sort_move_down' => '下移',
+ 'books_sort_move_prev_book' => '移动到上一书籍',
+ 'books_sort_move_next_book' => '移动到下一书籍',
+ 'books_sort_move_prev_chapter' => '移动到上一章节',
+ 'books_sort_move_next_chapter' => '移动到下一章节',
+ 'books_sort_move_book_start' => '移动到书籍开头',
+ 'books_sort_move_book_end' => '移动到书籍结尾',
+ 'books_sort_move_before_chapter' => '移动到章节前',
+ 'books_sort_move_after_chapter' => '移至章节后',
+ 'books_copy' => '复制书籍',
+ 'books_copy_success' => '书籍已成功复制',
+
+ // Chapters
+ 'chapter' => '章节',
+ 'chapters' => '章节',
+ 'x_chapters' => ':count个章节',
+ 'chapters_popular' => '热门章节',
+ 'chapters_new' => '新章节',
+ 'chapters_create' => '创建章节',
+ 'chapters_delete' => '删除章节',
+ 'chapters_delete_named' => '删除章节「:chapterName」',
+ 'chapters_delete_explain' => '此操作将删除章节 “:chapterName”。章节中的所有页面都会被删除。',
+ 'chapters_delete_confirm' => '您确定要删除此章节吗?',
+ 'chapters_edit' => '编辑章节',
+ 'chapters_edit_named' => '编辑章节「:chapterName」',
+ 'chapters_save' => '保存章节',
+ 'chapters_move' => '移动章节',
+ 'chapters_move_named' => '移动章节「:chapterName」',
+ 'chapters_copy' => '复制章节',
+ 'chapters_copy_success' => '章节已成功复制',
+ 'chapters_permissions' => '章节权限',
+ 'chapters_empty' => '本章目前没有页面。',
+ 'chapters_permissions_active' => '章节权限已启用',
+ 'chapters_permissions_success' => '章节权限已更新',
+ 'chapters_search_this' => '从本章节搜索',
+ 'chapter_sort_book' => '排序书籍',
+
+ // Pages
+ 'page' => '页面',
+ 'pages' => '页面',
+ 'x_pages' => ':count个页面',
+ 'pages_popular' => '热门页面',
+ 'pages_new' => '新页面',
+ 'pages_attachments' => '附件',
+ 'pages_navigation' => '页面导航',
+ 'pages_delete' => '删除页面',
+ 'pages_delete_named' => '删除页面“:pageName”',
+ 'pages_delete_draft_named' => '删除草稿页面“:pageName”',
+ 'pages_delete_draft' => '删除草稿页面',
+ 'pages_delete_success' => '页面已删除',
+ 'pages_delete_draft_success' => '草稿页面已删除',
+ 'pages_delete_warning_template' => '此页面是当前书籍或章节的默认页面模板。删除此页面后,这些书籍或章节的默认页面模板将被取消。',
+ 'pages_delete_confirm' => '您确定要删除此页面吗?',
+ 'pages_delete_draft_confirm' => '您确定要删除此草稿页面吗?',
+ 'pages_editing_named' => '正在编辑页面“:pageName”',
+ 'pages_edit_draft_options' => '草稿选项',
+ 'pages_edit_save_draft' => '保存草稿',
+ 'pages_edit_draft' => '编辑页面草稿',
+ 'pages_editing_draft' => '正在编辑草稿',
+ 'pages_editing_page' => '正在编辑页面',
+ 'pages_edit_draft_save_at' => '草稿保存于 ',
+ 'pages_edit_delete_draft' => '删除草稿',
+ 'pages_edit_delete_draft_confirm' => '您确定要删除您的草稿页面更改吗?自上次完整保存以来的所有更改都将丢失,编辑器将更新为最新非草稿页面。',
+ 'pages_edit_discard_draft' => '放弃草稿',
+ 'pages_edit_switch_to_markdown' => '切换到 Markdown 编辑器',
+ 'pages_edit_switch_to_markdown_clean' => '(整理内容)',
+ 'pages_edit_switch_to_markdown_stable' => '(保留内容)',
+ 'pages_edit_switch_to_wysiwyg' => '切换到所见即所得编辑器',
+ 'pages_edit_switch_to_new_wysiwyg' => '切换到新的所见即所得',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(正在Beta测试中)',
+ 'pages_edit_set_changelog' => '更新说明',
+ 'pages_edit_enter_changelog_desc' => '输入对您所做更改的简要说明',
+ 'pages_edit_enter_changelog' => '输入更新说明',
+ 'pages_editor_switch_title' => '切换编辑器',
+ 'pages_editor_switch_are_you_sure' => '您确定要更改此页面的编辑器吗?',
+ 'pages_editor_switch_consider_following' => '更改编辑器时请注意以下事项:',
+ 'pages_editor_switch_consideration_a' => '一旦保存,任何未来的编辑都将使用新的编辑器,包括那些没有权限自行更改编辑器类型的用户。',
+ 'pages_editor_switch_consideration_b' => '在某些情况下这可能会导致丢失页面格式或功能损坏。',
+ 'pages_editor_switch_consideration_c' => '上次保存后修改的标签和更改日志将不会被保存。',
+ 'pages_save' => '保存页面',
+ 'pages_title' => '页面标题',
+ 'pages_name' => '页面名',
+ 'pages_md_editor' => '编者',
+ 'pages_md_preview' => '预览',
+ 'pages_md_insert_image' => '插入图片',
+ 'pages_md_insert_link' => '插入项目链接',
+ 'pages_md_insert_drawing' => '插入图表',
+ 'pages_md_show_preview' => '显示预览',
+ 'pages_md_sync_scroll' => '同步预览滚动',
+ 'pages_md_plain_editor' => '纯文本编辑器',
+ 'pages_drawing_unsaved' => '找到未保存的绘图',
+ 'pages_drawing_unsaved_confirm' => '从之前保存失败的绘图中发现了可恢复的数据。您想恢复并继续编辑这个未保存的绘图吗?',
+ 'pages_not_in_chapter' => '本页面不在某章节中',
+ 'pages_move' => '移动页面',
+ 'pages_copy' => '复制页面',
+ 'pages_copy_desination' => '复制目的地',
+ 'pages_copy_success' => '页面复制完成',
+ 'pages_permissions' => '页面权限',
+ 'pages_permissions_success' => '页面权限已更新',
+ 'pages_revision' => '修订',
+ 'pages_revisions' => '页面修订',
+ 'pages_revisions_desc' => '下面列出的是该页面的所有过去修订。如果权限允许,您可以回顾、比较和恢复旧的页面版本。页面的完整历史可能不会在这里完全反映出来,因为根据系统配置,旧的修订可能会被自动删除。',
+ 'pages_revisions_named' => '“:pageName”页面修订',
+ 'pages_revision_named' => '“:pageName”页面修订',
+ 'pages_revision_restored_from' => '恢复到 #:id :summary',
+ 'pages_revisions_created_by' => '创建者',
+ 'pages_revisions_date' => '修订日期',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => '修订号',
+ 'pages_revisions_numbered' => '修订 #:id',
+ 'pages_revisions_numbered_changes' => '修改 #:id ',
+ 'pages_revisions_editor' => '编辑器类型',
+ 'pages_revisions_changelog' => '更新说明',
+ 'pages_revisions_changes' => '查看更改',
+ 'pages_revisions_current' => '当前版本',
+ 'pages_revisions_preview' => '预览',
+ 'pages_revisions_restore' => '恢复',
+ 'pages_revisions_none' => '此页面没有修订',
+ 'pages_copy_link' => '复制链接',
+ 'pages_edit_content_link' => '跳转到编辑器中的部分',
+ 'pages_pointer_enter_mode' => '进入部分选择模式',
+ 'pages_pointer_label' => '页面部分选项',
+ 'pages_pointer_permalink' => '页面部分永久链接',
+ 'pages_pointer_include_tag' => '页面部分包含标签',
+ 'pages_pointer_toggle_link' => '永久链接模式,按下显示包含标签',
+ 'pages_pointer_toggle_include' => '包含标签模式,按下显示永久链接',
+ 'pages_permissions_active' => '页面权限已启用',
+ 'pages_initial_revision' => '初始发布',
+ 'pages_references_update_revision' => '系统自动更新的内部链接',
+ 'pages_initial_name' => '新页面',
+ 'pages_editing_draft_notification' => '您正在编辑在 :timeDiff 内保存的草稿.',
+ 'pages_draft_edited_notification' => '此后,此页面已经被更新,建议您放弃此草稿。',
+ 'pages_draft_page_changed_since_creation' => '这个页面在您的草稿创建后被其他用户更新了,您目前的草稿不包含新的内容。建议您放弃此草稿,或是注意不要覆盖新的页面更改。',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count 位用户已开始编辑此页面',
+ 'start_b' => '用户 “:userName” 已经开始编辑此页面',
+ 'time_a' => '自页面上次更新以来',
+ 'time_b' => '在最近 :minCount 分钟',
+ 'message' => ':time :start。注意不要覆盖他人的更新!',
+ ],
+ 'pages_draft_discarded' => '草稿已丢弃!编辑器已更新到当前页面内容',
+ 'pages_draft_deleted' => '草稿已删除!编辑器已更新为当前页面内容',
+ 'pages_specific' => '具体页面',
+ 'pages_is_template' => '页面模板',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => '切换侧边栏',
+ 'page_tags' => '页面标签',
+ 'chapter_tags' => '章节标签',
+ 'book_tags' => '书籍标签',
+ 'shelf_tags' => '书架标签',
+ 'tag' => '标签',
+ 'tags' => '标签',
+ 'tags_index_desc' => '标签是一种灵活的分类形式,可以应用于系统内的内容。标签可以有一个键和值,值是可选的。应用后就可以使用标签的名称和值来搜索内容。',
+ 'tag_name' => '标签名称',
+ 'tag_value' => '标签值 (可选)',
+ 'tags_explain' => "添加一些标签以更好地对您的内容进行分类。\n您可以为标签分配一个值,以进行更好的进行管理。",
+ 'tags_add' => '添加另一个标签',
+ 'tags_remove' => '删除此标签',
+ 'tags_usages' => '标签总使用量',
+ 'tags_assigned_pages' => '有这个标签的页面',
+ 'tags_assigned_chapters' => '有这个标签的章节',
+ 'tags_assigned_books' => '有这个标签的书籍',
+ 'tags_assigned_shelves' => '有这个标签的书架',
+ 'tags_x_unique_values' => ':count 个不重复项目',
+ 'tags_all_values' => '所有值',
+ 'tags_view_tags' => '查看标签',
+ 'tags_view_existing_tags' => '查看已有的标签',
+ 'tags_list_empty_hint' => '您可以在页面编辑器的侧边栏添加标签,或者在编辑书籍、章节、书架时添加。',
+ 'attachments' => '附件',
+ 'attachments_explain' => '上传一些文件或附加一些链接显示在您的网页上。这些在页面的侧边栏中可见。',
+ 'attachments_explain_instant_save' => '这里的更改将立即保存。',
+ 'attachments_upload' => '上传文件',
+ 'attachments_link' => '附加链接',
+ 'attachments_upload_drop' => '或者,您也可以将文件拖放到这里并将其作为附件上传',
+ 'attachments_set_link' => '设置链接',
+ 'attachments_delete' => '您确定要删除此附件吗?',
+ 'attachments_dropzone' => '将文件拖放到此处上传',
+ 'attachments_no_files' => '尚未上传文件',
+ 'attachments_explain_link' => '如果您不想上传文件,则可以附加链接,这可以是指向其他页面的链接,也可以是指向云端文件的链接。',
+ 'attachments_link_name' => '链接名',
+ 'attachment_link' => '附件链接',
+ 'attachments_link_url' => '链接到文件',
+ 'attachments_link_url_hint' => '网站或文件的网址',
+ 'attach' => '附加',
+ 'attachments_insert_link' => '将附加链接添加到页面',
+ 'attachments_edit_file' => '编辑文件',
+ 'attachments_edit_file_name' => '文件名',
+ 'attachments_edit_drop_upload' => '删除文件或点击这里上传并覆盖',
+ 'attachments_order_updated' => '附件顺序已更新',
+ 'attachments_updated_success' => '附件信息已更新',
+ 'attachments_deleted' => '附件已删除',
+ 'attachments_file_uploaded' => '附件上传成功',
+ 'attachments_file_updated' => '附件更新成功',
+ 'attachments_link_attached' => '链接成功附加到页面',
+ 'templates' => '模板',
+ 'templates_set_as_template' => '设置为模板',
+ 'templates_explain_set_as_template' => '您可以将此页面设置为模板,以便在创建其他页面时利用其内容。 如果其他用户对此页面具有查看权限,则将可以使用此模板。',
+ 'templates_replace_content' => '替换页面内容',
+ 'templates_append_content' => '附加到页面内容',
+ 'templates_prepend_content' => '追加到页面内容',
+
+ // Profile View
+ 'profile_user_for_x' => '来这里:time了',
+ 'profile_created_content' => '已创建内容',
+ 'profile_not_created_pages' => ':userName尚未创建任何页面',
+ 'profile_not_created_chapters' => ':userName尚未创建任何章节',
+ 'profile_not_created_books' => ':userName尚未创建任何书籍',
+ 'profile_not_created_shelves' => ':userName 尚未创建任何书架',
+
+ // Comments
+ 'comment' => '评论',
+ 'comments' => '评论',
+ 'comment_add' => '添加评论',
+ 'comment_none' => '没有要显示的评论',
+ 'comment_placeholder' => '在这里评论',
+ 'comment_thread_count' => ':count 条',
+ 'comment_archived_count' => ':count 条评论已存档',
+ 'comment_archived_threads' => '已存档的贴子',
+ 'comment_save' => '保存评论',
+ 'comment_new' => '新评论',
+ 'comment_created' => '评论于 :createDiff',
+ 'comment_updated' => '更新于 :updateDiff (:username)',
+ 'comment_updated_indicator' => '已更新',
+ 'comment_deleted_success' => '评论已删除',
+ 'comment_created_success' => '评论已添加',
+ 'comment_updated_success' => '评论已更新',
+ 'comment_archive_success' => '评论已存档',
+ 'comment_unarchive_success' => '评论已取消存档',
+ 'comment_view' => '查看评论',
+ 'comment_jump_to_thread' => '跳转到贴子',
+ 'comment_delete_confirm' => '您确定要删除这条评论?',
+ 'comment_in_reply_to' => '回复 :commentId',
+ 'comment_reference' => '参考',
+ 'comment_reference_outdated' => '(已过时)',
+ 'comment_editor_explain' => '这里是此页面上留下的评论。查看已保存的页面时可以添加和管理评论。',
+
+ // Revision
+ 'revision_delete_confirm' => '您确定要删除此修订版吗?',
+ 'revision_restore_confirm' => '您确定要恢复到此修订版吗?恢复后当前页面内容将被替换。',
+ 'revision_cannot_delete_latest' => '无法删除最新版本。',
+
+ // Copy view
+ 'copy_consider' => '复制内容时请注意以下事项。',
+ 'copy_consider_permissions' => '自定义权限设置将不会被复制。',
+ 'copy_consider_owner' => '您将成为所有已复制内容的所有者。',
+ 'copy_consider_images' => '页面中的图像文件不会被复制,原始图像将保留它们与最初上传到的页面的关系。',
+ 'copy_consider_attachments' => '页面中的附件不会被复制。',
+ 'copy_consider_access' => '改变位置、所有者或权限可能会导致此内容被以前无法访问的人访问。',
+
+ // Conversions
+ 'convert_to_shelf' => '转换为书架',
+ 'convert_to_shelf_contents_desc' => '你可以将这本书转换为具有相同内容的新书架。本书中的章节将被转换为书籍。如果这本书包含有任何不在章节分类中的页面,那么将会有一本单独的书籍包含这些页面,这本书也将成为新书架的一部分。',
+ 'convert_to_shelf_permissions_desc' => '在这本书上设置的任何权限都将复制到所有未强制执行权限的新书架和新子书籍上。请注意,书架上的权限不会像书籍那样继承到内容物上。',
+ 'convert_book' => '转换书籍',
+ 'convert_book_confirm' => '您确定要转换此书籍吗?',
+ 'convert_undo_warning' => '这可不能轻易撤消。',
+ 'convert_to_book' => '转换为书籍',
+ 'convert_to_book_desc' => '您可以将此章节转换为具有相同内容的新书籍。此章节中设置的任何权限都将复制到新书籍上,但从父书籍继承的任何权限都不会被复制,这可能会导致访问控制发生变化。',
+ 'convert_chapter' => '转换章节',
+ 'convert_chapter_confirm' => '您确定要转换此章节吗?',
+
+ // References
+ 'references' => '引用',
+ 'references_none' => '没有跟踪到对此项目的引用。',
+ 'references_to_desc' => '下方列出了系统中链接到此项目的所有已知内容。',
+
+ // Watch Options
+ 'watch' => '关注',
+ 'watch_title_default' => '默认偏好设置',
+ 'watch_desc_default' => '将关注设置恢复为默认通知偏好设置。',
+ 'watch_title_ignore' => '忽略',
+ 'watch_desc_ignore' => '忽略所有通知,包括来自用户级偏好的通知。',
+ 'watch_title_new' => '新页面',
+ 'watch_desc_new' => '在此项目中创建任何新页面时通知我。',
+ 'watch_title_updates' => '所有页面更新',
+ 'watch_desc_updates' => '在所有新页面和页面更改时通知我。',
+ 'watch_desc_updates_page' => '在有页面发生更改时通知我。',
+ 'watch_title_comments' => '所有页面更新和评论',
+ 'watch_desc_comments' => '在有新页面、页面更改和新评论时通知我。',
+ 'watch_desc_comments_page' => '在有页面更改和新评论时通知我。',
+ 'watch_change_default' => '更改默认通知偏好',
+ 'watch_detail_ignore' => '忽略通知',
+ 'watch_detail_new' => '已关注新页面',
+ 'watch_detail_updates' => '已关注新页面和更新',
+ 'watch_detail_comments' => '已关注新页面、更新和评论',
+ 'watch_detail_parent_book' => '已关注—继承自父书籍',
+ 'watch_detail_parent_book_ignore' => '已忽略—继承自父书籍',
+ 'watch_detail_parent_chapter' => '已关注—继承自父章节',
+ 'watch_detail_parent_chapter_ignore' => '已忽略—继承自父章节',
+];
diff --git a/lang/zh_CN/errors.php b/lang/zh_CN/errors.php
new file mode 100644
index 00000000000..98b26407233
--- /dev/null
+++ b/lang/zh_CN/errors.php
@@ -0,0 +1,135 @@
+ '您无权访问所请求的页面。',
+ 'permissionJson' => '您无权执行所请求的操作。',
+
+ // Auth
+ 'error_user_exists_different_creds' => 'Email为 :email 的用户已经存在,但具有不同的凭据。',
+ 'auth_pre_register_theme_prevention' => '无法根据所提供的信息注册帐户',
+ 'email_already_confirmed' => 'Email已被确认,请尝试登录。',
+ 'email_confirmation_invalid' => '此确认令牌无效或已被使用,请重新注册。',
+ 'email_confirmation_expired' => '确认令牌已过期,已发送新的确认电子邮件。',
+ 'email_confirmation_awaiting' => '需要认证账户的电子邮箱地址',
+ 'ldap_fail_anonymous' => '使用匿名绑定的LDAP访问失败。',
+ 'ldap_fail_authed' => '带有标识名称和密码的LDAP访问失败。',
+ 'ldap_extension_not_installed' => '未安装LDAP PHP扩展程序',
+ 'ldap_cannot_connect' => '无法连接到ldap服务器,初始连接失败',
+ 'saml_already_logged_in' => '您已经登陆了',
+ 'saml_no_email_address' => '无法找到有效Email地址,此用户数据由外部身份验证系统托管',
+ 'saml_invalid_response_id' => '来自外部身份验证系统的请求没有被本应用程序认证,在登录后返回上一页可能会导致此问题。',
+ 'saml_fail_authed' => '使用 :system 登录失败,登录系统未返回成功登录授权信息。',
+ 'oidc_already_logged_in' => '您已经登陆了',
+ 'oidc_no_email_address' => '无法找到有效的 Email 地址,此用户数据由外部身份验证系统托管',
+ 'oidc_fail_authed' => '使用 :system 登录失败,登录系统未返回成功登录授权信息',
+ 'social_no_action_defined' => '没有定义行为',
+ 'social_login_bad_response' => "在 :socialAccount 登录时遇到错误:\n:error",
+ 'social_account_in_use' => ':socialAccount 账户已被使用,请尝试通过 :socialAccount 选项登录。',
+ 'social_account_email_in_use' => 'Email :email 已经被使用。如果您已有账户,则可以在个人资料设置中绑定您的 :socialAccount。',
+ 'social_account_existing' => ':socialAccount已经被绑定到您的账户。',
+ 'social_account_already_used_existing' => ':socialAccount账户已经被其他用户使用。',
+ 'social_account_not_used' => ':socialAccount账户没有绑定到任何用户,请在您的个人资料设置中绑定。',
+ 'social_account_register_instructions' => '如果您还没有账户,您可以使用 :socialAccount 选项注册账户。',
+ 'social_driver_not_found' => '未找到社交驱动程序',
+ 'social_driver_not_configured' => '您的:socialAccount社交设置不正确。',
+ 'invite_token_expired' => '此邀请链接已过期。 您可以尝试重置您的账户密码。',
+ 'login_user_not_found' => '找不到执行此操作的用户。',
+
+ // System
+ 'path_not_writable' => '无法上传到文件路径“:filePath”,请确保它可写入服务器。',
+ 'cannot_get_image_from_url' => '无法从 :url 中获取图片',
+ 'cannot_create_thumbs' => '服务器无法创建缩略图,请检查您是否安装了GD PHP扩展。',
+ 'server_upload_limit' => '服务器不允许上传此大小的文件。 请尝试较小的文件。',
+ 'server_post_limit' => '服务器无法接收所提供的数据量。请尝试使用较少的数据或较小的文件。',
+ 'uploaded' => '服务器不允许上传此大小的文件。 请尝试较小的文件。',
+
+ // Drawing & Images
+ 'image_upload_error' => '上传图片时发生错误',
+ 'image_upload_type_error' => '上传的图像类型无效',
+ 'image_upload_replace_type' => '图片文件替换必须为相同的类型',
+ 'image_upload_memory_limit' => '由于系统资源限制,无法处理图像上传和/或创建缩略图。',
+ 'image_thumbnail_memory_limit' => '由于系统资源限制,无法创建图像大小变化。',
+ 'image_gallery_thumbnail_memory_limit' => '由于系统资源限制,无法创建相册缩略图。',
+ 'drawing_data_not_found' => '无法加载绘图数据。绘图文件可能不再存在,或者您可能没有权限访问它。',
+
+ // Attachments
+ 'attachment_not_found' => '找不到附件',
+ 'attachment_upload_error' => '上传附件时出错',
+
+ // Pages
+ 'page_draft_autosave_fail' => '无法保存草稿,确保您在保存页面之前已经连接到互联网',
+ 'page_draft_delete_fail' => '无法删除页面草稿并获取当前页面已保存的内容',
+ 'page_custom_home_deletion' => '无法删除一个被设置为主页的页面',
+
+ // Entities
+ 'entity_not_found' => '未找到项目',
+ 'bookshelf_not_found' => '未找到书架',
+ 'book_not_found' => '未找到书籍',
+ 'page_not_found' => '未找到页面',
+ 'chapter_not_found' => '未找到章节',
+ 'selected_book_not_found' => '选中的书未找到',
+ 'selected_book_chapter_not_found' => '未找到所选的书籍或章节',
+ 'guests_cannot_save_drafts' => '访客不能保存草稿',
+
+ // Users
+ 'users_cannot_delete_only_admin' => '您不能删除唯一的管理员账户',
+ 'users_cannot_delete_guest' => '您不能删除访客用户',
+ 'users_could_not_send_invite' => '由于邀请电子邮件发送失败,无法创建用户',
+
+ // Roles
+ 'role_cannot_be_edited' => '无法编辑该角色',
+ 'role_system_cannot_be_deleted' => '无法删除系统角色',
+ 'role_registration_default_cannot_delete' => '无法删除设置为默认注册的角色',
+ 'role_cannot_remove_only_admin' => '该用户是分配给管理员角色的唯一用户。 在尝试在此处删除管理员角色之前,请将其分配给其他用户。',
+
+ // Comments
+ 'comment_list' => '提取评论时出现错误。',
+ 'cannot_add_comment_to_draft' => '您不能为草稿添加评论。',
+ 'comment_add' => '添加/更新评论时发生错误。',
+ 'comment_delete' => '删除评论时发生错误。',
+ 'empty_comment' => '不能添加空的评论。',
+
+ // Error pages
+ '404_page_not_found' => '无法找到页面',
+ 'sorry_page_not_found' => '对不起,无法找到您想访问的页面。',
+ 'sorry_page_not_found_permission_warning' => '如果您确认这个页面存在,则代表您可能没有查看权限。',
+ 'image_not_found' => '未找到图片',
+ 'image_not_found_subtitle' => '对不起,无法找到您想访问的图片。',
+ 'image_not_found_details' => '原本放在这里的图片已被删除。',
+ 'return_home' => '返回主页',
+ 'error_occurred' => '出现错误',
+ 'app_down' => ':appName现在正在关闭',
+ 'back_soon' => '请耐心等待网站的恢复。',
+
+ // Import
+ 'import_zip_cant_read' => '无法读取 ZIP 文件。',
+ 'import_zip_cant_decode_data' => '无法找到并解码 ZIP data.json 内容。',
+ 'import_zip_no_data' => 'ZIP 文件数据没有预期的书籍、章节或页面内容。',
+ 'import_zip_data_too_large' => '超出最大上传大小。',
+ 'import_validation_failed' => '导入 ZIP 验证失败,出现错误:',
+ 'import_zip_failed_notification' => 'ZIP 文件导入失败。',
+ 'import_perms_books' => '您缺少创建书籍所需的权限。',
+ 'import_perms_chapters' => '您缺少创建章节所需的权限。',
+ 'import_perms_pages' => '您缺少创建页面所需的权限。',
+ 'import_perms_images' => '您缺少创建图片所需的权限。',
+ 'import_perms_attachments' => '您缺少创建附件所需的权限。',
+
+ // API errors
+ 'api_no_authorization_found' => '未在请求中找到授权令牌',
+ 'api_bad_authorization_format' => '已在请求中找到授权令牌,但格式貌似不正确',
+ 'api_user_token_not_found' => '未找到与提供的授权令牌匹配的 API 令牌',
+ 'api_incorrect_token_secret' => '给已给出的API所提供的密钥不正确',
+ 'api_user_no_api_permission' => '使用过的 API 令牌的所有者没有进行API 调用的权限',
+ 'api_user_token_expired' => '所使用的身份令牌已过期',
+ 'api_cookie_auth_only_get' => '使用基于 Cookie 的身份验证 API 时,仅允许 GET 请求。',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => '发送测试电子邮件时出现错误:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'URL 与已配置的 SSR 主机不匹配',
+];
diff --git a/lang/zh_CN/notifications.php b/lang/zh_CN/notifications.php
new file mode 100644
index 00000000000..55fa6824a5a
--- /dev/null
+++ b/lang/zh_CN/notifications.php
@@ -0,0 +1,29 @@
+ '页面上有新评论::pageName',
+ 'new_comment_intro' => '一位用户在 :appName: 的页面上发表了评论',
+ 'new_page_subject' => '新页面::pageName',
+ 'new_page_intro' => ':appName: 中创建了一个新页面',
+ 'updated_page_subject' => '页面更新::pageName',
+ 'updated_page_intro' => ':appName: 中的一个页面已被更新',
+ 'updated_page_debounce' => '为了防止出现大量通知,一段时间内您不会收到同一编辑者再次编辑本页面的通知。',
+ 'comment_mention_subject' => '在页面中被提及::pageName',
+ 'comment_mention_intro' => '在 :appName 中被提及:',
+
+ 'detail_page_name' => '页面名称:',
+ 'detail_page_path' => '页面路径:',
+ 'detail_commenter' => '评论者:',
+ 'detail_comment' => '评论:',
+ 'detail_created_by' => '创建者:',
+ 'detail_updated_by' => '更新者:',
+
+ 'action_view_comment' => '查看评论',
+ 'action_view_page' => '查看页面',
+
+ 'footer_reason' => '向您发送此通知是因为 :link 涵盖了该项目的此类活动。',
+ 'footer_reason_link' => '个人通知偏好设置',
+];
diff --git a/resources/lang/zh_CN/pagination.php b/lang/zh_CN/pagination.php
similarity index 100%
rename from resources/lang/zh_CN/pagination.php
rename to lang/zh_CN/pagination.php
diff --git a/resources/lang/zh_CN/passwords.php b/lang/zh_CN/passwords.php
similarity index 100%
rename from resources/lang/zh_CN/passwords.php
rename to lang/zh_CN/passwords.php
diff --git a/lang/zh_CN/preferences.php b/lang/zh_CN/preferences.php
new file mode 100644
index 00000000000..0a1f165bbac
--- /dev/null
+++ b/lang/zh_CN/preferences.php
@@ -0,0 +1,52 @@
+ '我的账户',
+
+ 'shortcuts' => '快捷键',
+ 'shortcuts_interface' => '界面快捷方式首选项',
+ 'shortcuts_toggle_desc' => '你可以启用或禁用键盘系统界面快捷键,这些快捷键用于导航和操作。',
+ 'shortcuts_customize_desc' => '您可以自定义下面的每个快捷键。选择快捷方式输入后按下您想使用的按键组合即可。',
+ 'shortcuts_toggle_label' => '启用键盘快捷键',
+ 'shortcuts_section_navigation' => '导航',
+ 'shortcuts_section_actions' => '通用操作',
+ 'shortcuts_save' => '保存快捷键',
+ 'shortcuts_overlay_desc' => '注意:当快捷键启用时,可以按"?"键来打开帮助,它将突出显示当前屏幕上可见操作的快捷键。',
+ 'shortcuts_update_success' => '快捷键设置已更新!',
+ 'shortcuts_overview_desc' => '管理可用于导航系统用户界面的快捷键。',
+
+ 'notifications' => '通知偏好',
+ 'notifications_desc' => '控制在系统内发生某些活动时您会收到的电子邮件通知。',
+ 'notifications_opt_own_page_changes' => '在我拥有的页面被修改时通知我',
+ 'notifications_opt_own_page_comments' => '在我拥有的页面上有新评论时通知我',
+ 'notifications_opt_comment_mentions' => '当我在评论中被提及时通知我',
+ 'notifications_opt_comment_replies' => '在有人回复我的频率时通知我',
+ 'notifications_save' => '保存偏好设置',
+ 'notifications_update_success' => '通知偏好设置已更新!',
+ 'notifications_watched' => '已关注和忽略的项目',
+ 'notifications_watched_desc' => '下面是已应用自定义关注选项的项目。要更新您的关注设置,请查看该项目,然后在该项目的侧边栏中找到关注选项。',
+
+ 'auth' => '访问与安全',
+ 'auth_change_password' => '更改密码',
+ 'auth_change_password_desc' => '更改用于登录本应用的密码。 长度必须至少为 8 个字符。',
+ 'auth_change_password_success' => '密码已更新!',
+
+ 'profile' => '个人资料详情',
+ 'profile_desc' => '管理您的账户细节,这些细节会向其他用户展示,除此之外,还包括用于交流和系统个性化的细节。',
+ 'profile_view_public' => '查看公开个人资料',
+ 'profile_name_desc' => '配置您的显示名称,名称将通过您执行的活动和您拥有的内容在系统中对其他用户可见。',
+ 'profile_email_desc' => '此电子邮件将用于通知,并根据活跃的系统身份验证,用于系统访问。',
+ 'profile_email_no_permission' => '很抱歉,您没有权限更改电子邮件地址。 如果您想要更改,您需要请管理员为您更改。',
+ 'profile_avatar_desc' => '选择一张图片,图片将在系统中用于向他人展示您的形象。理想情况下,这张图片应为方形,宽高约为256像素。',
+ 'profile_admin_options' => '管理员选项',
+ 'profile_admin_options_desc' => '针对用户账户,您可以在应用的「设置 > 用户」区域找到其他管理员级别选项,例如管理角色分配等。',
+
+ 'delete_account' => '删除账户',
+ 'delete_my_account' => '删除我的账户',
+ 'delete_my_account_desc' => '此操作将完全删除您在系统中的用户账户。您将无法恢复此账户或撤销此操作。您创建的内容,如创建的页面和上传的图片,将保留下来。',
+ 'delete_my_account_warning' => '您确定要删除您的账号吗?',
+];
diff --git a/lang/zh_CN/settings.php b/lang/zh_CN/settings.php
new file mode 100644
index 00000000000..e53e67aba32
--- /dev/null
+++ b/lang/zh_CN/settings.php
@@ -0,0 +1,374 @@
+ '设置',
+ 'settings_save' => '保存设置',
+ 'system_version' => '系统版本',
+ 'categories' => '类别',
+
+ // App Settings
+ 'app_customization' => '个性化',
+ 'app_features_security' => '功能与安全',
+ 'app_name' => '站点名称',
+ 'app_name_desc' => '此名称将在网页头部和系统发送的电子邮件中显示。',
+ 'app_name_header' => '在网页头部显示站点名称?',
+ 'app_public_access' => '访问权限',
+ 'app_public_access_desc' => '启用此选项将允许未登录的用户访问站点内容。',
+ 'app_public_access_desc_guest' => '可以通过“访客”用户来控制公共访问者的访问。',
+ 'app_public_access_toggle' => '允许公众访问',
+ 'app_public_viewing' => '允许公众查看?',
+ 'app_secure_images' => '启用更高安全性的图片上传?',
+ 'app_secure_images_toggle' => '启用更高安全性的图片上传',
+ 'app_secure_images_desc' => '出于性能原因,所有图像都是公开的。这个选项会在图像的网址前添加一个随机的,难以猜测的字符串,从而使直接访问变得困难。',
+ 'app_default_editor' => '默认页面编辑器',
+ 'app_default_editor_desc' => '选择在编辑新页面时默认使用哪个编辑器。这可以在页面权限处覆盖。',
+ 'app_custom_html' => '自定义HTML头部内容',
+ 'app_custom_html_desc' => '此处添加的任何内容都将插入到每个页面的部分的底部,这对于覆盖样式或添加分析代码很方便。',
+ 'app_custom_html_disabled_notice' => '在此设置页面上禁用了自定义HTML标题内容,以确保可以恢复所有重大更改。',
+ 'app_logo' => '站点Logo',
+ 'app_logo_desc' => '这会在应用程序标题栏等区域使用。此图片的高度应为 86 像素。大图像将按比例缩小。',
+ 'app_icon' => '应用程序图标',
+ 'app_icon_desc' => '此图标用于浏览器选项卡和快捷方式图标。这应该是一个 256 像素的正方形 PNG 图片。',
+ 'app_homepage' => '站点主页',
+ 'app_homepage_desc' => '选择要在主页上显示的页面来替换默认的页面,选定页面的访问权限将被忽略。',
+ 'app_homepage_select' => '选择一个页面',
+ 'app_footer_links' => '页脚链接',
+ 'app_footer_links_desc' => '添加在网站页脚中显示的链接。这些链接将显示在大多数页面的底部,也包括不需要登录的页面。您可以使用标签"trans::"来使用系统定义的翻译。例如:使用"trans::common.privacy_policy"将显示为“隐私政策”,而"trans::common.terms_of_service"将显示为“服务条款”。',
+ 'app_footer_links_label' => '链接标签',
+ 'app_footer_links_url' => '链接 URL',
+ 'app_footer_links_add' => '添加页脚链接',
+ 'app_disable_comments' => '禁用评论',
+ 'app_disable_comments_toggle' => '禁用评论',
+ 'app_disable_comments_desc' => '在站点的所有页面上禁用评论, 已有评论也不会显示出来。',
+
+ // Color settings
+ 'color_scheme' => '应用程序配色方案',
+ 'color_scheme_desc' => '设置要在应用程序界面中使用的颜色。 可以为深色和浅色模式分别配置颜色,以适合主题并确保易读性。',
+ 'ui_colors_desc' => '设置应用程序的主颜色和默认链接颜色。主颜色主要用于页眉横幅、按钮和界面装饰。默认链接颜色用于基于文本的链接和操作,包括编写界面和应用程序界面。',
+ 'app_color' => '主颜色',
+ 'link_color' => '默认链接颜色',
+ 'content_colors_desc' => '为页面组织层次结构中的所有元素设置颜色。为了便于阅读,建议选择与默认颜色亮度相似的颜色。',
+ 'bookshelf_color' => '书架颜色',
+ 'book_color' => '书籍颜色',
+ 'chapter_color' => '章节颜色',
+ 'page_color' => '页面颜色',
+ 'page_draft_color' => '页面草稿颜色',
+
+ // Registration Settings
+ 'reg_settings' => '注册设置',
+ 'reg_enable' => '启用注册',
+ 'reg_enable_toggle' => '启用注册',
+ 'reg_enable_desc' => '启用注册后,用户将可以自己注册为站点用户。 注册后,他们将获得一个默认的单一用户角色。',
+ 'reg_default_role' => '注册后的默认用户角色',
+ 'reg_enable_external_warning' => '当启用外部LDAP或者SAML认证时,上面的选项会被忽略。当使用外部系统认证认证成功时,将自动创建非现有会员的用户账户。',
+ 'reg_email_confirmation' => '邮件确认',
+ 'reg_email_confirmation_toggle' => '需要电子邮件确认',
+ 'reg_confirm_email_desc' => '如果使用域名限制,则需要电子邮件验证,并且该值将被忽略。',
+ 'reg_confirm_restrict_domain' => '域名限制',
+ 'reg_confirm_restrict_domain_desc' => '输入您想要限制注册的电子邮件域名列表(即只允许使用这些电子邮件域名注册),多个域名用英文逗号隔开。在允许用户与应用程序交互之前,系统将向用户发送一封电子邮件以确认其电子邮件地址。 请注意,用户在注册成功后仍然可以更改他们的电子邮件地址。',
+ 'reg_confirm_restrict_domain_placeholder' => '尚未设置限制',
+
+ // Sorting Settings
+ 'sorting' => '列表和排序',
+ 'sorting_book_default' => '默认排序规则',
+ 'sorting_book_default_desc' => '选择要应用于新书的默认排序规则。这不会影响现有书,并且可以每本书覆盖。',
+ 'sorting_rules' => '排序规则',
+ 'sorting_rules_desc' => '这些是预定义的排序操作,可应用于系统中的内容。',
+ 'sort_rule_assigned_to_x_books' => '分配给 :count Book|分配给 :count Books',
+ 'sort_rule_create' => '创建排序规则',
+ 'sort_rule_edit' => '编辑排序规则',
+ 'sort_rule_delete' => '删除排序规则',
+ 'sort_rule_delete_desc' => '从系统中删除这种排序规则。使用这种类型的书本将恢复到手动排序。',
+ 'sort_rule_delete_warn_books' => '此排序规则目前用于:count book(s)。您确定要删除吗?',
+ 'sort_rule_delete_warn_default' => '此排序规则目前被用作书籍的默认值。您确定要删除吗?',
+ 'sort_rule_details' => '排序规则详细信息',
+ 'sort_rule_details_desc' => '为此排序规则设置一个名称,当用户选择排序时,该名称将出现在列表中。',
+ 'sort_rule_operations' => '排序选项',
+ 'sort_rule_operations_desc' => '配置通过将它们从可用操作列表中移动来执行的排序操作。 一旦使用,操作将按顺序从上到下顺序进行。 这里所做的任何更改都将在保存时适用于所有分配的书本。',
+ 'sort_rule_available_operations' => '可用操作',
+ 'sort_rule_available_operations_empty' => '没有剩余操作',
+ 'sort_rule_configured_operations' => '配置选项',
+ 'sort_rule_configured_operations_empty' => '从“可用操作”列表中拖动/添加操作',
+ 'sort_rule_op_asc' => '(Asc)',
+ 'sort_rule_op_desc' => '(Desc)',
+ 'sort_rule_op_name' => '名称-按字母顺序排序',
+ 'sort_rule_op_name_numeric' => '名称-按数字顺序排序',
+ 'sort_rule_op_created_date' => '创建时间',
+ 'sort_rule_op_updated_date' => '更新时间',
+ 'sort_rule_op_chapters_first' => '章节正序',
+ 'sort_rule_op_chapters_last' => '章节倒序',
+ 'sorting_page_limits' => '每页显示限制',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => '维护',
+ 'maint_image_cleanup' => '清理图像',
+ 'maint_image_cleanup_desc' => '扫描页面和修订内容以检查哪些图片是正在使用的以及哪些图片是多余的。确保在运行前完整备份数据库和图片。',
+ 'maint_delete_images_only_in_revisions' => '同时删除只存在于旧的页面修订中的图片',
+ 'maint_image_cleanup_run' => '运行清理',
+ 'maint_image_cleanup_warning' => '发现了 :count 张可能未使用的图像。您确定要删除这些图像吗?',
+ 'maint_image_cleanup_success' => '找到并删除了 :count 张可能未使用的图像!',
+ 'maint_image_cleanup_nothing_found' => '找不到未使用的图像,没有删除!',
+ 'maint_send_test_email' => '发送测试电子邮件',
+ 'maint_send_test_email_desc' => '这将发送测试邮件到您的个人资料中指定的电子邮件地址。',
+ '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' => '打开回收站',
+ 'maint_regen_references' => '重新生成引用',
+ 'maint_regen_references_desc' => '此操作将重建数据库中的跨项目引用索引。这通常是自动处理的,但可能有助于索引旧内容或通过非官方方法添加的内容。',
+ 'maint_regen_references_success' => '引用索引已重新生成!',
+ 'maint_timeout_command_note' => '注意:执行此操作需要一些时间,这可能会导致在某些 Web 环境中出现超时问题。作为替代方案,此操作也可以在终端中执行。',
+
+ // Recycle Bin
+ 'recycle_bin' => '回收站',
+ 'recycle_bin_desc' => '在这里,您可以还原已删除的项目,或选择将其从系统中永久删除。与系统中过滤过的类似的活动记录不同,这个表会显示所有操作。',
+ 'recycle_bin_deleted_item' => '被删除的项目',
+ 'recycle_bin_deleted_parent' => '上级',
+ '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_restore_parent' => '还原上级',
+ 'recycle_bin_destroy_notification' => '从回收站中删除了 :count 个项目。',
+ 'recycle_bin_restore_notification' => '从回收站中恢复了 :count 个项目。',
+
+ // Audit Log
+ 'audit' => '审核日志',
+ 'audit_desc' => '这份审核日志显示所有被系统跟踪的活动。与系统中过滤过的类似的活动记录不同,这个表会显示所有操作。',
+ '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_ip' => 'IP 地址',
+ 'audit_table_date' => '活动日期',
+ 'audit_date_from' => '日期范围从',
+ 'audit_date_to' => '日期范围至',
+
+ // Role Settings
+ 'roles' => '角色',
+ 'role_user_roles' => '用户角色',
+ 'roles_index_desc' => '角色用于对用户进行分组并为其成员提供系统权限。当一个用户是多个角色的成员时,授予的权限将叠加,用户将继承所有角色的能力。',
+ 'roles_x_users_assigned' => ':count 位用户已分配|:count 位用户已分配',
+ 'roles_x_permissions_provided' => ':count 个权限|:count 个权限',
+ 'roles_assigned_users' => '已分配用户',
+ 'roles_permissions_provided' => '已提供权限',
+ 'role_create' => '创建角色',
+ 'role_delete' => '删除角色',
+ 'role_delete_confirm' => '这将会删除名为 \':roleName\' 的角色.',
+ 'role_delete_users_assigned' => '有:userCount位用户属于此角色。如果您想将此角色中的用户迁移,请在下面选择一个新角色。',
+ 'role_delete_no_migration' => "不要迁移用户",
+ 'role_delete_sure' => '您确定要删除这个角色?',
+ 'role_edit' => '编辑角色',
+ 'role_details' => '角色详细信息',
+ 'role_name' => '角色名',
+ 'role_desc' => '角色简述',
+ 'role_mfa_enforced' => '需要多重身份认证',
+ 'role_external_auth_id' => '外部身份认证ID',
+ 'role_system' => '系统权限',
+ 'role_manage_users' => '管理用户',
+ 'role_manage_roles' => '管理角色与角色权限',
+ 'role_manage_entity_permissions' => '管理所有书籍、章节和页面的权限',
+ 'role_manage_own_entity_permissions' => '管理自己的书籍、章节和页面的权限',
+ 'role_manage_page_templates' => '管理页面模板',
+ 'role_access_api' => '访问系统 API',
+ 'role_manage_settings' => '管理 App 设置',
+ 'role_export_content' => '导出内容',
+ 'role_import_content' => '导入内容',
+ 'role_editor_change' => '更改页面编辑器',
+ 'role_notifications' => '管理和接收通知',
+ 'role_permission_note_users_and_roles' => '从技术上讲,这些权限还将提供对系统中用户和角色的可见性和搜索功能。',
+ 'role_asset' => '资源许可',
+ 'roles_system_warning' => '请注意,拥有以上三个权限中的任何一个都会允许用户更改自己的权限或系统中其他人的权限。 请只将拥有这些权限的角色分配给你信任的用户。',
+ 'role_asset_desc' => '对系统内资源的默认访问许可将由这些权限控制。单独设置在书籍、章节和页面上的权限将覆盖这里的权限设定。',
+ 'role_asset_admins' => '管理员可自动获得对所有内容的访问权限,但这些选项可能会显示或隐藏UI选项。',
+ 'role_asset_image_view_note' => '这与图像管理器中的可见性有关。已经上传的图片的实际访问取决于系统图像存储选项。',
+ 'role_asset_users_note' => '从技术上讲,这些权限还将提供对系统中用户和角色的可见性和搜索功能。',
+ 'role_all' => '全部的',
+ 'role_own' => '拥有的',
+ 'role_controlled_by_asset' => '由其所在的资源来控制',
+ 'role_save' => '保存角色',
+ 'role_users' => '此角色的用户',
+ 'role_users_none' => '目前没有用户被分配到这个角色',
+
+ // Users
+ 'users' => '用户',
+ 'users_index_desc' => '在系统内创建和管理个人用户账户。用户账户用于登录和内容及活动的归属。访问权限主要是基于角色的,但用户的内容所有权以及其他因素,也可能影响到权限和访问。',
+ 'user_profile' => '用户资料',
+ 'users_add_new' => '添加用户',
+ 'users_search' => '搜索用户',
+ 'users_latest_activity' => '最后活动',
+ 'users_details' => '用户详细资料',
+ 'users_details_desc' => '设置该用户的显示名称和电子邮件地址。 该电子邮件地址将用于登录本站。',
+ 'users_details_desc_no_email' => '设置此用户的昵称,以便其他人识别。',
+ 'users_role' => '用户角色',
+ 'users_role_desc' => '选择将分配给该用户的角色。 如果将一个用户分配给多个角色,则这些角色的权限将堆叠在一起,并且他们将获得分配的角色的所有功能。',
+ 'users_password' => '用户密码',
+ 'users_password_desc' => '设置用于登录本应用的密码。 长度必须至少为 8 个字符。',
+ 'users_send_invite_text' => '您可以向该用户发送邀请电子邮件,允许他们设置自己的密码,否则,您可以自己设置他们的密码。',
+ 'users_send_invite_option' => '发送邀请用户电子邮件',
+ 'users_external_auth_id' => '外部身份认证ID',
+ 'users_external_auth_id_desc' => '当使用外部身份验证系统(例如 SAML2、OIDC 或 LDAP)时,这是将此 BookStack 用户连接到身份验证系统账户的 ID。 如果使用默认的电子邮件身份验证,您可以忽略此字段。',
+ 'users_password_warning' => '如果您想更改此用户的密码,请填写以下内容:',
+ 'users_system_public' => '此用户代表访问您的App的任何访客。它不能用于登录,而是自动分配。',
+ 'users_delete' => '删除用户',
+ 'users_delete_named' => '删除用户 :userName',
+ 'users_delete_warning' => '这将从系统中完全删除名为 \':userName\' 的用户。',
+ 'users_delete_confirm' => '您确定要删除这个用户?',
+ 'users_migrate_ownership' => '迁移拥有权',
+ 'users_migrate_ownership_desc' => '如果您想要当前用户拥有的全部项目转移到另一个用户(更改拥有者),请在此处选择一个用户。',
+ 'users_none_selected' => '没有选中用户',
+ 'users_edit' => '编辑用户',
+ 'users_edit_profile' => '编辑资料',
+ 'users_avatar' => '用户头像',
+ 'users_avatar_desc' => '选择一张头像。 这张图片应该是约 256 像素的正方形。',
+ 'users_preferred_language' => '语言',
+ 'users_preferred_language_desc' => '此选项将更改用于应用程序用户界面的语言。 这不会影响任何用户创建的内容。',
+ 'users_social_accounts' => '社交账户',
+ 'users_social_accounts_desc' => '查看此用户已连接的社交账户状态。 除了主要认证系统外,社交账户也可用于系统访问。',
+ 'users_social_accounts_info' => '在这里,您可以绑定您的其他账户,以便更快更轻松地登录。如果您选择解除绑定,之后将不能通过此社交账户登录,请设置社交账户来取消本App的访问权限。',
+ 'users_social_connect' => '绑定账户',
+ 'users_social_disconnect' => '解除绑定账户',
+ 'users_social_status_connected' => '已连接',
+ 'users_social_status_disconnected' => '已断开连接',
+ 'users_social_connected' => ':socialAccount 账户已经成功绑定到您的资料。',
+ 'users_social_disconnected' => ':socialAccount 账户已经成功解除绑定。',
+ 'users_api_tokens' => 'API令牌',
+ 'users_api_tokens_desc' => '创建和管理用于 BookStack REST API 认证的访问令牌。 API 的权限是通过令牌所属的用户管理的。',
+ 'users_api_tokens_none' => '没有创建任何API令牌给此用户',
+ 'users_api_tokens_create' => '创建令牌',
+ 'users_api_tokens_expires' => '过期',
+ 'users_api_tokens_docs' => 'API文档',
+ 'users_mfa' => '多重身份认证',
+ 'users_mfa_desc' => '设置多重身份认证能增加您账户的安全性。',
+ 'users_mfa_x_methods' => ':count 个措施已配置|:count 个措施已配置',
+ 'users_mfa_configure' => '配置安全措施',
+
+ // API Tokens
+ 'user_api_token_create' => '创建 API 令牌',
+ 'user_api_token_name' => '姓名',
+ 'user_api_token_name_desc' => '请给您的可读令牌一个命名以在未来提醒您它的预期用途',
+ 'user_api_token_expiry' => '过期期限',
+ 'user_api_token_expiry_desc' => '请设置一个此令牌的过期时间,过期后此令牌所给出的请求将失效,若将此处留为空白将自动设置过期时间为100年。',
+ 'user_api_token_create_secret_message' => '创建此令牌后会立即生成“令牌ID”和“令牌密钥”。该密钥只会显示一次,所以请确保在继续操作之前将密钥记录或复制到一个安全的地方。',
+ 'user_api_token' => 'API令牌',
+ 'user_api_token_id' => '令牌ID',
+ 'user_api_token_id_desc' => '这是系统生成的一个不可编辑的令牌标识符,需要在API请求中才能提供。',
+ 'user_api_token_secret' => '令牌密钥',
+ 'user_api_token_secret_desc' => '这是此令牌系统生成的密钥,需要在API请求中才可以提供。 这只会显示一次,因此请将其复制到安全的地方。',
+ 'user_api_token_created' => '创建的令牌:timeAgo',
+ 'user_api_token_updated' => '令牌更新:timeAgo',
+ 'user_api_token_delete' => '删除令牌',
+ 'user_api_token_delete_warning' => '这将会从系统中完全删除名为 “:tokenName” 的 API 令牌',
+ 'user_api_token_delete_confirm' => '您确定要删除此API令牌吗?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhook 是一种在系统内发生某些操作和事件时将数据发送到外部 URL 的方法,它允许与外部平台(例如消息传递或通知系统)进行基于事件的集成。',
+ 'webhooks_x_trigger_events' => ':count 个触发事件 |:count 个触发事件',
+ 'webhooks_create' => '新建 Webhook',
+ 'webhooks_none_created' => '尚未创建任何 Webhook。',
+ 'webhooks_edit' => '编辑 Webhook',
+ 'webhooks_save' => '保存 Webhook',
+ 'webhooks_details' => 'Webhook 详情',
+ 'webhooks_details_desc' => '提供一个用户友好的名称和一个 POST Endpoint 作为 Webhook 数据发送的位置。',
+ 'webhooks_events' => 'Webhook 事件',
+ 'webhooks_events_desc' => '选择所有应触发此 Webhook 的事件。',
+ 'webhooks_events_warning' => '请记住,即使应用了自定义权限,所有选定的事件也仍然会被触发。 确保使用此 Webhook 不会泄露机密内容。',
+ 'webhooks_events_all' => '所有系统事件',
+ 'webhooks_name' => 'Webhook 名称',
+ 'webhooks_timeout' => 'Webhook 请求超时(秒)',
+ 'webhooks_endpoint' => 'Webhook Endpoint',
+ 'webhooks_active' => '激活 Webhook',
+ 'webhook_events_table_header' => '事件',
+ 'webhooks_delete' => '删除 Webhook',
+ 'webhooks_delete_warning' => '这将会从系统中完全删除名为 “:webhookName” 的 webhook。',
+ 'webhooks_delete_confirm' => '您确定要删除此 Webhook 吗?',
+ 'webhooks_format_example' => 'Webhook 格式示例',
+ 'webhooks_format_example_desc' => 'Webhook 数据会以 POST 请求按照以下 JSON 格式发送到设置的 Endpoint。 “related_item” 和 “url” 属性是可选的,取决于触发的事件类型。',
+ 'webhooks_status' => 'Webhook 状态',
+ 'webhooks_last_called' => '最后一次调用:',
+ 'webhooks_last_errored' => '最后一个错误:',
+ 'webhooks_last_error_message' => '最后一个错误消息:',
+
+ // Licensing
+ 'licenses' => '许可证',
+ 'licenses_desc' => '除了 BookStack 中使用的项目和库之外,此页面还详细介绍了 BookStack 的许可证信息。列出的许多项目只能在开发环境中使用。',
+ 'licenses_bookstack' => 'BookStack 许可证',
+ 'licenses_php' => 'PHP 库许可证',
+ 'licenses_js' => 'JavaScript 库许可证',
+ 'licenses_other' => '其他许可证',
+ 'license_details' => '许可证细节',
+
+ //! 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' => '保加利亚语',
+ 'bs' => 'Bosanski',
+ 'ca' => '加泰罗尼亚语',
+ 'cs' => 'Česky',
+ 'cy' => 'Cymraeg',
+ 'da' => '丹麦',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => 'עברית',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italien',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => '挪威语 (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/zh_CN/validation.php b/lang/zh_CN/validation.php
new file mode 100644
index 00000000000..955381ccbab
--- /dev/null
+++ b/lang/zh_CN/validation.php
@@ -0,0 +1,123 @@
+ ':attribute 需要被同意。',
+ 'active_url' => ':attribute 并不是一个有效的网址',
+ 'after' => ':attribute 必须是在 :date 后的日期。',
+ 'alpha' => ':attribute 只能包含字母。',
+ 'alpha_dash' => ':attribute 只能包含字母、数字和短横线。',
+ 'alpha_num' => ':attribute 只能包含字母和数字。',
+ 'array' => ':attribute 必须是一个数组。',
+ 'backup_codes' => '您输入的认证码无效或已被使用。',
+ 'before' => ':attribute 必须是在 :date 前的日期。',
+ 'between' => [
+ 'numeric' => ':attribute 必须在 :min 到 :max 之间。',
+ 'file' => ':attribute 必须为 :min 到 :max 之间。',
+ 'string' => ':attribute 必须在 :min 到 :max 个字符之间。',
+ 'array' => ':attribute 必须在 :min 到 :max 项之间.',
+ ],
+ 'boolean' => ':attribute 字段必须为真或假。',
+ '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 后缀结尾。',
+ 'file' => ':attribute 必须是一个有效的文件。',
+ 'filled' => ':attribute 字段是必需的。',
+ 'gt' => [
+ 'numeric' => ':attribute必须大于 :value.',
+ 'file' => ':attribute 必须大于 :value k',
+ 'string' => ':attribute 必须大于 :value 字符。',
+ 'array' => ':attribute 必须包含多个 :value 项目。',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute 必须大于或等于 :value.',
+ 'file' => ':attribute 必须大于或等于 :value k。',
+ 'string' => ':attribute 必须大于或等于 :value 字符。',
+ 'array' => ':attribute 必须具有 :value 项或更多',
+ ],
+ 'exists' => '选中的 :attribute 无效。',
+ 'image' => ':attribute 必须是一个图片。',
+ 'image_extension' => ':attribute 必须具有有效且受支持的图像扩展名。',
+ 'in' => '选中的 :attribute 无效。',
+ 'integer' => ':attribute 必须是一个整数。',
+ 'ip' => ':attribute 必须是一个有效的IP地址。',
+ 'ipv4' => ':attribute 必须是有效的IPv4地址。',
+ 'ipv6' => ':attribute必须是有效的IPv6地址。',
+ 'json' => ':attribute 必须是JSON类型.',
+ 'lt' => [
+ 'numeric' => ':attribute 必须小于 :value.',
+ 'file' => ':attribute 必须小于 :value k。',
+ 'string' => ':attribute 必须小于 :value 字符。',
+ 'array' => ':attribute 必须小于 :value 项.',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute 必须小于或等于 :value.',
+ 'file' => ':attribute 必须小于或等于 :value k。',
+ 'string' => ':attribute 必须小于或等于 :value 字符。',
+ 'array' => ':attribute 不得超过 :value 项。',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute 不能超过:max。',
+ 'file' => ':attribute 不能超过:max KB。',
+ 'string' => ':attribute 不能超过:max个字符。',
+ 'array' => ':attribute 不能有超过:max项。',
+ ],
+ 'mimes' => ':attribute 必须是 :values 类型的文件。',
+ 'min' => [
+ 'numeric' => ':attribute 至少为:min。',
+ 'file' => ':attribute 至少为:min KB。',
+ 'string' => ':attribute 至少为:min个字符。',
+ 'array' => ':attribute 至少有:min项。',
+ ],
+ 'not_in' => '选中的 :attribute 无效。',
+ 'not_regex' => ':attribute 格式错误。',
+ 'numeric' => ':attribute 必须是一个数。',
+ 'regex' => ':attribute 格式无效。',
+ 'required' => ':attribute 字段是必需的。',
+ 'required_if' => '当:other为:value时,:attribute 字段是必需的。',
+ 'required_with' => '当:values存在时,:attribute 字段是必需的。',
+ 'required_with_all' => '当:values存在时,:attribute 字段是必需的。',
+ 'required_without' => '当:values不存在时,:attribute 字段是必需的。',
+ 'required_without_all' => '当:values均不存在时,:attribute 字段是必需的。',
+ 'same' => ':attribute 与 :other 必须匹配。',
+ 'safe_url' => '提供的链接可能不安全。',
+ 'size' => [
+ 'numeric' => ':attribute 必须为:size。',
+ 'file' => ':attribute 必须为:size KB。',
+ 'string' => ':attribute 必须为:size个字符。',
+ 'array' => ':attribute 必须包含:size项。',
+ ],
+ 'string' => ':attribute 必须是字符串。',
+ 'timezone' => ':attribute 必须是有效的区域。',
+ 'totp' => '您输入的认证码无效或已过期。',
+ 'unique' => ':attribute 已经被使用。',
+ 'url' => ':attribute 格式无效。',
+ 'uploaded' => '无法上传文件。 服务器可能不接受此大小的文件。',
+
+ 'zip_file' => ':attribute 需要引用 ZIP 内的文件。',
+ 'zip_file_size' => ':attribute 不能超过 :size MB 。',
+ 'zip_file_mime' => ':attribute 需要引用类型为 :validTypes 的文件,找到 :foundType 。',
+ 'zip_model_expected' => '预期的数据对象,但找到了 ":type" 。',
+ 'zip_unique' => '对于 ZIP 中的对象类型来说,:attribute 必须是唯一的。',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => '需要确认密码',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/lang/zh_TW/activities.php b/lang/zh_TW/activities.php
new file mode 100644
index 00000000000..65ba0a56597
--- /dev/null
+++ b/lang/zh_TW/activities.php
@@ -0,0 +1,140 @@
+ '已建立頁面',
+ 'page_create_notification' => '頁面已建立成功',
+ 'page_update' => '已更新頁面',
+ 'page_update_notification' => '頁面已更新成功',
+ 'page_delete' => '已刪除頁面',
+ 'page_delete_notification' => '頁面已刪除成功',
+ 'page_restore' => '已還原頁面',
+ 'page_restore_notification' => '頁面已還原成功',
+ 'page_move' => '已移動頁面',
+ 'page_move_notification' => '頁面已成功移動',
+
+ // Chapters
+ 'chapter_create' => '已建立章節',
+ 'chapter_create_notification' => '章節已建立成功',
+ 'chapter_update' => '已更新章節',
+ 'chapter_update_notification' => '章節已更新成功',
+ 'chapter_delete' => '已刪除章節',
+ 'chapter_delete_notification' => '章節已刪除成功',
+ 'chapter_move' => '已移動章節',
+ 'chapter_move_notification' => '章節已移動成功',
+
+ // Books
+ 'book_create' => '已建立書本',
+ 'book_create_notification' => '書本已建立成功',
+ 'book_create_from_chapter' => '將章節轉爲書籍',
+ 'book_create_from_chapter_notification' => '章節已轉換爲書籍',
+ 'book_update' => '已更新書本',
+ 'book_update_notification' => '書本已更新成功',
+ 'book_delete' => '已刪除書本',
+ 'book_delete_notification' => '書本已刪除成功',
+ 'book_sort' => '已排序書本',
+ 'book_sort_notification' => '書本已重新排序成功',
+
+ // Bookshelves
+ 'bookshelf_create' => '已建立書棧',
+ 'bookshelf_create_notification' => '書棧已創建',
+ 'bookshelf_create_from_book' => '將書籍轉爲書棧',
+ 'bookshelf_create_from_book_notification' => '章節已轉爲書籍',
+ 'bookshelf_update' => '更新書棧',
+ 'bookshelf_update_notification' => '書棧已更新',
+ 'bookshelf_delete' => '刪除書棧',
+ 'bookshelf_delete_notification' => '書架已刪除',
+
+ // Revisions
+ 'revision_restore' => '還原的版本',
+ 'revision_delete' => '刪除的版本',
+ 'revision_delete_notification' => '修訂已成功刪除',
+
+ // Favourites
+ 'favourite_add_notification' => '":name" 已加入到你的最愛',
+ 'favourite_remove_notification' => '":name" 已從你的最愛移除',
+
+ // Watching
+ 'watch_update_level_notification' => '追蹤偏好設定已成功更新',
+
+ // Auth
+ 'auth_login' => '已登入',
+ 'auth_register' => '註冊為新用戶',
+ 'auth_password_reset_request' => '請求重置用戶密碼',
+ 'auth_password_reset_update' => '重置使用者密碼',
+ 'mfa_setup_method' => '設定MFA方式',
+ 'mfa_setup_method_notification' => '多重身份驗證已設定成功',
+ 'mfa_remove_method' => '移除MFA方式',
+ 'mfa_remove_method_notification' => '多重身份驗證已移除成功',
+
+ // Settings
+ 'settings_update' => '更新設定',
+ 'settings_update_notification' => '設定更新成功',
+ 'maintenance_action_run' => '執行維護動作',
+
+ // Webhooks
+ 'webhook_create' => '建立 Webhook',
+ 'webhook_create_notification' => 'Webhook 已建立成功',
+ 'webhook_update' => 'Webhook 已更新',
+ 'webhook_update_notification' => 'Webhook 已更新成功',
+ 'webhook_delete' => 'webhook 已刪除',
+ 'webhook_delete_notification' => 'Webhook 已刪除成功',
+
+ // Imports
+ 'import_create' => '已建立匯入',
+ 'import_create_notification' => '成功上傳匯入',
+ 'import_run' => '已更新匯入',
+ 'import_run_notification' => '成功匯入內容',
+ 'import_delete' => '已刪除匯入',
+ 'import_delete_notification' => '匯入刪除成功',
+
+ // Users
+ 'user_create' => '建立使用者',
+ 'user_create_notification' => '使用者已成功建立。',
+ 'user_update' => '更新使用者',
+ 'user_update_notification' => '使用者已成功更新。',
+ 'user_delete' => '已刪除使用者',
+ 'user_delete_notification' => '使用者移除成功',
+
+ // API Tokens
+ 'api_token_create' => '建立 API 權杖',
+ 'api_token_create_notification' => '成功建立 API 權杖',
+ 'api_token_update' => '已更新 API 權杖',
+ 'api_token_update_notification' => '成功更新 API 權杖',
+ 'api_token_delete' => '已刪除 API 權杖',
+ 'api_token_delete_notification' => 'API 權杖已成功刪除',
+
+ // Roles
+ 'role_create' => '創建角色',
+ 'role_create_notification' => '建立角色成功',
+ 'role_update' => '已更新角色',
+ 'role_update_notification' => '更新角色成功',
+ 'role_delete' => '已刪除角色',
+ 'role_delete_notification' => '刪除角色成功',
+
+ // Recycle Bin
+ 'recycle_bin_empty' => '清理資源回收筒',
+ 'recycle_bin_restore' => '從資源回收筒復原',
+ 'recycle_bin_destroy' => '從資源回收筒刪除',
+
+ // Comments
+ 'commented_on' => '評論',
+ 'comment_create' => '新增評論',
+ 'comment_update' => '更新評論',
+ 'comment_delete' => '已刪除之評論',
+
+ // Sort Rules
+ 'sort_rule_create' => '已建立的排序規則',
+ 'sort_rule_create_notification' => '排序規則已成功建立',
+ 'sort_rule_update' => '已更新排序規則',
+ 'sort_rule_update_notification' => '排序規則已成功更新',
+ 'sort_rule_delete' => '已刪除排序規則',
+ 'sort_rule_delete_notification' => '排序規則已成功刪除',
+
+ // Other
+ 'permissions_update' => '更新權限',
+];
diff --git a/lang/zh_TW/auth.php b/lang/zh_TW/auth.php
new file mode 100644
index 00000000000..1168b48b270
--- /dev/null
+++ b/lang/zh_TW/auth.php
@@ -0,0 +1,117 @@
+ '使用者名稱或密碼錯誤。',
+ 'throttle' => '您的登入次數過多,請在 :seconds 秒後重試。',
+
+ // Login & Register
+ 'sign_up' => '註冊',
+ 'log_in' => '登入',
+ 'log_in_with' => '以 :socialDriver 登入',
+ 'sign_up_with' => '以 :socialDriver 註冊',
+ 'logout' => '登出',
+
+ 'name' => '名稱',
+ 'username' => '使用者名稱',
+ 'email' => '電子郵件',
+ 'password' => '密碼',
+ 'password_confirm' => '確認密碼',
+ 'password_hint' => '密碼必須至少8個字元',
+ 'forgot_password' => '忘記密碼?',
+ 'remember_me' => '記住我',
+ 'ldap_email_hint' => '請輸入此帳號使用的電子郵件。',
+ 'create_account' => '建立帳號',
+ 'already_have_account' => '已有帳號?',
+ 'dont_have_account' => '沒有帳號?',
+ 'social_login' => '社群網站登入',
+ 'social_registration' => '使用社群網站帳號註冊',
+ 'social_registration_text' => '使用其他服務註冊及登入。',
+
+ 'register_thanks' => '感謝您的註冊!',
+ 'register_confirm' => '請檢查您的電子郵件,並按下確認按鈕以使用 :appName 。',
+ 'registrations_disabled' => '目前已停用註冊',
+ 'registration_email_domain_invalid' => '這個電子郵件網域沒有權限使用',
+ 'register_success' => '感謝您註冊!您已註冊完成並可登入。',
+
+ // Login auto-initiation
+ 'auto_init_starting' => '嘗試登入中',
+ 'auto_init_starting_desc' => '正在與認證系統連線以開始流程,若 5 秒鐘仍無回應,請嘗試點擊以下的連結。',
+ 'auto_init_start_link' => '進行認證',
+
+ // Password Reset
+ 'reset_password' => '重設密碼',
+ 'reset_password_send_instructions' => '在下方輸入您的電子郵件,您將收到一封帶有密碼重設連結的郵件。',
+ 'reset_password_send_button' => '發送重設連結',
+ 'reset_password_sent' => '重設密碼的連結會發送至電子郵件 :email(如果此電子郵件在我們的系統中存在)',
+ 'reset_password_success' => '您的密碼已成功重設。',
+ 'email_reset_subject' => '重設您的 :appName 密碼',
+ 'email_reset_text' => '您收到此電子郵件是因為我們收到了您的帳號的密碼重設請求。',
+ 'email_reset_not_requested' => '如果您沒有要求重設密碼,則不需要採取進一步的操作。',
+
+ // Email Confirmation
+ 'email_confirm_subject' => '確認您在 :appName 的電子郵件',
+ 'email_confirm_greeting' => '感謝您加入 :appName!',
+ 'email_confirm_text' => '請點選下面的按鈕來確認您的電子郵件地址:',
+ 'email_confirm_action' => '確認電子郵件',
+ 'email_confirm_send_error' => '需要電子郵件驗證,但系統無法傳送電子郵件。請與管理員聯絡以確保電子郵件正確設定。',
+ 'email_confirm_success' => '您的電子郵箱已確認成功!您可以使用該電子郵箱地址進行登入了。',
+ 'email_confirm_resent' => '確認電子郵件已重新傳送。請檢查您的收件匣。',
+ 'email_confirm_thanks' => '完成驗證,謝謝。',
+ 'email_confirm_thanks_desc' => '正在處理您的確認,請稍候。若三秒後沒有重新導向,請按下方的「繼續」連結繼續。',
+
+ 'email_not_confirmed' => '電子郵件地址未確認',
+ 'email_not_confirmed_text' => '您的電子郵件位址尚未確認。',
+ 'email_not_confirmed_click_link' => '請檢查註冊時收到的電子郵件,然後點選確認連結。',
+ 'email_not_confirmed_resend' => '如果找不到電子郵件,請透過下面的表單重新發送確認電子郵件。',
+ 'email_not_confirmed_resend_button' => '重新傳送確認電子郵件',
+
+ // User Invite
+ 'user_invite_email_subject' => '您被邀請加入 :appName!',
+ 'user_invite_email_greeting' => '我們為您在 :appName 上建立了一個新帳號。',
+ 'user_invite_email_text' => '請點擊下方按鈕來設定帳號密碼並取得存取權:',
+ 'user_invite_email_action' => '設定帳號密碼',
+ 'user_invite_page_welcome' => '歡迎使用 :appName!',
+ 'user_invite_page_text' => '要完成設定您的帳號並取得存取權,您必須設定密碼,此密碼將用於登入 :appName。',
+ 'user_invite_page_confirm_button' => '確認密碼',
+ 'user_invite_success_login' => '密碼已設定完成,您可以使用改密碼來登入 :appName!',
+
+ // Multi-factor Authentication
+ 'mfa_setup' => '設定雙重身份驗證',
+ 'mfa_setup_desc' => '設定雙重身份驗證為您的帳戶多增加了一道防線',
+ 'mfa_setup_configured' => '設定完成',
+ 'mfa_setup_reconfigure' => '重新設定',
+ 'mfa_setup_remove_confirmation' => '您確定要移除雙重身份驗證嗎?',
+ 'mfa_setup_action' => '設置',
+ 'mfa_backup_codes_usage_limit_warning' => '您只剩下不到5組備用驗證碼了,請重新生成新的備用驗證碼並妥善保存,以免日後無法登入您的賬號。',
+ 'mfa_option_totp_title' => '手機App',
+ 'mfa_option_totp_desc' => '您必須在行動裝置上安裝了支援TOTP的身份驗證程式(例如Google Authenticator, Authy 或是 Microsoft Authenticator)才能使用雙重身份驗證。',
+ 'mfa_option_backup_codes_title' => '備用驗證碼',
+ 'mfa_option_backup_codes_desc' => '產生一次使用的備份代碼,你可以在登入時用來辨識身份。請確認代碼被存放在安全的地方。',
+ 'mfa_gen_confirm_and_enable' => '確認並啟用',
+ 'mfa_gen_backup_codes_title' => '備援代碼設定',
+ 'mfa_gen_backup_codes_desc' => '將以下代碼列表儲存在安全的地方。存取系統時,您可以使用其中一個代碼作為第二個身份驗證機制。',
+ 'mfa_gen_backup_codes_download' => '下載代碼',
+ 'mfa_gen_backup_codes_usage_warning' => '每個代碼都只能使用一次',
+ 'mfa_gen_totp_title' => '行動裝置應用程式設定',
+ 'mfa_gen_totp_desc' => '您必須在行動裝置上安裝支援 TOTP 的身份驗證應用程式(例如 Google Authenticator、Authy 或 Microsoft Authenticator)。',
+ 'mfa_gen_totp_scan' => '使用您偏好的身份驗證應用程式掃描下方的 QR code 以開始流程。',
+ 'mfa_gen_totp_verify_setup' => '驗證設定',
+ 'mfa_gen_totp_verify_setup_desc' => '透過在下方的輸入方塊中輸入您的身份驗證應用程式中產生的代碼來驗證一切都正常:',
+ 'mfa_gen_totp_provide_code_here' => '在此處填入您的應用程式產生的代碼',
+ 'mfa_verify_access' => '驗證存取權',
+ 'mfa_verify_access_desc' => '您的使用者帳號在您取得存取權前需要您透過額外的驗證層級確認您的身份。使用您設定的其中一種驗證方式繼續。',
+ 'mfa_verify_no_methods' => '未設定任何方式',
+ 'mfa_verify_no_methods_desc' => '您的帳號中找不到多重步驟驗證方式。在取得存取權前,您必須設定至少一種方式。',
+ 'mfa_verify_use_totp' => '使用您的行動裝置進行驗證',
+ 'mfa_verify_use_backup_codes' => '使用您的備用驗證碼進行驗證',
+ 'mfa_verify_backup_code' => '備用驗證碼',
+ 'mfa_verify_backup_code_desc' => '在下方輸入您剩下的其中一個備援代碼:',
+ 'mfa_verify_backup_code_enter_here' => '在此處輸入備援代碼',
+ 'mfa_verify_totp_desc' => '在下方輸入使用您行動裝置應用程式產生的代碼:',
+ 'mfa_setup_login_notification' => '多因素認證已設定,請使用新的設定登入',
+];
diff --git a/lang/zh_TW/common.php b/lang/zh_TW/common.php
new file mode 100644
index 00000000000..46e749fd60b
--- /dev/null
+++ b/lang/zh_TW/common.php
@@ -0,0 +1,115 @@
+ '取消',
+ 'close' => '關閉',
+ 'confirm' => '確認',
+ 'back' => '返回',
+ 'save' => '儲存',
+ 'continue' => '繼續',
+ 'select' => '選取',
+ 'toggle_all' => '切換全部',
+ 'more' => '更多',
+
+ // Form Labels
+ 'name' => '名稱',
+ 'description' => '描述',
+ 'role' => '角色',
+ 'cover_image' => '封面圖片',
+ 'cover_image_description' => '雖然圖片會在不同情境下自動調整顯示方式,但應接近 440x250 像素',
+
+ // Actions
+ 'actions' => '動作',
+ 'view' => '檢視',
+ 'view_all' => '檢視全部',
+ 'new' => '新增',
+ 'create' => '建立',
+ 'update' => '更新',
+ 'edit' => '編輯',
+ 'archive' => '歸檔',
+ 'unarchive' => '取消封存',
+ 'sort' => '排序',
+ 'move' => '移動',
+ 'copy' => '複製',
+ 'reply' => '回覆',
+ 'delete' => '刪除',
+ 'delete_confirm' => '確認刪除',
+ 'search' => '搜尋',
+ 'search_clear' => '清除搜尋',
+ 'reset' => '重設',
+ 'remove' => '移除',
+ 'add' => '新增',
+ 'configure' => '配置',
+ 'manage' => '管理',
+ 'fullscreen' => '全螢幕',
+ 'favourite' => '最愛',
+ 'unfavourite' => '取消最愛',
+ 'next' => '下一頁',
+ 'previous' => '上一頁',
+ 'filter_active' => '使用中的過濾器',
+ 'filter_clear' => '清理過濾',
+ 'download' => '下載',
+ 'open_in_tab' => '在新分頁中開啟',
+ 'open' => '開啟',
+
+ // Sort Options
+ 'sort_options' => '排序選項',
+ 'sort_direction_toggle' => '順序方向切換',
+ 'sort_ascending' => '遞增排序',
+ 'sort_descending' => '遞減排序',
+ 'sort_name' => '名稱',
+ 'sort_default' => '預設',
+ 'sort_created_at' => '建立日期',
+ 'sort_updated_at' => '更新日期',
+
+ // Misc
+ 'deleted_user' => '已刪除使用者',
+ 'no_activity' => '無活動可顯示',
+ 'no_items' => '無可用項目',
+ 'back_to_top' => '回到頂端',
+ 'skip_to_main_content' => '跳到主內容',
+ 'toggle_details' => '顯示/隱藏詳細資訊',
+ 'toggle_thumbnails' => '顯示/隱藏縮圖',
+ 'details' => '詳細資訊',
+ 'grid_view' => '網格檢視',
+ 'list_view' => '列表檢視',
+ 'default' => '預設',
+ 'breadcrumb' => '頁面路徑',
+ 'status' => '狀態',
+ 'status_active' => '啟用中',
+ 'status_inactive' => '未啟用',
+ 'never' => '永不',
+ 'none' => '無',
+
+ // Header
+ 'homepage' => '首頁',
+ 'header_menu_expand' => '展開選單',
+ 'profile_menu' => '個人資料選單',
+ 'view_profile' => '檢視個人資料',
+ 'edit_profile' => '編輯個人資料',
+ 'dark_mode' => '深色模式',
+ 'light_mode' => '淺色模式',
+ 'global_search' => '全域搜尋',
+
+ // Layout tabs
+ 'tab_info' => '資訊',
+ 'tab_info_label' => '顯示次要訊息',
+ 'tab_content' => '內容',
+ 'tab_content_label' => '顯示主要內容',
+
+ // Email Content
+ 'email_action_help' => '如果您無法點擊 ":actionText" 按鈕,請將下方的網址複製並貼上到您的網路瀏覽器中:',
+ 'email_rights' => '版權所有',
+
+ // Footer Link Options
+ // Not directly used but available for convenience to users.
+ 'privacy_policy' => '隱私權政策',
+ 'terms_of_service' => '服務條款',
+
+ // OpenSearch
+ 'opensearch_description' => '搜尋 :appName',
+];
diff --git a/lang/zh_TW/components.php b/lang/zh_TW/components.php
new file mode 100644
index 00000000000..d66dd383e8d
--- /dev/null
+++ b/lang/zh_TW/components.php
@@ -0,0 +1,46 @@
+ '選取圖片',
+ 'image_list' => '圖片列表',
+ 'image_details' => '圖片詳細資訊',
+ 'image_upload' => '上傳圖片',
+ 'image_intro' => '您可以在這裡選取和管理上傳到系統的圖片。',
+ 'image_intro_upload' => '透過拖曳圖檔至視窗中,或是使用下方的「上傳圖片」按鍵',
+ 'image_all' => '全部',
+ 'image_all_title' => '檢視所有圖片',
+ 'image_book_title' => '檢視上傳到此書本的圖片',
+ 'image_page_title' => '檢視上傳到此頁面的圖片',
+ 'image_search_hint' => '以圖片名稱搜尋',
+ 'image_uploaded' => '上傳於 :uploadedDate',
+ 'image_uploaded_by' => '由 :username 上傳',
+ 'image_uploaded_to' => '上傳到 :pageLink',
+ 'image_updated' => ':updateDate 更新',
+ 'image_load_more' => '載入更多',
+ 'image_image_name' => '圖片名稱',
+ 'image_delete_used' => '此圖片用於以下頁面。',
+ 'image_delete_confirm_text' => '您確認想要刪除這個圖片?',
+ 'image_select_image' => '選取圖片',
+ 'image_dropzone' => '拖曳圖片或點擊此處上傳',
+ 'image_dropzone_drop' => '將圖片拖放到此處上傳',
+ 'images_deleted' => '圖片已刪除',
+ 'image_preview' => '圖片預覽',
+ 'image_upload_success' => '圖片上傳成功',
+ 'image_update_success' => '圖片詳細資訊更新成功',
+ 'image_delete_success' => '圖片刪除成功',
+ 'image_replace' => '替換圖片',
+ 'image_replace_success' => '圖片更新成功',
+ 'image_rebuild_thumbs' => '重建影像縮圖',
+ 'image_rebuild_thumbs_success' => '縮圖建立成功',
+
+ // Code Editor
+ 'code_editor' => '編輯程式碼',
+ 'code_language' => '程式語言',
+ 'code_content' => '程式碼內容',
+ 'code_session_history' => '工作階段歷史',
+ 'code_save' => '儲存程式碼',
+];
diff --git a/lang/zh_TW/editor.php b/lang/zh_TW/editor.php
new file mode 100644
index 00000000000..c56f33efcbd
--- /dev/null
+++ b/lang/zh_TW/editor.php
@@ -0,0 +1,182 @@
+ '通用',
+ 'advanced' => '進階設定',
+ 'none' => '無',
+ 'cancel' => '取消',
+ 'save' => '保存',
+ 'close' => '關閉',
+ 'apply' => '套用',
+ 'undo' => '復原',
+ 'redo' => '重做',
+ 'left' => '左側',
+ 'center' => '置中',
+ 'right' => '右側',
+ 'top' => '上方',
+ 'middle' => '中間',
+ 'bottom' => '底端',
+ 'width' => '寬度',
+ 'height' => '高度',
+ 'More' => '更多',
+ 'select' => '選擇...',
+
+ // Toolbar
+ 'formats' => '格式',
+ 'header_large' => '大標題',
+ 'header_medium' => '中標題',
+ 'header_small' => '小標題',
+ 'header_tiny' => '小標題',
+ 'paragraph' => '段落',
+ 'blockquote' => '引用塊',
+ 'inline_code' => '行內程式碼',
+ 'callouts' => '圖說文字',
+ 'callout_information' => '資訊',
+ 'callout_success' => '成功',
+ 'callout_warning' => '警告',
+ 'callout_danger' => '危險',
+ 'bold' => '粗體',
+ 'italic' => '斜體',
+ 'underline' => '底線',
+ 'strikethrough' => '刪除線',
+ 'superscript' => '上標',
+ 'subscript' => '下標',
+ 'text_color' => '文本顏色',
+ 'highlight_color' => '突顯顏色',
+ 'custom_color' => '自訂顏色',
+ 'remove_color' => '移除颜色',
+ 'background_color' => '背景顏色',
+ 'align_left' => '置左',
+ 'align_center' => '置中',
+ 'align_right' => '置右',
+ 'align_justify' => '兩端對齊',
+ 'list_bullet' => '項目列表',
+ 'list_numbered' => '編號列表',
+ 'list_task' => '任務清單',
+ 'indent_increase' => '增加縮進',
+ 'indent_decrease' => '減少縮進',
+ 'table' => '表格',
+ 'insert_image' => '插入圖片',
+ 'insert_image_title' => '插入/編輯圖像',
+ 'insert_link' => '插入/編輯連結',
+ 'insert_link_title' => '插入/編輯連結',
+ 'insert_horizontal_line' => '插入水平線',
+ 'insert_code_block' => '插入程式碼區塊',
+ 'edit_code_block' => '編輯程式碼區塊',
+ 'insert_drawing' => '插入/編輯向量圖',
+ 'drawing_manager' => '向量圖管理員',
+ 'insert_media' => '插入/編輯影片',
+ 'insert_media_title' => '插入/編輯影片',
+ 'clear_formatting' => '清除格式',
+ 'source_code' => '原始碼',
+ 'source_code_title' => '原始碼',
+ 'fullscreen' => '全螢幕',
+ 'image_options' => '圖片選項',
+
+ // Tables
+ 'table_properties' => '表格屬性',
+ 'table_properties_title' => '表格屬性',
+ 'delete_table' => '刪除表格',
+ 'table_clear_formatting' => '清除格式',
+ 'resize_to_contents' => '將大小調整到符合內容',
+ 'row_header' => '列標題',
+ 'insert_row_before' => '插入上方列',
+ 'insert_row_after' => '插入下方列',
+ 'delete_row' => '刪除列',
+ 'insert_column_before' => '插入欄位於左方',
+ 'insert_column_after' => '插入欄位於右方',
+ 'delete_column' => '刪除欄',
+ 'table_cell' => '儲存格',
+ 'table_row' => '行',
+ 'table_column' => '欄',
+ 'cell_properties' => '表格屬性',
+ 'cell_properties_title' => '表格屬性',
+ 'cell_type' => '儲存格類型',
+ 'cell_type_cell' => '儲存格',
+ 'cell_scope' => '範圍',
+ 'cell_type_header' => '標題儲存格',
+ 'merge_cells' => '合併儲存格',
+ 'split_cell' => '分割儲存格',
+ 'table_row_group' => '依行分組',
+ 'table_column_group' => '依列分組',
+ 'horizontal_align' => '水平對齊',
+ 'vertical_align' => '垂直對齊',
+ 'border_width' => '邊框寬度',
+ 'border_style' => '邊框樣式',
+ 'border_color' => '邊框顏色',
+ 'row_properties' => '行屬性',
+ 'row_properties_title' => '行屬性',
+ 'cut_row' => '剪切行',
+ 'copy_row' => '複製行',
+ 'paste_row_before' => '插入上方行',
+ 'paste_row_after' => '插入下方行',
+ 'row_type' => '行類型',
+ 'row_type_header' => '頁眉',
+ 'row_type_body' => '正文',
+ 'row_type_footer' => '页脚',
+ 'alignment' => '對齊',
+ 'cut_column' => '剪切列',
+ 'copy_column' => '剪切列',
+ 'paste_column_before' => '插入前方列',
+ 'paste_column_after' => '插入後方列',
+ 'cell_padding' => '單元格填充',
+ 'cell_spacing' => '單元格間距',
+ 'caption' => '標題',
+ 'show_caption' => '顯示標題',
+ 'constrain' => '維持比例',
+ 'cell_border_solid' => '實線',
+ 'cell_border_dotted' => '點線',
+ 'cell_border_dashed' => '虛線',
+ 'cell_border_double' => '兩倍',
+ 'cell_border_groove' => '凹線',
+ 'cell_border_ridge' => '浮出',
+ 'cell_border_inset' => '嵌入',
+ 'cell_border_outset' => '外嵌',
+ 'cell_border_none' => '無',
+ 'cell_border_hidden' => '隱藏',
+
+ // Images, links, details/summary & embed
+ 'source' => '來源',
+ 'alt_desc' => '替代描述',
+ 'embed' => '內嵌',
+ 'paste_embed' => '在下面黏貼您的嵌入代碼:',
+ 'url' => '網址',
+ 'text_to_display' => '要顯示的文字',
+ 'title' => '標題',
+ 'browse_links' => '瀏覽連結',
+ 'open_link' => '開啟連結',
+ 'open_link_in' => '打開連結於……',
+ 'open_link_current' => '當前視窗',
+ 'open_link_new' => '新視窗',
+ 'remove_link' => '移除連結',
+ 'insert_collapsible' => '插入可折疊塊',
+ 'collapsible_unwrap' => '展開',
+ 'edit_label' => '編輯標記',
+ 'toggle_open_closed' => '切換打開/關閉',
+ 'collapsible_edit' => '編輯可折疊塊',
+ 'toggle_label' => '切換標籤',
+
+ // About view
+ 'about' => '關於編輯器',
+ 'about_title' => '關於所見即所得(WYSIWYG)編輯器',
+ 'editor_license' => '編輯器許可證與版權信息',
+ 'editor_lexical_license' => '這個編輯器是從 :lexicalLink 分支出來的,而 :lexicalLink 是以 MIT 授權條款散佈。',
+ 'editor_lexical_license_link' => '完整的授權條款詳細資訊可在這裡找到。',
+ 'editor_tiny_license' => '此編輯器是用 :tinyLink 構建的,基於 MIT 許可證。',
+ 'editor_tiny_license_link' => 'TinyMCE 的版權和許可證詳細信息可以在這裡找到。',
+ 'save_continue' => '保存頁面並繼續',
+ 'callouts_cycle' => '(繼續按下以切換類型)',
+ 'link_selector' => '鏈接到內容',
+ 'shortcuts' => '快捷鍵',
+ 'shortcut' => '快捷鍵',
+ 'shortcuts_intro' => '編輯器中提供了以下快捷鍵:',
+ 'windows_linux' => '(Windows/Linux)',
+ 'mac' => '(Mac)',
+ 'description' => '說明',
+];
diff --git a/lang/zh_TW/entities.php b/lang/zh_TW/entities.php
new file mode 100644
index 00000000000..46bbe62f973
--- /dev/null
+++ b/lang/zh_TW/entities.php
@@ -0,0 +1,476 @@
+ '最近建立',
+ 'recently_created_pages' => '最近建立的頁面',
+ 'recently_updated_pages' => '最近更新的頁面',
+ 'recently_created_chapters' => '最近建立的章節',
+ 'recently_created_books' => '最近建立的書本',
+ 'recently_created_shelves' => '最近建立的書架',
+ 'recently_update' => '最近更新',
+ 'recently_viewed' => '最近檢視',
+ 'recent_activity' => '近期活動',
+ 'create_now' => '立即建立',
+ 'revisions' => '修訂版本',
+ 'meta_revision' => '修訂版本 #:revisionCount',
+ 'meta_created' => '建立於 :timeLength',
+ 'meta_created_name' => '由 :user 建立於 :timeLength',
+ 'meta_updated' => '更新於 :timeLength',
+ 'meta_updated_name' => '由 :user 更新於 :timeLength',
+ 'meta_owned_name' => ':user 所擁有',
+ 'meta_reference_count' => '被 :count 個項目引用',
+ 'entity_select' => '選取項目',
+ 'entity_select_lack_permission' => '你沒有權限使用此項目',
+ 'images' => '圖片',
+ 'my_recent_drafts' => '我最近的草稿',
+ 'my_recently_viewed' => '我最近檢視',
+ 'my_most_viewed_favourites' => '我瀏覽最多次的最愛',
+ 'my_favourites' => '我的最愛',
+ 'no_pages_viewed' => '您尚未看過任何頁面',
+ 'no_pages_recently_created' => '最近未建立任何頁面',
+ 'no_pages_recently_updated' => '最近沒有頁面被更新',
+ 'export' => '匯出',
+ 'export_html' => '網頁檔案',
+ 'export_pdf' => 'PDF 檔案',
+ 'export_text' => '純文字檔案',
+ 'export_md' => 'Markdown 檔案',
+ 'export_zip' => '可攜式 ZIP',
+ 'default_template' => '預設頁面範本',
+ 'default_template_explain' => '請設定一個頁面範本,作為新頁面的預設內容。請注意,這僅限於作者擁有頁面範本讀取權限時才能夠使用。',
+ 'default_template_select' => '選擇一個頁面範本',
+ 'import' => '匯入',
+ 'import_validate' => '驗證匯入',
+ 'import_desc' => '使用從相同或不同站點匯出的可攜式壓縮檔匯入書本、章節與頁面。選取 ZIP 檔案繼續。檔案上傳並通過驗證後,您就可以在下一個檢視中設定並確認匯入。',
+ 'import_zip_select' => '選取要上傳的 ZIP 檔案',
+ 'import_zip_validation_errors' => '驗證提供的 ZIP 檔案時偵測到錯誤:',
+ 'import_pending' => '擱置中的匯入',
+ 'import_pending_none' => '尚未開始匯入。',
+ 'import_continue' => '繼續匯入',
+ 'import_continue_desc' => '檢視要從上傳的 ZIP 檔匯入的內容。準備就緒後,執行匯入以將其內容加入本系統。成功匯入後,上傳的 ZIP 匯入檔案會自動移除。',
+ 'import_details' => '匯入詳細資訊',
+ 'import_run' => '執行匯入',
+ 'import_size' => ':size 匯入 ZIP 大小',
+ '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' => '瀏覽同層級頁面',
+ '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_save' => '儲存權限',
+ 'permissions_owner' => '擁有者',
+ 'permissions_role_everyone_else' => '所有其他人',
+ 'permissions_role_everyone_else_desc' => '設定未被指派角色時的權限',
+ 'permissions_role_override' => '覆蓋角色權限',
+ 'permissions_inherit_defaults' => '繼承預設值',
+
+ // Search
+ 'search_results' => '搜尋結果',
+ 'search_total_results_found' => '找到了 :count 個結果 | 總共 :count 個結果',
+ 'search_clear' => '清除搜尋',
+ 'search_no_pages' => '沒有與此搜尋相符的頁面',
+ 'search_for_term' => ':term 的搜尋結果',
+ 'search_more' => '更多結果',
+ 'search_advanced' => '進階搜尋',
+ 'search_terms' => '搜尋字串',
+ 'search_content_type' => '內容類型',
+ 'search_exact_matches' => '精確符合',
+ 'search_tags' => '標籤搜尋',
+ 'search_options' => '選項',
+ 'search_viewed_by_me' => '被我檢視',
+ 'search_not_viewed_by_me' => '未被我檢視',
+ 'search_permissions_set' => '權限設定',
+ 'search_created_by_me' => '我建立的',
+ 'search_updated_by_me' => '我更新的',
+ 'search_owned_by_me' => '我所擁有的',
+ 'search_date_options' => '日期選項',
+ 'search_updated_before' => '在此之前更新',
+ 'search_updated_after' => '在此之後更新',
+ 'search_created_before' => '在此之前建立',
+ 'search_created_after' => '在此之後建立',
+ 'search_set_date' => '設定日期',
+ 'search_update' => '更新搜尋結果',
+
+ // Shelves
+ 'shelf' => '書架',
+ 'shelves' => '書架',
+ 'x_shelves' => ':count 書架 | :count 章節',
+ 'shelves_empty' => '尚未建立書架',
+ 'shelves_create' => '建立新書架',
+ 'shelves_popular' => '熱門書架',
+ 'shelves_new' => '新書架',
+ 'shelves_new_action' => '建立新的書架',
+ 'shelves_popular_empty' => '最受歡迎的書架將出現在這裡。',
+ 'shelves_new_empty' => '最近建立的書架將出現在這裡。',
+ 'shelves_save' => '儲存書架',
+ 'shelves_books' => '此書架上的書本',
+ 'shelves_add_books' => '新增書本至此書架',
+ 'shelves_drag_books' => '拖曳書籍至下方,以便新增至此書架',
+ 'shelves_empty_contents' => '此書架沒有分配任何書本',
+ 'shelves_edit_and_assign' => '編輯書架以分配書本',
+ 'shelves_edit_named' => '編輯書架',
+ 'shelves_edit' => '編輯書架',
+ 'shelves_delete' => '刪除書架',
+ 'shelves_delete_named' => '刪除書架「:name」',
+ 'shelves_delete_explain' => "這將刪除名為「:name」的書架。但其中的書本不會被刪除。",
+ 'shelves_delete_confirmation' => '您確定要刪除此書架嗎?',
+ 'shelves_permissions' => '書架權限',
+ 'shelves_permissions_updated' => '已更新書架權限',
+ 'shelves_permissions_active' => '已啟用書架權限',
+ 'shelves_permissions_cascade_warning' => '因書籍可位於多個書架,因此書架權限不會自動套用至書籍上。但仍可透過下方的選項來複製權限到子書籍。',
+ 'shelves_permissions_create' => '書架創建權限僅用於使用下面的操作將權限複製到子圖書。這個權限不是用來控制創建書籍的。',
+ 'shelves_copy_permissions_to_books' => '將權限複製到書本',
+ 'shelves_copy_permissions' => '複製權限',
+ 'shelves_copy_permissions_explain' => '此操作會將此書架的當前權限設置應用於其中包含的所有圖書上。 啓用前請確保已保存對此書架權限的任何更改。',
+ 'shelves_copy_permission_success' => '書架權限已複製到 :count 本書籍',
+
+ // Books
+ 'book' => '書本',
+ 'books' => '書本',
+ 'x_books' => ':count 本書 | :count本書',
+ 'books_empty' => '不存在已建立的書',
+ 'books_popular' => '熱門書本',
+ 'books_recent' => '近期書本',
+ 'books_new' => '新書本',
+ 'books_new_action' => '新書本',
+ 'books_popular_empty' => '最受歡迎的書本將出現在這裡。',
+ 'books_new_empty' => '最近建立的書本將出現在這裡。',
+ 'books_create' => '建立新書本',
+ 'books_delete' => '刪除書本',
+ 'books_delete_named' => '刪除書本 :bookName',
+ 'books_delete_explain' => '這將刪除書本「:bookName」。所有的章節和頁面都會被刪除。',
+ 'books_delete_confirmation' => '您確定要刪除此書本嗎?',
+ 'books_edit' => '編輯書本',
+ 'books_edit_named' => '編輯書本「:bookName」',
+ 'books_form_book_name' => '書本名稱',
+ 'books_save' => '儲存書本',
+ 'books_permissions' => '書本權限',
+ 'books_permissions_updated' => '書本權限已更新',
+ 'books_empty_contents' => '本書目前沒有頁面或章節。',
+ 'books_empty_create_page' => '建立新頁面',
+ 'books_empty_sort_current_book' => '排序目前書本',
+ 'books_empty_add_chapter' => '新增章節',
+ 'books_permissions_active' => '書本權限已啟用',
+ 'books_search_this' => '搜尋此書本',
+ 'books_navigation' => '書本導覽',
+ '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_chapters_first' => '第一章',
+ 'books_sort_chapters_last' => '最後一章',
+ 'books_sort_show_other' => '顯示其他書本',
+ 'books_sort_save' => '儲存新順序',
+ 'books_sort_show_other_desc' => '新增書籍到排序清單中,以便跨書籍重組資料',
+ 'books_sort_move_up' => '上移',
+ 'books_sort_move_down' => '下移',
+ 'books_sort_move_prev_book' => '移動至前一書籍',
+ 'books_sort_move_next_book' => '移動至前一書籍',
+ 'books_sort_move_prev_chapter' => '移動至前一章節',
+ 'books_sort_move_next_chapter' => '移動至下一章節',
+ 'books_sort_move_book_start' => '移動到書籍開頭',
+ 'books_sort_move_book_end' => '移動到書籍結尾',
+ 'books_sort_move_before_chapter' => '移動到章節之前',
+ 'books_sort_move_after_chapter' => '移動到章節之後',
+ 'books_copy' => '複製書籍',
+ 'books_copy_success' => '書籍已成功被複製',
+
+ // Chapters
+ 'chapter' => '章節',
+ 'chapters' => '章節',
+ 'x_chapters' => ':count個章節 | :count個章節',
+ 'chapters_popular' => '熱門章節',
+ 'chapters_new' => '新章節',
+ 'chapters_create' => '建立章節',
+ 'chapters_delete' => '刪除章節',
+ 'chapters_delete_named' => '刪除章節 :chapterName',
+ 'chapters_delete_explain' => '這將會刪除名稱為「:chapterName」的章節。此章節中的所有頁面都將會被刪除。',
+ 'chapters_delete_confirm' => '您確定要刪除此章節嗎?',
+ 'chapters_edit' => '編輯章節',
+ 'chapters_edit_named' => '編輯章節「:chapterName」',
+ 'chapters_save' => '儲存章節',
+ 'chapters_move' => '移動章節',
+ 'chapters_move_named' => '移動章節 :chapterName',
+ 'chapters_copy' => '複製章節',
+ 'chapters_copy_success' => '章節已成功被複製',
+ 'chapters_permissions' => '章節權限',
+ 'chapters_empty' => '本章目前沒有頁面。',
+ 'chapters_permissions_active' => '章節權限已啟用',
+ 'chapters_permissions_success' => '章節權限已更新',
+ 'chapters_search_this' => '搜尋此章節',
+ 'chapter_sort_book' => '排序書籍內容',
+
+ // Pages
+ 'page' => '頁面',
+ 'pages' => '頁面',
+ 'x_pages' => ':count 頁 | :count 頁',
+ 'pages_popular' => '熱門頁面',
+ 'pages_new' => '新頁面',
+ 'pages_attachments' => '附件',
+ 'pages_navigation' => '頁面導覽',
+ 'pages_delete' => '刪除頁面',
+ 'pages_delete_named' => '刪除頁面 :pageName',
+ 'pages_delete_draft_named' => '刪除草稿頁面 :pageName',
+ 'pages_delete_draft' => '刪除草稿頁面',
+ 'pages_delete_success' => '頁面已刪除',
+ 'pages_delete_draft_success' => '草稿頁面已刪除',
+ 'pages_delete_warning_template' => '此頁面是當前書籍或章節的默認頁面模板。刪除此頁面後,這些書籍或章節的默認頁面模板將被取消。',
+ 'pages_delete_confirm' => '您確定要刪除此頁面嗎?',
+ 'pages_delete_draft_confirm' => '您確定要刪除此草稿頁面嗎?',
+ 'pages_editing_named' => '正在編輯頁面 :pageName',
+ 'pages_edit_draft_options' => '草稿選項',
+ 'pages_edit_save_draft' => '儲存草稿',
+ 'pages_edit_draft' => '編輯頁面草稿',
+ 'pages_editing_draft' => '正在編輯草稿',
+ 'pages_editing_page' => '正在編輯頁面',
+ 'pages_edit_draft_save_at' => '草稿儲存於 ',
+ 'pages_edit_delete_draft' => '刪除草稿',
+ 'pages_edit_delete_draft_confirm' => '您確定要刪除您的草稿頁面更改嗎?自上次完整保存以來的所有更改都將丟失,編輯器將更新為最新非草稿頁面。',
+ 'pages_edit_discard_draft' => '放棄草稿',
+ 'pages_edit_switch_to_markdown' => '切換到 Markdown 編輯器',
+ 'pages_edit_switch_to_markdown_clean' => '(清除內容)',
+ 'pages_edit_switch_to_markdown_stable' => '(保留內容)',
+ 'pages_edit_switch_to_wysiwyg' => '切換到所見即所得編輯器',
+ 'pages_edit_switch_to_new_wysiwyg' => '切換為新的所見即所得編輯器',
+ 'pages_edit_switch_to_new_wysiwyg_desc' => '(仍在測試中)',
+ 'pages_edit_set_changelog' => '設定變更日誌',
+ 'pages_edit_enter_changelog_desc' => '輸入對您所做變動的簡易描述',
+ 'pages_edit_enter_changelog' => '輸入變更日誌',
+ 'pages_editor_switch_title' => '切換編輯器',
+ 'pages_editor_switch_are_you_sure' => '你想要更改這頁所使用的編輯器嗎?',
+ 'pages_editor_switch_consider_following' => '更換編輯器時請考慮以下事項:',
+ 'pages_editor_switch_consideration_a' => '一旦選擇使用新的編輯器,其他頁面以及沒有權限更換編輯器的使用者都將使用新的編輯器',
+ 'pages_editor_switch_consideration_b' => '在某些情況下,將遺失細部設定以及語法',
+ 'pages_editor_switch_consideration_c' => '切換編輯器時,本次的標籤設定、版本修訂記錄將不會被保留',
+ 'pages_save' => '儲存頁面',
+ 'pages_title' => '頁面標題',
+ 'pages_name' => '頁面名稱',
+ 'pages_md_editor' => '編輯者',
+ 'pages_md_preview' => '預覽',
+ 'pages_md_insert_image' => '插入圖片',
+ 'pages_md_insert_link' => '插入連結',
+ 'pages_md_insert_drawing' => '插入繪圖',
+ 'pages_md_show_preview' => '顯示預覽',
+ 'pages_md_sync_scroll' => '預覽頁面同步捲動',
+ 'pages_md_plain_editor' => '純文字編輯器',
+ 'pages_drawing_unsaved' => '偵測到未儲存的繪圖',
+ 'pages_drawing_unsaved_confirm' => '從之前保存失敗的繪圖中發現了可恢復的數據。您想恢復並繼續編輯這個未保存的繪圖嗎?',
+ 'pages_not_in_chapter' => '頁面不在章節中',
+ 'pages_move' => '移動頁面',
+ 'pages_copy' => '複製頁面',
+ 'pages_copy_desination' => '複製的目的地',
+ 'pages_copy_success' => '頁面已成功複製',
+ 'pages_permissions' => '頁面權限',
+ 'pages_permissions_success' => '頁面權限已更新',
+ 'pages_revision' => '修訂版本',
+ 'pages_revisions' => '頁面修訂版本',
+ 'pages_revisions_desc' => '下面列出的是該頁面的所有過去修訂。如果權限允許,您可以回顧、比較和恢復舊的頁面版本。頁面的完整歷史可能不會在這裡完全反映出來,因為根據系統配置,舊的修訂可能會被自動刪除。',
+ 'pages_revisions_named' => ':pageName 頁面修訂版本',
+ 'pages_revision_named' => ':pageName 頁面修訂版本',
+ 'pages_revision_restored_from' => '從 #:id; :summary 復原',
+ 'pages_revisions_created_by' => '建立者',
+ 'pages_revisions_date' => '修訂日期',
+ 'pages_revisions_number' => '#',
+ 'pages_revisions_sort_number' => '修訂版號',
+ 'pages_revisions_numbered' => '修訂版本 #:id',
+ 'pages_revisions_numbered_changes' => '修訂版本 #:id 變更',
+ 'pages_revisions_editor' => '編輯器類型',
+ 'pages_revisions_changelog' => '變動日誌',
+ 'pages_revisions_changes' => '變動',
+ 'pages_revisions_current' => '目前版本',
+ 'pages_revisions_preview' => '預覽',
+ 'pages_revisions_restore' => '還原',
+ 'pages_revisions_none' => '此頁面沒有修訂',
+ 'pages_copy_link' => '複製連結',
+ 'pages_edit_content_link' => '移動到編輯器區段',
+ 'pages_pointer_enter_mode' => '進入區段選取模式',
+ 'pages_pointer_label' => '頁面區段選項',
+ 'pages_pointer_permalink' => '頁面區段永久連結',
+ 'pages_pointer_include_tag' => '包含標籤的頁面區段',
+ 'pages_pointer_toggle_link' => '永久連結模式,點擊顯示包含的標籤',
+ 'pages_pointer_toggle_include' => '包含標籤模式,按下顯示永久鏈接',
+ 'pages_permissions_active' => '頁面權限已啟用',
+ 'pages_initial_revision' => '初次發布',
+ 'pages_references_update_revision' => '系統自動更新的內部鏈接',
+ 'pages_initial_name' => '新頁面',
+ 'pages_editing_draft_notification' => '您正在編輯最後儲存為 :timeDiff 的草稿。',
+ 'pages_draft_edited_notification' => '此頁面已經被更新過。建議您放棄此草稿。',
+ 'pages_draft_page_changed_since_creation' => '這個頁面在您的草稿創建後被其他用戶更新了,您目前的草稿不包含新的內容。建議您放棄此草稿,或是注意不要覆蓋新的頁面更改。',
+ 'pages_draft_edit_active' => [
+ 'start_a' => ':count 位使用者已經開始編輯此頁面',
+ 'start_b' => '使用者 :userName 已經開始編輯此頁面',
+ 'time_a' => '自頁面上次更新以來',
+ 'time_b' => '在最近:minCount分鐘',
+ 'message' => ':start :time。注意不要覆寫其他人的更新!',
+ ],
+ 'pages_draft_discarded' => '草稿已丟棄!編輯器已更新到當前頁面內容',
+ 'pages_draft_deleted' => '草稿已刪除!編輯器已更新為當前頁面內容',
+ 'pages_specific' => '特定頁面',
+ 'pages_is_template' => '頁面模板',
+
+ // Editor Sidebar
+ 'toggle_sidebar' => '切換側邊欄',
+ 'page_tags' => '頁面標籤',
+ 'chapter_tags' => '章節標籤',
+ 'book_tags' => '書本標籤',
+ 'shelf_tags' => '書架標籤',
+ 'tag' => '標籤',
+ 'tags' => '標籤',
+ 'tags_index_desc' => '為內容加上標籤可靈活得進行分類。標籤可以設定名稱與數值,其中數值為選用。一旦標籤設定完成,便可透過標籤名稱與數值來進行搜尋。',
+ 'tag_name' => '標籤名稱',
+ 'tag_value' => '標籤值(選擇性)',
+ 'tags_explain' => "加入一些標籤以更好地對您的內容進行分類。 \n 您可以為標籤分配一個值,以進行更深入的組織。",
+ 'tags_add' => '新增另一個標籤',
+ 'tags_remove' => '移除此標籤',
+ 'tags_usages' => '總用量',
+ 'tags_assigned_pages' => '頁面',
+ 'tags_assigned_chapters' => '章節',
+ 'tags_assigned_books' => '書籍',
+ 'tags_assigned_shelves' => '書架',
+ 'tags_x_unique_values' => ':count 個不同的數值',
+ 'tags_all_values' => '所有數值',
+ 'tags_view_tags' => '檢視標籤',
+ 'tags_view_existing_tags' => '檢視已存在的標籤',
+ 'tags_list_empty_hint' => '可在編輯書架、書籍時設定標籤,或是在編輯章節、頁面時透過側邊欄設定',
+ 'attachments' => '附件',
+ 'attachments_explain' => '上傳一些檔案或附加連結以顯示在您的網頁上。將顯示在在頁面的側邊欄。',
+ 'attachments_explain_instant_save' => '此處的變動將會立刻儲存。',
+ 'attachments_upload' => '上傳檔案',
+ 'attachments_link' => '附加連結',
+ 'attachments_upload_drop' => '你也可以將檔案拖曳到此來上傳附加檔案',
+ 'attachments_set_link' => '設定連結',
+ 'attachments_delete' => '您確定要刪除此附件嗎?',
+ 'attachments_dropzone' => '將檔案拖曳至此來上傳',
+ 'attachments_no_files' => '尚未上傳檔案',
+ 'attachments_explain_link' => '如果您不想上傳檔案,則可以附加連結。這可以是指向其他頁面的連結,也可以是指向雲端檔案的連結。',
+ 'attachments_link_name' => '連結名稱',
+ 'attachment_link' => '附件連結',
+ 'attachments_link_url' => '連結到檔案',
+ 'attachments_link_url_hint' => '網站或檔案的網址',
+ 'attach' => '附加',
+ 'attachments_insert_link' => '將附件連結新增到頁面',
+ 'attachments_edit_file' => '編輯檔案',
+ 'attachments_edit_file_name' => '檔案名稱',
+ 'attachments_edit_drop_upload' => '拖曳檔案或點擊此處以上傳並覆寫',
+ 'attachments_order_updated' => '附件順序已更新',
+ 'attachments_updated_success' => '附件資訊已更新',
+ 'attachments_deleted' => '附件已刪除',
+ 'attachments_file_uploaded' => '附件上傳成功',
+ 'attachments_file_updated' => '附件更新成功',
+ 'attachments_link_attached' => '連結成功附加到頁面',
+ 'templates' => '範本',
+ 'templates_set_as_template' => '頁面為範本',
+ 'templates_explain_set_as_template' => '您可以將此頁面設定為範本,以便在建立其他頁面時利用其內容。如果其他使用者對此頁面擁有檢視權限,則將可以使用此範本。',
+ 'templates_replace_content' => '替換頁面內容',
+ 'templates_append_content' => '附加到頁面內容',
+ 'templates_prepend_content' => '前置頁面內容',
+
+ // Profile View
+ 'profile_user_for_x' => '來這裡 :time 了',
+ 'profile_created_content' => '已建立內容',
+ 'profile_not_created_pages' => ':userName 尚未建立任何頁面',
+ 'profile_not_created_chapters' => ':userName 尚未建立任何章節',
+ 'profile_not_created_books' => ':userName 尚未建立任何書本',
+ 'profile_not_created_shelves' => ':userName 沒有創建任何書架',
+
+ // Comments
+ 'comment' => '評論',
+ 'comments' => '評論',
+ 'comment_add' => '新增評論',
+ 'comment_none' => '無可顯示的留言',
+ 'comment_placeholder' => '在這裡評論',
+ 'comment_thread_count' => ':count 個留言討論串|:count 個留言討論串',
+ 'comment_archived_count' => ':count 個已封存',
+ 'comment_archived_threads' => '已封存的討論串',
+ 'comment_save' => '儲存評論',
+ 'comment_new' => '新評論',
+ 'comment_created' => '評論於 :createDiff',
+ 'comment_updated' => '由 :username 於 :updateDiff 更新',
+ 'comment_updated_indicator' => '已更新',
+ 'comment_deleted_success' => '評論已刪除',
+ 'comment_created_success' => '評論已加入',
+ 'comment_updated_success' => '評論已更新',
+ 'comment_archive_success' => '留言已封存',
+ 'comment_unarchive_success' => '留言已解除封存',
+ 'comment_view' => '檢視留言',
+ 'comment_jump_to_thread' => '前往討論串',
+ 'comment_delete_confirm' => '您確定要刪除這則評論?',
+ 'comment_in_reply_to' => '回覆 :commentId',
+ 'comment_reference' => '參考資料',
+ 'comment_reference_outdated' => '(過期)',
+ 'comment_editor_explain' => '此為頁面上的評論。在查看檢視與儲存頁面的同時,可以新增和管理評論。',
+
+ // Revision
+ 'revision_delete_confirm' => '您確定要刪除此修訂版本嗎?',
+ 'revision_restore_confirm' => '您確定要還原此修訂版本嗎? 目前頁面內容將被替換。',
+ 'revision_cannot_delete_latest' => '無法刪除最新修訂版本。',
+
+ // Copy view
+ 'copy_consider' => '複製內容時請注意以下事項',
+ 'copy_consider_permissions' => '自定義權限設置將不會被複製。',
+ 'copy_consider_owner' => '您將成為所有已複製內容的所有者。',
+ 'copy_consider_images' => '頁面中的圖像文件不會被複製,原始圖像將保留它們與最初上傳到的頁面的關係。',
+ 'copy_consider_attachments' => '頁面中的附件不會被複製。',
+ 'copy_consider_access' => '改變位置、所有者或權限可能會導致此內容被以前無法訪問的人訪問。',
+
+ // Conversions
+ 'convert_to_shelf' => '轉換成書架',
+ 'convert_to_shelf_contents_desc' => '你可以將此書籍轉換成包含相同內容的新書架,書籍中的章節則會轉換成書籍。若書籍中有不屬於任何章節的頁面,這些頁面會自動轉換成新書架中的書籍。',
+ 'convert_to_shelf_permissions_desc' => '在這本書上設置的任何權限都將複製到所有未強制執行權限的新書架和新子圖書上。請注意,書架上的權限不會像圖書那樣繼承到內容物上。',
+ 'convert_book' => '轉換成書本',
+ 'convert_book_confirm' => '您確定要轉換此書本嗎?',
+ 'convert_undo_warning' => '這可不能輕易撤消。',
+ 'convert_to_book' => '轉換成書籍',
+ 'convert_to_book_desc' => '您可以將此章節轉換為具有相同內容的新書本。此章節中設置的任何權限都將複製到新書本上,但從父圖書繼承的任何權限都不會被複製,這可能會導致訪問控制發生變化。',
+ 'convert_chapter' => '轉換章節',
+ 'convert_chapter_confirm' => '您確定要轉換此章節嗎?',
+
+ // References
+ 'references' => '引用',
+ 'references_none' => '沒有跟蹤到對此項目的引用。',
+ 'references_to_desc' => '下方列出了系統中鏈接到此項目的所有已知內容。',
+
+ // Watch Options
+ 'watch' => '追蹤',
+ 'watch_title_default' => '預設偏好設定',
+ 'watch_desc_default' => '還原成預設的通知設定',
+ 'watch_title_ignore' => '忽略',
+ 'watch_desc_ignore' => '忽略所有通知,包括來自用戶級偏好的通知。',
+ 'watch_title_new' => '新頁面',
+ 'watch_desc_new' => '在此項目中創建任何新頁面時通知我。',
+ 'watch_title_updates' => '所有頁面更新',
+ 'watch_desc_updates' => '在所有新頁面和頁面更改時通知我。',
+ 'watch_desc_updates_page' => '在有頁面發生更改時通知我。',
+ 'watch_title_comments' => '所有頁面更新和評論',
+ 'watch_desc_comments' => '在有新頁面、頁面更改和新評論時通知我。',
+ 'watch_desc_comments_page' => '在有頁面更改和新評論時通知我。',
+ 'watch_change_default' => '更改默認通知偏好',
+ 'watch_detail_ignore' => '忽略通知',
+ 'watch_detail_new' => '追蹤新頁面',
+ 'watch_detail_updates' => '追蹤新頁面與異動',
+ 'watch_detail_comments' => '追蹤新頁面、自動與評論',
+ 'watch_detail_parent_book' => '已關注—繼承自父書本',
+ 'watch_detail_parent_book_ignore' => '已忽略—繼承自父書本',
+ 'watch_detail_parent_chapter' => '已關注—繼承自父章節',
+ 'watch_detail_parent_chapter_ignore' => '已忽略—繼承自父章節',
+];
diff --git a/lang/zh_TW/errors.php b/lang/zh_TW/errors.php
new file mode 100644
index 00000000000..e5c08ca141b
--- /dev/null
+++ b/lang/zh_TW/errors.php
@@ -0,0 +1,135 @@
+ '您沒有權限進入所請求的頁面。',
+ 'permissionJson' => '您沒有權限執行所請求的動作。',
+
+ // Auth
+ 'error_user_exists_different_creds' => '電子郵件為 :email 已存在,但帳號密碼不同。',
+ 'auth_pre_register_theme_prevention' => '無法使用資料建立帳號',
+ 'email_already_confirmed' => '已確認電子郵件,請嘗試登入。',
+ 'email_confirmation_invalid' => '這個確認權杖無效或已被使用,請嘗試重新註冊。',
+ 'email_confirmation_expired' => '這個確認權杖無效或已被使用,已傳送新的確認電子郵件。',
+ 'email_confirmation_awaiting' => '用於此帳號的電子郵件地址需要確認',
+ 'ldap_fail_anonymous' => '使用匿名綁定的 LDAP 存取失敗',
+ 'ldap_fail_authed' => '使用指定的 DN 與密碼詳細資訊的 LDAP 存取失敗',
+ 'ldap_extension_not_installed' => '未安裝 PHP 的 LDAP 擴充程式',
+ 'ldap_cannot_connect' => '無法連線至 LDAP 伺服器,初始化連線失敗',
+ 'saml_already_logged_in' => '已登入',
+ 'saml_no_email_address' => '在外部認證系統提供的資料中找不到該使用者的電子郵件地址',
+ 'saml_invalid_response_id' => '此應用程式啟動的處理程序無法識別來自外部認證系統的請求。登入後回上一頁可能會造成此問題。',
+ 'saml_fail_authed' => '使用 :system 登入失敗,系統未提供成功的授權',
+ 'oidc_already_logged_in' => '已登入',
+ 'oidc_no_email_address' => '在外部認證系統提供的資料中找不到該使用者的電子郵件地址',
+ 'oidc_fail_authed' => '使用 :system 登入失敗,系統未提供成功的授權',
+ 'social_no_action_defined' => '未定義動作',
+ 'social_login_bad_response' => "在 :socialAccount 登入時遇到錯誤: \n:error",
+ 'social_account_in_use' => ':socialAccount 帳號已被使用,請嘗試透過 :socialAccount 選項登入。',
+ 'social_account_email_in_use' => '電子郵件 :email 已被使用。如果您已有帳號,您可以在您的個人設定中連結您的 :socialAccount 帳號。',
+ 'social_account_existing' => '此 :socialAccount 已附加至您的個人資料。',
+ 'social_account_already_used_existing' => '此 :socialAccount 帳號已經被其他使用者使用。',
+ 'social_account_not_used' => '此 :socialAccount 帳號未連結至任何使用者。請至您的個人設定中連結。 ',
+ 'social_account_register_instructions' => '如果您還沒有帳號,您可以使用 :socialAccount 選項註冊帳號。',
+ 'social_driver_not_found' => '找不到社交驅動程式',
+ 'social_driver_not_configured' => '您的 :socialAccount 社交設定不正確。',
+ 'invite_token_expired' => '此邀請連結已過期。您可以嘗試重設您的帳號密碼。',
+ 'login_user_not_found' => '使用者不存在',
+
+ // System
+ 'path_not_writable' => '無法上傳到 :filePath 檔案路徑。請確定其對伺服器來說是可寫入的。',
+ 'cannot_get_image_from_url' => '無法從 :url 取得圖片',
+ 'cannot_create_thumbs' => '伺服器無法建立縮圖。請檢查您是否安裝了 PHP 的 GD 擴充程式。',
+ 'server_upload_limit' => '伺服器不允許上傳這個大的檔案。請嘗試較小的檔案。',
+ 'server_post_limit' => '伺服器無法處理提供的資料,請嘗試刪減內容或較小的檔案',
+ 'uploaded' => '伺服器不允許上傳這個大的檔案。請嘗試較小的檔案。',
+
+ // Drawing & Images
+ 'image_upload_error' => '上傳圖片時發生錯誤',
+ 'image_upload_type_error' => '上傳圖片類型無效',
+ 'image_upload_replace_type' => '必須使用的檔案類型才能置換圖檔',
+ 'image_upload_memory_limit' => '由於系統限制,無法處理上傳的檔案或縮圖',
+ 'image_thumbnail_memory_limit' => '由於系統限制,無法建立不同尺寸的圖片',
+ 'image_gallery_thumbnail_memory_limit' => '由於系統限制,無法建立縮圖',
+ 'drawing_data_not_found' => '無法載入繪圖資料,繪圖檔案可能不存在,或您可能沒有權限存取它。',
+
+ // Attachments
+ 'attachment_not_found' => '找不到附件',
+ 'attachment_upload_error' => '上傳檔案時發生錯誤',
+
+ // Pages
+ 'page_draft_autosave_fail' => '無法儲存草稿。請確保您在儲存此頁面前已連線至網際網路',
+ 'page_draft_delete_fail' => '無法刪除草稿並取得最新的頁面存檔',
+ 'page_custom_home_deletion' => '無法刪除被設定為首頁的頁面',
+
+ // Entities
+ 'entity_not_found' => '找不到實體',
+ 'bookshelf_not_found' => '未找到書架',
+ 'book_not_found' => '找不到書本',
+ 'page_not_found' => '找不到頁面',
+ 'chapter_not_found' => '找不到章節',
+ 'selected_book_not_found' => '找不到選定的書本',
+ 'selected_book_chapter_not_found' => '找不到選定的書本或章節',
+ 'guests_cannot_save_drafts' => '訪客無法儲存草稿',
+
+ // Users
+ 'users_cannot_delete_only_admin' => '您不能刪除唯一的管理員帳號',
+ 'users_cannot_delete_guest' => '您不能刪除訪客使用者',
+ 'users_could_not_send_invite' => '由於寄送邀請電子郵件失敗,因此無法建立使用者',
+
+ // Roles
+ 'role_cannot_be_edited' => '無法編輯這個角色',
+ 'role_system_cannot_be_deleted' => '無法刪除系統角色',
+ 'role_registration_default_cannot_delete' => '無法刪除設定預設註冊的角色',
+ 'role_cannot_remove_only_admin' => '此使用者是唯一被指派為管理員角色的使用者。在試圖移除這裡前,請將管理員角色指派給其他使用者。',
+
+ // Comments
+ 'comment_list' => '擷取評論時發生錯誤。',
+ 'cannot_add_comment_to_draft' => '您無法新增評論到草稿中。',
+ 'comment_add' => '新增/更新評論時發生錯誤。',
+ 'comment_delete' => '刪除評論時發生錯誤。',
+ 'empty_comment' => '無法新增空評論。',
+
+ // Error pages
+ '404_page_not_found' => '找不到頁面',
+ 'sorry_page_not_found' => '抱歉,找不到您在尋找的頁面。',
+ 'sorry_page_not_found_permission_warning' => '如果您確認這個頁面存在,則代表可能沒有查看它的權限。',
+ 'image_not_found' => '找不到圖片',
+ 'image_not_found_subtitle' => '對不起,無法找到您所看的圖片',
+ 'image_not_found_details' => '原本的圖片可能已經被刪除',
+ 'return_home' => '回到首頁',
+ 'error_occurred' => '發生錯誤',
+ 'app_down' => ':appName 離線中',
+ 'back_soon' => '它應該很快就會重新上線。',
+
+ // Import
+ 'import_zip_cant_read' => '無法讀取 ZIP 檔案。',
+ 'import_zip_cant_decode_data' => '無法尋找並解碼 ZIP data.json 內容。',
+ 'import_zip_no_data' => 'ZIP 檔案資料沒有預期的書本、章節或頁面內容。',
+ 'import_zip_data_too_large' => 'ZIP 檔案 data.json 的內容超過了設定的應用程式最大上傳大小。',
+ 'import_validation_failed' => '匯入 ZIP 驗證失敗,發生錯誤:',
+ 'import_zip_failed_notification' => '匯入 ZIP 檔案失敗。',
+ 'import_perms_books' => '您缺乏建立書本所需的權限。',
+ 'import_perms_chapters' => '您缺乏建立章節所需的權限。',
+ 'import_perms_pages' => '您缺乏建立頁面所需的權限。',
+ 'import_perms_images' => '您缺乏建立影像所需的權限。',
+ 'import_perms_attachments' => '您缺乏建立附件所需的權限。',
+
+ // API errors
+ 'api_no_authorization_found' => '在請求上找不到授權權杖',
+ 'api_bad_authorization_format' => '在請求中找到授權權杖,但格式似乎不正確',
+ 'api_user_token_not_found' => '找不到與提供的授權權杖相符的 API 權杖',
+ 'api_incorrect_token_secret' => '給定使用的 API 權杖的密碼錯誤',
+ 'api_user_no_api_permission' => '使用的 API 權杖擁有者無權呼叫 API',
+ 'api_user_token_expired' => '使用的授權權杖已過期',
+ 'api_cookie_auth_only_get' => 'Only GET requests are allowed when using the API with cookie-based authentication',
+
+ // Settings & Maintenance
+ 'maintenance_test_email_failure' => '寄送測試電子郵件時發生錯誤:',
+
+ // HTTP errors
+ 'http_ssr_url_no_match' => 'URL 與設置的 SSR 主機不符',
+];
diff --git a/lang/zh_TW/notifications.php b/lang/zh_TW/notifications.php
new file mode 100644
index 00000000000..feacf13b4fd
--- /dev/null
+++ b/lang/zh_TW/notifications.php
@@ -0,0 +1,29 @@
+ '頁面上有新評論::pageName',
+ 'new_comment_intro' => '一位用戶在 :appName: 的頁面上發表了評論',
+ 'new_page_subject' => '新頁面::pageName',
+ 'new_page_intro' => ':appName: 中創建了一個新頁面',
+ 'updated_page_subject' => '頁面更新::pageName',
+ 'updated_page_intro' => ':appName: 中的一個頁面已被更新',
+ 'updated_page_debounce' => '為了防止出現大量通知,一段時間內您不會收到同一編輯者再次編輯本頁面的通知。',
+ 'comment_mention_subject' => '您在以下頁面的留言中被提及::pageName',
+ 'comment_mention_intro' => '您再在 :appName: 的留言中被提及',
+
+ 'detail_page_name' => '頁面名稱:',
+ 'detail_page_path' => '頁面路徑:',
+ 'detail_commenter' => '評論者:',
+ 'detail_comment' => '評論:',
+ 'detail_created_by' => '建立者:',
+ 'detail_updated_by' => '更新者:',
+
+ 'action_view_comment' => '檢視評論',
+ 'action_view_page' => '查看頁面',
+
+ 'footer_reason' => '向您發送此通知是因為 :link 涵蓋了該項目的此類活動。',
+ 'footer_reason_link' => '個人偏好通知設定',
+];
diff --git a/resources/lang/zh_TW/pagination.php b/lang/zh_TW/pagination.php
similarity index 100%
rename from resources/lang/zh_TW/pagination.php
rename to lang/zh_TW/pagination.php
diff --git a/resources/lang/zh_TW/passwords.php b/lang/zh_TW/passwords.php
similarity index 100%
rename from resources/lang/zh_TW/passwords.php
rename to lang/zh_TW/passwords.php
diff --git a/lang/zh_TW/preferences.php b/lang/zh_TW/preferences.php
new file mode 100644
index 00000000000..2672cc57fb1
--- /dev/null
+++ b/lang/zh_TW/preferences.php
@@ -0,0 +1,52 @@
+ '帳號設定',
+
+ 'shortcuts' => '快捷鍵',
+ 'shortcuts_interface' => '快速鍵設定',
+ 'shortcuts_toggle_desc' => '您可以在此處啟用或停用鍵盤系統介面快捷鍵,這些快捷鍵用於導覽與操作。',
+ 'shortcuts_customize_desc' => '您可以自訂下方的每個快捷鍵。只要在選取快捷鍵輸入後按下您想要使用的按鍵組合即可。',
+ 'shortcuts_toggle_label' => '鍵盤快捷鍵已啟用',
+ 'shortcuts_section_navigation' => '導覽',
+ 'shortcuts_section_actions' => '通用動作',
+ 'shortcuts_save' => '儲存快捷鍵',
+ 'shortcuts_overlay_desc' => '注意:當快捷鍵啟用時,可以按下「?」來使用小幫手覆蓋畫面。這將會在目前的畫面上突顯可見動作的快捷鍵。',
+ 'shortcuts_update_success' => '快捷鍵偏好設定已更新!',
+ 'shortcuts_overview_desc' => '你可使用鍵盤快速鍵來快速瀏覽系統界面',
+
+ 'notifications' => '通知設定',
+ 'notifications_desc' => '控制在系統有特定活動時,是否要接收電子郵件通知',
+ 'notifications_opt_own_page_changes' => '當我的頁面有異動時發送通知',
+ 'notifications_opt_own_page_comments' => '當我的頁面有評論時發送通知',
+ 'notifications_opt_comment_mentions' => '當我在留言中被提及時通知我',
+ 'notifications_opt_comment_replies' => '當我的評論有新的回覆時發送通知',
+ 'notifications_save' => '儲存偏好設定',
+ 'notifications_update_success' => '通知設定已更新',
+ 'notifications_watched' => '追蹤與忽略的項目',
+ 'notifications_watched_desc' => '以下是已經套用自訂追蹤設定的項目。若要調整,請至該項目側邊欄中的「追蹤」更新設定',
+
+ 'auth' => '存取、安全',
+ 'auth_change_password' => '變更密碼',
+ 'auth_change_password_desc' => '修改登入時使用的密碼,密碼長度至少需要有 8 個字',
+ 'auth_change_password_success' => '密碼已更新',
+
+ 'profile' => '個人檔案',
+ 'profile_desc' => '管理欲呈現給其他使用的個人資料,另外資料也用於交流與系統個人化',
+ 'profile_view_public' => '檢視公開的個人檔案',
+ 'profile_name_desc' => '設定欲公開顯示的名稱,系統中的其他使用者將會透過內容、活動記錄看到您設定的名稱',
+ 'profile_email_desc' => 'Email 將用於使用者通知以及系統存取授權 (若有啟用)',
+ 'profile_email_no_permission' => '很遺憾您沒有權限變更您的 email,如果有需要,請洽詢系統管理員協助變更 email',
+ 'profile_avatar_desc' => ' 選一張圖片供顯示給其他使用者看,理想的圖片大小為 256x256 像素',
+ 'profile_admin_options' => '管理選項',
+ 'profile_admin_options_desc' => '系統管理層選項可在「設定」=>「使用者」找到,像是角色管理等',
+
+ 'delete_account' => '刪除帳號',
+ 'delete_my_account' => '刪除我的帳號',
+ 'delete_my_account_desc' => '將從系統中刪除所有帳號資料,此動作無法復原。你所建立的內容、頁面以及上傳的圖片將會保留。',
+ 'delete_my_account_warning' => '您確定要刪除您的帳戶嗎?',
+];
diff --git a/lang/zh_TW/settings.php b/lang/zh_TW/settings.php
new file mode 100644
index 00000000000..65778f77ca3
--- /dev/null
+++ b/lang/zh_TW/settings.php
@@ -0,0 +1,375 @@
+ '設定',
+ 'settings_save' => '儲存設定',
+ 'system_version' => '系統版本',
+ 'categories' => '分類',
+
+ // App Settings
+ 'app_customization' => '自訂',
+ 'app_features_security' => '功能與安全',
+ 'app_name' => '應用程式名稱',
+ 'app_name_desc' => '此名稱會在網頁頂端與任何系統傳送的電子郵件中出現。',
+ 'app_name_header' => '在網頁頂端顯示名稱',
+ 'app_public_access' => '公開存取',
+ 'app_public_access_desc' => '啟用此選項將會允許未登入的訪客存取您 BookStack 站台中的內容。',
+ 'app_public_access_desc_guest' => '可以透過「訪客」使用者控制公開訪客的存取。',
+ 'app_public_access_toggle' => '允許公開存取',
+ 'app_public_viewing' => '允許公開檢視?',
+ 'app_secure_images' => '更高安全性的圖片上傳',
+ 'app_secure_images_toggle' => '啟用更高安全性的圖片上傳',
+ 'app_secure_images_desc' => '因為效能因素,所有圖片都是公開的。此選項會在圖片的網址前加入一串隨機且難以猜測的字串。確保未啟用目錄索引,讓直接進入變得更困難。',
+ 'app_default_editor' => '預設頁面編輯器',
+ 'app_default_editor_desc' => '選擇編輯頁面時預設使用的編輯器,這項設定值可被頁面的權限覆蓋',
+ 'app_custom_html' => '自訂 HTML 標題內容',
+ 'app_custom_html_desc' => '此處加入的任何內容都將插入到每個頁面的 部分的底部,這對於覆蓋樣式或加入分析程式碼很方便。',
+ 'app_custom_html_disabled_notice' => '在此設定頁面上停用了自訂 HTML 標題內容,以確保任何重大變更都能被還原。',
+ 'app_logo' => '應用程式圖示',
+ 'app_logo_desc' => '這個設定會被使用在應用程式標題欄等區域;圖片的高度應為 86 像素,大型圖片將會按比例縮小。',
+ 'app_icon' => '應用程式圖示',
+ 'app_icon_desc' => '這個圖示將顯示在瀏覽器分頁以及捷徑,應為 256 像素的的正方形 PNG 圖片',
+ 'app_homepage' => '應用程式首頁',
+ 'app_homepage_desc' => '選取要作為首頁的頁面,這將會取代預設首頁。選定頁面的頁面權限將會被忽略。',
+ 'app_homepage_select' => '選取頁面',
+ 'app_footer_links' => '頁面註腳連結',
+ 'app_footer_links_desc' => '新增連結以在網站註腳顯示。這些將會顯示在大多數頁面的底部,包含那些不需要登入的頁面。您可以使用 "trans::" 標籤來使用系統定義的翻譯。舉例來說:使用 "trans::common.privacy_policy" 將會提供已翻譯的文字「隱私權政策」,以及 "trans::common.terms_of_service" 將會提供已翻譯的文字「服務條款」。',
+ 'app_footer_links_label' => '連結標籤',
+ 'app_footer_links_url' => '連結網址',
+ 'app_footer_links_add' => '新增註腳連結',
+ 'app_disable_comments' => '停用評論',
+ 'app_disable_comments_toggle' => '停用評論',
+ 'app_disable_comments_desc' => '在應用程式的所有頁面停用評論。 既有的評論將不會顯示。',
+
+ // Color settings
+ 'color_scheme' => '應用程式配色',
+ 'color_scheme_desc' => '設定使用者頁面欲使用的顏色。可分別針對淺色模式與暗色模式設定顏色,以確保容易閱讀',
+ 'ui_colors_desc' => '設定頁面主要色彩以及頁面連結預設顏色。主要色彩用於標題橫幅、按鈕以及主要操作界面,頁面連結顏色,主要用於主頁面、編輯頁面中的文字連結、操作按鈕。',
+ 'app_color' => '主要顏色',
+ 'link_color' => '連結預設顏色',
+ 'content_colors_desc' => '設定頁面層次結構中的元素顏色;為了提高可讀性,建議選擇亮度與預設顏色相似的顏色。',
+ 'bookshelf_color' => '書架顔色',
+ 'book_color' => '書本顔色',
+ 'chapter_color' => '章節顔色',
+ 'page_color' => '頁面顔色',
+ 'page_draft_color' => '頁面草稿顏色',
+
+ // Registration Settings
+ 'reg_settings' => '註冊',
+ 'reg_enable' => '啟用註冊',
+ 'reg_enable_toggle' => '啟用註冊',
+ 'reg_enable_desc' => '啟用註冊後,使用者將可以自行註冊為應用程式的使用者。註冊後,他們將會得到一個預設的使用者角色。',
+ 'reg_default_role' => '註冊後的預設使用者角色',
+ 'reg_enable_external_warning' => '當外部 LDAP 或 SAML 身份驗證啟用時,將會忽略上述選項。如果外部身份驗證成功,將會自動在本系統建立使用者帳號。',
+ 'reg_email_confirmation' => '電子郵件驗證',
+ 'reg_email_confirmation_toggle' => '需要電子郵件驗證',
+ 'reg_confirm_email_desc' => '如果使用網域限制,則需要電子郵件驗證,且此選項將被忽略。',
+ 'reg_confirm_restrict_domain' => '網域限制',
+ 'reg_confirm_restrict_domain_desc' => '輸入您想要限制註冊的電子郵件網域列表,以英文逗號分隔。在可以與應用程式互動前,使用者將會收到電子郵件以確認他們的電子郵件地址。 注意,使用者可以在註冊成功後變更他們的電子郵件地址。',
+ 'reg_confirm_restrict_domain_placeholder' => '尚未設定限制',
+
+ // Sorting Settings
+ 'sorting' => '清單與排序',
+ 'sorting_book_default' => '預設書籍排序規則',
+ 'sorting_book_default_desc' => '選取要套用至新書籍的預設排序規則。這不會影響現有書籍,並可按書籍覆寫。',
+ 'sorting_rules' => '排序規則',
+ 'sorting_rules_desc' => '這些是預先定義的排序作業,可套用於系統中的內容。',
+ 'sort_rule_assigned_to_x_books' => '指定給 :count 本書',
+ 'sort_rule_create' => '建立排序規則',
+ 'sort_rule_edit' => '編輯排序規則',
+ 'sort_rule_delete' => '刪除排序規則',
+ 'sort_rule_delete_desc' => '從系統移除此排序規則。使用此排序的書籍將會還原為手動排序。',
+ 'sort_rule_delete_warn_books' => '此排序規則目前用於 :count 本書。您確定您想要刪除嗎?',
+ 'sort_rule_delete_warn_default' => '此排序規則目前為書籍的預設值。您確定您想要刪除嗎?',
+ 'sort_rule_details' => '排序規則詳細資訊',
+ 'sort_rule_details_desc' => '設定此排序規則的名稱,當使用者選取排序時,該名稱將會出現在清單中。',
+ 'sort_rule_operations' => '排序選項',
+ 'sort_rule_operations_desc' => '設定要執行的排序動作,方法是從可用的操作清單中移動它們。使用時,操作將依從上到下的順序套用。儲存時,在此處所做的任何變更都會套用至所有指定的書籍。',
+ 'sort_rule_available_operations' => '可用操作',
+ 'sort_rule_available_operations_empty' => '無剩餘操作',
+ 'sort_rule_configured_operations' => '已設定的操作',
+ 'sort_rule_configured_operations_empty' => '從「可用操作」清單中拖曳/新增操作',
+ 'sort_rule_op_asc' => '(遞增)',
+ 'sort_rule_op_desc' => '(遞減)',
+ 'sort_rule_op_name' => '名稱 - 按字母順序排列',
+ 'sort_rule_op_name_numeric' => '名稱 - 數字',
+ 'sort_rule_op_created_date' => '建立日期',
+ 'sort_rule_op_updated_date' => '更新日期',
+ 'sort_rule_op_chapters_first' => '第一章',
+ 'sort_rule_op_chapters_last' => '最後一章',
+ 'sorting_page_limits' => '每頁顯示限制',
+ 'sorting_page_limits_desc' => 'Set how many items to show per-page in various lists within the system. Typically a lower amount will be more performant, while a higher amount avoids the need to click through multiple pages. Using a multiple of 6 is recommended.',
+
+ // Maintenance settings
+ 'maint' => '維護',
+ 'maint_image_cleanup' => '清理圖片',
+ 'maint_image_cleanup_desc' => '掃描頁面與修訂版本內容來檢查目前使用了哪些圖片,而哪些圖片又是多餘的。請確保您在執行這個動作前建立了完整的資料庫與映像檔備份。',
+ 'maint_delete_images_only_in_revisions' => '也刪除僅存在於舊的頁面修訂版本中存在的圖片',
+ 'maint_image_cleanup_run' => '執行清理',
+ 'maint_image_cleanup_warning' => '發現了 :count 張可能未使用的圖片。您確定要刪除這些圖片嗎?',
+ 'maint_image_cleanup_success' => '找到並刪除了 :count 張可能未使用的圖片!',
+ 'maint_image_cleanup_nothing_found' => '找不到未使用的圖片,未刪除任何檔案!',
+ 'maint_send_test_email' => '傳送測試電子郵件',
+ 'maint_send_test_email_desc' => '這會將測試電子郵件傳送到您的個人資料中指定的電子郵件地址。',
+ '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' => '開啟回收桶',
+ 'maint_regen_references' => '重新生成引用',
+ 'maint_regen_references_desc' => '此操作將重建數據庫中的跨項目引用索引。這通常是自動處理的,但可能有助於索引舊內容或通過非官方方法添加的內容。',
+ 'maint_regen_references_success' => '引用索引已重新生成!',
+ 'maint_timeout_command_note' => '備註:這項操作需要較長的時間,可能導致多數的網路環境發生連線逾時的問題。若有需要,可以透過終端機指令來替代。',
+
+ // Recycle Bin
+ 'recycle_bin' => '資源回收桶',
+ 'recycle_bin_desc' => '在這裡,您可以還原已刪除的項目,或是選擇將其從系統中永久移除。與系統中套用了權限過濾條件類似的活動列表不同的是,此列表並未過濾。',
+ 'recycle_bin_deleted_item' => '已刪除項目',
+ 'recycle_bin_deleted_parent' => '上層',
+ '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_restore_parent' => '還原上層',
+ 'recycle_bin_destroy_notification' => '已從回收桶刪除共 :count 個項目。',
+ 'recycle_bin_restore_notification' => '已從回收桶還原共 :count 個項目。',
+
+ // Audit Log
+ 'audit' => '稽核記錄',
+ 'audit_desc' => '此稽核日誌會顯示被系統追蹤的活動列表。與系統中套用了權限過濾條件類似的活動列表不同的是,此列表並未過濾。',
+ '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_ip' => 'IP 位址',
+ 'audit_table_date' => '活動日期',
+ 'audit_date_from' => '日期範圍,從',
+ 'audit_date_to' => '日期範圍,到',
+
+ // Role Settings
+ 'roles' => '角色',
+ 'role_user_roles' => '使用者角色',
+ 'roles_index_desc' => '「角色」用於將系統權限套用至使用者群組。當使用者擁有多角色時,
+使用者會自動繼承角色中的所有系統權限',
+ 'roles_x_users_assigned' => ':count 位用戶已分配|:count 位用戶已分配',
+ 'roles_x_permissions_provided' => ':count 個權限|:count 個權限',
+ 'roles_assigned_users' => '已分配用戶',
+ 'roles_permissions_provided' => '已提供權限',
+ 'role_create' => '建立新角色',
+ 'role_delete' => '刪除角色',
+ 'role_delete_confirm' => '這將會刪除名為「:roleName」的角色.',
+ 'role_delete_users_assigned' => '有 :userCount 位使用者屬於此角色。如果您想將此角色中的使用者遷移,請在下面選擇一個新角色。',
+ 'role_delete_no_migration' => "不要遷移使用者",
+ 'role_delete_sure' => '您確定要刪除此角色?',
+ 'role_edit' => '編輯角色',
+ 'role_details' => '角色詳細資訊',
+ 'role_name' => '角色名稱',
+ 'role_desc' => '角色簡短說明',
+ 'role_mfa_enforced' => '多重身分驗證',
+ 'role_external_auth_id' => '外部身份驗證 ID',
+ 'role_system' => '系統權限',
+ 'role_manage_users' => '管理使用者',
+ 'role_manage_roles' => '管理角色與角色權限',
+ 'role_manage_entity_permissions' => '管理所有書本、章節與頁面的權限',
+ 'role_manage_own_entity_permissions' => '管理自己的書本、章節與頁面的權限',
+ 'role_manage_page_templates' => '管理頁面範本',
+ 'role_access_api' => '存取系統 API',
+ 'role_manage_settings' => '管理應用程式設定',
+ 'role_export_content' => '匯出內容',
+ 'role_import_content' => '匯入內容',
+ 'role_editor_change' => '重設頁面編輯器',
+ 'role_notifications' => '管理和接收通知',
+ 'role_permission_note_users_and_roles' => '這些權限在技術上亦將提供系統內使用者與角色的能見度及搜尋功能。',
+ 'role_asset' => '資源權限',
+ 'roles_system_warning' => '請注意,有上述三項權限中的任一項的使用者都可以更改自己或系統中其他人的權限。有這些權限的角色只應分配給受信任的使用者。',
+ 'role_asset_desc' => '對系統內資源的預設權限將由這裡的權限控制。若有單獨設定在書本、章節和頁面上的權限,將會覆寫這裡的權限設定。',
+ 'role_asset_admins' => '管理員會自動取得對所有內容的存取權,但這些選項可能會顯示或隱藏使用者介面的選項。',
+ 'role_asset_image_view_note' => '這與圖像管理器中的可見性有關。已經上傳的圖片的實際訪問取決於系統圖像存儲選項。',
+ 'role_asset_users_note' => '這些權限在技術上亦將提供系統內使用者的能見度及搜尋功能。',
+ 'role_all' => '全部',
+ 'role_own' => '擁有',
+ 'role_controlled_by_asset' => '依據隸屬的資源來決定',
+ 'role_save' => '儲存角色',
+ 'role_users' => '屬於此角色的使用者',
+ 'role_users_none' => '目前沒有使用者被分配到此角色',
+
+ // Users
+ 'users' => '使用者',
+ 'users_index_desc' => '在系統中創建和管理使用者帳號。使用者帳號用於紀錄登入與編輯活動;訪問權限則由使用者所歸屬的角色群組決定,但使用者是否具備內容的所有權以及其他因素,都可能會影響到存取權限。',
+ 'user_profile' => '使用者個人資料',
+ 'users_add_new' => '新增使用者',
+ 'users_search' => '搜尋使用者',
+ 'users_latest_activity' => '最新活動',
+ 'users_details' => '使用者詳細資訊',
+ 'users_details_desc' => '為此使用者設定顯示名稱與電子郵件地址。電子郵件地址將用於登入應用程式。',
+ 'users_details_desc_no_email' => '為此使用者設定顯示名稱,這樣其他人才能認出該使用者。',
+ 'users_role' => '使用者角色',
+ 'users_role_desc' => '選取要分配的此使用者的角色。若使用者被分配到多個角色,則這些角色的權限將會堆疊,使用者將會取得被分配角色的所有功能。',
+ 'users_password' => '使用者密碼',
+ 'users_password_desc' => '設定用於登入應用程式的密碼。密碼必須至少 8 個字元長。',
+ 'users_send_invite_text' => '您可以選擇向此使用者傳送邀請電子郵件,讓他們可以設定自己的密碼,您也可以自行設定他們的密碼。',
+ 'users_send_invite_option' => '傳送邀請電子郵件給使用者',
+ 'users_external_auth_id' => '外部身份驗證 ID',
+ 'users_external_auth_id_desc' => '使用外部驗證系統時 (如 SAML2、OIDC、LDAP),將使這個帳號與驗證系統帳號連結。若使用一般的 email 認證方式,可以忽略此欄位。',
+ 'users_password_warning' => '如果您想更改此用戶的密碼,請填寫以下內容:',
+ 'users_system_public' => '此使用者代表造訪您站台的任何訪客使用者。其不能用於登入,而會自動分配。',
+ 'users_delete' => '刪除使用者',
+ 'users_delete_named' => '刪除使用者 :userName',
+ 'users_delete_warning' => '這將從系統中完全刪除名為「:userName」的使用者。',
+ 'users_delete_confirm' => '您確定要刪除此使用者?',
+ 'users_migrate_ownership' => '轉移所有權',
+ 'users_migrate_ownership_desc' => '如果您希望其他使用者變成目前此使用者擁有的所有項目的新擁有者,請在此處選取新的使用者。',
+ 'users_none_selected' => '未選取使用者',
+ 'users_edit' => '編輯使用者',
+ 'users_edit_profile' => '編輯個人資料',
+ 'users_avatar' => '使用者大頭照',
+ 'users_avatar_desc' => '選取一張代表此使用者的圖片。這應該是大約 256px 的正方形。',
+ 'users_preferred_language' => '偏好語言',
+ 'users_preferred_language_desc' => '此選項將會變更用於應用程式使用者介面的語言。不會影響任何使用者建立的內容。',
+ 'users_social_accounts' => '社群網站帳號',
+ 'users_social_accounts_desc' => '查看此用戶已連接的社交賬戶狀態。 除了主要認證系統外,社交賬戶也可用於系統訪問。',
+ 'users_social_accounts_info' => '您可以在此處連結您其他的帳號以供快速登入。從此處取消連結帳號並不會撤銷先前已授權的存取。請從您連結的社群網站帳號的個人設定中撤銷存取權。',
+ 'users_social_connect' => '連結帳號',
+ 'users_social_disconnect' => '取消連結帳號',
+ 'users_social_status_connected' => '已連接',
+ 'users_social_status_disconnected' => '已斷開連接',
+ 'users_social_connected' => ':socialAccount 帳號已經成功連結到您的個人資料。',
+ 'users_social_disconnected' => ':socialAccount 帳號已經成功取消連結。',
+ 'users_api_tokens' => 'API 權杖',
+ 'users_api_tokens_desc' => '創建和管理用於 BookStack REST API 認證的訪問令牌。 API 的權限是通過令牌所屬的用戶管理的。',
+ 'users_api_tokens_none' => '尚未為此使用者建立 API 權杖',
+ 'users_api_tokens_create' => '建立權杖',
+ 'users_api_tokens_expires' => '過期',
+ 'users_api_tokens_docs' => 'API 文件',
+ 'users_mfa' => '多重身分驗證',
+ 'users_mfa_desc' => '設定多重身份驗證為您的帳戶多增加了一道防線',
+ 'users_mfa_x_methods' => ':count 個措施已配置|:count 個措施已配置',
+ 'users_mfa_configure' => '方式設置',
+
+ // API Tokens
+ 'user_api_token_create' => '建立 API 權杖',
+ 'user_api_token_name' => '名稱',
+ 'user_api_token_name_desc' => '給您的權杖易於辨識的名稱,如此未來才能提醒其預期用途。',
+ 'user_api_token_expiry' => '到期日',
+ 'user_api_token_expiry_desc' => '設定此權杖的到期日。在此日期後,使用此權杖發出的請求將不再起作用。若將此欄留空,將會設定在100年後過期。',
+ 'user_api_token_create_secret_message' => '建立此權杖後,將會立即生成並顯示「權杖 ID」與「權杖密碼」。該密碼將只會顯示一次,因此請在繼續操作前將其複製到安全的地方。',
+ 'user_api_token' => 'API 權杖',
+ 'user_api_token_id' => '權杖 ID',
+ 'user_api_token_id_desc' => '這是此權杖由系統生成的不可編輯識別字串,必須在 API 請求中提供。',
+ 'user_api_token_secret' => '權杖密碼',
+ 'user_api_token_secret_desc' => '這是此權杖由系統生成的密碼,必須在 API 請求中提供。該密碼將只會顯示一次,因此請在繼續操作前將其複製到安全的地方。',
+ 'user_api_token_created' => '權杖建立於:timeAgo',
+ 'user_api_token_updated' => '權杖更新於:timeAgo',
+ 'user_api_token_delete' => '刪除權杖',
+ 'user_api_token_delete_warning' => '這將會從系統中完全刪除名為「:tokenName」的 API 權杖。',
+ 'user_api_token_delete_confirm' => '您確定要刪除此 API 權杖嗎?',
+
+ // Webhooks
+ 'webhooks' => 'Webhooks',
+ 'webhooks_index_desc' => 'Webhook 是一種在系統內發生某些操作和事件時將數據發送到外部 URL 的方法,它允許與外部平台(例如消息傳遞或通知系統)進行基於事件的集成。',
+ 'webhooks_x_trigger_events' => ':count 個觸發事件 |:count 個觸發事件',
+ 'webhooks_create' => '建立 Webhook',
+ 'webhooks_none_created' => '沒有已建立的 Webhook',
+ 'webhooks_edit' => '設置 Webhook',
+ 'webhooks_save' => '儲存 Webhook',
+ 'webhooks_details' => 'WebHook 詳細資料',
+ 'webhooks_details_desc' => '提供一個用戶友好的名稱和一個 POST Endpoint 作為 Webhook 數據發送的位置。',
+ 'webhooks_events' => 'Webhook 事件',
+ 'webhooks_events_desc' => '選擇所有應觸發此 Webhook 的事件。',
+ 'webhooks_events_warning' => '請記住,即使應用了自定義權限,所有選定的事件也仍然會被觸發。 確保使用此 Webhook 不會洩露機密內容。',
+ 'webhooks_events_all' => '全部系統活動',
+ 'webhooks_name' => 'Webhook 名稱',
+ 'webhooks_timeout' => 'Webhook 請求超時(秒)',
+ 'webhooks_endpoint' => 'Webhook 端點',
+ 'webhooks_active' => 'Webhook 啟用',
+ 'webhook_events_table_header' => '事件',
+ 'webhooks_delete' => '刪除 Webhook',
+ 'webhooks_delete_warning' => '這將會從系統中完全刪除名為 “:webhookName” 的 webhook。',
+ 'webhooks_delete_confirm' => '確定要刪除此 Webhook 嗎?',
+ 'webhooks_format_example' => 'Webhook 格式範例',
+ 'webhooks_format_example_desc' => 'Webhook 數據會以 POST 請求按照以下 JSON 格式發送到設置的 Endpoint。 “related_item” 和 “url” 屬性是可選的,取決於觸發的事件類型。',
+ 'webhooks_status' => 'Webhook 狀態',
+ 'webhooks_last_called' => '最後一次調用:',
+ 'webhooks_last_errored' => '上次錯誤',
+ 'webhooks_last_error_message' => '上次錯誤信息',
+
+ // Licensing
+ 'licenses' => '授權',
+ 'licenses_desc' => '本頁提供 BookStack 使用到的專案以及函式庫的詳細授權資料,其中部份專案及函式庫僅開開發環境中使用。',
+ 'licenses_bookstack' => 'BookStack 授權',
+ 'licenses_php' => 'PHP 函式庫授權',
+ 'licenses_js' => 'JavaScript 函式庫授權',
+ 'licenses_other' => '其它授權',
+ 'license_details' => '詳細授權資料',
+
+ //! 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' => '加泰隆尼亞語',
+ 'cs' => 'Česky',
+ 'cy' => 'Cymraeg',
+ 'da' => '丹麥',
+ 'de' => 'Deutsch (Sie)',
+ 'de_informal' => 'Deutsch (Du)',
+ 'el' => 'ελληνικά',
+ 'es' => 'Español',
+ 'es_AR' => 'Español Argentina',
+ 'et' => 'Eesti keel',
+ 'eu' => 'Euskara',
+ 'fa' => 'فارسی',
+ 'fi' => 'Suomi',
+ 'fr' => 'Français',
+ 'he' => '希伯來語',
+ 'hr' => 'Hrvatski',
+ 'hu' => 'Magyar',
+ 'id' => 'Bahasa Indonesia',
+ 'it' => 'Italian',
+ 'ja' => '日本語',
+ 'ko' => '한국어',
+ 'lt' => 'Lietuvių Kalba',
+ 'lv' => 'Latviešu Valoda',
+ 'nb' => 'Norsk (Bokmål)',
+ 'ne' => 'नेपाली',
+ 'nn' => 'Nynorsk',
+ 'nl' => 'Nederlands',
+ 'pl' => 'Polski',
+ 'pt' => 'Português',
+ 'pt_BR' => 'Português do Brasil',
+ 'ro' => 'Română',
+ 'ru' => 'Русский',
+ 'sk' => 'Slovensky',
+ 'sl' => 'Slovenščina',
+ 'sv' => 'Svenska',
+ 'tr' => 'Türkçe',
+ 'uk' => 'Українська',
+ 'uz' => 'O‘zbekcha',
+ 'vi' => 'Tiếng Việt',
+ 'zh_CN' => '简体中文',
+ 'zh_TW' => '繁體中文',
+ ],
+ //!////////////////////////////////
+];
diff --git a/lang/zh_TW/validation.php b/lang/zh_TW/validation.php
new file mode 100644
index 00000000000..c0c480b8ea6
--- /dev/null
+++ b/lang/zh_TW/validation.php
@@ -0,0 +1,123 @@
+ '必須同意 :attribute。',
+ 'active_url' => ':attribute 並非有效的網址。',
+ 'after' => ':attribute 必須是在 :date 後的日期。',
+ 'alpha' => ':attribute 只能包含字母。',
+ 'alpha_dash' => ':attribute 只能包含字母、數字、破折號與底線。',
+ 'alpha_num' => ':attribute 只能包含字母和數字。',
+ 'array' => ':attribute 必須是陣列。',
+ 'backup_codes' => '提供的代碼無效或已被使用。',
+ 'before' => ':attribute 必須是在 :date 前的日期。',
+ 'between' => [
+ 'numeric' => ':attribute 必須在 :min 到 :max 之間。',
+ 'file' => ':attribute 必須為 :min 到 :max KB。',
+ 'string' => ':attribute 必須在 :min 到 :max 個字元之間。',
+ 'array' => ':attribute 必須在 :min 到 :max 項之間。',
+ ],
+ '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',
+ 'file' => ':attribute 必須作為有效檔案提供。',
+ 'filled' => ':attribute 欄位必填。',
+ 'gt' => [
+ 'numeric' => ':attribute 必須大於 :value。',
+ 'file' => ':attribute 必須大於 :value KB。',
+ 'string' => ':attribute 必須多於 :value 個字元。',
+ 'array' => ':attribute 必須包含多於 :value 個項目。',
+ ],
+ 'gte' => [
+ 'numeric' => ':attribute 必須大於或等於 :value。',
+ 'file' => ':attribute 必須大於或等於 :value KB。',
+ 'string' => ':attribute 必須多於或等於 :value 個字元。',
+ 'array' => ':attribute 必須有 :value 或更多項。',
+ ],
+ 'exists' => '選定的 :attribute 無效。',
+ 'image' => ':attribute 必須為圖片。',
+ 'image_extension' => ':attribute 必須包含有效且受支援的圖片副檔名。',
+ 'in' => '選定的 :attribute 無效。',
+ 'integer' => ':attribute 必須是整數。',
+ 'ip' => ':attribute 必須是有效的 IP 位置。',
+ 'ipv4' => ':attribute 必須是有效的 IPv4 位置。',
+ 'ipv6' => ':attribute 必須是有效的 IPv6 位置。',
+ 'json' => ':attribute 必須是有效的 JSON 字串。',
+ 'lt' => [
+ 'numeric' => ':attribute 必須小於 :value。',
+ 'file' => ':attribute 必須小於 :value KB。',
+ 'string' => ':attribute 必須少於 :value 個字元。',
+ 'array' => ':attribute 必須少於 :value 個項目。',
+ ],
+ 'lte' => [
+ 'numeric' => ':attribute 必須小於或等於 :value。',
+ 'file' => ':attribute 必須小於或等於 :value KB。',
+ 'string' => ':attribute 必須少於或等於 :value 個字元。',
+ 'array' => ':attribute 不能超過 :value 個項目。',
+ ],
+ 'max' => [
+ 'numeric' => ':attribute 不能超過 :max。',
+ 'file' => ':attribute 不能超過 :max KB。',
+ 'string' => ':attribute 不能超過 :max 個字元。',
+ 'array' => ':attribute 不能有超過:max項。',
+ ],
+ 'mimes' => ':attribute 必須是 :values 類型的檔案。',
+ 'min' => [
+ 'numeric' => ':attribute 至少為:min。',
+ 'file' => ':attribute 必須至少為:min KB。',
+ 'string' => ':attribute 至少為:min個字元。',
+ 'array' => ':attribute 至少有:min項。',
+ ],
+ 'not_in' => '選中的 :attribute 無效。',
+ 'not_regex' => 'The :attribute格式無效。',
+ 'numeric' => ':attribute 必須是一個數。',
+ 'regex' => ':attribute 格式無效。',
+ 'required' => ':attribute 字段是必需的。',
+ 'required_if' => '當:other為:value時,:attribute 字段是必需的。',
+ 'required_with' => '當:values存在時,:attribute 字段是必需的。',
+ 'required_with_all' => '當:values存在時,:attribute 字段是必需的。',
+ 'required_without' => '當:values不存在時,:attribute 字段是必需的。',
+ 'required_without_all' => '當:values均不存在時,:attribute 字段是必需的。',
+ 'same' => ':attribute 與 :other 必須匹配。',
+ 'safe_url' => '提供的連結可能不安全。',
+ 'size' => [
+ 'numeric' => ':attribute 必須為:size。',
+ 'file' => ':attribute 必須為:size KB。',
+ 'string' => ':attribute 必須為:size個字元。',
+ 'array' => ':attribute 必須包含:size項。',
+ ],
+ 'string' => ':attribute 必須是字元串。',
+ 'timezone' => ':attribute 必須是有效的區域。',
+ 'totp' => '提供的代碼無效或已過期。',
+ 'unique' => ':attribute 已經被使用。',
+ 'url' => ':attribute 格式無效。',
+ 'uploaded' => '無法上傳文檔案, 伺服器可能不接受此大小的檔案。',
+
+ 'zip_file' => ':attribute 需要參照 ZIP 中的檔案。',
+ 'zip_file_size' => '檔案 :attribute 不能超過 :size MB。',
+ 'zip_file_mime' => ':attribute 需要參照類型為 :validTypes 的檔案,找到 :foundType。',
+ 'zip_model_expected' => '預期為資料物件,但找到「:type」。',
+ 'zip_unique' => '對於 ZIP 中的物件類型,:attribute 必須是唯一的。',
+
+ // Custom validation lines
+ 'custom' => [
+ 'password-confirm' => [
+ 'required_with' => '需要確認密碼',
+ ],
+ ],
+
+ // Custom validation attributes
+ 'attributes' => [],
+];
diff --git a/package-lock.json b/package-lock.json
index 7d9318363a5..b6508f1e9e4 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1,2259 +1,9686 @@
{
"name": "bookstack",
- "lockfileVersion": 2,
+ "lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"dependencies": {
- "clipboard": "^2.0.8",
- "codemirror": "^5.61.1",
- "dropzone": "^5.9.2",
- "markdown-it": "^12.0.6",
+ "@codemirror/commands": "^6.10.2",
+ "@codemirror/lang-css": "^6.3.1",
+ "@codemirror/lang-html": "^6.4.11",
+ "@codemirror/lang-javascript": "^6.2.5",
+ "@codemirror/lang-json": "^6.0.2",
+ "@codemirror/lang-markdown": "^6.5.0",
+ "@codemirror/lang-php": "^6.0.2",
+ "@codemirror/lang-xml": "^6.1.0",
+ "@codemirror/language": "^6.12.2",
+ "@codemirror/legacy-modes": "^6.5.2",
+ "@codemirror/state": "^6.5.4",
+ "@codemirror/theme-one-dark": "^6.1.3",
+ "@codemirror/view": "^6.39.16",
+ "@lezer/highlight": "^1.2.3",
+ "@ssddanbrown/codemirror-lang-smarty": "^1.0.0",
+ "@ssddanbrown/codemirror-lang-twig": "^1.0.0",
+ "@types/jest": "^30.0.0",
+ "codemirror": "^6.0.2",
+ "idb-keyval": "^6.2.2",
+ "markdown-it": "^14.1.1",
"markdown-it-task-lists": "^2.1.1",
- "sortablejs": "^1.13.0"
+ "snabbdom": "^3.6.3",
+ "sortablejs": "^1.15.7"
},
"devDependencies": {
- "chokidar-cli": "^2.1.0",
- "esbuild": "0.12.8",
- "livereload": "^0.9.3",
+ "@eslint/js": "^10.0.1",
+ "@lezer/generator": "^1.8.0",
+ "@types/markdown-it": "^14.1.2",
+ "@types/sortablejs": "^1.15.9",
+ "chokidar-cli": "^3.0",
+ "esbuild": "^0.27.3",
+ "eslint": "^10.0.2",
+ "globals": "^17.4.0",
+ "jest": "^30.2.0",
+ "jest-environment-jsdom": "^30.2.0",
"npm-run-all": "^4.1.5",
- "punycode": "^2.1.1",
- "sass": "^1.34.1"
+ "sass": "^1.97.3",
+ "ts-jest": "^29.4.6",
+ "ts-node": "^10.9.2",
+ "typescript": "5.9.*"
}
},
- "node_modules/ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
+ "node_modules/@asamuzakjp/css-color": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@asamuzakjp/css-color/-/css-color-3.2.0.tgz",
+ "integrity": "sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==",
"dev": true,
- "engines": {
- "node": ">=6"
+ "license": "MIT",
+ "dependencies": {
+ "@csstools/css-calc": "^2.1.3",
+ "@csstools/css-color-parser": "^3.0.9",
+ "@csstools/css-parser-algorithms": "^3.0.4",
+ "@csstools/css-tokenizer": "^3.0.3",
+ "lru-cache": "^10.4.3"
}
},
- "node_modules/ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "node_modules/@asamuzakjp/css-color/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
"dev": true,
+ "license": "ISC"
+ },
+ "node_modules/@babel/code-frame": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz",
+ "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==",
+ "license": "MIT",
"dependencies": {
- "color-convert": "^1.9.0"
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "js-tokens": "^4.0.0",
+ "picocolors": "^1.1.1"
},
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
}
},
- "node_modules/anymatch": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
- "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+ "node_modules/@babel/compat-data": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.0.tgz",
+ "integrity": "sha512-T1NCJqT/j9+cn8fvkt7jtwbLBfLC/1y1c7NtCeXFRgzGTsafi68MRv8yzkYSapBnFA6L3U2VSc02ciDzoAJhJg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/core": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz",
+ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
+ "@babel/code-frame": "^7.29.0",
+ "@babel/generator": "^7.29.0",
+ "@babel/helper-compilation-targets": "^7.28.6",
+ "@babel/helper-module-transforms": "^7.28.6",
+ "@babel/helpers": "^7.28.6",
+ "@babel/parser": "^7.29.0",
+ "@babel/template": "^7.28.6",
+ "@babel/traverse": "^7.29.0",
+ "@babel/types": "^7.29.0",
+ "@jridgewell/remapping": "^2.3.5",
+ "convert-source-map": "^2.0.0",
+ "debug": "^4.1.0",
+ "gensync": "^1.0.0-beta.2",
+ "json5": "^2.2.3",
+ "semver": "^6.3.1"
},
"engines": {
- "node": ">= 8"
+ "node": ">=6.9.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/babel"
}
},
- "node_modules/argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
+ "node_modules/@babel/generator": {
+ "version": "7.29.1",
+ "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz",
+ "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.29.0",
+ "@babel/types": "^7.29.0",
+ "@jridgewell/gen-mapping": "^0.3.12",
+ "@jridgewell/trace-mapping": "^0.3.28",
+ "jsesc": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "node_modules/balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
+ "node_modules/@babel/helper-compilation-targets": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz",
+ "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/compat-data": "^7.28.6",
+ "@babel/helper-validator-option": "^7.27.1",
+ "browserslist": "^4.24.0",
+ "lru-cache": "^5.1.1",
+ "semver": "^6.3.1"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
},
- "node_modules/binary-extensions": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
- "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==",
+ "node_modules/@babel/helper-globals": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz",
+ "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=8"
+ "node": ">=6.9.0"
}
},
- "node_modules/brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "node_modules/@babel/helper-module-imports": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz",
+ "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "@babel/traverse": "^7.28.6",
+ "@babel/types": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
}
},
- "node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "node_modules/@babel/helper-module-transforms": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz",
+ "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "fill-range": "^7.0.1"
+ "@babel/helper-module-imports": "^7.28.6",
+ "@babel/helper-validator-identifier": "^7.28.5",
+ "@babel/traverse": "^7.28.6"
},
"engines": {
- "node": ">=8"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0"
}
},
- "node_modules/camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "node_modules/@babel/helper-plugin-utils": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.28.6.tgz",
+ "integrity": "sha512-S9gzZ/bz83GRysI7gAD4wPT/AI3uCnY+9xn+Mx/KPs2JwHJIz1W8PZkg2cqyt3RNOBM8ejcXhV6y8Og7ly/Dug==",
"dev": true,
+ "license": "MIT",
"engines": {
- "node": ">=6"
+ "node": ">=6.9.0"
}
},
- "node_modules/chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "node_modules/@babel/helper-string-parser": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz",
+ "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==",
"dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
- },
+ "license": "MIT",
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
}
},
- "node_modules/chokidar": {
- "version": "3.4.2",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz",
- "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==",
+ "node_modules/@babel/helper-validator-identifier": {
+ "version": "7.28.5",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz",
+ "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helper-validator-option": {
+ "version": "7.27.1",
+ "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz",
+ "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/@babel/helpers": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.28.6.tgz",
+ "integrity": "sha512-xOBvwq86HHdB7WUDTfKfT/Vuxh7gElQ+Sfti2Cy6yIWNW05P8iUslOVcZ4/sKbE+/jQaukQAdz/gf3724kYdqw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "anymatch": "~3.1.1",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.0",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.4.0"
+ "@babel/template": "^7.28.6",
+ "@babel/types": "^7.28.6"
},
"engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.1.2"
+ "node": ">=6.9.0"
}
},
- "node_modules/chokidar-cli": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/chokidar-cli/-/chokidar-cli-2.1.0.tgz",
- "integrity": "sha512-6n21AVpW6ywuEPoxJcLXMA2p4T+SLjWsXKny/9yTWFz0kKxESI3eUylpeV97LylING/27T/RVTY0f2/0QaWq9Q==",
+ "node_modules/@babel/parser": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.0.tgz",
+ "integrity": "sha512-IyDgFV5GeDUVX4YdF/3CPULtVGSXXMLh1xVIgdCgxApktqnQV0r7/8Nqthg+8YLGaAtdyIlo2qIdZrbCv4+7ww==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "chokidar": "^3.2.3",
- "lodash.debounce": "^4.0.8",
- "lodash.throttle": "^4.1.1",
- "yargs": "^13.3.0"
+ "@babel/types": "^7.29.0"
},
"bin": {
- "chokidar": "index.js"
+ "parser": "bin/babel-parser.js"
},
"engines": {
- "node": ">= 8.10.0"
+ "node": ">=6.0.0"
}
},
- "node_modules/clipboard": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.8.tgz",
- "integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==",
+ "node_modules/@babel/plugin-syntax-async-generators": {
+ "version": "7.8.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz",
+ "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "good-listener": "^1.2.2",
- "select": "^1.1.2",
- "tiny-emitter": "^2.0.0"
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "node_modules/@babel/plugin-syntax-bigint": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz",
+ "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/codemirror": {
- "version": "5.61.1",
- "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.61.1.tgz",
- "integrity": "sha512-+D1NZjAucuzE93vJGbAaXzvoBHwp9nJZWWWF9utjv25+5AZUiah6CIlfb4ikG4MoDsFsCG8niiJH5++OO2LgIQ=="
- },
- "node_modules/color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "node_modules/@babel/plugin-syntax-class-properties": {
+ "version": "7.12.13",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz",
+ "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "color-name": "1.1.3"
+ "@babel/helper-plugin-utils": "^7.12.13"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
- },
- "node_modules/concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
- },
- "node_modules/cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
+ "node_modules/@babel/plugin-syntax-class-static-block": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz",
+ "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
+ "@babel/helper-plugin-utils": "^7.14.5"
},
"engines": {
- "node": ">=4.8"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
+ "node_modules/@babel/plugin-syntax-import-attributes": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.28.6.tgz",
+ "integrity": "sha512-jiLC0ma9XkQT3TKJ9uYvlakm66Pamywo+qwL+oL8HJOvc6TWdZXVfhqJr8CCzbSGUAbDOzlGHJC1U+vRfLQDvw==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.28.6"
+ },
"engines": {
- "node": ">=0.10.0"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/define-properties": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
- "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
+ "node_modules/@babel/plugin-syntax-import-meta": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz",
+ "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "object-keys": "^1.0.12"
+ "@babel/helper-plugin-utils": "^7.10.4"
},
- "engines": {
- "node": ">= 0.4"
- }
- },
- "node_modules/delegate": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
- "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
- },
- "node_modules/dropzone": {
- "version": "5.9.2",
- "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.9.2.tgz",
- "integrity": "sha512-5t2z51DzIsWDbTpwcJIvUlwxBbvcwdCApz0yb9ecKJwG155Xm92KMEZmHW1B0MzoXOKvFwdd0nPu5cpeVcvPHQ=="
- },
- "node_modules/emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
- },
- "node_modules/entities": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
- "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==",
- "funding": {
- "url": "https://github.com/fb55/entities?sponsor=1"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "node_modules/@babel/plugin-syntax-json-strings": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz",
+ "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "is-arrayish": "^0.2.1"
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/es-abstract": {
- "version": "1.17.6",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
- "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
- "dev": true,
- "dependencies": {
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1",
- "is-callable": "^1.2.0",
- "is-regex": "^1.1.0",
- "object-inspect": "^1.7.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.0",
- "string.prototype.trimend": "^1.0.1",
- "string.prototype.trimstart": "^1.0.1"
+ "node_modules/@babel/plugin-syntax-jsx": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.28.6.tgz",
+ "integrity": "sha512-wgEmr06G6sIpqr8YDwA2dSRTE3bJ+V0IfpzfSY3Lfgd7YWOaAdlykvJi13ZKBt8cZHfgH1IXN+CL656W3uUa4w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.28.6"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "node_modules/@babel/plugin-syntax-logical-assignment-operators": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz",
+ "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
+ "@babel/helper-plugin-utils": "^7.10.4"
},
- "engines": {
- "node": ">= 0.4"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/esbuild": {
- "version": "0.12.8",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.8.tgz",
- "integrity": "sha512-sx/LwlP/SWTGsd9G4RlOPrXnIihAJ2xwBUmzoqe2nWwbXORMQWtAGNJNYLBJJqa3e9PWvVzxdrtyFZJcr7D87g==",
+ "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz",
+ "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==",
"dev": true,
- "hasInstallScript": true,
- "bin": {
- "esbuild": "bin/esbuild"
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
+ "node_modules/@babel/plugin-syntax-numeric-separator": {
+ "version": "7.10.4",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz",
+ "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==",
"dev": true,
- "engines": {
- "node": ">=0.8.0"
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.10.4"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "node_modules/@babel/plugin-syntax-object-rest-spread": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz",
+ "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "to-regex-range": "^5.0.1"
+ "@babel/helper-plugin-utils": "^7.8.0"
},
- "engines": {
- "node": ">=8"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "node_modules/@babel/plugin-syntax-optional-catch-binding": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz",
+ "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "locate-path": "^3.0.0"
+ "@babel/helper-plugin-utils": "^7.8.0"
},
- "engines": {
- "node": ">=6"
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/fsevents": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
- "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
+ "node_modules/@babel/plugin-syntax-optional-chaining": {
+ "version": "7.8.3",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz",
+ "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==",
"dev": true,
- "optional": true,
- "os": [
- "darwin"
- ],
- "engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.8.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
- },
- "node_modules/get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "node_modules/@babel/plugin-syntax-private-property-in-object": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz",
+ "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.14.5"
+ },
"engines": {
- "node": "6.* || 8.* || >= 10.*"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "node_modules/@babel/plugin-syntax-top-level-await": {
+ "version": "7.14.5",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz",
+ "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "is-glob": "^4.0.1"
+ "@babel/helper-plugin-utils": "^7.14.5"
},
"engines": {
- "node": ">= 6"
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/good-listener": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
- "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
+ "node_modules/@babel/plugin-syntax-typescript": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.28.6.tgz",
+ "integrity": "sha512-+nDNmQye7nlnuuHDboPbGm00Vqg3oO8niRRL27/4LYHUsHYh0zJ1xWOz0uRwNFmM1Avzk8wZbc6rdiYhomzv/A==",
+ "dev": true,
+ "license": "MIT",
"dependencies": {
- "delegate": "^3.1.2"
+ "@babel/helper-plugin-utils": "^7.28.6"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0-0"
}
},
- "node_modules/graceful-fs": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
- "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
- "dev": true
- },
- "node_modules/has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "node_modules/@babel/template": {
+ "version": "7.28.6",
+ "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz",
+ "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "function-bind": "^1.1.1"
+ "@babel/code-frame": "^7.28.6",
+ "@babel/parser": "^7.28.6",
+ "@babel/types": "^7.28.6"
},
"engines": {
- "node": ">= 0.4.0"
+ "node": ">=6.9.0"
}
},
- "node_modules/has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
+ "node_modules/@babel/traverse": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz",
+ "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.29.0",
+ "@babel/generator": "^7.29.0",
+ "@babel/helper-globals": "^7.28.0",
+ "@babel/parser": "^7.29.0",
+ "@babel/template": "^7.28.6",
+ "@babel/types": "^7.29.0",
+ "debug": "^4.3.1"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=6.9.0"
}
},
- "node_modules/has-symbols": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
- "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
+ "node_modules/@babel/types": {
+ "version": "7.29.0",
+ "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.0.tgz",
+ "integrity": "sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/helper-string-parser": "^7.27.1",
+ "@babel/helper-validator-identifier": "^7.28.5"
+ },
"engines": {
- "node": ">= 0.4"
+ "node": ">=6.9.0"
}
},
- "node_modules/hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
+ "node_modules/@bcoe/v8-coverage": {
+ "version": "0.2.3",
+ "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz",
+ "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==",
+ "dev": true,
+ "license": "MIT"
},
- "node_modules/is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
+ "node_modules/@codemirror/autocomplete": {
+ "version": "6.20.1",
+ "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.20.1.tgz",
+ "integrity": "sha512-1cvg3Vz1dSSToCNlJfRA2WSI4ht3K+WplO0UMOgmUYPivCyy2oueZY6Lx7M9wThm7SDUBViRmuT+OG/i8+ON9A==",
+ "license": "MIT",
+ "dependencies": {
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.17.0",
+ "@lezer/common": "^1.0.0"
+ }
},
- "node_modules/is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
- "dev": true,
+ "node_modules/@codemirror/commands": {
+ "version": "6.10.2",
+ "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.10.2.tgz",
+ "integrity": "sha512-vvX1fsih9HledO1c9zdotZYUZnE4xV0m6i3m25s5DIfXofuprk6cRcLUZvSk3CASUbwjQX21tOGbkY2BH8TpnQ==",
+ "license": "MIT",
"dependencies": {
- "binary-extensions": "^2.0.0"
- },
- "engines": {
- "node": ">=8"
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.4.0",
+ "@codemirror/view": "^6.27.0",
+ "@lezer/common": "^1.1.0"
}
},
- "node_modules/is-callable": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
- "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
+ "node_modules/@codemirror/lang-css": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.3.1.tgz",
+ "integrity": "sha512-kr5fwBGiGtmz6l0LSJIbno9QrifNMUusivHbnA1H6Dmqy4HZFte3UAICix1VuKo0lMPKQr2rqB+0BkKi/S3Ejg==",
+ "license": "MIT",
+ "dependencies": {
+ "@codemirror/autocomplete": "^6.0.0",
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@lezer/common": "^1.0.2",
+ "@lezer/css": "^1.1.7"
+ }
+ },
+ "node_modules/@codemirror/lang-html": {
+ "version": "6.4.11",
+ "resolved": "https://registry.npmjs.org/@codemirror/lang-html/-/lang-html-6.4.11.tgz",
+ "integrity": "sha512-9NsXp7Nwp891pQchI7gPdTwBuSuT3K65NGTHWHNJ55HjYcHLllr0rbIZNdOzas9ztc1EUVBlHou85FFZS4BNnw==",
+ "license": "MIT",
+ "dependencies": {
+ "@codemirror/autocomplete": "^6.0.0",
+ "@codemirror/lang-css": "^6.0.0",
+ "@codemirror/lang-javascript": "^6.0.0",
+ "@codemirror/language": "^6.4.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.17.0",
+ "@lezer/common": "^1.0.0",
+ "@lezer/css": "^1.1.0",
+ "@lezer/html": "^1.3.12"
+ }
+ },
+ "node_modules/@codemirror/lang-javascript": {
+ "version": "6.2.5",
+ "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.5.tgz",
+ "integrity": "sha512-zD4e5mS+50htS7F+TYjBPsiIFGanfVqg4HyUz6WNFikgOPf2BgKlx+TQedI1w6n/IqRBVBbBWmGFdLB/7uxO4A==",
+ "license": "MIT",
+ "dependencies": {
+ "@codemirror/autocomplete": "^6.0.0",
+ "@codemirror/language": "^6.6.0",
+ "@codemirror/lint": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.17.0",
+ "@lezer/common": "^1.0.0",
+ "@lezer/javascript": "^1.0.0"
+ }
+ },
+ "node_modules/@codemirror/lang-json": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@codemirror/lang-json/-/lang-json-6.0.2.tgz",
+ "integrity": "sha512-x2OtO+AvwEHrEwR0FyyPtfDUiloG3rnVTSZV1W8UteaLL8/MajQd8DpvUb2YVzC+/T18aSDv0H9mu+xw0EStoQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@codemirror/language": "^6.0.0",
+ "@lezer/json": "^1.0.0"
+ }
+ },
+ "node_modules/@codemirror/lang-markdown": {
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/@codemirror/lang-markdown/-/lang-markdown-6.5.0.tgz",
+ "integrity": "sha512-0K40bZ35jpHya6FriukbgaleaqzBLZfOh7HuzqbMxBXkbYMJDxfF39c23xOgxFezR+3G+tR2/Mup+Xk865OMvw==",
+ "license": "MIT",
+ "dependencies": {
+ "@codemirror/autocomplete": "^6.7.1",
+ "@codemirror/lang-html": "^6.0.0",
+ "@codemirror/language": "^6.3.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0",
+ "@lezer/common": "^1.2.1",
+ "@lezer/markdown": "^1.0.0"
+ }
+ },
+ "node_modules/@codemirror/lang-php": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/@codemirror/lang-php/-/lang-php-6.0.2.tgz",
+ "integrity": "sha512-ZKy2v1n8Fc8oEXj0Th0PUMXzQJ0AIR6TaZU+PbDHExFwdu+guzOA4jmCHS1Nz4vbFezwD7LyBdDnddSJeScMCA==",
+ "license": "MIT",
+ "dependencies": {
+ "@codemirror/lang-html": "^6.0.0",
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@lezer/common": "^1.0.0",
+ "@lezer/php": "^1.0.0"
+ }
+ },
+ "node_modules/@codemirror/lang-xml": {
+ "version": "6.1.0",
+ "resolved": "https://registry.npmjs.org/@codemirror/lang-xml/-/lang-xml-6.1.0.tgz",
+ "integrity": "sha512-3z0blhicHLfwi2UgkZYRPioSgVTo9PV5GP5ducFH6FaHy0IAJRg+ixj5gTR1gnT/glAIC8xv4w2VL1LoZfs+Jg==",
+ "license": "MIT",
+ "dependencies": {
+ "@codemirror/autocomplete": "^6.0.0",
+ "@codemirror/language": "^6.4.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0",
+ "@lezer/common": "^1.0.0",
+ "@lezer/xml": "^1.0.0"
+ }
+ },
+ "node_modules/@codemirror/language": {
+ "version": "6.12.2",
+ "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.12.2.tgz",
+ "integrity": "sha512-jEPmz2nGGDxhRTg3lTpzmIyGKxz3Gp3SJES4b0nAuE5SWQoKdT5GoQ69cwMmFd+wvFUhYirtDTr0/DRHpQAyWg==",
+ "license": "MIT",
+ "dependencies": {
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.23.0",
+ "@lezer/common": "^1.5.0",
+ "@lezer/highlight": "^1.0.0",
+ "@lezer/lr": "^1.0.0",
+ "style-mod": "^4.0.0"
+ }
+ },
+ "node_modules/@codemirror/legacy-modes": {
+ "version": "6.5.2",
+ "resolved": "https://registry.npmjs.org/@codemirror/legacy-modes/-/legacy-modes-6.5.2.tgz",
+ "integrity": "sha512-/jJbwSTazlQEDOQw2FJ8LEEKVS72pU0lx6oM54kGpL8t/NJ2Jda3CZ4pcltiKTdqYSRk3ug1B3pil1gsjA6+8Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@codemirror/language": "^6.0.0"
+ }
+ },
+ "node_modules/@codemirror/lint": {
+ "version": "6.9.5",
+ "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.9.5.tgz",
+ "integrity": "sha512-GElsbU9G7QT9xXhpUg1zWGmftA/7jamh+7+ydKRuT0ORpWS3wOSP0yT1FOlIZa7mIJjpVPipErsyvVqB9cfTFA==",
+ "license": "MIT",
+ "dependencies": {
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.35.0",
+ "crelt": "^1.0.5"
+ }
+ },
+ "node_modules/@codemirror/search": {
+ "version": "6.6.0",
+ "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.6.0.tgz",
+ "integrity": "sha512-koFuNXcDvyyotWcgOnZGmY7LZqEOXZaaxD/j6n18TCLx2/9HieZJ5H6hs1g8FiRxBD0DNfs0nXn17g872RmYdw==",
+ "license": "MIT",
+ "dependencies": {
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.37.0",
+ "crelt": "^1.0.5"
+ }
+ },
+ "node_modules/@codemirror/state": {
+ "version": "6.5.4",
+ "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.5.4.tgz",
+ "integrity": "sha512-8y7xqG/hpB53l25CIoit9/ngxdfoG+fx+V3SHBrinnhOtLvKHRyAJJuHzkWrR4YXXLX8eXBsejgAAxHUOdW1yw==",
+ "license": "MIT",
+ "dependencies": {
+ "@marijn/find-cluster-break": "^1.0.0"
+ }
+ },
+ "node_modules/@codemirror/theme-one-dark": {
+ "version": "6.1.3",
+ "resolved": "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.3.tgz",
+ "integrity": "sha512-NzBdIvEJmx6fjeremiGp3t/okrLPYT0d9orIc7AFun8oZcRk58aejkqhv6spnz4MLAevrKNPMQYXEWMg4s+sKA==",
+ "license": "MIT",
+ "dependencies": {
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0",
+ "@lezer/highlight": "^1.0.0"
+ }
+ },
+ "node_modules/@codemirror/view": {
+ "version": "6.39.16",
+ "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.39.16.tgz",
+ "integrity": "sha512-m6S22fFpKtOWhq8HuhzsI1WzUP/hB9THbDj0Tl5KX4gbO6Y91hwBl7Yky33NdvB6IffuRFiBxf1R8kJMyXmA4Q==",
+ "license": "MIT",
+ "dependencies": {
+ "@codemirror/state": "^6.5.0",
+ "crelt": "^1.0.6",
+ "style-mod": "^4.1.0",
+ "w3c-keyname": "^2.2.4"
+ }
+ },
+ "node_modules/@cspotcode/source-map-support": {
+ "version": "0.8.1",
+ "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz",
+ "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "0.3.9"
+ },
"engines": {
- "node": ">= 0.4"
+ "node": ">=12"
}
},
- "node_modules/is-date-object": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
- "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
+ "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.9",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz",
+ "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==",
"dev": true,
- "engines": {
- "node": ">= 0.4"
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.0.3",
+ "@jridgewell/sourcemap-codec": "^1.4.10"
}
},
- "node_modules/is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
+ "node_modules/@csstools/color-helpers": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/@csstools/color-helpers/-/color-helpers-5.1.0.tgz",
+ "integrity": "sha512-S11EXWJyy0Mz5SYvRmY8nJYTFFd1LCNV+7cXyAgQtOOuzb4EsgfqDufL+9esx72/eLhsRdGZwaldu/h+E4t4BA==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT-0",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=18"
}
},
- "node_modules/is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
+ "node_modules/@csstools/css-calc": {
+ "version": "2.1.4",
+ "resolved": "https://registry.npmjs.org/@csstools/css-calc/-/css-calc-2.1.4.tgz",
+ "integrity": "sha512-3N8oaj+0juUw/1H3YwmDDJXCgTB1gKU6Hc/bB502u9zR0q2vd786XJH9QfrKIEgFlZmhZiq6epXl4rHqhzsIgQ==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
"engines": {
- "node": ">=4"
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
}
},
- "node_modules/is-glob": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
- "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "node_modules/@csstools/css-color-parser": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/@csstools/css-color-parser/-/css-color-parser-3.1.0.tgz",
+ "integrity": "sha512-nbtKwh3a6xNVIp/VRuXV64yTKnb1IjTAEEh3irzS+HkKjAOYLTGNb9pmVNntZ8iVBHcWDA2Dof0QtPgFI1BaTA==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
"dependencies": {
- "is-extglob": "^2.1.1"
+ "@csstools/color-helpers": "^5.1.0",
+ "@csstools/css-calc": "^2.1.4"
},
"engines": {
- "node": ">=0.10.0"
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-parser-algorithms": "^3.0.5",
+ "@csstools/css-tokenizer": "^3.0.4"
}
},
- "node_modules/is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "node_modules/@csstools/css-parser-algorithms": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/@csstools/css-parser-algorithms/-/css-parser-algorithms-3.0.5.tgz",
+ "integrity": "sha512-DaDeUkXZKjdGhgYaHNJTV9pV7Y9B3b644jCLs9Upc3VeNGg6LWARAT6O+Q+/COo+2gg/bM5rhpMAtf70WqfBdQ==",
"dev": true,
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
"engines": {
- "node": ">=0.12.0"
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "@csstools/css-tokenizer": "^3.0.4"
}
},
- "node_modules/is-regex": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz",
- "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==",
+ "node_modules/@csstools/css-tokenizer": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@csstools/css-tokenizer/-/css-tokenizer-3.0.4.tgz",
+ "integrity": "sha512-Vd/9EVDiu6PPJt9yAh6roZP6El1xHrdvIVGjyBsHR0RYwNHgL7FJPyIIW4fANJNG6FtyZfvlRPpFI4ZM/lubvw==",
"dev": true,
- "dependencies": {
- "has-symbols": "^1.0.1"
- },
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/csstools"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/csstools"
+ }
+ ],
+ "license": "MIT",
"engines": {
- "node": ">= 0.4"
+ "node": ">=18"
}
},
- "node_modules/is-symbol": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
- "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
+ "node_modules/@emnapi/core": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.8.1.tgz",
+ "integrity": "sha512-AvT9QFpxK0Zd8J0jopedNm+w/2fIzvtPKPjqyw9jwvBaReTTqPBk9Hixaz7KbjimP+QNz605/XnjFcDAL2pqBg==",
"dev": true,
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "has-symbols": "^1.0.1"
- },
- "engines": {
- "node": ">= 0.4"
+ "@emnapi/wasi-threads": "1.1.0",
+ "tslib": "^2.4.0"
}
},
- "node_modules/isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "node_modules/json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
- "dev": true
- },
- "node_modules/linkify-it": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz",
- "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==",
+ "node_modules/@emnapi/runtime": {
+ "version": "1.8.1",
+ "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.8.1.tgz",
+ "integrity": "sha512-mehfKSMWjjNol8659Z8KxEMrdSJDDot5SXMq00dM8BN4o+CLNXQ0xH2V7EchNHV4RmbZLmmPdEaXZc5H2FXmDg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "uc.micro": "^1.0.1"
+ "tslib": "^2.4.0"
}
},
- "node_modules/livereload": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.3.tgz",
- "integrity": "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==",
+ "node_modules/@emnapi/wasi-threads": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz",
+ "integrity": "sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==",
"dev": true,
+ "license": "MIT",
+ "optional": true,
"dependencies": {
- "chokidar": "^3.5.0",
- "livereload-js": "^3.3.1",
- "opts": ">= 1.2.0",
- "ws": "^7.4.3"
- },
- "bin": {
- "livereload": "bin/livereload.js"
- },
- "engines": {
- "node": ">=8.0.0"
+ "tslib": "^2.4.0"
}
},
- "node_modules/livereload-js": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.3.2.tgz",
- "integrity": "sha512-w677WnINxFkuixAoUEXOStewzLYGI76XVag+0JWMMEyjJQKs0ibWZMxkTlB96Lm3EjZ7IeOxVziBEbtxVQqQZA==",
- "dev": true
- },
- "node_modules/livereload/node_modules/chokidar": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
- "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
+ "node_modules/@esbuild/aix-ppc64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz",
+ "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==",
+ "cpu": [
+ "ppc64"
+ ],
"dev": true,
- "dependencies": {
- "anymatch": "~3.1.1",
- "braces": "~3.0.2",
- "glob-parent": "~5.1.0",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.5.0"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "aix"
+ ],
"engines": {
- "node": ">= 8.10.0"
- },
- "optionalDependencies": {
- "fsevents": "~2.3.1"
+ "node": ">=18"
}
},
- "node_modules/livereload/node_modules/fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
+ "node_modules/@esbuild/android-arm": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz",
+ "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==",
+ "cpu": [
+ "arm"
+ ],
"dev": true,
+ "license": "MIT",
"optional": true,
"os": [
- "darwin"
+ "android"
],
"engines": {
- "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ "node": ">=18"
}
},
- "node_modules/livereload/node_modules/readdirp": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
- "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
+ "node_modules/@esbuild/android-arm64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz",
+ "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "dependencies": {
- "picomatch": "^2.2.1"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": ">=8.10.0"
+ "node": ">=18"
}
},
- "node_modules/load-json-file": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
- "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "node_modules/@esbuild/android-x64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz",
+ "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "dependencies": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
- "strip-bom": "^3.0.0"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
"engines": {
- "node": ">=4"
+ "node": ">=18"
}
},
- "node_modules/locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "node_modules/@esbuild/darwin-arm64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz",
+ "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "dependencies": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
"engines": {
- "node": ">=6"
+ "node": ">=18"
}
},
- "node_modules/lodash.debounce": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
- "dev": true
- },
- "node_modules/lodash.throttle": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
- "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=",
- "dev": true
- },
- "node_modules/markdown-it": {
- "version": "12.0.6",
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.0.6.tgz",
- "integrity": "sha512-qv3sVLl4lMT96LLtR7xeRJX11OUFjsaD5oVat2/SNBIb21bJXwal2+SklcRbTwGwqWpWH/HRtYavOoJE+seL8w==",
- "dependencies": {
- "argparse": "^2.0.1",
- "entities": "~2.1.0",
- "linkify-it": "^3.0.1",
- "mdurl": "^1.0.1",
- "uc.micro": "^1.0.5"
- },
- "bin": {
- "markdown-it": "bin/markdown-it.js"
+ "node_modules/@esbuild/darwin-x64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz",
+ "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/markdown-it-task-lists": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/markdown-it-task-lists/-/markdown-it-task-lists-2.1.1.tgz",
- "integrity": "sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA=="
- },
- "node_modules/mdurl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
- "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
- },
- "node_modules/memorystream": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
- "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=",
+ "node_modules/@esbuild/freebsd-arm64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz",
+ "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
"engines": {
- "node": ">= 0.10.0"
+ "node": ">=18"
}
},
- "node_modules/minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "node_modules/@esbuild/freebsd-x64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz",
+ "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "dependencies": {
- "brace-expansion": "^1.1.7"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
"engines": {
- "node": "*"
+ "node": ">=18"
}
},
- "node_modules/nice-try": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
- "dev": true
- },
- "node_modules/normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "node_modules/@esbuild/linux-arm": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz",
+ "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==",
+ "cpu": [
+ "arm"
+ ],
"dev": true,
- "dependencies": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">=18"
}
},
- "node_modules/normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "node_modules/@esbuild/linux-arm64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz",
+ "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=0.10.0"
+ "node": ">=18"
}
},
- "node_modules/npm-run-all": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
- "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
+ "node_modules/@esbuild/linux-ia32": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz",
+ "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==",
+ "cpu": [
+ "ia32"
+ ],
"dev": true,
- "dependencies": {
- "ansi-styles": "^3.2.1",
- "chalk": "^2.4.1",
- "cross-spawn": "^6.0.5",
- "memorystream": "^0.3.1",
- "minimatch": "^3.0.4",
- "pidtree": "^0.3.0",
- "read-pkg": "^3.0.0",
- "shell-quote": "^1.6.1",
- "string.prototype.padend": "^3.0.0"
- },
- "bin": {
- "npm-run-all": "bin/npm-run-all/index.js",
- "run-p": "bin/run-p/index.js",
- "run-s": "bin/run-s/index.js"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">= 4"
+ "node": ">=18"
}
},
- "node_modules/object-inspect": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz",
- "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==",
- "dev": true
- },
- "node_modules/object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "node_modules/@esbuild/linux-loong64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz",
+ "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==",
+ "cpu": [
+ "loong64"
+ ],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">= 0.4"
+ "node": ">=18"
}
},
- "node_modules/object.assign": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
- "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+ "node_modules/@esbuild/linux-mips64el": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz",
+ "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==",
+ "cpu": [
+ "mips64el"
+ ],
"dev": true,
- "dependencies": {
- "define-properties": "^1.1.2",
- "function-bind": "^1.1.1",
- "has-symbols": "^1.0.0",
- "object-keys": "^1.0.11"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">= 0.4"
+ "node": ">=18"
}
},
- "node_modules/opts": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz",
- "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==",
- "dev": true
- },
- "node_modules/p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "node_modules/@esbuild/linux-ppc64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz",
+ "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==",
+ "cpu": [
+ "ppc64"
+ ],
"dev": true,
- "dependencies": {
- "p-try": "^2.0.0"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=6"
+ "node": ">=18"
}
},
- "node_modules/p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "node_modules/@esbuild/linux-riscv64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz",
+ "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==",
+ "cpu": [
+ "riscv64"
+ ],
"dev": true,
- "dependencies": {
- "p-limit": "^2.0.0"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=6"
+ "node": ">=18"
}
},
- "node_modules/p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "node_modules/@esbuild/linux-s390x": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz",
+ "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==",
+ "cpu": [
+ "s390x"
+ ],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=6"
+ "node": ">=18"
}
},
- "node_modules/parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "node_modules/@esbuild/linux-x64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz",
+ "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "dependencies": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
"engines": {
- "node": ">=4"
+ "node": ">=18"
}
},
- "node_modules/path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
+ "node_modules/@esbuild/netbsd-arm64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz",
+ "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
"engines": {
- "node": ">=4"
+ "node": ">=18"
}
},
- "node_modules/path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
+ "node_modules/@esbuild/netbsd-x64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz",
+ "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "netbsd"
+ ],
"engines": {
- "node": ">=4"
+ "node": ">=18"
}
},
- "node_modules/path-parse": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
- "dev": true
+ "node_modules/@esbuild/openbsd-arm64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz",
+ "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
+ "engines": {
+ "node": ">=18"
+ }
},
- "node_modules/path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "node_modules/@esbuild/openbsd-x64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz",
+ "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "dependencies": {
- "pify": "^3.0.0"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openbsd"
+ ],
"engines": {
- "node": ">=4"
+ "node": ">=18"
}
},
- "node_modules/picomatch": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
- "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
+ "node_modules/@esbuild/openharmony-arm64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz",
+ "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "openharmony"
+ ],
"engines": {
- "node": ">=8.6"
+ "node": ">=18"
}
},
- "node_modules/pidtree": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz",
- "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==",
+ "node_modules/@esbuild/sunos-x64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz",
+ "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "bin": {
- "pidtree": "bin/pidtree.js"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "sunos"
+ ],
"engines": {
- "node": ">=0.10"
+ "node": ">=18"
}
},
- "node_modules/pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
+ "node_modules/@esbuild/win32-arm64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz",
+ "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=4"
+ "node": ">=18"
}
},
- "node_modules/punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
+ "node_modules/@esbuild/win32-ia32": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz",
+ "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==",
+ "cpu": [
+ "ia32"
+ ],
"dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=6"
+ "node": ">=18"
}
},
- "node_modules/read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "node_modules/@esbuild/win32-x64": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz",
+ "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "dependencies": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
- },
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
"engines": {
- "node": ">=4"
+ "node": ">=18"
}
},
- "node_modules/readdirp": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
- "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
+ "node_modules/@eslint-community/eslint-utils": {
+ "version": "4.9.1",
+ "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz",
+ "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "picomatch": "^2.2.1"
+ "eslint-visitor-keys": "^3.4.3"
},
"engines": {
- "node": ">=8.10.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ },
+ "peerDependencies": {
+ "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0"
}
},
- "node_modules/require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
+ "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
+ "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
- "node": ">=0.10.0"
+ "node": "^12.22.0 || ^14.17.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
}
},
- "node_modules/require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
- "dev": true
+ "node_modules/@eslint-community/regexpp": {
+ "version": "4.12.2",
+ "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz",
+ "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.0.0 || ^14.0.0 || >=16.0.0"
+ }
},
- "node_modules/resolve": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
- "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
+ "node_modules/@eslint/config-array": {
+ "version": "0.23.2",
+ "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.2.tgz",
+ "integrity": "sha512-YF+fE6LV4v5MGWRGj7G404/OZzGNepVF8fxk7jqmqo3lrza7a0uUcDnROGRBG1WFC1omYUS/Wp1f42i0M+3Q3A==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "path-parse": "^1.0.6"
+ "@eslint/object-schema": "^3.0.2",
+ "debug": "^4.3.1",
+ "minimatch": "^10.2.1"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/sass": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.34.1.tgz",
- "integrity": "sha512-scLA7EIZM+MmYlej6sdVr0HRbZX5caX5ofDT9asWnUJj21oqgsC+1LuNfm0eg+vM0fCTZHhwImTiCU0sx9h9CQ==",
+ "node_modules/@eslint/config-helpers": {
+ "version": "0.5.2",
+ "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.2.tgz",
+ "integrity": "sha512-a5MxrdDXEvqnIq+LisyCX6tQMPF/dSJpCfBgBauY+pNZ28yCtSsTvyTYrMhaI+LK26bVyCJfJkT0u8KIj2i1dQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "chokidar": ">=3.0.0 <4.0.0"
- },
- "bin": {
- "sass": "sass.js"
+ "@eslint/core": "^1.1.0"
},
"engines": {
- "node": ">=8.9.0"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/select": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
- "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0="
+ "node_modules/@eslint/core": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.1.0.tgz",
+ "integrity": "sha512-/nr9K9wkr3P1EzFTdFdMoLuo1PmIxjmwvPozwoSodjNBdefGujXQUF93u1DDZpEaTuDvMsIQddsd35BwtrW9Xw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/json-schema": "^7.0.15"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ }
},
- "node_modules/semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
+ "node_modules/@eslint/js": {
+ "version": "10.0.1",
+ "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz",
+ "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==",
"dev": true,
- "bin": {
- "semver": "bin/semver"
+ "license": "MIT",
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "eslint": "^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "eslint": {
+ "optional": true
+ }
}
},
- "node_modules/set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
- "dev": true
+ "node_modules/@eslint/object-schema": {
+ "version": "3.0.2",
+ "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.2.tgz",
+ "integrity": "sha512-HOy56KJt48Bx8KmJ+XGQNSUMT/6dZee/M54XyUyuvTvPXJmsERRvBchsUVx1UMe1WwIH49XLAczNC7V2INsuUw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ }
},
- "node_modules/shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "node_modules/@eslint/plugin-kit": {
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.6.0.tgz",
+ "integrity": "sha512-bIZEUzOI1jkhviX2cp5vNyXQc6olzb2ohewQubuYlMXZ2Q/XjBO0x0XhGPvc9fjSIiUN0vw+0hq53BJ4eQSJKQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "shebang-regex": "^1.0.0"
+ "@eslint/core": "^1.1.0",
+ "levn": "^0.4.1"
},
"engines": {
- "node": ">=0.10.0"
+ "node": "^20.19.0 || ^22.13.0 || >=24"
}
},
- "node_modules/shebang-regex": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
+ "node_modules/@humanfs/core": {
+ "version": "0.19.1",
+ "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz",
+ "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==",
"dev": true,
+ "license": "Apache-2.0",
"engines": {
- "node": ">=0.10.0"
+ "node": ">=18.18.0"
}
},
- "node_modules/shell-quote": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz",
- "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==",
- "dev": true
- },
- "node_modules/sortablejs": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.13.0.tgz",
- "integrity": "sha512-RBJirPY0spWCrU5yCmWM1eFs/XgX2J5c6b275/YyxFRgnzPhKl/TDeU2hNR8Dt7ITq66NRPM4UlOt+e5O4CFHg=="
- },
- "node_modules/spdx-correct": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
- "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+ "node_modules/@humanfs/node": {
+ "version": "0.16.7",
+ "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz",
+ "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==",
"dev": true,
+ "license": "Apache-2.0",
"dependencies": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
+ "@humanfs/core": "^0.19.1",
+ "@humanwhocodes/retry": "^0.4.0"
+ },
+ "engines": {
+ "node": ">=18.18.0"
}
},
- "node_modules/spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
- },
- "node_modules/spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "node_modules/@humanwhocodes/module-importer": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz",
+ "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==",
"dev": true,
- "dependencies": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=12.22"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
}
},
- "node_modules/spdx-license-ids": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
- "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
- "dev": true
+ "node_modules/@humanwhocodes/retry": {
+ "version": "0.4.3",
+ "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz",
+ "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18.18"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/nzakas"
+ }
},
- "node_modules/string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "node_modules/@isaacs/cliui": {
+ "version": "8.0.2",
+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",
+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",
"dev": true,
+ "license": "ISC",
"dependencies": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
+ "string-width": "^5.1.2",
+ "string-width-cjs": "npm:string-width@^4.2.0",
+ "strip-ansi": "^7.0.1",
+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",
+ "wrap-ansi": "^8.1.0",
+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"
},
"engines": {
- "node": ">=6"
+ "node": ">=12"
}
},
- "node_modules/string.prototype.padend": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz",
- "integrity": "sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==",
+ "node_modules/@istanbuljs/load-nyc-config": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz",
+ "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==",
"dev": true,
+ "license": "ISC",
"dependencies": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1"
+ "camelcase": "^5.3.1",
+ "find-up": "^4.1.0",
+ "get-package-type": "^0.1.0",
+ "js-yaml": "^3.13.1",
+ "resolve-from": "^5.0.0"
},
"engines": {
- "node": ">= 0.4"
+ "node": ">=8"
}
},
- "node_modules/string.prototype.trimend": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
- "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.5"
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/string.prototype.trimstart": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
- "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.5"
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "node_modules/strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "ansi-regex": "^4.1.0"
+ "p-try": "^2.0.0"
},
"engines": {
"node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
+ "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
"engines": {
- "node": ">=4"
+ "node": ">=8"
}
},
- "node_modules/supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "node_modules/@istanbuljs/schema": {
+ "version": "0.1.3",
+ "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz",
+ "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/@jest/console": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/@jest/console/-/console-30.2.0.tgz",
+ "integrity": "sha512-+O1ifRjkvYIkBqASKWgLxrpEhQAAE7hY77ALLUufSk5717KfOShg6IbqLmdsLMPdUiFvA2kTs0R7YZy+l0IzZQ==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "has-flag": "^3.0.0"
+ "@jest/types": "30.2.0",
+ "@types/node": "*",
+ "chalk": "^4.1.2",
+ "jest-message-util": "30.2.0",
+ "jest-util": "30.2.0",
+ "slash": "^3.0.0"
},
"engines": {
- "node": ">=4"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
- "node_modules/tiny-emitter": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
- "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
+ "node_modules/@jest/core": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/@jest/core/-/core-30.2.0.tgz",
+ "integrity": "sha512-03W6IhuhjqTlpzh/ojut/pDB2LPRygyWX8ExpgHtQA8H/3K7+1vKmcINx5UzeOX1se6YEsBsOHQ1CRzf3fOwTQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/console": "30.2.0",
+ "@jest/pattern": "30.0.1",
+ "@jest/reporters": "30.2.0",
+ "@jest/test-result": "30.2.0",
+ "@jest/transform": "30.2.0",
+ "@jest/types": "30.2.0",
+ "@types/node": "*",
+ "ansi-escapes": "^4.3.2",
+ "chalk": "^4.1.2",
+ "ci-info": "^4.2.0",
+ "exit-x": "^0.2.2",
+ "graceful-fs": "^4.2.11",
+ "jest-changed-files": "30.2.0",
+ "jest-config": "30.2.0",
+ "jest-haste-map": "30.2.0",
+ "jest-message-util": "30.2.0",
+ "jest-regex-util": "30.0.1",
+ "jest-resolve": "30.2.0",
+ "jest-resolve-dependencies": "30.2.0",
+ "jest-runner": "30.2.0",
+ "jest-runtime": "30.2.0",
+ "jest-snapshot": "30.2.0",
+ "jest-util": "30.2.0",
+ "jest-validate": "30.2.0",
+ "jest-watcher": "30.2.0",
+ "micromatch": "^4.0.8",
+ "pretty-format": "30.2.0",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
},
- "node_modules/to-regex-range": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "node_modules/@jest/diff-sequences": {
+ "version": "30.0.1",
+ "resolved": "https://registry.npmjs.org/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz",
+ "integrity": "sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==",
+ "license": "MIT",
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/@jest/environment": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-30.2.0.tgz",
+ "integrity": "sha512-/QPTL7OBJQ5ac09UDRa3EQes4gt1FTEG/8jZ/4v5IVzx+Cv7dLxlVIvfvSVRiiX2drWyXeBjkMSR8hvOWSog5g==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "is-number": "^7.0.0"
+ "@jest/fake-timers": "30.2.0",
+ "@jest/types": "30.2.0",
+ "@types/node": "*",
+ "jest-mock": "30.2.0"
},
"engines": {
- "node": ">=8.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
- "node_modules/uc.micro": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
- "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
+ "node_modules/@jest/environment-jsdom-abstract": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/@jest/environment-jsdom-abstract/-/environment-jsdom-abstract-30.2.0.tgz",
+ "integrity": "sha512-kazxw2L9IPuZpQ0mEt9lu9Z98SqR74xcagANmMBU16X0lS23yPc0+S6hGLUz8kVRlomZEs/5S/Zlpqwf5yu6OQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/environment": "30.2.0",
+ "@jest/fake-timers": "30.2.0",
+ "@jest/types": "30.2.0",
+ "@types/jsdom": "^21.1.7",
+ "@types/node": "*",
+ "jest-mock": "30.2.0",
+ "jest-util": "30.2.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "canvas": "^3.0.0",
+ "jsdom": "*"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
+ }
},
- "node_modules/validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "node_modules/@jest/expect": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-30.2.0.tgz",
+ "integrity": "sha512-V9yxQK5erfzx99Sf+7LbhBwNWEZ9eZay8qQ9+JSC0TrMR1pMDHLMY+BnVPacWU6Jamrh252/IKo4F1Xn/zfiqA==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
+ "expect": "30.2.0",
+ "jest-snapshot": "30.2.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
- "node_modules/which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "node_modules/@jest/expect-utils": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-30.2.0.tgz",
+ "integrity": "sha512-1JnRfhqpD8HGpOmQp180Fo9Zt69zNtC+9lR+kT7NVL05tNXIi+QC8Csz7lfidMoVLPD3FnOtcmp0CEFnxExGEA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/get-type": "30.1.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/@jest/fake-timers": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-30.2.0.tgz",
+ "integrity": "sha512-HI3tRLjRxAbBy0VO8dqqm7Hb2mIa8d5bg/NJkyQcOk7V118ObQML8RC5luTF/Zsg4474a+gDvhce7eTnP4GhYw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "isexe": "^2.0.0"
+ "@jest/types": "30.2.0",
+ "@sinonjs/fake-timers": "^13.0.0",
+ "@types/node": "*",
+ "jest-message-util": "30.2.0",
+ "jest-mock": "30.2.0",
+ "jest-util": "30.2.0"
},
- "bin": {
- "which": "bin/which"
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
- "node_modules/which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
- "dev": true
+ "node_modules/@jest/get-type": {
+ "version": "30.1.0",
+ "resolved": "https://registry.npmjs.org/@jest/get-type/-/get-type-30.1.0.tgz",
+ "integrity": "sha512-eMbZE2hUnx1WV0pmURZY9XoXPkUYjpc55mb0CrhtdWLtzMQPFvu/rZkTLZFTsdaVQa+Tr4eWAteqcUzoawq/uA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
},
- "node_modules/wrap-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
- "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "node_modules/@jest/globals": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-30.2.0.tgz",
+ "integrity": "sha512-b63wmnKPaK+6ZZfpYhz9K61oybvbI1aMcIs80++JI1O1rR1vaxHUCNqo3ITu6NU0d4V34yZFoHMn/uoKr/Rwfw==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "ansi-styles": "^3.2.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0"
+ "@jest/environment": "30.2.0",
+ "@jest/expect": "30.2.0",
+ "@jest/types": "30.2.0",
+ "jest-mock": "30.2.0"
},
"engines": {
- "node": ">=6"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
- "node_modules/ws": {
- "version": "7.4.6",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
- "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
+ "node_modules/@jest/pattern": {
+ "version": "30.0.1",
+ "resolved": "https://registry.npmjs.org/@jest/pattern/-/pattern-30.0.1.tgz",
+ "integrity": "sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "jest-regex-util": "30.0.1"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/@jest/reporters": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-30.2.0.tgz",
+ "integrity": "sha512-DRyW6baWPqKMa9CzeiBjHwjd8XeAyco2Vt8XbcLFjiwCOEKOvy82GJ8QQnJE9ofsxCMPjH4MfH8fCWIHHDKpAQ==",
"dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@bcoe/v8-coverage": "^0.2.3",
+ "@jest/console": "30.2.0",
+ "@jest/test-result": "30.2.0",
+ "@jest/transform": "30.2.0",
+ "@jest/types": "30.2.0",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "@types/node": "*",
+ "chalk": "^4.1.2",
+ "collect-v8-coverage": "^1.0.2",
+ "exit-x": "^0.2.2",
+ "glob": "^10.3.10",
+ "graceful-fs": "^4.2.11",
+ "istanbul-lib-coverage": "^3.0.0",
+ "istanbul-lib-instrument": "^6.0.0",
+ "istanbul-lib-report": "^3.0.0",
+ "istanbul-lib-source-maps": "^5.0.0",
+ "istanbul-reports": "^3.1.3",
+ "jest-message-util": "30.2.0",
+ "jest-util": "30.2.0",
+ "jest-worker": "30.2.0",
+ "slash": "^3.0.0",
+ "string-length": "^4.0.2",
+ "v8-to-istanbul": "^9.0.1"
+ },
"engines": {
- "node": ">=8.3.0"
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
},
"peerDependencies": {
- "bufferutil": "^4.0.1",
- "utf-8-validate": "^5.0.2"
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
},
"peerDependenciesMeta": {
- "bufferutil": {
- "optional": true
- },
- "utf-8-validate": {
+ "node-notifier": {
"optional": true
}
}
},
- "node_modules/y18n": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
- "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
- "dev": true
+ "node_modules/@jest/schemas": {
+ "version": "30.0.5",
+ "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-30.0.5.tgz",
+ "integrity": "sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==",
+ "license": "MIT",
+ "dependencies": {
+ "@sinclair/typebox": "^0.34.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
},
- "node_modules/yargs": {
- "version": "13.3.2",
- "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
- "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
+ "node_modules/@jest/snapshot-utils": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/@jest/snapshot-utils/-/snapshot-utils-30.2.0.tgz",
+ "integrity": "sha512-0aVxM3RH6DaiLcjj/b0KrIBZhSX1373Xci4l3cW5xiUWPctZ59zQ7jj4rqcJQ/Z8JuN/4wX3FpJSa3RssVvCug==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "cliui": "^5.0.0",
- "find-up": "^3.0.0",
- "get-caller-file": "^2.0.1",
- "require-directory": "^2.1.1",
- "require-main-filename": "^2.0.0",
- "set-blocking": "^2.0.0",
- "string-width": "^3.0.0",
- "which-module": "^2.0.0",
- "y18n": "^4.0.0",
- "yargs-parser": "^13.1.2"
+ "@jest/types": "30.2.0",
+ "chalk": "^4.1.2",
+ "graceful-fs": "^4.2.11",
+ "natural-compare": "^1.4.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
- "node_modules/yargs-parser": {
- "version": "13.1.2",
- "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
- "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
+ "node_modules/@jest/source-map": {
+ "version": "30.0.1",
+ "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-30.0.1.tgz",
+ "integrity": "sha512-MIRWMUUR3sdbP36oyNyhbThLHyJ2eEDClPCiHVbrYAe5g3CHRArIVpBw7cdSB5fr+ofSfIb2Tnsw8iEHL0PYQg==",
"dev": true,
+ "license": "MIT",
"dependencies": {
- "camelcase": "^5.0.0",
- "decamelize": "^1.2.0"
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "callsites": "^3.1.0",
+ "graceful-fs": "^4.2.11"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
- }
- },
- "dependencies": {
- "ansi-regex": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz",
- "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==",
- "dev": true
},
- "ansi-styles": {
- "version": "3.2.1",
- "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
- "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "node_modules/@jest/test-result": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-30.2.0.tgz",
+ "integrity": "sha512-RF+Z+0CCHkARz5HT9mcQCBulb1wgCP3FBvl9VFokMX27acKphwyQsNuWH3c+ojd1LeWBLoTYoxF0zm6S/66mjg==",
"dev": true,
- "requires": {
- "color-convert": "^1.9.0"
+ "license": "MIT",
+ "dependencies": {
+ "@jest/console": "30.2.0",
+ "@jest/types": "30.2.0",
+ "@types/istanbul-lib-coverage": "^2.0.6",
+ "collect-v8-coverage": "^1.0.2"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
- "anymatch": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz",
- "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==",
+ "node_modules/@jest/test-sequencer": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-30.2.0.tgz",
+ "integrity": "sha512-wXKgU/lk8fKXMu/l5Hog1R61bL4q5GCdT6OJvdAFz1P+QrpoFuLU68eoKuVc4RbrTtNnTL5FByhWdLgOPSph+Q==",
"dev": true,
- "requires": {
- "normalize-path": "^3.0.0",
- "picomatch": "^2.0.4"
+ "license": "MIT",
+ "dependencies": {
+ "@jest/test-result": "30.2.0",
+ "graceful-fs": "^4.2.11",
+ "jest-haste-map": "30.2.0",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
}
},
- "argparse": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q=="
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=",
- "dev": true
+ "node_modules/@jest/transform": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-30.2.0.tgz",
+ "integrity": "sha512-XsauDV82o5qXbhalKxD7p4TZYYdwcaEXC77PPD2HixEFF+6YGppjrAAQurTl2ECWcEomHBMMNS9AH3kcCFx8jA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.27.4",
+ "@jest/types": "30.2.0",
+ "@jridgewell/trace-mapping": "^0.3.25",
+ "babel-plugin-istanbul": "^7.0.1",
+ "chalk": "^4.1.2",
+ "convert-source-map": "^2.0.0",
+ "fast-json-stable-stringify": "^2.1.0",
+ "graceful-fs": "^4.2.11",
+ "jest-haste-map": "30.2.0",
+ "jest-regex-util": "30.0.1",
+ "jest-util": "30.2.0",
+ "micromatch": "^4.0.8",
+ "pirates": "^4.0.7",
+ "slash": "^3.0.0",
+ "write-file-atomic": "^5.0.1"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
},
- "binary-extensions": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.1.0.tgz",
- "integrity": "sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ==",
- "dev": true
+ "node_modules/@jest/types": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/@jest/types/-/types-30.2.0.tgz",
+ "integrity": "sha512-H9xg1/sfVvyfU7o3zMfBEjQ1gcsdeTMgqHoYdN79tuLqfTtuu7WckRA1R5whDwOzxaZAeMKTYWqP+WCAi0CHsg==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/pattern": "30.0.1",
+ "@jest/schemas": "30.0.5",
+ "@types/istanbul-lib-coverage": "^2.0.6",
+ "@types/istanbul-reports": "^3.0.4",
+ "@types/node": "*",
+ "@types/yargs": "^17.0.33",
+ "chalk": "^4.1.2"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
},
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+ "node_modules/@jridgewell/gen-mapping": {
+ "version": "0.3.13",
+ "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz",
+ "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==",
"dev": true,
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/sourcemap-codec": "^1.5.0",
+ "@jridgewell/trace-mapping": "^0.3.24"
}
},
- "braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "node_modules/@jridgewell/remapping": {
+ "version": "2.3.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz",
+ "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==",
"dev": true,
- "requires": {
- "fill-range": "^7.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/gen-mapping": "^0.3.5",
+ "@jridgewell/trace-mapping": "^0.3.24"
}
},
- "camelcase": {
- "version": "5.3.1",
- "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
- "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
- "dev": true
- },
- "chalk": {
- "version": "2.4.2",
- "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
- "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "node_modules/@jridgewell/resolve-uri": {
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz",
+ "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==",
"dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "escape-string-regexp": "^1.0.5",
- "supports-color": "^5.3.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.0.0"
}
},
- "chokidar": {
- "version": "3.4.2",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.4.2.tgz",
- "integrity": "sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A==",
+ "node_modules/@jridgewell/sourcemap-codec": {
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz",
+ "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==",
"dev": true,
- "requires": {
- "anymatch": "~3.1.1",
- "braces": "~3.0.2",
- "fsevents": "~2.1.2",
- "glob-parent": "~5.1.0",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.4.0"
- }
+ "license": "MIT"
},
- "chokidar-cli": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/chokidar-cli/-/chokidar-cli-2.1.0.tgz",
- "integrity": "sha512-6n21AVpW6ywuEPoxJcLXMA2p4T+SLjWsXKny/9yTWFz0kKxESI3eUylpeV97LylING/27T/RVTY0f2/0QaWq9Q==",
+ "node_modules/@jridgewell/trace-mapping": {
+ "version": "0.3.31",
+ "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz",
+ "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==",
"dev": true,
- "requires": {
- "chokidar": "^3.2.3",
- "lodash.debounce": "^4.0.8",
- "lodash.throttle": "^4.1.1",
- "yargs": "^13.3.0"
+ "license": "MIT",
+ "dependencies": {
+ "@jridgewell/resolve-uri": "^3.1.0",
+ "@jridgewell/sourcemap-codec": "^1.4.14"
}
},
- "clipboard": {
- "version": "2.0.8",
- "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.8.tgz",
- "integrity": "sha512-Y6WO0unAIQp5bLmk1zdThRhgJt/x3ks6f30s3oE3H1mgIEU33XyQjEf8gsf6DxC7NPX8Y1SsNWjUjL/ywLnnbQ==",
- "requires": {
- "good-listener": "^1.2.2",
- "select": "^1.1.2",
- "tiny-emitter": "^2.0.0"
+ "node_modules/@lezer/common": {
+ "version": "1.5.1",
+ "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.5.1.tgz",
+ "integrity": "sha512-6YRVG9vBkaY7p1IVxL4s44n5nUnaNnGM2/AckNgYOnxTG2kWh1vR8BMxPseWPjRNpb5VtXnMpeYAEAADoRV1Iw==",
+ "license": "MIT"
+ },
+ "node_modules/@lezer/css": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.3.1.tgz",
+ "integrity": "sha512-PYAKeUVBo3HFThruRyp/iK91SwiZJnzXh8QzkQlwijB5y+N5iB28+iLk78o2zmKqqV0uolNhCwFqB8LA7b0Svg==",
+ "license": "MIT",
+ "dependencies": {
+ "@lezer/common": "^1.2.0",
+ "@lezer/highlight": "^1.0.0",
+ "@lezer/lr": "^1.3.0"
}
},
- "cliui": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
- "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "node_modules/@lezer/generator": {
+ "version": "1.8.0",
+ "resolved": "https://registry.npmjs.org/@lezer/generator/-/generator-1.8.0.tgz",
+ "integrity": "sha512-/SF4EDWowPqV1jOgoGSGTIFsE7Ezdr7ZYxyihl5eMKVO5tlnpIhFcDavgm1hHY5GEonoOAEnJ0CU0x+tvuAuUg==",
"dev": true,
- "requires": {
- "string-width": "^3.1.0",
- "strip-ansi": "^5.2.0",
- "wrap-ansi": "^5.1.0"
+ "license": "MIT",
+ "dependencies": {
+ "@lezer/common": "^1.1.0",
+ "@lezer/lr": "^1.3.0"
+ },
+ "bin": {
+ "lezer-generator": "src/lezer-generator.cjs"
}
},
- "codemirror": {
- "version": "5.61.1",
- "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.61.1.tgz",
- "integrity": "sha512-+D1NZjAucuzE93vJGbAaXzvoBHwp9nJZWWWF9utjv25+5AZUiah6CIlfb4ikG4MoDsFsCG8niiJH5++OO2LgIQ=="
+ "node_modules/@lezer/highlight": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.3.tgz",
+ "integrity": "sha512-qXdH7UqTvGfdVBINrgKhDsVTJTxactNNxLk7+UMwZhU13lMHaOBlJe9Vqp907ya56Y3+ed2tlqzys7jDkTmW0g==",
+ "license": "MIT",
+ "dependencies": {
+ "@lezer/common": "^1.3.0"
+ }
},
- "color-convert": {
- "version": "1.9.3",
- "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
- "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
- "dev": true,
- "requires": {
- "color-name": "1.1.3"
+ "node_modules/@lezer/html": {
+ "version": "1.3.13",
+ "resolved": "https://registry.npmjs.org/@lezer/html/-/html-1.3.13.tgz",
+ "integrity": "sha512-oI7n6NJml729m7pjm9lvLvmXbdoMoi2f+1pwSDJkl9d68zGr7a9Btz8NdHTGQZtW2DA25ybeuv/SyDb9D5tseg==",
+ "license": "MIT",
+ "dependencies": {
+ "@lezer/common": "^1.2.0",
+ "@lezer/highlight": "^1.0.0",
+ "@lezer/lr": "^1.0.0"
}
},
- "color-name": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
- "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=",
- "dev": true
+ "node_modules/@lezer/javascript": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.5.4.tgz",
+ "integrity": "sha512-vvYx3MhWqeZtGPwDStM2dwgljd5smolYD2lR2UyFcHfxbBQebqx8yjmFmxtJ/E6nN6u1D9srOiVWm3Rb4tmcUA==",
+ "license": "MIT",
+ "dependencies": {
+ "@lezer/common": "^1.2.0",
+ "@lezer/highlight": "^1.1.3",
+ "@lezer/lr": "^1.3.0"
+ }
},
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
- "dev": true
+ "node_modules/@lezer/json": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@lezer/json/-/json-1.0.3.tgz",
+ "integrity": "sha512-BP9KzdF9Y35PDpv04r0VeSTKDeox5vVr3efE7eBbx3r4s3oNLfunchejZhjArmeieBH+nVOpgIiBJpEAv8ilqQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@lezer/common": "^1.2.0",
+ "@lezer/highlight": "^1.0.0",
+ "@lezer/lr": "^1.0.0"
+ }
},
- "cross-spawn": {
- "version": "6.0.5",
- "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz",
- "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==",
- "dev": true,
- "requires": {
- "nice-try": "^1.0.4",
- "path-key": "^2.0.1",
- "semver": "^5.5.0",
- "shebang-command": "^1.2.0",
- "which": "^1.2.9"
+ "node_modules/@lezer/lr": {
+ "version": "1.4.8",
+ "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.4.8.tgz",
+ "integrity": "sha512-bPWa0Pgx69ylNlMlPvBPryqeLYQjyJjqPx+Aupm5zydLIF3NE+6MMLT8Yi23Bd9cif9VS00aUebn+6fDIGBcDA==",
+ "license": "MIT",
+ "dependencies": {
+ "@lezer/common": "^1.0.0"
}
},
- "decamelize": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
- "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=",
- "dev": true
- },
- "define-properties": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz",
- "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==",
- "dev": true,
- "requires": {
- "object-keys": "^1.0.12"
+ "node_modules/@lezer/markdown": {
+ "version": "1.6.3",
+ "resolved": "https://registry.npmjs.org/@lezer/markdown/-/markdown-1.6.3.tgz",
+ "integrity": "sha512-jpGm5Ps+XErS+xA4urw7ogEGkeZOahVQF21Z6oECF0sj+2liwZopd2+I8uH5I/vZsRuuze3OxBREIANLf6KKUw==",
+ "license": "MIT",
+ "dependencies": {
+ "@lezer/common": "^1.5.0",
+ "@lezer/highlight": "^1.0.0"
}
},
- "delegate": {
- "version": "3.2.0",
- "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz",
- "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw=="
+ "node_modules/@lezer/php": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/@lezer/php/-/php-1.0.5.tgz",
+ "integrity": "sha512-W7asp9DhM6q0W6DYNwIkLSKOvxlXRrif+UXBMxzsJUuqmhE7oVU+gS3THO4S/Puh7Xzgm858UNaFi6dxTP8dJA==",
+ "license": "MIT",
+ "dependencies": {
+ "@lezer/common": "^1.2.0",
+ "@lezer/highlight": "^1.0.0",
+ "@lezer/lr": "^1.1.0"
+ }
},
- "dropzone": {
- "version": "5.9.2",
- "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.9.2.tgz",
- "integrity": "sha512-5t2z51DzIsWDbTpwcJIvUlwxBbvcwdCApz0yb9ecKJwG155Xm92KMEZmHW1B0MzoXOKvFwdd0nPu5cpeVcvPHQ=="
+ "node_modules/@lezer/xml": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/@lezer/xml/-/xml-1.0.6.tgz",
+ "integrity": "sha512-CdDwirL0OEaStFue/66ZmFSeppuL6Dwjlk8qk153mSQwiSH/Dlri4GNymrNWnUmPl2Um7QfV1FO9KFUyX3Twww==",
+ "license": "MIT",
+ "dependencies": {
+ "@lezer/common": "^1.2.0",
+ "@lezer/highlight": "^1.0.0",
+ "@lezer/lr": "^1.0.0"
+ }
},
- "emoji-regex": {
- "version": "7.0.3",
- "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
- "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
- "dev": true
+ "node_modules/@marijn/find-cluster-break": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/@marijn/find-cluster-break/-/find-cluster-break-1.0.2.tgz",
+ "integrity": "sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==",
+ "license": "MIT"
},
- "entities": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz",
- "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w=="
+ "node_modules/@napi-rs/wasm-runtime": {
+ "version": "0.2.12",
+ "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.12.tgz",
+ "integrity": "sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@emnapi/core": "^1.4.3",
+ "@emnapi/runtime": "^1.4.3",
+ "@tybys/wasm-util": "^0.10.0"
+ }
},
- "error-ex": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
- "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
+ "node_modules/@parcel/watcher": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.6.tgz",
+ "integrity": "sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==",
"dev": true,
- "requires": {
- "is-arrayish": "^0.2.1"
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "detect-libc": "^2.0.3",
+ "is-glob": "^4.0.3",
+ "node-addon-api": "^7.0.0",
+ "picomatch": "^4.0.3"
+ },
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher-android-arm64": "2.5.6",
+ "@parcel/watcher-darwin-arm64": "2.5.6",
+ "@parcel/watcher-darwin-x64": "2.5.6",
+ "@parcel/watcher-freebsd-x64": "2.5.6",
+ "@parcel/watcher-linux-arm-glibc": "2.5.6",
+ "@parcel/watcher-linux-arm-musl": "2.5.6",
+ "@parcel/watcher-linux-arm64-glibc": "2.5.6",
+ "@parcel/watcher-linux-arm64-musl": "2.5.6",
+ "@parcel/watcher-linux-x64-glibc": "2.5.6",
+ "@parcel/watcher-linux-x64-musl": "2.5.6",
+ "@parcel/watcher-win32-arm64": "2.5.6",
+ "@parcel/watcher-win32-ia32": "2.5.6",
+ "@parcel/watcher-win32-x64": "2.5.6"
+ }
+ },
+ "node_modules/@parcel/watcher-android-arm64": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.6.tgz",
+ "integrity": "sha512-YQxSS34tPF/6ZG7r/Ih9xy+kP/WwediEUsqmtf0cuCV5TPPKw/PQHRhueUo6JdeFJaqV3pyjm0GdYjZotbRt/A==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "es-abstract": {
- "version": "1.17.6",
- "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.6.tgz",
- "integrity": "sha512-Fr89bON3WFyUi5EvAeI48QTWX0AyekGgLA8H+c+7fbfCkJwRWRMLd8CQedNEyJuoYYhmtEqY92pgte1FAhBlhw==",
+ "node_modules/@parcel/watcher-darwin-arm64": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.6.tgz",
+ "integrity": "sha512-Z2ZdrnwyXvvvdtRHLmM4knydIdU9adO3D4n/0cVipF3rRiwP+3/sfzpAwA/qKFL6i1ModaabkU7IbpeMBgiVEA==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "requires": {
- "es-to-primitive": "^1.2.1",
- "function-bind": "^1.1.1",
- "has": "^1.0.3",
- "has-symbols": "^1.0.1",
- "is-callable": "^1.2.0",
- "is-regex": "^1.1.0",
- "object-inspect": "^1.7.0",
- "object-keys": "^1.1.1",
- "object.assign": "^4.1.0",
- "string.prototype.trimend": "^1.0.1",
- "string.prototype.trimstart": "^1.0.1"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "es-to-primitive": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz",
- "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==",
+ "node_modules/@parcel/watcher-darwin-x64": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.6.tgz",
+ "integrity": "sha512-HgvOf3W9dhithcwOWX9uDZyn1lW9R+7tPZ4sug+NGrGIo4Rk1hAXLEbcH1TQSqxts0NYXXlOWqVpvS1SFS4fRg==",
+ "cpu": [
+ "x64"
+ ],
"dev": true,
- "requires": {
- "is-callable": "^1.1.4",
- "is-date-object": "^1.0.1",
- "is-symbol": "^1.0.2"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "esbuild": {
- "version": "0.12.8",
- "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.12.8.tgz",
- "integrity": "sha512-sx/LwlP/SWTGsd9G4RlOPrXnIihAJ2xwBUmzoqe2nWwbXORMQWtAGNJNYLBJJqa3e9PWvVzxdrtyFZJcr7D87g==",
- "dev": true
+ "node_modules/@parcel/watcher-freebsd-x64": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.6.tgz",
+ "integrity": "sha512-vJVi8yd/qzJxEKHkeemh7w3YAn6RJCtYlE4HPMoVnCpIXEzSrxErBW5SJBgKLbXU3WdIpkjBTeUNtyBVn8TRng==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
},
- "escape-string-regexp": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
- "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=",
- "dev": true
+ "node_modules/@parcel/watcher-linux-arm-glibc": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.6.tgz",
+ "integrity": "sha512-9JiYfB6h6BgV50CCfasfLf/uvOcJskMSwcdH1PHH9rvS1IrNy8zad6IUVPVUfmXr+u+Km9IxcfMLzgdOudz9EQ==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
},
- "fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "node_modules/@parcel/watcher-linux-arm-musl": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.6.tgz",
+ "integrity": "sha512-Ve3gUCG57nuUUSyjBq/MAM0CzArtuIOxsBdQ+ftz6ho8n7s1i9E1Nmk/xmP323r2YL0SONs1EuwqBp2u1k5fxg==",
+ "cpu": [
+ "arm"
+ ],
"dev": true,
- "requires": {
- "to-regex-range": "^5.0.1"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "find-up": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
- "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "node_modules/@parcel/watcher-linux-arm64-glibc": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.6.tgz",
+ "integrity": "sha512-f2g/DT3NhGPdBmMWYoxixqYr3v/UXcmLOYy16Bx0TM20Tchduwr4EaCbmxh1321TABqPGDpS8D/ggOTaljijOA==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "requires": {
- "locate-path": "^3.0.0"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "fsevents": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz",
- "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==",
+ "node_modules/@parcel/watcher-linux-arm64-musl": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.6.tgz",
+ "integrity": "sha512-qb6naMDGlbCwdhLj6hgoVKJl2odL34z2sqkC7Z6kzir8b5W65WYDpLB6R06KabvZdgoHI/zxke4b3zR0wAbDTA==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "optional": true
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
},
- "function-bind": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",
- "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==",
- "dev": true
+ "node_modules/@parcel/watcher-linux-x64-glibc": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.6.tgz",
+ "integrity": "sha512-kbT5wvNQlx7NaGjzPFu8nVIW1rWqV780O7ZtkjuWaPUgpv2NMFpjYERVi0UYj1msZNyCzGlaCWEtzc+exjMGbQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
},
- "get-caller-file": {
- "version": "2.0.5",
- "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
- "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
- "dev": true
+ "node_modules/@parcel/watcher-linux-x64-musl": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.6.tgz",
+ "integrity": "sha512-1JRFeC+h7RdXwldHzTsmdtYR/Ku8SylLgTU/reMuqdVD7CtLwf0VR1FqeprZ0eHQkO0vqsbvFLXUmYm/uNKJBg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
},
- "glob-parent": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
- "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "node_modules/@parcel/watcher-win32-arm64": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.6.tgz",
+ "integrity": "sha512-3ukyebjc6eGlw9yRt678DxVF7rjXatWiHvTXqphZLvo7aC5NdEgFufVwjFfY51ijYEWpXbqF5jtrK275z52D4Q==",
+ "cpu": [
+ "arm64"
+ ],
"dev": true,
- "requires": {
- "is-glob": "^4.0.1"
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "good-listener": {
- "version": "1.2.2",
- "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz",
- "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=",
- "requires": {
- "delegate": "^3.1.2"
+ "node_modules/@parcel/watcher-win32-ia32": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.6.tgz",
+ "integrity": "sha512-k35yLp1ZMwwee3Ez/pxBi5cf4AoBKYXj00CZ80jUz5h8prpiaQsiRPKQMxoLstNuqe2vR4RNPEAEcjEFzhEz/g==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
}
},
- "graceful-fs": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
- "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
- "dev": true
+ "node_modules/@parcel/watcher-win32-x64": {
+ "version": "2.5.6",
+ "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.6.tgz",
+ "integrity": "sha512-hbQlYcCq5dlAX9Qx+kFb0FHue6vbjlf0FrNzSKdYK2APUf7tGfGxQCk2ihEREmbR6ZMc0MVAD5RIX/41gpUzTw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 10.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
},
- "has": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz",
- "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==",
+ "node_modules/@parcel/watcher/node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"dev": true,
- "requires": {
- "function-bind": "^1.1.1"
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
}
},
- "has-flag": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
- "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=",
- "dev": true
+ "node_modules/@pkgjs/parseargs": {
+ "version": "0.11.0",
+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",
+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "engines": {
+ "node": ">=14"
+ }
},
- "has-symbols": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz",
- "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==",
- "dev": true
+ "node_modules/@pkgr/core": {
+ "version": "0.2.9",
+ "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.2.9.tgz",
+ "integrity": "sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/pkgr"
+ }
},
- "hosted-git-info": {
- "version": "2.8.9",
- "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
- "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
- "dev": true
+ "node_modules/@sinclair/typebox": {
+ "version": "0.34.48",
+ "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.48.tgz",
+ "integrity": "sha512-kKJTNuK3AQOrgjjotVxMrCn1sUJwM76wMszfq1kdU4uYVJjvEWuFQ6HgvLt4Xz3fSmZlTOxJ/Ie13KnIcWQXFA==",
+ "license": "MIT"
},
- "is-arrayish": {
- "version": "0.2.1",
- "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
- "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=",
- "dev": true
+ "node_modules/@sinonjs/commons": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz",
+ "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "type-detect": "4.0.8"
+ }
},
- "is-binary-path": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
- "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "node_modules/@sinonjs/fake-timers": {
+ "version": "13.0.5",
+ "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz",
+ "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==",
"dev": true,
- "requires": {
- "binary-extensions": "^2.0.0"
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@sinonjs/commons": "^3.0.1"
}
},
- "is-callable": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.0.tgz",
- "integrity": "sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw==",
- "dev": true
+ "node_modules/@ssddanbrown/codemirror-lang-smarty": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@ssddanbrown/codemirror-lang-smarty/-/codemirror-lang-smarty-1.0.0.tgz",
+ "integrity": "sha512-F0ut1kmdbT3eORk3xVIKfQsGCZiQdh+6sLayBa0+FTex2gyIQlVQZRRA7bPSlchI3uZtWwNnqGNz5O/QLWRlFg==",
+ "license": "MIT"
},
- "is-date-object": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz",
- "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==",
- "dev": true
+ "node_modules/@ssddanbrown/codemirror-lang-twig": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/@ssddanbrown/codemirror-lang-twig/-/codemirror-lang-twig-1.0.0.tgz",
+ "integrity": "sha512-7WIMIh8Ssc54TooGCY57WU2rKEqZZrcV2tZSVRPtd0gKYsrDEKCSLWpQjUWEx7bdgh3NKHUjq1O4ugIzI/+dwQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@codemirror/language": "^6.0.0",
+ "@lezer/highlight": "^1.0.0",
+ "@lezer/lr": "^1.0.0"
+ }
},
- "is-extglob": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
- "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=",
- "dev": true
+ "node_modules/@tsconfig/node10": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.12.tgz",
+ "integrity": "sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==",
+ "dev": true,
+ "license": "MIT"
},
- "is-fullwidth-code-point": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
- "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=",
- "dev": true
+ "node_modules/@tsconfig/node12": {
+ "version": "1.0.11",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz",
+ "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==",
+ "dev": true,
+ "license": "MIT"
},
- "is-glob": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz",
- "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==",
+ "node_modules/@tsconfig/node14": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz",
+ "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==",
"dev": true,
- "requires": {
- "is-extglob": "^2.1.1"
- }
+ "license": "MIT"
},
- "is-number": {
- "version": "7.0.0",
- "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
- "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
- "dev": true
+ "node_modules/@tsconfig/node16": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz",
+ "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==",
+ "dev": true,
+ "license": "MIT"
},
- "is-regex": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz",
- "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==",
+ "node_modules/@tybys/wasm-util": {
+ "version": "0.10.1",
+ "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.1.tgz",
+ "integrity": "sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==",
"dev": true,
- "requires": {
- "has-symbols": "^1.0.1"
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "tslib": "^2.4.0"
}
},
- "is-symbol": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz",
- "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==",
+ "node_modules/@types/babel__core": {
+ "version": "7.20.5",
+ "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz",
+ "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==",
"dev": true,
- "requires": {
- "has-symbols": "^1.0.1"
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.20.7",
+ "@babel/types": "^7.20.7",
+ "@types/babel__generator": "*",
+ "@types/babel__template": "*",
+ "@types/babel__traverse": "*"
}
},
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "dev": true
- },
- "json-parse-better-errors": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
- "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
- "dev": true
- },
- "linkify-it": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.2.tgz",
- "integrity": "sha512-gDBO4aHNZS6coiZCKVhSNh43F9ioIL4JwRjLZPkoLIY4yZFwg264Y5lu2x6rb1Js42Gh6Yqm2f6L2AJcnkzinQ==",
- "requires": {
- "uc.micro": "^1.0.1"
- }
- },
- "livereload": {
- "version": "0.9.3",
- "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.3.tgz",
- "integrity": "sha512-q7Z71n3i4X0R9xthAryBdNGVGAO2R5X+/xXpmKeuPMrteg+W2U8VusTKV3YiJbXZwKsOlFlHe+go6uSNjfxrZw==",
- "dev": true,
- "requires": {
- "chokidar": "^3.5.0",
- "livereload-js": "^3.3.1",
- "opts": ">= 1.2.0",
- "ws": "^7.4.3"
- },
- "dependencies": {
- "chokidar": {
- "version": "3.5.1",
- "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz",
- "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==",
- "dev": true,
- "requires": {
- "anymatch": "~3.1.1",
- "braces": "~3.0.2",
- "fsevents": "~2.3.1",
- "glob-parent": "~5.1.0",
- "is-binary-path": "~2.1.0",
- "is-glob": "~4.0.1",
- "normalize-path": "~3.0.0",
- "readdirp": "~3.5.0"
- }
- },
- "fsevents": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
- "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
- "dev": true,
- "optional": true
- },
- "readdirp": {
- "version": "3.5.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz",
- "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==",
- "dev": true,
- "requires": {
- "picomatch": "^2.2.1"
- }
- }
+ "node_modules/@types/babel__generator": {
+ "version": "7.27.0",
+ "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz",
+ "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.0.0"
}
},
- "livereload-js": {
- "version": "3.3.2",
- "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.3.2.tgz",
- "integrity": "sha512-w677WnINxFkuixAoUEXOStewzLYGI76XVag+0JWMMEyjJQKs0ibWZMxkTlB96Lm3EjZ7IeOxVziBEbtxVQqQZA==",
- "dev": true
- },
- "load-json-file": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
- "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=",
+ "node_modules/@types/babel__template": {
+ "version": "7.4.4",
+ "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz",
+ "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==",
"dev": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "parse-json": "^4.0.0",
- "pify": "^3.0.0",
- "strip-bom": "^3.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "@babel/parser": "^7.1.0",
+ "@babel/types": "^7.0.0"
}
},
- "locate-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
- "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "node_modules/@types/babel__traverse": {
+ "version": "7.28.0",
+ "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz",
+ "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==",
"dev": true,
- "requires": {
- "p-locate": "^3.0.0",
- "path-exists": "^3.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "@babel/types": "^7.28.2"
}
},
- "lodash.debounce": {
- "version": "4.0.8",
- "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
- "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=",
- "dev": true
+ "node_modules/@types/esrecurse": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz",
+ "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==",
+ "dev": true,
+ "license": "MIT"
},
- "lodash.throttle": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
- "integrity": "sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ=",
- "dev": true
- },
- "markdown-it": {
- "version": "12.0.6",
- "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.0.6.tgz",
- "integrity": "sha512-qv3sVLl4lMT96LLtR7xeRJX11OUFjsaD5oVat2/SNBIb21bJXwal2+SklcRbTwGwqWpWH/HRtYavOoJE+seL8w==",
- "requires": {
- "argparse": "^2.0.1",
- "entities": "~2.1.0",
- "linkify-it": "^3.0.1",
- "mdurl": "^1.0.1",
- "uc.micro": "^1.0.5"
- }
+ "node_modules/@types/estree": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz",
+ "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/istanbul-lib-coverage": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz",
+ "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==",
+ "license": "MIT"
+ },
+ "node_modules/@types/istanbul-lib-report": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz",
+ "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-coverage": "*"
+ }
+ },
+ "node_modules/@types/istanbul-reports": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz",
+ "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/istanbul-lib-report": "*"
+ }
+ },
+ "node_modules/@types/jest": {
+ "version": "30.0.0",
+ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-30.0.0.tgz",
+ "integrity": "sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==",
+ "license": "MIT",
+ "dependencies": {
+ "expect": "^30.0.0",
+ "pretty-format": "^30.0.0"
+ }
+ },
+ "node_modules/@types/jsdom": {
+ "version": "21.1.7",
+ "resolved": "https://registry.npmjs.org/@types/jsdom/-/jsdom-21.1.7.tgz",
+ "integrity": "sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "@types/tough-cookie": "*",
+ "parse5": "^7.0.0"
+ }
+ },
+ "node_modules/@types/json-schema": {
+ "version": "7.0.15",
+ "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
+ "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/linkify-it": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz",
+ "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/markdown-it": {
+ "version": "14.1.2",
+ "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz",
+ "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/linkify-it": "^5",
+ "@types/mdurl": "^2"
+ }
+ },
+ "node_modules/@types/mdurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz",
+ "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/node": {
+ "version": "25.3.5",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-25.3.5.tgz",
+ "integrity": "sha512-oX8xrhvpiyRCQkG1MFchB09f+cXftgIXb3a7UUa4Y3wpmZPw5tyZGTLWhlESOLq1Rq6oDlc8npVU2/9xiCuXMA==",
+ "license": "MIT",
+ "dependencies": {
+ "undici-types": "~7.18.0"
+ }
+ },
+ "node_modules/@types/sortablejs": {
+ "version": "1.15.9",
+ "resolved": "https://registry.npmjs.org/@types/sortablejs/-/sortablejs-1.15.9.tgz",
+ "integrity": "sha512-7HP+rZGE2p886PKV9c9OJzLBI6BBJu1O7lJGYnPyG3fS4/duUCcngkNCjsLwIMV+WMqANe3tt4irrXHSIe68OQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/stack-utils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz",
+ "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==",
+ "license": "MIT"
+ },
+ "node_modules/@types/tough-cookie": {
+ "version": "4.0.5",
+ "resolved": "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.5.tgz",
+ "integrity": "sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@types/yargs": {
+ "version": "17.0.35",
+ "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.35.tgz",
+ "integrity": "sha512-qUHkeCyQFxMXg79wQfTtfndEC+N9ZZg76HJftDJp+qH2tV7Gj4OJi7l+PiWwJ+pWtW8GwSmqsDj/oymhrTWXjg==",
+ "license": "MIT",
+ "dependencies": {
+ "@types/yargs-parser": "*"
+ }
+ },
+ "node_modules/@types/yargs-parser": {
+ "version": "21.0.3",
+ "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz",
+ "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==",
+ "license": "MIT"
+ },
+ "node_modules/@ungap/structured-clone": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz",
+ "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/@unrs/resolver-binding-android-arm-eabi": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.11.1.tgz",
+ "integrity": "sha512-ppLRUgHVaGRWUx0R0Ut06Mjo9gBaBkg3v/8AxusGLhsIotbBLuRk51rAzqLC8gq6NyyAojEXglNjzf6R948DNw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-android-arm64": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.11.1.tgz",
+ "integrity": "sha512-lCxkVtb4wp1v+EoN+HjIG9cIIzPkX5OtM03pQYkG+U5O/wL53LC4QbIeazgiKqluGeVEeBlZahHalCaBvU1a2g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "android"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-darwin-arm64": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.11.1.tgz",
+ "integrity": "sha512-gPVA1UjRu1Y/IsB/dQEsp2V1pm44Of6+LWvbLc9SDk1c2KhhDRDBUkQCYVWe6f26uJb3fOK8saWMgtX8IrMk3g==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-darwin-x64": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.11.1.tgz",
+ "integrity": "sha512-cFzP7rWKd3lZaCsDze07QX1SC24lO8mPty9vdP+YVa3MGdVgPmFc59317b2ioXtgCMKGiCLxJ4HQs62oz6GfRQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-freebsd-x64": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.11.1.tgz",
+ "integrity": "sha512-fqtGgak3zX4DCB6PFpsH5+Kmt/8CIi4Bry4rb1ho6Av2QHTREM+47y282Uqiu3ZRF5IQioJQ5qWRV6jduA+iGw==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "freebsd"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.11.1.tgz",
+ "integrity": "sha512-u92mvlcYtp9MRKmP+ZvMmtPN34+/3lMHlyMj7wXJDeXxuM0Vgzz0+PPJNsro1m3IZPYChIkn944wW8TYgGKFHw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.11.1.tgz",
+ "integrity": "sha512-cINaoY2z7LVCrfHkIcmvj7osTOtm6VVT16b5oQdS4beibX2SYBwgYLmqhBjA1t51CarSaBuX5YNsWLjsqfW5Cw==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-arm64-gnu": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.11.1.tgz",
+ "integrity": "sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-arm64-musl": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.11.1.tgz",
+ "integrity": "sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.11.1.tgz",
+ "integrity": "sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==",
+ "cpu": [
+ "ppc64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.11.1.tgz",
+ "integrity": "sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-riscv64-musl": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.11.1.tgz",
+ "integrity": "sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==",
+ "cpu": [
+ "riscv64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-s390x-gnu": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.11.1.tgz",
+ "integrity": "sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==",
+ "cpu": [
+ "s390x"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-x64-gnu": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.11.1.tgz",
+ "integrity": "sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-linux-x64-musl": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.11.1.tgz",
+ "integrity": "sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "linux"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-wasm32-wasi": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.11.1.tgz",
+ "integrity": "sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==",
+ "cpu": [
+ "wasm32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "dependencies": {
+ "@napi-rs/wasm-runtime": "^0.2.11"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ }
+ },
+ "node_modules/@unrs/resolver-binding-win32-arm64-msvc": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.11.1.tgz",
+ "integrity": "sha512-nRcz5Il4ln0kMhfL8S3hLkxI85BXs3o8EYoattsJNdsX4YUU89iOkVn7g0VHSRxFuVMdM4Q1jEpIId1Ihim/Uw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-win32-ia32-msvc": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.11.1.tgz",
+ "integrity": "sha512-DCEI6t5i1NmAZp6pFonpD5m7i6aFrpofcp4LA2i8IIq60Jyo28hamKBxNrZcyOwVOZkgsRp9O2sXWBWP8MnvIQ==",
+ "cpu": [
+ "ia32"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/@unrs/resolver-binding-win32-x64-msvc": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.11.1.tgz",
+ "integrity": "sha512-lrW200hZdbfRtztbygyaq/6jP6AKE8qQN2KvPcJ+x7wiD038YtnYtZ82IMNJ69GJibV7bwL3y9FgK+5w/pYt6g==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "win32"
+ ]
+ },
+ "node_modules/acorn": {
+ "version": "8.16.0",
+ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz",
+ "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "acorn": "bin/acorn"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/acorn-jsx": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
+ "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
+ }
+ },
+ "node_modules/acorn-walk": {
+ "version": "8.3.5",
+ "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz",
+ "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "acorn": "^8.11.0"
+ },
+ "engines": {
+ "node": ">=0.4.0"
+ }
+ },
+ "node_modules/agent-base": {
+ "version": "7.1.4",
+ "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz",
+ "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/ajv": {
+ "version": "6.14.0",
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz",
+ "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-deep-equal": "^3.1.1",
+ "fast-json-stable-stringify": "^2.0.0",
+ "json-schema-traverse": "^0.4.1",
+ "uri-js": "^4.2.2"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/epoberezkin"
+ }
+ },
+ "node_modules/ansi-escapes": {
+ "version": "4.3.2",
+ "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz",
+ "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "type-fest": "^0.21.3"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/ansi-regex": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz",
+ "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"
+ }
+ },
+ "node_modules/ansi-styles": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",
+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^2.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/anymatch": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",
+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "normalize-path": "^3.0.0",
+ "picomatch": "^2.0.4"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/arg": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz",
+ "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/argparse": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+ "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "sprintf-js": "~1.0.2"
+ }
+ },
+ "node_modules/array-buffer-byte-length": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz",
+ "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "is-array-buffer": "^3.0.5"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/arraybuffer.prototype.slice": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz",
+ "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.1",
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "is-array-buffer": "^3.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/async-function": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz",
+ "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/available-typed-arrays": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz",
+ "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "possible-typed-array-names": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/babel-jest": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-30.2.0.tgz",
+ "integrity": "sha512-0YiBEOxWqKkSQWL9nNGGEgndoeL0ZpWrbLMNL5u/Kaxrli3Eaxlt3ZtIDktEvXt4L/R9r3ODr2zKwGM/2BjxVw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/transform": "30.2.0",
+ "@types/babel__core": "^7.20.5",
+ "babel-plugin-istanbul": "^7.0.1",
+ "babel-preset-jest": "30.2.0",
+ "chalk": "^4.1.2",
+ "graceful-fs": "^4.2.11",
+ "slash": "^3.0.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.11.0 || ^8.0.0-0"
+ }
+ },
+ "node_modules/babel-plugin-istanbul": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-7.0.1.tgz",
+ "integrity": "sha512-D8Z6Qm8jCvVXtIRkBnqNHX0zJ37rQcFJ9u8WOS6tkYOsRdHBzypCstaxWiu5ZIlqQtviRYbgnRLSoCEvjqcqbA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "workspaces": [
+ "test/babel-8"
+ ],
+ "dependencies": {
+ "@babel/helper-plugin-utils": "^7.0.0",
+ "@istanbuljs/load-nyc-config": "^1.0.0",
+ "@istanbuljs/schema": "^0.1.3",
+ "istanbul-lib-instrument": "^6.0.2",
+ "test-exclude": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/babel-plugin-jest-hoist": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-30.2.0.tgz",
+ "integrity": "sha512-ftzhzSGMUnOzcCXd6WHdBGMyuwy15Wnn0iyyWGKgBDLxf9/s5ABuraCSpBX2uG0jUg4rqJnxsLc5+oYBqoxVaA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/babel__core": "^7.20.5"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/babel-preset-current-node-syntax": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.2.0.tgz",
+ "integrity": "sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/plugin-syntax-async-generators": "^7.8.4",
+ "@babel/plugin-syntax-bigint": "^7.8.3",
+ "@babel/plugin-syntax-class-properties": "^7.12.13",
+ "@babel/plugin-syntax-class-static-block": "^7.14.5",
+ "@babel/plugin-syntax-import-attributes": "^7.24.7",
+ "@babel/plugin-syntax-import-meta": "^7.10.4",
+ "@babel/plugin-syntax-json-strings": "^7.8.3",
+ "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4",
+ "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3",
+ "@babel/plugin-syntax-numeric-separator": "^7.10.4",
+ "@babel/plugin-syntax-object-rest-spread": "^7.8.3",
+ "@babel/plugin-syntax-optional-catch-binding": "^7.8.3",
+ "@babel/plugin-syntax-optional-chaining": "^7.8.3",
+ "@babel/plugin-syntax-private-property-in-object": "^7.14.5",
+ "@babel/plugin-syntax-top-level-await": "^7.14.5"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.0.0 || ^8.0.0-0"
+ }
+ },
+ "node_modules/babel-preset-jest": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-30.2.0.tgz",
+ "integrity": "sha512-US4Z3NOieAQumwFnYdUWKvUKh8+YSnS/gB3t6YBiz0bskpu7Pine8pPCheNxlPEW4wnUkma2a94YuW2q3guvCQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "babel-plugin-jest-hoist": "30.2.0",
+ "babel-preset-current-node-syntax": "^1.2.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": "^7.11.0 || ^8.0.0-beta.1"
+ }
+ },
+ "node_modules/balanced-match": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
+ "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/baseline-browser-mapping": {
+ "version": "2.10.0",
+ "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.0.tgz",
+ "integrity": "sha512-lIyg0szRfYbiy67j9KN8IyeD7q7hcmqnJ1ddWmNt19ItGpNN64mnllmxUNFIOdOm6by97jlL6wfpTTJrmnjWAA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "bin": {
+ "baseline-browser-mapping": "dist/cli.cjs"
+ },
+ "engines": {
+ "node": ">=6.0.0"
+ }
+ },
+ "node_modules/binary-extensions": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",
+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/brace-expansion": {
+ "version": "5.0.4",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.4.tgz",
+ "integrity": "sha512-h+DEnpVvxmfVefa4jFbCf5HdH5YMDXRsmKflpf1pILZWRFlTbJpxeU55nJl4Smt5HQaGzg1o6RHFPJaOqnmBDg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^4.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ }
+ },
+ "node_modules/braces": {
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
+ "license": "MIT",
+ "dependencies": {
+ "fill-range": "^7.1.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/browserslist": {
+ "version": "4.28.1",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.1.tgz",
+ "integrity": "sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "baseline-browser-mapping": "^2.9.0",
+ "caniuse-lite": "^1.0.30001759",
+ "electron-to-chromium": "^1.5.263",
+ "node-releases": "^2.0.27",
+ "update-browserslist-db": "^1.2.0"
+ },
+ "bin": {
+ "browserslist": "cli.js"
+ },
+ "engines": {
+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"
+ }
+ },
+ "node_modules/bs-logger": {
+ "version": "0.2.6",
+ "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz",
+ "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "fast-json-stable-stringify": "2.x"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/bser": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz",
+ "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "node-int64": "^0.4.0"
+ }
+ },
+ "node_modules/buffer-from": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz",
+ "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/call-bind": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz",
+ "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.0",
+ "es-define-property": "^1.0.0",
+ "get-intrinsic": "^1.2.4",
+ "set-function-length": "^1.2.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/call-bind-apply-helpers": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
+ "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/call-bound": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz",
+ "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "get-intrinsic": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/callsites": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
+ "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/camelcase": {
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz",
+ "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/caniuse-lite": {
+ "version": "1.0.30001777",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001777.tgz",
+ "integrity": "sha512-tmN+fJxroPndC74efCdp12j+0rk0RHwV5Jwa1zWaFVyw2ZxAuPeG8ZgWC3Wz7uSjT3qMRQ5XHZ4COgQmsCMJAQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "CC-BY-4.0"
+ },
+ "node_modules/chalk": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz",
+ "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==",
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.1.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/chalk?sponsor=1"
+ }
+ },
+ "node_modules/char-regex": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz",
+ "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/chokidar": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",
+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "anymatch": "~3.1.2",
+ "braces": "~3.0.2",
+ "glob-parent": "~5.1.2",
+ "is-binary-path": "~2.1.0",
+ "is-glob": "~4.0.1",
+ "normalize-path": "~3.0.0",
+ "readdirp": "~3.6.0"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ },
+ "optionalDependencies": {
+ "fsevents": "~2.3.2"
+ }
+ },
+ "node_modules/chokidar-cli": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/chokidar-cli/-/chokidar-cli-3.0.0.tgz",
+ "integrity": "sha512-xVW+Qeh7z15uZRxHOkP93Ux8A0xbPzwK4GaqD8dQOYc34TlkqUhVSS59fK36DOp5WdJlrRzlYSy02Ht99FjZqQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chokidar": "^3.5.2",
+ "lodash.debounce": "^4.0.8",
+ "lodash.throttle": "^4.1.1",
+ "yargs": "^13.3.0"
+ },
+ "bin": {
+ "chokidar": "index.js"
+ },
+ "engines": {
+ "node": ">= 8.10.0"
+ }
+ },
+ "node_modules/ci-info": {
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz",
+ "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==",
+ "funding": [
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/sibiraj-s"
+ }
+ ],
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/cjs-module-lexer": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-2.2.0.tgz",
+ "integrity": "sha512-4bHTS2YuzUvtoLjdy+98ykbNB5jS0+07EvFNXerqZQJ89F7DI6ET7OQo/HJuW6K0aVsKA9hj9/RVb2kQVOrPDQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cliui": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz",
+ "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^3.1.0",
+ "strip-ansi": "^5.2.0",
+ "wrap-ansi": "^5.1.0"
+ }
+ },
+ "node_modules/cliui/node_modules/ansi-regex": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/cliui/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cliui/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/cliui/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cliui/node_modules/emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/cliui/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/cliui/node_modules/string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/cliui/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/cliui/node_modules/wrap-ansi": {
+ "version": "5.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
+ "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.2.0",
+ "string-width": "^3.0.0",
+ "strip-ansi": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/co": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz",
+ "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "iojs": ">= 1.0.0",
+ "node": ">= 0.12.0"
+ }
+ },
+ "node_modules/codemirror": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-6.0.2.tgz",
+ "integrity": "sha512-VhydHotNW5w1UGK0Qj96BwSk/Zqbp9WbnyK2W/eVMv4QyF41INRGpjUhFJY7/uDNuudSc33a/PKr4iDqRduvHw==",
+ "license": "MIT",
+ "dependencies": {
+ "@codemirror/autocomplete": "^6.0.0",
+ "@codemirror/commands": "^6.0.0",
+ "@codemirror/language": "^6.0.0",
+ "@codemirror/lint": "^6.0.0",
+ "@codemirror/search": "^6.0.0",
+ "@codemirror/state": "^6.0.0",
+ "@codemirror/view": "^6.0.0"
+ }
+ },
+ "node_modules/collect-v8-coverage": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.3.tgz",
+ "integrity": "sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/color-convert": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "~1.1.4"
+ },
+ "engines": {
+ "node": ">=7.0.0"
+ }
+ },
+ "node_modules/color-name": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+ "license": "MIT"
+ },
+ "node_modules/concat-map": {
+ "version": "0.0.1",
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+ "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/convert-source-map": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz",
+ "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/create-require": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz",
+ "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/crelt": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/crelt/-/crelt-1.0.6.tgz",
+ "integrity": "sha512-VQ2MBenTq1fWZUH9DJNGti7kKv6EeAuYr3cLwxUWhIu1baTaXh4Ib5W2CqHVqib4/MqbYGJqiL3Zb8GJZr3l4g==",
+ "license": "MIT"
+ },
+ "node_modules/cross-spawn": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz",
+ "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.1.0",
+ "shebang-command": "^2.0.0",
+ "which": "^2.0.1"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/cssstyle": {
+ "version": "4.6.0",
+ "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-4.6.0.tgz",
+ "integrity": "sha512-2z+rWdzbbSZv6/rhtvzvqeZQHrBaqgogqt85sqFNbabZOuFbCVFb8kPeEtZjiKkbrm395irpNKiYeFeLiQnFPg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@asamuzakjp/css-color": "^3.2.0",
+ "rrweb-cssom": "^0.8.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/data-urls": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-5.0.0.tgz",
+ "integrity": "sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-mimetype": "^4.0.0",
+ "whatwg-url": "^14.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/data-view-buffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz",
+ "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/data-view-byte-length": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz",
+ "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/inspect-js"
+ }
+ },
+ "node_modules/data-view-byte-offset": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz",
+ "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "is-data-view": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/debug": {
+ "version": "4.4.3",
+ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz",
+ "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ms": "^2.1.3"
+ },
+ "engines": {
+ "node": ">=6.0"
+ },
+ "peerDependenciesMeta": {
+ "supports-color": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/decamelize": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz",
+ "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/decimal.js": {
+ "version": "10.6.0",
+ "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.6.0.tgz",
+ "integrity": "sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/dedent": {
+ "version": "1.7.2",
+ "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.7.2.tgz",
+ "integrity": "sha512-WzMx3mW98SN+zn3hgemf4OzdmyNhhhKz5Ay0pUfQiMQ3e1g+xmTJWp/pKdwKVXhdSkAEGIIzqeuWrL3mV/AXbA==",
+ "dev": true,
+ "license": "MIT",
+ "peerDependencies": {
+ "babel-plugin-macros": "^3.1.0"
+ },
+ "peerDependenciesMeta": {
+ "babel-plugin-macros": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/deep-is": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz",
+ "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/deepmerge": {
+ "version": "4.3.1",
+ "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz",
+ "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/define-data-property": {
+ "version": "1.1.4",
+ "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz",
+ "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/define-properties": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz",
+ "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.0.1",
+ "has-property-descriptors": "^1.0.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/detect-libc": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz",
+ "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "optional": true,
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/detect-newline": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz",
+ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/diff": {
+ "version": "4.0.4",
+ "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz",
+ "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.3.1"
+ }
+ },
+ "node_modules/dunder-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
+ "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "gopd": "^1.2.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/eastasianwidth": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",
+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/electron-to-chromium": {
+ "version": "1.5.307",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.307.tgz",
+ "integrity": "sha512-5z3uFKBWjiNR44nFcYdkcXjKMbg5KXNdciu7mhTPo9tB7NbqSNP2sSnGR+fqknZSCwKkBN+oxiiajWs4dT6ORg==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/emittery": {
+ "version": "0.13.1",
+ "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz",
+ "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/emittery?sponsor=1"
+ }
+ },
+ "node_modules/emoji-regex": {
+ "version": "9.2.2",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",
+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/entities": {
+ "version": "4.5.0",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz",
+ "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/error-ex": {
+ "version": "1.3.4",
+ "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.4.tgz",
+ "integrity": "sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-arrayish": "^0.2.1"
+ }
+ },
+ "node_modules/es-abstract": {
+ "version": "1.24.1",
+ "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz",
+ "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "array-buffer-byte-length": "^1.0.2",
+ "arraybuffer.prototype.slice": "^1.0.4",
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "data-view-buffer": "^1.0.2",
+ "data-view-byte-length": "^1.0.2",
+ "data-view-byte-offset": "^1.0.1",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "es-set-tostringtag": "^2.1.0",
+ "es-to-primitive": "^1.3.0",
+ "function.prototype.name": "^1.1.8",
+ "get-intrinsic": "^1.3.0",
+ "get-proto": "^1.0.1",
+ "get-symbol-description": "^1.1.0",
+ "globalthis": "^1.0.4",
+ "gopd": "^1.2.0",
+ "has-property-descriptors": "^1.0.2",
+ "has-proto": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "internal-slot": "^1.1.0",
+ "is-array-buffer": "^3.0.5",
+ "is-callable": "^1.2.7",
+ "is-data-view": "^1.0.2",
+ "is-negative-zero": "^2.0.3",
+ "is-regex": "^1.2.1",
+ "is-set": "^2.0.3",
+ "is-shared-array-buffer": "^1.0.4",
+ "is-string": "^1.1.1",
+ "is-typed-array": "^1.1.15",
+ "is-weakref": "^1.1.1",
+ "math-intrinsics": "^1.1.0",
+ "object-inspect": "^1.13.4",
+ "object-keys": "^1.1.1",
+ "object.assign": "^4.1.7",
+ "own-keys": "^1.0.1",
+ "regexp.prototype.flags": "^1.5.4",
+ "safe-array-concat": "^1.1.3",
+ "safe-push-apply": "^1.0.0",
+ "safe-regex-test": "^1.1.0",
+ "set-proto": "^1.0.0",
+ "stop-iteration-iterator": "^1.1.0",
+ "string.prototype.trim": "^1.2.10",
+ "string.prototype.trimend": "^1.0.9",
+ "string.prototype.trimstart": "^1.0.8",
+ "typed-array-buffer": "^1.0.3",
+ "typed-array-byte-length": "^1.0.3",
+ "typed-array-byte-offset": "^1.0.4",
+ "typed-array-length": "^1.0.7",
+ "unbox-primitive": "^1.1.0",
+ "which-typed-array": "^1.1.19"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/es-define-property": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
+ "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-errors": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
+ "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-object-atoms": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
+ "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-set-tostringtag": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
+ "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/es-to-primitive": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz",
+ "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-callable": "^1.2.7",
+ "is-date-object": "^1.0.5",
+ "is-symbol": "^1.0.4"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/esbuild": {
+ "version": "0.27.3",
+ "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz",
+ "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "bin": {
+ "esbuild": "bin/esbuild"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "optionalDependencies": {
+ "@esbuild/aix-ppc64": "0.27.3",
+ "@esbuild/android-arm": "0.27.3",
+ "@esbuild/android-arm64": "0.27.3",
+ "@esbuild/android-x64": "0.27.3",
+ "@esbuild/darwin-arm64": "0.27.3",
+ "@esbuild/darwin-x64": "0.27.3",
+ "@esbuild/freebsd-arm64": "0.27.3",
+ "@esbuild/freebsd-x64": "0.27.3",
+ "@esbuild/linux-arm": "0.27.3",
+ "@esbuild/linux-arm64": "0.27.3",
+ "@esbuild/linux-ia32": "0.27.3",
+ "@esbuild/linux-loong64": "0.27.3",
+ "@esbuild/linux-mips64el": "0.27.3",
+ "@esbuild/linux-ppc64": "0.27.3",
+ "@esbuild/linux-riscv64": "0.27.3",
+ "@esbuild/linux-s390x": "0.27.3",
+ "@esbuild/linux-x64": "0.27.3",
+ "@esbuild/netbsd-arm64": "0.27.3",
+ "@esbuild/netbsd-x64": "0.27.3",
+ "@esbuild/openbsd-arm64": "0.27.3",
+ "@esbuild/openbsd-x64": "0.27.3",
+ "@esbuild/openharmony-arm64": "0.27.3",
+ "@esbuild/sunos-x64": "0.27.3",
+ "@esbuild/win32-arm64": "0.27.3",
+ "@esbuild/win32-ia32": "0.27.3",
+ "@esbuild/win32-x64": "0.27.3"
+ }
+ },
+ "node_modules/escalade": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/escape-string-regexp": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+ "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/eslint": {
+ "version": "10.0.2",
+ "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.0.2.tgz",
+ "integrity": "sha512-uYixubwmqJZH+KLVYIVKY1JQt7tysXhtj21WSvjcSmU5SVNzMus1bgLe+pAt816yQ8opKfheVVoPLqvVMGejYw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@eslint-community/eslint-utils": "^4.8.0",
+ "@eslint-community/regexpp": "^4.12.2",
+ "@eslint/config-array": "^0.23.2",
+ "@eslint/config-helpers": "^0.5.2",
+ "@eslint/core": "^1.1.0",
+ "@eslint/plugin-kit": "^0.6.0",
+ "@humanfs/node": "^0.16.6",
+ "@humanwhocodes/module-importer": "^1.0.1",
+ "@humanwhocodes/retry": "^0.4.2",
+ "@types/estree": "^1.0.6",
+ "ajv": "^6.14.0",
+ "cross-spawn": "^7.0.6",
+ "debug": "^4.3.2",
+ "escape-string-regexp": "^4.0.0",
+ "eslint-scope": "^9.1.1",
+ "eslint-visitor-keys": "^5.0.1",
+ "espree": "^11.1.1",
+ "esquery": "^1.7.0",
+ "esutils": "^2.0.2",
+ "fast-deep-equal": "^3.1.3",
+ "file-entry-cache": "^8.0.0",
+ "find-up": "^5.0.0",
+ "glob-parent": "^6.0.2",
+ "ignore": "^5.2.0",
+ "imurmurhash": "^0.1.4",
+ "is-glob": "^4.0.0",
+ "json-stable-stringify-without-jsonify": "^1.0.1",
+ "minimatch": "^10.2.1",
+ "natural-compare": "^1.4.0",
+ "optionator": "^0.9.3"
+ },
+ "bin": {
+ "eslint": "bin/eslint.js"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ },
+ "funding": {
+ "url": "https://eslint.org/donate"
+ },
+ "peerDependencies": {
+ "jiti": "*"
+ },
+ "peerDependenciesMeta": {
+ "jiti": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/eslint-scope": {
+ "version": "9.1.1",
+ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.1.tgz",
+ "integrity": "sha512-GaUN0sWim5qc8KVErfPBWmc31LEsOkrUJbvJZV+xuL3u2phMUK4HIvXlWAakfC8W4nzlK+chPEAkYOYb5ZScIw==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "@types/esrecurse": "^4.3.1",
+ "@types/estree": "^1.0.8",
+ "esrecurse": "^4.3.0",
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint-visitor-keys": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz",
+ "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/eslint/node_modules/glob-parent": {
+ "version": "6.0.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",
+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.3"
+ },
+ "engines": {
+ "node": ">=10.13.0"
+ }
+ },
+ "node_modules/espree": {
+ "version": "11.1.1",
+ "resolved": "https://registry.npmjs.org/espree/-/espree-11.1.1.tgz",
+ "integrity": "sha512-AVHPqQoZYc+RUM4/3Ly5udlZY/U4LS8pIG05jEjWM2lQMU/oaZ7qshzAl2YP1tfNmXfftH3ohurfwNAug+MnsQ==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "acorn": "^8.16.0",
+ "acorn-jsx": "^5.3.2",
+ "eslint-visitor-keys": "^5.0.1"
+ },
+ "engines": {
+ "node": "^20.19.0 || ^22.13.0 || >=24"
+ },
+ "funding": {
+ "url": "https://opencollective.com/eslint"
+ }
+ },
+ "node_modules/esprima": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+ "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "bin": {
+ "esparse": "bin/esparse.js",
+ "esvalidate": "bin/esvalidate.js"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/esquery": {
+ "version": "1.7.0",
+ "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz",
+ "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "estraverse": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/esrecurse": {
+ "version": "4.3.0",
+ "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz",
+ "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "estraverse": "^5.2.0"
+ },
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/estraverse": {
+ "version": "5.3.0",
+ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz",
+ "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=4.0"
+ }
+ },
+ "node_modules/esutils": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz",
+ "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/execa": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz",
+ "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cross-spawn": "^7.0.3",
+ "get-stream": "^6.0.0",
+ "human-signals": "^2.1.0",
+ "is-stream": "^2.0.0",
+ "merge-stream": "^2.0.0",
+ "npm-run-path": "^4.0.1",
+ "onetime": "^5.1.2",
+ "signal-exit": "^3.0.3",
+ "strip-final-newline": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sindresorhus/execa?sponsor=1"
+ }
+ },
+ "node_modules/execa/node_modules/signal-exit": {
+ "version": "3.0.7",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz",
+ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/exit-x": {
+ "version": "0.2.2",
+ "resolved": "https://registry.npmjs.org/exit-x/-/exit-x-0.2.2.tgz",
+ "integrity": "sha512-+I6B/IkJc1o/2tiURyz/ivu/O0nKNEArIUB5O7zBrlDVJr22SCLH3xTeEry428LvFhRzIA1g8izguxJ/gbNcVQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/expect": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/expect/-/expect-30.2.0.tgz",
+ "integrity": "sha512-u/feCi0GPsI+988gU2FLcsHyAHTU0MX1Wg68NhAnN7z/+C5wqG+CY8J53N9ioe8RXgaoz0nBR/TYMf3AycUuPw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/expect-utils": "30.2.0",
+ "@jest/get-type": "30.1.0",
+ "jest-matcher-utils": "30.2.0",
+ "jest-message-util": "30.2.0",
+ "jest-mock": "30.2.0",
+ "jest-util": "30.2.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/fast-deep-equal": {
+ "version": "3.1.3",
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-json-stable-stringify": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fast-levenshtein": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz",
+ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/fb-watchman": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz",
+ "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "bser": "2.1.1"
+ }
+ },
+ "node_modules/file-entry-cache": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz",
+ "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flat-cache": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=16.0.0"
+ }
+ },
+ "node_modules/fill-range": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
+ "license": "MIT",
+ "dependencies": {
+ "to-regex-range": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/find-up": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
+ "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^6.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/flat-cache": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz",
+ "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "flatted": "^3.2.9",
+ "keyv": "^4.5.4"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/flatted": {
+ "version": "3.3.4",
+ "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.4.tgz",
+ "integrity": "sha512-3+mMldrTAPdta5kjX2G2J7iX4zxtnwpdA8Tr2ZSjkyPSanvbZAcy6flmtnXbEybHrDcU9641lxrMfFuUxVz9vA==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/for-each": {
+ "version": "0.3.5",
+ "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz",
+ "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-callable": "^1.2.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/foreground-child": {
+ "version": "3.3.1",
+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz",
+ "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "cross-spawn": "^7.0.6",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/fs.realpath": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+ "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/fsevents": {
+ "version": "2.3.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz",
+ "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==",
+ "dev": true,
+ "hasInstallScript": true,
+ "license": "MIT",
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"
+ }
+ },
+ "node_modules/function-bind": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
+ "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/function.prototype.name": {
+ "version": "1.1.8",
+ "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz",
+ "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "define-properties": "^1.2.1",
+ "functions-have-names": "^1.2.3",
+ "hasown": "^2.0.2",
+ "is-callable": "^1.2.7"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/functions-have-names": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz",
+ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/generator-function": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz",
+ "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/gensync": {
+ "version": "1.0.0-beta.2",
+ "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
+ "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/get-caller-file": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz",
+ "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": "6.* || 8.* || >= 10.*"
+ }
+ },
+ "node_modules/get-intrinsic": {
+ "version": "1.3.0",
+ "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
+ "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind-apply-helpers": "^1.0.2",
+ "es-define-property": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.1.1",
+ "function-bind": "^1.1.2",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-symbols": "^1.1.0",
+ "hasown": "^2.0.2",
+ "math-intrinsics": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/get-package-type": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz",
+ "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
+ "node_modules/get-proto": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
+ "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/get-stream": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
+ "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/get-symbol-description": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz",
+ "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/glob": {
+ "version": "10.5.0",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz",
+ "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "foreground-child": "^3.1.0",
+ "jackspeak": "^3.1.2",
+ "minimatch": "^9.0.4",
+ "minipass": "^7.1.2",
+ "package-json-from-dist": "^1.0.0",
+ "path-scurry": "^1.11.1"
+ },
+ "bin": {
+ "glob": "dist/esm/bin.mjs"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/glob-parent": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",
+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "is-glob": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/glob/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/glob/node_modules/brace-expansion": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz",
+ "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0"
+ }
+ },
+ "node_modules/glob/node_modules/minimatch": {
+ "version": "9.0.9",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz",
+ "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^2.0.2"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/globals": {
+ "version": "17.4.0",
+ "resolved": "https://registry.npmjs.org/globals/-/globals-17.4.0.tgz",
+ "integrity": "sha512-hjrNztw/VajQwOLsMNT1cbJiH2muO3OROCHnbehc8eY5JyD2gqz4AcMHPqgaOR59DjgUjYAYLeH699g/eWi2jw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/globalthis": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz",
+ "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-properties": "^1.2.1",
+ "gopd": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/gopd": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
+ "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/graceful-fs": {
+ "version": "4.2.11",
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
+ "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==",
+ "license": "ISC"
+ },
+ "node_modules/handlebars": {
+ "version": "4.7.8",
+ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz",
+ "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "minimist": "^1.2.5",
+ "neo-async": "^2.6.2",
+ "source-map": "^0.6.1",
+ "wordwrap": "^1.0.0"
+ },
+ "bin": {
+ "handlebars": "bin/handlebars"
+ },
+ "engines": {
+ "node": ">=0.4.7"
+ },
+ "optionalDependencies": {
+ "uglify-js": "^3.1.4"
+ }
+ },
+ "node_modules/has-bigints": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz",
+ "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-flag": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz",
+ "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/has-property-descriptors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz",
+ "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-define-property": "^1.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-proto": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz",
+ "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-symbols": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
+ "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/has-tostringtag": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
+ "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-symbols": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/hasown": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
+ "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "function-bind": "^1.1.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/hosted-git-info": {
+ "version": "2.8.9",
+ "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz",
+ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/html-encoding-sniffer": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-4.0.0.tgz",
+ "integrity": "sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "whatwg-encoding": "^3.1.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/html-escaper": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz",
+ "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/http-proxy-agent": {
+ "version": "7.0.2",
+ "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz",
+ "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.0",
+ "debug": "^4.3.4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/https-proxy-agent": {
+ "version": "7.0.6",
+ "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz",
+ "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "agent-base": "^7.1.2",
+ "debug": "4"
+ },
+ "engines": {
+ "node": ">= 14"
+ }
+ },
+ "node_modules/human-signals": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
+ "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=10.17.0"
+ }
+ },
+ "node_modules/iconv-lite": {
+ "version": "0.6.3",
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz",
+ "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "safer-buffer": ">= 2.1.2 < 3.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/idb-keyval": {
+ "version": "6.2.2",
+ "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.2.tgz",
+ "integrity": "sha512-yjD9nARJ/jb1g+CvD0tlhUHOrJ9Sy0P8T9MF3YaLlHnSRpwPfpTX0XIvpmw3gAJUmEu3FiICLBDPXVwyEvrleg==",
+ "license": "Apache-2.0"
+ },
+ "node_modules/ignore": {
+ "version": "5.3.2",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz",
+ "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/immutable": {
+ "version": "5.1.5",
+ "resolved": "https://registry.npmjs.org/immutable/-/immutable-5.1.5.tgz",
+ "integrity": "sha512-t7xcm2siw+hlUM68I+UEOK+z84RzmN59as9DZ7P1l0994DKUWV7UXBMQZVxaoMSRQ+PBZbHCOoBt7a2wxOMt+A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/import-local": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz",
+ "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pkg-dir": "^4.2.0",
+ "resolve-cwd": "^3.0.0"
+ },
+ "bin": {
+ "import-local-fixture": "fixtures/cli.js"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/imurmurhash": {
+ "version": "0.1.4",
+ "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz",
+ "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.19"
+ }
+ },
+ "node_modules/inflight": {
+ "version": "1.0.6",
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+ "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==",
+ "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "once": "^1.3.0",
+ "wrappy": "1"
+ }
+ },
+ "node_modules/inherits": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/internal-slot": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz",
+ "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "hasown": "^2.0.2",
+ "side-channel": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/is-array-buffer": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz",
+ "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-arrayish": {
+ "version": "0.2.1",
+ "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
+ "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/is-async-function": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz",
+ "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "async-function": "^1.0.0",
+ "call-bound": "^1.0.3",
+ "get-proto": "^1.0.1",
+ "has-tostringtag": "^1.0.2",
+ "safe-regex-test": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-bigint": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz",
+ "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-bigints": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-binary-path": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",
+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "binary-extensions": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-boolean-object": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz",
+ "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-callable": {
+ "version": "1.2.7",
+ "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz",
+ "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-core-module": {
+ "version": "2.16.1",
+ "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz",
+ "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-data-view": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz",
+ "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "get-intrinsic": "^1.2.6",
+ "is-typed-array": "^1.1.13"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-date-object": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz",
+ "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-extglob": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-finalizationregistry": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz",
+ "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-fullwidth-code-point": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",
+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/is-generator-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz",
+ "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/is-generator-function": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz",
+ "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.4",
+ "generator-function": "^2.0.0",
+ "get-proto": "^1.0.1",
+ "has-tostringtag": "^1.0.2",
+ "safe-regex-test": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-glob": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-extglob": "^2.1.1"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/is-map": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz",
+ "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-negative-zero": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz",
+ "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-number": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.12.0"
+ }
+ },
+ "node_modules/is-number-object": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz",
+ "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-potential-custom-element-name": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz",
+ "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/is-regex": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz",
+ "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2",
+ "hasown": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-set": {
+ "version": "2.0.3",
+ "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz",
+ "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-shared-array-buffer": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz",
+ "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-stream": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
+ "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/is-string": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz",
+ "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-symbol": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz",
+ "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "has-symbols": "^1.1.0",
+ "safe-regex-test": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-typed-array": {
+ "version": "1.1.15",
+ "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz",
+ "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "which-typed-array": "^1.1.16"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakmap": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz",
+ "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakref": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz",
+ "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/is-weakset": {
+ "version": "2.0.4",
+ "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz",
+ "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "get-intrinsic": "^1.2.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/isarray": {
+ "version": "2.0.5",
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz",
+ "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/isexe": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/istanbul-lib-coverage": {
+ "version": "3.2.2",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz",
+ "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/istanbul-lib-instrument": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz",
+ "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@babel/core": "^7.23.9",
+ "@babel/parser": "^7.23.9",
+ "@istanbuljs/schema": "^0.1.3",
+ "istanbul-lib-coverage": "^3.2.0",
+ "semver": "^7.5.4"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-instrument/node_modules/semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-report": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz",
+ "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "istanbul-lib-coverage": "^3.0.0",
+ "make-dir": "^4.0.0",
+ "supports-color": "^7.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-lib-source-maps": {
+ "version": "5.0.6",
+ "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz",
+ "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.23",
+ "debug": "^4.1.1",
+ "istanbul-lib-coverage": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/istanbul-reports": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.2.0.tgz",
+ "integrity": "sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "html-escaper": "^2.0.0",
+ "istanbul-lib-report": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jackspeak": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",
+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "@isaacs/cliui": "^8.0.2"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ },
+ "optionalDependencies": {
+ "@pkgjs/parseargs": "^0.11.0"
+ }
+ },
+ "node_modules/jest": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest/-/jest-30.2.0.tgz",
+ "integrity": "sha512-F26gjC0yWN8uAA5m5Ss8ZQf5nDHWGlN/xWZIh8S5SRbsEKBovwZhxGd6LJlbZYxBgCYOtreSUyb8hpXyGC5O4A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/core": "30.2.0",
+ "@jest/types": "30.2.0",
+ "import-local": "^3.2.0",
+ "jest-cli": "30.2.0"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-changed-files": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-30.2.0.tgz",
+ "integrity": "sha512-L8lR1ChrRnSdfeOvTrwZMlnWV8G/LLjQ0nG9MBclwWZidA2N5FviRki0Bvh20WRMOX31/JYvzdqTJrk5oBdydQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "execa": "^5.1.1",
+ "jest-util": "30.2.0",
+ "p-limit": "^3.1.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-circus": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-30.2.0.tgz",
+ "integrity": "sha512-Fh0096NC3ZkFx05EP2OXCxJAREVxj1BcW/i6EWqqymcgYKWjyyDpral3fMxVcHXg6oZM7iULer9wGRFvfpl+Tg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/environment": "30.2.0",
+ "@jest/expect": "30.2.0",
+ "@jest/test-result": "30.2.0",
+ "@jest/types": "30.2.0",
+ "@types/node": "*",
+ "chalk": "^4.1.2",
+ "co": "^4.6.0",
+ "dedent": "^1.6.0",
+ "is-generator-fn": "^2.1.0",
+ "jest-each": "30.2.0",
+ "jest-matcher-utils": "30.2.0",
+ "jest-message-util": "30.2.0",
+ "jest-runtime": "30.2.0",
+ "jest-snapshot": "30.2.0",
+ "jest-util": "30.2.0",
+ "p-limit": "^3.1.0",
+ "pretty-format": "30.2.0",
+ "pure-rand": "^7.0.0",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.6"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-cli": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-30.2.0.tgz",
+ "integrity": "sha512-Os9ukIvADX/A9sLt6Zse3+nmHtHaE6hqOsjQtNiugFTbKRHYIYtZXNGNK9NChseXy7djFPjndX1tL0sCTlfpAA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/core": "30.2.0",
+ "@jest/test-result": "30.2.0",
+ "@jest/types": "30.2.0",
+ "chalk": "^4.1.2",
+ "exit-x": "^0.2.2",
+ "import-local": "^3.2.0",
+ "jest-config": "30.2.0",
+ "jest-util": "30.2.0",
+ "jest-validate": "30.2.0",
+ "yargs": "^17.7.2"
+ },
+ "bin": {
+ "jest": "bin/jest.js"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0"
+ },
+ "peerDependenciesMeta": {
+ "node-notifier": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-cli/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-cli/node_modules/cliui": {
+ "version": "8.0.1",
+ "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz",
+ "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "string-width": "^4.2.0",
+ "strip-ansi": "^6.0.1",
+ "wrap-ansi": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/jest-cli/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/jest-cli/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-cli/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/jest-cli/node_modules/wrap-ansi": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
+ }
+ },
+ "node_modules/jest-cli/node_modules/y18n": {
+ "version": "5.0.8",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz",
+ "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-cli/node_modules/yargs": {
+ "version": "17.7.2",
+ "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz",
+ "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cliui": "^8.0.1",
+ "escalade": "^3.1.1",
+ "get-caller-file": "^2.0.5",
+ "require-directory": "^2.1.1",
+ "string-width": "^4.2.3",
+ "y18n": "^5.0.5",
+ "yargs-parser": "^21.1.1"
+ },
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/jest-config": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-30.2.0.tgz",
+ "integrity": "sha512-g4WkyzFQVWHtu6uqGmQR4CQxz/CH3yDSlhzXMWzNjDx843gYjReZnMRanjRCq5XZFuQrGDxgUaiYWE8BRfVckA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.27.4",
+ "@jest/get-type": "30.1.0",
+ "@jest/pattern": "30.0.1",
+ "@jest/test-sequencer": "30.2.0",
+ "@jest/types": "30.2.0",
+ "babel-jest": "30.2.0",
+ "chalk": "^4.1.2",
+ "ci-info": "^4.2.0",
+ "deepmerge": "^4.3.1",
+ "glob": "^10.3.10",
+ "graceful-fs": "^4.2.11",
+ "jest-circus": "30.2.0",
+ "jest-docblock": "30.2.0",
+ "jest-environment-node": "30.2.0",
+ "jest-regex-util": "30.0.1",
+ "jest-resolve": "30.2.0",
+ "jest-runner": "30.2.0",
+ "jest-util": "30.2.0",
+ "jest-validate": "30.2.0",
+ "micromatch": "^4.0.8",
+ "parse-json": "^5.2.0",
+ "pretty-format": "30.2.0",
+ "slash": "^3.0.0",
+ "strip-json-comments": "^3.1.1"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "@types/node": "*",
+ "esbuild-register": ">=3.4.0",
+ "ts-node": ">=9.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/node": {
+ "optional": true
+ },
+ "esbuild-register": {
+ "optional": true
+ },
+ "ts-node": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-diff": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-30.2.0.tgz",
+ "integrity": "sha512-dQHFo3Pt4/NLlG5z4PxZ/3yZTZ1C7s9hveiOj+GCN+uT109NC2QgsoVZsVOAvbJ3RgKkvyLGXZV9+piDpWbm6A==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/diff-sequences": "30.0.1",
+ "@jest/get-type": "30.1.0",
+ "chalk": "^4.1.2",
+ "pretty-format": "30.2.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-docblock": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-30.2.0.tgz",
+ "integrity": "sha512-tR/FFgZKS1CXluOQzZvNH3+0z9jXr3ldGSD8bhyuxvlVUwbeLOGynkunvlTMxchC5urrKndYiwCFC0DLVjpOCA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "detect-newline": "^3.1.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-each": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-30.2.0.tgz",
+ "integrity": "sha512-lpWlJlM7bCUf1mfmuqTA8+j2lNURW9eNafOy99knBM01i5CQeY5UH1vZjgT9071nDJac1M4XsbyI44oNOdhlDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/get-type": "30.1.0",
+ "@jest/types": "30.2.0",
+ "chalk": "^4.1.2",
+ "jest-util": "30.2.0",
+ "pretty-format": "30.2.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-environment-jsdom": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-30.2.0.tgz",
+ "integrity": "sha512-zbBTiqr2Vl78pKp/laGBREYzbZx9ZtqPjOK4++lL4BNDhxRnahg51HtoDrk9/VjIy9IthNEWdKVd7H5bqBhiWQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/environment": "30.2.0",
+ "@jest/environment-jsdom-abstract": "30.2.0",
+ "@types/jsdom": "^21.1.7",
+ "@types/node": "*",
+ "jsdom": "^26.1.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ },
+ "peerDependencies": {
+ "canvas": "^3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-environment-node": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-30.2.0.tgz",
+ "integrity": "sha512-ElU8v92QJ9UrYsKrxDIKCxu6PfNj4Hdcktcn0JX12zqNdqWHB0N+hwOnnBBXvjLd2vApZtuLUGs1QSY+MsXoNA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/environment": "30.2.0",
+ "@jest/fake-timers": "30.2.0",
+ "@jest/types": "30.2.0",
+ "@types/node": "*",
+ "jest-mock": "30.2.0",
+ "jest-util": "30.2.0",
+ "jest-validate": "30.2.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-haste-map": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-30.2.0.tgz",
+ "integrity": "sha512-sQA/jCb9kNt+neM0anSj6eZhLZUIhQgwDt7cPGjumgLM4rXsfb9kpnlacmvZz3Q5tb80nS+oG/if+NBKrHC+Xw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "30.2.0",
+ "@types/node": "*",
+ "anymatch": "^3.1.3",
+ "fb-watchman": "^2.0.2",
+ "graceful-fs": "^4.2.11",
+ "jest-regex-util": "30.0.1",
+ "jest-util": "30.2.0",
+ "jest-worker": "30.2.0",
+ "micromatch": "^4.0.8",
+ "walker": "^1.0.8"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ },
+ "optionalDependencies": {
+ "fsevents": "^2.3.3"
+ }
+ },
+ "node_modules/jest-leak-detector": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-30.2.0.tgz",
+ "integrity": "sha512-M6jKAjyzjHG0SrQgwhgZGy9hFazcudwCNovY/9HPIicmNSBuockPSedAP9vlPK6ONFJ1zfyH/M2/YYJxOz5cdQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/get-type": "30.1.0",
+ "pretty-format": "30.2.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-matcher-utils": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-30.2.0.tgz",
+ "integrity": "sha512-dQ94Nq4dbzmUWkQ0ANAWS9tBRfqCrn0bV9AMYdOi/MHW726xn7eQmMeRTpX2ViC00bpNaWXq+7o4lIQ3AX13Hg==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/get-type": "30.1.0",
+ "chalk": "^4.1.2",
+ "jest-diff": "30.2.0",
+ "pretty-format": "30.2.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-message-util": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-30.2.0.tgz",
+ "integrity": "sha512-y4DKFLZ2y6DxTWD4cDe07RglV88ZiNEdlRfGtqahfbIjfsw1nMCPx49Uev4IA/hWn3sDKyAnSPwoYSsAEdcimw==",
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.27.1",
+ "@jest/types": "30.2.0",
+ "@types/stack-utils": "^2.0.3",
+ "chalk": "^4.1.2",
+ "graceful-fs": "^4.2.11",
+ "micromatch": "^4.0.8",
+ "pretty-format": "30.2.0",
+ "slash": "^3.0.0",
+ "stack-utils": "^2.0.6"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-mock": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-30.2.0.tgz",
+ "integrity": "sha512-JNNNl2rj4b5ICpmAcq+WbLH83XswjPbjH4T7yvGzfAGCPh1rw+xVNbtk+FnRslvt9lkCcdn9i1oAoKUuFsOxRw==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "30.2.0",
+ "@types/node": "*",
+ "jest-util": "30.2.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-pnp-resolver": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz",
+ "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ },
+ "peerDependencies": {
+ "jest-resolve": "*"
+ },
+ "peerDependenciesMeta": {
+ "jest-resolve": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jest-regex-util": {
+ "version": "30.0.1",
+ "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-30.0.1.tgz",
+ "integrity": "sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==",
+ "license": "MIT",
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-resolve": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-30.2.0.tgz",
+ "integrity": "sha512-TCrHSxPlx3tBY3hWNtRQKbtgLhsXa1WmbJEqBlTBrGafd5fiQFByy2GNCEoGR+Tns8d15GaL9cxEzKOO3GEb2A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chalk": "^4.1.2",
+ "graceful-fs": "^4.2.11",
+ "jest-haste-map": "30.2.0",
+ "jest-pnp-resolver": "^1.2.3",
+ "jest-util": "30.2.0",
+ "jest-validate": "30.2.0",
+ "slash": "^3.0.0",
+ "unrs-resolver": "^1.7.11"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-resolve-dependencies": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-30.2.0.tgz",
+ "integrity": "sha512-xTOIGug/0RmIe3mmCqCT95yO0vj6JURrn1TKWlNbhiAefJRWINNPgwVkrVgt/YaerPzY3iItufd80v3lOrFJ2w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "jest-regex-util": "30.0.1",
+ "jest-snapshot": "30.2.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-runner": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-30.2.0.tgz",
+ "integrity": "sha512-PqvZ2B2XEyPEbclp+gV6KO/F1FIFSbIwewRgmROCMBo/aZ6J1w8Qypoj2pEOcg3G2HzLlaP6VUtvwCI8dM3oqQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/console": "30.2.0",
+ "@jest/environment": "30.2.0",
+ "@jest/test-result": "30.2.0",
+ "@jest/transform": "30.2.0",
+ "@jest/types": "30.2.0",
+ "@types/node": "*",
+ "chalk": "^4.1.2",
+ "emittery": "^0.13.1",
+ "exit-x": "^0.2.2",
+ "graceful-fs": "^4.2.11",
+ "jest-docblock": "30.2.0",
+ "jest-environment-node": "30.2.0",
+ "jest-haste-map": "30.2.0",
+ "jest-leak-detector": "30.2.0",
+ "jest-message-util": "30.2.0",
+ "jest-resolve": "30.2.0",
+ "jest-runtime": "30.2.0",
+ "jest-util": "30.2.0",
+ "jest-watcher": "30.2.0",
+ "jest-worker": "30.2.0",
+ "p-limit": "^3.1.0",
+ "source-map-support": "0.5.13"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-runtime": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-30.2.0.tgz",
+ "integrity": "sha512-p1+GVX/PJqTucvsmERPMgCPvQJpFt4hFbM+VN3n8TMo47decMUcJbt+rgzwrEme0MQUA/R+1de2axftTHkKckg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/environment": "30.2.0",
+ "@jest/fake-timers": "30.2.0",
+ "@jest/globals": "30.2.0",
+ "@jest/source-map": "30.0.1",
+ "@jest/test-result": "30.2.0",
+ "@jest/transform": "30.2.0",
+ "@jest/types": "30.2.0",
+ "@types/node": "*",
+ "chalk": "^4.1.2",
+ "cjs-module-lexer": "^2.1.0",
+ "collect-v8-coverage": "^1.0.2",
+ "glob": "^10.3.10",
+ "graceful-fs": "^4.2.11",
+ "jest-haste-map": "30.2.0",
+ "jest-message-util": "30.2.0",
+ "jest-mock": "30.2.0",
+ "jest-regex-util": "30.0.1",
+ "jest-resolve": "30.2.0",
+ "jest-snapshot": "30.2.0",
+ "jest-util": "30.2.0",
+ "slash": "^3.0.0",
+ "strip-bom": "^4.0.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-snapshot": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-30.2.0.tgz",
+ "integrity": "sha512-5WEtTy2jXPFypadKNpbNkZ72puZCa6UjSr/7djeecHWOu7iYhSXSnHScT8wBz3Rn8Ena5d5RYRcsyKIeqG1IyA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/core": "^7.27.4",
+ "@babel/generator": "^7.27.5",
+ "@babel/plugin-syntax-jsx": "^7.27.1",
+ "@babel/plugin-syntax-typescript": "^7.27.1",
+ "@babel/types": "^7.27.3",
+ "@jest/expect-utils": "30.2.0",
+ "@jest/get-type": "30.1.0",
+ "@jest/snapshot-utils": "30.2.0",
+ "@jest/transform": "30.2.0",
+ "@jest/types": "30.2.0",
+ "babel-preset-current-node-syntax": "^1.2.0",
+ "chalk": "^4.1.2",
+ "expect": "30.2.0",
+ "graceful-fs": "^4.2.11",
+ "jest-diff": "30.2.0",
+ "jest-matcher-utils": "30.2.0",
+ "jest-message-util": "30.2.0",
+ "jest-util": "30.2.0",
+ "pretty-format": "30.2.0",
+ "semver": "^7.7.2",
+ "synckit": "^0.11.8"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-snapshot/node_modules/semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/jest-util": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-30.2.0.tgz",
+ "integrity": "sha512-QKNsM0o3Xe6ISQU869e+DhG+4CK/48aHYdJZGlFQVTjnbvgpcKyxpzk29fGiO7i/J8VENZ+d2iGnSsvmuHywlA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/types": "30.2.0",
+ "@types/node": "*",
+ "chalk": "^4.1.2",
+ "ci-info": "^4.2.0",
+ "graceful-fs": "^4.2.11",
+ "picomatch": "^4.0.2"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-util/node_modules/picomatch": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
+ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/jest-validate": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-30.2.0.tgz",
+ "integrity": "sha512-FBGWi7dP2hpdi8nBoWxSsLvBFewKAg0+uSQwBaof4Y4DPgBabXgpSYC5/lR7VmnIlSpASmCi/ntRWPbv7089Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/get-type": "30.1.0",
+ "@jest/types": "30.2.0",
+ "camelcase": "^6.3.0",
+ "chalk": "^4.1.2",
+ "leven": "^3.1.0",
+ "pretty-format": "30.2.0"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-validate/node_modules/camelcase": {
+ "version": "6.3.0",
+ "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz",
+ "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/jest-watcher": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-30.2.0.tgz",
+ "integrity": "sha512-PYxa28dxJ9g777pGm/7PrbnMeA0Jr7osHP9bS7eJy9DuAjMgdGtxgf0uKMyoIsTWAkIbUW5hSDdJ3urmgXBqxg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@jest/test-result": "30.2.0",
+ "@jest/types": "30.2.0",
+ "@types/node": "*",
+ "ansi-escapes": "^4.3.2",
+ "chalk": "^4.1.2",
+ "emittery": "^0.13.1",
+ "jest-util": "30.2.0",
+ "string-length": "^4.0.2"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-worker": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-30.2.0.tgz",
+ "integrity": "sha512-0Q4Uk8WF7BUwqXHuAjc23vmopWJw5WH7w2tqBoUOZpOjW/ZnR44GXXd1r82RvnmI2GZge3ivrYXk/BE2+VtW2g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@types/node": "*",
+ "@ungap/structured-clone": "^1.3.0",
+ "jest-util": "30.2.0",
+ "merge-stream": "^2.0.0",
+ "supports-color": "^8.1.1"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/jest-worker/node_modules/supports-color": {
+ "version": "8.1.1",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz",
+ "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/supports-color?sponsor=1"
+ }
+ },
+ "node_modules/js-tokens": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz",
+ "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==",
+ "license": "MIT"
+ },
+ "node_modules/js-yaml": {
+ "version": "3.14.2",
+ "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz",
+ "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^1.0.7",
+ "esprima": "^4.0.0"
+ },
+ "bin": {
+ "js-yaml": "bin/js-yaml.js"
+ }
+ },
+ "node_modules/jsdom": {
+ "version": "26.1.0",
+ "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-26.1.0.tgz",
+ "integrity": "sha512-Cvc9WUhxSMEo4McES3P7oK3QaXldCfNWp7pl2NNeiIFlCoLr3kfq9kb1fxftiwk1FLV7CvpvDfonxtzUDeSOPg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "cssstyle": "^4.2.1",
+ "data-urls": "^5.0.0",
+ "decimal.js": "^10.5.0",
+ "html-encoding-sniffer": "^4.0.0",
+ "http-proxy-agent": "^7.0.2",
+ "https-proxy-agent": "^7.0.6",
+ "is-potential-custom-element-name": "^1.0.1",
+ "nwsapi": "^2.2.16",
+ "parse5": "^7.2.1",
+ "rrweb-cssom": "^0.8.0",
+ "saxes": "^6.0.0",
+ "symbol-tree": "^3.2.4",
+ "tough-cookie": "^5.1.1",
+ "w3c-xmlserializer": "^5.0.0",
+ "webidl-conversions": "^7.0.0",
+ "whatwg-encoding": "^3.1.1",
+ "whatwg-mimetype": "^4.0.0",
+ "whatwg-url": "^14.1.1",
+ "ws": "^8.18.0",
+ "xml-name-validator": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ },
+ "peerDependencies": {
+ "canvas": "^3.0.0"
+ },
+ "peerDependenciesMeta": {
+ "canvas": {
+ "optional": true
+ }
+ }
+ },
+ "node_modules/jsesc": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz",
+ "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "jsesc": "bin/jsesc"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/json-buffer": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz",
+ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-parse-better-errors": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz",
+ "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-parse-even-better-errors": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
+ "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-schema-traverse": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json-stable-stringify-without-jsonify": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz",
+ "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/json5": {
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "json5": "lib/cli.js"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/keyv": {
+ "version": "4.5.4",
+ "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz",
+ "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "json-buffer": "3.0.1"
+ }
+ },
+ "node_modules/leven": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz",
+ "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/levn": {
+ "version": "0.4.1",
+ "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
+ "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1",
+ "type-check": "~0.4.0"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/lines-and-columns": {
+ "version": "1.2.4",
+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/linkify-it": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz",
+ "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
+ "license": "MIT",
+ "dependencies": {
+ "uc.micro": "^2.0.0"
+ }
+ },
+ "node_modules/load-json-file": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz",
+ "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "graceful-fs": "^4.1.2",
+ "parse-json": "^4.0.0",
+ "pify": "^3.0.0",
+ "strip-bom": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/load-json-file/node_modules/parse-json": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
+ "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "error-ex": "^1.3.1",
+ "json-parse-better-errors": "^1.0.1"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/load-json-file/node_modules/strip-bom": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
+ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/locate-path": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz",
+ "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/lodash.debounce": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz",
+ "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.memoize": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz",
+ "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lodash.throttle": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz",
+ "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/lru-cache": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz",
+ "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "yallist": "^3.0.2"
+ }
+ },
+ "node_modules/make-dir": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz",
+ "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "semver": "^7.5.3"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/make-dir/node_modules/semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/make-error": {
+ "version": "1.3.6",
+ "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz",
+ "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/makeerror": {
+ "version": "1.0.12",
+ "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz",
+ "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "tmpl": "1.0.5"
+ }
+ },
+ "node_modules/markdown-it": {
+ "version": "14.1.1",
+ "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz",
+ "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==",
+ "license": "MIT",
+ "dependencies": {
+ "argparse": "^2.0.1",
+ "entities": "^4.4.0",
+ "linkify-it": "^5.0.0",
+ "mdurl": "^2.0.0",
+ "punycode.js": "^2.3.1",
+ "uc.micro": "^2.1.0"
+ },
+ "bin": {
+ "markdown-it": "bin/markdown-it.mjs"
+ }
+ },
+ "node_modules/markdown-it-task-lists": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/markdown-it-task-lists/-/markdown-it-task-lists-2.1.1.tgz",
+ "integrity": "sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA==",
+ "license": "ISC"
+ },
+ "node_modules/markdown-it/node_modules/argparse": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+ "license": "Python-2.0"
+ },
+ "node_modules/math-intrinsics": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
+ "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/mdurl": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz",
+ "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==",
+ "license": "MIT"
+ },
+ "node_modules/memorystream": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
+ "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==",
+ "dev": true,
+ "engines": {
+ "node": ">= 0.10.0"
+ }
+ },
+ "node_modules/merge-stream": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
+ "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/micromatch": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz",
+ "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==",
+ "license": "MIT",
+ "dependencies": {
+ "braces": "^3.0.3",
+ "picomatch": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=8.6"
+ }
+ },
+ "node_modules/mimic-fn": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
+ "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/minimatch": {
+ "version": "10.2.4",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz",
+ "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "brace-expansion": "^5.0.2"
+ },
+ "engines": {
+ "node": "18 || 20 || >=22"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/minimist": {
+ "version": "1.2.8",
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
+ "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
+ "dev": true,
+ "license": "MIT",
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/minipass": {
+ "version": "7.1.3",
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz",
+ "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "engines": {
+ "node": ">=16 || 14 >=14.17"
+ }
+ },
+ "node_modules/ms": {
+ "version": "2.1.3",
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
+ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/napi-postinstall": {
+ "version": "0.3.4",
+ "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.3.4.tgz",
+ "integrity": "sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "napi-postinstall": "lib/cli.js"
+ },
+ "engines": {
+ "node": "^12.20.0 || ^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/napi-postinstall"
+ }
+ },
+ "node_modules/natural-compare": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz",
+ "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/neo-async": {
+ "version": "2.6.2",
+ "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz",
+ "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/nice-try": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
+ "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/node-addon-api": {
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz",
+ "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==",
+ "dev": true,
+ "license": "MIT",
+ "optional": true
+ },
+ "node_modules/node-int64": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz",
+ "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/node-releases": {
+ "version": "2.0.36",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.36.tgz",
+ "integrity": "sha512-TdC8FSgHz8Mwtw9g5L4gR/Sh9XhSP/0DEkQxfEFXOpiul5IiHgHan2VhYYb6agDSfp4KuvltmGApc8HMgUrIkA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/normalize-package-data": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
+ "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "hosted-git-info": "^2.1.4",
+ "resolve": "^1.10.0",
+ "semver": "2 || 3 || 4 || 5",
+ "validate-npm-package-license": "^3.0.1"
+ }
+ },
+ "node_modules/normalize-package-data/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/normalize-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-run-all": {
+ "version": "4.1.5",
+ "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
+ "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "chalk": "^2.4.1",
+ "cross-spawn": "^6.0.5",
+ "memorystream": "^0.3.1",
+ "minimatch": "^3.0.4",
+ "pidtree": "^0.3.0",
+ "read-pkg": "^3.0.0",
+ "shell-quote": "^1.6.1",
+ "string.prototype.padend": "^3.0.0"
+ },
+ "bin": {
+ "npm-run-all": "bin/npm-run-all/index.js",
+ "run-p": "bin/run-p/index.js",
+ "run-s": "bin/run-s/index.js"
+ },
+ "engines": {
+ "node": ">= 4"
+ }
+ },
+ "node_modules/npm-run-all/node_modules/ansi-styles": {
+ "version": "3.2.1",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz",
+ "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-convert": "^1.9.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-run-all/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/npm-run-all/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/npm-run-all/node_modules/chalk": {
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz",
+ "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^3.2.1",
+ "escape-string-regexp": "^1.0.5",
+ "supports-color": "^5.3.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-run-all/node_modules/color-convert": {
+ "version": "1.9.3",
+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
+ "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "color-name": "1.1.3"
+ }
+ },
+ "node_modules/npm-run-all/node_modules/color-name": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
+ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/npm-run-all/node_modules/cross-spawn": {
+ "version": "6.0.6",
+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz",
+ "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "nice-try": "^1.0.4",
+ "path-key": "^2.0.1",
+ "semver": "^5.5.0",
+ "shebang-command": "^1.2.0",
+ "which": "^1.2.9"
+ },
+ "engines": {
+ "node": ">=4.8"
+ }
+ },
+ "node_modules/npm-run-all/node_modules/escape-string-regexp": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz",
+ "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.8.0"
+ }
+ },
+ "node_modules/npm-run-all/node_modules/has-flag": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz",
+ "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-run-all/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/npm-run-all/node_modules/path-key": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
+ "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-run-all/node_modules/semver": {
+ "version": "5.7.2",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz",
+ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver"
+ }
+ },
+ "node_modules/npm-run-all/node_modules/shebang-command": {
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
+ "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^1.0.0"
+ },
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-run-all/node_modules/shebang-regex": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
+ "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/npm-run-all/node_modules/supports-color": {
+ "version": "5.5.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
+ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/npm-run-all/node_modules/which": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "which": "bin/which"
+ }
+ },
+ "node_modules/npm-run-path": {
+ "version": "4.0.1",
+ "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz",
+ "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "path-key": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/nwsapi": {
+ "version": "2.2.23",
+ "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz",
+ "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/object-inspect": {
+ "version": "1.13.4",
+ "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz",
+ "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/object-keys": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
+ "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/object.assign": {
+ "version": "4.1.7",
+ "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz",
+ "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.3",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0",
+ "has-symbols": "^1.1.0",
+ "object-keys": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/once": {
+ "version": "1.4.0",
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+ "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "wrappy": "1"
+ }
+ },
+ "node_modules/onetime": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz",
+ "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "mimic-fn": "^2.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/optionator": {
+ "version": "0.9.4",
+ "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz",
+ "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "deep-is": "^0.1.3",
+ "fast-levenshtein": "^2.0.6",
+ "levn": "^0.4.1",
+ "prelude-ls": "^1.2.1",
+ "type-check": "^0.4.0",
+ "word-wrap": "^1.2.5"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/own-keys": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz",
+ "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "get-intrinsic": "^1.2.6",
+ "object-keys": "^1.1.1",
+ "safe-push-apply": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/p-limit": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz",
+ "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "yocto-queue": "^0.1.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-locate": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz",
+ "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^3.0.2"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/p-try": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+ "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/package-json-from-dist": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz",
+ "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==",
+ "dev": true,
+ "license": "BlueOak-1.0.0"
+ },
+ "node_modules/parse-json": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
+ "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@babel/code-frame": "^7.0.0",
+ "error-ex": "^1.3.1",
+ "json-parse-even-better-errors": "^2.3.0",
+ "lines-and-columns": "^1.1.6"
+ },
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/parse5": {
+ "version": "7.3.0",
+ "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz",
+ "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "entities": "^6.0.0"
+ },
+ "funding": {
+ "url": "https://github.com/inikulin/parse5?sponsor=1"
+ }
+ },
+ "node_modules/parse5/node_modules/entities": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.1.tgz",
+ "integrity": "sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=0.12"
+ },
+ "funding": {
+ "url": "https://github.com/fb55/entities?sponsor=1"
+ }
+ },
+ "node_modules/path-exists": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+ "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-is-absolute": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+ "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/path-key": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",
+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/path-parse": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
+ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/path-scurry": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",
+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",
+ "dev": true,
+ "license": "BlueOak-1.0.0",
+ "dependencies": {
+ "lru-cache": "^10.2.0",
+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"
+ },
+ "engines": {
+ "node": ">=16 || 14 >=14.18"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/path-scurry/node_modules/lru-cache": {
+ "version": "10.4.3",
+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",
+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/path-type": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
+ "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "pify": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/picocolors": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz",
+ "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==",
+ "license": "ISC"
+ },
+ "node_modules/picomatch": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz",
+ "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8.6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/jonschlinkert"
+ }
+ },
+ "node_modules/pidtree": {
+ "version": "0.3.1",
+ "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz",
+ "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==",
+ "dev": true,
+ "license": "MIT",
+ "bin": {
+ "pidtree": "bin/pidtree.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
+ "node_modules/pify": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
+ "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/pirates": {
+ "version": "4.0.7",
+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.7.tgz",
+ "integrity": "sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 6"
+ }
+ },
+ "node_modules/pkg-dir": {
+ "version": "4.2.0",
+ "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+ "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "find-up": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/find-up": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+ "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^5.0.0",
+ "path-exists": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/locate-path": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+ "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/pkg-dir/node_modules/p-locate": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+ "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/possible-typed-array-names": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz",
+ "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/prelude-ls": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz",
+ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.8.0"
+ }
+ },
+ "node_modules/pretty-format": {
+ "version": "30.2.0",
+ "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-30.2.0.tgz",
+ "integrity": "sha512-9uBdv/B4EefsuAL+pWqueZyZS2Ba+LxfFeQ9DN14HU4bN8bhaxKdkpjpB6fs9+pSjIBu+FXQHImEg8j/Lw0+vA==",
+ "license": "MIT",
+ "dependencies": {
+ "@jest/schemas": "30.0.5",
+ "ansi-styles": "^5.2.0",
+ "react-is": "^18.3.1"
+ },
+ "engines": {
+ "node": "^18.14.0 || ^20.0.0 || ^22.0.0 || >=24.0.0"
+ }
+ },
+ "node_modules/pretty-format/node_modules/ansi-styles": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
+ "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
+ }
+ },
+ "node_modules/punycode": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz",
+ "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/punycode.js": {
+ "version": "2.3.1",
+ "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz",
+ "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/pure-rand": {
+ "version": "7.0.1",
+ "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-7.0.1.tgz",
+ "integrity": "sha512-oTUZM/NAZS8p7ANR3SHh30kXB+zK2r2BPcEn/awJIbOvq82WoMN4p62AWWp3Hhw50G0xMsw1mhIBLqHw64EcNQ==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "individual",
+ "url": "https://github.com/sponsors/dubzzz"
+ },
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/fast-check"
+ }
+ ],
+ "license": "MIT"
+ },
+ "node_modules/react-is": {
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
+ "license": "MIT"
+ },
+ "node_modules/read-pkg": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
+ "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "load-json-file": "^4.0.0",
+ "normalize-package-data": "^2.3.2",
+ "path-type": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/readdirp": {
+ "version": "3.6.0",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",
+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "picomatch": "^2.2.1"
+ },
+ "engines": {
+ "node": ">=8.10.0"
+ }
+ },
+ "node_modules/reflect.getprototypeof": {
+ "version": "1.0.10",
+ "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz",
+ "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.9",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0",
+ "get-intrinsic": "^1.2.7",
+ "get-proto": "^1.0.1",
+ "which-builtin-type": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/regexp.prototype.flags": {
+ "version": "1.5.4",
+ "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz",
+ "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "define-properties": "^1.2.1",
+ "es-errors": "^1.3.0",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "set-function-name": "^2.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/require-directory": {
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
+ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/require-main-filename": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
+ "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/resolve": {
+ "version": "1.22.11",
+ "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz",
+ "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-core-module": "^2.16.1",
+ "path-parse": "^1.0.7",
+ "supports-preserve-symlinks-flag": "^1.0.0"
+ },
+ "bin": {
+ "resolve": "bin/resolve"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/resolve-cwd": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz",
+ "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "resolve-from": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/resolve-from": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz",
+ "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/rrweb-cssom": {
+ "version": "0.8.0",
+ "resolved": "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.8.0.tgz",
+ "integrity": "sha512-guoltQEx+9aMf2gDZ0s62EcV8lsXR+0w8915TC3ITdn2YueuNjdAYh/levpU9nFaoChh9RUS5ZdQMrKfVEN9tw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/safe-array-concat": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz",
+ "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "get-intrinsic": "^1.2.6",
+ "has-symbols": "^1.1.0",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">=0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-push-apply": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz",
+ "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "isarray": "^2.0.5"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safe-regex-test": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz",
+ "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "is-regex": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/safer-buffer": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/sass": {
+ "version": "1.97.3",
+ "resolved": "https://registry.npmjs.org/sass/-/sass-1.97.3.tgz",
+ "integrity": "sha512-fDz1zJpd5GycprAbu4Q2PV/RprsRtKC/0z82z0JLgdytmcq0+ujJbJ/09bPGDxCLkKY3Np5cRAOcWiVkLXJURg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "chokidar": "^4.0.0",
+ "immutable": "^5.0.2",
+ "source-map-js": ">=0.6.2 <2.0.0"
+ },
+ "bin": {
+ "sass": "sass.js"
+ },
+ "engines": {
+ "node": ">=14.0.0"
+ },
+ "optionalDependencies": {
+ "@parcel/watcher": "^2.4.1"
+ }
+ },
+ "node_modules/sass/node_modules/chokidar": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz",
+ "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "readdirp": "^4.0.1"
+ },
+ "engines": {
+ "node": ">= 14.16.0"
+ },
+ "funding": {
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/sass/node_modules/readdirp": {
+ "version": "4.1.2",
+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz",
+ "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 14.18.0"
+ },
+ "funding": {
+ "type": "individual",
+ "url": "https://paulmillr.com/funding/"
+ }
+ },
+ "node_modules/saxes": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz",
+ "integrity": "sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "xmlchars": "^2.2.0"
+ },
+ "engines": {
+ "node": ">=v12.22.7"
+ }
+ },
+ "node_modules/semver": {
+ "version": "6.3.1",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz",
+ "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ }
+ },
+ "node_modules/set-blocking": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
+ "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==",
+ "dev": true,
+ "license": "ISC"
+ },
+ "node_modules/set-function-length": {
+ "version": "1.2.2",
+ "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz",
+ "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "function-bind": "^1.1.2",
+ "get-intrinsic": "^1.2.4",
+ "gopd": "^1.0.1",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-function-name": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz",
+ "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "define-data-property": "^1.1.4",
+ "es-errors": "^1.3.0",
+ "functions-have-names": "^1.2.3",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/set-proto": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz",
+ "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "dunder-proto": "^1.0.1",
+ "es-errors": "^1.3.0",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/shebang-command": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",
+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "shebang-regex": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shebang-regex": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",
+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/shell-quote": {
+ "version": "1.8.3",
+ "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz",
+ "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz",
+ "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3",
+ "side-channel-list": "^1.0.0",
+ "side-channel-map": "^1.0.1",
+ "side-channel-weakmap": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-list": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz",
+ "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-map": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz",
+ "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/side-channel-weakmap": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz",
+ "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "es-errors": "^1.3.0",
+ "get-intrinsic": "^1.2.5",
+ "object-inspect": "^1.13.3",
+ "side-channel-map": "^1.0.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/signal-exit": {
+ "version": "4.1.0",
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",
+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=14"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/slash": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz",
+ "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/snabbdom": {
+ "version": "3.6.3",
+ "resolved": "https://registry.npmjs.org/snabbdom/-/snabbdom-3.6.3.tgz",
+ "integrity": "sha512-W2lHLLw2qR2Vv0DcMmcxXqcfdBaIcoN+y/86SmHv8fn4DazEQSH6KN3TjZcWvwujW56OHiiirsbHWZb4vx/0fg==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=12.17.0"
+ }
+ },
+ "node_modules/sortablejs": {
+ "version": "1.15.7",
+ "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.7.tgz",
+ "integrity": "sha512-Kk8wLQPlS+yi1ZEf48a4+fzHa4yxjC30M/Sr2AnQu+f/MPwvvX9XjZ6OWejiz8crBsLwSq8GHqaxaET7u6ux0A==",
+ "license": "MIT"
+ },
+ "node_modules/source-map": {
+ "version": "0.6.1",
+ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz",
+ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-js": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "engines": {
+ "node": ">=0.10.0"
+ }
+ },
+ "node_modules/source-map-support": {
+ "version": "0.5.13",
+ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz",
+ "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "buffer-from": "^1.0.0",
+ "source-map": "^0.6.0"
+ }
+ },
+ "node_modules/spdx-correct": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz",
+ "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-expression-parse": "^3.0.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-exceptions": {
+ "version": "2.5.0",
+ "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz",
+ "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==",
+ "dev": true,
+ "license": "CC-BY-3.0"
+ },
+ "node_modules/spdx-expression-parse": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
+ "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "spdx-exceptions": "^2.1.0",
+ "spdx-license-ids": "^3.0.0"
+ }
+ },
+ "node_modules/spdx-license-ids": {
+ "version": "3.0.23",
+ "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.23.tgz",
+ "integrity": "sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==",
+ "dev": true,
+ "license": "CC0-1.0"
+ },
+ "node_modules/sprintf-js": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+ "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/stack-utils": {
+ "version": "2.0.6",
+ "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz",
+ "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==",
+ "license": "MIT",
+ "dependencies": {
+ "escape-string-regexp": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/stack-utils/node_modules/escape-string-regexp": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz",
+ "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/stop-iteration-iterator": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz",
+ "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "es-errors": "^1.3.0",
+ "internal-slot": "^1.1.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
+ },
+ "node_modules/string-length": {
+ "version": "4.0.2",
+ "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz",
+ "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "char-regex": "^1.0.2",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ }
+ },
+ "node_modules/string-length/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-length/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",
+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "eastasianwidth": "^0.2.0",
+ "emoji-regex": "^9.2.2",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/string-width-cjs": {
+ "name": "string-width",
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string-width-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/string-width-cjs/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/string.prototype.padend": {
+ "version": "3.1.6",
+ "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.6.tgz",
+ "integrity": "sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.2",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trim": {
+ "version": "1.2.10",
+ "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz",
+ "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "define-data-property": "^1.1.4",
+ "define-properties": "^1.2.1",
+ "es-abstract": "^1.23.5",
+ "es-object-atoms": "^1.0.0",
+ "has-property-descriptors": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimend": {
+ "version": "1.0.9",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz",
+ "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.2",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/string.prototype.trimstart": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz",
+ "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "define-properties": "^1.2.1",
+ "es-object-atoms": "^1.0.0"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/strip-ansi": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.2.0.tgz",
+ "integrity": "sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^6.2.2"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"
+ }
+ },
+ "node_modules/strip-ansi-cjs": {
+ "name": "strip-ansi",
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-bom": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz",
+ "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/strip-final-newline": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz",
+ "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/strip-json-comments": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz",
+ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/style-mod": {
+ "version": "4.1.3",
+ "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.3.tgz",
+ "integrity": "sha512-i/n8VsZydrugj3Iuzll8+x/00GH2vnYsk1eomD8QiRrSAeW6ItbCQDtfXCeJHd0iwiNagqjQkvpvREEPtW3IoQ==",
+ "license": "MIT"
+ },
+ "node_modules/supports-color": {
+ "version": "7.2.0",
+ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
+ "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==",
+ "license": "MIT",
+ "dependencies": {
+ "has-flag": "^4.0.0"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/supports-preserve-symlinks-flag": {
+ "version": "1.0.0",
+ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
+ "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/symbol-tree": {
+ "version": "3.2.4",
+ "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz",
+ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/synckit": {
+ "version": "0.11.12",
+ "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.11.12.tgz",
+ "integrity": "sha512-Bh7QjT8/SuKUIfObSXNHNSK6WHo6J1tHCqJsuaFDP7gP0fkzSfTxI8y85JrppZ0h8l0maIgc2tfuZQ6/t3GtnQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@pkgr/core": "^0.2.9"
+ },
+ "engines": {
+ "node": "^14.18.0 || >=16.0.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/synckit"
+ }
+ },
+ "node_modules/test-exclude": {
+ "version": "6.0.0",
+ "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz",
+ "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@istanbuljs/schema": "^0.1.2",
+ "glob": "^7.1.4",
+ "minimatch": "^3.0.4"
+ },
+ "engines": {
+ "node": ">=8"
+ }
+ },
+ "node_modules/test-exclude/node_modules/balanced-match": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/test-exclude/node_modules/brace-expansion": {
+ "version": "1.1.12",
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz",
+ "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "balanced-match": "^1.0.0",
+ "concat-map": "0.0.1"
+ }
+ },
+ "node_modules/test-exclude/node_modules/glob": {
+ "version": "7.2.3",
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+ "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+ "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "fs.realpath": "^1.0.0",
+ "inflight": "^1.0.4",
+ "inherits": "2",
+ "minimatch": "^3.1.1",
+ "once": "^1.3.0",
+ "path-is-absolute": "^1.0.0"
+ },
+ "engines": {
+ "node": "*"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/isaacs"
+ }
+ },
+ "node_modules/test-exclude/node_modules/minimatch": {
+ "version": "3.1.5",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
+ "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "brace-expansion": "^1.1.7"
+ },
+ "engines": {
+ "node": "*"
+ }
+ },
+ "node_modules/tldts": {
+ "version": "6.1.86",
+ "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz",
+ "integrity": "sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tldts-core": "^6.1.86"
+ },
+ "bin": {
+ "tldts": "bin/cli.js"
+ }
+ },
+ "node_modules/tldts-core": {
+ "version": "6.1.86",
+ "resolved": "https://registry.npmjs.org/tldts-core/-/tldts-core-6.1.86.tgz",
+ "integrity": "sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/tmpl": {
+ "version": "1.0.5",
+ "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz",
+ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==",
+ "dev": true,
+ "license": "BSD-3-Clause"
+ },
+ "node_modules/to-regex-range": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "license": "MIT",
+ "dependencies": {
+ "is-number": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=8.0"
+ }
+ },
+ "node_modules/tough-cookie": {
+ "version": "5.1.2",
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-5.1.2.tgz",
+ "integrity": "sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==",
+ "dev": true,
+ "license": "BSD-3-Clause",
+ "dependencies": {
+ "tldts": "^6.1.32"
+ },
+ "engines": {
+ "node": ">=16"
+ }
+ },
+ "node_modules/tr46": {
+ "version": "5.1.1",
+ "resolved": "https://registry.npmjs.org/tr46/-/tr46-5.1.1.tgz",
+ "integrity": "sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "punycode": "^2.3.1"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
+ "node_modules/ts-jest": {
+ "version": "29.4.6",
+ "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-29.4.6.tgz",
+ "integrity": "sha512-fSpWtOO/1AjSNQguk43hb/JCo16oJDnMJf3CdEGNkqsEX3t0KX96xvyX1D7PfLCpVoKu4MfVrqUkFyblYoY4lA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "bs-logger": "^0.2.6",
+ "fast-json-stable-stringify": "^2.1.0",
+ "handlebars": "^4.7.8",
+ "json5": "^2.2.3",
+ "lodash.memoize": "^4.1.2",
+ "make-error": "^1.3.6",
+ "semver": "^7.7.3",
+ "type-fest": "^4.41.0",
+ "yargs-parser": "^21.1.1"
+ },
+ "bin": {
+ "ts-jest": "cli.js"
+ },
+ "engines": {
+ "node": "^14.15.0 || ^16.10.0 || ^18.0.0 || >=20.0.0"
+ },
+ "peerDependencies": {
+ "@babel/core": ">=7.0.0-beta.0 <8",
+ "@jest/transform": "^29.0.0 || ^30.0.0",
+ "@jest/types": "^29.0.0 || ^30.0.0",
+ "babel-jest": "^29.0.0 || ^30.0.0",
+ "jest": "^29.0.0 || ^30.0.0",
+ "jest-util": "^29.0.0 || ^30.0.0",
+ "typescript": ">=4.3 <6"
+ },
+ "peerDependenciesMeta": {
+ "@babel/core": {
+ "optional": true
+ },
+ "@jest/transform": {
+ "optional": true
+ },
+ "@jest/types": {
+ "optional": true
+ },
+ "babel-jest": {
+ "optional": true
+ },
+ "esbuild": {
+ "optional": true
+ },
+ "jest-util": {
+ "optional": true
+ }
+ }
},
- "markdown-it-task-lists": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/markdown-it-task-lists/-/markdown-it-task-lists-2.1.1.tgz",
- "integrity": "sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA=="
+ "node_modules/ts-jest/node_modules/semver": {
+ "version": "7.7.4",
+ "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz",
+ "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==",
+ "dev": true,
+ "license": "ISC",
+ "bin": {
+ "semver": "bin/semver.js"
+ },
+ "engines": {
+ "node": ">=10"
+ }
},
- "mdurl": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz",
- "integrity": "sha1-/oWy7HWlkDfyrf7BAP1sYBdhFS4="
+ "node_modules/ts-jest/node_modules/type-fest": {
+ "version": "4.41.0",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz",
+ "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==",
+ "dev": true,
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=16"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
- "memorystream": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz",
- "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=",
- "dev": true
+ "node_modules/ts-node": {
+ "version": "10.9.2",
+ "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz",
+ "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@cspotcode/source-map-support": "^0.8.0",
+ "@tsconfig/node10": "^1.0.7",
+ "@tsconfig/node12": "^1.0.7",
+ "@tsconfig/node14": "^1.0.0",
+ "@tsconfig/node16": "^1.0.2",
+ "acorn": "^8.4.1",
+ "acorn-walk": "^8.1.1",
+ "arg": "^4.1.0",
+ "create-require": "^1.1.0",
+ "diff": "^4.0.1",
+ "make-error": "^1.1.1",
+ "v8-compile-cache-lib": "^3.0.1",
+ "yn": "3.1.1"
+ },
+ "bin": {
+ "ts-node": "dist/bin.js",
+ "ts-node-cwd": "dist/bin-cwd.js",
+ "ts-node-esm": "dist/bin-esm.js",
+ "ts-node-script": "dist/bin-script.js",
+ "ts-node-transpile-only": "dist/bin-transpile.js",
+ "ts-script": "dist/bin-script-deprecated.js"
+ },
+ "peerDependencies": {
+ "@swc/core": ">=1.2.50",
+ "@swc/wasm": ">=1.2.50",
+ "@types/node": "*",
+ "typescript": ">=2.7"
+ },
+ "peerDependenciesMeta": {
+ "@swc/core": {
+ "optional": true
+ },
+ "@swc/wasm": {
+ "optional": true
+ }
+ }
},
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
+ "node_modules/tslib": {
+ "version": "2.8.1",
+ "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
+ "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"dev": true,
- "requires": {
- "brace-expansion": "^1.1.7"
+ "license": "0BSD",
+ "optional": true
+ },
+ "node_modules/type-check": {
+ "version": "0.4.0",
+ "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz",
+ "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "prelude-ls": "^1.2.1"
+ },
+ "engines": {
+ "node": ">= 0.8.0"
}
},
- "nice-try": {
- "version": "1.0.5",
- "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz",
- "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==",
- "dev": true
+ "node_modules/type-detect": {
+ "version": "4.0.8",
+ "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz",
+ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
},
- "normalize-package-data": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz",
- "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==",
+ "node_modules/type-fest": {
+ "version": "0.21.3",
+ "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz",
+ "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==",
"dev": true,
- "requires": {
- "hosted-git-info": "^2.1.4",
- "resolve": "^1.10.0",
- "semver": "2 || 3 || 4 || 5",
- "validate-npm-package-license": "^3.0.1"
+ "license": "(MIT OR CC0-1.0)",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "normalize-path": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",
- "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",
- "dev": true
+ "node_modules/typed-array-buffer": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz",
+ "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "es-errors": "^1.3.0",
+ "is-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ }
},
- "npm-run-all": {
- "version": "4.1.5",
- "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz",
- "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==",
+ "node_modules/typed-array-byte-length": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz",
+ "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==",
"dev": true,
- "requires": {
- "ansi-styles": "^3.2.1",
- "chalk": "^2.4.1",
- "cross-spawn": "^6.0.5",
- "memorystream": "^0.3.1",
- "minimatch": "^3.0.4",
- "pidtree": "^0.3.0",
- "read-pkg": "^3.0.0",
- "shell-quote": "^1.6.1",
- "string.prototype.padend": "^3.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.8",
+ "for-each": "^0.3.3",
+ "gopd": "^1.2.0",
+ "has-proto": "^1.2.0",
+ "is-typed-array": "^1.1.14"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "object-inspect": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz",
- "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==",
- "dev": true
+ "node_modules/typed-array-byte-offset": {
+ "version": "1.0.4",
+ "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz",
+ "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "for-each": "^0.3.3",
+ "gopd": "^1.2.0",
+ "has-proto": "^1.2.0",
+ "is-typed-array": "^1.1.15",
+ "reflect.getprototypeof": "^1.0.9"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
- "object-keys": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz",
- "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==",
- "dev": true
+ "node_modules/typed-array-length": {
+ "version": "1.0.7",
+ "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz",
+ "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bind": "^1.0.7",
+ "for-each": "^0.3.3",
+ "gopd": "^1.0.1",
+ "is-typed-array": "^1.1.13",
+ "possible-typed-array-names": "^1.0.0",
+ "reflect.getprototypeof": "^1.0.6"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
- "object.assign": {
- "version": "4.1.0",
- "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz",
- "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==",
+ "node_modules/typescript": {
+ "version": "5.9.3",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
+ "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"dev": true,
- "requires": {
- "define-properties": "^1.1.2",
- "function-bind": "^1.1.1",
- "has-symbols": "^1.0.0",
- "object-keys": "^1.0.11"
+ "license": "Apache-2.0",
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
}
},
- "opts": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz",
- "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==",
- "dev": true
+ "node_modules/uc.micro": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz",
+ "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
+ "license": "MIT"
},
- "p-limit": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
- "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "node_modules/uglify-js": {
+ "version": "3.19.3",
+ "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz",
+ "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==",
"dev": true,
- "requires": {
- "p-try": "^2.0.0"
+ "license": "BSD-2-Clause",
+ "optional": true,
+ "bin": {
+ "uglifyjs": "bin/uglifyjs"
+ },
+ "engines": {
+ "node": ">=0.8.0"
}
},
- "p-locate": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
- "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "node_modules/unbox-primitive": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz",
+ "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==",
"dev": true,
- "requires": {
- "p-limit": "^2.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.3",
+ "has-bigints": "^1.0.2",
+ "has-symbols": "^1.1.0",
+ "which-boxed-primitive": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "p-try": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
- "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
- "dev": true
+ "node_modules/undici-types": {
+ "version": "7.18.2",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.18.2.tgz",
+ "integrity": "sha512-AsuCzffGHJybSaRrmr5eHr81mwJU3kjw6M+uprWvCXiNeN9SOGwQ3Jn8jb8m3Z6izVgknn1R0FTCEAP2QrLY/w==",
+ "license": "MIT"
},
- "parse-json": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz",
- "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=",
+ "node_modules/unrs-resolver": {
+ "version": "1.11.1",
+ "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.11.1.tgz",
+ "integrity": "sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==",
"dev": true,
- "requires": {
- "error-ex": "^1.3.1",
- "json-parse-better-errors": "^1.0.1"
+ "hasInstallScript": true,
+ "license": "MIT",
+ "dependencies": {
+ "napi-postinstall": "^0.3.0"
+ },
+ "funding": {
+ "url": "https://opencollective.com/unrs-resolver"
+ },
+ "optionalDependencies": {
+ "@unrs/resolver-binding-android-arm-eabi": "1.11.1",
+ "@unrs/resolver-binding-android-arm64": "1.11.1",
+ "@unrs/resolver-binding-darwin-arm64": "1.11.1",
+ "@unrs/resolver-binding-darwin-x64": "1.11.1",
+ "@unrs/resolver-binding-freebsd-x64": "1.11.1",
+ "@unrs/resolver-binding-linux-arm-gnueabihf": "1.11.1",
+ "@unrs/resolver-binding-linux-arm-musleabihf": "1.11.1",
+ "@unrs/resolver-binding-linux-arm64-gnu": "1.11.1",
+ "@unrs/resolver-binding-linux-arm64-musl": "1.11.1",
+ "@unrs/resolver-binding-linux-ppc64-gnu": "1.11.1",
+ "@unrs/resolver-binding-linux-riscv64-gnu": "1.11.1",
+ "@unrs/resolver-binding-linux-riscv64-musl": "1.11.1",
+ "@unrs/resolver-binding-linux-s390x-gnu": "1.11.1",
+ "@unrs/resolver-binding-linux-x64-gnu": "1.11.1",
+ "@unrs/resolver-binding-linux-x64-musl": "1.11.1",
+ "@unrs/resolver-binding-wasm32-wasi": "1.11.1",
+ "@unrs/resolver-binding-win32-arm64-msvc": "1.11.1",
+ "@unrs/resolver-binding-win32-ia32-msvc": "1.11.1",
+ "@unrs/resolver-binding-win32-x64-msvc": "1.11.1"
+ }
+ },
+ "node_modules/update-browserslist-db": {
+ "version": "1.2.3",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz",
+ "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==",
+ "dev": true,
+ "funding": [
+ {
+ "type": "opencollective",
+ "url": "https://opencollective.com/browserslist"
+ },
+ {
+ "type": "tidelift",
+ "url": "https://tidelift.com/funding/github/npm/browserslist"
+ },
+ {
+ "type": "github",
+ "url": "https://github.com/sponsors/ai"
+ }
+ ],
+ "license": "MIT",
+ "dependencies": {
+ "escalade": "^3.2.0",
+ "picocolors": "^1.1.1"
+ },
+ "bin": {
+ "update-browserslist-db": "cli.js"
+ },
+ "peerDependencies": {
+ "browserslist": ">= 4.21.0"
}
},
- "path-exists": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
- "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=",
- "dev": true
+ "node_modules/uri-js": {
+ "version": "4.4.1",
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz",
+ "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "dependencies": {
+ "punycode": "^2.1.0"
+ }
},
- "path-key": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz",
- "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=",
- "dev": true
+ "node_modules/v8-compile-cache-lib": {
+ "version": "3.0.1",
+ "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz",
+ "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==",
+ "dev": true,
+ "license": "MIT"
},
- "path-parse": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz",
- "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==",
- "dev": true
+ "node_modules/v8-to-istanbul": {
+ "version": "9.3.0",
+ "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz",
+ "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "@jridgewell/trace-mapping": "^0.3.12",
+ "@types/istanbul-lib-coverage": "^2.0.1",
+ "convert-source-map": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=10.12.0"
+ }
},
- "path-type": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz",
- "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==",
+ "node_modules/validate-npm-package-license": {
+ "version": "3.0.4",
+ "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
+ "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
"dev": true,
- "requires": {
- "pify": "^3.0.0"
+ "license": "Apache-2.0",
+ "dependencies": {
+ "spdx-correct": "^3.0.0",
+ "spdx-expression-parse": "^3.0.0"
}
},
- "picomatch": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz",
- "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==",
- "dev": true
+ "node_modules/w3c-keyname": {
+ "version": "2.2.8",
+ "resolved": "https://registry.npmjs.org/w3c-keyname/-/w3c-keyname-2.2.8.tgz",
+ "integrity": "sha512-dpojBhNsCNN7T82Tm7k26A6G9ML3NkhDsnw9n/eoxSRlVBB4CEtIQ/KTCLI2Fwf3ataSXRhYFkQi3SlnFwPvPQ==",
+ "license": "MIT"
},
- "pidtree": {
- "version": "0.3.1",
- "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz",
- "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==",
- "dev": true
+ "node_modules/w3c-xmlserializer": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-5.0.0.tgz",
+ "integrity": "sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "xml-name-validator": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
},
- "pify": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
- "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=",
- "dev": true
+ "node_modules/walker": {
+ "version": "1.0.8",
+ "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz",
+ "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==",
+ "dev": true,
+ "license": "Apache-2.0",
+ "dependencies": {
+ "makeerror": "1.0.12"
+ }
},
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "dev": true
+ "node_modules/webidl-conversions": {
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz",
+ "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==",
+ "dev": true,
+ "license": "BSD-2-Clause",
+ "engines": {
+ "node": ">=12"
+ }
},
- "read-pkg": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz",
- "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=",
+ "node_modules/whatwg-encoding": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz",
+ "integrity": "sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==",
+ "deprecated": "Use @exodus/bytes instead for a more spec-conformant and faster implementation",
"dev": true,
- "requires": {
- "load-json-file": "^4.0.0",
- "normalize-package-data": "^2.3.2",
- "path-type": "^3.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "iconv-lite": "0.6.3"
+ },
+ "engines": {
+ "node": ">=18"
}
},
- "readdirp": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.4.0.tgz",
- "integrity": "sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ==",
+ "node_modules/whatwg-mimetype": {
+ "version": "4.0.0",
+ "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz",
+ "integrity": "sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==",
"dev": true,
- "requires": {
- "picomatch": "^2.2.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=18"
}
},
- "require-directory": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz",
- "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=",
- "dev": true
+ "node_modules/whatwg-url": {
+ "version": "14.2.0",
+ "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-14.2.0.tgz",
+ "integrity": "sha512-De72GdQZzNTUBBChsXueQUnPKDkg/5A5zp7pFDuQAj5UFoENpiACU0wlCvzpAGnTkj++ihpKwKyYewn/XNUbKw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "tr46": "^5.1.0",
+ "webidl-conversions": "^7.0.0"
+ },
+ "engines": {
+ "node": ">=18"
+ }
},
- "require-main-filename": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz",
- "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==",
- "dev": true
+ "node_modules/which": {
+ "version": "2.0.2",
+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",
+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",
+ "dev": true,
+ "license": "ISC",
+ "dependencies": {
+ "isexe": "^2.0.0"
+ },
+ "bin": {
+ "node-which": "bin/node-which"
+ },
+ "engines": {
+ "node": ">= 8"
+ }
+ },
+ "node_modules/which-boxed-primitive": {
+ "version": "1.1.1",
+ "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz",
+ "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-bigint": "^1.1.0",
+ "is-boolean-object": "^1.2.1",
+ "is-number-object": "^1.1.1",
+ "is-string": "^1.1.1",
+ "is-symbol": "^1.1.1"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-builtin-type": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz",
+ "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "call-bound": "^1.0.2",
+ "function.prototype.name": "^1.1.6",
+ "has-tostringtag": "^1.0.2",
+ "is-async-function": "^2.0.0",
+ "is-date-object": "^1.1.0",
+ "is-finalizationregistry": "^1.1.0",
+ "is-generator-function": "^1.0.10",
+ "is-regex": "^1.2.1",
+ "is-weakref": "^1.0.2",
+ "isarray": "^2.0.5",
+ "which-boxed-primitive": "^1.1.0",
+ "which-collection": "^1.0.2",
+ "which-typed-array": "^1.1.16"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
+ },
+ "node_modules/which-collection": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz",
+ "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "is-map": "^2.0.3",
+ "is-set": "^2.0.3",
+ "is-weakmap": "^2.0.2",
+ "is-weakset": "^2.0.3"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
+ }
},
- "resolve": {
- "version": "1.17.0",
- "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.17.0.tgz",
- "integrity": "sha512-ic+7JYiV8Vi2yzQGFWOkiZD5Z9z7O2Zhm9XMaTxdJExKasieFCr+yXZ/WmXsckHiKl12ar0y6XiXDx3m4RHn1w==",
+ "node_modules/which-module": {
+ "version": "2.0.1",
+ "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz",
+ "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==",
"dev": true,
- "requires": {
- "path-parse": "^1.0.6"
- }
+ "license": "ISC"
},
- "sass": {
- "version": "1.34.1",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.34.1.tgz",
- "integrity": "sha512-scLA7EIZM+MmYlej6sdVr0HRbZX5caX5ofDT9asWnUJj21oqgsC+1LuNfm0eg+vM0fCTZHhwImTiCU0sx9h9CQ==",
+ "node_modules/which-typed-array": {
+ "version": "1.1.20",
+ "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz",
+ "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==",
"dev": true,
- "requires": {
- "chokidar": ">=3.0.0 <4.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "available-typed-arrays": "^1.0.7",
+ "call-bind": "^1.0.8",
+ "call-bound": "^1.0.4",
+ "for-each": "^0.3.5",
+ "get-proto": "^1.0.1",
+ "gopd": "^1.2.0",
+ "has-tostringtag": "^1.0.2"
+ },
+ "engines": {
+ "node": ">= 0.4"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/ljharb"
}
},
- "select": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz",
- "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0="
- },
- "semver": {
- "version": "5.7.1",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz",
- "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==",
- "dev": true
- },
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=",
- "dev": true
- },
- "shebang-command": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz",
- "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=",
+ "node_modules/word-wrap": {
+ "version": "1.2.5",
+ "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz",
+ "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==",
"dev": true,
- "requires": {
- "shebang-regex": "^1.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=0.10.0"
}
},
- "shebang-regex": {
+ "node_modules/wordwrap": {
"version": "1.0.0",
- "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz",
- "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=",
- "dev": true
- },
- "shell-quote": {
- "version": "1.7.2",
- "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz",
- "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==",
- "dev": true
- },
- "sortablejs": {
- "version": "1.13.0",
- "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.13.0.tgz",
- "integrity": "sha512-RBJirPY0spWCrU5yCmWM1eFs/XgX2J5c6b275/YyxFRgnzPhKl/TDeU2hNR8Dt7ITq66NRPM4UlOt+e5O4CFHg=="
- },
- "spdx-correct": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz",
- "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==",
+ "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz",
+ "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==",
"dev": true,
- "requires": {
- "spdx-expression-parse": "^3.0.0",
- "spdx-license-ids": "^3.0.0"
- }
- },
- "spdx-exceptions": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz",
- "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==",
- "dev": true
+ "license": "MIT"
},
- "spdx-expression-parse": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz",
- "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==",
+ "node_modules/wrap-ansi": {
+ "version": "8.1.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",
+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",
"dev": true,
- "requires": {
- "spdx-exceptions": "^2.1.0",
- "spdx-license-ids": "^3.0.0"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^6.1.0",
+ "string-width": "^5.0.1",
+ "strip-ansi": "^7.0.1"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "spdx-license-ids": {
- "version": "3.0.5",
- "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz",
- "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==",
- "dev": true
- },
- "string-width": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
- "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "node_modules/wrap-ansi-cjs": {
+ "name": "wrap-ansi",
+ "version": "7.0.0",
+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",
+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",
"dev": true,
- "requires": {
- "emoji-regex": "^7.0.1",
- "is-fullwidth-code-point": "^2.0.0",
- "strip-ansi": "^5.1.0"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-styles": "^4.0.0",
+ "string-width": "^4.1.0",
+ "strip-ansi": "^6.0.0"
+ },
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"
}
},
- "string.prototype.padend": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz",
- "integrity": "sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==",
+ "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {
+ "version": "5.0.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",
+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",
"dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.0-next.1"
+ "license": "MIT",
+ "engines": {
+ "node": ">=8"
}
},
- "string.prototype.trimend": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz",
- "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==",
+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {
+ "version": "8.0.0",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",
+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",
"dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.5"
- }
+ "license": "MIT"
},
- "string.prototype.trimstart": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.1.tgz",
- "integrity": "sha512-XxZn+QpvrBI1FOcg6dIpxUPgWCPuNXvMD72aaRaUQv1eD4e/Qy8i/hFTe0BUmD60p/QA6bh1avmuPTfNjqVWRw==",
+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {
+ "version": "4.2.3",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",
+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",
"dev": true,
- "requires": {
- "define-properties": "^1.1.3",
- "es-abstract": "^1.17.5"
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^8.0.0",
+ "is-fullwidth-code-point": "^3.0.0",
+ "strip-ansi": "^6.0.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "strip-ansi": {
- "version": "5.2.0",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
- "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {
+ "version": "6.0.1",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",
+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",
"dev": true,
- "requires": {
- "ansi-regex": "^4.1.0"
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^5.0.1"
+ },
+ "engines": {
+ "node": ">=8"
}
},
- "strip-bom": {
- "version": "3.0.0",
- "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
- "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
- "dev": true
- },
- "supports-color": {
- "version": "5.5.0",
- "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz",
- "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==",
+ "node_modules/wrap-ansi/node_modules/ansi-styles": {
+ "version": "6.2.3",
+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz",
+ "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==",
"dev": true,
- "requires": {
- "has-flag": "^3.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"
}
},
- "tiny-emitter": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz",
- "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q=="
+ "node_modules/wrappy": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+ "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==",
+ "dev": true,
+ "license": "ISC"
},
- "to-regex-range": {
+ "node_modules/write-file-atomic": {
"version": "5.0.1",
- "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",
- "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",
+ "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-5.0.1.tgz",
+ "integrity": "sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==",
"dev": true,
- "requires": {
- "is-number": "^7.0.0"
+ "license": "ISC",
+ "dependencies": {
+ "imurmurhash": "^0.1.4",
+ "signal-exit": "^4.0.1"
+ },
+ "engines": {
+ "node": "^14.17.0 || ^16.13.0 || >=18.0.0"
}
},
- "uc.micro": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz",
- "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA=="
- },
- "validate-npm-package-license": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz",
- "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==",
+ "node_modules/ws": {
+ "version": "8.19.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz",
+ "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==",
"dev": true,
- "requires": {
- "spdx-correct": "^3.0.0",
- "spdx-expression-parse": "^3.0.0"
+ "license": "MIT",
+ "engines": {
+ "node": ">=10.0.0"
+ },
+ "peerDependencies": {
+ "bufferutil": "^4.0.1",
+ "utf-8-validate": ">=5.0.2"
+ },
+ "peerDependenciesMeta": {
+ "bufferutil": {
+ "optional": true
+ },
+ "utf-8-validate": {
+ "optional": true
+ }
}
},
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
+ "node_modules/xml-name-validator": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-5.0.0.tgz",
+ "integrity": "sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==",
"dev": true,
- "requires": {
- "isexe": "^2.0.0"
+ "license": "Apache-2.0",
+ "engines": {
+ "node": ">=18"
}
},
- "which-module": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz",
- "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=",
- "dev": true
- },
- "wrap-ansi": {
- "version": "5.1.0",
- "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz",
- "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==",
+ "node_modules/xmlchars": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz",
+ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==",
"dev": true,
- "requires": {
- "ansi-styles": "^3.2.0",
- "string-width": "^3.0.0",
- "strip-ansi": "^5.0.0"
- }
+ "license": "MIT"
},
- "ws": {
- "version": "7.4.6",
- "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz",
- "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==",
+ "node_modules/y18n": {
+ "version": "4.0.3",
+ "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz",
+ "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==",
"dev": true,
- "requires": {}
+ "license": "ISC"
},
- "y18n": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz",
- "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==",
- "dev": true
+ "node_modules/yallist": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==",
+ "dev": true,
+ "license": "ISC"
},
- "yargs": {
+ "node_modules/yargs": {
"version": "13.3.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz",
"integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==",
"dev": true,
- "requires": {
+ "license": "MIT",
+ "dependencies": {
"cliui": "^5.0.0",
"find-up": "^3.0.0",
"get-caller-file": "^2.0.1",
@@ -2266,15 +9693,170 @@
"yargs-parser": "^13.1.2"
}
},
- "yargs-parser": {
+ "node_modules/yargs-parser": {
+ "version": "21.1.1",
+ "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz",
+ "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==",
+ "dev": true,
+ "license": "ISC",
+ "engines": {
+ "node": ">=12"
+ }
+ },
+ "node_modules/yargs/node_modules/ansi-regex": {
+ "version": "4.1.1",
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz",
+ "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yargs/node_modules/emoji-regex": {
+ "version": "7.0.3",
+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz",
+ "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/yargs/node_modules/find-up": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz",
+ "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "locate-path": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yargs/node_modules/is-fullwidth-code-point": {
+ "version": "2.0.0",
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz",
+ "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/yargs/node_modules/locate-path": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz",
+ "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-locate": "^3.0.0",
+ "path-exists": "^3.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yargs/node_modules/p-limit": {
+ "version": "2.3.0",
+ "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+ "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-try": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/yargs/node_modules/p-locate": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz",
+ "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "p-limit": "^2.0.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yargs/node_modules/path-exists": {
+ "version": "3.0.0",
+ "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz",
+ "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=4"
+ }
+ },
+ "node_modules/yargs/node_modules/string-width": {
+ "version": "3.1.0",
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz",
+ "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "emoji-regex": "^7.0.1",
+ "is-fullwidth-code-point": "^2.0.0",
+ "strip-ansi": "^5.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yargs/node_modules/strip-ansi": {
+ "version": "5.2.0",
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz",
+ "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "ansi-regex": "^4.1.0"
+ },
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yargs/node_modules/yargs-parser": {
"version": "13.1.2",
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz",
"integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==",
"dev": true,
- "requires": {
+ "license": "ISC",
+ "dependencies": {
"camelcase": "^5.0.0",
"decamelize": "^1.2.0"
}
+ },
+ "node_modules/yn": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz",
+ "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=6"
+ }
+ },
+ "node_modules/yocto-queue": {
+ "version": "0.1.0",
+ "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz",
+ "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==",
+ "dev": true,
+ "license": "MIT",
+ "engines": {
+ "node": ">=10"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
}
}
}
diff --git a/package.json b/package.json
index f4b7bf5dc6f..45c275863b3 100644
--- a/package.json
+++ b/package.json
@@ -1,33 +1,62 @@
{
"private": true,
"scripts": {
- "build:css:dev": "sass ./resources/sass:./public/dist",
- "build:css:watch": "sass ./resources/sass:./public/dist --watch",
+ "build:css:dev": "sass ./resources/sass:./public/dist --embed-sources",
+ "build:css:watch": "sass ./resources/sass:./public/dist --watch --embed-sources",
"build:css:production": "sass ./resources/sass:./public/dist -s compressed",
- "build:js:dev": "esbuild --bundle ./resources/js/index.js --outfile=public/dist/app.js --sourcemap --target=es2019 --main-fields=module,main",
- "build:js:watch": "chokidar --initial \"./resources/**/*.js\" -c \"npm run build:js:dev\"",
- "build:js:production": "NODE_ENV=production esbuild --bundle ./resources/js/index.js --outfile=public/dist/app.js --sourcemap --target=es2019 --main-fields=module,main --minify",
+ "build:js:dev": "node dev/build/esbuild.mjs",
+ "build:js:watch": "node dev/build/esbuild.mjs watch",
+ "build:js:production": "node dev/build/esbuild.mjs production",
"build": "npm-run-all --parallel build:*:dev",
"production": "npm-run-all --parallel build:*:production",
- "dev": "npm-run-all --parallel watch livereload",
+ "dev": "npm-run-all --parallel build:*:watch",
"watch": "npm-run-all --parallel build:*:watch",
- "livereload": "livereload ./public/dist/",
- "permissions": "chown -R $USER:$USER bootstrap/cache storage public/uploads"
+ "permissions": "chown -R $USER:$USER bootstrap/cache storage public/uploads",
+ "lint": "eslint \"resources/**/*.js\" \"resources/**/*.mjs\"",
+ "fix": "eslint --fix \"resources/**/*.js\" \"resources/**/*.mjs\"",
+ "ts:lint": "tsc --noEmit",
+ "test": "jest"
},
"devDependencies": {
- "chokidar-cli": "^2.1.0",
- "esbuild": "0.12.8",
- "livereload": "^0.9.3",
+ "@eslint/js": "^10.0.1",
+ "@lezer/generator": "^1.8.0",
+ "@types/markdown-it": "^14.1.2",
+ "@types/sortablejs": "^1.15.9",
+ "chokidar-cli": "^3.0",
+ "esbuild": "^0.27.3",
+ "eslint": "^10.0.2",
+ "globals": "^17.4.0",
+ "jest": "^30.2.0",
+ "jest-environment-jsdom": "^30.2.0",
"npm-run-all": "^4.1.5",
- "punycode": "^2.1.1",
- "sass": "^1.34.1"
+ "sass": "^1.97.3",
+ "ts-jest": "^29.4.6",
+ "ts-node": "^10.9.2",
+ "typescript": "5.9.*"
},
"dependencies": {
- "clipboard": "^2.0.8",
- "codemirror": "^5.61.1",
- "dropzone": "^5.9.2",
- "markdown-it": "^12.0.6",
+ "@codemirror/commands": "^6.10.2",
+ "@codemirror/lang-css": "^6.3.1",
+ "@codemirror/lang-html": "^6.4.11",
+ "@codemirror/lang-javascript": "^6.2.5",
+ "@codemirror/lang-json": "^6.0.2",
+ "@codemirror/lang-markdown": "^6.5.0",
+ "@codemirror/lang-php": "^6.0.2",
+ "@codemirror/lang-xml": "^6.1.0",
+ "@codemirror/language": "^6.12.2",
+ "@codemirror/legacy-modes": "^6.5.2",
+ "@codemirror/state": "^6.5.4",
+ "@codemirror/theme-one-dark": "^6.1.3",
+ "@codemirror/view": "^6.39.16",
+ "@lezer/highlight": "^1.2.3",
+ "@ssddanbrown/codemirror-lang-smarty": "^1.0.0",
+ "@ssddanbrown/codemirror-lang-twig": "^1.0.0",
+ "@types/jest": "^30.0.0",
+ "codemirror": "^6.0.2",
+ "idb-keyval": "^6.2.2",
+ "markdown-it": "^14.1.1",
"markdown-it-task-lists": "^2.1.1",
- "sortablejs": "^1.13.0"
+ "snabbdom": "^3.6.3",
+ "sortablejs": "^1.15.7"
}
}
diff --git a/phpcs.xml b/phpcs.xml
new file mode 100644
index 00000000000..8337d5aac50
--- /dev/null
+++ b/phpcs.xml
@@ -0,0 +1,35 @@
+
+
+ The coding standard for BookStack
+
+ app
+ bootstrap/app.php
+ database
+ public/index.php
+ routes
+ tests
+
+
+
+
+
+
+
+
+
+ ./tests/*
+
+
+
+ ./tests/*
+
+
+
+ ./database/*
+
+
+
+ ./app/Config/*
+
+
+
diff --git a/phpstan.neon.dist b/phpstan.neon.dist
new file mode 100644
index 00000000000..72189222fcf
--- /dev/null
+++ b/phpstan.neon.dist
@@ -0,0 +1,24 @@
+includes:
+ - ./vendor/larastan/larastan/extension.neon
+
+parameters:
+
+ paths:
+ - app
+
+ # The level 8 is the highest level
+ level: 3
+
+ phpVersion:
+ min: 80200
+ max: 80400
+
+ bootstrapFiles:
+ - bootstrap/phpstan.php
+
+ ignoreErrors:
+ # - '#PHPDoc tag @throws with type .*?Psr\\SimpleCache\\InvalidArgumentException.*? is not subtype of Throwable#'
+
+ excludePaths:
+ - ./Config/**/*.php
+ - ./dev/**/*.php
\ No newline at end of file
diff --git a/phpunit.xml b/phpunit.xml
index 75c89ec335f..94fc002b704 100644
--- a/phpunit.xml
+++ b/phpunit.xml
@@ -1,20 +1,9 @@
-
-
- app/
-
-
+ displayDetailsOnTestsThatTriggerDeprecations="true"
+ colors="true">
./tests/
@@ -27,19 +16,31 @@
+
+
+
+
+
+
+
+
+
+
+
+
@@ -59,6 +60,13 @@
+
+
+
+
+ app/
+
+
diff --git a/public/book_default_cover.png b/public/book_default_cover.png
index 7b6c9953e91..6d088d8b82c 100644
Binary files a/public/book_default_cover.png and b/public/book_default_cover.png differ
diff --git a/public/favicon.ico b/public/favicon.ico
deleted file mode 100644
index 41655ccba55..00000000000
Binary files a/public/favicon.ico and /dev/null differ
diff --git a/public/icon-128.png b/public/icon-128.png
new file mode 100644
index 00000000000..f271e849d20
Binary files /dev/null and b/public/icon-128.png differ
diff --git a/public/icon-180.png b/public/icon-180.png
new file mode 100644
index 00000000000..4d4ceac3486
Binary files /dev/null and b/public/icon-180.png differ
diff --git a/public/icon-32.png b/public/icon-32.png
new file mode 100644
index 00000000000..deac72d893e
Binary files /dev/null and b/public/icon-32.png differ
diff --git a/public/icon-64.png b/public/icon-64.png
new file mode 100644
index 00000000000..afe4b766dba
Binary files /dev/null and b/public/icon-64.png differ
diff --git a/public/icon.ico b/public/icon.ico
new file mode 100644
index 00000000000..2581b9b335f
Binary files /dev/null and b/public/icon.ico differ
diff --git a/public/icon.png b/public/icon.png
new file mode 100644
index 00000000000..939b97e4ff0
Binary files /dev/null and b/public/icon.png differ
diff --git a/public/index.php b/public/index.php
index 7e4ef97c707..2b5c57b8f40 100644
--- a/public/index.php
+++ b/public/index.php
@@ -1,59 +1,27 @@
- */
+use BookStack\Http\Request;
+use Illuminate\Contracts\Http\Kernel;
+
define('LARAVEL_START', microtime(true));
-/*
-|--------------------------------------------------------------------------
-| Register The Auto Loader
-|--------------------------------------------------------------------------
-|
-| Composer provides a convenient, automatically generated class loader for
-| our application. We just need to utilize it! We'll simply require it
-| into the script here so that we don't have to worry about manual
-| loading any of our classes later on. It feels great to relax.
-|
-*/
+// Determine if the application is in maintenance mode...
+if (file_exists(__DIR__ . '/../storage/framework/maintenance.php')) {
+ require __DIR__ . '/../storage/framework/maintenance.php';
+}
+// Register the Composer autoloader...
require __DIR__ . '/../vendor/autoload.php';
-/*
-|--------------------------------------------------------------------------
-| Turn On The Lights
-|--------------------------------------------------------------------------
-|
-| We need to illuminate PHP development, so let us turn on the lights.
-| This bootstraps the framework and gets it ready for use, then it
-| will load up this application so that we can run it and send
-| the responses back to the browser and delight our users.
-|
-*/
+// Run the application
$app = require_once __DIR__ . '/../bootstrap/app.php';
-$app->alias('request', \BookStack\Http\Request::class);
-
-/*
-|--------------------------------------------------------------------------
-| Run The Application
-|--------------------------------------------------------------------------
-|
-| Once we have the application, we can handle the incoming request
-| through the kernel, and send the associated response back to
-| the client's browser allowing them to enjoy the creative
-| and wonderful application we have prepared for them.
-|
-*/
-
-$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
-
-$response = $kernel->handle(
- $request = \BookStack\Http\Request::capture()
-);
-
-$response->send();
+$app->alias('request', Request::class);
+
+$kernel = $app->make(Kernel::class);
+
+$response = tap($kernel->handle(
+ $request = Request::capture()
+))->send();
$kernel->terminate($request, $response);
diff --git a/public/libs/tinymce/icons/default/icons.min.js b/public/libs/tinymce/icons/default/icons.min.js
new file mode 100644
index 00000000000..e3750c67390
--- /dev/null
+++ b/public/libs/tinymce/icons/default/icons.min.js
@@ -0,0 +1 @@
+tinymce.IconManager.add("default",{icons:{"accessibility-check":' ',"accordion-toggle":' ',accordion:' ',"action-next":' ',"action-prev":' ',addtag:' ',"ai-prompt":' ',ai:' ',"align-center":' ',"align-justify":' ',"align-left":' ',"align-none":' ',"align-right":' ',"arrow-left":' ',"arrow-right":' ',bold:' ',bookmark:' ',"border-style":' ',"border-width":' ',brightness:' ',browse:' ',cancel:' ',"cell-background-color":' ',"cell-border-color":' ',"change-case":' ',"character-count":' ',"checklist-rtl":' ',checklist:' ',checkmark:' ',"chevron-down":' ',"chevron-left":' ',"chevron-right":' ',"chevron-up":' ',close:' ',"code-sample":' ',"color-levels":' ',"color-picker":' ',"color-swatch-remove-color":' ',"color-swatch":' ',"comment-add":' ',comment:' ',contrast:' ',copy:' ',crop:' ',"cut-column":' ',"cut-row":' ',cut:' ',"document-properties":' ',drag:' ',"duplicate-column":' ',"duplicate-row":' ',duplicate:' ',"edit-block":' ',"edit-image":' ',"embed-page":' ',embed:' ',emoji:' ',export:' ',fill:' ',"flip-horizontally":' ',"flip-vertically":' ',footnote:' ',"format-painter":' ',format:' ',fullscreen:' ',gallery:' ',gamma:' ',help:' ',"highlight-bg-color":' ',home:' ',"horizontal-rule":' ',"image-options":' ',image:' ',indent:' ',info:' ',"insert-character":' ',"insert-time":' ',invert:' ',italic:' ',language:' ',"line-height":' ',line:' ',link:' ',"list-bull-circle":' ',"list-bull-default":' ',"list-bull-square":' ',"list-num-default-rtl":' ',"list-num-default":' ',"list-num-lower-alpha-rtl":' ',"list-num-lower-alpha":' ',"list-num-lower-greek-rtl":' ',"list-num-lower-greek":' ',"list-num-lower-roman-rtl":' ',"list-num-lower-roman":' ',"list-num-upper-alpha-rtl":' ',"list-num-upper-alpha":' ',"list-num-upper-roman-rtl":' ',"list-num-upper-roman":' ',lock:' ',ltr:' ',minus:' ',"more-drawer":' ',"new-document":' ',"new-tab":' ',"non-breaking":' ',notice:' ',"ordered-list-rtl":' ',"ordered-list":' ',orientation:' ',outdent:' ',"page-break":' ',paragraph:' ',"paste-column-after":' ',"paste-column-before":' ',"paste-row-after":' ',"paste-row-before":' ',"paste-text":' ',paste:' ',"permanent-pen":' ',plus:' ',preferences:' ',preview:' ',print:' ',quote:' ',redo:' ',reload:' ',"remove-formatting":' ',remove:' ',"resize-handle":' ',resize:' ',"restore-draft":' ',"rotate-left":' ',"rotate-right":' ',rtl:' ',save:' ',search:' ',"select-all":' ',selected:' ',send:' ',settings:' ',sharpen:' ',sourcecode:' ',"spell-check":' ',"strike-through":' ',subscript:' ',superscript:' ',"table-caption":' ',"table-cell-classes":' ',"table-cell-properties":' ',"table-cell-select-all":' ',"table-cell-select-inner":' ',"table-classes":' ',"table-delete-column":' ',"table-delete-row":' ',"table-delete-table":' ',"table-insert-column-after":' ',"table-insert-column-before":' ',"table-insert-row-above":' ',"table-insert-row-after":' ',"table-left-header":' ',"table-merge-cells":' ',"table-row-numbering-rtl":' ',"table-row-numbering":' ',"table-row-properties":' ',"table-split-cells":' ',"table-top-header":' ',table:' ',"template-add":' ',template:' ',"temporary-placeholder":' ',"text-color":' ',"text-size-decrease":' ',"text-size-increase":' ',toc:' ',translate:' ',typography:' ',underline:' ',undo:' ',unlink:' ',unlock:' ',"unordered-list":' ',unselected:' ',upload:' ',user:' ',"vertical-align":' ',visualblocks:' ',visualchars:' ',warning:' ',"zoom-in":' ',"zoom-out":' '}});
\ No newline at end of file
diff --git a/public/libs/tinymce/langs/README.md b/public/libs/tinymce/langs/README.md
new file mode 100644
index 00000000000..cd93d8c8591
--- /dev/null
+++ b/public/libs/tinymce/langs/README.md
@@ -0,0 +1,3 @@
+This is where language files should be placed.
+
+Please DO NOT translate these directly, use this service instead: https://crowdin.com/project/tinymce
diff --git a/public/libs/tinymce/langs/readme.md b/public/libs/tinymce/langs/readme.md
deleted file mode 100644
index a52bf03f9a3..00000000000
--- a/public/libs/tinymce/langs/readme.md
+++ /dev/null
@@ -1,3 +0,0 @@
-This is where language files should be placed.
-
-Please DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/
diff --git a/public/libs/tinymce/license.txt b/public/libs/tinymce/license.txt
index b17fc90494c..3a49f66fd2a 100644
--- a/public/libs/tinymce/license.txt
+++ b/public/libs/tinymce/license.txt
@@ -1,504 +1,21 @@
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL. It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
- This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
- When we speak of free software, we are referring to freedom of use,
-not price. Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
- To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights. These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
- For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you. You must make sure that they, too, receive or can get the source
-code. If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it. And you must show them these terms so they know their rights.
-
- We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
- To protect each distributor, we want to make it very clear that
-there is no warranty for the free library. Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
- Finally, software patents pose a constant threat to the existence of
-any free program. We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder. Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
- Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License. This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License. We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
- When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library. The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom. The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
- We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License. It also provides other free software developers Less
-of an advantage over competing non-free programs. These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries. However, the Lesser license provides advantages in certain
-special circumstances.
-
- For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard. To achieve this, non-free programs must be
-allowed to use the library. A more frequent case is that a free
-library does the same job as widely used non-free libraries. In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
- In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software. For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
- Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
- The precise terms and conditions for copying, distribution and
-modification follow. Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library". The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
- GNU LESSER GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
- A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
- The "Library", below, refers to any such software library or work
-which has been distributed under these terms. A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language. (Hereinafter, translation is
-included without limitation in the term "modification".)
-
- "Source code" for a work means the preferred form of the work for
-making modifications to it. For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
- Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it). Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-
- 1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
- You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
- 2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) The modified work must itself be a software library.
-
- b) You must cause the files modified to carry prominent notices
- stating that you changed the files and the date of any change.
-
- c) You must cause the whole of the work to be licensed at no
- charge to all third parties under the terms of this License.
-
- d) If a facility in the modified Library refers to a function or a
- table of data to be supplied by an application program that uses
- the facility, other than as an argument passed when the facility
- is invoked, then you must make a good faith effort to ensure that,
- in the event an application does not supply such function or
- table, the facility still operates, and performs whatever part of
- its purpose remains meaningful.
-
- (For example, a function in a library to compute square roots has
- a purpose that is entirely well-defined independent of the
- application. Therefore, Subsection 2d requires that any
- application-supplied function or table used by this function must
- be optional: if the application does not supply it, the square
- root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library. To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License. (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.) Do not make any other change in
-these notices.
-
- Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
- This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
- 4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
- If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library". Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
- However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library". The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
- When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library. The
-threshold for this to be true is not precisely defined by law.
-
- If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work. (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
- Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
- 6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
- You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License. You must supply a copy of this License. If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License. Also, you must do one
-of these things:
-
- a) Accompany the work with the complete corresponding
- machine-readable source code for the Library including whatever
- changes were used in the work (which must be distributed under
- Sections 1 and 2 above); and, if the work is an executable linked
- with the Library, with the complete machine-readable "work that
- uses the Library", as object code and/or source code, so that the
- user can modify the Library and then relink to produce a modified
- executable containing the modified Library. (It is understood
- that the user who changes the contents of definitions files in the
- Library will not necessarily be able to recompile the application
- to use the modified definitions.)
-
- b) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (1) uses at run time a
- copy of the library already present on the user's computer system,
- rather than copying library functions into the executable, and (2)
- will operate properly with a modified version of the library, if
- the user installs one, as long as the modified version is
- interface-compatible with the version that the work was made with.
-
- c) Accompany the work with a written offer, valid for at
- least three years, to give the same user the materials
- specified in Subsection 6a, above, for a charge no more
- than the cost of performing this distribution.
-
- d) If distribution of the work is made by offering access to copy
- from a designated place, offer equivalent access to copy the above
- specified materials from the same place.
-
- e) Verify that the user has already received a copy of these
- materials or that you have already sent this user a copy.
-
- For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it. However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
- It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system. Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
- 7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
- a) Accompany the combined library with a copy of the same work
- based on the Library, uncombined with any other library
- facilities. This must be distributed under the terms of the
- Sections above.
-
- b) Give prominent notice with the combined library of the fact
- that part of it is a work based on the Library, and explaining
- where to find the accompanying uncombined form of the same work.
-
- 8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License. Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License. However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
- 9. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Library or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
- 10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
- 11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all. For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded. In such case, this License incorporates the limitation as if
-written in the body of this License.
-
- 13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation. If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
- 14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission. For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this. Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
- NO WARRANTY
-
- 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Libraries
-
- If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change. You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
- To apply these terms, attach the following notices to the library. It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
-
- Copyright (C)
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the
- library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
- , 1 April 1990
- Ty Coon, President of Vice
-
-That's all there is to it!
-
-
+MIT License
+
+Copyright (c) 2022 Ephox Corporation DBA Tiny Technologies, Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/public/libs/tinymce/models/dom/model.min.js b/public/libs/tinymce/models/dom/model.min.js
new file mode 100644
index 00000000000..cbd12878816
--- /dev/null
+++ b/public/libs/tinymce/models/dom/model.min.js
@@ -0,0 +1,4 @@
+/**
+ * TinyMCE version 6.8.4 (2024-06-19)
+ */
+!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.ModelManager");const t=e=>t=>(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&(o=n=e,(r=String).prototype.isPrototypeOf(o)||(null===(s=n.constructor)||void 0===s?void 0:s.name)===r.name)?"string":t;var o,n,r,s})(t)===e,o=e=>t=>typeof t===e,n=e=>t=>e===t,r=t("string"),s=t("object"),l=t("array"),a=n(null),c=o("boolean"),i=n(void 0),m=e=>!(e=>null==e)(e),d=o("function"),u=o("number"),f=()=>{},g=e=>()=>e,h=e=>e,p=(e,t)=>e===t;function w(e,...t){return(...o)=>{const n=t.concat(o);return e.apply(null,n)}}const b=e=>t=>!e(t),v=e=>e(),y=g(!1),x=g(!0);class C{constructor(e,t){this.tag=e,this.value=t}static some(e){return new C(!0,e)}static none(){return C.singletonNone}fold(e,t){return this.tag?t(this.value):e()}isSome(){return this.tag}isNone(){return!this.tag}map(e){return this.tag?C.some(e(this.value)):C.none()}bind(e){return this.tag?e(this.value):C.none()}exists(e){return this.tag&&e(this.value)}forall(e){return!this.tag||e(this.value)}filter(e){return!this.tag||e(this.value)?this:C.none()}getOr(e){return this.tag?this.value:e}or(e){return this.tag?this:e}getOrThunk(e){return this.tag?this.value:e()}orThunk(e){return this.tag?this:e()}getOrDie(e){if(this.tag)return this.value;throw new Error(null!=e?e:"Called getOrDie on None")}static from(e){return m(e)?C.some(e):C.none()}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(e){this.tag&&e(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}C.singletonNone=new C(!1);const S=Array.prototype.slice,T=Array.prototype.indexOf,R=Array.prototype.push,D=(e,t)=>{return o=e,n=t,T.call(o,n)>-1;var o,n},O=(e,t)=>{for(let o=0,n=e.length;o{const o=[];for(let n=0;n{const o=e.length,n=new Array(o);for(let r=0;r{for(let o=0,n=e.length;o{const o=[],n=[];for(let r=0,s=e.length;r{const o=[];for(let n=0,r=e.length;n(((e,t)=>{for(let o=e.length-1;o>=0;o--)t(e[o],o)})(e,((e,n)=>{o=t(o,e,n)})),o),A=(e,t,o)=>(N(e,((e,n)=>{o=t(o,e,n)})),o),L=(e,t)=>((e,t,o)=>{for(let n=0,r=e.length;n{for(let o=0,n=e.length;o{const t=[];for(let o=0,n=e.length;oM(E(e,t)),P=(e,t)=>{for(let o=0,n=e.length;o{const o={};for(let n=0,r=e.length;nt>=0&&tF(e,0),$=e=>F(e,e.length-1),V=(e,t)=>{for(let o=0;o{const o=q(e);for(let n=0,r=o.length;nY(e,((e,o)=>({k:o,v:t(e,o)}))),Y=(e,t)=>{const o={};return G(e,((e,n)=>{const r=t(e,n);o[r.k]=r.v})),o},J=(e,t)=>{const o=[];return G(e,((e,n)=>{o.push(t(e,n))})),o},Q=e=>J(e,h),X=(e,t)=>U.call(e,t),Z="undefined"!=typeof window?window:Function("return this;")(),ee=(e,t)=>((e,t)=>{let o=null!=t?t:Z;for(let t=0;t{const t=ee("ownerDocument.defaultView",e);return s(e)&&((e=>((e,t)=>{const o=((e,t)=>ee(e,t))(e,t);if(null==o)throw new Error(e+" not available on this browser");return o})("HTMLElement",e))(t).prototype.isPrototypeOf(e)||/^HTML\w*Element$/.test(te(e).constructor.name))},ne=e=>e.dom.nodeName.toLowerCase(),re=e=>e.dom.nodeType,se=e=>t=>re(t)===e,le=e=>8===re(e)||"#comment"===ne(e),ae=e=>ce(e)&&oe(e.dom),ce=se(1),ie=se(3),me=se(9),de=se(11),ue=e=>t=>ce(t)&&ne(t)===e,fe=(e,t,o)=>{if(!(r(o)||c(o)||u(o)))throw console.error("Invalid call to Attribute.set. Key ",t,":: Value ",o,":: Element ",e),new Error("Attribute value was not simple");e.setAttribute(t,o+"")},ge=(e,t,o)=>{fe(e.dom,t,o)},he=(e,t)=>{const o=e.dom;G(t,((e,t)=>{fe(o,t,e)}))},pe=(e,t)=>{const o=e.dom.getAttribute(t);return null===o?void 0:o},we=(e,t)=>C.from(pe(e,t)),be=(e,t)=>{e.dom.removeAttribute(t)},ve=e=>A(e.dom.attributes,((e,t)=>(e[t.name]=t.value,e)),{}),ye=e=>{if(null==e)throw new Error("Node cannot be null or undefined");return{dom:e}},xe={fromHtml:(e,t)=>{const o=(t||document).createElement("div");if(o.innerHTML=e,!o.hasChildNodes()||o.childNodes.length>1){const t="HTML does not have a single root node";throw console.error(t,e),new Error(t)}return ye(o.childNodes[0])},fromTag:(e,t)=>{const o=(t||document).createElement(e);return ye(o)},fromText:(e,t)=>{const o=(t||document).createTextNode(e);return ye(o)},fromDom:ye,fromPoint:(e,t,o)=>C.from(e.dom.elementFromPoint(t,o)).map(ye)},Ce=(e,t)=>{const o=e.dom;if(1!==o.nodeType)return!1;{const e=o;if(void 0!==e.matches)return e.matches(t);if(void 0!==e.msMatchesSelector)return e.msMatchesSelector(t);if(void 0!==e.webkitMatchesSelector)return e.webkitMatchesSelector(t);if(void 0!==e.mozMatchesSelector)return e.mozMatchesSelector(t);throw new Error("Browser lacks native selectors")}},Se=e=>1!==e.nodeType&&9!==e.nodeType&&11!==e.nodeType||0===e.childElementCount,Te=(e,t)=>{const o=void 0===t?document:t.dom;return Se(o)?C.none():C.from(o.querySelector(e)).map(xe.fromDom)},Re=(e,t)=>e.dom===t.dom,De=(e,t)=>{const o=e.dom,n=t.dom;return o!==n&&o.contains(n)},Oe=Ce,ke=e=>xe.fromDom(e.dom.ownerDocument),Ee=e=>me(e)?e:ke(e),Ne=e=>C.from(e.dom.parentNode).map(xe.fromDom),Be=e=>C.from(e.dom.parentElement).map(xe.fromDom),_e=(e,t)=>{const o=d(t)?t:y;let n=e.dom;const r=[];for(;null!==n.parentNode&&void 0!==n.parentNode;){const e=n.parentNode,t=xe.fromDom(e);if(r.push(t),!0===o(t))break;n=e}return r},ze=e=>C.from(e.dom.previousSibling).map(xe.fromDom),Ae=e=>C.from(e.dom.nextSibling).map(xe.fromDom),Le=e=>E(e.dom.childNodes,xe.fromDom),We=(e,t)=>{const o=e.dom.childNodes;return C.from(o[t]).map(xe.fromDom)},Me=(e,t)=>{Ne(e).each((o=>{o.dom.insertBefore(t.dom,e.dom)}))},je=(e,t)=>{Ae(e).fold((()=>{Ne(e).each((e=>{Ie(e,t)}))}),(e=>{Me(e,t)}))},Pe=(e,t)=>{const o=(e=>We(e,0))(e);o.fold((()=>{Ie(e,t)}),(o=>{e.dom.insertBefore(t.dom,o.dom)}))},Ie=(e,t)=>{e.dom.appendChild(t.dom)},Fe=(e,t)=>{Me(e,t),Ie(t,e)},He=(e,t)=>{N(t,((o,n)=>{const r=0===n?e:t[n-1];je(r,o)}))},$e=(e,t)=>{N(t,(t=>{Ie(e,t)}))},Ve=e=>{e.dom.textContent="",N(Le(e),(e=>{qe(e)}))},qe=e=>{const t=e.dom;null!==t.parentNode&&t.parentNode.removeChild(t)},Ue=e=>{const t=Le(e);t.length>0&&He(e,t),qe(e)},Ge=(e,t)=>xe.fromDom(e.dom.cloneNode(t)),Ke=e=>Ge(e,!1),Ye=e=>Ge(e,!0),Je=(e,t)=>{const o=xe.fromTag(t),n=ve(e);return he(o,n),o},Qe=["tfoot","thead","tbody","colgroup"],Xe=(e,t,o)=>({element:e,rowspan:t,colspan:o}),Ze=(e,t,o)=>({element:e,cells:t,section:o}),et=(e,t,o)=>({element:e,isNew:t,isLocked:o}),tt=(e,t,o,n)=>({element:e,cells:t,section:o,isNew:n}),ot=d(Element.prototype.attachShadow)&&d(Node.prototype.getRootNode),nt=g(ot),rt=ot?e=>xe.fromDom(e.dom.getRootNode()):Ee,st=e=>xe.fromDom(e.dom.host),lt=e=>{const t=ie(e)?e.dom.parentNode:e.dom;if(null==t||null===t.ownerDocument)return!1;const o=t.ownerDocument;return(e=>{const t=rt(e);return de(o=t)&&m(o.dom.host)?C.some(t):C.none();var o})(xe.fromDom(t)).fold((()=>o.body.contains(t)),(n=lt,r=st,e=>n(r(e))));var n,r},at=e=>{const t=e.dom.body;if(null==t)throw new Error("Body is not available yet");return xe.fromDom(t)},ct=(e,t)=>{let o=[];return N(Le(e),(e=>{t(e)&&(o=o.concat([e])),o=o.concat(ct(e,t))})),o},it=(e,t,o)=>((e,o,n)=>_(_e(e,n),(e=>Ce(e,t))))(e,0,o),mt=(e,t)=>((e,o)=>_(Le(e),(e=>Ce(e,t))))(e),dt=(e,t)=>((e,t)=>{const o=void 0===t?document:t.dom;return Se(o)?[]:E(o.querySelectorAll(e),xe.fromDom)})(t,e);var ut=(e,t,o,n,r)=>e(o,n)?C.some(o):d(r)&&r(o)?C.none():t(o,n,r);const ft=(e,t,o)=>{let n=e.dom;const r=d(o)?o:y;for(;n.parentNode;){n=n.parentNode;const e=xe.fromDom(n);if(t(e))return C.some(e);if(r(e))break}return C.none()},gt=(e,t,o)=>ut(((e,t)=>t(e)),ft,e,t,o),ht=(e,t,o)=>ft(e,(e=>Ce(e,t)),o),pt=(e,t)=>((e,o)=>L(e.dom.childNodes,(e=>{return o=xe.fromDom(e),Ce(o,t);var o})).map(xe.fromDom))(e),wt=(e,t)=>Te(t,e),bt=(e,t,o)=>ut(((e,t)=>Ce(e,t)),ht,e,t,o),vt=(e,t,o=p)=>e.exists((e=>o(e,t))),yt=e=>{const t=[],o=e=>{t.push(e)};for(let t=0;te?C.some(t):C.none(),Ct=(e,t,o)=>""===t||e.length>=t.length&&e.substr(o,o+t.length)===t,St=(e,t,o=0,n)=>{const r=e.indexOf(t,o);return-1!==r&&(!!i(n)||r+t.length<=n)},Tt=(e,t)=>Ct(e,t,0),Rt=(e,t)=>Ct(e,t,e.length-t.length),Dt=(e=>t=>t.replace(e,""))(/^\s+|\s+$/g),Ot=e=>e.length>0,kt=e=>void 0!==e.style&&d(e.style.getPropertyValue),Et=(e,t,o)=>{if(!r(o))throw console.error("Invalid call to CSS.set. Property ",t,":: Value ",o,":: Element ",e),new Error("CSS value must be a string: "+o);kt(e)&&e.style.setProperty(t,o)},Nt=(e,t,o)=>{const n=e.dom;Et(n,t,o)},Bt=(e,t)=>{const o=e.dom;G(t,((e,t)=>{Et(o,t,e)}))},_t=(e,t)=>{const o=e.dom,n=window.getComputedStyle(o).getPropertyValue(t);return""!==n||lt(e)?n:zt(o,t)},zt=(e,t)=>kt(e)?e.style.getPropertyValue(t):"",At=(e,t)=>{const o=e.dom,n=zt(o,t);return C.from(n).filter((e=>e.length>0))},Lt=(e,t)=>{((e,t)=>{kt(e)&&e.style.removeProperty(t)})(e.dom,t),vt(we(e,"style").map(Dt),"")&&be(e,"style")},Wt=(e,t,o=0)=>we(e,t).map((e=>parseInt(e,10))).getOr(o),Mt=(e,t)=>Wt(e,t,1),jt=e=>ue("col")(e)?Wt(e,"span",1)>1:Mt(e,"colspan")>1,Pt=e=>Mt(e,"rowspan")>1,It=(e,t)=>parseInt(_t(e,t),10),Ft=g(10),Ht=g(10),$t=(e,t)=>Vt(e,t,x),Vt=(e,t,o)=>j(Le(e),(e=>Ce(e,t)?o(e)?[e]:[]:Vt(e,t,o))),qt=(e,t)=>((e,t,o=y)=>o(t)?C.none():D(e,ne(t))?C.some(t):ht(t,e.join(","),(e=>Ce(e,"table")||o(e))))(["td","th"],e,t),Ut=e=>$t(e,"th,td"),Gt=e=>Ce(e,"colgroup")?mt(e,"col"):j(Jt(e),(e=>mt(e,"col"))),Kt=(e,t)=>bt(e,"table",t),Yt=e=>$t(e,"tr"),Jt=e=>Kt(e).fold(g([]),(e=>mt(e,"colgroup"))),Qt=(e,t)=>E(e,(e=>{if("colgroup"===ne(e)){const t=E(Gt(e),(e=>{const t=Wt(e,"span",1);return Xe(e,1,t)}));return Ze(e,t,"colgroup")}{const o=E(Ut(e),(e=>{const t=Wt(e,"rowspan",1),o=Wt(e,"colspan",1);return Xe(e,t,o)}));return Ze(e,o,t(e))}})),Xt=e=>Ne(e).map((e=>{const t=ne(e);return(e=>D(Qe,e))(t)?t:"tbody"})).getOr("tbody"),Zt=e=>{const t=Yt(e),o=[...Jt(e),...t];return Qt(o,Xt)},eo=e=>{let t,o=!1;return(...n)=>(o||(o=!0,t=e.apply(null,n)),t)},to=()=>oo(0,0),oo=(e,t)=>({major:e,minor:t}),no={nu:oo,detect:(e,t)=>{const o=String(t).toLowerCase();return 0===e.length?to():((e,t)=>{const o=((e,t)=>{for(let o=0;oNumber(t.replace(o,"$"+e));return oo(n(1),n(2))})(e,o)},unknown:to},ro=(e,t)=>{const o=String(t).toLowerCase();return L(e,(e=>e.search(o)))},so=/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,lo=e=>t=>St(t,e),ao=[{name:"Edge",versionRegexes:[/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],search:e=>St(e,"edge/")&&St(e,"chrome")&&St(e,"safari")&&St(e,"applewebkit")},{name:"Chromium",brand:"Chromium",versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/,so],search:e=>St(e,"chrome")&&!St(e,"chromeframe")},{name:"IE",versionRegexes:[/.*?msie\ ?([0-9]+)\.([0-9]+).*/,/.*?rv:([0-9]+)\.([0-9]+).*/],search:e=>St(e,"msie")||St(e,"trident")},{name:"Opera",versionRegexes:[so,/.*?opera\/([0-9]+)\.([0-9]+).*/],search:lo("opera")},{name:"Firefox",versionRegexes:[/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],search:lo("firefox")},{name:"Safari",versionRegexes:[so,/.*?cpu os ([0-9]+)_([0-9]+).*/],search:e=>(St(e,"safari")||St(e,"mobile/"))&&St(e,"applewebkit")}],co=[{name:"Windows",search:lo("win"),versionRegexes:[/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]},{name:"iOS",search:e=>St(e,"iphone")||St(e,"ipad"),versionRegexes:[/.*?version\/\ ?([0-9]+)\.([0-9]+).*/,/.*cpu os ([0-9]+)_([0-9]+).*/,/.*cpu iphone os ([0-9]+)_([0-9]+).*/]},{name:"Android",search:lo("android"),versionRegexes:[/.*?android\ ?([0-9]+)\.([0-9]+).*/]},{name:"macOS",search:lo("mac os x"),versionRegexes:[/.*?mac\ os\ x\ ?([0-9]+)_([0-9]+).*/]},{name:"Linux",search:lo("linux"),versionRegexes:[]},{name:"Solaris",search:lo("sunos"),versionRegexes:[]},{name:"FreeBSD",search:lo("freebsd"),versionRegexes:[]},{name:"ChromeOS",search:lo("cros"),versionRegexes:[/.*?chrome\/([0-9]+)\.([0-9]+).*/]}],io={browsers:g(ao),oses:g(co)},mo="Edge",uo="Chromium",fo="Opera",go="Firefox",ho="Safari",po=e=>{const t=e.current,o=e.version,n=e=>()=>t===e;return{current:t,version:o,isEdge:n(mo),isChromium:n(uo),isIE:n("IE"),isOpera:n(fo),isFirefox:n(go),isSafari:n(ho)}},wo=()=>po({current:void 0,version:no.unknown()}),bo=po,vo=(g(mo),g(uo),g("IE"),g(fo),g(go),g(ho),"Windows"),yo="Android",xo="Linux",Co="macOS",So="Solaris",To="FreeBSD",Ro="ChromeOS",Do=e=>{const t=e.current,o=e.version,n=e=>()=>t===e;return{current:t,version:o,isWindows:n(vo),isiOS:n("iOS"),isAndroid:n(yo),isMacOS:n(Co),isLinux:n(xo),isSolaris:n(So),isFreeBSD:n(To),isChromeOS:n(Ro)}},Oo=()=>Do({current:void 0,version:no.unknown()}),ko=Do,Eo=(g(vo),g("iOS"),g(yo),g(xo),g(Co),g(So),g(To),g(Ro),e=>window.matchMedia(e).matches);let No=eo((()=>((e,t,o)=>{const n=io.browsers(),r=io.oses(),s=t.bind((e=>((e,t)=>V(t.brands,(t=>{const o=t.brand.toLowerCase();return L(e,(e=>{var t;return o===(null===(t=e.brand)||void 0===t?void 0:t.toLowerCase())})).map((e=>({current:e.name,version:no.nu(parseInt(t.version,10),0)})))})))(n,e))).orThunk((()=>((e,t)=>ro(e,t).map((e=>{const o=no.detect(e.versionRegexes,t);return{current:e.name,version:o}})))(n,e))).fold(wo,bo),l=((e,t)=>ro(e,t).map((e=>{const o=no.detect(e.versionRegexes,t);return{current:e.name,version:o}})))(r,e).fold(Oo,ko),a=((e,t,o,n)=>{const r=e.isiOS()&&!0===/ipad/i.test(o),s=e.isiOS()&&!r,l=e.isiOS()||e.isAndroid(),a=l||n("(pointer:coarse)"),c=r||!s&&l&&n("(min-device-width:768px)"),i=s||l&&!c,m=t.isSafari()&&e.isiOS()&&!1===/safari/i.test(o),d=!i&&!c&&!m;return{isiPad:g(r),isiPhone:g(s),isTablet:g(c),isPhone:g(i),isTouch:g(a),isAndroid:e.isAndroid,isiOS:e.isiOS,isWebView:g(m),isDesktop:g(d)}})(l,s,e,o);return{browser:s,os:l,deviceType:a}})(navigator.userAgent,C.from(navigator.userAgentData),Eo)));const Bo=()=>No(),_o=(e,t)=>{const o=o=>{const n=t(o);if(n<=0||null===n){const t=_t(o,e);return parseFloat(t)||0}return n},n=(e,t)=>A(t,((t,o)=>{const n=_t(e,o),r=void 0===n?0:parseInt(n,10);return isNaN(r)?t:t+r}),0);return{set:(t,o)=>{if(!u(o)&&!o.match(/^[0-9]+$/))throw new Error(e+".set accepts only positive integer values. Value was "+o);const n=t.dom;kt(n)&&(n.style[e]=o+"px")},get:o,getOuter:o,aggregate:n,max:(e,t,o)=>{const r=n(e,o);return t>r?t-r:0}}},zo=(e,t,o)=>((e,t)=>(e=>{const t=parseFloat(e);return isNaN(t)?C.none():C.some(t)})(e).getOr(t))(_t(e,t),o),Ao=_o("width",(e=>e.dom.offsetWidth)),Lo=e=>Ao.get(e),Wo=e=>Ao.getOuter(e),Mo=e=>((e,t)=>{const o=e.dom,n=o.getBoundingClientRect().width||o.offsetWidth;return"border-box"===t?n:((e,t,o,n)=>t-zo(e,`padding-${o}`,0)-zo(e,`padding-${n}`,0)-zo(e,`border-${o}-width`,0)-zo(e,`border-${n}-width`,0))(e,n,"left","right")})(e,"content-box"),jo=(e,t,o)=>{const n=e.cells,r=n.slice(0,t),s=n.slice(t),l=r.concat(o).concat(s);return Fo(e,l)},Po=(e,t,o)=>jo(e,t,[o]),Io=(e,t,o)=>{e.cells[t]=o},Fo=(e,t)=>tt(e.element,t,e.section,e.isNew),Ho=(e,t)=>e.cells[t],$o=(e,t)=>Ho(e,t).element,Vo=e=>e.cells.length,qo=e=>{const t=B(e,(e=>"colgroup"===e.section));return{rows:t.fail,cols:t.pass}},Uo=(e,t,o)=>{const n=E(e.cells,o);return tt(t(e.element),n,e.section,!0)},Go="data-snooker-locked-cols",Ko=e=>we(e,Go).bind((e=>C.from(e.match(/\d+/g)))).map((e=>I(e,x))),Yo=e=>{const t=A(qo(e).rows,((e,t)=>(N(t.cells,((t,o)=>{t.isLocked&&(e[o]=!0)})),e)),{}),o=J(t,((e,t)=>parseInt(t,10)));return((e,t)=>{const o=S.call(e,0);return o.sort(void 0),o})(o)},Jo=(e,t)=>e+","+t,Qo=(e,t)=>{const o=j(e.all,(e=>e.cells));return _(o,t)},Xo=e=>{const t={},o=[],n=H(e).map((e=>e.element)).bind(Kt).bind(Ko).getOr({});let r=0,s=0,l=0;const{pass:a,fail:c}=B(e,(e=>"colgroup"===e.section));N(c,(e=>{const a=[];N(e.cells,(e=>{let o=0;for(;void 0!==t[Jo(l,o)];)o++;const r=((e,t)=>X(e,t)&&void 0!==e[t]&&null!==e[t])(n,o.toString()),c=((e,t,o,n,r,s)=>({element:e,rowspan:t,colspan:o,row:n,column:r,isLocked:s}))(e.element,e.rowspan,e.colspan,l,o,r);for(let n=0;n{const t=(e=>{const t={};let o=0;return N(e.cells,(e=>{const n=e.colspan;k(n,(r=>{const s=o+r;t[s]=((e,t,o)=>({element:e,colspan:t,column:o}))(e.element,n,s)})),o+=n})),t})(e),o=((e,t)=>({element:e,columns:t}))(e.element,Q(t));return{colgroups:[o],columns:t}})).getOrThunk((()=>({colgroups:[],columns:{}}))),d=((e,t)=>({rows:e,columns:t}))(r,s);return{grid:d,access:t,all:o,columns:i,colgroups:m}},Zo=e=>{const t=Zt(e);return Xo(t)},en=Xo,tn=(e,t,o)=>C.from(e.access[Jo(t,o)]),on=(e,t,o)=>{const n=Qo(e,(e=>o(t,e.element)));return n.length>0?C.some(n[0]):C.none()},nn=Qo,rn=e=>j(e.all,(e=>e.cells)),sn=e=>Q(e.columns),ln=e=>q(e.columns).length>0,an=(e,t)=>C.from(e.columns[t]),cn=(e,t=x)=>{const o=e.grid,n=k(o.columns,h),r=k(o.rows,h);return E(n,(o=>mn((()=>j(r,(t=>tn(e,t,o).filter((e=>e.column===o)).toArray()))),(e=>1===e.colspan&&t(e.element)),(()=>tn(e,0,o)))))},mn=(e,t,o)=>{const n=e();return L(n,t).orThunk((()=>C.from(n[0]).orThunk(o))).map((e=>e.element))},dn=e=>{const t=e.grid,o=k(t.rows,h),n=k(t.columns,h);return E(o,(t=>mn((()=>j(n,(o=>tn(e,t,o).filter((e=>e.row===t)).fold(g([]),(e=>[e]))))),(e=>1===e.rowspan),(()=>tn(e,t,0)))))},un=(e,t)=>o=>"rtl"===fn(o)?t:e,fn=e=>"rtl"===_t(e,"direction")?"rtl":"ltr",gn=_o("height",(e=>{const t=e.dom;return lt(e)?t.getBoundingClientRect().height:t.offsetHeight})),hn=e=>gn.get(e),pn=e=>gn.getOuter(e),wn=(e,t)=>({left:e,top:t,translate:(o,n)=>wn(e+o,t+n)}),bn=wn,vn=(e,t)=>void 0!==e?e:void 0!==t?t:0,yn=e=>{const t=e.dom.ownerDocument,o=t.body,n=t.defaultView,r=t.documentElement;if(o===e.dom)return bn(o.offsetLeft,o.offsetTop);const s=vn(null==n?void 0:n.pageYOffset,r.scrollTop),l=vn(null==n?void 0:n.pageXOffset,r.scrollLeft),a=vn(r.clientTop,o.clientTop),c=vn(r.clientLeft,o.clientLeft);return xn(e).translate(l-c,s-a)},xn=e=>{const t=e.dom,o=t.ownerDocument.body;return o===t?bn(o.offsetLeft,o.offsetTop):lt(e)?(e=>{const t=e.getBoundingClientRect();return bn(t.left,t.top)})(t):bn(0,0)},Cn=(e,t)=>({row:e,y:t}),Sn=(e,t)=>({col:e,x:t}),Tn=e=>yn(e).left+Wo(e),Rn=e=>yn(e).left,Dn=(e,t)=>Sn(e,Rn(t)),On=(e,t)=>Sn(e,Tn(t)),kn=e=>yn(e).top,En=(e,t)=>Cn(e,kn(t)),Nn=(e,t)=>Cn(e,kn(t)+pn(t)),Bn=(e,t,o)=>{if(0===o.length)return[];const n=E(o.slice(1),((t,o)=>t.map((t=>e(o,t))))),r=o[o.length-1].map((e=>t(o.length-1,e)));return n.concat([r])},_n={delta:h,positions:e=>Bn(En,Nn,e),edge:kn},zn=un({delta:h,edge:Rn,positions:e=>Bn(Dn,On,e)},{delta:e=>-e,edge:Tn,positions:e=>Bn(On,Dn,e)}),An={delta:(e,t)=>zn(t).delta(e,t),positions:(e,t)=>zn(t).positions(e,t),edge:e=>zn(e).edge(e)},Ln={unsupportedLength:["em","ex","cap","ch","ic","rem","lh","rlh","vw","vh","vi","vb","vmin","vmax","cm","mm","Q","in","pc","pt","px"],fixed:["px","pt"],relative:["%"],empty:[""]},Wn=(()=>{const e="[0-9]+",t="[eE][+-]?"+e,o=e=>`(?:${e})?`,n=["Infinity",e+"\\."+o(e)+o(t),"\\."+e+o(t),e+o(t)].join("|");return new RegExp(`^([+-]?(?:${n}))(.*)$`)})(),Mn=/(\d+(\.\d+)?)%/,jn=/(\d+(\.\d+)?)px|em/,Pn=ue("col"),In=(e,t,o)=>{const n=Be(e).getOrThunk((()=>at(ke(e))));return t(e)/o(n)*100},Fn=(e,t)=>{Nt(e,"width",t+"px")},Hn=(e,t)=>{Nt(e,"width",t+"%")},$n=(e,t)=>{Nt(e,"height",t+"px")},Vn=e=>{const t=(e=>{return zo(t=e,"height",t.dom.offsetHeight)+"px";var t})(e);return t?((e,t,o,n)=>{const r=parseFloat(e);return Rt(e,"%")&&"table"!==ne(t)?((e,t,o,n)=>{const r=Kt(e).map((e=>{const n=o(e);return Math.floor(t/100*n)})).getOr(t);return n(e,r),r})(t,r,o,n):r})(t,e,hn,$n):hn(e)},qn=(e,t)=>At(e,t).orThunk((()=>we(e,t).map((e=>e+"px")))),Un=e=>qn(e,"width"),Gn=e=>In(e,Lo,Mo),Kn=e=>{return Pn(e)?Lo(e):zo(t=e,"width",t.dom.offsetWidth);var t},Yn=e=>((e,t,o)=>o(e)/Mt(e,"rowspan"))(e,0,Vn),Jn=(e,t,o)=>{Nt(e,"width",t+o)},Qn=e=>In(e,Lo,Mo)+"%",Xn=g(Mn),Zn=ue("col"),er=e=>Un(e).getOrThunk((()=>Kn(e)+"px")),tr=e=>{return(t=e,qn(t,"height")).getOrThunk((()=>Yn(e)+"px"));var t},or=(e,t,o,n,r,s)=>e.filter(n).fold((()=>s(((e,t)=>{if(t<0||t>=e.length-1)return C.none();const o=e[t].fold((()=>{const o=(e=>{const t=S.call(e,0);return t.reverse(),t})(e.slice(0,t));return V(o,((e,t)=>e.map((e=>({value:e,delta:t+1})))))}),(e=>C.some({value:e,delta:0}))),n=e[t+1].fold((()=>{const o=e.slice(t+1);return V(o,((e,t)=>e.map((e=>({value:e,delta:t+1})))))}),(e=>C.some({value:e,delta:1})));return o.bind((e=>n.map((t=>{const o=t.delta+e.delta;return Math.abs(t.value-e.value)/o}))))})(o,t))),(e=>r(e))),nr=(e,t,o,n)=>{const r=cn(e),s=ln(e)?(e=>E(sn(e),(e=>C.from(e.element))))(e):r,l=[C.some(An.edge(t))].concat(E(An.positions(r,t),(e=>e.map((e=>e.x))))),a=b(jt);return E(s,((e,t)=>or(e,t,l,a,(e=>{if((e=>{const t=Bo().browser,o=t.isChromium()||t.isFirefox();return!Zn(e)||o})(e))return o(e);{const e=null!=(s=r[t])?h(s):C.none();return or(e,t,l,a,(e=>n(C.some(Lo(e)))),n)}var s}),n)))},rr=e=>e.map((e=>e+"px")).getOr(""),sr=(e,t,o)=>nr(e,t,Kn,(e=>e.getOrThunk(o.minCellWidth))),lr=(e,t,o,n,r)=>{const s=dn(e),l=[C.some(o.edge(t))].concat(E(o.positions(s,t),(e=>e.map((e=>e.y)))));return E(s,((e,t)=>or(e,t,l,b(Pt),n,r)))},ar=(e,t)=>()=>lt(e)?t(e):parseFloat(At(e,"width").getOr("0")),cr=e=>{const t=ar(e,(e=>parseFloat(Qn(e)))),o=ar(e,Lo);return{width:t,pixelWidth:o,getWidths:(t,o)=>((e,t,o)=>nr(e,t,Gn,(e=>e.fold((()=>o.minCellWidth()),(e=>e/o.pixelWidth()*100)))))(t,e,o),getCellDelta:e=>e/o()*100,singleColumnWidth:(e,t)=>[100-e],minCellWidth:()=>Ft()/o()*100,setElementWidth:Hn,adjustTableWidth:o=>{const n=t();Hn(e,n+o/100*n)},isRelative:!0,label:"percent"}},ir=e=>{const t=ar(e,Lo);return{width:t,pixelWidth:t,getWidths:(t,o)=>sr(t,e,o),getCellDelta:h,singleColumnWidth:(e,t)=>[Math.max(Ft(),e+t)-e],minCellWidth:Ft,setElementWidth:Fn,adjustTableWidth:o=>{const n=t()+o;Fn(e,n)},isRelative:!1,label:"pixel"}},mr=e=>Un(e).fold((()=>(e=>{const t=ar(e,Lo),o=g(0);return{width:t,pixelWidth:t,getWidths:(t,o)=>sr(t,e,o),getCellDelta:o,singleColumnWidth:g([0]),minCellWidth:o,setElementWidth:f,adjustTableWidth:f,isRelative:!0,label:"none"}})(e)),(t=>((e,t)=>null!==Xn().exec(t)?cr(e):ir(e))(e,t))),dr=ir,ur=cr,fr=(e,t,o)=>{const n=e[o].element,r=xe.fromTag("td");Ie(r,xe.fromTag("br")),(t?Ie:Pe)(n,r)},gr=((e,t)=>{const o=t=>e(t)?C.from(t.dom.nodeValue):C.none();return{get:t=>{if(!e(t))throw new Error("Can only get text value of a text node");return o(t).getOr("")},getOption:o,set:(t,o)=>{if(!e(t))throw new Error("Can only set raw text value of a text node");t.dom.nodeValue=o}}})(ie),hr=e=>gr.get(e),pr=e=>gr.getOption(e),wr=(e,t)=>gr.set(e,t),br=e=>"img"===ne(e)?1:pr(e).fold((()=>Le(e).length),(e=>e.length)),vr=["img","br"],yr=e=>pr(e).filter((e=>0!==e.trim().length||e.indexOf("\xa0")>-1)).isSome()||D(vr,ne(e))||(e=>ae(e)&&"false"===pe(e,"contenteditable"))(e),xr=e=>((e,t)=>{const o=e=>{for(let n=0;nSr(e,yr),Sr=(e,t)=>{const o=e=>{const n=Le(e);for(let e=n.length-1;e>=0;e--){const r=n[e];if(t(r))return C.some(r);const s=o(r);if(s.isSome())return s}return C.none()};return o(e)},Tr={scope:["row","col"]},Rr=e=>()=>{const t=xe.fromTag("td",e.dom);return Ie(t,xe.fromTag("br",e.dom)),t},Dr=e=>()=>xe.fromTag("col",e.dom),Or=e=>()=>xe.fromTag("colgroup",e.dom),kr=e=>()=>xe.fromTag("tr",e.dom),Er=(e,t,o)=>{const n=((e,t)=>{const o=Je(e,t),n=Le(Ye(e));return $e(o,n),o})(e,t);return G(o,((e,t)=>{null===e?be(n,t):ge(n,t,e)})),n},Nr=e=>e,Br=(e,t,o)=>{const n=(e,t)=>{((e,t)=>{const o=e.dom,n=t.dom;kt(o)&&kt(n)&&(n.style.cssText=o.style.cssText)})(e.element,t),Lt(t,"height"),1!==e.colspan&&Lt(t,"width")};return{col:o=>{const r=xe.fromTag(ne(o.element),t.dom);return n(o,r),e(o.element,r),r},colgroup:Or(t),row:kr(t),cell:r=>{const s=xe.fromTag(ne(r.element),t.dom),l=o.getOr(["strong","em","b","i","span","font","h1","h2","h3","h4","h5","h6","p","div"]),a=l.length>0?((e,t,o)=>xr(e).map((n=>{const r=o.join(","),s=it(n,r,(t=>Re(t,e)));return z(s,((e,t)=>{const o=Ke(t);return Ie(e,o),o}),t)})).getOr(t))(r.element,s,l):s;return Ie(a,xe.fromTag("br")),n(r,s),((e,t)=>{G(Tr,((o,n)=>we(e,n).filter((e=>D(o,e))).each((e=>ge(t,n,e)))))})(r.element,s),e(r.element,s),s},replace:Er,colGap:Dr(t),gap:Rr(t)}},_r=e=>({col:Dr(e),colgroup:Or(e),row:kr(e),cell:Rr(e),replace:Nr,colGap:Dr(e),gap:Rr(e)}),zr=e=>t=>t.options.get(e),Ar="100%",Lr=e=>{var t;const o=e.dom,n=null!==(t=o.getParent(e.selection.getStart(),o.isBlock))&&void 0!==t?t:e.getBody();return Mo(xe.fromDom(n))+"px"},Wr=e=>C.from(e.options.get("table_clone_elements")),Mr=zr("table_header_type"),jr=zr("table_column_resizing"),Pr=e=>"preservetable"===jr(e),Ir=e=>"resizetable"===jr(e),Fr=zr("table_sizing_mode"),Hr=e=>"relative"===Fr(e),$r=e=>"fixed"===Fr(e),Vr=e=>"responsive"===Fr(e),qr=zr("table_resize_bars"),Ur=zr("table_style_by_css"),Gr=zr("table_merge_content_on_paste"),Kr=e=>{const t=e.options,o=t.get("table_default_attributes");return t.isSet("table_default_attributes")?o:((e,t)=>Vr(e)||Ur(e)?t:$r(e)?{...t,width:Lr(e)}:{...t,width:Ar})(e,o)},Yr=zr("table_use_colgroups"),Jr=e=>bt(e,"[contenteditable]"),Qr=(e,t=!1)=>lt(e)?e.dom.isContentEditable:Jr(e).fold(g(t),(e=>"true"===Xr(e))),Xr=e=>e.dom.contentEditable,Zr=e=>xe.fromDom(e.getBody()),es=e=>t=>Re(t,Zr(e)),ts=e=>{be(e,"data-mce-style");const t=e=>be(e,"data-mce-style");N(Ut(e),t),N(Gt(e),t),N(Yt(e),t)},os=e=>xe.fromDom(e.selection.getStart()),ns=e=>e.getBoundingClientRect().width,rs=e=>e.getBoundingClientRect().height,ss=e=>gt(e,ue("table")).exists(Qr),ls=(e,t)=>{const o=t.column,n=t.column+t.colspan-1,r=t.row,s=t.row+t.rowspan-1;return o<=e.finishCol&&n>=e.startCol&&r<=e.finishRow&&s>=e.startRow},as=(e,t)=>t.column>=e.startCol&&t.column+t.colspan-1<=e.finishCol&&t.row>=e.startRow&&t.row+t.rowspan-1<=e.finishRow,cs=(e,t,o)=>{const n=on(e,t,Re),r=on(e,o,Re);return n.bind((e=>r.map((t=>{return o=e,n=t,{startRow:Math.min(o.row,n.row),startCol:Math.min(o.column,n.column),finishRow:Math.max(o.row+o.rowspan-1,n.row+n.rowspan-1),finishCol:Math.max(o.column+o.colspan-1,n.column+n.colspan-1)};var o,n}))))},is=(e,t,o)=>cs(e,t,o).map((t=>{const o=nn(e,w(ls,t));return E(o,(e=>e.element))})),ms=(e,t)=>on(e,t,((e,t)=>De(t,e))).map((e=>e.element)),ds=(e,t,o)=>{const n=fs(e);return is(n,t,o)},us=(e,t,o,n,r)=>{const s=fs(e),l=Re(e,o)?C.some(t):ms(s,t),a=Re(e,r)?C.some(n):ms(s,n);return l.bind((e=>a.bind((t=>is(s,e,t)))))},fs=Zo;var gs=["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","li","table","thead","tbody","tfoot","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"],hs=()=>({up:g({selector:ht,closest:bt,predicate:ft,all:_e}),down:g({selector:dt,predicate:ct}),styles:g({get:_t,getRaw:At,set:Nt,remove:Lt}),attrs:g({get:pe,set:ge,remove:be,copyTo:(e,t)=>{const o=ve(e);he(t,o)}}),insert:g({before:Me,after:je,afterAll:He,append:Ie,appendAll:$e,prepend:Pe,wrap:Fe}),remove:g({unwrap:Ue,remove:qe}),create:g({nu:xe.fromTag,clone:e=>xe.fromDom(e.dom.cloneNode(!1)),text:xe.fromText}),query:g({comparePosition:(e,t)=>e.dom.compareDocumentPosition(t.dom),prevSibling:ze,nextSibling:Ae}),property:g({children:Le,name:ne,parent:Ne,document:e=>Ee(e).dom,isText:ie,isComment:le,isElement:ce,isSpecial:e=>{const t=ne(e);return D(["script","noscript","iframe","noframes","noembed","title","style","textarea","xmp"],t)},getLanguage:e=>ce(e)?we(e,"lang"):C.none(),getText:hr,setText:wr,isBoundary:e=>!!ce(e)&&("body"===ne(e)||D(gs,ne(e))),isEmptyTag:e=>!!ce(e)&&D(["br","img","hr","input"],ne(e)),isNonEditable:e=>ce(e)&&"false"===pe(e,"contenteditable")}),eq:Re,is:Oe});const ps=(e,t,o,n)=>{const r=t(e,o);return z(n,((o,n)=>{const r=t(e,n);return ws(e,o,r)}),r)},ws=(e,t,o)=>t.bind((t=>o.filter(w(e.eq,t)))),bs=hs(),vs=(e,t)=>((e,t,o)=>o.length>0?((e,t,o,n)=>n(e,t,o[0],o.slice(1)))(e,t,o,ps):C.none())(bs,((t,o)=>e(o)),t),ys=e=>ht(e,"table"),xs=(e,t,o)=>{const n=e=>t=>void 0!==o&&o(t)||Re(t,e);return Re(e,t)?C.some({boxes:C.some([e]),start:e,finish:t}):ys(e).bind((r=>ys(t).bind((s=>{if(Re(r,s))return C.some({boxes:ds(r,e,t),start:e,finish:t});if(De(r,s)){const o=it(t,"td,th",n(r)),l=o.length>0?o[o.length-1]:t;return C.some({boxes:us(r,e,r,t,s),start:e,finish:l})}if(De(s,r)){const o=it(e,"td,th",n(s)),l=o.length>0?o[o.length-1]:e;return C.some({boxes:us(s,e,r,t,s),start:e,finish:l})}return((e,t,o)=>((e,t,o,n=y)=>{const r=[t].concat(e.up().all(t)),s=[o].concat(e.up().all(o)),l=e=>W(e,n).fold((()=>e),(t=>e.slice(0,t+1))),a=l(r),c=l(s),i=L(a,(t=>O(c,((e,t)=>w(e.eq,t))(e,t))));return{firstpath:a,secondpath:c,shared:i}})(bs,e,t,void 0))(e,t).shared.bind((l=>bt(l,"table",o).bind((o=>{const l=it(t,"td,th",n(o)),a=l.length>0?l[l.length-1]:t,c=it(e,"td,th",n(o)),i=c.length>0?c[c.length-1]:e;return C.some({boxes:us(o,e,r,t,s),start:i,finish:a})}))))}))))},Cs=(e,t)=>{const o=dt(e,t);return o.length>0?C.some(o):C.none()},Ss=(e,t,o)=>wt(e,t).bind((t=>wt(e,o).bind((e=>vs(ys,[t,e]).map((o=>({first:t,last:e,table:o}))))))),Ts=(e,t,o,n,r)=>((e,t)=>L(e,(e=>Ce(e,t))))(e,r).bind((e=>((e,t,o)=>Kt(e).bind((n=>((e,t,o,n)=>on(e,t,Re).bind((t=>{const r=o>0?t.row+t.rowspan-1:t.row,s=n>0?t.column+t.colspan-1:t.column;return tn(e,r+o,s+n).map((e=>e.element))})))(fs(n),e,t,o))))(e,t,o).bind((e=>((e,t)=>ht(e,"table").bind((o=>wt(o,t).bind((t=>xs(t,e).bind((e=>e.boxes.map((t=>({boxes:t,start:e.start,finish:e.finish}))))))))))(e,n))))),Rs=(e,t)=>Cs(e,t),Ds=(e,t,o)=>Ss(e,t,o).bind((t=>{const o=t=>Re(e,t),n="thead,tfoot,tbody,table",r=ht(t.first,n,o),s=ht(t.last,n,o);return r.bind((e=>s.bind((o=>Re(e,o)?((e,t,o)=>((e,t,o)=>cs(e,t,o).bind((t=>((e,t)=>{let o=!0;const n=w(as,t);for(let r=t.startRow;r<=t.finishRow;r++)for(let s=t.startCol;s<=t.finishCol;s++)o=o&&tn(e,r,s).exists(n);return o?C.some(t):C.none()})(e,t))))(fs(e),t,o))(t.table,t.first,t.last):C.none()))))})),Os=h,ks=e=>{const t=(e,t)=>we(e,t).exists((e=>parseInt(e,10)>1));return e.length>0&&P(e,(e=>t(e,"rowspan")||t(e,"colspan")))?C.some(e):C.none()},Es=(e,t,o)=>t.length<=1?C.none():Ds(e,o.firstSelectedSelector,o.lastSelectedSelector).map((e=>({bounds:e,cells:t}))),Ns="data-mce-selected",Bs="data-mce-first-selected",_s="data-mce-last-selected",zs="["+Ns+"]",As={selected:Ns,selectedSelector:"td["+Ns+"],th["+Ns+"]",firstSelected:Bs,firstSelectedSelector:"td["+Bs+"],th["+Bs+"]",lastSelected:_s,lastSelectedSelector:"td["+_s+"],th["+_s+"]"},Ls=(e,t,o)=>({element:o,mergable:Es(t,e,As),unmergable:ks(e),selection:Os(e)}),Ws=e=>(t,o)=>{const n=ne(t),r="col"===n||"colgroup"===n?Kt(s=t).bind((e=>Rs(e,As.firstSelectedSelector))).fold(g(s),(e=>e[0])):t;var s;return bt(r,e,o)},Ms=Ws("th,td,caption"),js=Ws("th,td"),Ps=e=>{return t=e.model.table.getSelectedCells(),E(t,xe.fromDom);var t},Is=(e,t)=>{e.on("BeforeGetContent",(t=>{const o=o=>{t.preventDefault(),(e=>Kt(e[0]).map((e=>{const t=((e,t)=>{const o=e=>Ce(e.element,t),n=Ye(e),r=Zt(n),s=mr(e),l=en(r),a=((e,t)=>{const o=e.grid.columns;let n=e.grid.rows,r=o,s=0,l=0;const a=[],c=[];return G(e.access,(e=>{if(a.push(e),t(e)){c.push(e);const t=e.row,o=t+e.rowspan-1,a=e.column,i=a+e.colspan-1;ts&&(s=o),al&&(l=i)}})),((e,t,o,n,r,s)=>({minRow:e,minCol:t,maxRow:o,maxCol:n,allCells:r,selectedCells:s}))(n,r,s,l,a,c)})(l,o),c="th:not("+t+"),td:not("+t+")",i=Vt(n,"th,td",(e=>Ce(e,c)));N(i,qe),((e,t,o,n)=>{const r=_(e,(e=>"colgroup"!==e.section)),s=t.grid.columns,l=t.grid.rows;for(let e=0;eo.maxRow||ao.maxCol||(tn(t,e,a).filter(n).isNone()?fr(r,l,e):l=!0)}})(r,l,a,o);const m=((e,t,o,n)=>{if(0===n.minCol&&t.grid.columns===n.maxCol+1)return 0;const r=sr(t,e,o),s=A(r,((e,t)=>e+t),0),l=A(r.slice(n.minCol,n.maxCol+1),((e,t)=>e+t),0),a=l/s*o.pixelWidth()-o.pixelWidth();return o.getCellDelta(a)})(e,Zo(e),s,a);return((e,t,o,n)=>{G(o.columns,(e=>{(e.columnt.maxCol)&&qe(e.element)}));const r=_($t(e,"tr"),(e=>0===e.dom.childElementCount));N(r,qe),t.minCol!==t.maxCol&&t.minRow!==t.maxRow||N($t(e,"th,td"),(e=>{be(e,"rowspan"),be(e,"colspan")})),be(e,Go),be(e,"data-snooker-col-series"),mr(e).adjustTableWidth(n)})(n,a,l,m),n})(e,zs);return ts(t),[t]})))(o).each((o=>{t.content="text"===t.format?(e=>E(e,(e=>e.dom.innerText)).join(""))(o):((e,t)=>E(t,(t=>e.selection.serializer.serialize(t.dom,{}))).join(""))(e,o)}))};if(!0===t.selection){const t=(e=>_(Ps(e),(e=>Ce(e,As.selectedSelector))))(e);t.length>=1&&o(t)}})),e.on("BeforeSetContent",(o=>{if(!0===o.selection&&!0===o.paste){const n=Ps(e);H(n).each((n=>{Kt(n).each((r=>{const s=_(((e,t)=>{const o=document.createElement("div");return o.innerHTML=e,Le(xe.fromDom(o))})(o.content),(e=>"meta"!==ne(e))),l=ue("table");if(Gr(e)&&1===s.length&&l(s[0])){o.preventDefault();const l=xe.fromDom(e.getDoc()),a=_r(l),c=((e,t,o)=>({element:e,clipboard:t,generators:o}))(n,s[0],a);t.pasteCells(r,c).each((()=>{e.focus()}))}}))}))}}))},Fs=(e,t)=>({element:e,offset:t}),Hs=(e,t,o)=>e.property().isText(t)&&0===e.property().getText(t).trim().length||e.property().isComment(t)?o(t).bind((t=>Hs(e,t,o).orThunk((()=>C.some(t))))):C.none(),$s=(e,t)=>e.property().isText(t)?e.property().getText(t).length:e.property().children(t).length,Vs=(e,t)=>{const o=Hs(e,t,e.query().prevSibling).getOr(t);if(e.property().isText(o))return Fs(o,$s(e,o));const n=e.property().children(o);return n.length>0?Vs(e,n[n.length-1]):Fs(o,$s(e,o))},qs=Vs,Us=hs(),Gs=(e,t)=>{if(!jt(e)){const o=(e=>Un(e).bind((e=>{return t=e,o=["fixed","relative","empty"],C.from(Wn.exec(t)).bind((e=>{const t=Number(e[1]),n=e[2];return((e,t)=>O(t,(t=>O(Ln[t],(t=>e===t)))))(n,o)?C.some({value:t,unit:n}):C.none()}));var t,o})))(e);o.each((o=>{const n=o.value/2;Jn(e,n,o.unit),Jn(t,n,o.unit)}))}},Ks=e=>E(e,g(0)),Ys=(e,t,o,n,r)=>r(e.slice(0,t)).concat(n).concat(r(e.slice(o))),Js=e=>(t,o,n,r)=>{if(e(n)){const e=Math.max(r,t[o]-Math.abs(n)),s=Math.abs(e-t[o]);return n>=0?s:-s}return n},Qs=Js((e=>e<0)),Xs=Js(x),Zs=()=>{const e=(e,t,o,n)=>{const r=(100+o)/100,s=Math.max(n,(e[t]+o)/r);return E(e,((e,o)=>(o===t?s:e/r)-e))},t=(t,o,n,r,s,l)=>l?e(t,o,r,s):((e,t,o,n,r)=>{const s=Qs(e,t,n,r);return Ys(e,t,o+1,[s,0],Ks)})(t,o,n,r,s);return{resizeTable:(e,t)=>e(t),clampTableDelta:Qs,calcLeftEdgeDeltas:t,calcMiddleDeltas:(e,o,n,r,s,l,a)=>t(e,n,r,s,l,a),calcRightEdgeDeltas:(t,o,n,r,s,l)=>{if(l)return e(t,n,r,s);{const e=Qs(t,n,r,s);return Ks(t.slice(0,n)).concat([e])}},calcRedestributedWidths:(e,t,o,n)=>{if(n){const n=(t+o)/t,r=E(e,(e=>e/n));return{delta:100*n-100,newSizes:r}}return{delta:o,newSizes:e}}}},el=()=>{const e=(e,t,o,n,r)=>{const s=Xs(e,n>=0?o:t,n,r);return Ys(e,t,o+1,[s,-s],Ks)};return{resizeTable:(e,t,o)=>{o&&e(t)},clampTableDelta:(e,t,o,n,r)=>{if(r){if(o>=0)return o;{const t=A(e,((e,t)=>e+t-n),0);return Math.max(-t,o)}}return Qs(e,t,o,n)},calcLeftEdgeDeltas:e,calcMiddleDeltas:(t,o,n,r,s,l)=>e(t,n,r,s,l),calcRightEdgeDeltas:(e,t,o,n,r,s)=>{if(s)return Ks(e);{const t=n/e.length;return E(e,g(t))}},calcRedestributedWidths:(e,t,o,n)=>({delta:0,newSizes:e})}},tl=e=>Zo(e).grid,ol=ue("th"),nl=e=>P(e,(e=>ol(e.element))),rl=(e,t)=>e&&t?"sectionCells":e?"section":"cells",sl=e=>{const t="thead"===e.section,o=vt(ll(e.cells),"th");return"tfoot"===e.section?{type:"footer"}:t||o?{type:"header",subType:rl(t,o)}:{type:"body"}},ll=e=>{const t=_(e,(e=>ol(e.element)));return 0===t.length?C.some("td"):t.length===e.length?C.some("th"):C.none()},al=(e,t,o)=>et(o(e.element,t),!0,e.isLocked),cl=(e,t)=>e.section!==t?tt(e.element,e.cells,t,e.isNew):e,il=()=>({transformRow:cl,transformCell:(e,t,o)=>{const n=o(e.element,t),r="td"!==ne(n)?((e,t)=>{const o=Je(e,"td");je(e,o);const n=Le(e);return $e(o,n),qe(e),o})(n):n;return et(r,e.isNew,e.isLocked)}}),ml=()=>({transformRow:cl,transformCell:al}),dl=()=>({transformRow:(e,t)=>cl(e,"thead"===t?"tbody":t),transformCell:al}),ul=il,fl=ml,gl=dl,hl=()=>({transformRow:h,transformCell:al}),pl=(e,t,o,n)=>{o===n?be(e,t):ge(e,t,o)},wl=(e,t,o)=>{$(mt(e,t)).fold((()=>Pe(e,o)),(e=>je(e,o)))},bl=(e,t)=>{const o=[],n=[],r=e=>E(e,(e=>{e.isNew&&o.push(e.element);const t=e.element;return Ve(t),N(e.cells,(e=>{e.isNew&&n.push(e.element),pl(e.element,"colspan",e.colspan,1),pl(e.element,"rowspan",e.rowspan,1),Ie(t,e.element)})),t})),s=e=>j(e,(e=>E(e.cells,(e=>(pl(e.element,"span",e.colspan,1),e.element))))),l=(t,o)=>{const n=((e,t)=>{const o=pt(e,t).getOrThunk((()=>{const o=xe.fromTag(t,ke(e).dom);return"thead"===t?wl(e,"caption,colgroup",o):"colgroup"===t?wl(e,"caption",o):Ie(e,o),o}));return Ve(o),o})(e,o),l=("colgroup"===o?s:r)(t);$e(n,l)},a=(t,o)=>{t.length>0?l(t,o):(t=>{pt(e,t).each(qe)})(o)},c=[],i=[],m=[],d=[];return N(t,(e=>{switch(e.section){case"thead":c.push(e);break;case"tbody":i.push(e);break;case"tfoot":m.push(e);break;case"colgroup":d.push(e)}})),a(d,"colgroup"),a(c,"thead"),a(i,"tbody"),a(m,"tfoot"),{newRows:o,newCells:n}},vl=(e,t)=>{if(0===e.length)return 0;const o=e[0];return W(e,(e=>!t(o.element,e.element))).getOr(e.length)},yl=(e,t)=>{const o=E(e,(e=>E(e.cells,y)));return E(e,((n,r)=>{const s=j(n.cells,((n,s)=>{if(!1===o[r][s]){const m=((e,t,o,n)=>{const r=((e,t)=>e[t])(e,t),s="colgroup"===r.section,l=vl(r.cells.slice(o),n),a=s?1:vl(((e,t)=>E(e,(e=>Ho(e,t))))(e.slice(t),o),n);return{colspan:l,rowspan:a}})(e,r,s,t);return((e,t,n,r)=>{for(let s=e;s({element:e,cells:t,section:o,isNew:n}))(n.element,s,n.section,n.isNew)}))},xl=(e,t,o)=>{const n=[];N(e.colgroups,(r=>{const s=[];for(let n=0;net(e.element,o,!1))).getOrThunk((()=>et(t.colGap(),!0,!1)));s.push(r)}n.push(tt(r.element,s,"colgroup",o))}));for(let r=0;ret(e.element,o,e.isLocked))).getOrThunk((()=>et(t.gap(),!0,!1)));s.push(l)}const l=e.all[r],a=tt(l.element,s,l.section,o);n.push(a)}return n},Cl=e=>yl(e,Re),Sl=(e,t)=>V(e.all,(e=>L(e.cells,(e=>Re(t,e.element))))),Tl=(e,t,o)=>{const n=E(t.selection,(t=>qt(t).bind((t=>Sl(e,t))).filter(o))),r=yt(n);return xt(r.length>0,r)},Rl=(e,t,o,n,r)=>(s,l,a,c)=>{const i=Zo(s),m=C.from(null==c?void 0:c.section).getOrThunk(hl);return t(i,l).map((t=>{const o=((e,t)=>xl(e,t,!1))(i,a),n=e(o,t,Re,r(a),m),s=Yo(n.grid);return{info:t,grid:Cl(n.grid),cursor:n.cursor,lockedColumns:s}})).bind((e=>{const t=bl(s,e.grid),r=C.from(null==c?void 0:c.sizing).getOrThunk((()=>mr(s))),l=C.from(null==c?void 0:c.resize).getOrThunk(el);return o(s,e.grid,e.info,{sizing:r,resize:l,section:m}),n(s),be(s,Go),e.lockedColumns.length>0&&ge(s,Go,e.lockedColumns.join(",")),C.some({cursor:e.cursor,newRows:t.newRows,newCells:t.newCells})}))},Dl=(e,t)=>Tl(e,t,x).map((e=>({cells:e,generators:t.generators,clipboard:t.clipboard}))),Ol=(e,t)=>Tl(e,t,x),kl=(e,t)=>Tl(e,t,(e=>!e.isLocked)),El=(e,t)=>P(t,(t=>((e,t)=>Sl(e,t).exists((e=>!e.isLocked)))(e,t))),Nl=(e,t,o,n)=>{const r=qo(e).rows;let s=!0;for(let e=0;e{const t=t=>t(e),o=g(e),n=()=>r,r={tag:!0,inner:e,fold:(t,o)=>o(e),isValue:x,isError:y,map:t=>zl.value(t(e)),mapError:n,bind:t,exists:t,forall:t,getOr:o,or:n,getOrThunk:o,orThunk:n,getOrDie:o,each:t=>{t(e)},toOptional:()=>C.some(e)};return r},_l=e=>{const t=()=>o,o={tag:!1,inner:e,fold:(t,o)=>t(e),isValue:y,isError:x,map:t,mapError:t=>zl.error(t(e)),bind:t,exists:y,forall:x,getOr:h,or:h,getOrThunk:v,orThunk:v,getOrDie:(n=String(e),()=>{throw new Error(n)}),each:f,toOptional:C.none};var n;return o},zl={value:Bl,error:_l,fromOption:(e,t)=>e.fold((()=>_l(t)),Bl)},Al=(e,t)=>({rowDelta:0,colDelta:Vo(e[0])-Vo(t[0])}),Ll=(e,t)=>({rowDelta:e.length-t.length,colDelta:0}),Wl=(e,t,o,n)=>{const r="colgroup"===t.section?o.col:o.cell;return k(e,(e=>et(r(),!0,n(e))))},Ml=(e,t,o,n)=>{const r=e[e.length-1];return e.concat(k(t,(()=>{const e="colgroup"===r.section?o.colgroup:o.row,t=Uo(r,e,h),s=Wl(t.cells.length,t,o,(e=>X(n,e.toString())));return Fo(t,s)})))},jl=(e,t,o,n)=>E(e,(e=>{const r=Wl(t,e,o,y);return jo(e,n,r)})),Pl=(e,t,o)=>{const n=t.colDelta<0?jl:h,r=t.rowDelta<0?Ml:h,s=Yo(e),l=Vo(e[0]),a=O(s,(e=>e===l-1)),c=n(e,Math.abs(t.colDelta),o,a?l-1:l),i=Yo(c);return r(c,Math.abs(t.rowDelta),o,I(i,x))},Il=(e,t,o,n)=>{const r=w(n,Ho(e[t],o).element),s=e[t];return e.length>1&&Vo(s)>1&&(o>0&&r($o(s,o-1))||o0&&r($o(e[t-1],o))||t_(o,(o=>o>=e.column&&o<=Vo(t[0])+e.column)),Hl=(e,t,o,n,r)=>{((e,t,o,n)=>{t>0&&t{const r=e.cells[t-1];let s=0;const l=n();for(;e.cells.length>t+s&&o(r.element,e.cells[t+s].element);)Io(e,t+s,et(l,!0,e.cells[t+s].isLocked)),s++}))})(t,e,r,n.cell);const s=Ll(o,t),l=Pl(o,s,n),a=Ll(t,l),c=Pl(t,a,n);return E(c,((t,o)=>jo(t,e,l[o].cells)))},$l=(e,t,o,n,r)=>{((e,t,o,n)=>{const r=qo(e).rows;if(t>0&&tA(e,((e,o)=>O(e,(e=>t(e.element,o.element)))?e:e.concat([o])),[]))(r[t-1].cells,o);N(e,(e=>{let s=C.none();for(let l=t;l{Io(a,t,et(e,!0,c.isLocked))})))}}))}})(t,e,r,n.cell);const s=Yo(t),l=Al(t,o),a={...l,colDelta:l.colDelta-s.length},c=Pl(t,a,n),{cols:i,rows:m}=qo(c),d=Yo(c),u=Al(o,t),f={...u,colDelta:u.colDelta+d.length},g=(p=n,w=d,E(o,(e=>A(w,((t,o)=>{const n=Wl(1,e,p,x)[0];return Po(t,o,n)}),e)))),h=Pl(g,f,n);var p,w;return[...i,...m.slice(0,e),...h,...m.slice(e,m.length)]},Vl=(e,t,o,n,r)=>{const{rows:s,cols:l}=qo(e),a=s.slice(0,t),c=s.slice(t);return[...l,...a,((e,t,o,n)=>Uo(e,(e=>n(e,o)),t))(s[o],((e,o)=>t>0&&tE(e,(e=>{const s=t>0&&t{if("colgroup"!==o&&n)return Ho(e,t);{const t=Ho(e,r);return et(l(t.element,s),!0,!1)}})(e,t,e.section,s,o,n,r);return Po(e,t,l)})),Ul=(e,t,o,n)=>((e,t,o,n)=>void 0!==$o(e[t],o)&&t>0&&n($o(e[t-1],o),$o(e[t],o)))(e,t,o,n)||((e,t,o)=>t>0&&o($o(e,t-1),$o(e,t)))(e[t],o,n),Gl=(e,t,o,n)=>{const r=e=>(e=>"row"===e?Pt(t):jt(t))(e)?`${e}group`:e;return e?ol(t)?r(o):null:n&&ol(t)?r("row"===o?"col":"row"):null},Kl=(e,t,o)=>et(o(e.element,t),!0,e.isLocked),Yl=(e,t,o,n,r,s,l)=>E(e,((e,a)=>((e,c)=>{const i=e.cells,m=E(i,((e,c)=>{if((e=>O(t,(t=>o(e.element,t.element))))(e)){const t=l(e,a,c)?r(e,o,n):e;return s(t,a,c).each((e=>{var o,n;o=t.element,n={scope:C.from(e)},G(n,((e,t)=>{e.fold((()=>{be(o,t)}),(e=>{fe(o.dom,t,e)}))}))})),t}return e}));return tt(e.element,m,e.section,e.isNew)})(e))),Jl=(e,t,o)=>j(e,((n,r)=>Ul(e,r,t,o)?[]:[Ho(n,t)])),Ql=(e,t,o,n,r)=>{const s=qo(e).rows,l=j(t,(e=>Jl(s,e,n))),a=E(s,(e=>nl(e.cells))),c=((e,t)=>P(t,h)&&nl(e)?x:(e,o,n)=>!("th"===ne(e.element)&&t[o]))(l,a),i=((e,t)=>(o,n)=>C.some(Gl(e,o.element,"row",t[n])))(o,a);return Yl(e,l,n,r,Kl,i,c)},Xl=(e,t,o,n)=>{const r=qo(e).rows,s=E(t,(e=>Ho(r[e.row],e.column)));return Yl(e,s,o,n,Kl,C.none,x)},Zl=e=>{if(!l(e))throw new Error("cases must be an array");if(0===e.length)throw new Error("there must be at least one case");const t=[],o={};return N(e,((n,r)=>{const s=q(n);if(1!==s.length)throw new Error("one and only one name per case");const a=s[0],c=n[a];if(void 0!==o[a])throw new Error("duplicate key detected:"+a);if("cata"===a)throw new Error("cannot have a case named cata (sorry)");if(!l(c))throw new Error("case arguments must be an array");t.push(a),o[a]=(...o)=>{const n=o.length;if(n!==c.length)throw new Error("Wrong number of arguments to case "+a+". Expected "+c.length+" ("+c+"), got "+n);return{fold:(...t)=>{if(t.length!==e.length)throw new Error("Wrong number of arguments to fold. Expected "+e.length+", got "+t.length);return t[r].apply(null,o)},match:e=>{const n=q(e);if(t.length!==n.length)throw new Error("Wrong number of arguments to match. Expected: "+t.join(",")+"\nActual: "+n.join(","));if(!P(t,(e=>D(n,e))))throw new Error("Not all branches were specified when using match. Specified: "+n.join(", ")+"\nRequired: "+t.join(", "));return e[a].apply(null,o)},log:e=>{console.log(e,{constructors:t,constructor:a,params:o})}}}})),o},ea={...Zl([{none:[]},{only:["index"]},{left:["index","next"]},{middle:["prev","index","next"]},{right:["prev","index"]}])},ta=(e,t,o)=>{let n=0;for(let r=e;r{const o=rn(e);return E(o,(e=>{const o=ta(e.row,e.row+e.rowspan,t);return{element:e.element,height:o,rowspan:e.rowspan}}))},na=(e,t,o)=>{const n=((e,t)=>ln(e)?((e,t)=>{const o=sn(e);return E(o,((e,o)=>({element:e.element,width:t[o],colspan:e.colspan})))})(e,t):((e,t)=>{const o=rn(e);return E(o,(e=>{const o=ta(e.column,e.column+e.colspan,t);return{element:e.element,width:o,colspan:e.colspan}}))})(e,t))(e,t);N(n,(e=>{o.setElementWidth(e.element,e.width)}))},ra=(e,t,o,n,r)=>{const s=Zo(e),l=r.getCellDelta(t),a=r.getWidths(s,r),c=o===s.grid.columns-1,i=n.clampTableDelta(a,o,l,r.minCellWidth(),c),m=((e,t,o,n,r)=>{const s=e.slice(0),l=((e,t)=>0===e.length?ea.none():1===e.length?ea.only(0):0===t?ea.left(0,1):t===e.length-1?ea.right(t-1,t):t>0&&tn.singleColumnWidth(s[e],o)),((e,t)=>r.calcLeftEdgeDeltas(s,e,t,o,n.minCellWidth(),n.isRelative)),((e,t,l)=>r.calcMiddleDeltas(s,e,t,l,o,n.minCellWidth(),n.isRelative)),((e,t)=>r.calcRightEdgeDeltas(s,e,t,o,n.minCellWidth(),n.isRelative)))})(a,o,i,r,n),d=E(m,((e,t)=>e+a[t]));na(s,d,r),n.resizeTable(r.adjustTableWidth,i,c)},sa=e=>A(e,((e,t)=>O(e,(e=>e.column===t.column))?e:e.concat([t])),[]).sort(((e,t)=>e.column-t.column)),la=ue("col"),aa=ue("colgroup"),ca=e=>"tr"===ne(e)||aa(e),ia=e=>({element:e,colspan:Wt(e,"colspan",1),rowspan:Wt(e,"rowspan",1)}),ma=e=>we(e,"scope").map((e=>e.substr(0,3))),da=(e,t=ia)=>{const o=o=>{if(ca(o))return aa((r={element:o}).element)?e.colgroup(r):e.row(r);{const r=o,s=(t=>la(t.element)?e.col(t):e.cell(t))(t(r));return n=C.some({item:r,replacement:s}),s}var r};let n=C.none();return{getOrInit:(e,t)=>n.fold((()=>o(e)),(n=>t(e,n.item)?n.replacement:o(e)))}},ua=e=>t=>{const o=[],n=n=>{const r="td"===e?{scope:null}:{},s=t.replace(n,e,r);return o.push({item:n,sub:s}),s};return{replaceOrInit:(e,t)=>{if(ca(e)||la(e))return e;{const r=e;return((e,t)=>L(o,(o=>t(o.item,e))))(r,t).fold((()=>n(r)),(o=>t(e,o.item)?o.sub:n(r)))}}}},fa=e=>({unmerge:t=>{const o=ma(t);return o.each((e=>ge(t,"scope",e))),()=>{const n=e.cell({element:t,colspan:1,rowspan:1});return Lt(n,"width"),Lt(t,"width"),o.each((e=>ge(n,"scope",e))),n}},merge:e=>(Lt(e[0],"width"),(()=>{const t=yt(E(e,ma));if(0===t.length)return C.none();{const e=t[0],o=["row","col"];return O(t,(t=>t!==e&&D(o,t)))?C.none():C.from(e)}})().fold((()=>be(e[0],"scope")),(t=>ge(e[0],"scope",t+"group"))),g(e[0]))}),ga=["body","p","div","article","aside","figcaption","figure","footer","header","nav","section","ol","ul","table","thead","tfoot","tbody","caption","tr","td","th","h1","h2","h3","h4","h5","h6","blockquote","pre","address"],ha=hs(),pa=e=>((e,t)=>{const o=e.property().name(t);return D(ga,o)})(ha,e),wa=e=>((e,t)=>{const o=e.property().name(t);return D(["ol","ul"],o)})(ha,e),ba=e=>{const t=ue("br"),o=e=>Cr(e).bind((o=>{const n=Ae(o).map((e=>!!pa(e)||!!((e,t)=>D(["br","img","hr","input"],e.property().name(t)))(ha,e)&&"img"!==ne(e))).getOr(!1);return Ne(o).map((r=>{return!0===n||("li"===ne(s=r)||ft(s,wa).isSome())||t(o)||pa(r)&&!Re(e,r)?[]:[xe.fromTag("br")];var s}))})).getOr([]),n=(()=>{const n=j(e,(e=>{const n=Le(e);return(e=>P(e,(e=>t(e)||ie(e)&&0===hr(e).trim().length)))(n)?[]:n.concat(o(e))}));return 0===n.length?[xe.fromTag("br")]:n})();Ve(e[0]),$e(e[0],n)},va=e=>Qr(e,!0),ya=e=>{0===Ut(e).length&&qe(e)},xa=(e,t)=>({grid:e,cursor:t}),Ca=(e,t,o)=>{const n=((e,t,o)=>{var n,r;const s=qo(e).rows;return C.from(null===(r=null===(n=s[t])||void 0===n?void 0:n.cells[o])||void 0===r?void 0:r.element).filter(va).orThunk((()=>(e=>V(e,(e=>V(e.cells,(e=>{const t=e.element;return xt(va(t),t)})))))(s)))})(e,t,o);return xa(e,n)},Sa=e=>A(e,((e,t)=>O(e,(e=>e.row===t.row))?e:e.concat([t])),[]).sort(((e,t)=>e.row-t.row)),Ta=(e,t)=>(o,n,r,s,l)=>{const a=Sa(n),c=E(a,(e=>e.row)),i=((e,t,o,n,r,s,l)=>{const{cols:a,rows:c}=qo(e),i=c[t[0]],m=j(t,(e=>((e,t,o)=>{const n=e[t];return j(n.cells,((n,r)=>Ul(e,t,r,o)?[]:[n]))})(c,e,r))),d=E(i.cells,((e,t)=>nl(Jl(c,t,r)))),u=[...c];N(t,(e=>{u[e]=l.transformRow(c[e],o)}));const f=[...a,...u],g=((e,t)=>P(t,h)&&nl(e.cells)?x:(e,o,n)=>!("th"===ne(e.element)&&t[n]))(i,d),p=((e,t)=>(o,n,r)=>C.some(Gl(e,o.element,"col",t[r])))(n,d);return Yl(f,m,r,s,l.transformCell,p,g)})(o,c,e,t,r,s.replaceOrInit,l);return Ca(i,n[0].row,n[0].column)},Ra=Ta("thead",!0),Da=Ta("tbody",!1),Oa=Ta("tfoot",!1),ka=(e,t,o)=>{const n=((e,t)=>Qt(e,(()=>t)))(e,o.section),r=en(n);return xl(r,t,!0)},Ea=(e,t,o,n)=>((e,t,o,n)=>{const r=en(t),s=n.getWidths(r,n);na(r,s,n)})(0,t,0,n.sizing),Na=(e,t,o,n)=>((e,t,o,n,r)=>{const s=en(t),l=n.getWidths(s,n),a=n.pixelWidth(),{newSizes:c,delta:i}=r.calcRedestributedWidths(l,a,o.pixelDelta,n.isRelative);na(s,c,n),n.adjustTableWidth(i)})(0,t,o,n.sizing,n.resize),Ba=(e,t)=>O(t,(e=>0===e.column&&e.isLocked)),_a=(e,t)=>O(t,(t=>t.column+t.colspan>=e.grid.columns&&t.isLocked)),za=(e,t)=>{const o=cn(e),n=sa(t);return A(n,((e,t)=>e+o[t.column].map(Wo).getOr(0)),0)},Aa=e=>(t,o)=>Ol(t,o).filter((o=>!(e?Ba:_a)(t,o))).map((e=>({details:e,pixelDelta:za(t,e)}))),La=e=>(t,o)=>Dl(t,o).filter((o=>!(e?Ba:_a)(t,o.cells))),Wa=ua("th"),Ma=ua("td"),ja=Rl(((e,t,o,n)=>{const r=t[0].row,s=Sa(t),l=z(s,((e,t)=>({grid:Vl(e.grid,r,t.row+e.delta,o,n.getOrInit),delta:e.delta+1})),{grid:e,delta:0}).grid;return Ca(l,r,t[0].column)}),Ol,f,f,da),Pa=Rl(((e,t,o,n)=>{const r=Sa(t),s=r[r.length-1],l=s.row+s.rowspan,a=z(r,((e,t)=>Vl(e,l,t.row,o,n.getOrInit)),e);return Ca(a,l,t[0].column)}),Ol,f,f,da),Ia=Rl(((e,t,o,n)=>{const r=t.details,s=sa(r),l=s[0].column,a=z(s,((e,t)=>({grid:ql(e.grid,l,t.column+e.delta,o,n.getOrInit),delta:e.delta+1})),{grid:e,delta:0}).grid;return Ca(a,r[0].row,l)}),Aa(!0),Na,f,da),Fa=Rl(((e,t,o,n)=>{const r=t.details,s=r[r.length-1],l=s.column+s.colspan,a=sa(r),c=z(a,((e,t)=>ql(e,l,t.column,o,n.getOrInit)),e);return Ca(c,r[0].row,l)}),Aa(!1),Na,f,da),Ha=Rl(((e,t,o,n)=>{const r=sa(t.details),s=((e,t)=>j(e,(e=>{const o=e.cells,n=z(t,((e,t)=>t>=0&&t0?[tt(e.element,n,e.section,e.isNew)]:[]})))(e,E(r,(e=>e.column))),l=s.length>0?s[0].cells.length-1:0;return Ca(s,r[0].row,Math.min(r[0].column,l))}),((e,t)=>kl(e,t).map((t=>({details:t,pixelDelta:-za(e,t)})))),Na,ya,da),$a=Rl(((e,t,o,n)=>{const r=Sa(t),s=((e,t,o)=>{const{rows:n,cols:r}=qo(e);return[...r,...n.slice(0,t),...n.slice(o+1)]})(e,r[0].row,r[r.length-1].row),l=s.length>0?s.length-1:0;return Ca(s,Math.min(t[0].row,l),t[0].column)}),Ol,f,ya,da),Va=Rl(((e,t,o,n)=>{const r=sa(t),s=E(r,(e=>e.column)),l=Ql(e,s,!0,o,n.replaceOrInit);return Ca(l,t[0].row,t[0].column)}),kl,f,f,Wa),qa=Rl(((e,t,o,n)=>{const r=sa(t),s=E(r,(e=>e.column)),l=Ql(e,s,!1,o,n.replaceOrInit);return Ca(l,t[0].row,t[0].column)}),kl,f,f,Ma),Ua=Rl(Ra,kl,f,f,Wa),Ga=Rl(Da,kl,f,f,Ma),Ka=Rl(Oa,kl,f,f,Ma),Ya=Rl(((e,t,o,n)=>{const r=Xl(e,t,o,n.replaceOrInit);return Ca(r,t[0].row,t[0].column)}),kl,f,f,Wa),Ja=Rl(((e,t,o,n)=>{const r=Xl(e,t,o,n.replaceOrInit);return Ca(r,t[0].row,t[0].column)}),kl,f,f,Ma),Qa=Rl(((e,t,o,n)=>{const r=t.cells;ba(r);const s=((e,t,o,n)=>{const r=qo(e).rows;if(0===r.length)return e;for(let e=t.startRow;e<=t.finishRow;e++)for(let o=t.startCol;o<=t.finishCol;o++){const t=r[e],s=Ho(t,o).isLocked;Io(t,o,et(n(),!1,s))}return e})(e,t.bounds,0,n.merge(r));return xa(s,C.from(r[0]))}),((e,t)=>((e,t)=>t.mergable)(0,t).filter((t=>El(e,t.cells)))),Ea,f,fa),Xa=Rl(((e,t,o,n)=>{const r=z(t,((e,t)=>Nl(e,t,o,n.unmerge(t))),e);return xa(r,C.from(t[0]))}),((e,t)=>((e,t)=>t.unmergable)(0,t).filter((t=>El(e,t)))),Ea,f,fa),Za=Rl(((e,t,o,n)=>{const r=((e,t)=>{const o=Zo(e);return xl(o,t,!0)})(t.clipboard,t.generators);var s,l;return((e,t,o,n,r)=>{const s=Yo(t),l=((e,t,o)=>{const n=Vo(t[0]),r=qo(t).cols.length+e.row,s=k(n-e.column,(t=>t+e.column));return{row:r,column:L(s,(e=>P(o,(t=>t!==e)))).getOr(n-1)}})(e,t,s),a=qo(o).rows,c=Fl(l,a,s),i=((e,t,o)=>{if(e.row>=t.length||e.column>Vo(t[0]))return zl.error("invalid start address out of table bounds, row: "+e.row+", column: "+e.column);const n=t.slice(e.row),r=n[0].cells.slice(e.column),s=Vo(o[0]),l=o.length;return zl.value({rowDelta:n.length-l,colDelta:r.length-s})})(l,t,a);return i.map((e=>{const o={...e,colDelta:e.colDelta-c.length},s=Pl(t,o,n),i=Yo(s),m=Fl(l,a,i);return((e,t,o,n,r,s)=>{const l=e.row,a=e.column,c=l+o.length,i=a+Vo(o[0])+s.length,m=I(s,x);for(let e=l;exa(e,C.some(t.element))),(e=>Ca(e,t.row,t.column)))}),((e,t)=>qt(t.element).bind((o=>Sl(e,o).map((e=>({...e,generators:t.generators,clipboard:t.clipboard})))))),Ea,f,da),ec=Rl(((e,t,o,n)=>{const r=qo(e).rows,s=t.cells[0].column,l=r[t.cells[0].row],a=ka(t.clipboard,t.generators,l),c=Hl(s,e,a,t.generators,o);return Ca(c,t.cells[0].row,t.cells[0].column)}),La(!0),f,f,da),tc=Rl(((e,t,o,n)=>{const r=qo(e).rows,s=t.cells[t.cells.length-1].column+t.cells[t.cells.length-1].colspan,l=r[t.cells[0].row],a=ka(t.clipboard,t.generators,l),c=Hl(s,e,a,t.generators,o);return Ca(c,t.cells[0].row,t.cells[0].column)}),La(!1),f,f,da),oc=Rl(((e,t,o,n)=>{const r=qo(e).rows,s=t.cells[0].row,l=r[s],a=ka(t.clipboard,t.generators,l),c=$l(s,e,a,t.generators,o);return Ca(c,t.cells[0].row,t.cells[0].column)}),Dl,f,f,da),nc=Rl(((e,t,o,n)=>{const r=qo(e).rows,s=t.cells[t.cells.length-1].row+t.cells[t.cells.length-1].rowspan,l=r[t.cells[0].row],a=ka(t.clipboard,t.generators,l),c=$l(s,e,a,t.generators,o);return Ca(c,t.cells[0].row,t.cells[0].column)}),Dl,f,f,da),rc=(e,t)=>{const o=Zo(e);return Ol(o,t).bind((e=>{const t=e[e.length-1],n=e[0].column,r=t.column+t.colspan,s=M(E(o.all,(e=>_(e.cells,(e=>e.column>=n&&e.column{const o=Zo(e);return Ol(o,t).bind(ll).getOr("")},lc=(e,t)=>{const o=Zo(e);return Ol(o,t).bind((e=>{const t=e[e.length-1],n=e[0].row,r=t.row+t.rowspan;return(e=>{const t=E(e,(e=>sl(e).type)),o=D(t,"header"),n=D(t,"footer");if(o||n){const e=D(t,"body");return!o||e||n?o||e||!n?C.none():C.some("footer"):C.some("header")}return C.some("body")})(o.all.slice(n,r))})).getOr("")},ac=(e,t)=>e.dispatch("NewRow",{node:t}),cc=(e,t)=>e.dispatch("NewCell",{node:t}),ic=(e,t,o)=>{e.dispatch("TableModified",{...o,table:t})},mc={structure:!1,style:!0},dc={structure:!0,style:!1},uc={structure:!0,style:!0},fc=(e,t)=>Hr(e)?ur(t):$r(e)?dr(t):mr(t),gc=(e,t,o)=>{const n=e=>"table"===ne(Zr(e)),r=Wr(e),s=Ir(e)?f:Gs,l=t=>{switch(Mr(e)){case"section":return ul();case"sectionCells":return fl();case"cells":return gl();default:return((e,t)=>{var o;switch((o=Zo(e),V(o.all,(e=>{const t=sl(e);return"header"===t.type?C.from(t.subType):C.none()}))).getOr(t)){case"section":return il();case"sectionCells":return ml();case"cells":return dl()}})(t,"section")}},a=(n,s,a,c)=>(i,m,d=!1)=>{ts(i);const u=xe.fromDom(e.getDoc()),f=Br(a,u,r),g={sizing:fc(e,i),resize:Ir(e)?Zs():el(),section:l(i)};return s(i)?n(i,m,f,g).bind((n=>{t.refresh(i.dom),N(n.newRows,(t=>{ac(e,t.dom)})),N(n.newCells,(t=>{cc(e,t.dom)}));const r=((t,n)=>n.cursor.fold((()=>{const n=Ut(t);return H(n).filter(lt).map((n=>{o.clearSelectedCells(t.dom);const r=e.dom.createRng();return r.selectNode(n.dom),e.selection.setRng(r),ge(n,"data-mce-selected","1"),r}))}),(n=>{const r=qs(Us,n),s=e.dom.createRng();return s.setStart(r.element.dom,r.offset),s.setEnd(r.element.dom,r.offset),e.selection.setRng(s),o.clearSelectedCells(t.dom),C.some(s)})))(i,n);return lt(i)&&(ts(i),d||ic(e,i.dom,c)),r.map((e=>({rng:e,effect:c})))})):C.none()},c=a($a,(t=>!n(e)||tl(t).rows>1),f,dc),i=a(Ha,(t=>!n(e)||tl(t).columns>1),f,dc);return{deleteRow:c,deleteColumn:i,insertRowsBefore:a(ja,x,f,dc),insertRowsAfter:a(Pa,x,f,dc),insertColumnsBefore:a(Ia,x,s,dc),insertColumnsAfter:a(Fa,x,s,dc),mergeCells:a(Qa,x,f,dc),unmergeCells:a(Xa,x,f,dc),pasteColsBefore:a(ec,x,f,dc),pasteColsAfter:a(tc,x,f,dc),pasteRowsBefore:a(oc,x,f,dc),pasteRowsAfter:a(nc,x,f,dc),pasteCells:a(Za,x,f,uc),makeCellsHeader:a(Ya,x,f,dc),unmakeCellsHeader:a(Ja,x,f,dc),makeColumnsHeader:a(Va,x,f,dc),unmakeColumnsHeader:a(qa,x,f,dc),makeRowsHeader:a(Ua,x,f,dc),makeRowsBody:a(Ga,x,f,dc),makeRowsFooter:a(Ka,x,f,dc),getTableRowType:lc,getTableCellType:sc,getTableColType:rc}},hc=(e,t,o)=>{const n=Wt(e,t,1);1===o||n<=1?be(e,t):ge(e,t,Math.min(o,n))},pc=(e,t)=>o=>{const n=o.column+o.colspan-1,r=o.column;return n>=e&&r{const n=o.substring(0,o.length-e.length),r=parseFloat(n);return n===r.toString()?t(r):wc.invalid(o)},vc={...wc,from:e=>Rt(e,"%")?bc("%",wc.percent,e):Rt(e,"px")?bc("px",wc.pixels,e):wc.invalid(e)},yc=(e,t,o)=>{const n=vc.from(o),r=P(e,(e=>"0px"===e))?((e,t)=>{const o=e.fold((()=>g("")),(e=>g(e/t+"px")),(()=>g(100/t+"%")));return k(t,o)})(n,e.length):((e,t,o)=>e.fold((()=>t),(e=>((e,t,o)=>{const n=o/t;return E(e,(e=>vc.from(e).fold((()=>e),(e=>e*n+"px"),(e=>e/100*o+"px"))))})(t,o,e)),(e=>((e,t)=>E(e,(e=>vc.from(e).fold((()=>e),(e=>e/t*100+"%"),(e=>e+"%")))))(t,o))))(n,e,t);return Sc(r)},xc=(e,t)=>0===e.length?t:z(e,((e,t)=>vc.from(t).fold(g(0),h,h)+e),0),Cc=(e,t)=>vc.from(e).fold(g(e),(e=>e+t+"px"),(e=>e+t+"%")),Sc=e=>{if(0===e.length)return e;const t=z(e,((e,t)=>{const o=vc.from(t).fold((()=>({value:t,remainder:0})),(e=>((e,t)=>{const o=Math.floor(e);return{value:o+"px",remainder:e-o}})(e)),(e=>({value:e+"%",remainder:0})));return{output:[o.value].concat(e.output),remainder:e.remainder+o.remainder}}),{output:[],remainder:0}),o=t.output;return o.slice(0,o.length-1).concat([Cc(o[o.length-1],Math.round(t.remainder))])},Tc=vc.from,Rc=e=>Tc(e).fold(g("px"),g("px"),g("%")),Dc=(e,t,o)=>{const n=Zo(e),r=n.all,s=rn(n),l=sn(n);t.each((t=>{const o=Rc(t),r=Lo(e),a=((e,t)=>nr(e,t,er,rr))(n,e),c=yc(a,r,t);ln(n)?((e,t,o)=>{N(t,((t,n)=>{const r=xc([e[n]],Ft());Nt(t.element,"width",r+o)}))})(c,l,o):((e,t,o)=>{N(t,(t=>{const n=e.slice(t.column,t.colspan+t.column),r=xc(n,Ft());Nt(t.element,"width",r+o)}))})(c,s,o),Nt(e,"width",t)})),o.each((t=>{const o=Rc(t),l=hn(e),a=((e,t,o)=>lr(e,t,o,tr,rr))(n,e,_n);((e,t,o,n)=>{N(o,(t=>{const o=e.slice(t.row,t.rowspan+t.row),r=xc(o,Ht());Nt(t.element,"height",r+n)})),N(t,((t,o)=>{Nt(t.element,"height",e[o])}))})(yc(a,l,t),r,s,o),Nt(e,"height",t)}))},Oc=e=>Un(e).exists((e=>Mn.test(e))),kc=e=>Un(e).exists((e=>jn.test(e))),Ec=e=>Un(e).isNone(),Nc=e=>{be(e,"width")},Bc=e=>{const t=Qn(e);Dc(e,C.some(t),C.none()),Nc(e)},_c=e=>{const t=(e=>Lo(e)+"px")(e);Dc(e,C.some(t),C.none()),Nc(e)},zc=e=>{Lt(e,"width");const t=Gt(e),o=t.length>0?t:Ut(e);N(o,(e=>{Lt(e,"width"),Nc(e)})),Nc(e)},Ac={styles:{"border-collapse":"collapse",width:"100%"},attributes:{border:"1"},colGroups:!1},Lc=(e,t,o,n)=>k(e,(e=>((e,t,o,n)=>{const r=xe.fromTag("tr");for(let s=0;s{e.selection.select(t.dom,!0),e.selection.collapse(!0)},Mc=(e,t,o,n,s)=>{const l=(e=>{const t=e.options,o=t.get("table_default_styles");return t.isSet("table_default_styles")?o:((e,t)=>Vr(e)||!Ur(e)?t:$r(e)?{...t,width:Lr(e)}:{...t,width:Ar})(e,o)})(e),a={styles:l,attributes:Kr(e),colGroups:Yr(e)};return e.undoManager.ignore((()=>{const r=((e,t,o,n,r,s=Ac)=>{const l=xe.fromTag("table"),a="cells"!==r;Bt(l,s.styles),he(l,s.attributes),s.colGroups&&Ie(l,(e=>{const t=xe.fromTag("colgroup");return k(e,(()=>Ie(t,xe.fromTag("col")))),t})(t));const c=Math.min(e,o);if(a&&o>0){const e=xe.fromTag("thead");Ie(l,e);const s=Lc(o,t,"sectionCells"===r?c:0,n);$e(e,s)}const i=xe.fromTag("tbody");Ie(l,i);const m=Lc(a?e-c:e,t,a?0:o,n);return $e(i,m),l})(o,t,s,n,Mr(e),a);ge(r,"data-mce-id","__mce");const l=(e=>{const t=xe.fromTag("div"),o=xe.fromDom(e.dom.cloneNode(!0));return Ie(t,o),(e=>e.dom.innerHTML)(t)})(r);e.insertContent(l),e.addVisual()})),wt(Zr(e),'table[data-mce-id="__mce"]').map((t=>($r(e)?_c(t):Vr(e)?zc(t):(Hr(e)||(e=>r(e)&&-1!==e.indexOf("%"))(l.width))&&Bc(t),ts(t),be(t,"data-mce-id"),((e,t)=>{N(dt(t,"tr"),(t=>{ac(e,t.dom),N(dt(t,"th,td"),(t=>{cc(e,t.dom)}))}))})(e,t),((e,t)=>{wt(t,"td,th").each(w(Wc,e))})(e,t),t.dom))).getOrNull()};var jc=tinymce.util.Tools.resolve("tinymce.FakeClipboard");const Pc="x-tinymce/dom-table-",Ic=Pc+"rows",Fc=Pc+"columns",Hc=e=>{const t=jc.FakeClipboardItem(e);jc.write([t])},$c=e=>{var t;const o=null!==(t=jc.read())&&void 0!==t?t:[];return V(o,(t=>C.from(t.getType(e))))},Vc=e=>{$c(e).isSome()&&jc.clear()},qc=e=>{e.fold(Gc,(e=>Hc({[Ic]:e})))},Uc=()=>$c(Ic),Gc=()=>Vc(Ic),Kc=e=>{e.fold(Jc,(e=>Hc({[Fc]:e})))},Yc=()=>$c(Fc),Jc=()=>Vc(Fc),Qc=e=>Ms(os(e),es(e)).filter(ss),Xc=(e,t)=>{const o=es(e),n=e=>Kt(e,o),l=t=>(e=>js(os(e),es(e)).filter(ss))(e).bind((e=>n(e).map((o=>t(o,e))))),a=t=>{e.focus()},c=(t,o=!1)=>l(((n,r)=>{const s=Ls(Ps(e),n,r);t(n,s,o).each(a)})),i=()=>l(((t,o)=>((e,t,o)=>{const n=Zo(e);return Ol(n,t).bind((e=>{const t=xl(n,o,!1),r=qo(t).rows.slice(e[0].row,e[e.length-1].row+e[e.length-1].rowspan),s=j(r,(e=>{const t=_(e.cells,(e=>!e.isLocked));return t.length>0?[{...e,cells:t}]:[]})),l=Cl(s);return xt(l.length>0,l)})).map((e=>E(e,(e=>{const t=Ke(e.element);return N(e.cells,(e=>{const o=Ye(e.element);pl(o,"colspan",e.colspan,1),pl(o,"rowspan",e.rowspan,1),Ie(t,o)})),t}))))})(t,Ls(Ps(e),t,o),Br(f,xe.fromDom(e.getDoc()),C.none())))),m=()=>l(((t,o)=>((e,t)=>{const o=Zo(e);return kl(o,t).map((e=>{const t=e[e.length-1],n=e[0].column,r=t.column+t.colspan,s=((e,t,o)=>{if(ln(e)){const n=_(sn(e),pc(t,o)),r=E(n,(e=>{const n=Ye(e.element);return hc(n,"span",o-t),n})),s=xe.fromTag("colgroup");return $e(s,r),[s]}return[]})(o,n,r),l=((e,t,o)=>E(e.all,(e=>{const n=_(e.cells,pc(t,o)),r=E(n,(e=>{const n=Ye(e.element);return hc(n,"colspan",o-t),n})),s=xe.fromTag("tr");return $e(s,r),s})))(o,n,r);return[...s,...l]}))})(t,Ls(Ps(e),t,o)))),d=(t,o)=>o().each((o=>{const n=E(o,(e=>Ye(e)));l(((o,r)=>{const s=_r(xe.fromDom(e.getDoc())),l=((e,t,o,n)=>({selection:Os(e),clipboard:o,generators:n}))(Ps(e),0,n,s);t(o,l).each(a)}))})),g=e=>(t,o)=>((e,t)=>X(e,t)?C.from(e[t]):C.none())(o,"type").each((t=>{c(e(t),o.no_events)}));G({mceTableSplitCells:()=>c(t.unmergeCells),mceTableMergeCells:()=>c(t.mergeCells),mceTableInsertRowBefore:()=>c(t.insertRowsBefore),mceTableInsertRowAfter:()=>c(t.insertRowsAfter),mceTableInsertColBefore:()=>c(t.insertColumnsBefore),mceTableInsertColAfter:()=>c(t.insertColumnsAfter),mceTableDeleteCol:()=>c(t.deleteColumn),mceTableDeleteRow:()=>c(t.deleteRow),mceTableCutCol:()=>m().each((e=>{Kc(e),c(t.deleteColumn)})),mceTableCutRow:()=>i().each((e=>{qc(e),c(t.deleteRow)})),mceTableCopyCol:()=>m().each((e=>Kc(e))),mceTableCopyRow:()=>i().each((e=>qc(e))),mceTablePasteColBefore:()=>d(t.pasteColsBefore,Yc),mceTablePasteColAfter:()=>d(t.pasteColsAfter,Yc),mceTablePasteRowBefore:()=>d(t.pasteRowsBefore,Uc),mceTablePasteRowAfter:()=>d(t.pasteRowsAfter,Uc),mceTableDelete:()=>Qc(e).each((t=>{Kt(t,o).filter(b(o)).each((t=>{const o=xe.fromText("");if(je(t,o),qe(t),e.dom.isEmpty(e.getBody()))e.setContent(""),e.selection.setCursorLocation();else{const t=e.dom.createRng();t.setStart(o.dom,0),t.setEnd(o.dom,0),e.selection.setRng(t),e.nodeChanged()}}))})),mceTableCellToggleClass:(t,o)=>{l((t=>{const n=Ps(e),r=P(n,(t=>e.formatter.match("tablecellclass",{value:o},t.dom))),s=r?e.formatter.remove:e.formatter.apply;N(n,(e=>s("tablecellclass",{value:o},e.dom))),ic(e,t.dom,mc)}))},mceTableToggleClass:(t,o)=>{l((t=>{e.formatter.toggle("tableclass",{value:o},t.dom),ic(e,t.dom,mc)}))},mceTableToggleCaption:()=>{Qc(e).each((t=>{Kt(t,o).each((o=>{pt(o,"caption").fold((()=>{const t=xe.fromTag("caption");Ie(t,xe.fromText("Caption")),((e,t,o)=>{We(e,0).fold((()=>{Ie(e,t)}),(e=>{Me(e,t)}))})(o,t),e.selection.setCursorLocation(t.dom,0)}),(n=>{ue("caption")(t)&&Te("td",o).each((t=>e.selection.setCursorLocation(t.dom,0))),qe(n)})),ic(e,o.dom,dc)}))}))},mceTableSizingMode:(t,n)=>(t=>Qc(e).each((n=>{Vr(e)||$r(e)||Hr(e)||Kt(n,o).each((o=>{"relative"!==t||Oc(o)?"fixed"!==t||kc(o)?"responsive"!==t||Ec(o)||zc(o):_c(o):Bc(o),ts(o),ic(e,o.dom,dc)}))})))(n),mceTableCellType:g((e=>"th"===e?t.makeCellsHeader:t.unmakeCellsHeader)),mceTableColType:g((e=>"th"===e?t.makeColumnsHeader:t.unmakeColumnsHeader)),mceTableRowType:g((e=>{switch(e){case"header":return t.makeRowsHeader;case"footer":return t.makeRowsFooter;default:return t.makeRowsBody}}))},((t,o)=>e.addCommand(o,t))),e.addCommand("mceInsertTable",((t,o)=>{((e,t,o,n={})=>{const r=e=>u(e)&&e>0;if(r(t)&&r(o)){const r=n.headerRows||0,s=n.headerColumns||0;return Mc(e,o,t,s,r)}console.error("Invalid values for mceInsertTable - rows and columns values are required to insert a table.")})(e,o.rows,o.columns,o.options)})),e.addCommand("mceTableApplyCellStyle",((t,o)=>{const l=e=>"tablecell"+e.toLowerCase().replace("-","");if(!s(o))return;const a=_(Ps(e),ss);if(0===a.length)return;const c=((e,t)=>{const o={};return((e,t,o,n)=>{G(e,((e,r)=>{(t(e,r)?o:n)(e,r)}))})(e,t,(e=>(t,o)=>{e[o]=t})(o),f),o})(o,((t,o)=>e.formatter.has(l(o))&&r(t)));(e=>{for(const t in e)if(U.call(e,t))return!1;return!0})(c)||(G(c,((t,o)=>{const n=l(o);N(a,(o=>{""===t?e.formatter.remove(n,{value:null},o.dom,!0):e.formatter.apply(n,{value:t},o.dom)}))})),n(a[0]).each((t=>ic(e,t.dom,mc))))}))},Zc=Zl([{before:["element"]},{on:["element","offset"]},{after:["element"]}]),ei={before:Zc.before,on:Zc.on,after:Zc.after,cata:(e,t,o,n)=>e.fold(t,o,n),getStart:e=>e.fold(h,h,h)},ti=(e,t)=>({selection:e,kill:t}),oi=(e,t)=>{const o=e.document.createRange();return o.selectNode(t.dom),o},ni=(e,t)=>{const o=e.document.createRange();return ri(o,t),o},ri=(e,t)=>e.selectNodeContents(t.dom),si=(e,t,o)=>{const n=e.document.createRange();var r;return r=n,t.fold((e=>{r.setStartBefore(e.dom)}),((e,t)=>{r.setStart(e.dom,t)}),(e=>{r.setStartAfter(e.dom)})),((e,t)=>{t.fold((t=>{e.setEndBefore(t.dom)}),((t,o)=>{e.setEnd(t.dom,o)}),(t=>{e.setEndAfter(t.dom)}))})(n,o),n},li=(e,t,o,n,r)=>{const s=e.document.createRange();return s.setStart(t.dom,o),s.setEnd(n.dom,r),s},ai=e=>({left:e.left,top:e.top,right:e.right,bottom:e.bottom,width:e.width,height:e.height}),ci=Zl([{ltr:["start","soffset","finish","foffset"]},{rtl:["start","soffset","finish","foffset"]}]),ii=(e,t,o)=>t(xe.fromDom(o.startContainer),o.startOffset,xe.fromDom(o.endContainer),o.endOffset),mi=(e,t)=>{const o=((e,t)=>t.match({domRange:e=>({ltr:g(e),rtl:C.none}),relative:(t,o)=>({ltr:eo((()=>si(e,t,o))),rtl:eo((()=>C.some(si(e,o,t))))}),exact:(t,o,n,r)=>({ltr:eo((()=>li(e,t,o,n,r))),rtl:eo((()=>C.some(li(e,n,r,t,o))))})}))(e,t);return((e,t)=>{const o=t.ltr();return o.collapsed?t.rtl().filter((e=>!1===e.collapsed)).map((e=>ci.rtl(xe.fromDom(e.endContainer),e.endOffset,xe.fromDom(e.startContainer),e.startOffset))).getOrThunk((()=>ii(0,ci.ltr,o))):ii(0,ci.ltr,o)})(0,o)},di=(e,t)=>mi(e,t).match({ltr:(t,o,n,r)=>{const s=e.document.createRange();return s.setStart(t.dom,o),s.setEnd(n.dom,r),s},rtl:(t,o,n,r)=>{const s=e.document.createRange();return s.setStart(n.dom,r),s.setEnd(t.dom,o),s}});ci.ltr,ci.rtl;const ui=(e,t,o,n)=>({start:e,soffset:t,finish:o,foffset:n}),fi=(e,t,o,n)=>({start:ei.on(e,t),finish:ei.on(o,n)}),gi=(e,t)=>{const o=di(e,t);return ui(xe.fromDom(o.startContainer),o.startOffset,xe.fromDom(o.endContainer),o.endOffset)},hi=fi,pi=(e,t,o,n,r)=>Re(o,n)?C.none():xs(o,n,t).bind((t=>{const n=t.boxes.getOr([]);return n.length>1?(r(e,n,t.start,t.finish),C.some(ti(C.some(hi(o,0,o,br(o))),!0))):C.none()})),wi=(e,t)=>({item:e,mode:t}),bi=(e,t,o,n=vi)=>e.property().parent(t).map((e=>wi(e,n))),vi=(e,t,o,n=yi)=>o.sibling(e,t).map((e=>wi(e,n))),yi=(e,t,o,n=yi)=>{const r=e.property().children(t);return o.first(r).map((e=>wi(e,n)))},xi=[{current:bi,next:vi,fallback:C.none()},{current:vi,next:yi,fallback:C.some(bi)},{current:yi,next:yi,fallback:C.some(vi)}],Ci=(e,t,o,n,r=xi)=>L(r,(e=>e.current===o)).bind((o=>o.current(e,t,n,o.next).orThunk((()=>o.fallback.bind((o=>Ci(e,t,o,n))))))),Si=(e,t,o,n,r,s)=>Ci(e,t,n,r).bind((t=>s(t.item)?C.none():o(t.item)?C.some(t.item):Si(e,t.item,o,t.mode,r,s))),Ti=e=>t=>0===e.property().children(t).length,Ri=(e,t,o,n)=>Si(e,t,o,vi,{sibling:(e,t)=>e.query().prevSibling(t),first:e=>e.length>0?C.some(e[e.length-1]):C.none()},n),Di=(e,t,o,n)=>Si(e,t,o,vi,{sibling:(e,t)=>e.query().nextSibling(t),first:e=>e.length>0?C.some(e[0]):C.none()},n),Oi=hs(),ki=(e,t)=>((e,t,o)=>Ri(e,t,Ti(e),o))(Oi,e,t),Ei=(e,t)=>((e,t,o)=>Di(e,t,Ti(e),o))(Oi,e,t),Ni=Zl([{none:["message"]},{success:[]},{failedUp:["cell"]},{failedDown:["cell"]}]),Bi=e=>bt(e,"tr"),_i={...Ni,verify:(e,t,o,n,r,s,l)=>bt(n,"td,th",l).bind((o=>bt(t,"td,th",l).map((t=>Re(o,t)?Re(n,o)&&br(o)===r?s(t):Ni.none("in same cell"):vs(Bi,[o,t]).fold((()=>((e,t,o)=>{const n=e.getRect(t),r=e.getRect(o);return r.right>n.left&&r.lefts(t))))))).getOr(Ni.none("default")),cata:(e,t,o,n,r)=>e.fold(t,o,n,r)},zi=ue("br"),Ai=(e,t,o)=>t(e,o).bind((e=>ie(e)&&0===hr(e).trim().length?Ai(e,t,o):C.some(e))),Li=(e,t,o,n)=>((e,t)=>We(e,t).filter(zi).orThunk((()=>We(e,t-1).filter(zi))))(t,o).bind((t=>n.traverse(t).fold((()=>Ai(t,n.gather,e).map(n.relative)),(e=>(e=>Ne(e).bind((t=>{const o=Le(t);return((e,t)=>W(e,w(Re,t)))(o,e).map((n=>((e,t,o,n)=>({parent:e,children:t,element:o,index:n}))(t,o,e,n)))})))(e).map((e=>ei.on(e.parent,e.index))))))),Wi=(e,t)=>({left:e.left,top:e.top+t,right:e.right,bottom:e.bottom+t}),Mi=(e,t)=>({left:e.left,top:e.top-t,right:e.right,bottom:e.bottom-t}),ji=(e,t,o)=>({left:e.left+t,top:e.top+o,right:e.right+t,bottom:e.bottom+o}),Pi=e=>({left:e.left,top:e.top,right:e.right,bottom:e.bottom}),Ii=(e,t)=>C.some(e.getRect(t)),Fi=(e,t,o)=>ce(t)?Ii(e,t).map(Pi):ie(t)?((e,t,o)=>o>=0&&o 0?e.getRangedRect(t,o-1,t,o):C.none())(e,t,o).map(Pi):C.none(),Hi=(e,t)=>ce(t)?Ii(e,t).map(Pi):ie(t)?e.getRangedRect(t,0,t,br(t)).map(Pi):C.none(),$i=Zl([{none:[]},{retry:["caret"]}]),Vi=(e,t,o)=>gt(t,pa).fold(y,(t=>Hi(e,t).exists((e=>((e,t)=>e.leftt.right)(o,e))))),qi={point:e=>e.bottom,adjuster:(e,t,o,n,r)=>{const s=Wi(r,5);return Math.abs(o.bottom-n.bottom)<1||o.top>r.bottom?$i.retry(s):o.top===r.bottom?$i.retry(Wi(r,1)):Vi(e,t,r)?$i.retry(ji(s,5,0)):$i.none()},move:Wi,gather:Ei},Ui=(e,t,o,n,r)=>0===r?C.some(n):((e,t,o)=>e.elementFromPoint(t,o).filter((e=>"table"===ne(e))).isSome())(e,n.left,t.point(n))?((e,t,o,n,r)=>Ui(e,t,o,t.move(n,5),r))(e,t,o,n,r-1):e.situsFromPoint(n.left,t.point(n)).bind((s=>s.start.fold(C.none,(s=>Hi(e,s).bind((l=>t.adjuster(e,s,l,o,n).fold(C.none,(n=>Ui(e,t,o,n,r-1))))).orThunk((()=>C.some(n)))),C.none))),Gi=(e,t,o)=>{const n=e.move(o,5),r=Ui(t,e,o,n,100).getOr(n);return((e,t,o)=>e.point(t)>o.getInnerHeight()?C.some(e.point(t)-o.getInnerHeight()):e.point(t)<0?C.some(-e.point(t)):C.none())(e,r,t).fold((()=>t.situsFromPoint(r.left,e.point(r))),(o=>(t.scrollBy(0,o),t.situsFromPoint(r.left,e.point(r)-o))))},Ki={tryUp:w(Gi,{point:e=>e.top,adjuster:(e,t,o,n,r)=>{const s=Mi(r,5);return Math.abs(o.top-n.top)<1||o.bottome.getSelection().bind((n=>((e,t,o,n)=>{const r=zi(t)?((e,t,o)=>o.traverse(t).orThunk((()=>Ai(t,o.gather,e))).map(o.relative))(e,t,n):Li(e,t,o,n);return r.map((e=>({start:e,finish:e})))})(t,n.finish,n.foffset,o).fold((()=>C.some(Fs(n.finish,n.foffset))),(r=>{const s=e.fromSitus(r);return l=_i.verify(e,n.finish,n.foffset,s.finish,s.foffset,o.failure,t),_i.cata(l,(e=>C.none()),(()=>C.none()),(e=>C.some(Fs(e,0))),(e=>C.some(Fs(e,br(e)))));var l})))),Ji=(e,t,o,n,r,s)=>0===s?C.none():Zi(e,t,o,n,r).bind((l=>{const a=e.fromSitus(l),c=_i.verify(e,o,n,a.finish,a.foffset,r.failure,t);return _i.cata(c,(()=>C.none()),(()=>C.some(l)),(l=>Re(o,l)&&0===n?Qi(e,o,n,Mi,r):Ji(e,t,l,0,r,s-1)),(l=>Re(o,l)&&n===br(l)?Qi(e,o,n,Wi,r):Ji(e,t,l,br(l),r,s-1)))})),Qi=(e,t,o,n,r)=>Fi(e,t,o).bind((t=>Xi(e,r,n(t,Ki.getJumpSize())))),Xi=(e,t,o)=>{const n=Bo().browser;return n.isChromium()||n.isSafari()||n.isFirefox()?t.retry(e,o):C.none()},Zi=(e,t,o,n,r)=>Fi(e,o,n).bind((t=>Xi(e,r,t))),em=(e,t,o,n,r)=>bt(n,"td,th",t).bind((n=>bt(n,"table",t).bind((s=>((e,t)=>ft(e,(e=>Ne(e).exists((e=>Re(e,t)))),void 0).isSome())(r,s)?((e,t,o)=>Yi(e,t,o).bind((n=>Ji(e,t,n.element,n.offset,o,20).map(e.fromSitus))))(e,t,o).bind((e=>bt(e.finish,"td,th",t).map((t=>({start:n,finish:t,range:e}))))):C.none())))),tm=(e,t,o,n,r,s)=>s(n,t).orThunk((()=>em(e,t,o,n,r).map((e=>{const t=e.range;return ti(C.some(hi(t.start,t.soffset,t.finish,t.foffset)),!0)})))),om=(e,t)=>bt(e,"tr",t).bind((e=>bt(e,"table",t).bind((o=>{const n=dt(o,"tr");return Re(e,n[0])?((e,t,o)=>Ri(Oi,e,(e=>Cr(e).isSome()),o))(o,0,t).map((e=>{const t=br(e);return ti(C.some(hi(e,t,e,t)),!0)})):C.none()})))),nm=(e,t)=>bt(e,"tr",t).bind((e=>bt(e,"table",t).bind((o=>{const n=dt(o,"tr");return Re(e,n[n.length-1])?((e,t,o)=>Di(Oi,e,(e=>xr(e).isSome()),o))(o,0,t).map((e=>ti(C.some(hi(e,0,e,0)),!0))):C.none()})))),rm=(e,t,o,n,r,s,l)=>em(e,o,n,r,s).bind((e=>pi(t,o,e.start,e.finish,l))),sm=e=>{let t=e;return{get:()=>t,set:e=>{t=e}}},lm=()=>{const e=(e=>{const t=sm(C.none()),o=()=>t.get().each(e);return{clear:()=>{o(),t.set(C.none())},isSet:()=>t.get().isSome(),get:()=>t.get(),set:e=>{o(),t.set(C.some(e))}}})(f);return{...e,on:t=>e.get().each(t)}},am=(e,t)=>bt(e,"td,th",t),cm=e=>Be(e).exists(Qr),im={traverse:Ae,gather:Ei,relative:ei.before,retry:Ki.tryDown,failure:_i.failedDown},mm={traverse:ze,gather:ki,relative:ei.before,retry:Ki.tryUp,failure:_i.failedUp},dm=e=>t=>t===e,um=dm(38),fm=dm(40),gm=e=>e>=37&&e<=40,hm={isBackward:dm(37),isForward:dm(39)},pm={isBackward:dm(39),isForward:dm(37)},wm=Zl([{domRange:["rng"]},{relative:["startSitu","finishSitu"]},{exact:["start","soffset","finish","foffset"]}]),bm={domRange:wm.domRange,relative:wm.relative,exact:wm.exact,exactFromRange:e=>wm.exact(e.start,e.soffset,e.finish,e.foffset),getWin:e=>{const t=(e=>e.match({domRange:e=>xe.fromDom(e.startContainer),relative:(e,t)=>ei.getStart(e),exact:(e,t,o,n)=>e}))(e);return xe.fromDom(Ee(t).dom.defaultView)},range:ui},vm=document.caretPositionFromPoint?(e,t,o)=>{var n,r;return C.from(null===(r=(n=e.dom).caretPositionFromPoint)||void 0===r?void 0:r.call(n,t,o)).bind((t=>{if(null===t.offsetNode)return C.none();const o=e.dom.createRange();return o.setStart(t.offsetNode,t.offset),o.collapse(),C.some(o)}))}:document.caretRangeFromPoint?(e,t,o)=>{var n,r;return C.from(null===(r=(n=e.dom).caretRangeFromPoint)||void 0===r?void 0:r.call(n,t,o))}:C.none,ym=(e,t)=>{const o=ne(e);return"input"===o?ei.after(e):D(["br","img"],o)?0===t?ei.before(e):ei.after(e):ei.on(e,t)},xm=e=>C.from(e.getSelection()),Cm=(e,t)=>{xm(e).each((e=>{e.removeAllRanges(),e.addRange(t)}))},Sm=(e,t,o,n,r)=>{const s=li(e,t,o,n,r);Cm(e,s)},Tm=(e,t)=>mi(e,t).match({ltr:(t,o,n,r)=>{Sm(e,t,o,n,r)},rtl:(t,o,n,r)=>{xm(e).each((s=>{if(s.setBaseAndExtent)s.setBaseAndExtent(t.dom,o,n.dom,r);else if(s.extend)try{((e,t,o,n,r,s)=>{t.collapse(o.dom,n),t.extend(r.dom,s)})(0,s,t,o,n,r)}catch(s){Sm(e,n,r,t,o)}else Sm(e,n,r,t,o)}))}}),Rm=(e,t,o,n,r)=>{const s=((e,t,o,n)=>{const r=ym(e,t),s=ym(o,n);return bm.relative(r,s)})(t,o,n,r);Tm(e,s)},Dm=(e,t,o)=>{const n=((e,t)=>{const o=e.fold(ei.before,ym,ei.after),n=t.fold(ei.before,ym,ei.after);return bm.relative(o,n)})(t,o);Tm(e,n)},Om=e=>{if(e.rangeCount>0){const t=e.getRangeAt(0),o=e.getRangeAt(e.rangeCount-1);return C.some(ui(xe.fromDom(t.startContainer),t.startOffset,xe.fromDom(o.endContainer),o.endOffset))}return C.none()},km=e=>{if(null===e.anchorNode||null===e.focusNode)return Om(e);{const t=xe.fromDom(e.anchorNode),o=xe.fromDom(e.focusNode);return((e,t,o,n)=>{const r=((e,t,o,n)=>{const r=ke(e).dom.createRange();return r.setStart(e.dom,t),r.setEnd(o.dom,n),r})(e,t,o,n),s=Re(e,o)&&t===n;return r.collapsed&&!s})(t,e.anchorOffset,o,e.focusOffset)?C.some(ui(t,e.anchorOffset,o,e.focusOffset)):Om(e)}},Em=(e,t,o=!0)=>{const n=(o?ni:oi)(e,t);Cm(e,n)},Nm=e=>(e=>xm(e).filter((e=>e.rangeCount>0)).bind(km))(e).map((e=>bm.exact(e.start,e.soffset,e.finish,e.foffset))),Bm=e=>({elementFromPoint:(t,o)=>xe.fromPoint(xe.fromDom(e.document),t,o),getRect:e=>e.dom.getBoundingClientRect(),getRangedRect:(t,o,n,r)=>{const s=bm.exact(t,o,n,r);return((e,t)=>(e=>{const t=e.getClientRects(),o=t.length>0?t[0]:e.getBoundingClientRect();return o.width>0||o.height>0?C.some(o).map(ai):C.none()})(di(e,t)))(e,s)},getSelection:()=>Nm(e).map((t=>gi(e,t))),fromSitus:t=>{const o=bm.relative(t.start,t.finish);return gi(e,o)},situsFromPoint:(t,o)=>((e,t,o)=>((e,t,o)=>{const n=xe.fromDom(e.document);return vm(n,t,o).map((e=>ui(xe.fromDom(e.startContainer),e.startOffset,xe.fromDom(e.endContainer),e.endOffset)))})(e,t,o))(e,t,o).map((e=>fi(e.start,e.soffset,e.finish,e.foffset))),clearSelection:()=>{(e=>{xm(e).each((e=>e.removeAllRanges()))})(e)},collapseSelection:(t=!1)=>{Nm(e).each((o=>o.fold((e=>e.collapse(t)),((o,n)=>{const r=t?o:n;Dm(e,r,r)}),((o,n,r,s)=>{const l=t?o:r,a=t?n:s;Rm(e,l,a,l,a)}))))},setSelection:t=>{Rm(e,t.start,t.soffset,t.finish,t.foffset)},setRelativeSelection:(t,o)=>{Dm(e,t,o)},selectNode:t=>{Em(e,t,!1)},selectContents:t=>{Em(e,t)},getInnerHeight:()=>e.innerHeight,getScrollY:()=>(e=>{const t=void 0!==e?e.dom:document,o=t.body.scrollLeft||t.documentElement.scrollLeft,n=t.body.scrollTop||t.documentElement.scrollTop;return bn(o,n)})(xe.fromDom(e.document)).top,scrollBy:(t,o)=>{((e,t,o)=>{const n=(void 0!==o?o.dom:document).defaultView;n&&n.scrollBy(e,t)})(t,o,xe.fromDom(e.document))}}),_m=(e,t)=>({rows:e,cols:t}),zm=e=>gt(e,ae).exists(Qr),Am=(e,t)=>zm(e)||zm(t),Lm=e=>void 0!==e.dom.classList,Wm=(e,t)=>((e,t,o)=>{const n=((e,t)=>{const o=pe(e,t);return void 0===o||""===o?[]:o.split(" ")})(e,t).concat([o]);return ge(e,t,n.join(" ")),!0})(e,"class",t),Mm=(e,t)=>{Lm(e)?e.dom.classList.add(t):Wm(e,t)},jm=(e,t)=>Lm(e)&&e.dom.classList.contains(t),Pm=()=>({tag:"none"}),Im=e=>({tag:"multiple",elements:e}),Fm=e=>({tag:"single",element:e}),Hm=e=>{const t=xe.fromDom((e=>{if(nt()&&m(e.target)){const t=xe.fromDom(e.target);if(ce(t)&&m(t.dom.shadowRoot)&&e.composed&&e.composedPath){const t=e.composedPath();if(t)return H(t)}}return C.from(e.target)})(e).getOr(e.target)),o=()=>e.stopPropagation(),n=()=>e.preventDefault(),r=(s=n,l=o,(...e)=>s(l.apply(null,e)));var s,l;return((e,t,o,n,r,s,l)=>({target:e,x:t,y:o,stop:n,prevent:r,kill:s,raw:l}))(t,e.clientX,e.clientY,o,n,r,e)},$m=(e,t,o,n)=>{e.dom.removeEventListener(t,o,n)},Vm=x,qm=(e,t,o)=>((e,t,o,n)=>((e,t,o,n,r)=>{const s=((e,t)=>o=>{e(o)&&t(Hm(o))})(o,n);return e.dom.addEventListener(t,s,r),{unbind:w($m,e,t,s,r)}})(e,t,o,n,!1))(e,t,Vm,o),Um=Hm,Gm=e=>!jm(xe.fromDom(e.target),"ephox-snooker-resizer-bar"),Km=(e,t)=>{const o=(r=As.selectedSelector,{get:()=>Rs(xe.fromDom(e.getBody()),r).fold((()=>js(os(e),es(e)).fold(Pm,Fm)),Im)}),n=((e,t,o)=>{const n=t=>{be(t,e.selected),be(t,e.firstSelected),be(t,e.lastSelected)},r=t=>{ge(t,e.selected,"1")},s=e=>{l(e),o()},l=t=>{const o=dt(t,`${e.selectedSelector},${e.firstSelectedSelector},${e.lastSelectedSelector}`);N(o,n)};return{clearBeforeUpdate:l,clear:s,selectRange:(o,n,l,a)=>{s(o),N(n,r),ge(l,e.firstSelected,"1"),ge(a,e.lastSelected,"1"),t(n,l,a)},selectedSelector:e.selectedSelector,firstSelectedSelector:e.firstSelectedSelector,lastSelectedSelector:e.lastSelectedSelector}})(As,((t,o,n)=>{Kt(o).each((r=>{const s=Wr(e),l=Br(f,xe.fromDom(e.getDoc()),s),a=((e,t,o)=>{const n=Zo(e);return Ol(n,t).map((e=>{const t=xl(n,o,!1),{rows:r}=qo(t),s=((e,t)=>{const o=e.slice(0,t[t.length-1].row+1),n=Cl(o);return j(n,(e=>{const o=e.cells.slice(0,t[t.length-1].column+1);return E(o,(e=>e.element))}))})(r,e),l=((e,t)=>{const o=e.slice(t[0].row+t[0].rowspan-1,e.length),n=Cl(o);return j(n,(e=>{const o=e.cells.slice(t[0].column+t[0].colspan-1,e.cells.length);return E(o,(e=>e.element))}))})(r,e);return{upOrLeftCells:s,downOrRightCells:l}}))})(r,{selection:Ps(e)},l);((e,t,o,n,r)=>{e.dispatch("TableSelectionChange",{cells:t,start:o,finish:n,otherCells:r})})(e,t,o,n,a)}))}),(()=>(e=>{e.dispatch("TableSelectionClear")})(e)));var r;return e.on("init",(o=>{const r=e.getWin(),s=Zr(e),l=es(e),a=((e,t,o,n)=>{const r=((e,t,o,n)=>{const r=lm(),s=r.clear,l=s=>{r.on((r=>{n.clearBeforeUpdate(t),am(s.target,o).each((l=>{xs(r,l,o).each((o=>{const r=o.boxes.getOr([]);if(1===r.length){const o=r[0],l="false"===Xr(o),a=vt(Jr(s.target),o,Re);l&&a&&(n.selectRange(t,r,o,o),e.selectContents(o))}else r.length>1&&(n.selectRange(t,r,o.start,o.finish),e.selectContents(l))}))}))}))};return{clearstate:s,mousedown:e=>{n.clear(t),am(e.target,o).filter(cm).each(r.set)},mouseover:e=>{l(e)},mouseup:e=>{l(e),s()}}})(Bm(e),t,o,n);return{clearstate:r.clearstate,mousedown:r.mousedown,mouseover:r.mouseover,mouseup:r.mouseup}})(r,s,l,n),c=((e,t,o,n)=>{const r=Bm(e),s=()=>(n.clear(t),C.none());return{keydown:(e,l,a,c,i,m)=>{const d=e.raw,u=d.which,f=!0===d.shiftKey,g=Cs(t,n.selectedSelector).fold((()=>(gm(u)&&!f&&n.clearBeforeUpdate(t),gm(u)&&f&&!Am(l,c)?C.none:fm(u)&&f?w(rm,r,t,o,im,c,l,n.selectRange):um(u)&&f?w(rm,r,t,o,mm,c,l,n.selectRange):fm(u)?w(tm,r,o,im,c,l,nm):um(u)?w(tm,r,o,mm,c,l,om):C.none)),(e=>{const o=o=>()=>{const s=V(o,(o=>((e,t,o,n,r)=>Ts(n,e,t,r.firstSelectedSelector,r.lastSelectedSelector).map((e=>(r.clearBeforeUpdate(o),r.selectRange(o,e.boxes,e.start,e.finish),e.boxes))))(o.rows,o.cols,t,e,n)));return s.fold((()=>Ss(t,n.firstSelectedSelector,n.lastSelectedSelector).map((e=>{const o=fm(u)||m.isForward(u)?ei.after:ei.before;return r.setRelativeSelection(ei.on(e.first,0),o(e.table)),n.clear(t),ti(C.none(),!0)}))),(e=>C.some(ti(C.none(),!0))))};return gm(u)&&f&&!Am(l,c)?C.none:fm(u)&&f?o([_m(1,0)]):um(u)&&f?o([_m(-1,0)]):m.isBackward(u)&&f?o([_m(0,-1),_m(-1,0)]):m.isForward(u)&&f?o([_m(0,1),_m(1,0)]):gm(u)&&!f?s:C.none}));return g()},keyup:(e,r,s,l,a)=>Cs(t,n.selectedSelector).fold((()=>{const c=e.raw,i=c.which;return!0===c.shiftKey&&gm(i)&&Am(r,l)?((e,t,o,n,r,s,l)=>Re(o,r)&&n===s?C.none():bt(o,"td,th",t).bind((o=>bt(r,"td,th",t).bind((n=>pi(e,t,o,n,l))))))(t,o,r,s,l,a,n.selectRange):C.none()}),C.none)}})(r,s,l,n),i=((e,t,o,n)=>{const r=Bm(e);return(e,s)=>{n.clearBeforeUpdate(t),xs(e,s,o).each((e=>{const o=e.boxes.getOr([]);n.selectRange(t,o,e.start,e.finish),r.selectContents(s),r.collapseSelection()}))}})(r,s,l,n);e.on("TableSelectorChange",(e=>i(e.start,e.finish)));const m=(t,o)=>{(e=>!0===e.raw.shiftKey)(t)&&(o.kill&&t.kill(),o.selection.each((t=>{const o=bm.relative(t.start,t.finish),n=di(r,o);e.selection.setRng(n)})))},d=e=>0===e.button,u=(()=>{const e=sm(xe.fromDom(s)),t=sm(0);return{touchEnd:o=>{const n=xe.fromDom(o.target);if(ue("td")(n)||ue("th")(n)){const r=e.get(),s=t.get();Re(r,n)&&o.timeStamp-s<300&&(o.preventDefault(),i(n,n))}e.set(n),t.set(o.timeStamp)}}})();e.on("dragstart",(e=>{a.clearstate()})),e.on("mousedown",(e=>{d(e)&&Gm(e)&&a.mousedown(Um(e))})),e.on("mouseover",(e=>{var t;void 0!==(t=e).buttons&&0==(1&t.buttons)||!Gm(e)||a.mouseover(Um(e))})),e.on("mouseup",(e=>{d(e)&&Gm(e)&&a.mouseup(Um(e))})),e.on("touchend",u.touchEnd),e.on("keyup",(t=>{const o=Um(t);if(o.raw.shiftKey&&gm(o.raw.which)){const t=e.selection.getRng(),n=xe.fromDom(t.startContainer),r=xe.fromDom(t.endContainer);c.keyup(o,n,t.startOffset,r,t.endOffset).each((e=>{m(o,e)}))}})),e.on("keydown",(o=>{const n=Um(o);t.hide();const r=e.selection.getRng(),s=xe.fromDom(r.startContainer),l=xe.fromDom(r.endContainer),a=un(hm,pm)(xe.fromDom(e.selection.getStart()));c.keydown(n,s,r.startOffset,l,r.endOffset,a).each((e=>{m(n,e)})),t.show()})),e.on("NodeChange",(()=>{const t=e.selection,o=xe.fromDom(t.getStart()),r=xe.fromDom(t.getEnd());vs(Kt,[o,r]).fold((()=>n.clear(s)),f)}))})),e.on("PreInit",(()=>{e.serializer.addTempAttr(As.firstSelected),e.serializer.addTempAttr(As.lastSelected)})),{getSelectedCells:()=>((e,t,o,n)=>{switch(e.tag){case"none":return t();case"single":return(e=>[e.dom])(e.element);case"multiple":return(e=>E(e,(e=>e.dom)))(e.elements)}})(o.get(),g([])),clearSelectedCells:e=>n.clear(xe.fromDom(e))}},Ym=e=>{let t=[];return{bind:e=>{if(void 0===e)throw new Error("Event bind error: undefined handler");t.push(e)},unbind:e=>{t=_(t,(t=>t!==e))},trigger:(...o)=>{const n={};N(e,((e,t)=>{n[e]=o[t]})),N(t,(e=>{e(n)}))}}},Jm=e=>({registry:K(e,(e=>({bind:e.bind,unbind:e.unbind}))),trigger:K(e,(e=>e.trigger))}),Qm=e=>e.slice(0).sort(),Xm=(e,t)=>{const o=_(t,(t=>!D(e,t)));o.length>0&&(e=>{throw new Error("Unsupported keys for object: "+Qm(e).join(", "))})(o)},Zm=e=>((e,t)=>((e,t,o)=>{if(0===t.length)throw new Error("You must specify at least one required field.");return((e,t)=>{if(!l(t))throw new Error("The "+e+" fields must be an array. Was: "+t+".");N(t,(t=>{if(!r(t))throw new Error("The value "+t+" in the "+e+" fields was not a string.")}))})("required",t),(e=>{const t=Qm(e);L(t,((e,o)=>o{throw new Error("The field: "+e+" occurs more than once in the combined fields: ["+t.join(", ")+"].")}))})(t),n=>{const r=q(n);P(t,(e=>D(r,e)))||((e,t)=>{throw new Error("All required keys ("+Qm(e).join(", ")+") were not specified. Specified keys were: "+Qm(t).join(", ")+".")})(t,r),e(t,r);const s=_(t,(e=>!o.validate(n[e],e)));return s.length>0&&((e,t)=>{throw new Error("All values need to be of type: "+t+". Keys ("+Qm(e).join(", ")+") were not.")})(s,o.label),n}})(e,t,{validate:d,label:"function"}))(Xm,e),ed=Zm(["compare","extract","mutate","sink"]),td=Zm(["element","start","stop","destroy"]),od=Zm(["forceDrop","drop","move","delayDrop"]),nd=()=>{const e=(()=>{const e=Jm({move:Ym(["info"])});return{onEvent:f,reset:f,events:e.registry}})(),t=(()=>{let e=C.none();const t=Jm({move:Ym(["info"])});return{onEvent:(o,n)=>{n.extract(o).each((o=>{const r=((t,o)=>{const n=e.map((e=>t.compare(e,o)));return e=C.some(o),n})(n,o);r.each((e=>{t.trigger.move(e)}))}))},reset:()=>{e=C.none()},events:t.registry}})();let o=e;return{on:()=>{o.reset(),o=t},off:()=>{o.reset(),o=e},isOn:()=>o===t,onEvent:(e,t)=>{o.onEvent(e,t)},events:t.events}},rd=e=>{const t=e.replace(/\./g,"-");return{resolve:e=>t+"-"+e}},sd=rd("ephox-dragster").resolve;var ld=ed({compare:(e,t)=>bn(t.left-e.left,t.top-e.top),extract:e=>C.some(bn(e.x,e.y)),sink:(e,t)=>{const o=(e=>{const t={layerClass:sd("blocker"),...e},o=xe.fromTag("div");return ge(o,"role","presentation"),Bt(o,{position:"fixed",left:"0px",top:"0px",width:"100%",height:"100%"}),Mm(o,sd("blocker")),Mm(o,t.layerClass),{element:g(o),destroy:()=>{qe(o)}}})(t),n=qm(o.element(),"mousedown",e.forceDrop),r=qm(o.element(),"mouseup",e.drop),s=qm(o.element(),"mousemove",e.move),l=qm(o.element(),"mouseout",e.delayDrop);return td({element:o.element,start:e=>{Ie(e,o.element())},stop:()=>{qe(o.element())},destroy:()=>{o.destroy(),r.unbind(),s.unbind(),l.unbind(),n.unbind()}})},mutate:(e,t)=>{e.mutate(t.left,t.top)}});const ad=rd("ephox-snooker").resolve,cd=ad("resizer-bar"),id=ad("resizer-rows"),md=ad("resizer-cols"),dd=e=>{const t=dt(e.parent(),"."+cd);N(t,qe)},ud=(e,t,o)=>{const n=e.origin();N(t,(t=>{t.each((t=>{const r=o(n,t);Mm(r,cd),Ie(e.parent(),r)}))}))},fd=(e,t,o,n,r)=>{const s=yn(o),l=t.isResizable,a=n.length>0?_n.positions(n,o):[],c=a.length>0?((e,t)=>j(e.all,((e,o)=>t(e.element)?[o]:[])))(e,l):[];((e,t,o,n)=>{ud(e,t,((e,t)=>{const r=((e,t,o,n,r)=>{const s=xe.fromTag("div");return Bt(s,{position:"absolute",left:t+"px",top:o-3.5+"px",height:"7px",width:n+"px"}),he(s,{"data-row":e,role:"presentation"}),s})(t.row,o.left-e.left,t.y-e.top,n);return Mm(r,id),r}))})(t,_(a,((e,t)=>O(c,(e=>t===e)))),s,Wo(o));const i=r.length>0?An.positions(r,o):[],m=i.length>0?((e,t)=>{const o=[];return k(e.grid.columns,(n=>{an(e,n).map((e=>e.element)).forall(t)&&o.push(n)})),_(o,(o=>{const n=nn(e,(e=>e.column===o));return P(n,(e=>t(e.element)))}))})(e,l):[];((e,t,o,n)=>{ud(e,t,((e,t)=>{const r=((e,t,o,n,r)=>{const s=xe.fromTag("div");return Bt(s,{position:"absolute",left:t-3.5+"px",top:o+"px",height:r+"px",width:"7px"}),he(s,{"data-column":e,role:"presentation"}),s})(t.col,t.x-e.left,o.top-e.top,0,n);return Mm(r,md),r}))})(t,_(i,((e,t)=>O(m,(e=>t===e)))),s,pn(o))},gd=(e,t)=>{if(dd(e),e.isResizable(t)){const o=Zo(t),n=dn(o),r=cn(o);fd(o,e,t,n,r)}},hd=(e,t)=>{const o=dt(e.parent(),"."+cd);N(o,t)},pd=e=>{hd(e,(e=>{Nt(e,"display","none")}))},wd=e=>{hd(e,(e=>{Nt(e,"display","block")}))},bd=ad("resizer-bar-dragging"),vd=e=>{const t=(()=>{const e=Jm({drag:Ym(["xDelta","yDelta","target"])});let t=C.none();const o=(()=>{const e=Jm({drag:Ym(["xDelta","yDelta"])});return{mutate:(t,o)=>{e.trigger.drag(t,o)},events:e.registry}})();return o.events.drag.bind((o=>{t.each((t=>{e.trigger.drag(o.xDelta,o.yDelta,t)}))})),{assign:e=>{t=C.some(e)},get:()=>t,mutate:o.mutate,events:e.registry}})(),o=((e,t={})=>{var o;return((e,t,o)=>{let n=!1;const r=Jm({start:Ym([]),stop:Ym([])}),s=nd(),l=()=>{m.stop(),s.isOn()&&(s.off(),r.trigger.stop())},c=((e,t)=>{let o=null;const n=()=>{a(o)||(clearTimeout(o),o=null)};return{cancel:n,throttle:(...t)=>{n(),o=setTimeout((()=>{o=null,e.apply(null,t)}),200)}}})(l);s.events.move.bind((o=>{t.mutate(e,o.info)}));const i=e=>(...t)=>{n&&e.apply(null,t)},m=t.sink(od({forceDrop:l,drop:i(l),move:i((e=>{c.cancel(),s.onEvent(e,t)})),delayDrop:i(c.throttle)}),o);return{element:m.element,go:e=>{m.start(e),s.on(),r.trigger.start()},on:()=>{n=!0},off:()=>{n=!1},isActive:()=>n,destroy:()=>{m.destroy()},events:r.registry}})(e,null!==(o=t.mode)&&void 0!==o?o:ld,t)})(t,{});let n=C.none();const r=(e,t)=>C.from(pe(e,t));t.events.drag.bind((e=>{r(e.target,"data-row").each((t=>{const o=It(e.target,"top");Nt(e.target,"top",o+e.yDelta+"px")})),r(e.target,"data-column").each((t=>{const o=It(e.target,"left");Nt(e.target,"left",o+e.xDelta+"px")}))}));const s=(e,t)=>It(e,t)-Wt(e,"data-initial-"+t,0);o.events.stop.bind((()=>{t.get().each((t=>{n.each((o=>{r(t,"data-row").each((e=>{const n=s(t,"top");be(t,"data-initial-top"),d.trigger.adjustHeight(o,n,parseInt(e,10))})),r(t,"data-column").each((e=>{const n=s(t,"left");be(t,"data-initial-left"),d.trigger.adjustWidth(o,n,parseInt(e,10))})),gd(e,o)}))}))}));const l=(n,r)=>{d.trigger.startAdjust(),t.assign(n),ge(n,"data-initial-"+r,It(n,r)),Mm(n,bd),Nt(n,"opacity","0.2"),o.go(e.parent())},c=qm(e.parent(),"mousedown",(e=>{var t;t=e.target,jm(t,id)&&l(e.target,"top"),(e=>jm(e,md))(e.target)&&l(e.target,"left")})),i=t=>Re(t,e.view()),m=qm(e.view(),"mouseover",(t=>{var r;(r=t.target,bt(r,"table",i).filter(Qr)).fold((()=>{lt(t.target)&&dd(e)}),(t=>{o.isActive()&&(n=C.some(t),gd(e,t))}))})),d=Jm({adjustHeight:Ym(["table","delta","row"]),adjustWidth:Ym(["table","delta","column"]),startAdjust:Ym([])});return{destroy:()=>{c.unbind(),m.unbind(),o.destroy(),dd(e)},refresh:t=>{gd(e,t)},on:o.on,off:o.off,hideBars:w(pd,e),showBars:w(wd,e),events:d.registry}},yd=(e,t,o)=>{const n=_n,r=An,s=vd(e),l=Jm({beforeResize:Ym(["table","type"]),afterResize:Ym(["table","type"]),startDrag:Ym([])});return s.events.adjustHeight.bind((e=>{const t=e.table;l.trigger.beforeResize(t,"row");((e,t,o,n)=>{const r=Zo(e),s=((e,t,o)=>lr(e,t,o,Yn,(e=>e.getOrThunk(Ht))))(r,e,n),l=E(s,((e,n)=>o===n?Math.max(t+e,Ht()):e)),a=oa(r,l),c=((e,t)=>E(e.all,((e,o)=>({element:e.element,height:t[o]}))))(r,l);N(c,(e=>{$n(e.element,e.height)})),N(a,(e=>{$n(e.element,e.height)}));const i=z(l,((e,t)=>e+t),0);$n(e,i)})(t,n.delta(e.delta,t),e.row,n),l.trigger.afterResize(t,"row")})),s.events.startAdjust.bind((e=>{l.trigger.startDrag()})),s.events.adjustWidth.bind((e=>{const n=e.table;l.trigger.beforeResize(n,"col");const s=r.delta(e.delta,n),a=o(n);ra(n,s,e.column,t,a),l.trigger.afterResize(n,"col")})),{on:s.on,off:s.off,refreshBars:s.refresh,hideBars:s.hideBars,showBars:s.showBars,destroy:s.destroy,events:l.registry}},xd=e=>m(e)&&"TABLE"===e.nodeName,Cd="bar-",Sd=e=>"false"!==pe(e,"data-mce-resize"),Td=e=>{const t=lm(),o=lm(),n=lm();let r,s;const l=t=>fc(e,t),a=()=>Pr(e)?el():Zs();return e.on("init",(()=>{const r=((e,t)=>e.inline?((e,t,o)=>({parent:g(t),view:g(e),origin:g(bn(0,0)),isResizable:o}))(xe.fromDom(e.getBody()),(()=>{const e=xe.fromTag("div");return Bt(e,{position:"static",height:"0",width:"0",padding:"0",margin:"0",border:"0"}),Ie(at(xe.fromDom(document)),e),e})(),t):((e,t)=>{const o=me(e)?(e=>xe.fromDom(Ee(e).dom.documentElement))(e):e;return{parent:g(o),view:g(e),origin:g(bn(0,0)),isResizable:t}})(xe.fromDom(e.getDoc()),t))(e,Sd);if(n.set(r),(e=>{const t=e.options.get("object_resizing");return D(t.split(","),"table")})(e)&&qr(e)){const n=a(),s=yd(r,n,l);s.on(),s.events.startDrag.bind((o=>{t.set(e.selection.getRng())})),s.events.beforeResize.bind((t=>{const o=t.table.dom;((e,t,o,n,r)=>{e.dispatch("ObjectResizeStart",{target:t,width:o,height:n,origin:r})})(e,o,ns(o),rs(o),Cd+t.type)})),s.events.afterResize.bind((o=>{const n=o.table,r=n.dom;ts(n),t.on((t=>{e.selection.setRng(t),e.focus()})),((e,t,o,n,r)=>{e.dispatch("ObjectResized",{target:t,width:o,height:n,origin:r})})(e,r,ns(r),rs(r),Cd+o.type),e.undoManager.add()})),o.set(s)}})),e.on("ObjectResizeStart",(t=>{const o=t.target;if(xd(o)){const n=xe.fromDom(o);N(e.dom.select(".mce-clonedresizable"),(t=>{e.dom.addClass(t,"mce-"+jr(e)+"-columns")})),!kc(n)&&$r(e)?_c(n):!Oc(n)&&Hr(e)&&Bc(n),Ec(n)&&Tt(t.origin,Cd)&&Bc(n),r=t.width,s=Vr(e)?"":((e,t)=>{const o=e.dom.getStyle(t,"width")||e.dom.getAttrib(t,"width");return C.from(o).filter(Ot)})(e,o).getOr("")}})),e.on("ObjectResized",(t=>{const o=t.target;if(xd(o)){const n=xe.fromDom(o),c=t.origin;Tt(c,"corner-")&&((t,o,n)=>{const c=Rt(o,"e");if(""===s&&Bc(t),n!==r&&""!==s){Nt(t,"width",s);const o=a(),i=l(t),m=Pr(e)||c?(e=>tl(e).columns)(t)-1:0;ra(t,n-r,m,o,i)}else if((e=>/^(\d+(\.\d+)?)%$/.test(e))(s)){const e=parseFloat(s.replace("%",""));Nt(t,"width",n*e/r+"%")}(e=>/^(\d+(\.\d+)?)px$/.test(e))(s)&&(e=>{const t=Zo(e);ln(t)||N(Ut(e),(e=>{const t=_t(e,"width");Nt(e,"width",t),be(e,"width")}))})(t)})(n,c,t.width),ts(n),ic(e,n.dom,mc)}})),e.on("SwitchMode",(()=>{o.on((t=>{e.mode.isReadOnly()?t.hideBars():t.showBars()}))})),e.on("dragstart dragend",(e=>{o.on((t=>{"dragstart"===e.type?(t.hideBars(),t.off()):(t.on(),t.showBars())}))})),e.on("remove",(()=>{o.on((e=>{e.destroy()})),n.on((t=>{((e,t)=>{e.inline&&qe(t.parent())})(e,t)}))})),{refresh:e=>{o.on((t=>t.refreshBars(xe.fromDom(e))))},hide:()=>{o.on((e=>e.hideBars()))},show:()=>{o.on((e=>e.showBars()))}}},Rd=e=>{(e=>{const t=e.options.register;t("table_clone_elements",{processor:"string[]"}),t("table_use_colgroups",{processor:"boolean",default:!0}),t("table_header_type",{processor:e=>{const t=D(["section","cells","sectionCells","auto"],e);return t?{value:e,valid:t}:{valid:!1,message:"Must be one of: section, cells, sectionCells or auto."}},default:"section"}),t("table_sizing_mode",{processor:"string",default:"auto"}),t("table_default_attributes",{processor:"object",default:{border:"1"}}),t("table_default_styles",{processor:"object",default:{"border-collapse":"collapse"}}),t("table_column_resizing",{processor:e=>{const t=D(["preservetable","resizetable"],e);return t?{value:e,valid:t}:{valid:!1,message:"Must be preservetable, or resizetable."}},default:"preservetable"}),t("table_resize_bars",{processor:"boolean",default:!0}),t("table_style_by_css",{processor:"boolean",default:!0}),t("table_merge_content_on_paste",{processor:"boolean",default:!0})})(e);const t=Td(e),o=Km(e,t),n=gc(e,t,o);return Xc(e,n),((e,t)=>{const o=es(e),n=t=>js(os(e)).bind((n=>Kt(n,o).map((o=>{const r=Ls(Ps(e),o,n);return t(o,r)})))).getOr("");G({mceTableRowType:()=>n(t.getTableRowType),mceTableCellType:()=>n(t.getTableCellType),mceTableColType:()=>n(t.getTableColType)},((t,o)=>e.addQueryValueHandler(o,t)))})(e,n),Is(e,n),{getSelectedCells:o.getSelectedCells,clearSelectedCells:o.clearSelectedCells}};e.add("dom",(e=>({table:Rd(e)})))}();
\ No newline at end of file
diff --git a/public/libs/tinymce/plugins/advlist/plugin.min.js b/public/libs/tinymce/plugins/advlist/plugin.min.js
index 122cd8ff646..8be78ea4211 100644
--- a/public/libs/tinymce/plugins/advlist/plugin.min.js
+++ b/public/libs/tinymce/plugins/advlist/plugin.min.js
@@ -1 +1,4 @@
-!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=tinymce.util.Tools.resolve("tinymce.util.Tools"),s=function(t,e,n){var r="UL"===e?"InsertUnorderedList":"InsertOrderedList";t.execCommand(r,!1,!1===n?null:{"list-style-type":n})},o=function(n){n.addCommand("ApplyUnorderedListStyle",function(t,e){s(n,"UL",e["list-style-type"])}),n.addCommand("ApplyOrderedListStyle",function(t,e){s(n,"OL",e["list-style-type"])})},e=function(t){var e=t.getParam("advlist_number_styles","default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman");return e?e.split(/[ ,]/):[]},n=function(t){var e=t.getParam("advlist_bullet_styles","default,circle,disc,square");return e?e.split(/[ ,]/):[]},u=function(t){return t&&/^(TH|TD)$/.test(t.nodeName)},c=function(r){return function(t){return t&&/^(OL|UL|DL)$/.test(t.nodeName)&&(n=t,(e=r).$.contains(e.getBody(),n));var e,n}},d=function(t){var e=t.dom.getParent(t.selection.getNode(),"ol,ul");return t.dom.getStyle(e,"listStyleType")||""},p=function(t){return a.map(t,function(t){return{text:t.replace(/\-/g," ").replace(/\b\w/g,function(t){return t.toUpperCase()}),data:"default"===t?"":t}})},f=function(i,l){return function(t){var o=t.control;i.on("NodeChange",function(t){var e=function(t,e){for(var n=0;n{const r="UL"===e?"InsertUnorderedList":"InsertOrderedList";t.execCommand(r,!1,!1===s?null:{"list-style-type":s})},s=t=>e=>e.options.get(t),r=s("advlist_number_styles"),n=s("advlist_bullet_styles"),i=t=>null==t,l=t=>!i(t);var o=tinymce.util.Tools.resolve("tinymce.util.Tools");class a{constructor(t,e){this.tag=t,this.value=e}static some(t){return new a(!0,t)}static none(){return a.singletonNone}fold(t,e){return this.tag?e(this.value):t()}isSome(){return this.tag}isNone(){return!this.tag}map(t){return this.tag?a.some(t(this.value)):a.none()}bind(t){return this.tag?t(this.value):a.none()}exists(t){return this.tag&&t(this.value)}forall(t){return!this.tag||t(this.value)}filter(t){return!this.tag||t(this.value)?this:a.none()}getOr(t){return this.tag?this.value:t}or(t){return this.tag?this:t}getOrThunk(t){return this.tag?this.value:t()}orThunk(t){return this.tag?this:t()}getOrDie(t){if(this.tag)return this.value;throw new Error(null!=t?t:"Called getOrDie on None")}static from(t){return l(t)?a.some(t):a.none()}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(t){this.tag&&t(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}a.singletonNone=new a(!1);const u=t=>e=>l(e)&&t.test(e.nodeName),d=u(/^(OL|UL|DL)$/),g=u(/^(TH|TD)$/),c=t=>i(t)||"default"===t?"":t,h=(t,e)=>s=>((t,e)=>{const s=t.selection.getNode();return e({parents:t.dom.getParents(s),element:s}),t.on("NodeChange",e),()=>t.off("NodeChange",e)})(t,(r=>((t,r)=>{const n=t.selection.getStart(!0);s.setActive(((t,e,s)=>((t,e,s)=>{for(let e=0,n=t.length;ee.nodeName===s&&((t,e)=>t.dom.isChildOf(e,t.getBody()))(t,e))))(t,r,e)),s.setEnabled(!((t,e)=>{const s=t.dom.getParent(e,"ol,ul,dl");return((t,e)=>null!==e&&!t.dom.isEditable(e))(t,s)&&t.selection.isEditable()})(t,n)&&t.selection.isEditable())})(t,r.parents))),m=(t,s,r,n,i,l)=>{l.length>1?((t,s,r,n,i,l)=>{t.ui.registry.addSplitButton(s,{tooltip:r,icon:"OL"===i?"ordered-list":"unordered-list",presets:"listpreview",columns:3,fetch:t=>{t(o.map(l,(t=>{const e="OL"===i?"num":"bull",s="disc"===t||"decimal"===t?"default":t,r=c(t),n=(t=>t.replace(/\-/g," ").replace(/\b\w/g,(t=>t.toUpperCase())))(t);return{type:"choiceitem",value:r,icon:"list-"+e+"-"+s,text:n}})))},onAction:()=>t.execCommand(n),onItemAction:(s,r)=>{e(t,i,r)},select:e=>{const s=(t=>{const e=t.dom.getParent(t.selection.getNode(),"ol,ul"),s=t.dom.getStyle(e,"listStyleType");return a.from(s)})(t);return s.map((t=>e===t)).getOr(!1)},onSetup:h(t,i)})})(t,s,r,n,i,l):((t,s,r,n,i,l)=>{t.ui.registry.addToggleButton(s,{active:!1,tooltip:r,icon:"OL"===i?"ordered-list":"unordered-list",onSetup:h(t,i),onAction:()=>t.queryCommandState(n)||""===l?t.execCommand(n):e(t,i,l)})})(t,s,r,n,i,c(l[0]))};t.add("advlist",(t=>{t.hasPlugin("lists")?((t=>{const e=t.options.register;e("advlist_number_styles",{processor:"string[]",default:"default,lower-alpha,lower-greek,lower-roman,upper-alpha,upper-roman".split(",")}),e("advlist_bullet_styles",{processor:"string[]",default:"default,circle,square".split(",")})})(t),(t=>{m(t,"numlist","Numbered list","InsertOrderedList","OL",r(t)),m(t,"bullist","Bullet list","InsertUnorderedList","UL",n(t))})(t),(t=>{t.addCommand("ApplyUnorderedListStyle",((s,r)=>{e(t,"UL",r["list-style-type"])})),t.addCommand("ApplyOrderedListStyle",((s,r)=>{e(t,"OL",r["list-style-type"])}))})(t)):console.error("Please use the Lists plugin together with the Advanced List plugin.")}))}();
\ No newline at end of file
diff --git a/public/libs/tinymce/plugins/anchor/plugin.min.js b/public/libs/tinymce/plugins/anchor/plugin.min.js
index 177f5051755..8049b4d3ae5 100644
--- a/public/libs/tinymce/plugins/anchor/plugin.min.js
+++ b/public/libs/tinymce/plugins/anchor/plugin.min.js
@@ -1 +1,4 @@
-!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(t){return/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(t)},e=function(t){var e=t.selection.getNode();return"A"===e.tagName&&""===t.dom.getAttrib(e,"href")?e.id||e.name:""},i=function(t,e){var n=t.selection.getNode();"A"===n.tagName&&""===t.dom.getAttrib(n,"href")?(n.removeAttribute("name"),n.id=e,t.undoManager.add()):(t.focus(),t.selection.collapse(!0),t.execCommand("mceInsertContent",!1,t.dom.createHTML("a",{id:e})))},n=function(r){var t=e(r);r.windowManager.open({title:"Anchor",body:{type:"textbox",name:"id",size:40,label:"Id",value:t},onsubmit:function(t){var e,n,o=t.data.id;e=r,(a(n=o)?(i(e,n),0):(e.windowManager.alert("Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),1))&&t.preventDefault()}})},o=function(t){t.addCommand("mceAnchor",function(){n(t)})},r=function(o){return function(t){for(var e=0;ee.options.get("allow_html_in_named_anchor"));const a="a:not([href])",r=e=>!e,i=e=>e.getAttribute("id")||e.getAttribute("name")||"",l=e=>(e=>"a"===e.nodeName.toLowerCase())(e)&&!e.getAttribute("href")&&""!==i(e),s=e=>e.dom.getParent(e.selection.getStart(),a),d=(e,a)=>{const r=s(e);r?((e,t,o)=>{o.removeAttribute("name"),o.id=t,e.addVisual(),e.undoManager.add()})(e,a,r):((e,a)=>{e.undoManager.transact((()=>{n(e)||e.selection.collapse(!0),e.selection.isCollapsed()?e.insertContent(e.dom.createHTML("a",{id:a})):((e=>{const n=e.dom;t(n).walk(e.selection.getRng(),(e=>{o.each(e,(e=>{var t;l(t=e)&&!t.firstChild&&n.remove(e,!1)}))}))})(e),e.formatter.remove("namedAnchor",void 0,void 0,!0),e.formatter.apply("namedAnchor",{value:a}),e.addVisual())}))})(e,a),e.focus()},c=e=>(e=>r(e.attr("href"))&&!r(e.attr("id")||e.attr("name")))(e)&&!e.firstChild,m=e=>t=>{for(let o=0;ot=>{const o=()=>{t.setEnabled(e.selection.isEditable())};return e.on("NodeChange",o),o(),()=>{e.off("NodeChange",o)}};e.add("anchor",(e=>{(e=>{(0,e.options.register)("allow_html_in_named_anchor",{processor:"boolean",default:!1})})(e),(e=>{e.on("PreInit",(()=>{e.parser.addNodeFilter("a",m("false")),e.serializer.addNodeFilter("a",m(null))}))})(e),(e=>{e.addCommand("mceAnchor",(()=>{(e=>{const t=(e=>{const t=s(e);return t?i(t):""})(e);e.windowManager.open({title:"Anchor",size:"normal",body:{type:"panel",items:[{name:"id",type:"input",label:"ID",placeholder:"example"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{id:t},onSubmit:t=>{((e,t)=>/^[A-Za-z][A-Za-z0-9\-:._]*$/.test(t)?(d(e,t),!0):(e.windowManager.alert("ID should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores."),!1))(e,t.getData().id)&&t.close()}})})(e)}))})(e),(e=>{const t=()=>e.execCommand("mceAnchor");e.ui.registry.addToggleButton("anchor",{icon:"bookmark",tooltip:"Anchor",onAction:t,onSetup:t=>{const o=e.selection.selectorChangedWithUnbind("a:not([href])",t.setActive).unbind,n=u(e)(t);return()=>{o(),n()}}}),e.ui.registry.addMenuItem("anchor",{icon:"bookmark",text:"Anchor...",onAction:t,onSetup:u(e)})})(e),e.on("PreInit",(()=>{(e=>{e.formatter.register("namedAnchor",{inline:"a",selector:a,remove:"all",split:!0,deep:!0,attributes:{id:"%value"},onmatch:(e,t,o)=>l(e)})})(e)}))}))}();
\ No newline at end of file
diff --git a/public/libs/tinymce/plugins/autolink/plugin.min.js b/public/libs/tinymce/plugins/autolink/plugin.min.js
index 1238a1d231c..32772191f62 100644
--- a/public/libs/tinymce/plugins/autolink/plugin.min.js
+++ b/public/libs/tinymce/plugins/autolink/plugin.min.js
@@ -1 +1,4 @@
-!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=tinymce.util.Tools.resolve("tinymce.Env"),m=function(e){return e.getParam("autolink_pattern",/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+\-]+@)(.+)$/i)},y=function(e){return e.getParam("default_link_target","")},o=function(e,t){if(t<0&&(t=0),3===e.nodeType){var n=e.data.length;nt=>t.options.get(e),n=t("autolink_pattern"),o=t("link_default_target"),r=t("link_default_protocol"),a=t("allow_unsafe_link_target"),s=("string",e=>"string"===(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&(n=o=e,(r=String).prototype.isPrototypeOf(n)||(null===(a=o.constructor)||void 0===a?void 0:a.name)===r.name)?"string":t;var n,o,r,a})(e));const l=(void 0,e=>undefined===e);const i=e=>!(e=>null==e)(e),c=Object.hasOwnProperty,d=e=>"\ufeff"===e;var u=tinymce.util.Tools.resolve("tinymce.dom.TextSeeker");const f=e=>/^[(\[{ \u00a0]$/.test(e),g=(e,t,n)=>{for(let o=t-1;o>=0;o--){const t=e.charAt(o);if(!d(t)&&n(t))return o}return-1},m=(e,t)=>{var o;const a=e.schema.getVoidElements(),s=n(e),{dom:i,selection:d}=e;if(null!==i.getParent(d.getNode(),"a[href]"))return null;const m=d.getRng(),k=u(i,(e=>{return i.isBlock(e)||(t=a,n=e.nodeName.toLowerCase(),c.call(t,n))||"false"===i.getContentEditable(e);var t,n})),{container:p,offset:y}=((e,t)=>{let n=e,o=t;for(;1===n.nodeType&&n.childNodes[o];)n=n.childNodes[o],o=3===n.nodeType?n.data.length:n.childNodes.length;return{container:n,offset:o}})(m.endContainer,m.endOffset),w=null!==(o=i.getParent(p,i.isBlock))&&void 0!==o?o:i.getRoot(),h=k.backwards(p,y+t,((e,t)=>{const n=e.data,o=g(n,t,(r=f,e=>!r(e)));var r,a;return-1===o||(a=n[o],/[?!,.;:]/.test(a))?o:o+1}),w);if(!h)return null;let v=h.container;const _=k.backwards(h.container,h.offset,((e,t)=>{v=e;const n=g(e.data,t,f);return-1===n?n:n+1}),w),A=i.createRng();_?A.setStart(_.container,_.offset):A.setStart(v,0),A.setEnd(h.container,h.offset);const C=A.toString().replace(/\uFEFF/g,"").match(s);if(C){let t=C[0];return $="www.",(b=t).length>=4&&b.substr(0,4)===$?t=r(e)+"://"+t:((e,t,n=0,o)=>{const r=e.indexOf(t,n);return-1!==r&&(!!l(o)||r+t.length<=o)})(t,"@")&&!(e=>/^([A-Za-z][A-Za-z\d.+-]*:\/\/)|mailto:/.test(e))(t)&&(t="mailto:"+t),{rng:A,url:t}}var b,$;return null},k=(e,t)=>{const{dom:n,selection:r}=e,{rng:l,url:i}=t,c=r.getBookmark();r.setRng(l);const d="createlink",u={command:d,ui:!1,value:i};if(!e.dispatch("BeforeExecCommand",u).isDefaultPrevented()){e.getDoc().execCommand(d,!1,i),e.dispatch("ExecCommand",u);const t=o(e);if(s(t)){const o=r.getNode();n.setAttrib(o,"target",t),"_blank"!==t||a(e)||n.setAttrib(o,"rel","noopener")}}r.moveToBookmark(c),e.nodeChanged()},p=e=>{const t=m(e,-1);i(t)&&k(e,t)},y=p;e.add("autolink",(e=>{(e=>{const t=e.options.register;t("autolink_pattern",{processor:"regexp",default:new RegExp("^"+/(?:[A-Za-z][A-Za-z\d.+-]{0,14}:\/\/(?:[-.~*+=!&;:'%@?^${}(),\w]+@)?|www\.|[-;:&=+$,.\w]+@)[A-Za-z\d-]+(?:\.[A-Za-z\d-]+)*(?::\d+)?(?:\/(?:[-.~*+=!;:'%@$(),\/\w]*[-~*+=%@$()\/\w])?)?(?:\?(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?(?:#(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?/g.source+"$","i")}),t("link_default_target",{processor:"string"}),t("link_default_protocol",{processor:"string",default:"https"})})(e),(e=>{e.on("keydown",(t=>{13!==t.keyCode||t.isDefaultPrevented()||(e=>{const t=m(e,0);i(t)&&k(e,t)})(e)})),e.on("keyup",(t=>{32===t.keyCode?p(e):(48===t.keyCode&&t.shiftKey||221===t.keyCode)&&y(e)}))})(e)}))}();
\ No newline at end of file
diff --git a/public/libs/tinymce/plugins/autoresize/plugin.min.js b/public/libs/tinymce/plugins/autoresize/plugin.min.js
index f63945671a6..939bd27cad6 100644
--- a/public/libs/tinymce/plugins/autoresize/plugin.min.js
+++ b/public/libs/tinymce/plugins/autoresize/plugin.min.js
@@ -1 +1,4 @@
-!function(){"use strict";var i=function(t){var e=t,n=function(){return e};return{get:n,set:function(t){e=t},clone:function(){return i(n())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),y=tinymce.util.Tools.resolve("tinymce.Env"),r=tinymce.util.Tools.resolve("tinymce.util.Delay"),h=function(t){return parseInt(t.getParam("autoresize_min_height",t.getElement().offsetHeight),10)},v=function(t){return parseInt(t.getParam("autoresize_max_height",0),10)},o=function(t){return t.getParam("autoresize_overflow_padding",1)},a=function(t){return t.getParam("autoresize_bottom_margin",50)},n=function(t){return t.getParam("autoresize_on_init",!0)},u=function(t,e,n,i,o){r.setEditorTimeout(t,function(){_(t,e),n--?u(t,e,n,i,o):o&&o()},i)},S=function(t,e){var n=t.getBody();n&&(n.style.overflowY=e?"":"hidden",e||(n.scrollTop=0))},_=function(t,e){var n,i,o,r,a,u,s,l,g,c,f,d=t.dom;if(i=t.getDoc())if((m=t).plugins.fullscreen&&m.plugins.fullscreen.isFullscreen())S(t,!0);else{var m;o=i.body,r=h(t),u=d.getStyle(o,"margin-top",!0),s=d.getStyle(o,"margin-bottom",!0),l=d.getStyle(o,"padding-top",!0),g=d.getStyle(o,"padding-bottom",!0),c=d.getStyle(o,"border-top-width",!0),f=d.getStyle(o,"border-bottom-width",!0),a=o.offsetHeight+parseInt(u,10)+parseInt(s,10)+parseInt(l,10)+parseInt(g,10)+parseInt(c,10)+parseInt(f,10),(isNaN(a)||a<=0)&&(a=y.ie?o.scrollHeight:y.webkit&&0===o.clientHeight?0:o.offsetHeight),a>h(t)&&(r=a);var p=v(t);p&&pt=>t.options.get(e),s=o("min_height"),i=o("max_height"),n=o("autoresize_overflow_padding"),r=o("autoresize_bottom_margin"),l=(e,t)=>{const o=e.getBody();o&&(o.style.overflowY=t?"":"hidden",t||(o.scrollTop=0))},g=(e,t,o,s)=>{var i;const n=parseInt(null!==(i=e.getStyle(t,o,s))&&void 0!==i?i:"",10);return isNaN(n)?0:n},a=(e,o,r,c)=>{var d;const f=e.dom,u=e.getDoc();if(!u)return;if((e=>e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen())(e))return void l(e,!0);const m=u.documentElement,h=c?c():n(e),p=null!==(d=s(e))&&void 0!==d?d:e.getElement().offsetHeight;let y=p;const S=g(f,m,"margin-top",!0),v=g(f,m,"margin-bottom",!0);let C=m.offsetHeight+S+v+h;C<0&&(C=0);const b=e.getContainer().offsetHeight-e.getContentAreaContainer().offsetHeight;C+b>p&&(y=C+b);const w=i(e);if(w&&y>w?(y=w,l(e,!0)):l(e,!1),y!==o.get()){const s=y-o.get();if(f.setStyle(e.getContainer(),"height",y+"px"),o.set(y),(e=>{e.dispatch("ResizeEditor")})(e),t.browser.isSafari()&&(t.os.isMacOS()||t.os.isiOS())){const t=e.getWin();t.scrollTo(t.pageXOffset,t.pageYOffset)}e.hasFocus()&&(e=>{if("setcontent"===(null==e?void 0:e.type.toLowerCase())){const t=e;return!0===t.selection||!0===t.paste}return!1})(r)&&e.selection.scrollIntoView(),(t.browser.isSafari()||t.browser.isChromium())&&s<0&&a(e,o,r,c)}};e.add("autoresize",(e=>{if((e=>{const t=e.options.register;t("autoresize_overflow_padding",{processor:"number",default:1}),t("autoresize_bottom_margin",{processor:"number",default:50})})(e),e.options.isSet("resize")||e.options.set("resize",!1),!e.inline){const o=(e=>{let t=0;return{get:()=>t,set:e=>{t=e}}})();((e,t)=>{e.addCommand("mceAutoResize",(()=>{a(e,t)}))})(e,o),((e,o)=>{let s,i,l=()=>r(e);e.on("init",(i=>{s=0;const r=n(e),g=e.dom;g.setStyles(e.getDoc().documentElement,{height:"auto"}),t.browser.isEdge()||t.browser.isIE()?g.setStyles(e.getBody(),{paddingLeft:r,paddingRight:r,"min-height":0}):g.setStyles(e.getBody(),{paddingLeft:r,paddingRight:r}),a(e,o,i,l),s+=1})),e.on("NodeChange SetContent keyup FullscreenStateChanged ResizeContent",(t=>{if(1===s)i=e.getContainer().offsetHeight,a(e,o,t,l),s+=1;else if(2===s){const t=i0):l,s+=1}else a(e,o,t,l)}))})(e,o)}}))}();
\ No newline at end of file
diff --git a/public/libs/tinymce/plugins/autosave/plugin.min.js b/public/libs/tinymce/plugins/autosave/plugin.min.js
index 1eab7201382..b8a68e4a62e 100644
--- a/public/libs/tinymce/plugins/autosave/plugin.min.js
+++ b/public/libs/tinymce/plugins/autosave/plugin.min.js
@@ -1 +1,4 @@
-!function(a){"use strict";var i=function(t){var e=t,n=function(){return e};return{get:n,set:function(t){e=t},clone:function(){return i(n())}}},t=tinymce.util.Tools.resolve("tinymce.PluginManager"),r=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),o=tinymce.util.Tools.resolve("tinymce.util.Tools"),u=function(t,e){var n=t||e,r=/^(\d+)([ms]?)$/.exec(""+n);return(r[2]?{s:1e3,m:6e4}[r[2]]:1)*parseInt(n,10)},s=function(t){var e=t.getParam("autosave_prefix","tinymce-autosave-{path}{query}{hash}-{id}-");return e=(e=(e=(e=e.replace(/\{path\}/g,a.document.location.pathname)).replace(/\{query\}/g,a.document.location.search)).replace(/\{hash\}/g,a.document.location.hash)).replace(/\{id\}/g,t.id)},c=function(t,e){var n=t.settings.forced_root_block;return""===(e=o.trim(void 0===e?t.getBody().innerHTML:e))||new RegExp("^<"+n+"[^>]*>((\xa0| |[ \t]| ]*>)+?|)"+n+">| $","i").test(e)},f=function(t){var e=parseInt(r.getItem(s(t)+"time"),10)||0;return!((new Date).getTime()-e>u(t.settings.autosave_retention,"20m")&&(l(t,!1),1))},l=function(t,e){var n=s(t);r.removeItem(n+"draft"),r.removeItem(n+"time"),!1!==e&&t.fire("RemoveDraft")},m=function(t){var e=s(t);!c(t)&&t.isDirty()&&(r.setItem(e+"draft",t.getContent({format:"raw",no_events:!0})),r.setItem(e+"time",(new Date).getTime().toString()),t.fire("StoreDraft"))},v=function(t){var e=s(t);f(t)&&(t.setContent(r.getItem(e+"draft"),{format:"raw"}),t.fire("RestoreDraft"))},d=function(t,e){var n=u(t.settings.autosave_interval,"30s");e.get()||(setInterval(function(){t.removed||m(t)},n),e.set(!0))},g=function(t){t.undoManager.transact(function(){v(t),l(t)}),t.focus()};function y(r){for(var o=[],t=1;t"string"===(t=>{const e=typeof t;return null===t?"null":"object"===e&&Array.isArray(t)?"array":"object"===e&&(r=o=t,(a=String).prototype.isPrototypeOf(r)||(null===(s=o.constructor)||void 0===s?void 0:s.name)===a.name)?"string":e;var r,o,a,s})(t));const r=(void 0,t=>undefined===t);var o=tinymce.util.Tools.resolve("tinymce.util.Delay"),a=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),s=tinymce.util.Tools.resolve("tinymce.util.Tools");const n=t=>{const e=/^(\d+)([ms]?)$/.exec(t);return(e&&e[2]?{s:1e3,m:6e4}[e[2]]:1)*parseInt(t,10)},i=t=>e=>e.options.get(t),u=i("autosave_ask_before_unload"),l=i("autosave_restore_when_empty"),c=i("autosave_interval"),d=i("autosave_retention"),m=t=>{const e=document.location;return t.options.get("autosave_prefix").replace(/{path}/g,e.pathname).replace(/{query}/g,e.search).replace(/{hash}/g,e.hash).replace(/{id}/g,t.id)},v=(t,e)=>{if(r(e))return t.dom.isEmpty(t.getBody());{const r=s.trim(e);if(""===r)return!0;{const e=(new DOMParser).parseFromString(r,"text/html");return t.dom.isEmpty(e)}}},f=t=>{var e;const r=parseInt(null!==(e=a.getItem(m(t)+"time"))&&void 0!==e?e:"0",10)||0;return!((new Date).getTime()-r>d(t)&&(p(t,!1),1))},p=(t,e)=>{const r=m(t);a.removeItem(r+"draft"),a.removeItem(r+"time"),!1!==e&&(t=>{t.dispatch("RemoveDraft")})(t)},g=t=>{const e=m(t);!v(t)&&t.isDirty()&&(a.setItem(e+"draft",t.getContent({format:"raw",no_events:!0})),a.setItem(e+"time",(new Date).getTime().toString()),(t=>{t.dispatch("StoreDraft")})(t))},y=t=>{var e;const r=m(t);f(t)&&(t.setContent(null!==(e=a.getItem(r+"draft"))&&void 0!==e?e:"",{format:"raw"}),(t=>{t.dispatch("RestoreDraft")})(t))};var D=tinymce.util.Tools.resolve("tinymce.EditorManager");const h=t=>e=>{e.setEnabled(f(t));const r=()=>e.setEnabled(f(t));return t.on("StoreDraft RestoreDraft RemoveDraft",r),()=>t.off("StoreDraft RestoreDraft RemoveDraft",r)};t.add("autosave",(t=>((t=>{const r=t.options.register,o=t=>{const r=e(t);return r?{value:n(t),valid:r}:{valid:!1,message:"Must be a string."}};r("autosave_ask_before_unload",{processor:"boolean",default:!0}),r("autosave_prefix",{processor:"string",default:"tinymce-autosave-{path}{query}{hash}-{id}-"}),r("autosave_restore_when_empty",{processor:"boolean",default:!1}),r("autosave_interval",{processor:o,default:"30s"}),r("autosave_retention",{processor:o,default:"20m"})})(t),(t=>{t.editorManager.on("BeforeUnload",(t=>{let e;s.each(D.get(),(t=>{t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&u(t)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))})),e&&(t.preventDefault(),t.returnValue=e)}))})(t),(t=>{(t=>{const e=c(t);o.setEditorInterval(t,(()=>{g(t)}),e)})(t);const e=()=>{(t=>{t.undoManager.transact((()=>{y(t),p(t)})),t.focus()})(t)};t.ui.registry.addButton("restoredraft",{tooltip:"Restore last draft",icon:"restore-draft",onAction:e,onSetup:h(t)}),t.ui.registry.addMenuItem("restoredraft",{text:"Restore last draft",icon:"restore-draft",onAction:e,onSetup:h(t)})})(t),t.on("init",(()=>{l(t)&&t.dom.isEmpty(t.getBody())&&y(t)})),(t=>({hasDraft:()=>f(t),storeDraft:()=>g(t),restoreDraft:()=>y(t),removeDraft:e=>p(t,e),isEmpty:e=>v(t,e)}))(t))))}();
\ No newline at end of file
diff --git a/public/libs/tinymce/plugins/bbcode/plugin.min.js b/public/libs/tinymce/plugins/bbcode/plugin.min.js
deleted file mode 100644
index b2b9d701c66..00000000000
--- a/public/libs/tinymce/plugins/bbcode/plugin.min.js
+++ /dev/null
@@ -1 +0,0 @@
-!function(){"use strict";var o=tinymce.util.Tools.resolve("tinymce.PluginManager"),t=tinymce.util.Tools.resolve("tinymce.util.Tools"),e=function(e){e=t.trim(e);var o=function(o,t){e=e.replace(o,t)};return o(/(.*?)<\/a>/gi,"[url=$1]$2[/url]"),o(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/(.*?)<\/font>/gi,"[code][color=$1]$2[/color][/code]"),o(/(.*?)<\/font>/gi,"[quote][color=$1]$2[/color][/quote]"),o(/(.*?)<\/span>/gi,"[color=$1]$2[/color]"),o(/(.*?)<\/font>/gi,"[color=$1]$2[/color]"),o(/(.*?)<\/span>/gi,"[size=$1]$2[/size]"),o(/(.*?)<\/font>/gi,"$1"),o(/ /gi,"[img]$1[/img]"),o(/(.*?)<\/span>/gi,"[code]$1[/code]"),o(/(.*?)<\/span>/gi,"[quote]$1[/quote]"),o(/(.*?)<\/strong>/gi,"[code][b]$1[/b][/code]"),o(/(.*?)<\/strong>/gi,"[quote][b]$1[/b][/quote]"),o(/(.*?)<\/em>/gi,"[code][i]$1[/i][/code]"),o(/(.*?)<\/em>/gi,"[quote][i]$1[/i][/quote]"),o(/(.*?)<\/u>/gi,"[code][u]$1[/u][/code]"),o(/(.*?)<\/u>/gi,"[quote][u]$1[/u][/quote]"),o(/<\/(strong|b)>/gi,"[/b]"),o(/<(strong|b)>/gi,"[b]"),o(/<\/(em|i)>/gi,"[/i]"),o(/<(em|i)>/gi,"[i]"),o(/<\/u>/gi,"[/u]"),o(/(.*?)<\/span>/gi,"[u]$1[/u]"),o(//gi,"[u]"),o(/]*>/gi,"[quote]"),o(/<\/blockquote>/gi,"[/quote]"),o(/ /gi,"\n"),o(/ /gi,"\n"),o(/ /gi,"\n"),o(//gi,""),o(/<\/p>/gi,"\n"),o(/ |\u00a0/gi," "),o(/"/gi,'"'),o(/</gi,"<"),o(/>/gi,">"),o(/&/gi,"&"),e},i=function(e){e=t.trim(e);var o=function(o,t){e=e.replace(o,t)};return o(/\n/gi," "),o(/\[b\]/gi,""),o(/\[\/b\]/gi," "),o(/\[i\]/gi,""),o(/\[\/i\]/gi," "),o(/\[u\]/gi,""),o(/\[\/u\]/gi," "),o(/\[url=([^\]]+)\](.*?)\[\/url\]/gi,'$2 '),o(/\[url\](.*?)\[\/url\]/gi,'$1 '),o(/\[img\](.*?)\[\/img\]/gi,' '),o(/\[color=(.*?)\](.*?)\[\/color\]/gi,'$2 '),o(/\[code\](.*?)\[\/code\]/gi,'$1 '),o(/\[quote.*?\](.*?)\[\/quote\]/gi,'$1 '),e};o.add("bbcode",function(){return{init:function(o){o.on("beforeSetContent",function(o){o.content=i(o.content)}),o.on("postProcess",function(o){o.set&&(o.content=i(o.content)),o.get&&(o.content=e(o.content))})}}})}();
\ No newline at end of file
diff --git a/public/libs/tinymce/plugins/charmap/plugin.min.js b/public/libs/tinymce/plugins/charmap/plugin.min.js
index 9ea3f757513..6c12ece2b23 100644
--- a/public/libs/tinymce/plugins/charmap/plugin.min.js
+++ b/public/libs/tinymce/plugins/charmap/plugin.min.js
@@ -1 +1,4 @@
-!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=function(e,t){return e.fire("insertCustomChar",{chr:t})},l=function(e,t){var a=i(e,t).chr;e.execCommand("mceInsertContent",!1,a)},a=tinymce.util.Tools.resolve("tinymce.util.Tools"),r=function(e){return e.settings.charmap},n=function(e){return e.settings.charmap_append},o=a.isArray,c=function(e){return o(e)?[].concat((t=e,a.grep(t,function(e){return o(e)&&2===e.length}))):"function"==typeof e?e():[];var t},s=function(e){return function(e,t){var a=r(e);a&&(t=c(a));var i=n(e);return i?[].concat(t).concat(c(i)):t}(e,[["160","no-break space"],["173","soft hyphen"],["34","quotation mark"],["162","cent sign"],["8364","euro sign"],["163","pound sign"],["165","yen sign"],["169","copyright sign"],["174","registered sign"],["8482","trade mark sign"],["8240","per mille sign"],["181","micro sign"],["183","middle dot"],["8226","bullet"],["8230","three dot leader"],["8242","minutes / feet"],["8243","seconds / inches"],["167","section sign"],["182","paragraph sign"],["223","sharp s / ess-zed"],["8249","single left-pointing angle quotation mark"],["8250","single right-pointing angle quotation mark"],["171","left pointing guillemet"],["187","right pointing guillemet"],["8216","left single quotation mark"],["8217","right single quotation mark"],["8220","left double quotation mark"],["8221","right double quotation mark"],["8218","single low-9 quotation mark"],["8222","double low-9 quotation mark"],["60","less-than sign"],["62","greater-than sign"],["8804","less-than or equal to"],["8805","greater-than or equal to"],["8211","en dash"],["8212","em dash"],["175","macron"],["8254","overline"],["164","currency sign"],["166","broken bar"],["168","diaeresis"],["161","inverted exclamation mark"],["191","turned question mark"],["710","circumflex accent"],["732","small tilde"],["176","degree sign"],["8722","minus sign"],["177","plus-minus sign"],["247","division sign"],["8260","fraction slash"],["215","multiplication sign"],["185","superscript one"],["178","superscript two"],["179","superscript three"],["188","fraction one quarter"],["189","fraction one half"],["190","fraction three quarters"],["402","function / florin"],["8747","integral"],["8721","n-ary sumation"],["8734","infinity"],["8730","square root"],["8764","similar to"],["8773","approximately equal to"],["8776","almost equal to"],["8800","not equal to"],["8801","identical to"],["8712","element of"],["8713","not an element of"],["8715","contains as member"],["8719","n-ary product"],["8743","logical and"],["8744","logical or"],["172","not sign"],["8745","intersection"],["8746","union"],["8706","partial differential"],["8704","for all"],["8707","there exists"],["8709","diameter"],["8711","backward difference"],["8727","asterisk operator"],["8733","proportional to"],["8736","angle"],["180","acute accent"],["184","cedilla"],["170","feminine ordinal indicator"],["186","masculine ordinal indicator"],["8224","dagger"],["8225","double dagger"],["192","A - grave"],["193","A - acute"],["194","A - circumflex"],["195","A - tilde"],["196","A - diaeresis"],["197","A - ring above"],["256","A - macron"],["198","ligature AE"],["199","C - cedilla"],["200","E - grave"],["201","E - acute"],["202","E - circumflex"],["203","E - diaeresis"],["274","E - macron"],["204","I - grave"],["205","I - acute"],["206","I - circumflex"],["207","I - diaeresis"],["298","I - macron"],["208","ETH"],["209","N - tilde"],["210","O - grave"],["211","O - acute"],["212","O - circumflex"],["213","O - tilde"],["214","O - diaeresis"],["216","O - slash"],["332","O - macron"],["338","ligature OE"],["352","S - caron"],["217","U - grave"],["218","U - acute"],["219","U - circumflex"],["220","U - diaeresis"],["362","U - macron"],["221","Y - acute"],["376","Y - diaeresis"],["562","Y - macron"],["222","THORN"],["224","a - grave"],["225","a - acute"],["226","a - circumflex"],["227","a - tilde"],["228","a - diaeresis"],["229","a - ring above"],["257","a - macron"],["230","ligature ae"],["231","c - cedilla"],["232","e - grave"],["233","e - acute"],["234","e - circumflex"],["235","e - diaeresis"],["275","e - macron"],["236","i - grave"],["237","i - acute"],["238","i - circumflex"],["239","i - diaeresis"],["299","i - macron"],["240","eth"],["241","n - tilde"],["242","o - grave"],["243","o - acute"],["244","o - circumflex"],["245","o - tilde"],["246","o - diaeresis"],["248","o slash"],["333","o macron"],["339","ligature oe"],["353","s - caron"],["249","u - grave"],["250","u - acute"],["251","u - circumflex"],["252","u - diaeresis"],["363","u - macron"],["253","y - acute"],["254","thorn"],["255","y - diaeresis"],["563","y - macron"],["913","Alpha"],["914","Beta"],["915","Gamma"],["916","Delta"],["917","Epsilon"],["918","Zeta"],["919","Eta"],["920","Theta"],["921","Iota"],["922","Kappa"],["923","Lambda"],["924","Mu"],["925","Nu"],["926","Xi"],["927","Omicron"],["928","Pi"],["929","Rho"],["931","Sigma"],["932","Tau"],["933","Upsilon"],["934","Phi"],["935","Chi"],["936","Psi"],["937","Omega"],["945","alpha"],["946","beta"],["947","gamma"],["948","delta"],["949","epsilon"],["950","zeta"],["951","eta"],["952","theta"],["953","iota"],["954","kappa"],["955","lambda"],["956","mu"],["957","nu"],["958","xi"],["959","omicron"],["960","pi"],["961","rho"],["962","final sigma"],["963","sigma"],["964","tau"],["965","upsilon"],["966","phi"],["967","chi"],["968","psi"],["969","omega"],["8501","alef symbol"],["982","pi symbol"],["8476","real part symbol"],["978","upsilon - hook symbol"],["8472","Weierstrass p"],["8465","imaginary part"],["8592","leftwards arrow"],["8593","upwards arrow"],["8594","rightwards arrow"],["8595","downwards arrow"],["8596","left right arrow"],["8629","carriage return"],["8656","leftwards double arrow"],["8657","upwards double arrow"],["8658","rightwards double arrow"],["8659","downwards double arrow"],["8660","left right double arrow"],["8756","therefore"],["8834","subset of"],["8835","superset of"],["8836","not a subset of"],["8838","subset of or equal to"],["8839","superset of or equal to"],["8853","circled plus"],["8855","circled times"],["8869","perpendicular"],["8901","dot operator"],["8968","left ceiling"],["8969","right ceiling"],["8970","left floor"],["8971","right floor"],["9001","left-pointing angle bracket"],["9002","right-pointing angle bracket"],["9674","lozenge"],["9824","black spade suit"],["9827","black club suit"],["9829","black heart suit"],["9830","black diamond suit"],["8194","en space"],["8195","em space"],["8201","thin space"],["8204","zero width non-joiner"],["8205","zero width joiner"],["8206","left-to-right mark"],["8207","right-to-left mark"]])},t=function(t){return{getCharMap:function(){return s(t)},insertChar:function(e){l(t,e)}}},u=function(e){var t,a,i,r=Math.min(e.length,25),n=Math.ceil(e.length/r);for(t='
',i=0;i",a=0;a'+s+"
"}else t+=" "}t+=""}return t+="
"},d=function(e){for(;e;){if("TD"===e.nodeName)return e;e=e.parentNode}},m=function(n){var o,e={type:"container",html:u(s(n)),onclick:function(e){var t=e.target;if(/^(TD|DIV)$/.test(t.nodeName)){var a=d(t).firstChild;if(a&&a.hasAttribute("data-chr")){var i=a.getAttribute("data-chr"),r=parseInt(i,10);isNaN(r)||l(n,String.fromCharCode(r)),e.ctrlKey||o.close()}}},onmouseover:function(e){var t=d(e.target);t&&t.firstChild?(o.find("#preview").text(t.firstChild.firstChild.data),o.find("#previewTitle").text(t.title)):(o.find("#preview").text(" "),o.find("#previewTitle").text(" "))}};o=n.windowManager.open({title:"Special character",spacing:10,padding:10,items:[e,{type:"container",layout:"flex",direction:"column",align:"center",spacing:5,minWidth:160,minHeight:160,items:[{type:"label",name:"preview",text:" ",style:"font-size: 40px; text-align: center",border:1,minWidth:140,minHeight:80},{type:"spacer",minHeight:20},{type:"label",name:"previewTitle",text:" ",style:"white-space: pre-wrap;",border:1,minWidth:140}]}],buttons:[{text:"Close",onclick:function(){o.close()}}]})},g=function(e){e.addCommand("mceShowCharmap",function(){m(e)})},p=function(e){e.addButton("charmap",{icon:"charmap",tooltip:"Special character",cmd:"mceShowCharmap"}),e.addMenuItem("charmap",{icon:"charmap",text:"Special character",cmd:"mceShowCharmap",context:"insert"})};e.add("charmap",function(e){return g(e),p(e),t(e)})}();
\ No newline at end of file
+/**
+ * TinyMCE version 6.8.4 (2024-06-19)
+ */
+!function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager");const t=(e,t)=>{const r=((e,t)=>e.dispatch("insertCustomChar",{chr:t}))(e,t).chr;e.execCommand("mceInsertContent",!1,r)},r=e=>t=>e===t,a=("array",e=>"array"===(e=>{const t=typeof e;return null===e?"null":"object"===t&&Array.isArray(e)?"array":"object"===t&&(r=a=e,(n=String).prototype.isPrototypeOf(r)||(null===(i=a.constructor)||void 0===i?void 0:i.name)===n.name)?"string":t;var r,a,n,i})(e));const n=r(null),i=r(void 0),o=e=>"function"==typeof e,s=(!1,()=>false);class l{constructor(e,t){this.tag=e,this.value=t}static some(e){return new l(!0,e)}static none(){return l.singletonNone}fold(e,t){return this.tag?t(this.value):e()}isSome(){return this.tag}isNone(){return!this.tag}map(e){return this.tag?l.some(e(this.value)):l.none()}bind(e){return this.tag?e(this.value):l.none()}exists(e){return this.tag&&e(this.value)}forall(e){return!this.tag||e(this.value)}filter(e){return!this.tag||e(this.value)?this:l.none()}getOr(e){return this.tag?this.value:e}or(e){return this.tag?this:e}getOrThunk(e){return this.tag?this.value:e()}orThunk(e){return this.tag?this:e()}getOrDie(e){if(this.tag)return this.value;throw new Error(null!=e?e:"Called getOrDie on None")}static from(e){return null==e?l.none():l.some(e)}getOrNull(){return this.tag?this.value:null}getOrUndefined(){return this.value}each(e){this.tag&&e(this.value)}toArray(){return this.tag?[this.value]:[]}toString(){return this.tag?`some(${this.value})`:"none()"}}l.singletonNone=new l(!1);const c=Array.prototype.push,u=(e,t)=>{const r=e.length,a=new Array(r);for(let n=0;nt=>t.options.get(e),m=h("charmap"),p=h("charmap_append"),d=g.isArray,f="User Defined",y=e=>{return d(e)?(t=e,g.grep(t,(e=>d(e)&&2===e.length))):"function"==typeof e?e():[];var t},b=e=>{const t=((e,t)=>{const r=m(e);r&&(t=[{name:f,characters:y(r)}]);const a=p(e);if(a){const e=g.grep(t,(e=>e.name===f));return e.length?(e[0].characters=[...e[0].characters,...y(a)],t):t.concat({name:f,characters:y(a)})}return t})(e,[{name:"Currency",characters:[[36,"dollar sign"],[162,"cent sign"],[8364,"euro sign"],[163,"pound sign"],[165,"yen sign"],[164,"currency sign"],[8352,"euro-currency sign"],[8353,"colon sign"],[8354,"cruzeiro sign"],[8355,"french franc sign"],[8356,"lira sign"],[8357,"mill sign"],[8358,"naira sign"],[8359,"peseta sign"],[8360,"rupee sign"],[8361,"won sign"],[8362,"new sheqel sign"],[8363,"dong sign"],[8365,"kip sign"],[8366,"tugrik sign"],[8367,"drachma sign"],[8368,"german penny symbol"],[8369,"peso sign"],[8370,"guarani sign"],[8371,"austral sign"],[8372,"hryvnia sign"],[8373,"cedi sign"],[8374,"livre tournois sign"],[8375,"spesmilo sign"],[8376,"tenge sign"],[8377,"indian rupee sign"],[8378,"turkish lira sign"],[8379,"nordic mark sign"],[8380,"manat sign"],[8381,"ruble sign"],[20870,"yen character"],[20803,"yuan character"],[22291,"yuan character, in hong kong and taiwan"],[22278,"yen/yuan character variant one"]]},{name:"Text",characters:[[169,"copyright sign"],[174,"registered sign"],[8482,"trade mark sign"],[8240,"per mille sign"],[181,"micro sign"],[183,"middle dot"],[8226,"bullet"],[8230,"three dot leader"],[8242,"minutes / feet"],[8243,"seconds / inches"],[167,"section sign"],[182,"paragraph sign"],[223,"sharp s / ess-zed"]]},{name:"Quotations",characters:[[8249,"single left-pointing angle quotation mark"],[8250,"single right-pointing angle quotation mark"],[171,"left pointing guillemet"],[187,"right pointing guillemet"],[8216,"left single quotation mark"],[8217,"right single quotation mark"],[8220,"left double quotation mark"],[8221,"right double quotation mark"],[8218,"single low-9 quotation mark"],[8222,"double low-9 quotation mark"],[60,"less-than sign"],[62,"greater-than sign"],[8804,"less-than or equal to"],[8805,"greater-than or equal to"],[8211,"en dash"],[8212,"em dash"],[175,"macron"],[8254,"overline"],[164,"currency sign"],[166,"broken bar"],[168,"diaeresis"],[161,"inverted exclamation mark"],[191,"turned question mark"],[710,"circumflex accent"],[732,"small tilde"],[176,"degree sign"],[8722,"minus sign"],[177,"plus-minus sign"],[247,"division sign"],[8260,"fraction slash"],[215,"multiplication sign"],[185,"superscript one"],[178,"superscript two"],[179,"superscript three"],[188,"fraction one quarter"],[189,"fraction one half"],[190,"fraction three quarters"]]},{name:"Mathematical",characters:[[402,"function / florin"],[8747,"integral"],[8721,"n-ary sumation"],[8734,"infinity"],[8730,"square root"],[8764,"similar to"],[8773,"approximately equal to"],[8776,"almost equal to"],[8800,"not equal to"],[8801,"identical to"],[8712,"element of"],[8713,"not an element of"],[8715,"contains as member"],[8719,"n-ary product"],[8743,"logical and"],[8744,"logical or"],[172,"not sign"],[8745,"intersection"],[8746,"union"],[8706,"partial differential"],[8704,"for all"],[8707,"there exists"],[8709,"diameter"],[8711,"backward difference"],[8727,"asterisk operator"],[8733,"proportional to"],[8736,"angle"]]},{name:"Extended Latin",characters:[[192,"A - grave"],[193,"A - acute"],[194,"A - circumflex"],[195,"A - tilde"],[196,"A - diaeresis"],[197,"A - ring above"],[256,"A - macron"],[198,"ligature AE"],[199,"C - cedilla"],[200,"E - grave"],[201,"E - acute"],[202,"E - circumflex"],[203,"E - diaeresis"],[274,"E - macron"],[204,"I - grave"],[205,"I - acute"],[206,"I - circumflex"],[207,"I - diaeresis"],[298,"I - macron"],[208,"ETH"],[209,"N - tilde"],[210,"O - grave"],[211,"O - acute"],[212,"O - circumflex"],[213,"O - tilde"],[214,"O - diaeresis"],[216,"O - slash"],[332,"O - macron"],[338,"ligature OE"],[352,"S - caron"],[217,"U - grave"],[218,"U - acute"],[219,"U - circumflex"],[220,"U - diaeresis"],[362,"U - macron"],[221,"Y - acute"],[376,"Y - diaeresis"],[562,"Y - macron"],[222,"THORN"],[224,"a - grave"],[225,"a - acute"],[226,"a - circumflex"],[227,"a - tilde"],[228,"a - diaeresis"],[229,"a - ring above"],[257,"a - macron"],[230,"ligature ae"],[231,"c - cedilla"],[232,"e - grave"],[233,"e - acute"],[234,"e - circumflex"],[235,"e - diaeresis"],[275,"e - macron"],[236,"i - grave"],[237,"i - acute"],[238,"i - circumflex"],[239,"i - diaeresis"],[299,"i - macron"],[240,"eth"],[241,"n - tilde"],[242,"o - grave"],[243,"o - acute"],[244,"o - circumflex"],[245,"o - tilde"],[246,"o - diaeresis"],[248,"o slash"],[333,"o macron"],[339,"ligature oe"],[353,"s - caron"],[249,"u - grave"],[250,"u - acute"],[251,"u - circumflex"],[252,"u - diaeresis"],[363,"u - macron"],[253,"y - acute"],[254,"thorn"],[255,"y - diaeresis"],[563,"y - macron"],[913,"Alpha"],[914,"Beta"],[915,"Gamma"],[916,"Delta"],[917,"Epsilon"],[918,"Zeta"],[919,"Eta"],[920,"Theta"],[921,"Iota"],[922,"Kappa"],[923,"Lambda"],[924,"Mu"],[925,"Nu"],[926,"Xi"],[927,"Omicron"],[928,"Pi"],[929,"Rho"],[931,"Sigma"],[932,"Tau"],[933,"Upsilon"],[934,"Phi"],[935,"Chi"],[936,"Psi"],[937,"Omega"],[945,"alpha"],[946,"beta"],[947,"gamma"],[948,"delta"],[949,"epsilon"],[950,"zeta"],[951,"eta"],[952,"theta"],[953,"iota"],[954,"kappa"],[955,"lambda"],[956,"mu"],[957,"nu"],[958,"xi"],[959,"omicron"],[960,"pi"],[961,"rho"],[962,"final sigma"],[963,"sigma"],[964,"tau"],[965,"upsilon"],[966,"phi"],[967,"chi"],[968,"psi"],[969,"omega"]]},{name:"Symbols",characters:[[8501,"alef symbol"],[982,"pi symbol"],[8476,"real part symbol"],[978,"upsilon - hook symbol"],[8472,"Weierstrass p"],[8465,"imaginary part"]]},{name:"Arrows",characters:[[8592,"leftwards arrow"],[8593,"upwards arrow"],[8594,"rightwards arrow"],[8595,"downwards arrow"],[8596,"left right arrow"],[8629,"carriage return"],[8656,"leftwards double arrow"],[8657,"upwards double arrow"],[8658,"rightwards double arrow"],[8659,"downwards double arrow"],[8660,"left right double arrow"],[8756,"therefore"],[8834,"subset of"],[8835,"superset of"],[8836,"not a subset of"],[8838,"subset of or equal to"],[8839,"superset of or equal to"],[8853,"circled plus"],[8855,"circled times"],[8869,"perpendicular"],[8901,"dot operator"],[8968,"left ceiling"],[8969,"right ceiling"],[8970,"left floor"],[8971,"right floor"],[9001,"left-pointing angle bracket"],[9002,"right-pointing angle bracket"],[9674,"lozenge"],[9824,"black spade suit"],[9827,"black club suit"],[9829,"black heart suit"],[9830,"black diamond suit"],[8194,"en space"],[8195,"em space"],[8201,"thin space"],[8204,"zero width non-joiner"],[8205,"zero width joiner"],[8206,"left-to-right mark"],[8207,"right-to-left mark"]]}]);return t.length>1?[{name:"All",characters:(r=t,n=e=>e.characters,(e=>{const t=[];for(let r=0,n=e.length;r{let t=e;return{get:()=>t,set:e=>{t=e}}},v=(e,t,r=0,a)=>{const n=e.indexOf(t,r);return-1!==n&&(!!i(a)||n+t.length<=a)},k=String.fromCodePoint,C=(e,t)=>{const r=[],a=t.toLowerCase();return((e,t)=>{for(let t=0,i=e.length;t!!v(k(e).toLowerCase(),r)||v(t.toLowerCase(),r)||v(t.toLowerCase().replace(/\s+/g,""),r))((n=e[t])[0],n[1],a)&&r.push(n);var n})(e.characters),u(r,(e=>({text:e[1],value:k(e[0]),icon:k(e[0])})))},x="pattern",A=(e,r)=>{const a=()=>[{label:"Search",type:"input",name:x},{type:"collection",name:"results"}],i=1===r.length?w(f):w("All"),o=((e,t)=>{let r=null;const a=()=>{n(r)||(clearTimeout(r),r=null)};return{cancel:a,throttle:(...t)=>{a(),r=setTimeout((()=>{r=null,e.apply(null,t)}),40)}}})((e=>{const t=e.getData().pattern;((e,t)=>{var a,n;(a=r,n=e=>e.name===i.get(),((e,t,r)=>{for(let a=0,n=e.length;a{const a=C(r,t);e.setData({results:a})}))})(e,t)})),c={title:"Special Character",size:"normal",body:1===r.length?{type:"panel",items:a()}:{type:"tabpanel",tabs:u(r,(e=>({title:e.name,name:e.name,items:a()})))},buttons:[{type:"cancel",name:"close",text:"Close",primary:!0}],initialData:{pattern:"",results:C(r[0],"")},onAction:(r,a)=>{"results"===a.name&&(t(e,a.value),r.close())},onTabChange:(e,t)=>{i.set(t.newTabName),o.throttle(e)},onChange:(e,t)=>{t.name===x&&o.throttle(e)}};e.windowManager.open(c).focus(x)},q=e=>t=>{const r=()=>{t.setEnabled(e.selection.isEditable())};return e.on("NodeChange",r),r(),()=>{e.off("NodeChange",r)}};e.add("charmap",(e=>{(e=>{const t=e.options.register,r=e=>o(e)||a(e);t("charmap",{processor:r}),t("charmap_append",{processor:r})})(e);const r=b(e);return((e,t)=>{e.addCommand("mceShowCharmap",(()=>{A(e,t)}))})(e,r),(e=>{const t=()=>e.execCommand("mceShowCharmap");e.ui.registry.addButton("charmap",{icon:"insert-character",tooltip:"Special character",onAction:t,onSetup:q(e)}),e.ui.registry.addMenuItem("charmap",{icon:"insert-character",text:"Special character...",onAction:t,onSetup:q(e)})})(e),((e,t)=>{e.ui.registry.addAutocompleter("charmap",{trigger:":",columns:"auto",minChars:2,fetch:(e,r)=>new Promise(((r,a)=>{r(C(t,e))})),onAction:(t,r,a)=>{e.selection.setRng(r),e.insertContent(a),t.hide()}})})(e,r[0]),(e=>({getCharMap:()=>b(e),insertChar:r=>{t(e,r)}}))(e)}))}();
\ No newline at end of file
diff --git a/public/libs/tinymce/plugins/code/plugin.min.js b/public/libs/tinymce/plugins/code/plugin.min.js
index 7afcca644ef..1928a12f774 100644
--- a/public/libs/tinymce/plugins/code/plugin.min.js
+++ b/public/libs/tinymce/plugins/code/plugin.min.js
@@ -1 +1,4 @@
-!function(){"use strict";var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),o=function(t){return t.getParam("code_dialog_width",600)},i=function(t){return t.getParam("code_dialog_height",Math.min(n.DOM.getViewPort().h-200,500))},c=function(t,n){t.focus(),t.undoManager.transact(function(){t.setContent(n)}),t.selection.setCursorLocation(),t.nodeChanged()},d=function(t){return t.getContent({source_view:!0})},e=function(n){var t=o(n),e=i(n);n.windowManager.open({title:"Source code",body:{type:"textbox",name:"code",multiline:!0,minWidth:t,minHeight:e,spellcheck:!1,style:"direction: ltr; text-align: left"},onSubmit:function(t){c(n,t.data.code)}}).find("#code").value(d(n))},u=function(t){t.addCommand("mceCodeEditor",function(){e(t)})},a=function(t){t.addButton("code",{icon:"code",tooltip:"Source code",onclick:function(){e(t)}}),t.addMenuItem("code",{icon:"code",text:"Source code",onclick:function(){e(t)}})};t.add("code",function(t){return u(t),a(t),{}})}();
\ No newline at end of file
+/**
+ * TinyMCE version 6.8.4 (2024-06-19)
+ */
+!function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("code",(e=>((e=>{e.addCommand("mceCodeEditor",(()=>{(e=>{const o=(e=>e.getContent({source_view:!0}))(e);e.windowManager.open({title:"Source Code",size:"large",body:{type:"panel",items:[{type:"textarea",name:"code"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{code:o},onSubmit:o=>{((e,o)=>{e.focus(),e.undoManager.transact((()=>{e.setContent(o)})),e.selection.setCursorLocation(),e.nodeChanged()})(e,o.getData().code),o.close()}})})(e)}))})(e),(e=>{const o=()=>e.execCommand("mceCodeEditor");e.ui.registry.addButton("code",{icon:"sourcecode",tooltip:"Source code",onAction:o}),e.ui.registry.addMenuItem("code",{icon:"sourcecode",text:"Source code",onAction:o})})(e),{})))}();
\ No newline at end of file
diff --git a/public/libs/tinymce/plugins/codesample/css/prism.css b/public/libs/tinymce/plugins/codesample/css/prism.css
deleted file mode 100644
index 128237fba35..00000000000
--- a/public/libs/tinymce/plugins/codesample/css/prism.css
+++ /dev/null
@@ -1,138 +0,0 @@
-/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript */
-/**
- * prism.js default theme for JavaScript, CSS and HTML
- * Based on dabblet (http://dabblet.com)
- * @author Lea Verou
- */
-
-code[class*="language-"],
-pre[class*="language-"] {
- color: black;
- text-shadow: 0 1px white;
- font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
- direction: ltr;
- text-align: left;
- white-space: pre;
- word-spacing: normal;
- word-break: normal;
- word-wrap: normal;
- line-height: 1.5;
-
- -moz-tab-size: 4;
- -o-tab-size: 4;
- tab-size: 4;
-
- -webkit-hyphens: none;
- -moz-hyphens: none;
- -ms-hyphens: none;
- hyphens: none;
-}
-
-pre[class*="language-"]::-moz-selection, pre[class*="language-"] ::-moz-selection,
-code[class*="language-"]::-moz-selection, code[class*="language-"] ::-moz-selection {
- text-shadow: none;
- background: #b3d4fc;
-}
-
-pre[class*="language-"]::selection, pre[class*="language-"] ::selection,
-code[class*="language-"]::selection, code[class*="language-"] ::selection {
- text-shadow: none;
- background: #b3d4fc;
-}
-
-@media print {
- code[class*="language-"],
- pre[class*="language-"] {
- text-shadow: none;
- }
-}
-
-/* Code blocks */
-pre[class*="language-"] {
- padding: 1em;
- margin: .5em 0;
- overflow: auto;
-}
-
-:not(pre) > code[class*="language-"],
-pre[class*="language-"] {
- background: #f5f2f0;
-}
-
-/* Inline code */
-:not(pre) > code[class*="language-"] {
- padding: .1em;
- border-radius: .3em;
-}
-
-.token.comment,
-.token.prolog,
-.token.doctype,
-.token.cdata {
- color: slategray;
-}
-
-.token.punctuation {
- color: #999;
-}
-
-.namespace {
- opacity: .7;
-}
-
-.token.property,
-.token.tag,
-.token.boolean,
-.token.number,
-.token.constant,
-.token.symbol,
-.token.deleted {
- color: #905;
-}
-
-.token.selector,
-.token.attr-name,
-.token.string,
-.token.char,
-.token.builtin,
-.token.inserted {
- color: #690;
-}
-
-.token.operator,
-.token.entity,
-.token.url,
-.language-css .token.string,
-.style .token.string {
- color: #a67f59;
- background: hsla(0, 0%, 100%, .5);
-}
-
-.token.atrule,
-.token.attr-value,
-.token.keyword {
- color: #07a;
-}
-
-.token.function {
- color: #DD4A68;
-}
-
-.token.regex,
-.token.important,
-.token.variable {
- color: #e90;
-}
-
-.token.important,
-.token.bold {
- font-weight: bold;
-}
-.token.italic {
- font-style: italic;
-}
-
-.token.entity {
- cursor: help;
-}
-
diff --git a/public/libs/tinymce/plugins/codesample/plugin.min.js b/public/libs/tinymce/plugins/codesample/plugin.min.js
index c50f3b25cb9..504ea9e5213 100644
--- a/public/libs/tinymce/plugins/codesample/plugin.min.js
+++ b/public/libs/tinymce/plugins/codesample/plugin.min.js
@@ -1 +1,4 @@
-!function(u){"use strict";var n=function(e){var t=e,a=function(){return t};return{get:a,set:function(e){t=e},clone:function(){return n(a())}}},e=tinymce.util.Tools.resolve("tinymce.PluginManager"),i=tinymce.util.Tools.resolve("tinymce.dom.DOMUtils"),s=function(e){return e.settings.codesample_content_css},a=function(e){return e.settings.codesample_languages},o=function(e){return Math.min(i.DOM.getViewPort().w,e.getParam("codesample_dialog_width",800))},l=function(e){return Math.min(i.DOM.getViewPort().w,e.getParam("codesample_dialog_height",650))},t={},r=t,g=void 0!==t?t:"undefined"!=typeof WorkerGlobalScope&&u.self instanceof WorkerGlobalScope?u.self:{},c=function(){var c=/\blang(?:uage)?-(?!\*)(\w+)\b/i,S=g.Prism={util:{encode:function(e){return e instanceof o?new o(e.type,S.util.encode(e.content),e.alias):"Array"===S.util.type(e)?e.map(S.util.encode):e.replace(/&/g,"&").replace(/e.length)break e;if(!(h instanceof n)){c.lastIndex=0;var m=c.exec(h);if(m){g&&(d=m[1].length);var b=m.index-1+d,y=b+(m=m[0].slice(d)).length,v=h.slice(0,b+1),k=h.slice(y+1),w=[f,1];v&&w.push(v);var x=new n(s,u?S.tokenize(m,u):m,p);w.push(x),k&&w.push(k),Array.prototype.splice.apply(i,w)}}}}}return i},hooks:{all:{},add:function(e,t){var a=S.hooks.all;a[e]=a[e]||[],a[e].push(t)},run:function(e,t){var a=S.hooks.all[e];if(a&&a.length)for(var n=0,i=void 0;i=a[n++];)i(t)}}},o=S.Token=function(e,t,a){this.type=e,this.content=t,this.alias=a};if(o.stringify=function(t,a,e){if("string"==typeof t)return t;if("Array"===S.util.type(t))return t.map(function(e){return o.stringify(e,a,t)}).join("");var n={type:t.type,content:o.stringify(t.content,a,e),tag:"span",classes:["token",t.type],attributes:{},language:a,parent:e};if("comment"===n.type&&(n.attributes.spellcheck="true"),t.alias){var i="Array"===S.util.type(t.alias)?t.alias:[t.alias];Array.prototype.push.apply(n.classes,i)}S.hooks.run("wrap",n);var r="";for(var s in n.attributes)r+=(r?" ":"")+s+'="'+(n.attributes[s]||"")+'"';return"<"+n.tag+' class="'+n.classes.join(" ")+'" '+r+">"+n.content+""+n.tag+">"},!g.document)return g.addEventListener&&g.addEventListener("message",function(e){var t=JSON.parse(e.data),a=t.language,n=t.code,i=t.immediateClose;g.postMessage(S.highlight(n,S.languages[a],a)),i&&g.close()},!1),g.Prism}();void 0!==r&&(r.Prism=c),c.languages.markup={comment://,prolog:/<\?[\w\W]+?\?>/,doctype://,cdata://i,tag:{pattern:/<\/?[^\s>\/=.]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/?[\da-z]{1,8};/i},c.hooks.add("wrap",function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))}),c.languages.xml=c.languages.markup,c.languages.html=c.languages.markup,c.languages.mathml=c.languages.markup,c.languages.svg=c.languages.markup,c.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,"function":/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},c.languages.css.atrule.inside.rest=c.util.clone(c.languages.css),c.languages.markup&&(c.languages.insertBefore("markup","tag",{style:{pattern:/"),d.each(t.contentCSS,function(e){n+=' '});var o=t.settings.body_id||"tinymce";-1!==o.indexOf("=")&&(o=(o=t.getParam("body_id","","hash"))[t.id]||o);var r=t.settings.body_class||"";-1!==r.indexOf("=")&&(r=(r=t.getParam("body_class","","hash"))[t.id]||"");var c=t.settings.directionality?' dir="'+t.settings.directionality+'"':"";return""+n+'"+t.getContent()+'
+
+
+
+
+@stop
diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php
index 4212c1964c8..6278adcd7a8 100644
--- a/resources/views/auth/login.blade.php
+++ b/resources/views/auth/login.blade.php
@@ -1,4 +1,4 @@
-@extends('simple-layout')
+@extends('layouts.simple')
@section('content')
@@ -9,7 +9,9 @@
{{ Str::title(trans('auth.log_in')) }}
- @include('auth.forms.login.' . $authMethod)
+ @include('auth.parts.login-message')
+
+ @include('auth.parts.login-form-' . $authMethod)
@if(count($socialDrivers) > 0)
diff --git a/resources/views/auth/forms/login/ldap.blade.php b/resources/views/auth/parts/login-form-ldap.blade.php
similarity index 100%
rename from resources/views/auth/forms/login/ldap.blade.php
rename to resources/views/auth/parts/login-form-ldap.blade.php
diff --git a/resources/views/auth/parts/login-form-oidc.blade.php b/resources/views/auth/parts/login-form-oidc.blade.php
new file mode 100644
index 00000000000..e5e1b70fc59
--- /dev/null
+++ b/resources/views/auth/parts/login-form-oidc.blade.php
@@ -0,0 +1,11 @@
+
diff --git a/resources/views/auth/forms/login/saml2.blade.php b/resources/views/auth/parts/login-form-saml2.blade.php
similarity index 100%
rename from resources/views/auth/forms/login/saml2.blade.php
rename to resources/views/auth/parts/login-form-saml2.blade.php
diff --git a/resources/views/auth/parts/login-form-standard.blade.php b/resources/views/auth/parts/login-form-standard.blade.php
new file mode 100644
index 00000000000..71989dc2f23
--- /dev/null
+++ b/resources/views/auth/parts/login-form-standard.blade.php
@@ -0,0 +1,36 @@
+
+
+
diff --git a/resources/views/auth/parts/login-message.blade.php b/resources/views/auth/parts/login-message.blade.php
new file mode 100644
index 00000000000..47119897960
--- /dev/null
+++ b/resources/views/auth/parts/login-message.blade.php
@@ -0,0 +1,2 @@
+{{-- This is a placeholder template file provided as a --}}
+{{-- convenience to users of the visual theme system. --}}
\ No newline at end of file
diff --git a/resources/views/auth/parts/register-message.blade.php b/resources/views/auth/parts/register-message.blade.php
new file mode 100644
index 00000000000..47119897960
--- /dev/null
+++ b/resources/views/auth/parts/register-message.blade.php
@@ -0,0 +1,2 @@
+{{-- This is a placeholder template file provided as a --}}
+{{-- convenience to users of the visual theme system. --}}
\ No newline at end of file
diff --git a/resources/views/auth/passwords/email.blade.php b/resources/views/auth/passwords/email.blade.php
index 8273ed2356b..d42b9e3c66d 100644
--- a/resources/views/auth/passwords/email.blade.php
+++ b/resources/views/auth/passwords/email.blade.php
@@ -1,4 +1,4 @@
-@extends('simple-layout')
+@extends('layouts.simple')
@section('content')
diff --git a/resources/views/auth/passwords/reset.blade.php b/resources/views/auth/passwords/reset.blade.php
index 930544cde40..de332f9e177 100644
--- a/resources/views/auth/passwords/reset.blade.php
+++ b/resources/views/auth/passwords/reset.blade.php
@@ -1,4 +1,4 @@
-@extends('simple-layout')
+@extends('layouts.simple')
@section('content')
diff --git a/resources/views/auth/register-confirm-accept.blade.php b/resources/views/auth/register-confirm-accept.blade.php
new file mode 100644
index 00000000000..e52bdb411d6
--- /dev/null
+++ b/resources/views/auth/register-confirm-accept.blade.php
@@ -0,0 +1,27 @@
+@extends('layouts.simple')
+
+@section('content')
+
+
+
+
{{ trans('auth.email_confirm_thanks') }}
+
+
{{ trans('auth.email_confirm_thanks_desc') }}
+
+
+
+ @include('common.loading-icon')
+
+
+
+
+
+
+
+
+
+@stop
diff --git a/resources/views/auth/register-confirm-awaiting.blade.php b/resources/views/auth/register-confirm-awaiting.blade.php
new file mode 100644
index 00000000000..e5d6f61b253
--- /dev/null
+++ b/resources/views/auth/register-confirm-awaiting.blade.php
@@ -0,0 +1,26 @@
+@extends('layouts.simple')
+
+@section('content')
+
+
+
+
{{ trans('auth.email_not_confirmed') }}
+
+
{{ trans('auth.email_not_confirmed_text') }}
+ {{ trans('auth.email_not_confirmed_click_link') }}
+
+
+ {{ trans('auth.email_not_confirmed_resend') }}
+
+
+
+
+
+
+
+@stop
diff --git a/resources/views/auth/register-confirm.blade.php b/resources/views/auth/register-confirm.blade.php
index 8fbf8abbbd7..0de877a53f4 100644
--- a/resources/views/auth/register-confirm.blade.php
+++ b/resources/views/auth/register-confirm.blade.php
@@ -1,4 +1,4 @@
-@extends('simple-layout')
+@extends('layouts.simple')
@section('content')
diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php
index d3483c6e610..1ea712e1d0a 100644
--- a/resources/views/auth/register.blade.php
+++ b/resources/views/auth/register.blade.php
@@ -1,4 +1,4 @@
-@extends('simple-layout')
+@extends('layouts.simple')
@section('content')
@@ -8,11 +8,19 @@
{{ Str::title(trans('auth.sign_up')) }}
+ @include('auth.parts.register-message')
+