mirror of
https://github.com/BookStackApp/BookStack.git
synced 2026-02-05 08:39:55 +03:00
Compare commits
92 Commits
v25.02.1
...
drawio_ren
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a9f5e98ba9 | ||
|
|
c4839c783a | ||
|
|
a5751a584c | ||
|
|
f518a3be37 | ||
|
|
0208f066c5 | ||
|
|
2d0461b63a | ||
|
|
b913ae703d | ||
|
|
1611b0399f | ||
|
|
8d4b8ff4f3 | ||
|
|
77a88618c2 | ||
|
|
8b062d4795 | ||
|
|
717b516341 | ||
|
|
fda242d3da | ||
|
|
aac547934c | ||
|
|
5c9b90ea0d | ||
|
|
074f193e2f | ||
|
|
7f2604c8e8 | ||
|
|
b71b2a4376 | ||
|
|
68df43e5a8 | ||
|
|
c5ca865723 | ||
|
|
b862f12a50 | ||
|
|
b0f8b11054 | ||
|
|
7650ebf2f9 | ||
|
|
d9ea52522e | ||
|
|
2e718c12e1 | ||
|
|
a43a1832f5 | ||
|
|
c4f7368c1c | ||
|
|
2a32475541 | ||
|
|
1243108e0f | ||
|
|
3280919370 | ||
|
|
d149b809b1 | ||
|
|
eb47e11916 | ||
|
|
9d6bc1ad4d | ||
|
|
30bf0ce632 | ||
|
|
b64c9b31d5 | ||
|
|
f9dbbe5d70 | ||
|
|
05f7f4cb17 | ||
|
|
454b152b95 | ||
|
|
b29fe5c46d | ||
|
|
131ac29df4 | ||
|
|
3a9d18a6cd | ||
|
|
59e2c5e52a | ||
|
|
d29b14ebfd | ||
|
|
cdd446ac73 | ||
|
|
1dd1024eba | ||
|
|
752cfe2f67 | ||
|
|
25baaa8189 | ||
|
|
d2d0331782 | ||
|
|
8121418e18 | ||
|
|
5ab31a8191 | ||
|
|
0e69ab1938 | ||
|
|
058007109e | ||
|
|
32b29fcdfc | ||
|
|
8f92b6f21b | ||
|
|
62f78f1c6d | ||
|
|
f8c0aaff03 | ||
|
|
a27df485bb | ||
|
|
3e99ce4098 | ||
|
|
ce1e20501c | ||
|
|
295532fa7a | ||
|
|
642ba668b1 | ||
|
|
4f36cdd757 | ||
|
|
8821844c4a | ||
|
|
1262083fcf | ||
|
|
c82fa33210 | ||
|
|
15c79c38db | ||
|
|
e7dcc2dcdf | ||
|
|
099f6104d0 | ||
|
|
8bdf948743 | ||
|
|
e8f44186a8 | ||
|
|
ecda4e1d6f | ||
|
|
f656a82fe7 | ||
|
|
5bfba281fc | ||
|
|
18ede9bbd3 | ||
|
|
2e7544a865 | ||
|
|
5e3c3ad634 | ||
|
|
add238fe9f | ||
|
|
8d159f77e4 | ||
|
|
fa566f156a | ||
|
|
78a0a2f519 | ||
|
|
42cbd6adef | ||
|
|
6117349893 | ||
|
|
1256320c72 | ||
|
|
1ba0d26fdd | ||
|
|
802f69cf35 | ||
|
|
bb44334224 | ||
|
|
9bfcadd95f | ||
|
|
62c8eb3357 | ||
|
|
c03e44124a | ||
|
|
5c6671b3bf | ||
|
|
abe7467ae5 | ||
|
|
da82e70ca3 |
1
.github/ISSUE_TEMPLATE/support_request.yml
vendored
1
.github/ISSUE_TEMPLATE/support_request.yml
vendored
@@ -42,6 +42,7 @@ body:
|
||||
label: Log Content
|
||||
description: If the issue has produced an error, provide any [BookStack or server log](https://www.bookstackapp.com/docs/admin/debugging/) content below.
|
||||
placeholder: Be sure to remove any confidential details in your logs
|
||||
render: text
|
||||
validations:
|
||||
required: false
|
||||
- type: textarea
|
||||
|
||||
9
.github/ISSUE_TEMPLATE/z_blank_request.yml
vendored
Normal file
9
.github/ISSUE_TEMPLATE/z_blank_request.yml
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
name: Blank Request (Maintainers Only)
|
||||
description: For maintainers only - Start a blank request
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: "**This blank request option is only for existing official maintainers of the project!** Please instead use a different request option. If you use this your issue will be closed off."
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Description
|
||||
11
.github/translators.txt
vendored
11
.github/translators.txt
vendored
@@ -478,3 +478,14 @@ Alexandar Cavdarovski (ace.200112) :: Swedish
|
||||
Onur Oskay (o.oskay) :: Turkish
|
||||
Sébastien Merveille (SebastienMerv) :: French
|
||||
Maxim Kouznetsov (masya.work) :: Hebrew
|
||||
neodvisnost :: Slovenian
|
||||
Soubi Agatsuma (bisouya) :: Hebrew
|
||||
Ilya Shaulov (ishaulov) :: Russian
|
||||
Konstantin Bobkov (b.konstantv) :: Russian
|
||||
Ruben Sutter (rubensutter) :: German
|
||||
jellium :: French
|
||||
Qxlkdr :: Swedish
|
||||
Hari (muhhari) :: Indonesian
|
||||
仙君御 (xjy) :: Chinese Simplified
|
||||
TapioM :: Finnish
|
||||
lingb58 :: Chinese Traditional
|
||||
|
||||
@@ -11,6 +11,7 @@ use BookStack\Exceptions\UserRegistrationException;
|
||||
use BookStack\Facades\Theme;
|
||||
use BookStack\Http\HttpRequestService;
|
||||
use BookStack\Theming\ThemeEvents;
|
||||
use BookStack\Uploads\UserAvatars;
|
||||
use BookStack\Users\Models\User;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use League\OAuth2\Client\OptionProvider\HttpBasicAuthOptionProvider;
|
||||
@@ -26,7 +27,8 @@ class OidcService
|
||||
protected RegistrationService $registrationService,
|
||||
protected LoginService $loginService,
|
||||
protected HttpRequestService $http,
|
||||
protected GroupSyncService $groupService
|
||||
protected GroupSyncService $groupService,
|
||||
protected UserAvatars $userAvatars
|
||||
) {
|
||||
}
|
||||
|
||||
@@ -220,6 +222,10 @@ class OidcService
|
||||
throw new OidcException($exception->getMessage());
|
||||
}
|
||||
|
||||
if ($this->config()['fetch_avatar'] && !$user->avatar()->exists() && $userDetails->picture) {
|
||||
$this->userAvatars->assignToUserFromUrl($user, $userDetails->picture);
|
||||
}
|
||||
|
||||
if ($this->shouldSyncGroups()) {
|
||||
$detachExisting = $this->config()['remove_from_groups'];
|
||||
$this->groupService->syncUserWithFoundGroups($user, $userDetails->groups ?? [], $detachExisting);
|
||||
|
||||
@@ -11,6 +11,7 @@ class OidcUserDetails
|
||||
public ?string $email = null,
|
||||
public ?string $name = null,
|
||||
public ?array $groups = null,
|
||||
public ?string $picture = null,
|
||||
) {
|
||||
}
|
||||
|
||||
@@ -40,15 +41,16 @@ class OidcUserDetails
|
||||
$this->email = $claims->getClaim('email') ?? $this->email;
|
||||
$this->name = static::getUserDisplayName($displayNameClaims, $claims) ?? $this->name;
|
||||
$this->groups = static::getUserGroups($groupsClaim, $claims) ?? $this->groups;
|
||||
$this->picture = static::getPicture($claims) ?: $this->picture;
|
||||
}
|
||||
|
||||
protected static function getUserDisplayName(string $displayNameClaims, ProvidesClaims $token): string
|
||||
protected static function getUserDisplayName(string $displayNameClaims, ProvidesClaims $claims): string
|
||||
{
|
||||
$displayNameClaimParts = explode('|', $displayNameClaims);
|
||||
|
||||
$displayName = [];
|
||||
foreach ($displayNameClaimParts as $claim) {
|
||||
$component = $token->getClaim(trim($claim)) ?? '';
|
||||
$component = $claims->getClaim(trim($claim)) ?? '';
|
||||
if ($component !== '') {
|
||||
$displayName[] = $component;
|
||||
}
|
||||
@@ -57,13 +59,13 @@ class OidcUserDetails
|
||||
return implode(' ', $displayName);
|
||||
}
|
||||
|
||||
protected static function getUserGroups(string $groupsClaim, ProvidesClaims $token): ?array
|
||||
protected static function getUserGroups(string $groupsClaim, ProvidesClaims $claims): ?array
|
||||
{
|
||||
if (empty($groupsClaim)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
$groupsList = Arr::get($token->getAllClaims(), $groupsClaim);
|
||||
$groupsList = Arr::get($claims->getAllClaims(), $groupsClaim);
|
||||
if (!is_array($groupsList)) {
|
||||
return null;
|
||||
}
|
||||
@@ -72,4 +74,14 @@ class OidcUserDetails
|
||||
return is_string($val);
|
||||
}));
|
||||
}
|
||||
|
||||
protected static function getPicture(ProvidesClaims $claims): ?string
|
||||
{
|
||||
$picture = $claims->getClaim('picture');
|
||||
if (is_string($picture) && str_starts_with($picture, 'http')) {
|
||||
return $picture;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ namespace BookStack\Activity;
|
||||
|
||||
use BookStack\Activity\Models\Comment;
|
||||
use BookStack\Entities\Models\Entity;
|
||||
use BookStack\Exceptions\NotifyException;
|
||||
use BookStack\Exceptions\PrettyException;
|
||||
use BookStack\Facades\Activity as ActivityService;
|
||||
use BookStack\Util\HtmlDescriptionFilter;
|
||||
|
||||
@@ -20,7 +22,7 @@ class CommentRepo
|
||||
/**
|
||||
* Create a new comment on an entity.
|
||||
*/
|
||||
public function create(Entity $entity, string $html, ?int $parent_id): Comment
|
||||
public function create(Entity $entity, string $html, ?int $parentId, string $contentRef): Comment
|
||||
{
|
||||
$userId = user()->id;
|
||||
$comment = new Comment();
|
||||
@@ -29,7 +31,8 @@ class CommentRepo
|
||||
$comment->created_by = $userId;
|
||||
$comment->updated_by = $userId;
|
||||
$comment->local_id = $this->getNextLocalId($entity);
|
||||
$comment->parent_id = $parent_id;
|
||||
$comment->parent_id = $parentId;
|
||||
$comment->content_ref = preg_match('/^bkmrk-(.*?):\d+:(\d*-\d*)?$/', $contentRef) === 1 ? $contentRef : '';
|
||||
|
||||
$entity->comments()->save($comment);
|
||||
ActivityService::add(ActivityType::COMMENT_CREATE, $comment);
|
||||
@@ -52,6 +55,41 @@ class CommentRepo
|
||||
return $comment;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Archive an existing comment.
|
||||
*/
|
||||
public function archive(Comment $comment): Comment
|
||||
{
|
||||
if ($comment->parent_id) {
|
||||
throw new NotifyException('Only top-level comments can be archived.', '/', 400);
|
||||
}
|
||||
|
||||
$comment->archived = true;
|
||||
$comment->save();
|
||||
|
||||
ActivityService::add(ActivityType::COMMENT_UPDATE, $comment);
|
||||
|
||||
return $comment;
|
||||
}
|
||||
|
||||
/**
|
||||
* Un-archive an existing comment.
|
||||
*/
|
||||
public function unarchive(Comment $comment): Comment
|
||||
{
|
||||
if ($comment->parent_id) {
|
||||
throw new NotifyException('Only top-level comments can be un-archived.', '/', 400);
|
||||
}
|
||||
|
||||
$comment->archived = false;
|
||||
$comment->save();
|
||||
|
||||
ActivityService::add(ActivityType::COMMENT_UPDATE, $comment);
|
||||
|
||||
return $comment;
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a comment from the system.
|
||||
*/
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
namespace BookStack\Activity\Controllers;
|
||||
|
||||
use BookStack\Activity\CommentRepo;
|
||||
use BookStack\Activity\Tools\CommentTree;
|
||||
use BookStack\Activity\Tools\CommentTreeNode;
|
||||
use BookStack\Entities\Queries\PageQueries;
|
||||
use BookStack\Http\Controller;
|
||||
use Illuminate\Http\Request;
|
||||
@@ -26,6 +28,7 @@ class CommentController extends Controller
|
||||
$input = $this->validate($request, [
|
||||
'html' => ['required', 'string'],
|
||||
'parent_id' => ['nullable', 'integer'],
|
||||
'content_ref' => ['string'],
|
||||
]);
|
||||
|
||||
$page = $this->pageQueries->findVisibleById($pageId);
|
||||
@@ -40,14 +43,12 @@ class CommentController extends Controller
|
||||
|
||||
// Create a new comment.
|
||||
$this->checkPermission('comment-create-all');
|
||||
$comment = $this->commentRepo->create($page, $input['html'], $input['parent_id'] ?? null);
|
||||
$contentRef = $input['content_ref'] ?? '';
|
||||
$comment = $this->commentRepo->create($page, $input['html'], $input['parent_id'] ?? null, $contentRef);
|
||||
|
||||
return view('comments.comment-branch', [
|
||||
'readOnly' => false,
|
||||
'branch' => [
|
||||
'comment' => $comment,
|
||||
'children' => [],
|
||||
]
|
||||
'branch' => new CommentTreeNode($comment, 0, []),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -74,6 +75,46 @@ class CommentController extends Controller
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Mark a comment as archived.
|
||||
*/
|
||||
public function archive(int $id)
|
||||
{
|
||||
$comment = $this->commentRepo->getById($id);
|
||||
$this->checkOwnablePermission('page-view', $comment->entity);
|
||||
if (!userCan('comment-update', $comment) && !userCan('comment-delete', $comment)) {
|
||||
$this->showPermissionError();
|
||||
}
|
||||
|
||||
$this->commentRepo->archive($comment);
|
||||
|
||||
$tree = new CommentTree($comment->entity);
|
||||
return view('comments.comment-branch', [
|
||||
'readOnly' => false,
|
||||
'branch' => $tree->getCommentNodeForId($id),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Unmark a comment as archived.
|
||||
*/
|
||||
public function unarchive(int $id)
|
||||
{
|
||||
$comment = $this->commentRepo->getById($id);
|
||||
$this->checkOwnablePermission('page-view', $comment->entity);
|
||||
if (!userCan('comment-update', $comment) && !userCan('comment-delete', $comment)) {
|
||||
$this->showPermissionError();
|
||||
}
|
||||
|
||||
$this->commentRepo->unarchive($comment);
|
||||
|
||||
$tree = new CommentTree($comment->entity);
|
||||
return view('comments.comment-branch', [
|
||||
'readOnly' => false,
|
||||
'branch' => $tree->getCommentNodeForId($id),
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete a comment from the system.
|
||||
*/
|
||||
|
||||
@@ -19,6 +19,8 @@ use Illuminate\Database\Eloquent\Relations\MorphTo;
|
||||
* @property int $entity_id
|
||||
* @property int $created_by
|
||||
* @property int $updated_by
|
||||
* @property string $content_ref
|
||||
* @property bool $archived
|
||||
*/
|
||||
class Comment extends Model implements Loggable
|
||||
{
|
||||
|
||||
@@ -9,7 +9,7 @@ class CommentTree
|
||||
{
|
||||
/**
|
||||
* The built nested tree structure array.
|
||||
* @var array{comment: Comment, depth: int, children: array}[]
|
||||
* @var CommentTreeNode[]
|
||||
*/
|
||||
protected array $tree;
|
||||
protected array $comments;
|
||||
@@ -28,7 +28,7 @@ class CommentTree
|
||||
|
||||
public function empty(): bool
|
||||
{
|
||||
return count($this->tree) === 0;
|
||||
return count($this->getActive()) === 0;
|
||||
}
|
||||
|
||||
public function count(): int
|
||||
@@ -36,9 +36,35 @@ class CommentTree
|
||||
return count($this->comments);
|
||||
}
|
||||
|
||||
public function get(): array
|
||||
public function getActive(): array
|
||||
{
|
||||
return $this->tree;
|
||||
return array_filter($this->tree, fn (CommentTreeNode $node) => !$node->comment->archived);
|
||||
}
|
||||
|
||||
public function activeThreadCount(): int
|
||||
{
|
||||
return count($this->getActive());
|
||||
}
|
||||
|
||||
public function getArchived(): array
|
||||
{
|
||||
return array_filter($this->tree, fn (CommentTreeNode $node) => $node->comment->archived);
|
||||
}
|
||||
|
||||
public function archivedThreadCount(): int
|
||||
{
|
||||
return count($this->getArchived());
|
||||
}
|
||||
|
||||
public function getCommentNodeForId(int $commentId): ?CommentTreeNode
|
||||
{
|
||||
foreach ($this->tree as $node) {
|
||||
if ($node->comment->id === $commentId) {
|
||||
return $node;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
public function canUpdateAny(): bool
|
||||
@@ -54,6 +80,7 @@ class CommentTree
|
||||
|
||||
/**
|
||||
* @param Comment[] $comments
|
||||
* @return CommentTreeNode[]
|
||||
*/
|
||||
protected function createTree(array $comments): array
|
||||
{
|
||||
@@ -77,26 +104,22 @@ class CommentTree
|
||||
|
||||
$tree = [];
|
||||
foreach ($childMap[0] ?? [] as $childId) {
|
||||
$tree[] = $this->createTreeForId($childId, 0, $byId, $childMap);
|
||||
$tree[] = $this->createTreeNodeForId($childId, 0, $byId, $childMap);
|
||||
}
|
||||
|
||||
return $tree;
|
||||
}
|
||||
|
||||
protected function createTreeForId(int $id, int $depth, array &$byId, array &$childMap): array
|
||||
protected function createTreeNodeForId(int $id, int $depth, array &$byId, array &$childMap): CommentTreeNode
|
||||
{
|
||||
$childIds = $childMap[$id] ?? [];
|
||||
$children = [];
|
||||
|
||||
foreach ($childIds as $childId) {
|
||||
$children[] = $this->createTreeForId($childId, $depth + 1, $byId, $childMap);
|
||||
$children[] = $this->createTreeNodeForId($childId, $depth + 1, $byId, $childMap);
|
||||
}
|
||||
|
||||
return [
|
||||
'comment' => $byId[$id],
|
||||
'depth' => $depth,
|
||||
'children' => $children,
|
||||
];
|
||||
return new CommentTreeNode($byId[$id], $depth, $children);
|
||||
}
|
||||
|
||||
protected function loadComments(): array
|
||||
|
||||
23
app/Activity/Tools/CommentTreeNode.php
Normal file
23
app/Activity/Tools/CommentTreeNode.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
namespace BookStack\Activity\Tools;
|
||||
|
||||
use BookStack\Activity\Models\Comment;
|
||||
|
||||
class CommentTreeNode
|
||||
{
|
||||
public Comment $comment;
|
||||
public int $depth;
|
||||
|
||||
/**
|
||||
* @var CommentTreeNode[]
|
||||
*/
|
||||
public array $children;
|
||||
|
||||
public function __construct(Comment $comment, int $depth, array $children)
|
||||
{
|
||||
$this->comment = $comment;
|
||||
$this->depth = $depth;
|
||||
$this->children = $children;
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace BookStack\Api;
|
||||
|
||||
use BookStack\App\AppVersion;
|
||||
use BookStack\Http\ApiController;
|
||||
use Exception;
|
||||
use Illuminate\Contracts\Container\BindingResolutionException;
|
||||
@@ -25,7 +26,7 @@ class ApiDocsGenerator
|
||||
*/
|
||||
public static function generateConsideringCache(): Collection
|
||||
{
|
||||
$appVersion = trim(file_get_contents(base_path('version')));
|
||||
$appVersion = AppVersion::get();
|
||||
$cacheKey = 'api-docs::' . $appVersion;
|
||||
$isProduction = config('app.env') === 'production';
|
||||
$cacheVal = $isProduction ? Cache::get($cacheKey) : null;
|
||||
|
||||
24
app/App/AppVersion.php
Normal file
24
app/App/AppVersion.php
Normal file
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace BookStack\App;
|
||||
|
||||
class AppVersion
|
||||
{
|
||||
protected static string $version = '';
|
||||
|
||||
/**
|
||||
* Get the application's version number from its top-level `version` text file.
|
||||
*/
|
||||
public static function get(): string
|
||||
{
|
||||
if (!empty(static::$version)) {
|
||||
return static::$version;
|
||||
}
|
||||
|
||||
$versionFile = base_path('version');
|
||||
$version = trim(file_get_contents($versionFile));
|
||||
static::$version = $version;
|
||||
|
||||
return $version;
|
||||
}
|
||||
}
|
||||
31
app/App/SystemApiController.php
Normal file
31
app/App/SystemApiController.php
Normal file
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace BookStack\App;
|
||||
|
||||
use BookStack\Http\ApiController;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
|
||||
class SystemApiController extends ApiController
|
||||
{
|
||||
/**
|
||||
* Read details regarding the BookStack instance.
|
||||
* Some details may be null where not set, like the app logo for example.
|
||||
*/
|
||||
public function read(): JsonResponse
|
||||
{
|
||||
$logoSetting = setting('app-logo', '');
|
||||
if ($logoSetting === 'none') {
|
||||
$logo = null;
|
||||
} else {
|
||||
$logo = $logoSetting ? url($logoSetting) : url('/logo.png');
|
||||
}
|
||||
|
||||
return response()->json([
|
||||
'version' => AppVersion::get(),
|
||||
'instance_id' => setting('instance-id'),
|
||||
'app_name' => setting('app-name'),
|
||||
'app_logo' => $logo,
|
||||
'base_url' => url('/'),
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
|
||||
use BookStack\App\AppVersion;
|
||||
use BookStack\App\Model;
|
||||
use BookStack\Facades\Theme;
|
||||
use BookStack\Permissions\PermissionApplicator;
|
||||
@@ -13,12 +14,7 @@ use BookStack\Users\Models\User;
|
||||
*/
|
||||
function versioned_asset(string $file = ''): string
|
||||
{
|
||||
static $version = null;
|
||||
|
||||
if (is_null($version)) {
|
||||
$versionFile = base_path('version');
|
||||
$version = trim(file_get_contents($versionFile));
|
||||
}
|
||||
$version = AppVersion::get();
|
||||
|
||||
$additional = '';
|
||||
if (config('app.env') === 'development') {
|
||||
|
||||
@@ -32,9 +32,9 @@ return [
|
||||
'local' => [
|
||||
'driver' => 'local',
|
||||
'root' => public_path(),
|
||||
'visibility' => 'public',
|
||||
'serve' => false,
|
||||
'throw' => true,
|
||||
'directory_visibility' => 'public',
|
||||
],
|
||||
|
||||
'local_secure_attachments' => [
|
||||
@@ -47,7 +47,6 @@ return [
|
||||
'local_secure_images' => [
|
||||
'driver' => 'local',
|
||||
'root' => storage_path('uploads/images/'),
|
||||
'visibility' => 'public',
|
||||
'serve' => false,
|
||||
'throw' => true,
|
||||
],
|
||||
|
||||
@@ -47,6 +47,12 @@ return [
|
||||
// Multiple values can be provided comma seperated.
|
||||
'additional_scopes' => env('OIDC_ADDITIONAL_SCOPES', null),
|
||||
|
||||
// Enable fetching of the user's avatar from the 'picture' claim on login.
|
||||
// Will only be fetched if the user doesn't already have an avatar image assigned.
|
||||
// This can be a security risk due to performing server-side fetching (with up to 3 redirects) of
|
||||
// data from external URLs. Only enable if you trust the OIDC auth provider to provide safe URLs for user images.
|
||||
'fetch_avatar' => env('OIDC_FETCH_AVATAR', false),
|
||||
|
||||
// Group sync options
|
||||
// Enable syncing, upon login, of OIDC groups to BookStack roles
|
||||
'user_to_groups' => env('OIDC_USER_TO_GROUPS', false),
|
||||
|
||||
@@ -17,6 +17,7 @@ use BookStack\Entities\Tools\PageContent;
|
||||
use BookStack\Entities\Tools\PageEditActivity;
|
||||
use BookStack\Entities\Tools\PageEditorData;
|
||||
use BookStack\Exceptions\NotFoundException;
|
||||
use BookStack\Exceptions\NotifyException;
|
||||
use BookStack\Exceptions\PermissionsException;
|
||||
use BookStack\Http\Controller;
|
||||
use BookStack\References\ReferenceFetcher;
|
||||
@@ -196,7 +197,7 @@ class PageController extends Controller
|
||||
public function edit(Request $request, string $bookSlug, string $pageSlug)
|
||||
{
|
||||
$page = $this->queries->findVisibleBySlugsOrFail($bookSlug, $pageSlug);
|
||||
$this->checkOwnablePermission('page-update', $page);
|
||||
$this->checkOwnablePermission('page-update', $page, $page->getUrl());
|
||||
|
||||
$editorData = new PageEditorData($page, $this->entityQueries, $request->query('editor', ''));
|
||||
if ($editorData->getWarnings()) {
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace BookStack\Exceptions;
|
||||
|
||||
use BookStack\App\AppVersion;
|
||||
use Illuminate\Contracts\Foundation\ExceptionRenderer;
|
||||
|
||||
class BookStackExceptionHandlerPage implements ExceptionRenderer
|
||||
@@ -30,9 +31,7 @@ class BookStackExceptionHandlerPage implements ExceptionRenderer
|
||||
return [
|
||||
'PHP Version' => phpversion(),
|
||||
'BookStack Version' => $this->safeReturn(function () {
|
||||
$versionFile = base_path('version');
|
||||
|
||||
return trim(file_get_contents($versionFile));
|
||||
return AppVersion::get();
|
||||
}, 'unknown'),
|
||||
'Theme Configured' => $this->safeReturn(function () {
|
||||
return config('view.theme');
|
||||
|
||||
7
app/Exceptions/DrawioPngReaderException.php
Normal file
7
app/Exceptions/DrawioPngReaderException.php
Normal file
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
namespace BookStack\Exceptions;
|
||||
|
||||
class DrawioPngReaderException extends \Exception
|
||||
{
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace BookStack\Exports\ZipExports;
|
||||
|
||||
use BookStack\App\AppVersion;
|
||||
use BookStack\Entities\Models\Book;
|
||||
use BookStack\Entities\Models\Chapter;
|
||||
use BookStack\Entities\Models\Page;
|
||||
@@ -70,7 +71,7 @@ class ZipExportBuilder
|
||||
$this->data['exported_at'] = date(DATE_ATOM);
|
||||
$this->data['instance'] = [
|
||||
'id' => setting('instance-id', ''),
|
||||
'version' => trim(file_get_contents(base_path('version'))),
|
||||
'version' => AppVersion::get(),
|
||||
];
|
||||
|
||||
$zipFile = tempnam(sys_get_temp_dir(), 'bszip-');
|
||||
|
||||
@@ -49,13 +49,13 @@ abstract class Controller extends BaseController
|
||||
* On a permission error redirect to home and display.
|
||||
* the error as a notification.
|
||||
*
|
||||
* @return never
|
||||
* @throws NotifyException
|
||||
*/
|
||||
protected function showPermissionError()
|
||||
protected function showPermissionError(string $redirectLocation = '/'): never
|
||||
{
|
||||
$message = request()->wantsJson() ? trans('errors.permissionJson') : trans('errors.permission');
|
||||
|
||||
throw new NotifyException($message, '/', 403);
|
||||
throw new NotifyException($message, $redirectLocation, 403);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -81,10 +81,10 @@ abstract class Controller extends BaseController
|
||||
/**
|
||||
* Check the current user's permissions against an ownable item otherwise throw an exception.
|
||||
*/
|
||||
protected function checkOwnablePermission(string $permission, Model $ownable): void
|
||||
protected function checkOwnablePermission(string $permission, Model $ownable, string $redirectLocation = '/'): void
|
||||
{
|
||||
if (!userCan($permission, $ownable)) {
|
||||
$this->showPermissionError();
|
||||
$this->showPermissionError($redirectLocation);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -163,7 +163,7 @@ abstract class Controller extends BaseController
|
||||
*/
|
||||
protected function getImageValidationRules(): array
|
||||
{
|
||||
return ['image_extension', 'mimes:jpeg,png,gif,webp', 'max:' . (config('app.upload_limit') * 1000)];
|
||||
return ['image_extension', 'mimes:jpeg,png,gif,webp,avif', 'max:' . (config('app.upload_limit') * 1000)];
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -160,7 +160,9 @@ class SearchIndex
|
||||
/** @var DOMNode $child */
|
||||
foreach ($doc->getBodyChildren() as $child) {
|
||||
$nodeName = $child->nodeName;
|
||||
$termCounts = $this->textToTermCountMap(trim($child->textContent));
|
||||
$text = trim($child->textContent);
|
||||
$text = str_replace("\u{00A0}", ' ', $text);
|
||||
$termCounts = $this->textToTermCountMap($text);
|
||||
foreach ($termCounts as $term => $count) {
|
||||
$scoreChange = $count * ($elementScoreAdjustmentMap[$nodeName] ?? 1);
|
||||
$scoresByTerm[$term] = ($scoresByTerm[$term] ?? 0) + $scoreChange;
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace BookStack\Settings;
|
||||
|
||||
use BookStack\Activity\ActivityType;
|
||||
use BookStack\App\AppVersion;
|
||||
use BookStack\Entities\Tools\TrashCan;
|
||||
use BookStack\Http\Controller;
|
||||
use BookStack\References\ReferenceStore;
|
||||
@@ -19,14 +20,11 @@ class MaintenanceController extends Controller
|
||||
$this->checkPermission('settings-manage');
|
||||
$this->setPageTitle(trans('settings.maint'));
|
||||
|
||||
// Get application version
|
||||
$version = trim(file_get_contents(base_path('version')));
|
||||
|
||||
// Recycle bin details
|
||||
$recycleStats = $trashCan->getTrashedCounts();
|
||||
|
||||
return view('settings.maintenance', [
|
||||
'version' => $version,
|
||||
'version' => AppVersion::get(),
|
||||
'recycleStats' => $recycleStats,
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
namespace BookStack\Settings;
|
||||
|
||||
use BookStack\Activity\ActivityType;
|
||||
use BookStack\App\AppVersion;
|
||||
use BookStack\Http\Controller;
|
||||
use BookStack\Users\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
@@ -26,12 +27,9 @@ class SettingController extends Controller
|
||||
$this->checkPermission('settings-manage');
|
||||
$this->setPageTitle(trans('settings.settings'));
|
||||
|
||||
// Get application version
|
||||
$version = trim(file_get_contents(base_path('version')));
|
||||
|
||||
return view('settings.categories.' . $category, [
|
||||
'category' => $category,
|
||||
'version' => $version,
|
||||
'version' => AppVersion::get(),
|
||||
'guestUser' => User::getGuest(),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace BookStack\Sorting;
|
||||
|
||||
use voku\helper\ASCII;
|
||||
use BookStack\Entities\Models\Chapter;
|
||||
use BookStack\Entities\Models\Entity;
|
||||
|
||||
@@ -13,12 +14,12 @@ class SortSetOperationComparisons
|
||||
{
|
||||
public static function nameAsc(Entity $a, Entity $b): int
|
||||
{
|
||||
return strtolower($a->name) <=> strtolower($b->name);
|
||||
return strtolower(ASCII::to_transliterate($a->name, null)) <=> strtolower(ASCII::to_transliterate($b->name, null));
|
||||
}
|
||||
|
||||
public static function nameDesc(Entity $a, Entity $b): int
|
||||
{
|
||||
return strtolower($b->name) <=> strtolower($a->name);
|
||||
return strtolower(ASCII::to_transliterate($b->name, null)) <=> strtolower(ASCII::to_transliterate($a->name, null));
|
||||
}
|
||||
|
||||
public static function nameNumericAsc(Entity $a, Entity $b): int
|
||||
|
||||
122
app/Uploads/DrawioPngReader.php
Normal file
122
app/Uploads/DrawioPngReader.php
Normal file
@@ -0,0 +1,122 @@
|
||||
<?php
|
||||
|
||||
namespace BookStack\Uploads;
|
||||
|
||||
use BookStack\Exceptions\DrawioPngReaderException;
|
||||
|
||||
/**
|
||||
* Reads the PNG file format: https://www.w3.org/TR/2003/REC-PNG-20031110/
|
||||
* So that it can extract embedded drawing data for alternative use.
|
||||
*/
|
||||
class DrawioPngReader
|
||||
{
|
||||
/**
|
||||
* @param resource $fileStream
|
||||
*/
|
||||
public function __construct(
|
||||
protected $fileStream
|
||||
) {
|
||||
}
|
||||
|
||||
/**
|
||||
* @throws DrawioPngReaderException
|
||||
*/
|
||||
public function extractDrawing(): string
|
||||
{
|
||||
$signature = fread($this->fileStream, 8);
|
||||
$pngSignature = "\x89\x50\x4E\x47\x0D\x0A\x1A\x0A";
|
||||
if ($signature !== $pngSignature) {
|
||||
throw new DrawioPngReaderException('File does not appear to be a valid PNG file');
|
||||
}
|
||||
|
||||
$offset = 8;
|
||||
$searching = true;
|
||||
|
||||
while ($searching) {
|
||||
fseek($this->fileStream, $offset);
|
||||
|
||||
$lengthBytes = $this->readData(4);
|
||||
$chunkTypeBytes = $this->readData(4);
|
||||
$length = unpack('Nvalue', $lengthBytes)['value'];
|
||||
|
||||
if ($chunkTypeBytes === 'tEXt') {
|
||||
fseek($this->fileStream, $offset + 8);
|
||||
$data = $this->readData($length);
|
||||
$crc = $this->readData(4);
|
||||
$drawingData = $this->readTextForDrawing($data);
|
||||
if ($drawingData !== null) {
|
||||
$crcResult = $this->calculateCrc($chunkTypeBytes . $data);
|
||||
if ($crc !== $crcResult) {
|
||||
throw new DrawioPngReaderException('Drawing data withing PNG file appears to be corrupted');
|
||||
}
|
||||
return $drawingData;
|
||||
}
|
||||
} else if ($chunkTypeBytes === 'IEND') {
|
||||
$searching = false;
|
||||
}
|
||||
|
||||
$offset += 12 + $length; // 12 = length + type + crc bytes
|
||||
}
|
||||
|
||||
throw new DrawioPngReaderException('Unable to find drawing data within PNG file');
|
||||
}
|
||||
|
||||
protected function readTextForDrawing(string $data): ?string
|
||||
{
|
||||
// Check the keyword is mxfile to ensure we're getting the right data
|
||||
if (!str_starts_with($data, "mxfile\u{0}")) {
|
||||
return null;
|
||||
}
|
||||
|
||||
// Extract & cleanup the drawing text
|
||||
$drawingText = substr($data, 7);
|
||||
return urldecode($drawingText);
|
||||
}
|
||||
|
||||
protected function readData(int $length): string
|
||||
{
|
||||
$bytes = fread($this->fileStream, $length);
|
||||
if ($bytes === false || strlen($bytes) < $length) {
|
||||
throw new DrawioPngReaderException('Unable to find drawing data within PNG file');
|
||||
}
|
||||
return $bytes;
|
||||
}
|
||||
|
||||
protected function getCrcTable(): array
|
||||
{
|
||||
$table = [];
|
||||
|
||||
for ($n = 0; $n < 256; $n++) {
|
||||
$c = $n;
|
||||
for ($k = 0; $k < 8; $k++) {
|
||||
if ($c & 1) {
|
||||
$c = 0xedb88320 ^ ($c >> 1);
|
||||
} else {
|
||||
$c = $c >> 1;
|
||||
}
|
||||
}
|
||||
$table[$n] = $c;
|
||||
}
|
||||
|
||||
return $table;
|
||||
}
|
||||
|
||||
/**
|
||||
* Calculate a CRC for the given bytes following:
|
||||
* https://www.w3.org/TR/2003/REC-PNG-20031110/#D-CRCAppendix
|
||||
*/
|
||||
protected function calculateCrc(string $bytes): string
|
||||
{
|
||||
$table = $this->getCrcTable();
|
||||
|
||||
$length = strlen($bytes);
|
||||
$c = 0xffffffff;
|
||||
|
||||
for ($n = 0; $n < $length; $n++) {
|
||||
$tableIndex = ($c ^ ord($bytes[$n])) & 0xff;
|
||||
$c = $table[$tableIndex] ^ ($c >> 8);
|
||||
}
|
||||
|
||||
return pack('N', $c ^ 0xffffffff);
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ use BookStack\Exceptions\ImageUploadException;
|
||||
use Exception;
|
||||
use GuzzleHttp\Psr7\Utils;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use Intervention\Image\Decoders\BinaryImageDecoder;
|
||||
use Intervention\Image\Drivers\Gd\Decoders\NativeObjectDecoder;
|
||||
use Intervention\Image\Drivers\Gd\Driver;
|
||||
@@ -93,8 +94,8 @@ class ImageResizer
|
||||
|
||||
$imageData = $disk->get($imagePath);
|
||||
|
||||
// Do not resize apng images where we're not cropping
|
||||
if ($keepRatio && $this->isApngData($image, $imageData)) {
|
||||
// Do not resize animated images where we're not cropping
|
||||
if ($keepRatio && $this->isAnimated($image, $imageData)) {
|
||||
Cache::put($thumbCacheKey, $image->path, static::THUMBNAIL_CACHE_TIME);
|
||||
|
||||
return $this->storage->getPublicUrl($image->path);
|
||||
@@ -240,15 +241,50 @@ class ImageResizer
|
||||
/**
|
||||
* Check if the given image and image data is apng.
|
||||
*/
|
||||
protected function isApngData(Image $image, string &$imageData): bool
|
||||
protected function isApngData(string &$imageData): bool
|
||||
{
|
||||
$isPng = strtolower(pathinfo($image->path, PATHINFO_EXTENSION)) === 'png';
|
||||
if (!$isPng) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$initialHeader = substr($imageData, 0, strpos($imageData, 'IDAT'));
|
||||
|
||||
return str_contains($initialHeader, 'acTL');
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the given avif image data represents an animated image.
|
||||
* This is based up the answer here: https://stackoverflow.com/a/79457313
|
||||
*/
|
||||
protected function isAnimatedAvifData(string &$imageData): bool
|
||||
{
|
||||
$stszPos = strpos($imageData, 'stsz');
|
||||
if ($stszPos === false) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Look 12 bytes after the start of 'stsz'
|
||||
$start = $stszPos + 12;
|
||||
$end = $start + 4;
|
||||
if ($end > strlen($imageData) - 1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$data = substr($imageData, $start, 4);
|
||||
$count = unpack('Nvalue', $data)['value'];
|
||||
return $count > 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if the given image is animated.
|
||||
*/
|
||||
protected function isAnimated(Image $image, string &$imageData): bool
|
||||
{
|
||||
$extension = strtolower(pathinfo($image->path, PATHINFO_EXTENSION));
|
||||
if ($extension === 'png') {
|
||||
return $this->isApngData($imageData);
|
||||
}
|
||||
|
||||
if ($extension === 'avif') {
|
||||
return $this->isAnimatedAvifData($imageData);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ use Symfony\Component\HttpFoundation\StreamedResponse;
|
||||
|
||||
class ImageService
|
||||
{
|
||||
protected static array $supportedExtensions = ['jpg', 'jpeg', 'png', 'gif', 'webp'];
|
||||
protected static array $supportedExtensions = ['jpg', 'jpeg', 'png', 'gif', 'webp', 'avif'];
|
||||
|
||||
public function __construct(
|
||||
protected ImageStorage $storage,
|
||||
|
||||
@@ -5,6 +5,9 @@ namespace BookStack\Uploads;
|
||||
use BookStack\Util\FilePathNormalizer;
|
||||
use Illuminate\Contracts\Filesystem\Filesystem;
|
||||
use Illuminate\Filesystem\FilesystemAdapter;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use League\Flysystem\UnableToSetVisibility;
|
||||
use League\Flysystem\Visibility;
|
||||
use Symfony\Component\HttpFoundation\StreamedResponse;
|
||||
|
||||
class ImageStorageDisk
|
||||
@@ -74,12 +77,19 @@ class ImageStorageDisk
|
||||
$path = $this->adjustPathForDisk($path);
|
||||
$this->filesystem->put($path, $data);
|
||||
|
||||
// Set visibility when a non-AWS-s3, s3-like storage option is in use.
|
||||
// Done since this call can break s3-like services but desired for other image stores.
|
||||
// Attempting to set ACL during above put request requires different permissions
|
||||
// hence would technically be a breaking change for actual s3 usage.
|
||||
// Set public visibility to ensure public access on S3, or that the file is accessible
|
||||
// to other processes (like web-servers) for local file storage options.
|
||||
// We avoid attempting this for (non-AWS) s3-like systems (even in a try-catch) as
|
||||
// we've always avoided setting permissions for s3-like due to potential issues,
|
||||
// with docs advising setting pre-configured permissions instead.
|
||||
// We also don't do this as the default filesystem/driver level as that can technically
|
||||
// require different ACLs for S3, and this provides us more logical control.
|
||||
if ($makePublic && !$this->isS3Like()) {
|
||||
$this->filesystem->setVisibility($path, 'public');
|
||||
try {
|
||||
$this->filesystem->setVisibility($path, Visibility::PUBLIC);
|
||||
} catch (UnableToSetVisibility $e) {
|
||||
Log::warning("Unable to set visibility for image upload with relative path: {$path}");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ namespace BookStack\Uploads;
|
||||
use BookStack\Exceptions\HttpFetchException;
|
||||
use BookStack\Http\HttpRequestService;
|
||||
use BookStack\Users\Models\User;
|
||||
use BookStack\Util\WebSafeMimeSniffer;
|
||||
use Exception;
|
||||
use GuzzleHttp\Psr7\Request;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
@@ -53,6 +54,33 @@ class UserAvatars
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Assign a new avatar image to the given user by fetching from a remote URL.
|
||||
*/
|
||||
public function assignToUserFromUrl(User $user, string $avatarUrl): void
|
||||
{
|
||||
try {
|
||||
$this->destroyAllForUser($user);
|
||||
$imageData = $this->getAvatarImageData($avatarUrl);
|
||||
|
||||
$mime = (new WebSafeMimeSniffer())->sniff($imageData);
|
||||
[$format, $type] = explode('/', $mime, 2);
|
||||
if ($format !== 'image' || !ImageService::isExtensionSupported($type)) {
|
||||
return;
|
||||
}
|
||||
|
||||
$avatar = $this->createAvatarImageFromData($user, $imageData, $type);
|
||||
$user->avatar()->associate($avatar);
|
||||
$user->save();
|
||||
} catch (Exception $e) {
|
||||
Log::error('Failed to save user avatar image from URL', [
|
||||
'exception' => $e->getMessage(),
|
||||
'url' => $avatarUrl,
|
||||
'user_id' => $user->id,
|
||||
]);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Destroy all user avatars uploaded to the given user.
|
||||
*/
|
||||
@@ -105,7 +133,7 @@ class UserAvatars
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets an image from url and returns it as a string of image data.
|
||||
* Get an image from a URL and return it as a string of image data.
|
||||
*
|
||||
* @throws HttpFetchException
|
||||
*/
|
||||
@@ -113,7 +141,19 @@ class UserAvatars
|
||||
{
|
||||
try {
|
||||
$client = $this->http->buildClient(5);
|
||||
$response = $client->sendRequest(new Request('GET', $url));
|
||||
$responseCount = 0;
|
||||
|
||||
do {
|
||||
$response = $client->sendRequest(new Request('GET', $url));
|
||||
$responseCount++;
|
||||
$isRedirect = ($response->getStatusCode() === 301 || $response->getStatusCode() === 302);
|
||||
$url = $response->getHeader('Location')[0] ?? '';
|
||||
} while ($responseCount < 3 && $isRedirect && is_string($url) && str_starts_with($url, 'http'));
|
||||
|
||||
if ($responseCount === 3) {
|
||||
throw new HttpFetchException("Failed to fetch image, max redirect limit of 3 tries reached. Last fetched URL: {$url}");
|
||||
}
|
||||
|
||||
if ($response->getStatusCode() !== 200) {
|
||||
throw new HttpFetchException(trans('errors.cannot_get_image_from_url', ['url' => $url]));
|
||||
}
|
||||
|
||||
@@ -45,6 +45,7 @@ use Illuminate\Support\Collection;
|
||||
* @property string $system_name
|
||||
* @property Collection $roles
|
||||
* @property Collection $mfaValues
|
||||
* @property ?Image $avatar
|
||||
*/
|
||||
class User extends Model implements AuthenticatableContract, CanResetPasswordContract, Loggable, Sluggable
|
||||
{
|
||||
|
||||
Binary file not shown.
911
composer.lock
generated
911
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@@ -27,6 +27,8 @@ class CommentFactory extends Factory
|
||||
'html' => $html,
|
||||
'parent_id' => null,
|
||||
'local_id' => 1,
|
||||
'content_ref' => '',
|
||||
'archived' => false,
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
Schema::table('comments', function (Blueprint $table) {
|
||||
$table->string('content_ref');
|
||||
$table->boolean('archived')->index();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('comments', function (Blueprint $table) {
|
||||
$table->dropColumn('content_ref');
|
||||
$table->dropColumn('archived');
|
||||
});
|
||||
}
|
||||
};
|
||||
7
dev/api/responses/system-read.json
Normal file
7
dev/api/responses/system-read.json
Normal file
@@ -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"
|
||||
}
|
||||
@@ -1751,13 +1751,6 @@ 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
|
||||
-----------
|
||||
magic-string
|
||||
License: MIT
|
||||
License File: node_modules/magic-string/LICENSE
|
||||
Copyright: Copyright 2018 Rich Harris
|
||||
Source: https://github.com/rich-harris/magic-string
|
||||
Link: https://github.com/rich-harris/magic-string
|
||||
-----------
|
||||
make-dir
|
||||
License: MIT
|
||||
License File: node_modules/make-dir/license
|
||||
@@ -1935,9 +1928,9 @@ Link: sindresorhus/npm-run-path
|
||||
nwsapi
|
||||
License: MIT
|
||||
License File: node_modules/nwsapi/LICENSE
|
||||
Copyright: Copyright (c) 2007-2024 Diego Perini (http://www.iport.it/)
|
||||
Copyright: Copyright (c) 2007-2025 Diego Perini (http://www.iport.it/)
|
||||
Source: git://github.com/dperini/nwsapi.git
|
||||
Link: http://javascript.nwbox.com/nwsapi/
|
||||
Link: https://javascript.nwbox.com/nwsapi/
|
||||
-----------
|
||||
object-inspect
|
||||
License: MIT
|
||||
@@ -2281,18 +2274,6 @@ Copyright: Copyright (c) 2012 James Halliday
|
||||
Source: git://github.com/browserify/resolve.git
|
||||
Link: git://github.com/browserify/resolve.git
|
||||
-----------
|
||||
rollup-plugin-dts
|
||||
License: LGPL-3.0
|
||||
Source: git+https://github.com/Swatinem/rollup-plugin-dts.git
|
||||
Link: https://github.com/Swatinem/rollup-plugin-dts#readme
|
||||
-----------
|
||||
rollup
|
||||
License: MIT
|
||||
License File: node_modules/rollup/LICENSE.md
|
||||
Copyright: Copyright (c) 2017 [these people](https://github.com/rollup/rollup/graphs/contributors)
|
||||
Source: rollup/rollup
|
||||
Link: https://rollupjs.org/
|
||||
-----------
|
||||
safe-array-concat
|
||||
License: MIT
|
||||
License File: node_modules/safe-array-concat/LICENSE
|
||||
@@ -3057,6 +3038,7 @@ Link: https://github.com/babel/babel.git
|
||||
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/regeneratorRuntime.js)
|
||||
Source: https://github.com/babel/babel.git
|
||||
Link: https://babel.dev/docs/en/next/babel-helpers
|
||||
-----------
|
||||
@@ -3357,6 +3339,12 @@ License File: node_modules/@eslint/config-array/LICENSE
|
||||
Source: git+https://github.com/eslint/rewrite.git
|
||||
Link: https://github.com/eslint/rewrite#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
|
||||
@@ -3635,13 +3623,6 @@ Copyright: Copyright (C) 2018 by Marijn Haverbeke <******@*********.******> and
|
||||
Source: https://github.com/lezer-parser/xml.git
|
||||
Link: https://github.com/lezer-parser/xml.git
|
||||
-----------
|
||||
@marijn/buildtool
|
||||
License: MIT
|
||||
License File: node_modules/@marijn/buildtool/LICENSE
|
||||
Copyright: Copyright (C) 2022 by Marijn Haverbeke <******@*********.******> and others
|
||||
Source: https://github.com/marijnh/buildtool.git
|
||||
Link: https://github.com/marijnh/buildtool.git
|
||||
-----------
|
||||
@marijn/find-cluster-break
|
||||
License: MIT
|
||||
License File: node_modules/@marijn/find-cluster-break/LICENSE
|
||||
@@ -3656,6 +3637,13 @@ 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
|
||||
@@ -3825,13 +3813,6 @@ License: MIT
|
||||
Source: https://www.github.com/DefinitelyTyped/DefinitelyTyped.git
|
||||
Link: https://www.github.com/DefinitelyTyped/DefinitelyTyped.git
|
||||
-----------
|
||||
@types/mocha
|
||||
License: MIT
|
||||
License File: node_modules/@types/mocha/LICENSE
|
||||
Copyright: Copyright (c) Microsoft Corporation.
|
||||
Source: https://github.com/DefinitelyTyped/DefinitelyTyped.git
|
||||
Link: https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/types/mocha
|
||||
-----------
|
||||
@types/node
|
||||
License: MIT
|
||||
License File: node_modules/@types/node/LICENSE
|
||||
|
||||
@@ -486,7 +486,7 @@ Link: https://github.com/ramsey/collection.git
|
||||
ramsey/uuid
|
||||
License: MIT
|
||||
License File: vendor/ramsey/uuid/LICENSE
|
||||
Copyright: Copyright (c) 2012-2023 Ben Ramsey <***@*********.***>
|
||||
Copyright: Copyright (c) 2012-2025 Ben Ramsey <***@*********.***>
|
||||
Source: https://github.com/ramsey/uuid.git
|
||||
Link: https://github.com/ramsey/uuid.git
|
||||
-----------
|
||||
|
||||
@@ -64,12 +64,12 @@ return [
|
||||
// Auth
|
||||
'auth_login' => 'تم تسجيل الدخول',
|
||||
'auth_register' => 'سجل كمستخدم جديد',
|
||||
'auth_password_reset_request' => 'طلب رابط جديد لإعادة تعيين كلمة المرور',
|
||||
'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_setup_method' => 'طريقة المصادقة متعددة العوامل المُهيأة',
|
||||
'mfa_setup_method_notification' => 'تم إعداد المصادقة متعددة العوامل بنجاح',
|
||||
'mfa_remove_method' => 'إزالة طريقة المصادقة متعددة العوامل',
|
||||
'mfa_remove_method_notification' => 'تمت إزالة المصادقة متعددة العوامل بنجاح',
|
||||
|
||||
// Settings
|
||||
'settings_update' => 'تحديث الإعدادات',
|
||||
@@ -77,12 +77,12 @@ return [
|
||||
'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 بنجاح',
|
||||
'webhook_create' => 'تم إنشاء خطاف ويب',
|
||||
'webhook_create_notification' => 'تم إنشاء خطاف ويب بنجاح',
|
||||
'webhook_update' => 'تم تحديث خطاف الويب',
|
||||
'webhook_update_notification' => 'تم تحديث خطاف الويب بنجاح',
|
||||
'webhook_delete' => 'حذف خطاف ويب',
|
||||
'webhook_delete_notification' => 'تم حذف خطاف الويب بنجاح',
|
||||
|
||||
// Imports
|
||||
'import_create' => 'تم إنشاء الاستيراد',
|
||||
@@ -94,7 +94,7 @@ return [
|
||||
|
||||
// Users
|
||||
'user_create' => 'إنشاء مستخدم',
|
||||
'user_create_notification' => 'تم انشاء الحساب',
|
||||
'user_create_notification' => 'تم إنشاء الحساب',
|
||||
'user_update' => 'المستخدم المحدث',
|
||||
'user_update_notification' => 'تم تحديث المستخدم بنجاح',
|
||||
'user_delete' => 'المستخدم المحذوف',
|
||||
@@ -102,11 +102,11 @@ return [
|
||||
|
||||
// API Tokens
|
||||
'api_token_create' => 'تم إنشاء رمز واجهة برمجة التطبيقات -API-',
|
||||
'api_token_create_notification' => 'تم إنشاء رمز الـ API بنجاح',
|
||||
'api_token_create_notification' => 'تم إنشاء واجهة برمجة التطبيقات -API- بنجاح',
|
||||
'api_token_update' => 'رمز واجهة برمجة التطبيقات المحدث',
|
||||
'api_token_update_notification' => 'تم تحديث رمز الـ API بنجاح',
|
||||
'api_token_update_notification' => 'تم تحديث رمز واجهة برمجة التطبيقات -API- بنجاح',
|
||||
'api_token_delete' => 'رمز واجهة برمجة التطبيقات المحذوف',
|
||||
'api_token_delete_notification' => 'تم حذف رمز الـ API بنجاح',
|
||||
'api_token_delete_notification' => 'تم حذف رمز واجهة برمجة التطبيقات -API- بنجاح',
|
||||
|
||||
// Roles
|
||||
'role_create' => 'إنشاء صَلاحِيَة',
|
||||
@@ -136,5 +136,5 @@ return [
|
||||
'sort_rule_delete_notification' => 'تم حذف قاعدة الفرز بنجاح',
|
||||
|
||||
// Other
|
||||
'permissions_update' => 'تحديث الأذونات',
|
||||
'permissions_update' => 'تحديث الصلاحيات',
|
||||
];
|
||||
|
||||
@@ -7,26 +7,26 @@
|
||||
return [
|
||||
|
||||
'failed' => 'البيانات المعطاة لا توافق سجلاتنا.',
|
||||
'throttle' => 'تجاوزت الحد الأقصى من المحاولات. الرجاء المحاولة مرة أخرى بعد :seconds seconds.',
|
||||
'throttle' => 'تجاوزت الحد الأقصى من المحاولات. الرجاء المحاولة مرة أخرى بعد :seconds ثانية/ثواني.',
|
||||
|
||||
// Login & Register
|
||||
'sign_up' => 'إنشاء حساب',
|
||||
'log_in' => 'تسجيل الدخول',
|
||||
'log_in_with' => 'تسجيل الدخول باستخدام :socialDriver',
|
||||
'sign_up_with' => 'إنشاء حساب باستخدام :socialDriver',
|
||||
'logout' => 'تسجيل الخروج',
|
||||
'logout' => 'الخروج',
|
||||
|
||||
'name' => 'الاسم',
|
||||
'username' => 'اسم المستخدم',
|
||||
'email' => 'البريد الإلكتروني',
|
||||
'password' => 'كلمة المرور',
|
||||
'password_confirm' => 'تأكيد كلمة المرور',
|
||||
'password_hint' => 'يجب أن تحتوي كلمة المرور على 8 خانات على الأقل',
|
||||
'forgot_password' => 'نسيت كلمة المرور؟',
|
||||
'password' => 'كلمة السر',
|
||||
'password_confirm' => 'تأكيد كلمة السر',
|
||||
'password_hint' => 'يجب أن تحتوي كلمة السر على 8 خانات على الأقل',
|
||||
'forgot_password' => 'نسيت كلمة السر؟',
|
||||
'remember_me' => 'تذكرني',
|
||||
'ldap_email_hint' => 'الرجاء إدخال عنوان بريد إلكتروني لاستخدامه مع الحساب.',
|
||||
'create_account' => 'إنشاء حساب',
|
||||
'already_have_account' => 'لديك حساب بالفعل؟',
|
||||
'already_have_account' => 'لديك حساب مسبقاً؟',
|
||||
'dont_have_account' => 'ليس لديك حساب؟',
|
||||
'social_login' => 'تسجيل الدخول باستخدام حسابات التواصل الاجتماعي',
|
||||
'social_registration' => 'إنشاء حساب باستخدام حسابات التواصل الاجتماعي',
|
||||
@@ -44,14 +44,14 @@ return [
|
||||
'auto_init_start_link' => 'المتابعة مع المصادقة',
|
||||
|
||||
// Password Reset
|
||||
'reset_password' => 'استعادة كلمة المرور',
|
||||
'reset_password_send_instructions' => 'أدخل بريدك الإلكتروني بالأسفل وسيتم إرسال رسالة برابط لاستعادة كلمة المرور.',
|
||||
'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' => 'إذا لم يتم طلب استعادة كلمة المرور من قبلكم، فلا حاجة لاتخاذ أية خطوات.',
|
||||
'reset_password_sent' => 'سيتم إرسال رابط إعادة تعيين كلمة السر إلى عنوان البريد الإلكتروني هذا إذا كان موجودًا في النظام.',
|
||||
'reset_password_success' => 'تمت استعادة كلمة السر بنجاح.',
|
||||
'email_reset_subject' => 'استعد كلمة السر الخاصة بتطبيق :appName',
|
||||
'email_reset_text' => 'تم إرسال هذه الرسالة بسبب تلقينا لطلب استعادة كلمة السر الخاصة بحسابكم.',
|
||||
'email_reset_not_requested' => 'إذا لم يتم طلب استعادة كلمة السر من قبلكم، فلا حاجة لاتخاذ أية خطوات.',
|
||||
|
||||
// Email Confirmation
|
||||
'email_confirm_subject' => 'تأكيد بريدكم الإلكتروني لتطبيق :appName',
|
||||
@@ -60,7 +60,7 @@ return [
|
||||
'email_confirm_action' => 'تأكيد البريد الإلكتروني',
|
||||
'email_confirm_send_error' => 'تأكيد البريد الإلكتروني مطلوب ولكن النظام لم يستطع إرسال الرسالة. تواصل مع مشرف النظام للتأكد من إعدادات البريد.',
|
||||
'email_confirm_success' => 'تم تأكيد بريدك الإلكتروني! يمكنك الآن تسجيل الدخول باستخدام عنوان البريد الإلكتروني هذا.',
|
||||
'email_confirm_resent' => 'تمت إعادة إرسال رسالة التأكيد. الرجاء مراجعة صندوق الوارد',
|
||||
'email_confirm_resent' => 'تمت إعادة إرسال رسالة التأكيد، الرجاء مراجعة صندوق الوارد.',
|
||||
'email_confirm_thanks' => 'شكرا للتأكيد!',
|
||||
'email_confirm_thanks_desc' => 'الرجاء الانتظار لحظة بينما يتم التعامل مع التأكيد الخاص بك. إذا لم يتم إعادة توجيهك بعد 3 ثوان اضغط على الرابط "المتابعة" أدناه للمتابعة.',
|
||||
|
||||
@@ -72,24 +72,24 @@ return [
|
||||
|
||||
// User Invite
|
||||
'user_invite_email_subject' => 'تمت دعوتك للانضمام إلى صفحة الحالة الخاصة بـ :app_name!',
|
||||
'user_invite_email_greeting' => 'تم إنشاء حساب مستخدم لك على %site%.',
|
||||
'user_invite_email_text' => 'انقر على الزر أدناه لتعيين كلمة مرور الحساب والحصول على الوصول:',
|
||||
'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!',
|
||||
'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_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 Authenticer.',
|
||||
'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' => 'تأكيد وتمكين',
|
||||
@@ -98,7 +98,7 @@ return [
|
||||
'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_desc' => 'لاستخدام المصادقة المتعددة ، ستحتاج إلى تطبيق جوال كلمة السر المؤقته -TOTP- مثل جوجل أوثنتيكاتور -Google Authenticator- أو أوثي -Authy- أو مايكروسوفت أوثنتيكاتور -Microsoft Authenticator-.',
|
||||
'mfa_gen_totp_scan' => 'امسح رمز الاستجابة السريعة -QR- أدناه باستخدام تطبيق المصادقة المفضل لديك للبدء.',
|
||||
'mfa_gen_totp_verify_setup' => 'التحقق من الإعداد',
|
||||
'mfa_gen_totp_verify_setup_desc' => 'تحقق أن كل شيء يعمل عن طريق إدخال رمز تم إنشاؤه داخل تطبيق المصادقة الخاص بك في مربع الإدخال أدناه:',
|
||||
|
||||
@@ -30,6 +30,8 @@ return [
|
||||
'create' => 'إنشاء',
|
||||
'update' => 'تحديث',
|
||||
'edit' => 'تعديل',
|
||||
'archive' => 'Archive',
|
||||
'unarchive' => 'Un-Archive',
|
||||
'sort' => 'سرد',
|
||||
'move' => 'نقل',
|
||||
'copy' => 'نسخ',
|
||||
|
||||
@@ -13,7 +13,7 @@ return [
|
||||
'cancel' => 'إلغاء',
|
||||
'save' => 'حفظ',
|
||||
'close' => 'إغلاق',
|
||||
'apply' => 'Apply',
|
||||
'apply' => 'تطبيق',
|
||||
'undo' => 'تراجع',
|
||||
'redo' => 'إعادة التنفيذ',
|
||||
'left' => 'يسار',
|
||||
@@ -25,7 +25,7 @@ return [
|
||||
'width' => 'العرض',
|
||||
'height' => 'الارتفاع',
|
||||
'More' => 'المزيد',
|
||||
'select' => 'Select...',
|
||||
'select' => 'إختار...',
|
||||
|
||||
// Toolbar
|
||||
'formats' => 'التنسيقات',
|
||||
@@ -54,73 +54,73 @@ return [
|
||||
'align_left' => 'محاذاة لليسار',
|
||||
'align_center' => 'محاذاة بالمنتصف',
|
||||
'align_right' => 'مُحاذاة لليمين',
|
||||
'align_justify' => 'Justify',
|
||||
'align_justify' => 'المحاذاة',
|
||||
'list_bullet' => 'قائمة نقاط',
|
||||
'list_numbered' => 'قائمة مرقمة',
|
||||
'list_task' => 'Task list',
|
||||
'list_task' => 'قائمة المهام',
|
||||
'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',
|
||||
'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',
|
||||
'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',
|
||||
'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' => 'لصق عمود بعد',
|
||||
@@ -128,54 +128,54 @@ return [
|
||||
'cell_spacing' => 'تباعد الخلايا',
|
||||
'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',
|
||||
'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' => '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',
|
||||
'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 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',
|
||||
'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' => 'الوصف',
|
||||
];
|
||||
|
||||
@@ -248,7 +248,7 @@ return [
|
||||
'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_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
|
||||
'pages_edit_set_changelog' => 'تثبيت سجل التعديل',
|
||||
'pages_edit_enter_changelog_desc' => 'ضع وصف مختصر للتعديلات التي تمت',
|
||||
'pages_edit_enter_changelog' => 'أدخل سجل التعديل',
|
||||
@@ -392,8 +392,11 @@ return [
|
||||
'comment' => 'تعليق',
|
||||
'comments' => 'تعليقات',
|
||||
'comment_add' => 'إضافة تعليق',
|
||||
'comment_none' => 'لا توجد تعليقات لعرضها',
|
||||
'comment_placeholder' => 'ضع تعليقاً هنا',
|
||||
'comment_count' => '{0} لا توجد تعليقات|{1} تعليق واحد|{2} تعليقان[3,*] :count تعليقات',
|
||||
'comment_thread_count' => ':count تعليقات| :count تعليقات',
|
||||
'comment_archived_count' => ':count مؤرشف',
|
||||
'comment_archived_threads' => 'المواضيع المؤرشفة',
|
||||
'comment_save' => 'حفظ التعليق',
|
||||
'comment_new' => 'تعليق جديد',
|
||||
'comment_created' => 'تم التعليق :createDiff',
|
||||
@@ -402,8 +405,14 @@ return [
|
||||
'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
|
||||
@@ -455,8 +464,8 @@ return [
|
||||
'watch_detail_new' => 'ترقب الصفحات الجديدة',
|
||||
'watch_detail_updates' => 'مشاهدة الصفحات الجديدة والتحديثات',
|
||||
'watch_detail_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',
|
||||
'watch_detail_parent_book' => 'المشاهدة عبر الكتاب الرئيس',
|
||||
'watch_detail_parent_book_ignore' => 'التجاهل عبر الكتاب الرئيس',
|
||||
'watch_detail_parent_chapter' => 'المشاهدة عبر الفصل الرئيس',
|
||||
'watch_detail_parent_chapter_ignore' => 'التجاهل عبر الفصل الرئيس',
|
||||
];
|
||||
|
||||
@@ -10,13 +10,13 @@ return [
|
||||
|
||||
// Auth
|
||||
'error_user_exists_different_creds' => 'يوجد مستخدم ببيانات مختلفة مسجل بالنظام للبريد الإلكتروني :email.',
|
||||
'auth_pre_register_theme_prevention' => 'User account could not be registered for the provided details',
|
||||
'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_fail_authed' => 'فشل الوصول إلى LDAP باستخدام dn و كلمة السر المعطاة',
|
||||
'ldap_extension_not_installed' => 'لم يتم تثبيت إضافة LDAP PHP',
|
||||
'ldap_cannot_connect' => 'لا يمكن الاتصال بخادم ldap, فشل الاتصال المبدئي',
|
||||
'saml_already_logged_in' => 'تم تسجيل الدخول بالفعل',
|
||||
@@ -37,7 +37,7 @@ return [
|
||||
'social_driver_not_found' => 'لم يتم العثور على السوشيال درايفر "Social driver"',
|
||||
'social_driver_not_configured' => 'لم يتم تهيئة إعدادات حسابك الاجتماعي بشكل صحيح.',
|
||||
'invite_token_expired' => 'انتهت صلاحية رابط هذه الدعوة. يمكنك بدلاً من ذلك محاولة إعادة تعيين كلمة مرور حسابك.',
|
||||
'login_user_not_found' => 'A user for this action could not be found.',
|
||||
'login_user_not_found' => 'لم يتم العثور على مستخدم لهذا الإجراء.',
|
||||
|
||||
// System
|
||||
'path_not_writable' => 'لا يمكن الرفع إلى مسار :filePath. الرجاء التأكد من قابلية الكتابة إلى الخادم.',
|
||||
@@ -78,7 +78,7 @@ return [
|
||||
// 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',
|
||||
'users_could_not_send_invite' => 'لم يتم إنشاء المستخدم بسبب فشل إرسال بريد الدعوة',
|
||||
|
||||
// Roles
|
||||
'role_cannot_be_edited' => 'لا يمكن تعديل هذا الدور',
|
||||
@@ -106,16 +106,16 @@ return [
|
||||
'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_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.',
|
||||
'import_zip_cant_read' => 'لم أتمكن من قراءة المِلَفّ المضغوط -ZIP-.',
|
||||
'import_zip_cant_decode_data' => 'لم نتمكن من العثور على محتوى المِلَفّ المضغوط data.json وفك تشفيره.',
|
||||
'import_zip_no_data' => 'لا تتضمن بيانات المِلَفّ المضغوط أي محتوى متوقع للكتاب أو الفصل أو الصفحة.',
|
||||
'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' => 'لم يتم العثور على رمز ترخيص مميز في الطلب',
|
||||
|
||||
@@ -4,24 +4,24 @@
|
||||
*/
|
||||
return [
|
||||
|
||||
'new_comment_subject' => '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.',
|
||||
'new_comment_subject' => 'تعليق جديد على الصفحة: :pageName',
|
||||
'new_comment_intro' => 'قام أحد المستخدمين بالتعليق على صفحة في :appName:',
|
||||
'new_page_subject' => 'صفحة جديدة: :pageName',
|
||||
'new_page_intro' => 'تم إنشاء صفحة جديدة في :appName:',
|
||||
'updated_page_subject' => 'تم تحديث الصفحة: :pageName',
|
||||
'updated_page_intro' => 'تم تحديث الصفحة في :appName:',
|
||||
'updated_page_debounce' => 'لمنع تلقي عدد كبير من الإشعارات، لن يتم إرسال إشعارات إليك لفترة من الوقت لإجراء المزيد من التعديلات على هذه الصفحة بواسطة نفس المحرر.',
|
||||
|
||||
'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:',
|
||||
'detail_page_name' => 'اسم الصفحة:',
|
||||
'detail_page_path' => 'مسار الصفحة:',
|
||||
'detail_commenter' => 'المُعَلِق:',
|
||||
'detail_comment' => 'التعليق:',
|
||||
'detail_created_by' => 'أنشئ من طرف:',
|
||||
'detail_updated_by' => 'تم التحديث بواسطة:',
|
||||
|
||||
'action_view_comment' => 'View Comment',
|
||||
'action_view_page' => 'View Page',
|
||||
'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',
|
||||
'footer_reason' => 'لقد تم إرسال هذا الإشعار إليك لأن :link يغطي هذا النوع من النشاط لهذا العنصر.',
|
||||
'footer_reason_link' => 'إعدادات الإشعارات الخاصة بك',
|
||||
];
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
*/
|
||||
return [
|
||||
|
||||
'password' => 'يجب أن تتكون كلمة المرور من ستة أحرف على الأقل وأن تطابق التأكيد.',
|
||||
'password' => 'يجب أن تتكون كلمة السر من ستة أحرف على الأقل وأن تطابق التأكيد.',
|
||||
'user' => "لم يتم العثور على مستخدم بعنوان البريد الإلكتروني المعطى.",
|
||||
'token' => 'رمز إعادة تعيين كلمة المرور غير صالح لعنوان هذا البريد الإلكتروني.',
|
||||
'sent' => 'تم إرسال رابط تجديد كلمة المرور إلى بريدكم الإلكتروني!',
|
||||
'reset' => 'تم تجديد كلمة المرور الخاصة بكم!',
|
||||
'token' => 'رمز إعادة تعيين كلمة السر غير صالح لعنوان هذا البريد الإلكتروني.',
|
||||
'sent' => 'تم إرسال رابط تجديد كلمة السر إلى بريدكم الإلكتروني!',
|
||||
'reset' => 'تم تجديد كلمة السر الخاصة بكم!',
|
||||
|
||||
];
|
||||
|
||||
@@ -5,47 +5,47 @@
|
||||
*/
|
||||
|
||||
return [
|
||||
'my_account' => 'My Account',
|
||||
'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.',
|
||||
'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' => '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_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.',
|
||||
'notifications' => 'إعدادات الإشعارات',
|
||||
'notifications_desc' => 'التحكم في إشعارات البريد الإلكتروني الذي تتلقاها عند إجراء نشاط معين داخل النظام.',
|
||||
'notifications_opt_own_page_changes' => 'إشعاري عند حدوث تغييرات في الصفحات التي أملكها',
|
||||
'notifications_opt_own_page_comments' => 'إشعاري بشأن التعليقات على الصفحات التي أملكها',
|
||||
'notifications_opt_comment_replies' => 'إشعاري عند الردود على تعليقاتي',
|
||||
'notifications_save' => 'حفظ اﻹعدادات',
|
||||
'notifications_update_success' => 'تم تحديث إعدادات الإشعارات!',
|
||||
'notifications_watched' => 'العناصر التي تمت مشاهدتها وتجاهلها',
|
||||
'notifications_watched_desc' => 'فيما يلي العناصر التي طُبِّقت عليها إعدادات ساعة مخصصة. لتحديث إعداداتك، استعرض العنصر ثم ابحث عن خيارات الساعة في الشريط الجانبي.',
|
||||
|
||||
'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!',
|
||||
'auth' => 'الوصول و الأمان',
|
||||
'auth_change_password' => 'تغيير كلمة السر',
|
||||
'auth_change_password_desc' => 'غيّر كلمة السر التي تستخدمها لتسجيل الدخول إلى التطبيق. يجب ألا تقل عن 8 أحرف.',
|
||||
'auth_change_password_success' => 'تم تحديث كلمة السر!',
|
||||
|
||||
'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.',
|
||||
'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 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?',
|
||||
'delete_account' => 'حذف الحساب',
|
||||
'delete_my_account' => 'حذف حسابي',
|
||||
'delete_my_account_desc' => 'سيؤدي هذا إلى حذف حساب المستخدم الخاص بك بالكامل من النظام. لن تتمكن من استعادة هذا الحساب أو التراجع عن هذا الإجراء. سيبقى المحتوى الذي أنشأته، مثل الصفحات التي أنشأتها والصور التي رفعتها، كما هي.',
|
||||
'delete_my_account_warning' => 'هل أنت متأكد أنك تريد حذف حسابك؟',
|
||||
];
|
||||
|
||||
@@ -48,12 +48,12 @@ return [
|
||||
'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.',
|
||||
'color_scheme' => 'مخطط ألوان التطبيق',
|
||||
'color_scheme_desc' => 'حدّد الألوان المستخدمة في واجهة مستخدم التطبيق. يمكن ضبط الألوان بشكل منفصل للوضعين الداكن والفاتح لتناسب المظهر بشكل أفضل ولضمان وضوح النص.',
|
||||
'ui_colors_desc' => 'عيّن اللون الأساسي للتطبيق ولون الرابط الافتراضي. يُستخدم اللون الأساسي بشكل رئيس في شعار الصفحة الرئيسة والأزرار وزخارف الواجهة. أما اللون الافتراضي للرابط، فيُستخدم للروابط والإجراءات النصية، سواءً داخل المحتوى المكتوب أو في واجهة التطبيق.',
|
||||
'app_color' => 'اللون الأساسي',
|
||||
'link_color' => 'لون الرابط الافتراضي',
|
||||
'content_colors_desc' => 'حدّد ألوان جميع عناصر هيكل تنظيم الصفحة. يُنصح باختيار ألوان بنفس سطوع الألوان الافتراضية لسهولة القراءة.',
|
||||
'bookshelf_color' => 'لون الرف',
|
||||
'book_color' => 'لون الكتاب',
|
||||
'chapter_color' => 'لون الفصل',
|
||||
@@ -75,40 +75,40 @@ return [
|
||||
'reg_confirm_restrict_domain_placeholder' => 'لم يتم اختيار أي قيود',
|
||||
|
||||
// Sorting Settings
|
||||
'sorting' => 'Sorting',
|
||||
'sorting_book_default' => 'Default Book Sort',
|
||||
'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' => 'طريقة الترتيب',
|
||||
'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' => 'الفصول الأخيرة',
|
||||
|
||||
// Maintenance settings
|
||||
'maint' => 'الصيانة',
|
||||
'maint_image_cleanup' => 'تنظيف الصور',
|
||||
'maint_image_cleanup_desc' => 'مسح الصفحة ومراجعة المحتوى للتحقق من أي الصور والرسوم المستخدمة حاليًا وأي الصور زائدة عن الحاجة. تأكد من إنشاء قاعدة بيانات كاملة و نسخة احتياطية للصور قبل تشغيل هذا.',
|
||||
'maint_delete_images_only_in_revisions' => 'Also delete images that only exist in old page revisions',
|
||||
'maint_delete_images_only_in_revisions' => 'قم أيضًا بحذف الصور الموجودة فقط في مراجعات الصفحة القديمة',
|
||||
'maint_image_cleanup_run' => 'بدء التنظيف',
|
||||
'maint_image_cleanup_warning' => 'يوجد عدد :count من الصور المحتمل عدم استخدامها. تأكيد حذف الصور؟',
|
||||
'maint_image_cleanup_success' => 'تم إيجاد وحذف عدد :count من الصور المحتمل عدم استخدامها!',
|
||||
@@ -122,16 +122,16 @@ return [
|
||||
'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.',
|
||||
'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' => 'Parent',
|
||||
'recycle_bin_deleted_parent' => 'اﻷب',
|
||||
'recycle_bin_deleted_by' => 'حُذف بواسطة',
|
||||
'recycle_bin_deleted_at' => 'وقت الحذف',
|
||||
'recycle_bin_permanently_delete' => 'حُذف نهائيًا',
|
||||
@@ -139,12 +139,12 @@ return [
|
||||
'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_confirm' => 'سيؤدي هذا الإجراء إلى حذف هذا العنصر نهائيًا من النظام، بالإضافة إلى أي عناصر فرعية مدرجة أدناه، ولن تتمكن من استعادة هذا المحتوى. هل أنت متيقِّن من رغبتك في حذف هذا العنصر نهائيًا؟',
|
||||
'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_restore_parent' => 'استعادة اﻷب',
|
||||
'recycle_bin_destroy_notification' => 'المحذوف: قُم بعد إجمالي العناصر من سلة المحذوفات.',
|
||||
'recycle_bin_restore_notification' => 'المرتجع: قُم بعد إجمالي العناصر من سلة المحذوفات.',
|
||||
|
||||
@@ -158,7 +158,7 @@ return [
|
||||
'audit_table_user' => 'المستخدم',
|
||||
'audit_table_event' => 'الحدث',
|
||||
'audit_table_related' => 'العنصر أو التفاصيل ذات الصلة',
|
||||
'audit_table_ip' => 'IP Address',
|
||||
'audit_table_ip' => 'عنوان عُرف اﻹنترنت -IP-',
|
||||
'audit_table_date' => 'تاريخ النشاط',
|
||||
'audit_date_from' => 'نطاق التاريخ من',
|
||||
'audit_date_to' => 'نطاق التاريخ إلى',
|
||||
@@ -166,11 +166,11 @@ return [
|
||||
// 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',
|
||||
'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\'.',
|
||||
@@ -181,7 +181,7 @@ return [
|
||||
'role_details' => 'تفاصيل الدور',
|
||||
'role_name' => 'اسم الدور',
|
||||
'role_desc' => 'وصف مختصر للدور',
|
||||
'role_mfa_enforced' => 'Requires Multi-Factor Authentication',
|
||||
'role_mfa_enforced' => 'يتطلب مصادقة متعددة العوامل',
|
||||
'role_external_auth_id' => 'ربط الحساب بمواقع التواصل',
|
||||
'role_system' => 'أذونات النظام',
|
||||
'role_manage_users' => 'إدارة المستخدمين',
|
||||
@@ -191,15 +191,15 @@ return [
|
||||
'role_manage_page_templates' => 'إدارة قوالب الصفحة',
|
||||
'role_access_api' => 'الوصول إلى واجهة برمجة تطبيقات النظام API',
|
||||
'role_manage_settings' => 'إدارة إعدادات التطبيق',
|
||||
'role_export_content' => 'Export content',
|
||||
'role_import_content' => 'Import content',
|
||||
'role_editor_change' => 'Change page editor',
|
||||
'role_notifications' => 'Receive & manage notifications',
|
||||
'role_export_content' => 'تصدير المحتوى',
|
||||
'role_import_content' => 'استيراد المحتوى',
|
||||
'role_editor_change' => 'تغيير محرر الصفحة',
|
||||
'role_notifications' => 'تلقي الإشعارات وإدارتها',
|
||||
'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_image_view_note' => 'يتعلق هذا بالرؤية داخل مدير الصور. يعتمد الوصول الفعلي لملفات الصور المُحمّلة على خِيار تخزين الصور في النظام.',
|
||||
'role_all' => 'الكل',
|
||||
'role_own' => 'ما يخص',
|
||||
'role_controlled_by_asset' => 'يتحكم فيها الأصول التي يتم رفعها إلى',
|
||||
@@ -209,7 +209,7 @@ return [
|
||||
|
||||
// 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.',
|
||||
'users_index_desc' => 'إنشاء وإدارة حسابات المستخدمين الفردية داخل النظام. يتم استخدام حسابات المستخدم لتسجيل الدخول وإسناد المحتوى والنشاط. صلاحيات الوصول هي أساسا قائمة على الأدوار ولكن ملكية محتوى المستخدم، من بين عوامل أخرى، قد تؤثر أيضا على صلاحيات والوصول إليها.',
|
||||
'user_profile' => 'ملف المستخدم',
|
||||
'users_add_new' => 'إضافة مستخدم جديد',
|
||||
'users_search' => 'بحث عن مستخدم',
|
||||
@@ -220,20 +220,20 @@ return [
|
||||
'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_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_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' => '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_migrate_ownership' => 'نقل الملكية',
|
||||
'users_migrate_ownership_desc' => 'حدد مستخدم هنا إذا كنت تريد أن يصبح مستخدم آخر مالك جميع العناصر التي يمتلكها هذا المستخدم حاليا.',
|
||||
'users_none_selected' => 'لم يتم تحديد مستخدم',
|
||||
'users_edit' => 'تعديل المستخدم',
|
||||
'users_edit_profile' => 'تعديل الملف',
|
||||
'users_avatar' => 'صورة المستخدم',
|
||||
@@ -241,24 +241,24 @@ return [
|
||||
'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_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' => 'Connected',
|
||||
'users_social_status_disconnected' => 'Disconnected',
|
||||
'users_social_status_connected' => 'متصل',
|
||||
'users_social_status_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_desc' => 'أنشئ وأدر رموز الوصول المستخدمة للمصادقة باستخدام واجهة برمجة تطبيقات بوكستاك رِست -BookStack REST API-. تتم إدارة صلاحيات واجهة برمجة التطبيقات بواسطة المستخدم الذي ينتمي إليه الرمز.',
|
||||
'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',
|
||||
'users_mfa' => 'المصادقة متعددة العوامل',
|
||||
'users_mfa_desc' => 'إعداد المصادقة متعددة العوامل كطبقة إضافية من الأمان لحساب المستخدم الخاص بك.',
|
||||
'users_mfa_x_methods' => ':count طريقة مُهيأة | :count طرق مُهيأة',
|
||||
'users_mfa_configure' => 'إعداد الطرق',
|
||||
|
||||
// API Tokens
|
||||
'user_api_token_create' => 'قم بإنشاء رمز API',
|
||||
@@ -279,42 +279,42 @@ return [
|
||||
'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:',
|
||||
'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',
|
||||
'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',
|
||||
'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.
|
||||
|
||||
@@ -105,15 +105,15 @@ return [
|
||||
'url' => 'صيغة :attribute غير صالحة.',
|
||||
'uploaded' => 'تعذر تحميل الملف. قد لا يقبل الخادم ملفات بهذا الحجم.',
|
||||
|
||||
'zip_file' => 'The :attribute needs to reference a file within the ZIP.',
|
||||
'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.',
|
||||
'zip_file' => ':attribute بحاجة إلى الرجوع إلى مِلَفّ داخل المِلَفّ المضغوط.',
|
||||
'zip_file_mime' => ':attribute بحاجة إلى الإشارة إلى مِلَفّ من نوع :validTypes، وجدت :foundType.',
|
||||
'zip_model_expected' => 'عنصر البيانات المتوقع ولكن ":type" تم العثور عليه.',
|
||||
'zip_unique' => 'يجب أن يكون :attribute فريداً لنوع الكائن داخل المِلَفّ المضغوط.',
|
||||
|
||||
// Custom validation lines
|
||||
'custom' => [
|
||||
'password-confirm' => [
|
||||
'required_with' => 'يجب تأكيد كلمة المرور',
|
||||
'required_with' => 'يجب تأكيد كلمة السر',
|
||||
],
|
||||
],
|
||||
|
||||
|
||||
@@ -30,6 +30,8 @@ return [
|
||||
'create' => 'Създаване',
|
||||
'update' => 'Обновяване',
|
||||
'edit' => 'Редактиране',
|
||||
'archive' => 'Archive',
|
||||
'unarchive' => 'Un-Archive',
|
||||
'sort' => 'Сортиране',
|
||||
'move' => 'Преместване',
|
||||
'copy' => 'Копиране',
|
||||
|
||||
@@ -248,7 +248,7 @@ return [
|
||||
'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 Alpha Testing)',
|
||||
'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
|
||||
'pages_edit_set_changelog' => 'Задайте регистър на промените',
|
||||
'pages_edit_enter_changelog_desc' => 'Въведете кратко резюме на промените, които сте създали',
|
||||
'pages_edit_enter_changelog' => 'Въведи регистър на промените',
|
||||
@@ -392,8 +392,11 @@ return [
|
||||
'comment' => 'Коментирай',
|
||||
'comments' => 'Коментари',
|
||||
'comment_add' => 'Добавяне на коментар',
|
||||
'comment_none' => 'No comments to display',
|
||||
'comment_placeholder' => 'Напишете коментар',
|
||||
'comment_count' => '{0} Няма коментари|{1} 1 коментар|[2,*] :count коментара',
|
||||
'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',
|
||||
@@ -402,8 +405,14 @@ return [
|
||||
'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
|
||||
|
||||
@@ -30,6 +30,8 @@ return [
|
||||
'create' => 'তৈরী করুন',
|
||||
'update' => 'হালনাগাদ করুন',
|
||||
'edit' => 'সম্পাদন করুন',
|
||||
'archive' => 'Archive',
|
||||
'unarchive' => 'Un-Archive',
|
||||
'sort' => 'ক্রমান্বয় করুন',
|
||||
'move' => 'স্থানান্তর করুন',
|
||||
'copy' => 'অনুলিপি করুন',
|
||||
|
||||
@@ -248,7 +248,7 @@ return [
|
||||
'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 Alpha Testing)',
|
||||
'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',
|
||||
@@ -392,8 +392,11 @@ return [
|
||||
'comment' => 'Comment',
|
||||
'comments' => 'Comments',
|
||||
'comment_add' => 'Add Comment',
|
||||
'comment_none' => 'No comments to display',
|
||||
'comment_placeholder' => 'Leave a comment here',
|
||||
'comment_count' => '{0} No Comments|{1} 1 Comment|[2,*] :count Comments',
|
||||
'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',
|
||||
@@ -402,8 +405,14 @@ return [
|
||||
'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
|
||||
|
||||
@@ -30,6 +30,8 @@ return [
|
||||
'create' => 'Kreiraj',
|
||||
'update' => 'Ažuriraj',
|
||||
'edit' => 'Uredi',
|
||||
'archive' => 'Archive',
|
||||
'unarchive' => 'Un-Archive',
|
||||
'sort' => 'Sortiraj',
|
||||
'move' => 'Pomjeri',
|
||||
'copy' => 'Kopiraj',
|
||||
|
||||
@@ -248,7 +248,7 @@ return [
|
||||
'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 Alpha Testing)',
|
||||
'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',
|
||||
@@ -392,8 +392,11 @@ return [
|
||||
'comment' => 'Comment',
|
||||
'comments' => 'Comments',
|
||||
'comment_add' => 'Add Comment',
|
||||
'comment_none' => 'No comments to display',
|
||||
'comment_placeholder' => 'Leave a comment here',
|
||||
'comment_count' => '{0} No Comments|{1} 1 Comment|[2,*] :count Comments',
|
||||
'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',
|
||||
@@ -402,8 +405,14 @@ return [
|
||||
'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
|
||||
|
||||
@@ -30,6 +30,8 @@ return [
|
||||
'create' => 'Crea',
|
||||
'update' => 'Actualitza',
|
||||
'edit' => 'Edita',
|
||||
'archive' => 'Archive',
|
||||
'unarchive' => 'Un-Archive',
|
||||
'sort' => 'Ordena',
|
||||
'move' => 'Mou',
|
||||
'copy' => 'Copia',
|
||||
|
||||
@@ -248,7 +248,7 @@ return [
|
||||
'pages_edit_switch_to_markdown_stable' => '(Contingut estable)',
|
||||
'pages_edit_switch_to_wysiwyg' => 'Canvia a l’editor WYSIWYG',
|
||||
'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
|
||||
'pages_edit_switch_to_new_wysiwyg_desc' => '(In Alpha Testing)',
|
||||
'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
|
||||
'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',
|
||||
@@ -392,8 +392,11 @@ return [
|
||||
'comment' => 'Comentari',
|
||||
'comments' => 'Comentaris',
|
||||
'comment_add' => 'Afegeix un comentari',
|
||||
'comment_none' => 'No comments to display',
|
||||
'comment_placeholder' => 'Deixa un comentari aquí',
|
||||
'comment_count' => '{0} No hi ha cap comentari|{1} Hi ha 1 comentari|[2,*] Hi ha :count comentaris',
|
||||
'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
|
||||
'comment_archived_count' => ':count Archived',
|
||||
'comment_archived_threads' => 'Archived Threads',
|
||||
'comment_save' => 'Desa el comentari',
|
||||
'comment_new' => 'Crea un comentari',
|
||||
'comment_created' => 'ha comentat :createDiff',
|
||||
@@ -402,8 +405,14 @@ return [
|
||||
'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' => 'Comment archived',
|
||||
'comment_unarchive_success' => 'Comment un-archived',
|
||||
'comment_view' => 'View comment',
|
||||
'comment_jump_to_thread' => 'Jump to thread',
|
||||
'comment_delete_confirm' => 'Esteu segur que voleu suprimir aquest comentari?',
|
||||
'comment_in_reply_to' => 'En resposta a :commentId',
|
||||
'comment_reference' => 'Reference',
|
||||
'comment_reference_outdated' => '(Outdated)',
|
||||
'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
|
||||
|
||||
@@ -30,6 +30,8 @@ return [
|
||||
'create' => 'Vytvořit',
|
||||
'update' => 'Aktualizovat',
|
||||
'edit' => 'Upravit',
|
||||
'archive' => 'Archivovat',
|
||||
'unarchive' => 'Od-Archivovat',
|
||||
'sort' => 'Seřadit',
|
||||
'move' => 'Přesunout',
|
||||
'copy' => 'Kopírovat',
|
||||
|
||||
@@ -248,7 +248,7 @@ return [
|
||||
'pages_edit_switch_to_markdown_stable' => '(Stabilní obsah)',
|
||||
'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 alfa testování)',
|
||||
'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',
|
||||
@@ -392,8 +392,11 @@ return [
|
||||
'comment' => 'Komentář',
|
||||
'comments' => 'Komentáře',
|
||||
'comment_add' => 'Přidat komentář',
|
||||
'comment_none' => 'Žádné komentáře k zobrazení',
|
||||
'comment_placeholder' => 'Zde zadejte komentář',
|
||||
'comment_count' => '{0} Bez komentářů|{1} 1 komentář|[2,4] :count komentáře|[5,*] :count komentářů',
|
||||
'comment_thread_count' => ':count vlákno komentáře|:count vláken komentářů',
|
||||
'comment_archived_count' => ':count archivováno',
|
||||
'comment_archived_threads' => 'Archivovaná vlákna',
|
||||
'comment_save' => 'Uložit komentář',
|
||||
'comment_new' => 'Nový komentář',
|
||||
'comment_created' => 'komentováno :createDiff',
|
||||
@@ -402,8 +405,14 @@ return [
|
||||
'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
|
||||
|
||||
@@ -30,6 +30,8 @@ return [
|
||||
'create' => 'Creu',
|
||||
'update' => 'Diweddaru',
|
||||
'edit' => 'Golygu',
|
||||
'archive' => 'Archive',
|
||||
'unarchive' => 'Un-Archive',
|
||||
'sort' => 'Trefnu',
|
||||
'move' => 'Symud',
|
||||
'copy' => 'Copïo',
|
||||
|
||||
@@ -248,7 +248,7 @@ return [
|
||||
'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' => '(Mewn Profi Alpha)',
|
||||
'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',
|
||||
@@ -392,8 +392,11 @@ return [
|
||||
'comment' => 'Sylw',
|
||||
'comments' => 'Sylwadau',
|
||||
'comment_add' => 'Ychwanegu Sylw',
|
||||
'comment_none' => 'No comments to display',
|
||||
'comment_placeholder' => 'Gadewch sylw yma',
|
||||
'comment_count' => '{0} Dim sylwadau|{1} 1 Sylw| [2,*] :count Sylwadau',
|
||||
'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',
|
||||
@@ -402,8 +405,14 @@ return [
|
||||
'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
|
||||
|
||||
@@ -30,6 +30,8 @@ return [
|
||||
'create' => 'Opret',
|
||||
'update' => 'Opdater',
|
||||
'edit' => 'Rediger',
|
||||
'archive' => 'Archive',
|
||||
'unarchive' => 'Un-Archive',
|
||||
'sort' => 'Sorter',
|
||||
'move' => 'Flyt',
|
||||
'copy' => 'Kopier',
|
||||
|
||||
@@ -248,7 +248,7 @@ return [
|
||||
'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 alfa-testning)',
|
||||
'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
|
||||
'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',
|
||||
@@ -392,8 +392,11 @@ return [
|
||||
'comment' => 'Kommentar',
|
||||
'comments' => 'Kommentarer',
|
||||
'comment_add' => 'Tilføj kommentar',
|
||||
'comment_none' => 'No comments to display',
|
||||
'comment_placeholder' => 'Skriv en kommentar her',
|
||||
'comment_count' => '{0} Ingen kommentarer|{1} 1 Kommentar|[2,*] :count kommentarer',
|
||||
'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
|
||||
'comment_archived_count' => ':count Archived',
|
||||
'comment_archived_threads' => 'Archived Threads',
|
||||
'comment_save' => 'Gem kommentar',
|
||||
'comment_new' => 'Ny kommentar',
|
||||
'comment_created' => 'kommenteret :createDiff',
|
||||
@@ -402,8 +405,14 @@ return [
|
||||
'comment_deleted_success' => 'Kommentar slettet',
|
||||
'comment_created_success' => 'Kommentaren er tilføjet',
|
||||
'comment_updated_success' => 'Kommentaren er opdateret',
|
||||
'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 slette denne kommentar?',
|
||||
'comment_in_reply_to' => 'Som svar til :commentId',
|
||||
'comment_reference' => 'Reference',
|
||||
'comment_reference_outdated' => '(Outdated)',
|
||||
'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
|
||||
|
||||
@@ -50,7 +50,7 @@ return [
|
||||
'bookshelf_delete_notification' => 'Regal erfolgreich gelöscht',
|
||||
|
||||
// Revisions
|
||||
'revision_restore' => 'widerherstellte Revision',
|
||||
'revision_restore' => 'stellte Revision wieder her:',
|
||||
'revision_delete' => 'löschte Revision',
|
||||
'revision_delete_notification' => 'Revision erfolgreich gelöscht',
|
||||
|
||||
@@ -128,12 +128,12 @@ return [
|
||||
'comment_delete' => 'Kommentar gelöscht',
|
||||
|
||||
// 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',
|
||||
'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',
|
||||
|
||||
@@ -30,6 +30,8 @@ return [
|
||||
'create' => 'Erstellen',
|
||||
'update' => 'Aktualisieren',
|
||||
'edit' => 'Bearbeiten',
|
||||
'archive' => 'Archivieren',
|
||||
'unarchive' => 'Nicht mehr archivieren',
|
||||
'sort' => 'Sortieren',
|
||||
'move' => 'Verschieben',
|
||||
'copy' => 'Kopieren',
|
||||
|
||||
@@ -13,7 +13,7 @@ return [
|
||||
'cancel' => 'Abbrechen',
|
||||
'save' => 'Speichern',
|
||||
'close' => 'Schließen',
|
||||
'apply' => 'Apply',
|
||||
'apply' => 'Übernehmen',
|
||||
'undo' => 'Rückgängig',
|
||||
'redo' => 'Wiederholen',
|
||||
'left' => 'Links',
|
||||
@@ -148,7 +148,7 @@ return [
|
||||
'url' => 'URL',
|
||||
'text_to_display' => 'Anzuzeigender Text',
|
||||
'title' => 'Titel',
|
||||
'browse_links' => 'Browse links',
|
||||
'browse_links' => 'Links durchsuchen',
|
||||
'open_link' => 'Link öffnen',
|
||||
'open_link_in' => 'Link öffnen in...',
|
||||
'open_link_current' => 'Aktuelles Fenster',
|
||||
|
||||
@@ -40,8 +40,8 @@ return [
|
||||
'export_text' => 'Textdatei',
|
||||
'export_md' => 'Markdown-Datei',
|
||||
'export_zip' => 'Portable ZIP',
|
||||
'default_template' => 'Standard Seitenvorlage',
|
||||
'default_template_explain' => 'Zuweisen einer Seitenvorlage, die als Standardinhalt für alle Seiten verwendet wird, die innerhalb dieses Elements erstellt wurden. Beachten Sie, dass dies nur dann verwendet wird, wenn der Ersteller der Seite Zugriff auf die ausgewählte Vorlagen-Seite hat.',
|
||||
'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',
|
||||
@@ -87,7 +87,7 @@ return [
|
||||
'search_terms' => 'Suchbegriffe',
|
||||
'search_content_type' => 'Inhaltstyp',
|
||||
'search_exact_matches' => 'Exakte Treffer',
|
||||
'search_tags' => 'Nach Schlagwort suchen',
|
||||
'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',
|
||||
@@ -166,9 +166,9 @@ return [
|
||||
'books_search_this' => 'Dieses Buch durchsuchen',
|
||||
'books_navigation' => 'Buchnavigation',
|
||||
'books_sort' => 'Buchinhalte sortieren',
|
||||
'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_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',
|
||||
@@ -243,12 +243,12 @@ return [
|
||||
'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 Output)',
|
||||
'pages_edit_switch_to_markdown_stable' => '(html beibehalten)',
|
||||
'pages_edit_switch_to_wysiwyg' => 'Wechseln Sie zum WYSIWYG-Editor',
|
||||
'pages_edit_switch_to_new_wysiwyg' => 'Zu neuem WYSIWYG wechseln',
|
||||
'pages_edit_switch_to_new_wysiwyg_desc' => '(In Alpha Testing)',
|
||||
'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',
|
||||
@@ -332,7 +332,7 @@ return [
|
||||
'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' => 'Schlagwort Name',
|
||||
'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',
|
||||
@@ -392,8 +392,11 @@ return [
|
||||
'comment' => 'Kommentar',
|
||||
'comments' => 'Kommentare',
|
||||
'comment_add' => 'Kommentieren',
|
||||
'comment_placeholder' => 'Geben Sie hier Ihre Kommentare ein (Markdown unterstützt)',
|
||||
'comment_count' => '{0} Keine Kommentare|{1} 1 Kommentar|[2,*] :count Kommentare',
|
||||
'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',
|
||||
@@ -402,8 +405,14 @@ return [
|
||||
'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
|
||||
|
||||
@@ -8,7 +8,7 @@ return [
|
||||
|
||||
'password' => '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 Link zum Zurücksetzen Ihres Passworts ist entweder ungültig oder abgelaufen.',
|
||||
'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!',
|
||||
|
||||
|
||||
@@ -35,12 +35,12 @@ return [
|
||||
'auth_change_password_success' => 'Das Passwort wurde aktualisiert!',
|
||||
|
||||
'profile' => 'Profildetails',
|
||||
'profile_desc' => 'Verwalten Sie die Details Ihres Kontos welche 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 zeigen',
|
||||
'profile_name_desc' => 'Konfigurieren Sie Ihren Anzeigenamen, der durch die Aktivität, die Sie ausführen, für andere Benutzer und Ihre eigenen Inhalte im System sichtbar ist.',
|
||||
'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, dass anderen im System angezeigt wird, um Sie zu repräsentieren. Idealerweise sollte dieses Bild quadratisch und etwa 256px breit und hoch sein.',
|
||||
'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.',
|
||||
|
||||
|
||||
@@ -19,17 +19,17 @@ return [
|
||||
'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' => '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' => 'Aktiviere höhere Sicherheit für Bild-Uploads',
|
||||
'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 <head> Sektion jeder Seite eingefügt. Diese kann praktisch sein, um CSS Styles anzupassen oder Analytics-Code hinzuzufügen.',
|
||||
'app_custom_html' => 'Benutzerdefinierter HTML-Head-Inhalt',
|
||||
'app_custom_html_desc' => 'Jeder Inhalt, der hier hinzugefügt wird, wird am Ende der <head>-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.',
|
||||
@@ -76,34 +76,34 @@ Hinweis: Benutzer können ihre E-Mail-Adresse nach erfolgreicher Registrierung
|
||||
'reg_confirm_restrict_domain_placeholder' => 'Keine Einschränkung gesetzt',
|
||||
|
||||
// Sorting Settings
|
||||
'sorting' => 'Sorting',
|
||||
'sorting_book_default' => 'Default Book Sort',
|
||||
'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' => 'Sortierung',
|
||||
'sorting_book_default' => 'Standard-Buchsortierung',
|
||||
'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',
|
||||
|
||||
// Maintenance settings
|
||||
'maint' => 'Wartung',
|
||||
@@ -114,11 +114,11 @@ Hinweis: Benutzer können ihre E-Mail-Adresse nach erfolgreicher Registrierung
|
||||
'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' => 'Test Email 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' => 'Sende eine Test E-Mail',
|
||||
'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_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.',
|
||||
@@ -159,7 +159,7 @@ Hinweis: Benutzer können ihre E-Mail-Adresse nach erfolgreicher Registrierung
|
||||
'audit_table_user' => 'Benutzer',
|
||||
'audit_table_event' => 'Ereignis',
|
||||
'audit_table_related' => 'Verknüpftes Element oder Detail',
|
||||
'audit_table_ip' => 'IP Adresse',
|
||||
'audit_table_ip' => 'IP-Adresse',
|
||||
'audit_table_date' => 'Aktivitätsdatum',
|
||||
'audit_date_from' => 'Zeitraum von',
|
||||
'audit_date_to' => 'Zeitraum bis',
|
||||
|
||||
@@ -9,7 +9,7 @@ return [
|
||||
|
||||
// Standard laravel validation lines
|
||||
'accepted' => ':attribute muss akzeptiert werden.',
|
||||
'active_url' => ':attribute ist keine valide URL.',
|
||||
'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.',
|
||||
@@ -25,12 +25,12 @@ return [
|
||||
],
|
||||
'boolean' => ':attribute Feld muss wahr oder falsch sein.',
|
||||
'confirmed' => ':attribute stimmt nicht überein.',
|
||||
'date' => ':attribute ist kein valides Datum.',
|
||||
'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 valide E-Mail-Adresse sein.',
|
||||
'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.',
|
||||
@@ -51,8 +51,8 @@ return [
|
||||
'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 valide IP-Adresse sein.',
|
||||
'ipv4' => ':attribute muss eine gültige IPv4 Adresse 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' => [
|
||||
@@ -80,8 +80,8 @@ return [
|
||||
'string' => ':attribute muss mindestens :min Zeichen lang sein.',
|
||||
'array' => ':attribute muss mindesten :min Elemente enthalten.',
|
||||
],
|
||||
'not_in' => ':attribute ist ungültig.',
|
||||
'not_regex' => ':attribute ist kein valides Format.',
|
||||
'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.',
|
||||
@@ -99,10 +99,10 @@ return [
|
||||
'array' => ':attribute muss :size Elemente enthalten.',
|
||||
],
|
||||
'string' => ':attribute muss eine Zeichenkette sein.',
|
||||
'timezone' => ':attribute muss eine valide zeitzone 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.',
|
||||
'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.',
|
||||
|
||||
@@ -6,51 +6,51 @@
|
||||
return [
|
||||
|
||||
// Pages
|
||||
'page_create' => 'erstellt Seite',
|
||||
'page_create' => 'erstellte Seite',
|
||||
'page_create_notification' => 'Seite erfolgreich erstellt',
|
||||
'page_update' => 'Seite aktualisiert',
|
||||
'page_update' => 'aktualisierte Seite',
|
||||
'page_update_notification' => 'Seite erfolgreich aktualisiert',
|
||||
'page_delete' => 'Seite gelöscht',
|
||||
'page_delete' => 'löschte Seite',
|
||||
'page_delete_notification' => 'Seite erfolgreich gelöscht',
|
||||
'page_restore' => 'Seite wiederhergestellt',
|
||||
'page_restore' => 'stellte Seite wieder her',
|
||||
'page_restore_notification' => 'Seite erfolgreich wiederhergestellt',
|
||||
'page_move' => 'Seite verschoben',
|
||||
'page_move' => 'verschob Seite',
|
||||
'page_move_notification' => 'Seite erfolgreich verschoben',
|
||||
|
||||
// Chapters
|
||||
'chapter_create' => 'Kapitel erstellt',
|
||||
'chapter_create' => 'erstellte Kapitel',
|
||||
'chapter_create_notification' => 'Kapitel erfolgreich erstellt',
|
||||
'chapter_update' => 'Kapitel aktualisiert',
|
||||
'chapter_update' => 'aktualisierte Kapitel',
|
||||
'chapter_update_notification' => 'Kapitel erfolgreich aktualisiert',
|
||||
'chapter_delete' => 'Kapitel gelöscht',
|
||||
'chapter_delete' => 'löschte Kapitel',
|
||||
'chapter_delete_notification' => 'Kapitel erfolgreich gelöscht',
|
||||
'chapter_move' => 'Kapitel verschoben',
|
||||
'chapter_move' => 'verschob Kapitel',
|
||||
'chapter_move_notification' => 'Kapitel erfolgreich verschoben',
|
||||
|
||||
// Books
|
||||
'book_create' => 'Buch erstellt',
|
||||
'book_create' => 'erstellte Buch',
|
||||
'book_create_notification' => 'Buch erfolgreich erstellt',
|
||||
'book_create_from_chapter' => 'Kapitel zu Buch umgewandelt',
|
||||
'book_create_from_chapter' => 'wandelte Kapitel zu Buch um',
|
||||
'book_create_from_chapter_notification' => 'Kapitel erfolgreich in ein Buch umgewandelt',
|
||||
'book_update' => 'Buch aktualisiert',
|
||||
'book_update' => 'aktualisierte Buch',
|
||||
'book_update_notification' => 'Buch erfolgreich aktualisiert',
|
||||
'book_delete' => 'Buch gelöscht',
|
||||
'book_delete' => 'löschte Buch',
|
||||
'book_delete_notification' => 'Buch erfolgreich gelöscht',
|
||||
'book_sort' => 'Buch sortiert',
|
||||
'book_sort' => 'sortierte Buch',
|
||||
'book_sort_notification' => 'Buch erfolgreich umsortiert',
|
||||
|
||||
// Bookshelves
|
||||
'bookshelf_create' => 'Regal erstellt',
|
||||
'bookshelf_create' => 'erstellte Regal',
|
||||
'bookshelf_create_notification' => 'Regal erfolgreich erstellt',
|
||||
'bookshelf_create_from_book' => 'Buch zu Regal umgewandelt',
|
||||
'bookshelf_create_from_book' => 'wandelte Buch zu Regal um',
|
||||
'bookshelf_create_from_book_notification' => 'Buch erfolgreich zu einem Regal umgewandelt',
|
||||
'bookshelf_update' => 'Regal aktualisiert',
|
||||
'bookshelf_update' => 'aktualisierte Regal',
|
||||
'bookshelf_update_notification' => 'Regal erfolgreich aktualisiert',
|
||||
'bookshelf_delete' => 'Regal gelöscht',
|
||||
'bookshelf_delete' => 'löschte Regal',
|
||||
'bookshelf_delete_notification' => 'Regal erfolgreich gelöscht',
|
||||
|
||||
// Revisions
|
||||
'revision_restore' => 'Revision wiederhergestellt',
|
||||
'revision_restore' => 'stellte Revision wieder her',
|
||||
'revision_delete' => 'Revision gelöscht',
|
||||
'revision_delete_notification' => 'Revision erfolgreich gelöscht',
|
||||
|
||||
@@ -128,12 +128,12 @@ return [
|
||||
'comment_delete' => 'Kommentar gelöscht',
|
||||
|
||||
// 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',
|
||||
'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',
|
||||
|
||||
@@ -33,7 +33,7 @@ return [
|
||||
'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.',
|
||||
'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.',
|
||||
@@ -82,7 +82,7 @@ return [
|
||||
|
||||
// Multi-factor Authentication
|
||||
'mfa_setup' => 'Multi-Faktor-Authentifizierung einrichten',
|
||||
'mfa_setup_desc' => 'Richte eine Multi-Faktor-Authentifizierung als zusätzliche Sicherheitsstufe für dein Benutzerkonto ein.',
|
||||
'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?',
|
||||
|
||||
@@ -30,6 +30,8 @@ return [
|
||||
'create' => 'Anlegen',
|
||||
'update' => 'Aktualisieren',
|
||||
'edit' => 'Bearbeiten',
|
||||
'archive' => 'Archivieren',
|
||||
'unarchive' => 'Nicht mehr archivieren',
|
||||
'sort' => 'Sortieren',
|
||||
'move' => 'Verschieben',
|
||||
'copy' => 'Kopieren',
|
||||
|
||||
@@ -13,7 +13,7 @@ return [
|
||||
'cancel' => 'Abbrechen',
|
||||
'save' => 'Speichern',
|
||||
'close' => 'Schließen',
|
||||
'apply' => 'Apply',
|
||||
'apply' => 'Übernehmen',
|
||||
'undo' => 'Rückgängig machen',
|
||||
'redo' => 'Wiederholen',
|
||||
'left' => 'Links',
|
||||
@@ -148,7 +148,7 @@ return [
|
||||
'url' => 'URL',
|
||||
'text_to_display' => 'Anzuzeigender Text',
|
||||
'title' => 'Titel',
|
||||
'browse_links' => 'Browse links',
|
||||
'browse_links' => 'Links durchsuchen',
|
||||
'open_link' => 'Link öffnen',
|
||||
'open_link_in' => 'Link öffnen in...',
|
||||
'open_link_current' => 'Aktuellem Fenster',
|
||||
@@ -163,7 +163,7 @@ return [
|
||||
|
||||
// About view
|
||||
'about' => 'Über den Editor',
|
||||
'about_title' => 'Über den WYSIWYG 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.',
|
||||
|
||||
@@ -40,8 +40,8 @@ return [
|
||||
'export_text' => 'Textdatei',
|
||||
'export_md' => 'Markdown-Datei',
|
||||
'export_zip' => 'Portable ZIP',
|
||||
'default_template' => 'Standard Seitenvorlage',
|
||||
'default_template_explain' => 'Zuweisen einer Seitenvorlage, die als Standardinhalt für alle Seiten verwendet wird, die innerhalb dieses Elements erstellt wurden. Beachten Sie, dass dies nur dann verwendet wird, wenn der Ersteller der Seite Zugriff auf die ausgewählte Vorlagen-Seite hat.',
|
||||
'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',
|
||||
@@ -87,7 +87,7 @@ return [
|
||||
'search_terms' => 'Suchbegriffe',
|
||||
'search_content_type' => 'Inhaltstyp',
|
||||
'search_exact_matches' => 'Exakte Treffer',
|
||||
'search_tags' => 'Nach Schlagwort suchen',
|
||||
'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',
|
||||
@@ -166,9 +166,9 @@ return [
|
||||
'books_search_this' => 'Dieses Buch durchsuchen',
|
||||
'books_navigation' => 'Buchnavigation',
|
||||
'books_sort' => 'Buchinhalte sortieren',
|
||||
'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_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',
|
||||
@@ -243,12 +243,12 @@ return [
|
||||
'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' => '(Sauberer Inhalt)',
|
||||
'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' => 'Wechsel zum neuen WYSIWYG',
|
||||
'pages_edit_switch_to_new_wysiwyg_desc' => '(In Alpha Testphase)',
|
||||
'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',
|
||||
@@ -332,7 +332,7 @@ return [
|
||||
'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' => 'Schlagwort Name',
|
||||
'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',
|
||||
@@ -392,8 +392,11 @@ return [
|
||||
'comment' => 'Kommentar',
|
||||
'comments' => 'Kommentare',
|
||||
'comment_add' => 'Kommentieren',
|
||||
'comment_placeholder' => 'Gib hier deine Kommentare ein (Markdown unterstützt)',
|
||||
'comment_count' => '{0} Keine Kommentare|{1} 1 Kommentar|[2,*] :count Kommentare',
|
||||
'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',
|
||||
@@ -402,8 +405,14 @@ return [
|
||||
'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
|
||||
|
||||
@@ -8,7 +8,7 @@ return [
|
||||
|
||||
'password' => '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 für diese E-Mail-Adresse ist ungültig.',
|
||||
'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!',
|
||||
|
||||
|
||||
@@ -35,12 +35,12 @@ return [
|
||||
'auth_change_password_success' => 'Das Passwort wurde aktualisiert!',
|
||||
|
||||
'profile' => 'Profildetails',
|
||||
'profile_desc' => 'Verwalte die Details für dein Konto, welche dich gegenüber anderen Benutzern repräsentieren, zusätzlich zu den Details, die für die Kommunikation und die Personalisierung des Systems verwendet werden.',
|
||||
'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 durchführst, für andere Benutzer und deine eigenen Inhalte im System sichtbar ist.',
|
||||
'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, dass anderen im System angezeigt wird, um dich zu repräsentieren. Idealerweise sollte dieses Bild quadratisch und etwa 256px breit und hoch sein.',
|
||||
'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.',
|
||||
|
||||
|
||||
@@ -24,12 +24,12 @@ return [
|
||||
'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' => 'Aktiviere Bild-Upload mit höherer Sicherheit',
|
||||
'app_secure_images_desc' => 'Aus Leistungsgründen sind alle Bilder öffentlich sichtbar. Diese Option fügt zufällige, schwer zu erratene, Zeichenketten zu Bild-URLs hinzu. Stelle sicher, dass Verzeichnisindizes deaktiviert sind, um einen einfachen Zugriff zu verhindern.',
|
||||
'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 <head> Sektion jeder Seite eingefügt. Diese kann praktisch sein, um CSS Styles anzupassen oder Analytics-Code hinzuzufügen.',
|
||||
'app_custom_html' => 'Benutzerdefinierter HTML-Head-Inhalt',
|
||||
'app_custom_html_desc' => 'Jeder Inhalt, der hier hinzugefügt wird, wird am Ende der <head>-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.',
|
||||
@@ -76,34 +76,34 @@ Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung
|
||||
'reg_confirm_restrict_domain_placeholder' => 'Keine Einschränkung gesetzt',
|
||||
|
||||
// Sorting Settings
|
||||
'sorting' => 'Sorting',
|
||||
'sorting_book_default' => 'Default Book Sort',
|
||||
'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' => 'Sortierung',
|
||||
'sorting_book_default' => 'Standard-Buchsortierung',
|
||||
'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',
|
||||
|
||||
// Maintenance settings
|
||||
'maint' => 'Wartung',
|
||||
@@ -114,11 +114,11 @@ Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung
|
||||
'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' => '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' => 'Sende eine Test E-Mail',
|
||||
'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_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.',
|
||||
@@ -159,7 +159,7 @@ Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung
|
||||
'audit_table_user' => 'Benutzer',
|
||||
'audit_table_event' => 'Ereignis',
|
||||
'audit_table_related' => 'Verknüpfter Eintrag oder Detail',
|
||||
'audit_table_ip' => 'IP Adresse',
|
||||
'audit_table_ip' => 'IP-Adresse',
|
||||
'audit_table_date' => 'Aktivitätsdatum',
|
||||
'audit_date_from' => 'Zeitraum von',
|
||||
'audit_date_to' => 'Zeitraum bis',
|
||||
@@ -257,7 +257,7 @@ Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung
|
||||
'users_api_tokens_expires' => 'Endet',
|
||||
'users_api_tokens_docs' => 'API Dokumentation',
|
||||
'users_mfa' => 'Multi-Faktor-Authentifizierung',
|
||||
'users_mfa_desc' => 'Richte die Multi-Faktor-Authentifizierung als zusätzliche Sicherheitsstufe für dein Benutzerkonto ein.',
|
||||
'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',
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ return [
|
||||
|
||||
// Standard laravel validation lines
|
||||
'accepted' => ':attribute muss akzeptiert werden.',
|
||||
'active_url' => ':attribute ist keine valide URL.',
|
||||
'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.',
|
||||
@@ -25,12 +25,12 @@ return [
|
||||
],
|
||||
'boolean' => ':attribute Feld muss wahr oder falsch sein.',
|
||||
'confirmed' => ':attribute stimmt nicht überein.',
|
||||
'date' => ':attribute ist kein valides Datum.',
|
||||
'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 valide E-Mail-Adresse sein.',
|
||||
'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.',
|
||||
@@ -51,8 +51,8 @@ return [
|
||||
'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 valide IP-Adresse sein.',
|
||||
'ipv4' => ':attribute muss eine gültige IPv4 Adresse 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' => [
|
||||
@@ -80,7 +80,7 @@ return [
|
||||
'string' => ':attribute muss mindestens :min Zeichen lang sein.',
|
||||
'array' => ':attribute muss mindesten :min Elemente enthalten.',
|
||||
],
|
||||
'not_in' => ':attribute ist ungültig.',
|
||||
'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.',
|
||||
@@ -99,14 +99,14 @@ return [
|
||||
'array' => ':attribute muss :size Elemente enthalten.',
|
||||
],
|
||||
'string' => ':attribute muss eine Zeichenkette sein.',
|
||||
'timezone' => ':attribute muss eine valide zeitzone 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_mime' => ':attribute muss auf eine Datei des Typs :validType verweisen, gefunden :foundType.',
|
||||
'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.',
|
||||
|
||||
|
||||
@@ -30,6 +30,8 @@ return [
|
||||
'create' => 'Δημιουργία',
|
||||
'update' => 'Ενημέρωση',
|
||||
'edit' => 'Επεξεργασία',
|
||||
'archive' => 'Archive',
|
||||
'unarchive' => 'Un-Archive',
|
||||
'sort' => 'Ταξινόμηση',
|
||||
'move' => 'Μετακίνηση',
|
||||
'copy' => 'Αντιγραφή',
|
||||
|
||||
@@ -248,7 +248,7 @@ return [
|
||||
'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 Alpha Testing)',
|
||||
'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
|
||||
'pages_edit_set_changelog' => 'Ορισμός καταγραφής αλλαγών',
|
||||
'pages_edit_enter_changelog_desc' => 'Εισάγετε μια σύντομη περιγραφή των αλλαγών που κάνατε',
|
||||
'pages_edit_enter_changelog' => 'Εισαγωγή Αρχείου Καταγραφής Αλλαγών',
|
||||
@@ -392,8 +392,11 @@ return [
|
||||
'comment' => 'Σχόλιο',
|
||||
'comments' => 'Σχόλια',
|
||||
'comment_add' => 'Προσθήκη Σχολίου',
|
||||
'comment_none' => 'No comments to display',
|
||||
'comment_placeholder' => 'Αφήστε ένα σχόλιο εδώ',
|
||||
'comment_count' => '{0} Κανένα Σχόλιο |{1} 1 Σχόλιο |[2,*] :count Σχόλια',
|
||||
'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',
|
||||
@@ -402,8 +405,14 @@ return [
|
||||
'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
|
||||
|
||||
@@ -30,6 +30,8 @@ return [
|
||||
'create' => 'Create',
|
||||
'update' => 'Update',
|
||||
'edit' => 'Edit',
|
||||
'archive' => 'Archive',
|
||||
'unarchive' => 'Un-Archive',
|
||||
'sort' => 'Sort',
|
||||
'move' => 'Move',
|
||||
'copy' => 'Copy',
|
||||
|
||||
@@ -248,7 +248,7 @@ return [
|
||||
'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 Alpha Testing)',
|
||||
'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',
|
||||
@@ -392,8 +392,11 @@ return [
|
||||
'comment' => 'Comment',
|
||||
'comments' => 'Comments',
|
||||
'comment_add' => 'Add Comment',
|
||||
'comment_none' => 'No comments to display',
|
||||
'comment_placeholder' => 'Leave a comment here',
|
||||
'comment_count' => '{0} No Comments|{1} 1 Comment|[2,*] :count Comments',
|
||||
'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',
|
||||
@@ -402,8 +405,14 @@ return [
|
||||
'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
|
||||
|
||||
@@ -30,6 +30,8 @@ return [
|
||||
'create' => 'Crear',
|
||||
'update' => 'Actualizar',
|
||||
'edit' => 'Editar',
|
||||
'archive' => 'Archivar',
|
||||
'unarchive' => 'Desarchivar',
|
||||
'sort' => 'Ordenar',
|
||||
'move' => 'Mover',
|
||||
'copy' => 'Copiar',
|
||||
|
||||
@@ -248,7 +248,7 @@ return [
|
||||
'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 alfa)',
|
||||
'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',
|
||||
@@ -392,8 +392,11 @@ return [
|
||||
'comment' => 'Comentario',
|
||||
'comments' => 'Comentarios',
|
||||
'comment_add' => 'Añadir Comentario',
|
||||
'comment_none' => 'No hay comentarios para mostrar',
|
||||
'comment_placeholder' => 'Introduzca su comentario aquí',
|
||||
'comment_count' => '{0} Sin Comentarios|{1} 1 Comentario|[2,*] :count Comentarios',
|
||||
'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',
|
||||
@@ -402,8 +405,14 @@ return [
|
||||
'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
|
||||
|
||||
@@ -10,7 +10,7 @@ return [
|
||||
'page_create_notification' => 'Página creada correctamente',
|
||||
'page_update' => 'página actualizada',
|
||||
'page_update_notification' => 'Página actualizada correctamente',
|
||||
'page_delete' => 'página borrada',
|
||||
'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',
|
||||
@@ -96,7 +96,7 @@ return [
|
||||
'user_create' => 'usuario creado',
|
||||
'user_create_notification' => 'Usuario creado correctamente',
|
||||
'user_update' => 'usuario actualizado',
|
||||
'user_update_notification' => 'Usuario actualizado correctamente',
|
||||
'user_update_notification' => 'Usuario actualizado con éxito',
|
||||
'user_delete' => 'usuario eliminado',
|
||||
'user_delete_notification' => 'El usuario fue eliminado correctamente',
|
||||
|
||||
@@ -129,11 +129,11 @@ return [
|
||||
|
||||
// Sort Rules
|
||||
'sort_rule_create' => 'regla de ordenación creada',
|
||||
'sort_rule_create_notification' => 'Rol de ordenación creada con éxito',
|
||||
'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' => 'Rol de ordenación borrada con éxito',
|
||||
'sort_rule_delete_notification' => 'Regla de ordenación eliminada correctamente',
|
||||
|
||||
// Other
|
||||
'permissions_update' => 'permisos actualizados',
|
||||
|
||||
@@ -6,12 +6,12 @@
|
||||
*/
|
||||
return [
|
||||
|
||||
'failed' => 'Las credenciales no concuerdan con nuestros registros.',
|
||||
'throttle' => 'Demasiados intentos fallidos de conexión. Por favor intente nuevamente en :seconds segundos.',
|
||||
'failed' => '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' => 'Acceder',
|
||||
'log_in' => 'Iniciar sesión',
|
||||
'log_in_with' => 'Acceder con :socialDriver',
|
||||
'sign_up_with' => 'Registrarse con :socialDriver',
|
||||
'logout' => 'Salir',
|
||||
@@ -91,7 +91,7 @@ return [
|
||||
'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 seguridad de un solo uso que ingresará al iniciar sesión para verificar su identidad. Asegúrese de guardarlos en un lugar seguro.',
|
||||
'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.',
|
||||
|
||||
@@ -30,6 +30,8 @@ return [
|
||||
'create' => 'Crear',
|
||||
'update' => 'Actualizar',
|
||||
'edit' => 'Editar',
|
||||
'archive' => 'Archivar',
|
||||
'unarchive' => 'Desarchivar',
|
||||
'sort' => 'Ordenar',
|
||||
'move' => 'Mover',
|
||||
'copy' => 'Copiar',
|
||||
|
||||
@@ -148,7 +148,7 @@ return [
|
||||
'url' => 'URL',
|
||||
'text_to_display' => 'Texto a mostrar',
|
||||
'title' => 'Título',
|
||||
'browse_links' => 'Ver enlaces',
|
||||
'browse_links' => 'Explorar enlaces',
|
||||
'open_link' => 'Abrir enlace',
|
||||
'open_link_in' => 'Abrir enlace en...',
|
||||
'open_link_current' => 'Ventana actual',
|
||||
|
||||
@@ -23,7 +23,7 @@ return [
|
||||
'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 paginas',
|
||||
'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',
|
||||
@@ -40,21 +40,21 @@ return [
|
||||
'export_text' => 'Archivo de texto plano',
|
||||
'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' => '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 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_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 han iniciado importaciones.',
|
||||
'import_continue' => 'Continuar importación',
|
||||
'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 Importación',
|
||||
'import_size' => ':size tamaño archivo ZIP',
|
||||
'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',
|
||||
@@ -62,11 +62,11 @@ return [
|
||||
'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:',
|
||||
'import_errors_desc' => 'Se produjeron los siguientes errores durante el intento de importación:',
|
||||
|
||||
// Permissions and restrictions
|
||||
'permissions' => 'Permisos',
|
||||
'permissions_desc' => 'Establezca los permisos aquí para reemplazar los permisos por defecto proporcionados por los roles de usuario.',
|
||||
'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',
|
||||
@@ -74,7 +74,7 @@ return [
|
||||
'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 por defecto',
|
||||
'permissions_inherit_defaults' => 'Heredar valores predeterminados',
|
||||
|
||||
// Search
|
||||
'search_results' => 'Buscar resultados',
|
||||
@@ -166,7 +166,7 @@ return [
|
||||
'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_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',
|
||||
@@ -248,7 +248,7 @@ return [
|
||||
'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 alfa)',
|
||||
'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',
|
||||
@@ -269,7 +269,7 @@ return [
|
||||
'pages_md_show_preview' => 'Mostrar vista previa',
|
||||
'pages_md_sync_scroll' => 'Sincronizar desplazamiento de vista previa',
|
||||
'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_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',
|
||||
@@ -392,8 +392,11 @@ return [
|
||||
'comment' => 'Comentario',
|
||||
'comments' => 'Comentarios',
|
||||
'comment_add' => 'Agregar comentario',
|
||||
'comment_none' => 'No hay comentarios para mostrar',
|
||||
'comment_placeholder' => 'DEjar un comentario aquí',
|
||||
'comment_count' => '{0} Sin Comentarios|{1} 1 Comentario|[2,*] :count Comentarios',
|
||||
'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',
|
||||
@@ -402,8 +405,14 @@ return [
|
||||
'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
|
||||
@@ -434,29 +443,29 @@ return [
|
||||
// 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.',
|
||||
'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 por defecto',
|
||||
'watch_desc_default' => 'Revertir suscripciones a tus preferencias de notificación por defecto.',
|
||||
'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 las preferencias a nivel de usuario.',
|
||||
'watch_title_new' => 'Nuevas páginas',
|
||||
'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á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_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 por defecto',
|
||||
'watch_detail_ignore' => 'Ignorar notificaciones',
|
||||
'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 superior',
|
||||
'watch_detail_parent_chapter_ignore' => 'Ignorar por capítulo superior',
|
||||
'watch_detail_parent_chapter' => 'Subscripciones por capítulo contenedor',
|
||||
'watch_detail_parent_chapter_ignore' => 'Ignorar por capítulo contenedor',
|
||||
];
|
||||
|
||||
@@ -78,7 +78,7 @@ return [
|
||||
// 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',
|
||||
'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',
|
||||
@@ -107,9 +107,9 @@ return [
|
||||
|
||||
// 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_validation_failed' => 'Error al validar la importación del ZIP con errores:',
|
||||
'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_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.',
|
||||
@@ -129,5 +129,5 @@ return [
|
||||
'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',
|
||||
'http_ssr_url_no_match' => 'La URL no coincide con los hosts SSR configurados como permitidos',
|
||||
];
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
return [
|
||||
|
||||
'new_comment_subject' => '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:',
|
||||
'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' => 'Una página ha sido actualizada en :appName:',
|
||||
'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.',
|
||||
|
||||
'detail_page_name' => 'Nombre de la página:',
|
||||
|
||||
@@ -8,7 +8,7 @@ return [
|
||||
'my_account' => 'Mi cuenta',
|
||||
|
||||
'shortcuts' => 'Atajos',
|
||||
'shortcuts_interface' => 'Preferencias de acceso directo en la interfaz',
|
||||
'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',
|
||||
@@ -21,31 +21,31 @@ return [
|
||||
|
||||
'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_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_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_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' => '¡La contraseña ha sido actualizada!',
|
||||
'auth_change_password_success' => '¡Se actualizó la contraseña!',
|
||||
|
||||
'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_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, el acceso del sistema.',
|
||||
'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 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.',
|
||||
'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_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?',
|
||||
];
|
||||
|
||||
@@ -75,10 +75,10 @@ return [
|
||||
'reg_confirm_restrict_domain_placeholder' => 'Ninguna restricción establecida',
|
||||
|
||||
// Sorting Settings
|
||||
'sorting' => 'Ordenación',
|
||||
'sorting_book_default' => 'Orden por defecto del libro',
|
||||
'sorting' => 'Ordenando',
|
||||
'sorting_book_default' => 'Orden predeterminado del libro',
|
||||
'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' => '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',
|
||||
@@ -86,13 +86,13 @@ return [
|
||||
'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_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 restantes',
|
||||
'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)',
|
||||
@@ -225,7 +225,7 @@ return [
|
||||
'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 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_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',
|
||||
@@ -312,10 +312,10 @@ return [
|
||||
'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_php' => 'Licencias de Bibliotecas PHP',
|
||||
'licenses_js' => 'Licencias de Bibliotecas JavaScript',
|
||||
'licenses_other' => 'Otras Licencias',
|
||||
'license_details' => 'Datos de la licencia',
|
||||
'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.
|
||||
|
||||
@@ -30,6 +30,8 @@ return [
|
||||
'create' => 'Lisa',
|
||||
'update' => 'Uuenda',
|
||||
'edit' => 'Muuda',
|
||||
'archive' => 'Arhiveeri',
|
||||
'unarchive' => 'Taasta arhiivist',
|
||||
'sort' => 'Sorteeri',
|
||||
'move' => 'Liiguta',
|
||||
'copy' => 'Kopeeri',
|
||||
|
||||
@@ -248,7 +248,7 @@ return [
|
||||
'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' => '(Alfa-testimisel)',
|
||||
'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',
|
||||
@@ -392,8 +392,11 @@ return [
|
||||
'comment' => 'Kommentaar',
|
||||
'comments' => 'Kommentaarid',
|
||||
'comment_add' => 'Lisa kommentaar',
|
||||
'comment_none' => 'Pole kommentaare, mida kuvada',
|
||||
'comment_placeholder' => 'Jäta siia kommentaar',
|
||||
'comment_count' => '{0} Kommentaare pole|{1} 1 kommentaar|[2,*] :count kommentaari',
|
||||
'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',
|
||||
@@ -402,8 +405,14 @@ return [
|
||||
'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
|
||||
|
||||
@@ -10,7 +10,7 @@ return [
|
||||
|
||||
// Auth
|
||||
'error_user_exists_different_creds' => 'See e-posti aadress on juba seotud teise kasutajaga.',
|
||||
'auth_pre_register_theme_prevention' => 'Etteantud detailidega kasutajakontot ei saadud registreerida',
|
||||
'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.',
|
||||
@@ -78,7 +78,7 @@ return [
|
||||
// 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 saadud luua, kuna kutse e-kirja saatmine ebaõnnestus',
|
||||
'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',
|
||||
|
||||
@@ -30,6 +30,8 @@ return [
|
||||
'create' => 'Sortu',
|
||||
'update' => 'Eguneratu',
|
||||
'edit' => 'Editatu',
|
||||
'archive' => 'Archive',
|
||||
'unarchive' => 'Un-Archive',
|
||||
'sort' => 'Ordenatu',
|
||||
'move' => 'Mugitu',
|
||||
'copy' => 'Kopiatu',
|
||||
|
||||
@@ -248,7 +248,7 @@ return [
|
||||
'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 Alpha Testing)',
|
||||
'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',
|
||||
@@ -392,8 +392,11 @@ return [
|
||||
'comment' => 'Iruzkina',
|
||||
'comments' => 'Iruzkinak',
|
||||
'comment_add' => 'Iruzkina gehitu',
|
||||
'comment_none' => 'No comments to display',
|
||||
'comment_placeholder' => 'Utzi iruzkin bat hemen',
|
||||
'comment_count' => '{0} No Comments|{1} 1 Comment|[2,*] :count Comments',
|
||||
'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',
|
||||
@@ -402,8 +405,14 @@ return [
|
||||
'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
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user