mirror of
https://github.com/BookStackApp/BookStack.git
synced 2026-02-06 00:59:39 +03:00
Compare commits
73 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
92cd11d105 | ||
|
|
13115ace84 | ||
|
|
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 | ||
|
|
73f9834e6f | ||
|
|
3afe855156 | ||
|
|
cdd446ac73 | ||
|
|
1dd1024eba | ||
|
|
752cfe2f67 | ||
|
|
25baaa8189 | ||
|
|
d2d0331782 | ||
|
|
8121418e18 | ||
|
|
5ab31a8191 | ||
|
|
0e69ab1938 | ||
|
|
058007109e | ||
|
|
32b29fcdfc | ||
|
|
8f92b6f21b | ||
|
|
62f78f1c6d | ||
|
|
f8c0aaff03 | ||
|
|
a27df485bb | ||
|
|
bfde896f0b | ||
|
|
1cdc0a7a3d | ||
|
|
3e99ce4098 | ||
|
|
d19b86640b | ||
|
|
2936ba609b | ||
|
|
ce1e20501c | ||
|
|
295532fa7a | ||
|
|
642ba668b1 | ||
|
|
4f36cdd757 | ||
|
|
8821844c4a | ||
|
|
1262083fcf | ||
|
|
c82fa33210 | ||
|
|
15c79c38db | ||
|
|
e7dcc2dcdf | ||
|
|
099f6104d0 | ||
|
|
8bdf948743 | ||
|
|
e8f44186a8 | ||
|
|
ecda4e1d6f | ||
|
|
f656a82fe7 | ||
|
|
5bfba281fc | ||
|
|
18ede9bbd3 | ||
|
|
2e7544a865 | ||
|
|
5e3c3ad634 | ||
|
|
add238fe9f | ||
|
|
8d159f77e4 | ||
|
|
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
|
||||
3
.github/translators.txt
vendored
3
.github/translators.txt
vendored
@@ -484,3 +484,6 @@ Ilya Shaulov (ishaulov) :: Russian
|
||||
Konstantin Bobkov (b.konstantv) :: Russian
|
||||
Ruben Sutter (rubensutter) :: German
|
||||
jellium :: French
|
||||
Qxlkdr :: Swedish
|
||||
Hari (muhhari) :: Indonesian
|
||||
仙君御 (xjy) :: Chinese Simplified
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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)];
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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(),
|
||||
]);
|
||||
}
|
||||
|
||||
@@ -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.
665
composer.lock
generated
665
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"
|
||||
}
|
||||
@@ -1 +1 @@
|
||||
70b9287e1ed4dfaece1e37aa2c75d714d6858c0d2a03ebf7095c15d18bd70af9
|
||||
1bfc7abbc1d913f6e98b40258cb0b440157e28e381505d10c25132c969b9eb5a
|
||||
@@ -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
|
||||
|
||||
@@ -64,7 +64,7 @@ return [
|
||||
// Auth
|
||||
'auth_login' => 'تم تسجيل الدخول',
|
||||
'auth_register' => 'سجل كمستخدم جديد',
|
||||
'auth_password_reset_request' => 'طلب رابط جديد لإعادة تعيين كلمة المرور',
|
||||
'auth_password_reset_request' => 'طلب رابط جديد لإعادة تعيين كلمة السر',
|
||||
'auth_password_reset_update' => 'إعادة تعيين كلمة مرور المستخدم',
|
||||
'mfa_setup_method' => 'طريقة المصادقة متعددة العوامل المُهيأة',
|
||||
'mfa_setup_method_notification' => 'تم إعداد المصادقة متعددة العوامل بنجاح',
|
||||
|
||||
@@ -26,7 +26,7 @@ return [
|
||||
'remember_me' => 'تذكرني',
|
||||
'ldap_email_hint' => 'الرجاء إدخال عنوان بريد إلكتروني لاستخدامه مع الحساب.',
|
||||
'create_account' => 'إنشاء حساب',
|
||||
'already_have_account' => 'لديك حساب بالفعل؟',
|
||||
'already_have_account' => 'لديك حساب مسبقاً؟',
|
||||
'dont_have_account' => 'ليس لديك حساب؟',
|
||||
'social_login' => 'تسجيل الدخول باستخدام حسابات التواصل الاجتماعي',
|
||||
'social_registration' => 'إنشاء حساب باستخدام حسابات التواصل الاجتماعي',
|
||||
@@ -45,7 +45,7 @@ return [
|
||||
|
||||
// Password Reset
|
||||
'reset_password' => 'استعادة كلمة السر',
|
||||
'reset_password_send_instructions' => 'أدخل بريدك الإلكتروني بالأسفل وسيتم إرسال رسالة برابط لاستعادة كلمة المرور.',
|
||||
'reset_password_send_instructions' => 'أدخل بريدك الإلكتروني بالأسفل وسيتم إرسال رسالة برابط لاستعادة كلمة السر.',
|
||||
'reset_password_send_button' => 'أرسل رابط الاستعادة',
|
||||
'reset_password_sent' => 'سيتم إرسال رابط إعادة تعيين كلمة السر إلى عنوان البريد الإلكتروني هذا إذا كان موجودًا في النظام.',
|
||||
'reset_password_success' => 'تمت استعادة كلمة السر بنجاح.',
|
||||
@@ -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_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 Authenticator-.',
|
||||
'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' => 'نسخ',
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -16,7 +16,7 @@ return [
|
||||
'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' => 'تم تسجيل الدخول بالفعل',
|
||||
|
||||
@@ -6,10 +6,10 @@
|
||||
*/
|
||||
return [
|
||||
|
||||
'password' => 'يجب أن تتكون كلمة المرور من ستة أحرف على الأقل وأن تطابق التأكيد.',
|
||||
'password' => 'يجب أن تتكون كلمة السر من ستة أحرف على الأقل وأن تطابق التأكيد.',
|
||||
'user' => "لم يتم العثور على مستخدم بعنوان البريد الإلكتروني المعطى.",
|
||||
'token' => 'رمز إعادة تعيين كلمة المرور غير صالح لعنوان هذا البريد الإلكتروني.',
|
||||
'sent' => 'تم إرسال رابط تجديد كلمة المرور إلى بريدكم الإلكتروني!',
|
||||
'reset' => 'تم تجديد كلمة المرور الخاصة بكم!',
|
||||
'token' => 'رمز إعادة تعيين كلمة السر غير صالح لعنوان هذا البريد الإلكتروني.',
|
||||
'sent' => 'تم إرسال رابط تجديد كلمة السر إلى بريدكم الإلكتروني!',
|
||||
'reset' => 'تم تجديد كلمة السر الخاصة بكم!',
|
||||
|
||||
];
|
||||
|
||||
@@ -220,12 +220,12 @@ return [
|
||||
'users_role' => 'أدوار المستخدمين',
|
||||
'users_role_desc' => 'حدد الأدوار التي سيتم تعيين هذا المستخدم لها. إذا تم تعيين مستخدم لأدوار متعددة ، فسيتم تكديس الأذونات من هذه الأدوار وسيتلقى كل قدرات الأدوار المعينة.',
|
||||
'users_password' => 'كلمة مرور المستخدم',
|
||||
'users_password_desc' => 'عيّن كلمة مرور لتسجيل الدخول إلى التطبيق. يجب ألا تقل عن 8 أحرف.',
|
||||
'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' => 'عند استخدام نظام مصادقة خارجي (مثل SAML2 أو OIDC أو LDAP)، يكون هذا هو المعرف الذي يربط مستخدم بوكستاك -BookStack- بحساب نظام المصادقة. يمكنك تجاهل هذا الحقل عند استخدام المصادقة الافتراضية عبر البريد الإلكتروني.',
|
||||
'users_password_warning' => 'قم بملء الحقل أدناه فقط إذا كنت ترغب في تغيير كلمة المرور لهذا المستخدم.',
|
||||
'users_password_warning' => 'قم بملء الحقل أدناه فقط إذا كنت ترغب في تغيير كلمة السر لهذا المستخدم.',
|
||||
'users_system_public' => 'هذا المستخدم يمثل أي ضيف يقوم بزيارة شيء يخصك. لا يمكن استخدامه لتسجيل الدخول ولكن يتم تعيينه تلقائياً.',
|
||||
'users_delete' => 'حذف المستخدم',
|
||||
'users_delete_named' => 'حذف المستخدم :userName',
|
||||
|
||||
@@ -113,7 +113,7 @@ return [
|
||||
// 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' => 'Archive',
|
||||
'unarchive' => 'Un-Archive',
|
||||
'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' => '(In Beta Testing)',
|
||||
'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' => 'No comments to display',
|
||||
'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 Comment Thread|:count Comment Threads',
|
||||
'comment_archived_count' => ':count Archived',
|
||||
'comment_archived_threads' => 'Archived Threads',
|
||||
'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' => 'Comment archived',
|
||||
'comment_unarchive_success' => 'Comment un-archived',
|
||||
'comment_view' => 'View comment',
|
||||
'comment_jump_to_thread' => 'Jump to thread',
|
||||
'comment_delete_confirm' => 'Opravdu chcete odstranit tento komentář?',
|
||||
'comment_in_reply_to' => 'Odpověď na :commentId',
|
||||
'comment_reference' => 'Reference',
|
||||
'comment_reference_outdated' => '(Outdated)',
|
||||
'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' => 'Sortierregel erstellt',
|
||||
'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' => 'Archive',
|
||||
'unarchive' => 'Un-Archive',
|
||||
'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' => '(In Beta Testing)',
|
||||
'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' => 'No comments to display',
|
||||
'comment_placeholder' => 'Geben Sie hier Ihre Kommentare ein',
|
||||
'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
|
||||
'comment_archived_count' => ':count Archived',
|
||||
'comment_archived_threads' => 'Archived Threads',
|
||||
'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' => 'Comment archived',
|
||||
'comment_unarchive_success' => 'Comment un-archived',
|
||||
'comment_view' => 'View comment',
|
||||
'comment_jump_to_thread' => 'Jump to thread',
|
||||
'comment_delete_confirm' => 'Möchten Sie diesen Kommentar wirklich löschen?',
|
||||
'comment_in_reply_to' => 'Antwort auf :commentId',
|
||||
'comment_reference' => 'Reference',
|
||||
'comment_reference_outdated' => '(Outdated)',
|
||||
'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' => 'Sortierregel erstellt',
|
||||
'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' => 'Archive',
|
||||
'unarchive' => 'Un-Archive',
|
||||
'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' => '(In Beta Testing)',
|
||||
'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' => 'No comments to display',
|
||||
'comment_placeholder' => 'Gib hier deine Kommentare ein',
|
||||
'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
|
||||
'comment_archived_count' => ':count Archived',
|
||||
'comment_archived_threads' => 'Archived Threads',
|
||||
'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' => 'Comment archived',
|
||||
'comment_unarchive_success' => 'Comment un-archived',
|
||||
'comment_view' => 'View comment',
|
||||
'comment_jump_to_thread' => 'Jump to thread',
|
||||
'comment_delete_confirm' => 'Möchtst du diesen Kommentar wirklich löschen?',
|
||||
'comment_in_reply_to' => 'Antwort auf :commentId',
|
||||
'comment_reference' => 'Reference',
|
||||
'comment_reference_outdated' => '(Outdated)',
|
||||
'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' => 'Archive',
|
||||
'unarchive' => 'Un-Archive',
|
||||
'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' => '(In Beta Testing)',
|
||||
'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 comments to display',
|
||||
'comment_placeholder' => 'Introduzca su comentario aquí',
|
||||
'comment_count' => '{0} Sin Comentarios|{1} 1 Comentario|[2,*] :count Comentarios',
|
||||
'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
|
||||
'comment_archived_count' => ':count Archived',
|
||||
'comment_archived_threads' => 'Archived Threads',
|
||||
'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' => 'Comment archived',
|
||||
'comment_unarchive_success' => 'Comment un-archived',
|
||||
'comment_view' => 'View comment',
|
||||
'comment_jump_to_thread' => 'Jump to thread',
|
||||
'comment_delete_confirm' => '¿Está seguro de que quiere borrar este comentario?',
|
||||
'comment_in_reply_to' => 'En respuesta a :commentId',
|
||||
'comment_reference' => 'Reference',
|
||||
'comment_reference_outdated' => '(Outdated)',
|
||||
'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' => '(In Beta Testing)',
|
||||
'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' => '(In Beta Testing)',
|
||||
'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
|
||||
|
||||
@@ -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' => 'در اینجا نظراتی که در این صفحه گذاشته شده است، مشاهده میشود. نظرات را میتوان در هنگام مشاهده صفحه ذخیره شده، اضافه و مدیریت کرد.',
|
||||
|
||||
// Revision
|
||||
|
||||
@@ -30,6 +30,8 @@ return [
|
||||
'create' => 'Luo',
|
||||
'update' => 'Päivitä',
|
||||
'edit' => 'Muokkaa',
|
||||
'archive' => 'Archive',
|
||||
'unarchive' => 'Un-Archive',
|
||||
'sort' => 'Järjestä',
|
||||
'move' => 'Siirrä',
|
||||
'copy' => 'Kopioi',
|
||||
|
||||
@@ -248,7 +248,7 @@ return [
|
||||
'pages_edit_switch_to_markdown_stable' => '(Vakaa sisältö)',
|
||||
'pages_edit_switch_to_wysiwyg' => 'Vaihda WYSIWYG-editoriin',
|
||||
'pages_edit_switch_to_new_wysiwyg' => 'Switch to new WYSIWYG',
|
||||
'pages_edit_switch_to_new_wysiwyg_desc' => '(In Alpha Testing)',
|
||||
'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
|
||||
'pages_edit_set_changelog' => 'Aseta muutosloki',
|
||||
'pages_edit_enter_changelog_desc' => 'Kirjoita lyhyt kuvaus tekemistäsi muutoksista',
|
||||
'pages_edit_enter_changelog' => 'Syötä muutosloki',
|
||||
@@ -392,8 +392,11 @@ return [
|
||||
'comment' => 'Kommentti',
|
||||
'comments' => 'Kommentit',
|
||||
'comment_add' => 'Lisää kommentti',
|
||||
'comment_none' => 'No comments to display',
|
||||
'comment_placeholder' => 'Jätä kommentti tähän',
|
||||
'comment_count' => '{0} Ei kommentteja|{1} 1 kommentti|[2,*] :count kommenttia',
|
||||
'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
|
||||
'comment_archived_count' => ':count Archived',
|
||||
'comment_archived_threads' => 'Archived Threads',
|
||||
'comment_save' => 'Tallenna kommentti',
|
||||
'comment_new' => 'Uusi kommentti',
|
||||
'comment_created' => 'kommentoi :createDiff',
|
||||
@@ -402,8 +405,14 @@ return [
|
||||
'comment_deleted_success' => 'Kommentti poistettu',
|
||||
'comment_created_success' => 'Kommentti lisätty',
|
||||
'comment_updated_success' => 'Kommentti päivitetty',
|
||||
'comment_archive_success' => 'Comment archived',
|
||||
'comment_unarchive_success' => 'Comment un-archived',
|
||||
'comment_view' => 'View comment',
|
||||
'comment_jump_to_thread' => 'Jump to thread',
|
||||
'comment_delete_confirm' => 'Haluatko varmasti poistaa tämän kommentin?',
|
||||
'comment_in_reply_to' => 'Vastaus kommenttiin :commentId',
|
||||
'comment_reference' => 'Reference',
|
||||
'comment_reference_outdated' => '(Outdated)',
|
||||
'comment_editor_explain' => 'Tässä ovat sivulle jätetyt komentit. Kommentteja voi lisätä ja hallita, kun tarkastelet tallennettua sivua.',
|
||||
|
||||
// Revision
|
||||
|
||||
@@ -30,6 +30,8 @@ return [
|
||||
'create' => 'Créer',
|
||||
'update' => 'Modifier',
|
||||
'edit' => 'Éditer',
|
||||
'archive' => 'Archiver',
|
||||
'unarchive' => 'Désarchiver',
|
||||
'sort' => 'Trier',
|
||||
'move' => 'Déplacer',
|
||||
'copy' => 'Copier',
|
||||
|
||||
@@ -248,7 +248,7 @@ return [
|
||||
'pages_edit_switch_to_markdown_stable' => '(Contenu stable)',
|
||||
'pages_edit_switch_to_wysiwyg' => 'Basculer vers l\'éditeur WYSIWYG',
|
||||
'pages_edit_switch_to_new_wysiwyg' => 'Basculer vers le nouveau WYSIWYG',
|
||||
'pages_edit_switch_to_new_wysiwyg_desc' => '(En test Alpha)',
|
||||
'pages_edit_switch_to_new_wysiwyg_desc' => '(In Beta Testing)',
|
||||
'pages_edit_set_changelog' => 'Remplir le journal des changements',
|
||||
'pages_edit_enter_changelog_desc' => 'Entrez une brève description des changements effectués',
|
||||
'pages_edit_enter_changelog' => 'Ouvrir le journal des changements',
|
||||
@@ -392,8 +392,11 @@ return [
|
||||
'comment' => 'Commentaire',
|
||||
'comments' => 'Commentaires',
|
||||
'comment_add' => 'Ajouter un commentaire',
|
||||
'comment_none' => 'Aucun commentaire à afficher',
|
||||
'comment_placeholder' => 'Entrez vos commentaires ici',
|
||||
'comment_count' => '{0} Pas de commentaires|{1} Un commentaire|[2,*] :count commentaires',
|
||||
'comment_thread_count' => ':count Comment Thread|:count Comment Threads',
|
||||
'comment_archived_count' => ':count Archivé',
|
||||
'comment_archived_threads' => 'Archived Threads',
|
||||
'comment_save' => 'Enregistrer le commentaire',
|
||||
'comment_new' => 'Nouveau commentaire',
|
||||
'comment_created' => 'commenté :createDiff',
|
||||
@@ -402,8 +405,14 @@ return [
|
||||
'comment_deleted_success' => 'Commentaire supprimé',
|
||||
'comment_created_success' => 'Commentaire ajouté',
|
||||
'comment_updated_success' => 'Commentaire mis à jour',
|
||||
'comment_archive_success' => 'Commentaire archivé',
|
||||
'comment_unarchive_success' => 'Commentaire désarchiver',
|
||||
'comment_view' => 'View comment',
|
||||
'comment_jump_to_thread' => 'Jump to thread',
|
||||
'comment_delete_confirm' => 'Êtes-vous sûr de vouloir supprimer ce commentaire ?',
|
||||
'comment_in_reply_to' => 'En réponse à :commentId',
|
||||
'comment_reference' => 'Référence',
|
||||
'comment_reference_outdated' => '(Outdated)',
|
||||
'comment_editor_explain' => 'Voici les commentaires qui ont été laissés sur cette page. Les commentaires peuvent être ajoutés et gérés en visualisant la page enregistrée.',
|
||||
|
||||
// Revision
|
||||
|
||||
@@ -30,6 +30,8 @@ return [
|
||||
'create' => 'צור',
|
||||
'update' => 'עדכן',
|
||||
'edit' => 'ערוך',
|
||||
'archive' => 'Archive',
|
||||
'unarchive' => 'Un-Archive',
|
||||
'sort' => 'מיין',
|
||||
'move' => 'הזז',
|
||||
'copy' => 'העתק',
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user