diff --git a/.env.example b/.env.example index 9e64828b5..f5e81277c 100644 --- a/.env.example +++ b/.env.example @@ -17,9 +17,13 @@ DB_USERNAME=database_username DB_PASSWORD=database_user_password # Mail system to use -# Can be 'smtp', 'mail' or 'sendmail' +# Can be 'smtp' or 'sendmail' MAIL_DRIVER=smtp +# Mail sender options +MAIL_FROM_NAME=BookStack +MAIL_FROM=bookstack@example.com + # SMTP mail options MAIL_HOST=localhost MAIL_PORT=1025 diff --git a/.env.example.complete b/.env.example.complete index 86a7351c2..472ca051b 100644 --- a/.env.example.complete +++ b/.env.example.complete @@ -238,7 +238,10 @@ DISABLE_EXTERNAL_SERVICES=false # Example: AVATAR_URL=https://seccdn.libravatar.org/avatar/${hash}?s=${size}&d=identicon AVATAR_URL= -# Enable Draw.io integration +# Enable draw.io integration +# Can simply be true/false to enable/disable the integration. +# Alternatively, It can be URL to the draw.io instance you want to use. +# For URLs, The following URL parameters should be included: embed=1&proto=json&spin=1 DRAWIO=true # Default item listing view diff --git a/.github/translators.txt b/.github/translators.txt index c8d505e82..23807a00b 100644 --- a/.github/translators.txt +++ b/.github/translators.txt @@ -69,5 +69,21 @@ dbguichu :: Chinese Simplified Randy Kim (hyunjun) :: Korean Francesco M. Taurino (ftaurino) :: Italian DanielFrederiksen :: Danish -Finn Wessel (19finnwessel6) :: German +Finn Wessel (19finnwessel6) :: German Informal; German Gustav Kånåhols (Kurbitz) :: Swedish +Vuong Trung Hieu (fpooon) :: Vietnamese +Emil Petersen (emoyly) :: Danish +mrjaboozy :: Slovenian +Statium :: Russian +Mikkel Struntze (MStruntze) :: Danish +kostefun :: Russian +Tuyen.NG (tuyendev) :: Vietnamese +Ghost_chu (dbguichu) :: Chinese Simplified +Ziipen :: Danish +Samuel Schwarz (Guiph7quan) :: Czech +Aleph (toishoki) :: Turkish +Julio Alberto García (Yllelder) :: Spanish +Rafael (raribeir) :: Portuguese, Brazilian +Hiroyuki Odake (dakesan) :: Japanese +Alex Lee (qianmengnet) :: Chinese Simplified +swinn37 :: French diff --git a/.github/workflows/phpunit.yml b/.github/workflows/phpunit.yml index f6c002c05..fa2437f37 100644 --- a/.github/workflows/phpunit.yml +++ b/.github/workflows/phpunit.yml @@ -31,6 +31,10 @@ jobs: path: ${{ steps.composer-cache.outputs.dir }} key: ${{ runner.os }}-composer-${{ matrix.php }} + - name: Start Database + run: | + sudo /etc/init.d/mysql start + - name: Setup Database run: | mysql -uroot -proot -e 'CREATE DATABASE IF NOT EXISTS `bookstack-test`;' diff --git a/app/Actions/Activity.php b/app/Actions/Activity.php index 05f0129dd..035a9cc75 100644 --- a/app/Actions/Activity.php +++ b/app/Actions/Activity.php @@ -50,10 +50,8 @@ class Activity extends Model /** * Checks if another Activity matches the general information of another. - * @param $activityB - * @return bool */ - public function isSimilarTo($activityB) + public function isSimilarTo(Activity $activityB): bool { return [$this->key, $this->entity_type, $this->entity_id] === [$activityB->key, $activityB->entity_type, $activityB->entity_id]; } diff --git a/app/Actions/ActivityService.php b/app/Actions/ActivityService.php index f56f1ca57..9b69cbb17 100644 --- a/app/Actions/ActivityService.php +++ b/app/Actions/ActivityService.php @@ -1,8 +1,9 @@ newActivityForUser($activityKey, $bookId); $entity->activity()->save($activity); @@ -37,11 +33,8 @@ class ActivityService /** * Adds a activity history with a message, without binding to a entity. - * @param string $activityKey - * @param string $message - * @param int $bookId */ - public function addMessage(string $activityKey, string $message, int $bookId = null) + public function addMessage(string $activityKey, string $message, ?int $bookId = null) { $this->newActivityForUser($activityKey, $bookId)->forceFill([ 'extra' => $message @@ -52,11 +45,8 @@ class ActivityService /** * Get a new activity instance for the current user. - * @param string $key - * @param int|null $bookId - * @return Activity */ - protected function newActivityForUser(string $key, int $bookId = null) + protected function newActivityForUser(string $key, ?int $bookId = null): Activity { return $this->activity->newInstance()->forceFill([ 'key' => strtolower($key), @@ -69,34 +59,27 @@ class ActivityService * Removes the entity attachment from each of its activities * and instead uses the 'extra' field with the entities name. * Used when an entity is deleted. - * @param \BookStack\Entities\Entity $entity - * @return mixed */ - public function removeEntity(Entity $entity) + public function removeEntity(Entity $entity): Collection { - // TODO - Rewrite to db query. - $activities = $entity->activity; - foreach ($activities as $activity) { - $activity->extra = $entity->name; - $activity->entity_id = 0; - $activity->entity_type = null; - $activity->save(); - } + $activities = $entity->activity()->get(); + $entity->activity()->update([ + 'extra' => $entity->name, + 'entity_id' => 0, + 'entity_type' => '', + ]); return $activities; } /** * Gets the latest activity. - * @param int $count - * @param int $page - * @return array */ - public function latest($count = 20, $page = 0) + public function latest(int $count = 20, int $page = 0): array { $activityList = $this->permissionService ->filterRestrictedEntityRelations($this->activity, 'activities', 'entity_id', 'entity_type') ->orderBy('created_at', 'desc') - ->with('user', 'entity') + ->with(['user', 'entity']) ->skip($count * $page) ->take($count) ->get(); @@ -107,17 +90,13 @@ class ActivityService /** * Gets the latest activity for an entity, Filtering out similar * items to prevent a message activity list. - * @param \BookStack\Entities\Entity $entity - * @param int $count - * @param int $page - * @return array */ - public function entityActivity($entity, $count = 20, $page = 1) + public function entityActivity(Entity $entity, int $count = 20, int $page = 1): array { if ($entity->isA('book')) { - $query = $this->activity->where('book_id', '=', $entity->id); + $query = $this->activity->newQuery()->where('book_id', '=', $entity->id); } else { - $query = $this->activity->where('entity_type', '=', $entity->getMorphClass()) + $query = $this->activity->newQuery()->where('entity_type', '=', $entity->getMorphClass()) ->where('entity_id', '=', $entity->id); } @@ -133,18 +112,18 @@ class ActivityService } /** - * Get latest activity for a user, Filtering out similar - * items. - * @param $user - * @param int $count - * @param int $page - * @return array + * Get latest activity for a user, Filtering out similar items. */ - public function userActivity($user, $count = 20, $page = 0) + public function userActivity(User $user, int $count = 20, int $page = 0): array { $activityList = $this->permissionService ->filterRestrictedEntityRelations($this->activity, 'activities', 'entity_id', 'entity_type') - ->orderBy('created_at', 'desc')->where('user_id', '=', $user->id)->skip($count * $page)->take($count)->get(); + ->orderBy('created_at', 'desc') + ->where('user_id', '=', $user->id) + ->skip($count * $page) + ->take($count) + ->get(); + return $this->filterSimilar($activityList); } @@ -153,29 +132,26 @@ class ActivityService * @param Activity[] $activities * @return array */ - protected function filterSimilar($activities) + protected function filterSimilar(iterable $activities): array { $newActivity = []; - $previousItem = false; + $previousItem = null; + foreach ($activities as $activityItem) { - if ($previousItem === false) { - $previousItem = $activityItem; - $newActivity[] = $activityItem; - continue; - } - if (!$activityItem->isSimilarTo($previousItem)) { + if (!$previousItem || !$activityItem->isSimilarTo($previousItem)) { $newActivity[] = $activityItem; } + $previousItem = $activityItem; } + return $newActivity; } /** * Flashes a notification message to the session if an appropriate message is available. - * @param $activityKey */ - protected function setNotification($activityKey) + protected function setNotification(string $activityKey) { $notificationTextKey = 'activities.' . $activityKey . '_notification'; if (trans()->has($notificationTextKey)) { diff --git a/app/Api/ApiDocsGenerator.php b/app/Api/ApiDocsGenerator.php index a0c45608a..ddba24bdb 100644 --- a/app/Api/ApiDocsGenerator.php +++ b/app/Api/ApiDocsGenerator.php @@ -3,6 +3,7 @@ use BookStack\Http\Controllers\Api\ApiController; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Route; +use Illuminate\Support\Str; use ReflectionClass; use ReflectionException; use ReflectionMethod; @@ -117,6 +118,7 @@ class ApiDocsGenerator 'method' => $route->methods[0], 'controller' => $controller, 'controller_method' => $controllerMethod, + 'controller_method_kebab' => Str::kebab($controllerMethod), 'base_model' => $baseModelName, ]; }); diff --git a/app/Auth/Access/SocialAuthService.php b/app/Auth/Access/SocialAuthService.php index 16815a8e1..657aae3f3 100644 --- a/app/Auth/Access/SocialAuthService.php +++ b/app/Auth/Access/SocialAuthService.php @@ -233,6 +233,9 @@ class SocialAuthService if ($driverName === 'google' && config('services.google.select_account')) { $driver->with(['prompt' => 'select_account']); } + if ($driverName === 'azure') { + $driver->with(['resource' => 'https://graph.windows.net']); + } return $driver; } diff --git a/app/Auth/User.php b/app/Auth/User.php index 28fb9c7fc..a581d9993 100644 --- a/app/Auth/User.php +++ b/app/Auth/User.php @@ -47,7 +47,10 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon * The attributes excluded from the model's JSON form. * @var array */ - protected $hidden = ['password', 'remember_token', 'system_name', 'email_confirmed', 'external_auth_id', 'email']; + protected $hidden = [ + 'password', 'remember_token', 'system_name', 'email_confirmed', 'external_auth_id', 'email', + 'created_at', 'updated_at', + ]; /** * This holds the user's permissions when loaded. diff --git a/app/Config/app.php b/app/Config/app.php index 3b7216b3d..cf34fd694 100755 --- a/app/Config/app.php +++ b/app/Config/app.php @@ -52,7 +52,7 @@ return [ 'locale' => env('APP_LANG', 'en'), // Locales available - 'locales' => ['en', 'ar', 'da', 'de', 'de_informal', 'es', 'es_AR', 'fr', 'hu', 'nl', 'pt_BR', 'sk', 'cs', 'sv', 'ko', 'ja', 'pl', 'it', 'ru', 'uk', 'zh_CN', 'zh_TW', 'tr'], + 'locales' => ['en', 'ar', 'cs', 'da', 'de', 'de_informal', 'es', 'es_AR', 'fa', 'fr', 'he', 'hu', 'it', 'ja', 'ko', 'nl', 'pt', 'pt_BR', 'sk', 'sl', 'sv', 'pl', 'ru', 'tr', 'uk', 'vi', 'zh_CN', 'zh_TW',], // Application Fallback Locale 'fallback_locale' => 'en', diff --git a/app/Console/Commands/ClearViews.php b/app/Console/Commands/ClearViews.php index 678c64d33..35356210b 100644 --- a/app/Console/Commands/ClearViews.php +++ b/app/Console/Commands/ClearViews.php @@ -18,7 +18,7 @@ class ClearViews extends Command * * @var string */ - protected $description = 'Clear all view-counts for all entities.'; + protected $description = 'Clear all view-counts for all entities'; /** * Create a new command instance. diff --git a/app/Console/Commands/CopyShelfPermissions.php b/app/Console/Commands/CopyShelfPermissions.php index d9a1c1d72..6b5d35a47 100644 --- a/app/Console/Commands/CopyShelfPermissions.php +++ b/app/Console/Commands/CopyShelfPermissions.php @@ -23,7 +23,7 @@ class CopyShelfPermissions extends Command * * @var string */ - protected $description = 'Copy shelf permissions to all child books.'; + protected $description = 'Copy shelf permissions to all child books'; /** * @var BookshelfRepo diff --git a/app/Console/Commands/DeleteUsers.php b/app/Console/Commands/DeleteUsers.php index 68c5bb738..c73c883de 100644 --- a/app/Console/Commands/DeleteUsers.php +++ b/app/Console/Commands/DeleteUsers.php @@ -25,7 +25,7 @@ class DeleteUsers extends Command * * @var string */ - protected $description = 'Delete users that are not "admin" or system users.'; + protected $description = 'Delete users that are not "admin" or system users'; public function __construct(User $user, UserRepo $userRepo) { diff --git a/app/Console/Commands/RegenerateSearch.php b/app/Console/Commands/RegenerateSearch.php index d27d73edc..dc57f2cea 100644 --- a/app/Console/Commands/RegenerateSearch.php +++ b/app/Console/Commands/RegenerateSearch.php @@ -3,6 +3,7 @@ namespace BookStack\Console\Commands; use BookStack\Entities\SearchService; +use DB; use Illuminate\Console\Command; class RegenerateSearch extends Command @@ -26,7 +27,7 @@ class RegenerateSearch extends Command /** * Create a new command instance. * - * @param \BookStack\Entities\SearchService $searchService + * @param SearchService $searchService */ public function __construct(SearchService $searchService) { @@ -41,14 +42,14 @@ class RegenerateSearch extends Command */ public function handle() { - $connection = \DB::getDefaultConnection(); + $connection = DB::getDefaultConnection(); if ($this->option('database') !== null) { - \DB::setDefaultConnection($this->option('database')); - $this->searchService->setConnection(\DB::connection($this->option('database'))); + DB::setDefaultConnection($this->option('database')); + $this->searchService->setConnection(DB::connection($this->option('database'))); } $this->searchService->indexAllEntities(); - \DB::setDefaultConnection($connection); + DB::setDefaultConnection($connection); $this->comment('Search index regenerated'); } } diff --git a/app/Console/Commands/UpdateUrl.php b/app/Console/Commands/UpdateUrl.php new file mode 100644 index 000000000..b95e277d1 --- /dev/null +++ b/app/Console/Commands/UpdateUrl.php @@ -0,0 +1,91 @@ +db = $db; + parent::__construct(); + } + + /** + * Execute the console command. + * + * @return mixed + */ + public function handle() + { + $oldUrl = str_replace("'", '', $this->argument('oldUrl')); + $newUrl = str_replace("'", '', $this->argument('newUrl')); + + $urlPattern = '/https?:\/\/(.+)/'; + if (!preg_match($urlPattern, $oldUrl) || !preg_match($urlPattern, $newUrl)) { + $this->error("The given urls are expected to be full urls starting with http:// or https://"); + return 1; + } + + if (!$this->checkUserOkayToProceed($oldUrl, $newUrl)) { + return 1; + } + + $columnsToUpdateByTable = [ + "attachments" => ["path"], + "pages" => ["html", "text", "markdown"], + "images" => ["url"], + "comments" => ["html", "text"], + ]; + + foreach ($columnsToUpdateByTable as $table => $columns) { + foreach ($columns as $column) { + $changeCount = $this->db->table($table)->update([ + $column => $this->db->raw("REPLACE({$column}, '{$oldUrl}', '{$newUrl}')") + ]); + $this->info("Updated {$changeCount} rows in {$table}->{$column}"); + } + } + + $this->info("URL update procedure complete."); + return 0; + } + + /** + * Warn the user of the dangers of this operation. + * Returns a boolean indicating if they've accepted the warnings. + */ + protected function checkUserOkayToProceed(string $oldUrl, string $newUrl): bool + { + $dangerWarning = "This will search for \"{$oldUrl}\" in your database and replace it with \"{$newUrl}\".\n"; + $dangerWarning .= "Are you sure you want to proceed?"; + $backupConfirmation = "This operation could cause issues if used incorrectly. Have you made a backup of your existing database?"; + + return $this->confirm($dangerWarning) && $this->confirm($backupConfirmation); + } +} diff --git a/app/Entities/Book.php b/app/Entities/Book.php index df0d99228..38b7d4a8c 100644 --- a/app/Entities/Book.php +++ b/app/Entities/Book.php @@ -19,7 +19,7 @@ class Book extends Entity implements HasCoverImage public $searchFactor = 2; protected $fillable = ['name', 'description']; - protected $hidden = ['restricted']; + protected $hidden = ['restricted', 'pivot']; /** * Get the url for this book. diff --git a/app/Entities/Bookshelf.php b/app/Entities/Bookshelf.php index 62c7e2fe4..c7ba840e0 100644 --- a/app/Entities/Bookshelf.php +++ b/app/Entities/Bookshelf.php @@ -12,6 +12,8 @@ class Bookshelf extends Entity implements HasCoverImage protected $fillable = ['name', 'description', 'image_id']; + protected $hidden = ['restricted']; + /** * Get the books in this shelf. * Should not be used directly since does not take into account permissions. diff --git a/app/Entities/Repos/BookshelfRepo.php b/app/Entities/Repos/BookshelfRepo.php index 25fa97dae..876f56e10 100644 --- a/app/Entities/Repos/BookshelfRepo.php +++ b/app/Entities/Repos/BookshelfRepo.php @@ -91,10 +91,14 @@ class BookshelfRepo /** * Create a new shelf in the system. */ - public function update(Bookshelf $shelf, array $input, array $bookIds): Bookshelf + public function update(Bookshelf $shelf, array $input, ?array $bookIds): Bookshelf { $this->baseRepo->update($shelf, $input); - $this->updateBooks($shelf, $bookIds); + + if (!is_null($bookIds)) { + $this->updateBooks($shelf, $bookIds); + } + return $shelf; } diff --git a/app/Http/Controllers/Api/BooksExportApiController.php b/app/Http/Controllers/Api/BooksExportApiController.php new file mode 100644 index 000000000..605f8f408 --- /dev/null +++ b/app/Http/Controllers/Api/BooksExportApiController.php @@ -0,0 +1,55 @@ +bookRepo = $bookRepo; + $this->exportService = $exportService; + parent::__construct(); + } + + /** + * Export a book as a PDF file. + * @throws Throwable + */ + public function exportPdf(int $id) + { + $book = Book::visible()->findOrFail($id); + $pdfContent = $this->exportService->bookToPdf($book); + return $this->downloadResponse($pdfContent, $book->slug . '.pdf'); + } + + /** + * Export a book as a contained HTML file. + * @throws Throwable + */ + public function exportHtml(int $id) + { + $book = Book::visible()->findOrFail($id); + $htmlContent = $this->exportService->bookToContainedHtml($book); + return $this->downloadResponse($htmlContent, $book->slug . '.html'); + } + + /** + * Export a book as a plain text file. + */ + public function exportPlainText(int $id) + { + $book = Book::visible()->findOrFail($id); + $textContent = $this->exportService->bookToPlainText($book); + return $this->downloadResponse($textContent, $book->slug . '.txt'); + } +} diff --git a/app/Http/Controllers/Api/BookshelfApiController.php b/app/Http/Controllers/Api/BookshelfApiController.php new file mode 100644 index 000000000..14b5e053b --- /dev/null +++ b/app/Http/Controllers/Api/BookshelfApiController.php @@ -0,0 +1,122 @@ + [ + 'name' => 'required|string|max:255', + 'description' => 'string|max:1000', + 'books' => 'array', + ], + 'update' => [ + 'name' => 'string|min:1|max:255', + 'description' => 'string|max:1000', + 'books' => 'array', + ], + ]; + + /** + * BookshelfApiController constructor. + * @param BookshelfRepo $bookshelfRepo + */ + public function __construct(BookshelfRepo $bookshelfRepo) + { + $this->bookshelfRepo = $bookshelfRepo; + } + + /** + * Get a listing of shelves visible to the user. + */ + public function list() + { + $shelves = Bookshelf::visible(); + return $this->apiListingResponse($shelves, [ + 'id', 'name', 'slug', 'description', 'created_at', 'updated_at', 'created_by', 'updated_by', 'image_id', + ]); + } + + /** + * Create a new shelf in the system. + * An array of books IDs can be provided in the request. These + * will be added to the shelf in the same order as provided. + * @throws ValidationException + */ + public function create(Request $request) + { + $this->checkPermission('bookshelf-create-all'); + $requestData = $this->validate($request, $this->rules['create']); + + $bookIds = $request->get('books', []); + $shelf = $this->bookshelfRepo->create($requestData, $bookIds); + + Activity::add($shelf, 'bookshelf_create', $shelf->id); + return response()->json($shelf); + } + + /** + * View the details of a single shelf. + */ + public function read(string $id) + { + $shelf = Bookshelf::visible()->with([ + 'tags', 'cover', 'createdBy', 'updatedBy', + 'books' => function (BelongsToMany $query) { + $query->visible()->get(['id', 'name', 'slug']); + } + ])->findOrFail($id); + return response()->json($shelf); + } + + /** + * Update the details of a single shelf. + * An array of books IDs can be provided in the request. These + * will be added to the shelf in the same order as provided and overwrite + * any existing book assignments. + * @throws ValidationException + */ + public function update(Request $request, string $id) + { + $shelf = Bookshelf::visible()->findOrFail($id); + $this->checkOwnablePermission('bookshelf-update', $shelf); + + $requestData = $this->validate($request, $this->rules['update']); + + $bookIds = $request->get('books', null); + + $shelf = $this->bookshelfRepo->update($shelf, $requestData, $bookIds); + Activity::add($shelf, 'bookshelf_update', $shelf->id); + + return response()->json($shelf); + } + + + + /** + * Delete a single shelf from the system. + * @throws Exception + */ + public function delete(string $id) + { + $shelf = Bookshelf::visible()->findOrFail($id); + $this->checkOwnablePermission('bookshelf-delete', $shelf); + + $this->bookshelfRepo->destroy($shelf); + Activity::addMessage('bookshelf_delete', $shelf->name); + + return response('', 204); + } +} \ No newline at end of file diff --git a/app/Http/Controllers/Auth/ForgotPasswordController.php b/app/Http/Controllers/Auth/ForgotPasswordController.php index a60fcc1c9..fadac641e 100644 --- a/app/Http/Controllers/Auth/ForgotPasswordController.php +++ b/app/Http/Controllers/Auth/ForgotPasswordController.php @@ -5,7 +5,7 @@ namespace BookStack\Http\Controllers\Auth; use BookStack\Http\Controllers\Controller; use Illuminate\Foundation\Auth\SendsPasswordResetEmails; use Illuminate\Http\Request; -use Password; +use Illuminate\Support\Facades\Password; class ForgotPasswordController extends Controller { @@ -52,8 +52,8 @@ class ForgotPasswordController extends Controller $request->only('email') ); - if ($response === Password::RESET_LINK_SENT) { - $message = trans('auth.reset_password_sent_success', ['email' => $request->get('email')]); + if ($response === Password::RESET_LINK_SENT || $response === Password::INVALID_USER) { + $message = trans('auth.reset_password_sent', ['email' => $request->get('email')]); $this->showSuccessNotification($message); return back()->with('status', trans($response)); } diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index ea584a3b6..4660c16d5 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -76,6 +76,11 @@ class LoginController extends Controller ]); } + $previous = url()->previous(''); + if (setting('app-public') && $previous && $previous !== url('/login')) { + redirect()->setIntendedUrl($previous); + } + return view('auth.login', [ 'socialDrivers' => $socialDrivers, 'authMethod' => $authMethod, diff --git a/app/Http/Controllers/Auth/ResetPasswordController.php b/app/Http/Controllers/Auth/ResetPasswordController.php index 214647cd5..efdf00159 100644 --- a/app/Http/Controllers/Auth/ResetPasswordController.php +++ b/app/Http/Controllers/Auth/ResetPasswordController.php @@ -5,6 +5,7 @@ namespace BookStack\Http\Controllers\Auth; use BookStack\Http\Controllers\Controller; use Illuminate\Foundation\Auth\ResetsPasswords; use Illuminate\Http\Request; +use Illuminate\Support\Facades\Password; class ResetPasswordController extends Controller { @@ -49,4 +50,24 @@ class ResetPasswordController extends Controller return redirect($this->redirectPath()) ->with('status', trans($response)); } + + /** + * Get the response for a failed password reset. + * + * @param \Illuminate\Http\Request $request + * @param string $response + * @return \Illuminate\Http\RedirectResponse|\Illuminate\Http\JsonResponse + */ + protected function sendResetFailedResponse(Request $request, $response) + { + // We show invalid users as invalid tokens as to not leak what + // users may exist in the system. + if ($response === Password::INVALID_USER) { + $response = Password::INVALID_TOKEN; + } + + return redirect()->back() + ->withInput($request->only('email')) + ->withErrors(['email' => trans($response)]); + } } diff --git a/app/Http/Controllers/Auth/SocialController.php b/app/Http/Controllers/Auth/SocialController.php index ae7a1bc06..0c53c9233 100644 --- a/app/Http/Controllers/Auth/SocialController.php +++ b/app/Http/Controllers/Auth/SocialController.php @@ -123,6 +123,11 @@ class SocialController extends Controller 'password' => Str::random(32) ]; + // Take name from email address if empty + if (!$userData['name']) { + $userData['name'] = explode('@', $userData['email'])[0]; + } + $user = $this->registrationService->registerUser($userData, $socialAccount, $emailVerified); auth()->login($user); diff --git a/app/Http/Controllers/BookController.php b/app/Http/Controllers/BookController.php index e7d788d91..1643c62f9 100644 --- a/app/Http/Controllers/BookController.php +++ b/app/Http/Controllers/BookController.php @@ -86,7 +86,7 @@ class BookController extends Controller $this->validate($request, [ 'name' => 'required|string|max:255', 'description' => 'string|max:1000', - 'image' => $this->getImageValidationRules(), + 'image' => 'nullable|' . $this->getImageValidationRules(), ]); $bookshelf = null; @@ -114,6 +114,7 @@ class BookController extends Controller { $book = $this->bookRepo->getBySlug($slug); $bookChildren = (new BookContents($book))->getTree(true); + $bookParentShelves = $book->shelves()->visible()->get(); Views::add($book); if ($request->has('shelf')) { @@ -125,6 +126,7 @@ class BookController extends Controller 'book' => $book, 'current' => $book, 'bookChildren' => $bookChildren, + 'bookParentShelves' => $bookParentShelves, 'activity' => Activity::entityActivity($book, 20, 1) ]); } @@ -153,7 +155,7 @@ class BookController extends Controller $this->validate($request, [ 'name' => 'required|string|max:255', 'description' => 'string|max:1000', - 'image' => $this->getImageValidationRules(), + 'image' => 'nullable|' . $this->getImageValidationRules(), ]); $book = $this->bookRepo->update($book, $request->all()); diff --git a/app/Http/Controllers/BookshelfController.php b/app/Http/Controllers/BookshelfController.php index c882ca7c3..f2cc11c7b 100644 --- a/app/Http/Controllers/BookshelfController.php +++ b/app/Http/Controllers/BookshelfController.php @@ -85,7 +85,7 @@ class BookshelfController extends Controller $this->validate($request, [ 'name' => 'required|string|max:255', 'description' => 'string|max:1000', - 'image' => $this->getImageValidationRules(), + 'image' => 'nullable|' . $this->getImageValidationRules(), ]); $bookIds = explode(',', $request->get('books', '')); @@ -107,10 +107,12 @@ class BookshelfController extends Controller Views::add($shelf); $this->entityContextManager->setShelfContext($shelf->id); + $view = setting()->getForCurrentUser('bookshelf_view_type', config('app.views.books')); $this->setPageTitle($shelf->getShortName()); return view('shelves.show', [ 'shelf' => $shelf, + 'view' => $view, 'activity' => Activity::entityActivity($shelf, 20, 1) ]); } @@ -146,7 +148,7 @@ class BookshelfController extends Controller $this->validate($request, [ 'name' => 'required|string|max:255', 'description' => 'string|max:1000', - 'image' => $this->imageRepo->getImageValidationRules(), + 'image' => 'nullable|' . $this->getImageValidationRules(), ]); diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index b9576f2fe..2e8e8ed2e 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -195,6 +195,6 @@ abstract class Controller extends BaseController */ protected function getImageValidationRules(): string { - return 'image_extension|no_double_extension|mimes:jpeg,png,gif,bmp,webp,tiff'; + return 'image_extension|no_double_extension|mimes:jpeg,png,gif,webp'; } } diff --git a/app/Http/Controllers/Images/DrawioImageController.php b/app/Http/Controllers/Images/DrawioImageController.php index 3595790f7..106dfd630 100644 --- a/app/Http/Controllers/Images/DrawioImageController.php +++ b/app/Http/Controllers/Images/DrawioImageController.php @@ -4,6 +4,7 @@ namespace BookStack\Http\Controllers\Images; use BookStack\Exceptions\ImageUploadException; use BookStack\Uploads\ImageRepo; +use Exception; use Illuminate\Http\Request; use BookStack\Http\Controllers\Controller; @@ -11,10 +12,6 @@ class DrawioImageController extends Controller { protected $imageRepo; - /** - * DrawioImageController constructor. - * @param ImageRepo $imageRepo - */ public function __construct(ImageRepo $imageRepo) { $this->imageRepo = $imageRepo; @@ -24,8 +21,6 @@ class DrawioImageController extends Controller /** * Get a list of gallery images, in a list. * Can be paged and filtered by entity. - * @param Request $request - * @return \Illuminate\Http\JsonResponse */ public function list(Request $request) { @@ -40,9 +35,7 @@ class DrawioImageController extends Controller /** * Store a new gallery image in the system. - * @param Request $request - * @return Illuminate\Http\JsonResponse - * @throws \Exception + * @throws Exception */ public function create(Request $request) { @@ -66,8 +59,6 @@ class DrawioImageController extends Controller /** * Get the content of an image based64 encoded. - * @param $id - * @return \Illuminate\Http\JsonResponse|mixed */ public function getAsBase64($id) { diff --git a/app/Http/Controllers/Images/GalleryImageController.php b/app/Http/Controllers/Images/GalleryImageController.php index fd52ffd3f..e506215ca 100644 --- a/app/Http/Controllers/Images/GalleryImageController.php +++ b/app/Http/Controllers/Images/GalleryImageController.php @@ -48,7 +48,7 @@ class GalleryImageController extends Controller { $this->checkPermission('image-create-all'); $this->validate($request, [ - 'file' => $this->imageRepo->getImageValidationRules() + 'file' => $this->getImageValidationRules() ]); try { diff --git a/app/Http/Controllers/SettingController.php b/app/Http/Controllers/SettingController.php index 00dd60ac7..feb6521f3 100644 --- a/app/Http/Controllers/SettingController.php +++ b/app/Http/Controllers/SettingController.php @@ -44,7 +44,7 @@ class SettingController extends Controller $this->preventAccessInDemoMode(); $this->checkPermission('settings-manage'); $this->validate($request, [ - 'app_logo' => $this->imageRepo->getImageValidationRules(), + 'app_logo' => 'nullable|' . $this->getImageValidationRules(), ]); // Cycles through posted settings and update them @@ -57,7 +57,7 @@ class SettingController extends Controller } // Update logo image if set - if ($request->has('app_logo')) { + if ($request->hasFile('app_logo')) { $logoFile = $request->file('app_logo'); $this->imageRepo->destroyByType('system'); $image = $this->imageRepo->saveNew($logoFile, 'system', 0, null, 86); diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 207466f38..43cbad1fb 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -7,7 +7,6 @@ use BookStack\Auth\UserRepo; use BookStack\Exceptions\UserUpdateException; use BookStack\Uploads\ImageRepo; use Illuminate\Http\Request; -use Illuminate\Http\Response; use Illuminate\Support\Str; class UserController extends Controller @@ -20,10 +19,6 @@ class UserController extends Controller /** * UserController constructor. - * @param User $user - * @param UserRepo $userRepo - * @param UserInviteService $inviteService - * @param ImageRepo $imageRepo */ public function __construct(User $user, UserRepo $userRepo, UserInviteService $inviteService, ImageRepo $imageRepo) { @@ -36,8 +31,6 @@ class UserController extends Controller /** * Display a listing of the users. - * @param Request $request - * @return Response */ public function index(Request $request) { @@ -55,7 +48,6 @@ class UserController extends Controller /** * Show the form for creating a new user. - * @return Response */ public function create() { @@ -67,9 +59,8 @@ class UserController extends Controller /** * Store a newly created user in storage. - * @param Request $request - * @return Response * @throws UserUpdateException + * @throws \Illuminate\Validation\ValidationException */ public function store(Request $request) { @@ -138,13 +129,11 @@ class UserController extends Controller /** * Update the specified user in storage. - * @param Request $request - * @param int $id - * @return Response * @throws UserUpdateException * @throws \BookStack\Exceptions\ImageUploadException + * @throws \Illuminate\Validation\ValidationException */ - public function update(Request $request, $id) + public function update(Request $request, int $id) { $this->preventAccessInDemoMode(); $this->checkPermissionOrCurrentUser('users-manage', $id); @@ -155,7 +144,7 @@ class UserController extends Controller 'password' => 'min:6|required_with:password_confirm', 'password-confirm' => 'same:password|required_with:password', 'setting' => 'array', - 'profile_image' => $this->imageRepo->getImageValidationRules(), + 'profile_image' => 'nullable|' . $this->getImageValidationRules(), ]); $user = $this->userRepo->getById($id); @@ -191,7 +180,7 @@ class UserController extends Controller } // Save profile image if in request - if ($request->has('profile_image')) { + if ($request->hasFile('profile_image')) { $imageUpload = $request->file('profile_image'); $this->imageRepo->destroyImage($user->avatar); $image = $this->imageRepo->saveNew($imageUpload, 'user', $user->id); @@ -212,10 +201,8 @@ class UserController extends Controller /** * Show the user delete page. - * @param int $id - * @return \Illuminate\View\View */ - public function delete($id) + public function delete(int $id) { $this->checkPermissionOrCurrentUser('users-manage', $id); @@ -226,11 +213,9 @@ class UserController extends Controller /** * Remove the specified user from storage. - * @param int $id - * @return Response * @throws \Exception */ - public function destroy($id) + public function destroy(int $id) { $this->preventAccessInDemoMode(); $this->checkPermissionOrCurrentUser('users-manage', $id); @@ -255,8 +240,6 @@ class UserController extends Controller /** * Show the user profile page - * @param $id - * @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View */ public function showProfilePage($id) { @@ -276,34 +259,32 @@ class UserController extends Controller /** * Update the user's preferred book-list display setting. - * @param Request $request - * @param $id - * @return \Illuminate\Http\RedirectResponse */ - public function switchBookView(Request $request, $id) + public function switchBooksView(Request $request, int $id) { return $this->switchViewType($id, $request, 'books'); } /** * Update the user's preferred shelf-list display setting. - * @param Request $request - * @param $id - * @return \Illuminate\Http\RedirectResponse */ - public function switchShelfView(Request $request, $id) + public function switchShelvesView(Request $request, int $id) { return $this->switchViewType($id, $request, 'bookshelves'); } /** - * For a type of list, switch with stored view type for a user. - * @param integer $userId - * @param Request $request - * @param string $listName - * @return \Illuminate\Http\RedirectResponse + * Update the user's preferred shelf-view book list display setting. */ - protected function switchViewType($userId, Request $request, string $listName) + public function switchShelfView(Request $request, int $id) + { + return $this->switchViewType($id, $request, 'bookshelf'); + } + + /** + * For a type of list, switch with stored view type for a user. + */ + protected function switchViewType(int $userId, Request $request, string $listName) { $this->checkPermissionOrCurrentUser('users-manage', $userId); @@ -321,10 +302,6 @@ class UserController extends Controller /** * Change the stored sort type for a particular view. - * @param Request $request - * @param string $id - * @param string $type - * @return \Illuminate\Http\RedirectResponse */ public function changeSort(Request $request, string $id, string $type) { @@ -337,10 +314,6 @@ class UserController extends Controller /** * Update the stored section expansion preference for the given user. - * @param Request $request - * @param string $id - * @param string $key - * @return \Illuminate\Contracts\Routing\ResponseFactory|\Symfony\Component\HttpFoundation\Response */ public function updateExpansionPreference(Request $request, string $id, string $key) { @@ -359,10 +332,6 @@ class UserController extends Controller /** * Changed the stored preference for a list sort order. - * @param int $userId - * @param Request $request - * @param string $listName - * @return \Illuminate\Http\RedirectResponse */ protected function changeListSort(int $userId, Request $request, string $listName) { diff --git a/app/Http/Middleware/Localization.php b/app/Http/Middleware/Localization.php index f36d72725..d24e8a9b5 100644 --- a/app/Http/Middleware/Localization.php +++ b/app/Http/Middleware/Localization.php @@ -11,7 +11,7 @@ class Localization * Array of right-to-left locales * @var array */ - protected $rtlLocales = ['ar']; + protected $rtlLocales = ['ar', 'he']; /** * Map of BookStack locale names to best-estimate system locale names. @@ -26,16 +26,20 @@ class Localization 'es' => 'es_ES', 'es_AR' => 'es_AR', 'fr' => 'fr_FR', + 'he' => 'he_IL', 'it' => 'it_IT', 'ja' => 'ja', 'ko' => 'ko_KR', 'nl' => 'nl_NL', 'pl' => 'pl_PL', + 'pt' => 'pl_PT', 'pt_BR' => 'pt_BR', 'ru' => 'ru', 'sk' => 'sk_SK', + 'sl' => 'sl_SI', 'sv' => 'sv_SE', 'uk' => 'uk_UA', + 'vi' => 'vi_VN', 'zh_CN' => 'zh_CN', 'zh_TW' => 'zh_TW', 'tr' => 'tr_TR', diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 3a1b4f42e..1cc3e09c2 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -34,7 +34,7 @@ class AppServiceProvider extends ServiceProvider // Custom validation methods Validator::extend('image_extension', function ($attribute, $value, $parameters, $validator) { - $validImageExtensions = ['png', 'jpg', 'jpeg', 'bmp', 'gif', 'tiff', 'webp']; + $validImageExtensions = ['png', 'jpg', 'jpeg', 'gif', 'webp']; return in_array(strtolower($value->getClientOriginalExtension()), $validImageExtensions); }); diff --git a/app/Uploads/ImageRepo.php b/app/Uploads/ImageRepo.php index 01b65f882..b7a21809f 100644 --- a/app/Uploads/ImageRepo.php +++ b/app/Uploads/ImageRepo.php @@ -138,7 +138,7 @@ class ImageRepo */ public function saveDrawing(string $base64Uri, int $uploadedTo): Image { - $name = 'Drawing-' . user()->getShortName(40) . '-' . strval(time()) . '.png'; + $name = 'Drawing-' . strval(user()->id) . '-' . strval(time()) . '.png'; return $this->imageService->saveNewFromBase64Uri($base64Uri, $name, 'drawio', $uploadedTo); } @@ -219,12 +219,4 @@ class ImageRepo return null; } } - - /** - * Get the validation rules for image files. - */ - public function getImageValidationRules(): string - { - return 'image_extension|no_double_extension|mimes:jpeg,png,gif,bmp,webp,tiff'; - } } diff --git a/composer.json b/composer.json index 0edf7bae8..6da651898 100644 --- a/composer.json +++ b/composer.json @@ -20,7 +20,7 @@ "gathercontent/htmldiff": "^0.2.1", "intervention/image": "^2.5", "laravel/framework": "^6.12", - "laravel/socialite": "^4.2", + "laravel/socialite": "^4.3.2", "league/flysystem-aws-s3-v3": "^1.0", "onelogin/php-saml": "^3.3", "predis/predis": "^1.1", diff --git a/composer.lock b/composer.lock index c35b3f962..fd444ffa8 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "309610dc13c0d46ca7553ee264a88d29", + "content-hash": "7836017e48e93254d6ff924b07f84597", "packages": [ { "name": "aws/aws-sdk-php", - "version": "3.133.6", + "version": "3.134.3", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "cd7bd2fdd159146ef6c7eeb90b73fae4fd11da57" + "reference": "3de2711a47e7c3f5e93a5c83f019188fd23f852f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/cd7bd2fdd159146ef6c7eeb90b73fae4fd11da57", - "reference": "cd7bd2fdd159146ef6c7eeb90b73fae4fd11da57", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/3de2711a47e7c3f5e93a5c83f019188fd23f852f", + "reference": "3de2711a47e7c3f5e93a5c83f019188fd23f852f", "shasum": "" }, "require": { @@ -88,25 +88,25 @@ "s3", "sdk" ], - "time": "2020-01-24T19:11:35+00:00" + "time": "2020-04-03T18:11:51+00:00" }, { "name": "barryvdh/laravel-dompdf", - "version": "v0.8.5", + "version": "v0.8.6", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-dompdf.git", - "reference": "7393732b2f3a3ee357974cbb0c46c9b65b84dad1" + "reference": "d7108f78cf5254a2d8c224542967f133e5a6d4e8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/7393732b2f3a3ee357974cbb0c46c9b65b84dad1", - "reference": "7393732b2f3a3ee357974cbb0c46c9b65b84dad1", + "url": "https://api.github.com/repos/barryvdh/laravel-dompdf/zipball/d7108f78cf5254a2d8c224542967f133e5a6d4e8", + "reference": "d7108f78cf5254a2d8c224542967f133e5a6d4e8", "shasum": "" }, "require": { "dompdf/dompdf": "^0.8", - "illuminate/support": "^5.5|^6", + "illuminate/support": "^5.5|^6|^7", "php": ">=7" }, "type": "library", @@ -144,25 +144,25 @@ "laravel", "pdf" ], - "time": "2019-08-23T14:30:33+00:00" + "time": "2020-02-25T20:44:34+00:00" }, { "name": "barryvdh/laravel-snappy", - "version": "v0.4.6", + "version": "v0.4.7", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-snappy.git", - "reference": "94d53c88fa58baa4573c5854663ebc9955f21265" + "reference": "c412d0c8f40b1326ba0fb16e94957fd1e68374f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-snappy/zipball/94d53c88fa58baa4573c5854663ebc9955f21265", - "reference": "94d53c88fa58baa4573c5854663ebc9955f21265", + "url": "https://api.github.com/repos/barryvdh/laravel-snappy/zipball/c412d0c8f40b1326ba0fb16e94957fd1e68374f0", + "reference": "c412d0c8f40b1326ba0fb16e94957fd1e68374f0", "shasum": "" }, "require": { - "illuminate/filesystem": "5.5.x|5.6.x|5.7.x|5.8.x|6.*", - "illuminate/support": "5.5.x|5.6.x|5.7.x|5.8.x|6.*", + "illuminate/filesystem": "^5.5|^6|^7", + "illuminate/support": "^5.5|^6|^7", "knplabs/knp-snappy": "^1", "php": ">=7" }, @@ -205,7 +205,7 @@ "wkhtmltoimage", "wkhtmltopdf" ], - "time": "2019-10-02T23:27:09+00:00" + "time": "2020-02-25T20:52:15+00:00" }, { "name": "cogpowered/finediff", @@ -639,16 +639,16 @@ }, { "name": "dompdf/dompdf", - "version": "v0.8.4", + "version": "v0.8.5", "source": { "type": "git", "url": "https://github.com/dompdf/dompdf.git", - "reference": "8f49b3b01693f51037dd50da81090beba1b5c005" + "reference": "6782abfc090b132134cd6cea0ec6d76f0fce2c56" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dompdf/dompdf/zipball/8f49b3b01693f51037dd50da81090beba1b5c005", - "reference": "8f49b3b01693f51037dd50da81090beba1b5c005", + "url": "https://api.github.com/repos/dompdf/dompdf/zipball/6782abfc090b132134cd6cea0ec6d76f0fce2c56", + "reference": "6782abfc090b132134cd6cea0ec6d76f0fce2c56", "shasum": "" }, "require": { @@ -701,7 +701,7 @@ ], "description": "DOMPDF is a CSS 2.1 compliant HTML to PDF converter", "homepage": "https://github.com/dompdf/dompdf", - "time": "2020-01-20T17:00:46+00:00" + "time": "2020-02-20T03:52:51+00:00" }, { "name": "dragonmantank/cron-expression", @@ -759,16 +759,16 @@ }, { "name": "egulias/email-validator", - "version": "2.1.15", + "version": "2.1.17", "source": { "type": "git", "url": "https://github.com/egulias/EmailValidator.git", - "reference": "e834eea5306d85d67de5a05db5882911d5b29357" + "reference": "ade6887fd9bd74177769645ab5c474824f8a418a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/e834eea5306d85d67de5a05db5882911d5b29357", - "reference": "e834eea5306d85d67de5a05db5882911d5b29357", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ade6887fd9bd74177769645ab5c474824f8a418a", + "reference": "ade6887fd9bd74177769645ab5c474824f8a418a", "shasum": "" }, "require": { @@ -813,27 +813,27 @@ "validation", "validator" ], - "time": "2020-01-20T21:40:59+00:00" + "time": "2020-02-13T22:36:52+00:00" }, { "name": "facade/flare-client-php", - "version": "1.3.1", + "version": "1.3.2", "source": { "type": "git", "url": "https://github.com/facade/flare-client-php.git", - "reference": "24444ea0e1556f0a4b5fc8e61802caf72ae9a408" + "reference": "db1e03426e7f9472c9ecd1092aff00f56aa6c004" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/flare-client-php/zipball/24444ea0e1556f0a4b5fc8e61802caf72ae9a408", - "reference": "24444ea0e1556f0a4b5fc8e61802caf72ae9a408", + "url": "https://api.github.com/repos/facade/flare-client-php/zipball/db1e03426e7f9472c9ecd1092aff00f56aa6c004", + "reference": "db1e03426e7f9472c9ecd1092aff00f56aa6c004", "shasum": "" }, "require": { "facade/ignition-contracts": "~1.0", - "illuminate/pipeline": "~5.5|~5.6|~5.7|~5.8|^6.0", + "illuminate/pipeline": "^5.5|^6.0|^7.0", "php": "^7.1", - "symfony/http-foundation": "~3.3|~4.1", + "symfony/http-foundation": "^3.3|^4.1|^5.0", "symfony/var-dumper": "^3.4|^4.0|^5.0" }, "require-dev": { @@ -867,20 +867,20 @@ "flare", "reporting" ], - "time": "2019-12-15T18:28:38+00:00" + "time": "2020-03-02T15:52:04+00:00" }, { "name": "facade/ignition", - "version": "1.16.0", + "version": "1.16.1", "source": { "type": "git", "url": "https://github.com/facade/ignition.git", - "reference": "37f094775814b68d0c6cc8b8ff3c3be243f20725" + "reference": "af05ac5ee8587395d7474ec0681c08776a2cb09d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/facade/ignition/zipball/37f094775814b68d0c6cc8b8ff3c3be243f20725", - "reference": "37f094775814b68d0c6cc8b8ff3c3be243f20725", + "url": "https://api.github.com/repos/facade/ignition/zipball/af05ac5ee8587395d7474ec0681c08776a2cb09d", + "reference": "af05ac5ee8587395d7474ec0681c08776a2cb09d", "shasum": "" }, "require": { @@ -907,7 +907,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "v2.x-dev" + "dev-master": "1.x-dev" }, "laravel": { "providers": [ @@ -938,7 +938,7 @@ "laravel", "page" ], - "time": "2020-01-21T17:46:02+00:00" + "time": "2020-03-05T12:39:07+00:00" }, { "name": "facade/ignition-contracts", @@ -986,24 +986,24 @@ }, { "name": "fideloper/proxy", - "version": "4.2.2", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/fideloper/TrustedProxy.git", - "reference": "790194d5d3da89a713478875d2e2d05855a90a81" + "reference": "ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/790194d5d3da89a713478875d2e2d05855a90a81", - "reference": "790194d5d3da89a713478875d2e2d05855a90a81", + "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a", + "reference": "ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a", "shasum": "" }, "require": { - "illuminate/contracts": "^5.0|^6.0|^7.0", + "illuminate/contracts": "^5.0|^6.0|^7.0|^8.0", "php": ">=5.4.0" }, "require-dev": { - "illuminate/http": "^5.0|^6.0|^7.0", + "illuminate/http": "^5.0|^6.0|^7.0|^8.0", "mockery/mockery": "^1.0", "phpunit/phpunit": "^6.0" }, @@ -1036,7 +1036,7 @@ "proxy", "trusted proxy" ], - "time": "2019-12-20T13:11:11+00:00" + "time": "2020-02-22T01:51:47+00:00" }, { "name": "filp/whoops", @@ -1447,6 +1447,7 @@ "email": "jakub.onderka@gmail.com" } ], + "abandoned": "php-parallel-lint/php-console-color", "time": "2018-09-29T17:23:10+00:00" }, { @@ -1493,6 +1494,7 @@ } ], "description": "Highlight PHP code in terminal", + "abandoned": "php-parallel-lint/php-console-highlighter", "time": "2018-09-29T18:48:56+00:00" }, { @@ -1563,16 +1565,16 @@ }, { "name": "laravel/framework", - "version": "v6.12.0", + "version": "v6.18.3", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "8e189a8dee7ff76bf50acb7e80aa1a36afaf54d4" + "reference": "4e48acfaba87f08320a2764d36c3b6a4a4112ccf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/8e189a8dee7ff76bf50acb7e80aa1a36afaf54d4", - "reference": "8e189a8dee7ff76bf50acb7e80aa1a36afaf54d4", + "url": "https://api.github.com/repos/laravel/framework/zipball/4e48acfaba87f08320a2764d36c3b6a4a4112ccf", + "reference": "4e48acfaba87f08320a2764d36c3b6a4a4112ccf", "shasum": "" }, "require": { @@ -1582,8 +1584,7 @@ "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", - "league/commonmark": "^1.1", - "league/commonmark-ext-table": "^2.1", + "league/commonmark": "^1.3", "league/flysystem": "^1.0.8", "monolog/monolog": "^1.12|^2.0", "nesbot/carbon": "^2.0", @@ -1641,7 +1642,7 @@ "aws/aws-sdk-php": "^3.0", "doctrine/dbal": "^2.6", "filp/whoops": "^2.4", - "guzzlehttp/guzzle": "^6.3", + "guzzlehttp/guzzle": "^6.3|^7.0", "league/flysystem-cached-adapter": "^1.0", "mockery/mockery": "^1.3.1", "moontoast/math": "^1.1", @@ -1658,11 +1659,11 @@ "ext-memcached": "Required to use the memcache cache driver.", "ext-pcntl": "Required to use all features of the queue worker.", "ext-posix": "Required to use all features of the queue worker.", - "ext-redis": "Required to use the Redis cache and queue drivers.", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", "filp/whoops": "Required for friendly error pages in development (^2.4).", - "fzaninotto/faker": "Required to use the eloquent factory builder (^1.4).", - "guzzlehttp/guzzle": "Required to use the Mailgun mail driver and the ping methods on schedules (^6.0).", - "laravel/tinker": "Required to use the tinker console command (^1.0).", + "fzaninotto/faker": "Required to use the eloquent factory builder (^1.9.1).", + "guzzlehttp/guzzle": "Required to use the Mailgun mail driver and the ping methods on schedules (^6.0|^7.0).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", @@ -1706,20 +1707,20 @@ "framework", "laravel" ], - "time": "2020-01-21T15:10:03+00:00" + "time": "2020-03-24T16:37:50+00:00" }, { "name": "laravel/socialite", - "version": "v4.3.1", + "version": "v4.3.2", "source": { "type": "git", "url": "https://github.com/laravel/socialite.git", - "reference": "2d670d5b100ef2dc72dc578126b2b97985791f52" + "reference": "4bd66ee416fea04398dee5b8c32d65719a075db4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/socialite/zipball/2d670d5b100ef2dc72dc578126b2b97985791f52", - "reference": "2d670d5b100ef2dc72dc578126b2b97985791f52", + "url": "https://api.github.com/repos/laravel/socialite/zipball/4bd66ee416fea04398dee5b8c32d65719a075db4", + "reference": "4bd66ee416fea04398dee5b8c32d65719a075db4", "shasum": "" }, "require": { @@ -1738,7 +1739,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.x-dev" }, "laravel": { "providers": [ @@ -1770,34 +1771,35 @@ "laravel", "oauth" ], - "time": "2019-11-26T17:39:15+00:00" + "time": "2020-02-04T15:30:01+00:00" }, { "name": "league/commonmark", - "version": "1.2.2", + "version": "1.3.2", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "34cf4ddb3892c715ae785c880e6691d839cff88d" + "reference": "75542a366ccbe1896ed79fcf3e8e68206d6c4257" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/34cf4ddb3892c715ae785c880e6691d839cff88d", - "reference": "34cf4ddb3892c715ae785c880e6691d839cff88d", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/75542a366ccbe1896ed79fcf3e8e68206d6c4257", + "reference": "75542a366ccbe1896ed79fcf3e8e68206d6c4257", "shasum": "" }, "require": { "ext-mbstring": "*", "php": "^7.1" }, - "replace": { - "colinodell/commonmark-php": "*" + "conflict": { + "scrutinizer/ocular": "1.7.*" }, "require-dev": { "cebe/markdown": "~1.0", "commonmark/commonmark.js": "0.29.1", "erusev/parsedown": "~1.0", "ext-json": "*", + "github/gfm": "0.29.0", "michelf/php-markdown": "~1.4", "mikehaertl/php-shellcommand": "^1.4", "phpstan/phpstan-shim": "^0.11.5", @@ -1805,16 +1807,13 @@ "scrutinizer/ocular": "^1.5", "symfony/finder": "^4.2" }, - "suggest": { - "league/commonmark-extras": "Library of useful extensions including smart punctuation" - }, "bin": [ "bin/commonmark" ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "1.4-dev" } }, "autoload": { @@ -1834,92 +1833,32 @@ "role": "Lead Developer" } ], - "description": "PHP Markdown parser based on the CommonMark spec", + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and Github-Flavored Markdown (GFM)", "homepage": "https://commonmark.thephpleague.com", "keywords": [ "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", "markdown", + "md", "parser" ], - "time": "2020-01-16T01:18:13+00:00" - }, - { - "name": "league/commonmark-ext-table", - "version": "v2.1.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/commonmark-ext-table.git", - "reference": "3228888ea69636e855efcf6636ff8e6316933fe7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark-ext-table/zipball/3228888ea69636e855efcf6636ff8e6316933fe7", - "reference": "3228888ea69636e855efcf6636ff8e6316933fe7", - "shasum": "" - }, - "require": { - "league/commonmark": "~0.19.3|^1.0", - "php": "^7.1" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.14", - "phpstan/phpstan": "~0.11", - "phpunit/phpunit": "^7.0|^8.0", - "symfony/var-dumper": "^4.0", - "vimeo/psalm": "^3.0" - }, - "type": "commonmark-extension", - "extra": { - "branch-alias": { - "dev-master": "2.2-dev" - } - }, - "autoload": { - "psr-4": { - "League\\CommonMark\\Ext\\Table\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Martin Hasoň", - "email": "martin.hason@gmail.com" - }, - { - "name": "Webuni s.r.o.", - "homepage": "https://www.webuni.cz" - }, - { - "name": "Colin O'Dell", - "email": "colinodell@gmail.com", - "homepage": "https://www.colinodell.com" - } - ], - "description": "Table extension for league/commonmark", - "homepage": "https://github.com/thephpleague/commonmark-ext-table", - "keywords": [ - "commonmark", - "extension", - "markdown", - "table" - ], - "time": "2019-09-26T13:28:33+00:00" + "time": "2020-03-25T19:55:28+00:00" }, { "name": "league/flysystem", - "version": "1.0.63", + "version": "1.0.66", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "8132daec326565036bc8e8d1876f77ec183a7bd6" + "reference": "021569195e15f8209b1c4bebb78bd66aa4f08c21" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/8132daec326565036bc8e8d1876f77ec183a7bd6", - "reference": "8132daec326565036bc8e8d1876f77ec183a7bd6", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/021569195e15f8209b1c4bebb78bd66aa4f08c21", + "reference": "021569195e15f8209b1c4bebb78bd66aa4f08c21", "shasum": "" }, "require": { @@ -1931,7 +1870,7 @@ }, "require-dev": { "phpspec/phpspec": "^3.4", - "phpunit/phpunit": "^5.7.10" + "phpunit/phpunit": "^5.7.26" }, "suggest": { "ext-fileinfo": "Required for MimeType", @@ -1990,20 +1929,20 @@ "sftp", "storage" ], - "time": "2020-01-04T16:30:31+00:00" + "time": "2020-03-17T18:58:12+00:00" }, { "name": "league/flysystem-aws-s3-v3", - "version": "1.0.23", + "version": "1.0.24", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem-aws-s3-v3.git", - "reference": "15b0cdeab7240bf8e8bffa85ae5275bbc3692bf4" + "reference": "4382036bde5dc926f9b8b337e5bdb15e5ec7b570" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/15b0cdeab7240bf8e8bffa85ae5275bbc3692bf4", - "reference": "15b0cdeab7240bf8e8bffa85ae5275bbc3692bf4", + "url": "https://api.github.com/repos/thephpleague/flysystem-aws-s3-v3/zipball/4382036bde5dc926f9b8b337e5bdb15e5ec7b570", + "reference": "4382036bde5dc926f9b8b337e5bdb15e5ec7b570", "shasum": "" }, "require": { @@ -2037,7 +1976,7 @@ } ], "description": "Flysystem adapter for the AWS S3 SDK v3.x", - "time": "2019-06-05T17:18:29+00:00" + "time": "2020-02-23T13:31:58+00:00" }, { "name": "league/oauth1-client", @@ -2242,16 +2181,16 @@ }, { "name": "nesbot/carbon", - "version": "2.29.1", + "version": "2.32.2", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "e509be5bf2d703390e69e14496d9a1168452b0a2" + "reference": "f10e22cf546704fab1db4ad4b9dedbc5c797a0dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e509be5bf2d703390e69e14496d9a1168452b0a2", - "reference": "e509be5bf2d703390e69e14496d9a1168452b0a2", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/f10e22cf546704fab1db4ad4b9dedbc5c797a0dc", + "reference": "f10e22cf546704fab1db4ad4b9dedbc5c797a0dc", "shasum": "" }, "require": { @@ -2260,6 +2199,7 @@ "symfony/translation": "^3.4 || ^4.0 || ^5.0" }, "require-dev": { + "doctrine/orm": "^2.7", "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", "kylekatarnls/multi-tester": "^1.1", "phpmd/phpmd": "^2.8", @@ -2308,7 +2248,7 @@ "datetime", "time" ], - "time": "2020-01-21T09:36:43+00:00" + "time": "2020-03-31T13:43:19+00:00" }, { "name": "nunomaduro/collision", @@ -2609,20 +2549,20 @@ }, { "name": "phpoption/phpoption", - "version": "1.7.2", + "version": "1.7.3", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959" + "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959", - "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/4acfd6a4b33a509d8c88f50e5222f734b6aeebae", + "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0" + "php": "^5.5.9 || ^7.0 || ^8.0" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.3", @@ -2660,7 +2600,7 @@ "php", "type" ], - "time": "2019-12-15T19:35:24+00:00" + "time": "2020-03-21T18:07:53+00:00" }, { "name": "predis/predis", @@ -2813,16 +2753,16 @@ }, { "name": "psr/log", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", - "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", "shasum": "" }, "require": { @@ -2856,7 +2796,7 @@ "psr", "psr-3" ], - "time": "2019-11-01T11:05:21+00:00" + "time": "2020-03-23T09:12:05+00:00" }, { "name": "psr/simple-cache", @@ -2948,16 +2888,16 @@ }, { "name": "ramsey/uuid", - "version": "3.9.2", + "version": "3.9.3", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "7779489a47d443f845271badbdcedfe4df8e06fb" + "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/7779489a47d443f845271badbdcedfe4df8e06fb", - "reference": "7779489a47d443f845271badbdcedfe4df8e06fb", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/7e1633a6964b48589b142d60542f9ed31bd37a92", + "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92", "shasum": "" }, "require": { @@ -3031,7 +2971,7 @@ "identifier", "uuid" ], - "time": "2019-12-17T08:18:51+00:00" + "time": "2020-02-21T04:36:14+00:00" }, { "name": "robrichards/xmlseclibs", @@ -3118,16 +3058,16 @@ }, { "name": "scrivo/highlight.php", - "version": "v9.17.1.0", + "version": "v9.18.1.1", "source": { "type": "git", "url": "https://github.com/scrivo/highlight.php.git", - "reference": "5451a9ad6d638559cf2a092880f935c39776134e" + "reference": "52fc21c99fd888e33aed4879e55a3646f8d40558" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/5451a9ad6d638559cf2a092880f935c39776134e", - "reference": "5451a9ad6d638559cf2a092880f935c39776134e", + "url": "https://api.github.com/repos/scrivo/highlight.php/zipball/52fc21c99fd888e33aed4879e55a3646f8d40558", + "reference": "52fc21c99fd888e33aed4879e55a3646f8d40558", "shasum": "" }, "require": { @@ -3137,8 +3077,9 @@ }, "require-dev": { "phpunit/phpunit": "^4.8|^5.7", - "symfony/finder": "^3.4", - "symfony/var-dumper": "^3.4" + "sabberworm/php-css-parser": "^8.3", + "symfony/finder": "^2.8|^3.4", + "symfony/var-dumper": "^2.8|^3.4" }, "suggest": { "ext-dom": "Needed to make use of the features in the utilities namespace" @@ -3182,7 +3123,7 @@ "highlight.php", "syntax" ], - "time": "2019-12-13T21:54:06+00:00" + "time": "2020-03-02T05:59:21+00:00" }, { "name": "socialiteproviders/discord", @@ -3260,20 +3201,20 @@ }, { "name": "socialiteproviders/manager", - "version": "v3.4.3", + "version": "v3.5", "source": { "type": "git", "url": "https://github.com/SocialiteProviders/Manager.git", - "reference": "09903d33429f9f6c0da32c545c036a3e18964bbf" + "reference": "7a5872d9e4b22bb26ecd0c69ea9ddbaad8c0f570" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/09903d33429f9f6c0da32c545c036a3e18964bbf", - "reference": "09903d33429f9f6c0da32c545c036a3e18964bbf", + "url": "https://api.github.com/repos/SocialiteProviders/Manager/zipball/7a5872d9e4b22bb26ecd0c69ea9ddbaad8c0f570", + "reference": "7a5872d9e4b22bb26ecd0c69ea9ddbaad8c0f570", "shasum": "" }, "require": { - "illuminate/support": "~5.4|~5.7.0|~5.8.0|^6.0", + "illuminate/support": "~5.4|~5.7.0|~5.8.0|^6.0|^7.0", "laravel/socialite": "~3.0|~4.0", "php": "^5.6 || ^7.0" }, @@ -3313,7 +3254,7 @@ } ], "description": "Easily add new or override built-in providers in Laravel Socialite.", - "time": "2019-09-25T06:06:35+00:00" + "time": "2020-03-08T16:54:44+00:00" }, { "name": "socialiteproviders/microsoft-azure", @@ -3527,16 +3468,16 @@ }, { "name": "symfony/console", - "version": "v4.4.3", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "e9ee09d087e2c88eaf6e5fc0f5c574f64d100e4f" + "reference": "10bb3ee3c97308869d53b3e3d03f6ac23ff985f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/e9ee09d087e2c88eaf6e5fc0f5c574f64d100e4f", - "reference": "e9ee09d087e2c88eaf6e5fc0f5c574f64d100e4f", + "url": "https://api.github.com/repos/symfony/console/zipball/10bb3ee3c97308869d53b3e3d03f6ac23ff985f7", + "reference": "10bb3ee3c97308869d53b3e3d03f6ac23ff985f7", "shasum": "" }, "require": { @@ -3599,20 +3540,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2020-01-10T21:54:01+00:00" + "time": "2020-03-30T11:41:10+00:00" }, { "name": "symfony/css-selector", - "version": "v4.4.3", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "a167b1860995b926d279f9bb538f873e3bfa3465" + "reference": "afc26133a6fbdd4f8842e38893e0ee4685c7c94b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/a167b1860995b926d279f9bb538f873e3bfa3465", - "reference": "a167b1860995b926d279f9bb538f873e3bfa3465", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/afc26133a6fbdd4f8842e38893e0ee4685c7c94b", + "reference": "afc26133a6fbdd4f8842e38893e0ee4685c7c94b", "shasum": "" }, "require": { @@ -3652,20 +3593,20 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2020-01-04T13:00:46+00:00" + "time": "2020-03-27T16:54:36+00:00" }, { "name": "symfony/debug", - "version": "v4.4.3", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "89c3fd5c299b940333bc6fe9f1b8db1b0912c759" + "reference": "346636d2cae417992ecfd761979b2ab98b339a45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/89c3fd5c299b940333bc6fe9f1b8db1b0912c759", - "reference": "89c3fd5c299b940333bc6fe9f1b8db1b0912c759", + "url": "https://api.github.com/repos/symfony/debug/zipball/346636d2cae417992ecfd761979b2ab98b339a45", + "reference": "346636d2cae417992ecfd761979b2ab98b339a45", "shasum": "" }, "require": { @@ -3708,26 +3649,26 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2020-01-08T17:29:02+00:00" + "time": "2020-03-27T16:54:36+00:00" }, { "name": "symfony/error-handler", - "version": "v4.4.3", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "a59789092e40ad08465dc2cdc55651be503d0d5a" + "reference": "7e9828fc98aa1cf27b422fe478a84f5b0abb7358" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/a59789092e40ad08465dc2cdc55651be503d0d5a", - "reference": "a59789092e40ad08465dc2cdc55651be503d0d5a", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/7e9828fc98aa1cf27b422fe478a84f5b0abb7358", + "reference": "7e9828fc98aa1cf27b422fe478a84f5b0abb7358", "shasum": "" }, "require": { "php": "^7.1.3", "psr/log": "~1.0", - "symfony/debug": "^4.4", + "symfony/debug": "^4.4.5", "symfony/var-dumper": "^4.4|^5.0" }, "require-dev": { @@ -3764,20 +3705,20 @@ ], "description": "Symfony ErrorHandler Component", "homepage": "https://symfony.com", - "time": "2020-01-08T17:29:02+00:00" + "time": "2020-03-30T14:07:33+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.3", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "9e3de195e5bc301704dd6915df55892f6dfc208b" + "reference": "abc8e3618bfdb55e44c8c6a00abd333f831bbfed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9e3de195e5bc301704dd6915df55892f6dfc208b", - "reference": "9e3de195e5bc301704dd6915df55892f6dfc208b", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/abc8e3618bfdb55e44c8c6a00abd333f831bbfed", + "reference": "abc8e3618bfdb55e44c8c6a00abd333f831bbfed", "shasum": "" }, "require": { @@ -3834,7 +3775,7 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2020-01-10T21:54:01+00:00" + "time": "2020-03-27T16:54:36+00:00" }, { "name": "symfony/event-dispatcher-contracts", @@ -3896,16 +3837,16 @@ }, { "name": "symfony/finder", - "version": "v4.4.3", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "3a50be43515590faf812fbd7708200aabc327ec3" + "reference": "5729f943f9854c5781984ed4907bbb817735776b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/3a50be43515590faf812fbd7708200aabc327ec3", - "reference": "3a50be43515590faf812fbd7708200aabc327ec3", + "url": "https://api.github.com/repos/symfony/finder/zipball/5729f943f9854c5781984ed4907bbb817735776b", + "reference": "5729f943f9854c5781984ed4907bbb817735776b", "shasum": "" }, "require": { @@ -3941,20 +3882,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2020-01-04T13:00:46+00:00" + "time": "2020-03-27T16:54:36+00:00" }, { "name": "symfony/http-foundation", - "version": "v4.4.3", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "c33998709f3fe9b8e27e0277535b07fbf6fde37a" + "reference": "62f92509c9abfd1f73e17b8cf1b72c0bdac6611b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c33998709f3fe9b8e27e0277535b07fbf6fde37a", - "reference": "c33998709f3fe9b8e27e0277535b07fbf6fde37a", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/62f92509c9abfd1f73e17b8cf1b72c0bdac6611b", + "reference": "62f92509c9abfd1f73e17b8cf1b72c0bdac6611b", "shasum": "" }, "require": { @@ -3996,20 +3937,20 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2020-01-04T13:00:46+00:00" + "time": "2020-03-30T14:07:33+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.3", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "16f2aa3c54b08483fba5375938f60b1ff83b6bd2" + "reference": "f356a489e51856b99908005eb7f2c51a1dfc95dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/16f2aa3c54b08483fba5375938f60b1ff83b6bd2", - "reference": "16f2aa3c54b08483fba5375938f60b1ff83b6bd2", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f356a489e51856b99908005eb7f2c51a1dfc95dc", + "reference": "f356a489e51856b99908005eb7f2c51a1dfc95dc", "shasum": "" }, "require": { @@ -4086,20 +4027,20 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2020-01-21T13:23:17+00:00" + "time": "2020-03-30T14:59:15+00:00" }, { "name": "symfony/mime", - "version": "v4.4.3", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "225034620ecd4b34fd826e9983d85e2b7a359094" + "reference": "6dde9dc70155e91b850b1d009d1f841c54bc4aba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/225034620ecd4b34fd826e9983d85e2b7a359094", - "reference": "225034620ecd4b34fd826e9983d85e2b7a359094", + "url": "https://api.github.com/repos/symfony/mime/zipball/6dde9dc70155e91b850b1d009d1f841c54bc4aba", + "reference": "6dde9dc70155e91b850b1d009d1f841c54bc4aba", "shasum": "" }, "require": { @@ -4148,20 +4089,20 @@ "mime", "mime-type" ], - "time": "2020-01-04T13:00:46+00:00" + "time": "2020-03-27T16:54:36+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.13.1", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3" + "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", - "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/4719fa9c18b0464d399f1a63bf624b42b6fa8d14", + "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14", "shasum": "" }, "require": { @@ -4173,7 +4114,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "1.15-dev" } }, "autoload": { @@ -4206,20 +4147,20 @@ "polyfill", "portable" ], - "time": "2019-11-27T13:56:44+00:00" + "time": "2020-02-27T09:26:54+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.13.1", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "a019efccc03f1a335af6b4f20c30f5ea8060be36" + "reference": "ad6d62792bfbcfc385dd34b424d4fcf9712a32c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/a019efccc03f1a335af6b4f20c30f5ea8060be36", - "reference": "a019efccc03f1a335af6b4f20c30f5ea8060be36", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/ad6d62792bfbcfc385dd34b424d4fcf9712a32c8", + "reference": "ad6d62792bfbcfc385dd34b424d4fcf9712a32c8", "shasum": "" }, "require": { @@ -4231,7 +4172,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "1.15-dev" } }, "autoload": { @@ -4265,26 +4206,26 @@ "portable", "shim" ], - "time": "2019-11-27T13:56:44+00:00" + "time": "2020-03-09T19:04:49+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.13.1", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46" + "reference": "47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6f9c239e61e1b0c9229a28ff89a812dc449c3d46", - "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf", + "reference": "47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf", "shasum": "" }, "require": { "php": ">=5.3.3", "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php72": "^1.9" + "symfony/polyfill-php72": "^1.10" }, "suggest": { "ext-intl": "For best performance" @@ -4292,7 +4233,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "1.15-dev" } }, "autoload": { @@ -4327,20 +4268,20 @@ "portable", "shim" ], - "time": "2019-11-27T13:56:44+00:00" + "time": "2020-03-09T19:04:49+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.13.1", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" + "reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", - "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/81ffd3a9c6d707be22e3012b827de1c9775fc5ac", + "reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac", "shasum": "" }, "require": { @@ -4352,7 +4293,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "1.15-dev" } }, "autoload": { @@ -4386,20 +4327,20 @@ "portable", "shim" ], - "time": "2019-11-27T14:18:11+00:00" + "time": "2020-03-09T19:04:49+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.13.1", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038" + "reference": "37b0976c78b94856543260ce09b460a7bc852747" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/66fea50f6cb37a35eea048d75a7d99a45b586038", - "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/37b0976c78b94856543260ce09b460a7bc852747", + "reference": "37b0976c78b94856543260ce09b460a7bc852747", "shasum": "" }, "require": { @@ -4408,7 +4349,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "1.15-dev" } }, "autoload": { @@ -4441,20 +4382,20 @@ "portable", "shim" ], - "time": "2019-11-27T13:56:44+00:00" + "time": "2020-02-27T09:26:54+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.13.1", + "version": "v1.15.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f" + "reference": "0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/4b0e2222c55a25b4541305a053013d5647d3a25f", - "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7", + "reference": "0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7", "shasum": "" }, "require": { @@ -4463,7 +4404,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.13-dev" + "dev-master": "1.15-dev" } }, "autoload": { @@ -4499,20 +4440,20 @@ "portable", "shim" ], - "time": "2019-11-27T16:25:15+00:00" + "time": "2020-02-27T09:26:54+00:00" }, { "name": "symfony/process", - "version": "v4.4.3", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "f5697ab4cb14a5deed7473819e63141bf5352c36" + "reference": "3e40e87a20eaf83a1db825e1fa5097ae89042db3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/f5697ab4cb14a5deed7473819e63141bf5352c36", - "reference": "f5697ab4cb14a5deed7473819e63141bf5352c36", + "url": "https://api.github.com/repos/symfony/process/zipball/3e40e87a20eaf83a1db825e1fa5097ae89042db3", + "reference": "3e40e87a20eaf83a1db825e1fa5097ae89042db3", "shasum": "" }, "require": { @@ -4548,20 +4489,20 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2020-01-09T09:50:08+00:00" + "time": "2020-03-27T16:54:36+00:00" }, { "name": "symfony/routing", - "version": "v4.4.3", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "7bf4e38573728e317b926ca4482ad30470d0e86a" + "reference": "0f562fa613e288d7dbae6c63abbc9b33ed75a8f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/7bf4e38573728e317b926ca4482ad30470d0e86a", - "reference": "7bf4e38573728e317b926ca4482ad30470d0e86a", + "url": "https://api.github.com/repos/symfony/routing/zipball/0f562fa613e288d7dbae6c63abbc9b33ed75a8f8", + "reference": "0f562fa613e288d7dbae6c63abbc9b33ed75a8f8", "shasum": "" }, "require": { @@ -4624,7 +4565,7 @@ "uri", "url" ], - "time": "2020-01-08T17:29:02+00:00" + "time": "2020-03-30T11:41:10+00:00" }, { "name": "symfony/service-contracts", @@ -4686,16 +4627,16 @@ }, { "name": "symfony/translation", - "version": "v4.4.3", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "f5d2ac46930238b30a9c2f1b17c905f3697d808c" + "reference": "4e54d336f2eca5facad449d0b0118bb449375b76" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/f5d2ac46930238b30a9c2f1b17c905f3697d808c", - "reference": "f5d2ac46930238b30a9c2f1b17c905f3697d808c", + "url": "https://api.github.com/repos/symfony/translation/zipball/4e54d336f2eca5facad449d0b0118bb449375b76", + "reference": "4e54d336f2eca5facad449d0b0118bb449375b76", "shasum": "" }, "require": { @@ -4758,7 +4699,7 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2020-01-15T13:29:06+00:00" + "time": "2020-03-27T16:54:36+00:00" }, { "name": "symfony/translation-contracts", @@ -4819,16 +4760,16 @@ }, { "name": "symfony/var-dumper", - "version": "v4.4.3", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "7cfa470bc3b1887a7b2a47c0a702a84ad614fa92" + "reference": "5a0c2d93006131a36cf6f767d10e2ca8333b0d4a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/7cfa470bc3b1887a7b2a47c0a702a84ad614fa92", - "reference": "7cfa470bc3b1887a7b2a47c0a702a84ad614fa92", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/5a0c2d93006131a36cf6f767d10e2ca8333b0d4a", + "reference": "5a0c2d93006131a36cf6f767d10e2ca8333b0d4a", "shasum": "" }, "require": { @@ -4891,7 +4832,7 @@ "debug", "dump" ], - "time": "2020-01-04T13:00:46+00:00" + "time": "2020-03-27T16:54:36+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -4944,16 +4885,16 @@ }, { "name": "vlucas/phpdotenv", - "version": "v3.6.0", + "version": "v3.6.2", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156" + "reference": "786a947e57086cf236cefdee80784634224b99fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1bdf24f065975594f6a117f0f1f6cabf1333b156", - "reference": "1bdf24f065975594f6a117f0f1f6cabf1333b156", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/786a947e57086cf236cefdee80784634224b99fa", + "reference": "786a947e57086cf236cefdee80784634224b99fa", "shasum": "" }, "require": { @@ -4962,8 +4903,14 @@ "symfony/polyfill-ctype": "^1.9" }, "require-dev": { + "ext-filter": "*", + "ext-pcre": "*", "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" }, + "suggest": { + "ext-filter": "Required to use the boolean validator.", + "ext-pcre": "Required to use most of the library." + }, "type": "library", "extra": { "branch-alias": { @@ -4997,32 +4944,32 @@ "env", "environment" ], - "time": "2019-09-10T21:37:39+00:00" + "time": "2020-03-27T23:36:02+00:00" } ], "packages-dev": [ { "name": "barryvdh/laravel-debugbar", - "version": "v3.2.8", + "version": "v3.2.9", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-debugbar.git", - "reference": "18208d64897ab732f6c04a19b319fe8f1d57a9c0" + "reference": "42d5da5379a7860093f8e4032167e4cb5ebec180" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/18208d64897ab732f6c04a19b319fe8f1d57a9c0", - "reference": "18208d64897ab732f6c04a19b319fe8f1d57a9c0", + "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/42d5da5379a7860093f8e4032167e4cb5ebec180", + "reference": "42d5da5379a7860093f8e4032167e4cb5ebec180", "shasum": "" }, "require": { - "illuminate/routing": "^5.5|^6", - "illuminate/session": "^5.5|^6", - "illuminate/support": "^5.5|^6", - "maximebf/debugbar": "~1.15.0", + "illuminate/routing": "^5.5|^6|^7", + "illuminate/session": "^5.5|^6|^7", + "illuminate/support": "^5.5|^6|^7", + "maximebf/debugbar": "^1.15.1", "php": ">=7.0", - "symfony/debug": "^3|^4", - "symfony/finder": "^3|^4" + "symfony/debug": "^3|^4|^5", + "symfony/finder": "^3|^4|^5" }, "require-dev": { "laravel/framework": "5.5.x" @@ -5067,37 +5014,37 @@ "profiler", "webprofiler" ], - "time": "2019-08-29T07:01:03+00:00" + "time": "2020-02-25T20:42:23+00:00" }, { "name": "barryvdh/laravel-ide-helper", - "version": "v2.6.6", + "version": "v2.6.7", "source": { "type": "git", "url": "https://github.com/barryvdh/laravel-ide-helper.git", - "reference": "b91b959364d97af658f268c733c75dccdbff197e" + "reference": "edd69c5e0508972c81f1f7173236de2459c45814" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/b91b959364d97af658f268c733c75dccdbff197e", - "reference": "b91b959364d97af658f268c733c75dccdbff197e", + "url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/edd69c5e0508972c81f1f7173236de2459c45814", + "reference": "edd69c5e0508972c81f1f7173236de2459c45814", "shasum": "" }, "require": { "barryvdh/reflection-docblock": "^2.0.6", "composer/composer": "^1.6", "doctrine/dbal": "~2.3", - "illuminate/console": "^5.5|^6", - "illuminate/filesystem": "^5.5|^6", - "illuminate/support": "^5.5|^6", - "php": ">=7" + "illuminate/console": "^5.5|^6|^7", + "illuminate/filesystem": "^5.5|^6|^7", + "illuminate/support": "^5.5|^6|^7", + "php": ">=7.2" }, "require-dev": { - "illuminate/config": "^5.5|^6", - "illuminate/view": "^5.5|^6", - "phpro/grumphp": "^0.14", - "phpunit/phpunit": "4.*", - "scrutinizer/ocular": "~1.1", + "illuminate/config": "^5.5|^6|^7", + "illuminate/view": "^5.5|^6|^7", + "mockery/mockery": "^1.3", + "orchestra/testbench": "^3|^4", + "phpro/grumphp": "^0.17.1", "squizlabs/php_codesniffer": "^3" }, "type": "library", @@ -5138,7 +5085,7 @@ "phpstorm", "sublime" ], - "time": "2019-10-30T20:53:27+00:00" + "time": "2020-02-25T20:41:32+00:00" }, { "name": "barryvdh/reflection-docblock", @@ -5247,16 +5194,16 @@ }, { "name": "composer/composer", - "version": "1.9.2", + "version": "1.10.1", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "7a04aa0201ddaa0b3cf64d41022bd8cdcd7fafeb" + "reference": "b912a45da3e2b22f5cb5a23e441b697a295ba011" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/7a04aa0201ddaa0b3cf64d41022bd8cdcd7fafeb", - "reference": "7a04aa0201ddaa0b3cf64d41022bd8cdcd7fafeb", + "url": "https://api.github.com/repos/composer/composer/zipball/b912a45da3e2b22f5cb5a23e441b697a295ba011", + "reference": "b912a45da3e2b22f5cb5a23e441b697a295ba011", "shasum": "" }, "require": { @@ -5269,17 +5216,17 @@ "psr/log": "^1.0", "seld/jsonlint": "^1.4", "seld/phar-utils": "^1.0", - "symfony/console": "^2.7 || ^3.0 || ^4.0", - "symfony/filesystem": "^2.7 || ^3.0 || ^4.0", - "symfony/finder": "^2.7 || ^3.0 || ^4.0", - "symfony/process": "^2.7 || ^3.0 || ^4.0" + "symfony/console": "^2.7 || ^3.0 || ^4.0 || ^5.0", + "symfony/filesystem": "^2.7 || ^3.0 || ^4.0 || ^5.0", + "symfony/finder": "^2.7 || ^3.0 || ^4.0 || ^5.0", + "symfony/process": "^2.7 || ^3.0 || ^4.0 || ^5.0" }, "conflict": { "symfony/console": "2.8.38" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7", - "phpunit/phpunit-mock-objects": "^2.3 || ^3.0" + "phpspec/prophecy": "^1.10", + "symfony/phpunit-bridge": "^3.4" }, "suggest": { "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", @@ -5292,7 +5239,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "1.10-dev" } }, "autoload": { @@ -5323,7 +5270,7 @@ "dependency", "package" ], - "time": "2020-01-14T15:30:32+00:00" + "time": "2020-03-13T19:34:27+00:00" }, { "name": "composer/semver", @@ -5388,16 +5335,16 @@ }, { "name": "composer/spdx-licenses", - "version": "1.5.2", + "version": "1.5.3", "source": { "type": "git", "url": "https://github.com/composer/spdx-licenses.git", - "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5" + "reference": "0c3e51e1880ca149682332770e25977c70cf9dae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/7ac1e6aec371357df067f8a688c3d6974df68fa5", - "reference": "7ac1e6aec371357df067f8a688c3d6974df68fa5", + "url": "https://api.github.com/repos/composer/spdx-licenses/zipball/0c3e51e1880ca149682332770e25977c70cf9dae", + "reference": "0c3e51e1880ca149682332770e25977c70cf9dae", "shasum": "" }, "require": { @@ -5444,20 +5391,20 @@ "spdx", "validator" ], - "time": "2019-07-29T10:31:59+00:00" + "time": "2020-02-14T07:44:31+00:00" }, { "name": "composer/xdebug-handler", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "cbe23383749496fe0f373345208b79568e4bc248" + "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/cbe23383749496fe0f373345208b79568e4bc248", - "reference": "cbe23383749496fe0f373345208b79568e4bc248", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/1ab9842d69e64fb3a01be6b656501032d1b78cb7", + "reference": "1ab9842d69e64fb3a01be6b656501032d1b78cb7", "shasum": "" }, "require": { @@ -5488,7 +5435,7 @@ "Xdebug", "performance" ], - "time": "2019-11-06T16:40:04+00:00" + "time": "2020-03-01T12:26:26+00:00" }, { "name": "doctrine/instantiator", @@ -5773,22 +5720,22 @@ }, { "name": "maximebf/debugbar", - "version": "v1.15.1", + "version": "v1.16.1", "source": { "type": "git", "url": "https://github.com/maximebf/php-debugbar.git", - "reference": "6c4277f6117e4864966c9cb58fb835cee8c74a1e" + "reference": "58998b818c6567fac01e35b8a4b70c1a64530556" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/6c4277f6117e4864966c9cb58fb835cee8c74a1e", - "reference": "6c4277f6117e4864966c9cb58fb835cee8c74a1e", + "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/58998b818c6567fac01e35b8a4b70c1a64530556", + "reference": "58998b818c6567fac01e35b8a4b70c1a64530556", "shasum": "" }, "require": { - "php": ">=5.6", + "php": "^7.1", "psr/log": "^1.0", - "symfony/var-dumper": "^2.6|^3|^4" + "symfony/var-dumper": "^2.6|^3|^4|^5" }, "require-dev": { "phpunit/phpunit": "^5" @@ -5801,7 +5748,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.15-dev" + "dev-master": "1.16-dev" } }, "autoload": { @@ -5830,7 +5777,7 @@ "debug", "debugbar" ], - "time": "2019-09-24T14:55:42+00:00" + "time": "2019-11-24T09:46:11+00:00" }, { "name": "mockery/mockery", @@ -6101,41 +6048,38 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.4", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c" + "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c", - "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", + "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", "shasum": "" }, "require": { - "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", - "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", - "webmozart/assert": "^1.0" + "ext-filter": "^7.1", + "php": "^7.2", + "phpdocumentor/reflection-common": "^2.0", + "phpdocumentor/type-resolver": "^1.0", + "webmozart/assert": "^1" }, "require-dev": { - "doctrine/instantiator": "^1.0.5", - "mockery/mockery": "^1.0", - "phpdocumentor/type-resolver": "0.4.*", - "phpunit/phpunit": "^6.4" + "doctrine/instantiator": "^1", + "mockery/mockery": "^1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.x-dev" + "dev-master": "5.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -6146,33 +6090,36 @@ { "name": "Mike van Riel", "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2019-12-28T18:55:12+00:00" + "time": "2020-02-22T12:28:44+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "1.0.1", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" + "reference": "7462d5f123dfc080dfdf26897032a6513644fc95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", - "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95", + "reference": "7462d5f123dfc080dfdf26897032a6513644fc95", "shasum": "" }, "require": { - "php": "^7.1", + "php": "^7.2", "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "ext-tokenizer": "^7.1", - "mockery/mockery": "~1", - "phpunit/phpunit": "^7.0" + "ext-tokenizer": "^7.2", + "mockery/mockery": "~1" }, "type": "library", "extra": { @@ -6196,7 +6143,7 @@ } ], "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "time": "2019-08-22T18:11:29+00:00" + "time": "2020-02-18T18:59:58+00:00" }, { "name": "phploc/phploc", @@ -6249,16 +6196,16 @@ }, { "name": "phpspec/prophecy", - "version": "v1.10.2", + "version": "v1.10.3", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9" + "reference": "451c3cd1418cf640de218914901e51b064abb093" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b4400efc9d206e83138e2bb97ed7f5b14b831cd9", - "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", + "reference": "451c3cd1418cf640de218914901e51b064abb093", "shasum": "" }, "require": { @@ -6308,7 +6255,7 @@ "spy", "stub" ], - "time": "2020-01-20T15:57:02+00:00" + "time": "2020-03-05T15:02:03+00:00" }, { "name": "phpunit/php-code-coverage", @@ -6564,16 +6511,16 @@ }, { "name": "phpunit/phpunit", - "version": "8.5.2", + "version": "8.5.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0" + "reference": "67750516bc02f300e2742fed2f50177f8f37bedf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/018b6ac3c8ab20916db85fa91bf6465acb64d1e0", - "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/67750516bc02f300e2742fed2f50177f8f37bedf", + "reference": "67750516bc02f300e2742fed2f50177f8f37bedf", "shasum": "" }, "require": { @@ -6643,7 +6590,7 @@ "testing", "xunit" ], - "time": "2020-01-08T08:49:49+00:00" + "time": "2020-03-31T08:52:04+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -7354,16 +7301,16 @@ }, { "name": "seld/phar-utils", - "version": "1.0.2", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/Seldaek/phar-utils.git", - "reference": "84715761c35808076b00908a20317a3a8a67d17e" + "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/84715761c35808076b00908a20317a3a8a67d17e", - "reference": "84715761c35808076b00908a20317a3a8a67d17e", + "url": "https://api.github.com/repos/Seldaek/phar-utils/zipball/8800503d56b9867d43d9c303b9cbcc26016e82f0", + "reference": "8800503d56b9867d43d9c303b9cbcc26016e82f0", "shasum": "" }, "require": { @@ -7392,22 +7339,22 @@ ], "description": "PHAR file format utilities, for when PHP phars you up", "keywords": [ - "phra" + "phar" ], - "time": "2020-01-13T10:41:09+00:00" + "time": "2020-02-14T15:25:33+00:00" }, { "name": "squizlabs/php_codesniffer", - "version": "3.5.3", + "version": "3.5.4", "source": { "type": "git", "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb" + "reference": "dceec07328401de6211037abbb18bda423677e26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/557a1fc7ac702c66b0bbfe16ab3d55839ef724cb", - "reference": "557a1fc7ac702c66b0bbfe16ab3d55839ef724cb", + "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/dceec07328401de6211037abbb18bda423677e26", + "reference": "dceec07328401de6211037abbb18bda423677e26", "shasum": "" }, "require": { @@ -7445,20 +7392,20 @@ "phpcs", "standards" ], - "time": "2019-12-04T04:46:47+00:00" + "time": "2020-01-30T22:20:29+00:00" }, { "name": "symfony/dom-crawler", - "version": "v4.4.3", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "b66fe8ccc850ea11c4cd31677706c1219768bea1" + "reference": "4d0fb3374324071ecdd94898367a3fa4b5563162" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/b66fe8ccc850ea11c4cd31677706c1219768bea1", - "reference": "b66fe8ccc850ea11c4cd31677706c1219768bea1", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/4d0fb3374324071ecdd94898367a3fa4b5563162", + "reference": "4d0fb3374324071ecdd94898367a3fa4b5563162", "shasum": "" }, "require": { @@ -7506,20 +7453,20 @@ ], "description": "Symfony DomCrawler Component", "homepage": "https://symfony.com", - "time": "2020-01-04T13:00:46+00:00" + "time": "2020-03-29T19:12:22+00:00" }, { "name": "symfony/filesystem", - "version": "v4.4.3", + "version": "v4.4.7", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "266c9540b475f26122b61ef8b23dd9198f5d1cfd" + "reference": "fe297193bf2e6866ed900ed2d5869362768df6a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/266c9540b475f26122b61ef8b23dd9198f5d1cfd", - "reference": "266c9540b475f26122b61ef8b23dd9198f5d1cfd", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/fe297193bf2e6866ed900ed2d5869362768df6a7", + "reference": "fe297193bf2e6866ed900ed2d5869362768df6a7", "shasum": "" }, "require": { @@ -7556,7 +7503,7 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2020-01-21T08:20:44+00:00" + "time": "2020-03-27T16:54:36+00:00" }, { "name": "theseer/fdomdocument", @@ -7640,16 +7587,16 @@ }, { "name": "webmozart/assert", - "version": "1.6.0", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "573381c0a64f155a0d9a23f4b0c797194805b925" + "reference": "aed98a490f9a8f78468232db345ab9cf606cf598" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/573381c0a64f155a0d9a23f4b0c797194805b925", - "reference": "573381c0a64f155a0d9a23f4b0c797194805b925", + "url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598", + "reference": "aed98a490f9a8f78468232db345ab9cf606cf598", "shasum": "" }, "require": { @@ -7684,35 +7631,36 @@ "check", "validate" ], - "time": "2019-11-24T13:36:37+00:00" + "time": "2020-02-14T12:15:55+00:00" }, { "name": "wnx/laravel-stats", - "version": "v2.0.0", + "version": "v2.0.2", "source": { "type": "git", "url": "https://github.com/stefanzweifel/laravel-stats.git", - "reference": "1b3c60bfbf81233973cbc2a63be4e6f83b2d6205" + "reference": "e86ebfdd149383b18a41fe3efa1601d82d447140" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/stefanzweifel/laravel-stats/zipball/1b3c60bfbf81233973cbc2a63be4e6f83b2d6205", - "reference": "1b3c60bfbf81233973cbc2a63be4e6f83b2d6205", + "url": "https://api.github.com/repos/stefanzweifel/laravel-stats/zipball/e86ebfdd149383b18a41fe3efa1601d82d447140", + "reference": "e86ebfdd149383b18a41fe3efa1601d82d447140", "shasum": "" }, "require": { - "illuminate/console": "~5.8.0|^6.0", - "illuminate/support": "~5.8.0|^6.0", + "illuminate/console": "~5.8.0|^6.0|^7.0", + "illuminate/support": "~5.8.0|^6.0|^7.0", "php": ">=7.2.0", - "phploc/phploc": "~4.0|~5.0", - "symfony/finder": "~3.3|~4.0" + "phploc/phploc": "~5.0|~6.0", + "symfony/finder": "~4.0" }, "require-dev": { - "laravel/browser-kit-testing": "~2.0|~3.0|~4.0|~5.0", - "laravel/dusk": "~3.0|~4.0|~5.0", + "friendsofphp/php-cs-fixer": "^2.15", + "laravel/browser-kit-testing": "~5.0", + "laravel/dusk": "~5.0", "mockery/mockery": "^1.1", - "orchestra/testbench": "^3.8", - "phpunit/phpunit": "6.*|7.*|8.*" + "orchestra/testbench": "^3.8|^4.0|^5.0", + "phpunit/phpunit": "8.*|9.*" }, "type": "library", "extra": { @@ -7747,7 +7695,7 @@ "stats", "wnx" ], - "time": "2019-09-01T14:18:49+00:00" + "time": "2020-02-22T19:09:14+00:00" } ], "aliases": [], diff --git a/dev/api/requests/shelves-create.json b/dev/api/requests/shelves-create.json new file mode 100644 index 000000000..39b88af7e --- /dev/null +++ b/dev/api/requests/shelves-create.json @@ -0,0 +1,5 @@ +{ + "name": "My shelf", + "description": "This is my shelf with some books", + "books": [5,1,3] +} \ No newline at end of file diff --git a/dev/api/requests/shelves-update.json b/dev/api/requests/shelves-update.json new file mode 100644 index 000000000..df5f5735d --- /dev/null +++ b/dev/api/requests/shelves-update.json @@ -0,0 +1,5 @@ +{ + "name": "My updated shelf", + "description": "This is my update shelf with some books", + "books": [5,1,3] +} \ No newline at end of file diff --git a/dev/api/responses/books-read.json b/dev/api/responses/books-read.json index e0570444f..11408e9ab 100644 --- a/dev/api/responses/books-read.json +++ b/dev/api/responses/books-read.json @@ -8,15 +8,11 @@ "created_by": { "id": 1, "name": "Admin", - "created_at": "2019-05-05 21:15:13", - "updated_at": "2019-12-16 12:18:37", "image_id": 48 }, "updated_by": { "id": 1, "name": "Admin", - "created_at": "2019-05-05 21:15:13", - "updated_at": "2019-12-16 12:18:37", "image_id": 48 }, "image_id": 452, diff --git a/dev/api/responses/shelves-create.json b/dev/api/responses/shelves-create.json new file mode 100644 index 000000000..64f3c7f53 --- /dev/null +++ b/dev/api/responses/shelves-create.json @@ -0,0 +1,10 @@ +{ + "name": "My shelf", + "description": "This is my shelf with some books", + "created_by": 1, + "updated_by": 1, + "slug": "my-shelf", + "updated_at": "2020-04-10 13:24:09", + "created_at": "2020-04-10 13:24:09", + "id": 14 +} \ No newline at end of file diff --git a/dev/api/responses/shelves-list.json b/dev/api/responses/shelves-list.json new file mode 100644 index 000000000..bccd08626 --- /dev/null +++ b/dev/api/responses/shelves-list.json @@ -0,0 +1,38 @@ +{ + "data": [ + { + "id": 8, + "name": "Qui qui aspernatur autem molestiae libero necessitatibus molestias.", + "slug": "qui-qui-aspernatur-autem-molestiae-libero-necessitatibus-molestias", + "description": "Enim dolor ut quia error dolores est. Aut distinctio consequuntur non nisi nostrum. Labore cupiditate error labore aliquid provident impedit voluptatibus. Quaerat impedit excepturi eius qui eius voluptatem reiciendis.", + "created_at": "2019-05-05 22:10:16", + "updated_at": "2020-04-10 13:00:45", + "created_by": 4, + "updated_by": 1, + "image_id": 31 + }, + { + "id": 9, + "name": "Ipsum aut inventore fuga libero non facilis.", + "slug": "ipsum-aut-inventore-fuga-libero-non-facilis", + "description": "Labore culpa modi perspiciatis harum sit. Maxime non et nam est. Quae ut laboriosam repellendus sunt quisquam. Velit at est perspiciatis nesciunt adipisci nobis illo. Sed possimus odit optio officiis nisi voluptates officiis dolor.", + "created_at": "2019-05-05 22:10:16", + "updated_at": "2020-04-10 13:00:58", + "created_by": 4, + "updated_by": 1, + "image_id": 28 + }, + { + "id": 10, + "name": "Omnis reiciendis aut molestias sint accusantium.", + "slug": "omnis-reiciendis-aut-molestias-sint-accusantium", + "description": "Qui ea occaecati alias est dolores voluptatem doloribus. Ad reiciendis corporis vero nostrum omnis et. Non doloribus ut eaque ut quos dolores.", + "created_at": "2019-05-05 22:10:16", + "updated_at": "2020-04-10 13:00:53", + "created_by": 4, + "updated_by": 1, + "image_id": 30 + } + ], + "total": 3 +} \ No newline at end of file diff --git a/dev/api/responses/shelves-read.json b/dev/api/responses/shelves-read.json new file mode 100644 index 000000000..8a8e2348b --- /dev/null +++ b/dev/api/responses/shelves-read.json @@ -0,0 +1,60 @@ +{ + "id": 14, + "name": "My shelf", + "slug": "my-shelf", + "description": "This is my shelf with some books", + "created_by": { + "id": 1, + "name": "Admin", + "image_id": 48 + }, + "updated_by": { + "id": 1, + "name": "Admin", + "image_id": 48 + }, + "image_id": 501, + "created_at": "2020-04-10 13:24:09", + "updated_at": "2020-04-10 13:31:04", + "tags": [ + { + "id": 16, + "entity_id": 14, + "entity_type": "BookStack\\Bookshelf", + "name": "Category", + "value": "Guide", + "order": 0, + "created_at": "2020-04-10 13:31:04", + "updated_at": "2020-04-10 13:31:04" + } + ], + "cover": { + "id": 501, + "name": "anafrancisconi_Sp04AfFCPNM.jpg", + "url": "http://bookstack.local/uploads/images/cover_book/2020-04/anafrancisconi_Sp04AfFCPNM.jpg", + "created_at": "2020-04-10 13:31:04", + "updated_at": "2020-04-10 13:31:04", + "created_by": 1, + "updated_by": 1, + "path": "/uploads/images/cover_book/2020-04/anafrancisconi_Sp04AfFCPNM.jpg", + "type": "cover_book", + "uploaded_to": 14 + }, + "books": [ + { + "id": 5, + "name": "Sint explicabo alias sunt.", + "slug": "jbsQrzuaXe" + }, + { + "id": 1, + "name": "BookStack User Guide", + "slug": "bookstack-user-guide" + }, + { + "id": 3, + "name": "Molestiae doloribus sint velit suscipit dolorem.", + "slug": "H99QxALaoG" + } + ] +} \ No newline at end of file diff --git a/dev/api/responses/shelves-update.json b/dev/api/responses/shelves-update.json new file mode 100644 index 000000000..4820150eb --- /dev/null +++ b/dev/api/responses/shelves-update.json @@ -0,0 +1,11 @@ +{ + "id": 14, + "name": "My updated shelf", + "slug": "my-updated-shelf", + "description": "This is my update shelf with some books", + "created_by": 1, + "updated_by": 1, + "image_id": 501, + "created_at": "2020-04-10 13:24:09", + "updated_at": "2020-04-10 13:48:22" +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 7142eebd2..243a19a9b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -3,178 +3,177 @@ "lockfileVersion": 1, "dependencies": { "@webassemblyjs/ast": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.8.5.tgz", - "integrity": "sha512-aJMfngIZ65+t71C3y2nBBg5FFG0Okt9m0XEgWZ7Ywgn1oMAT8cNwx00Uv1cQyHtidq0Xn94R4TAywO+LCQ+ZAQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", + "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", "dev": true, "requires": { - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5" + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0" } }, "@webassemblyjs/floating-point-hex-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.8.5.tgz", - "integrity": "sha512-9p+79WHru1oqBh9ewP9zW95E3XAo+90oth7S5Re3eQnECGq59ly1Ri5tsIipKGpiStHsUYmY3zMLqtk3gTcOtQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", + "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", "dev": true }, "@webassemblyjs/helper-api-error": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.8.5.tgz", - "integrity": "sha512-Za/tnzsvnqdaSPOUXHyKJ2XI7PDX64kWtURyGiJJZKVEdFOsdKUCPTNEVFZq3zJ2R0G5wc2PZ5gvdTRFgm81zA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", + "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", "dev": true }, "@webassemblyjs/helper-buffer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.8.5.tgz", - "integrity": "sha512-Ri2R8nOS0U6G49Q86goFIPNgjyl6+oE1abW1pS84BuhP1Qcr5JqMwRFT3Ah3ADDDYGEgGs1iyb1DGX+kAi/c/Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", + "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", "dev": true }, "@webassemblyjs/helper-code-frame": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.8.5.tgz", - "integrity": "sha512-VQAadSubZIhNpH46IR3yWO4kZZjMxN1opDrzePLdVKAZ+DFjkGD/rf4v1jap744uPVU6yjL/smZbRIIJTOUnKQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", + "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", "dev": true, "requires": { - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/helper-fsm": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.8.5.tgz", - "integrity": "sha512-kRuX/saORcg8se/ft6Q2UbRpZwP4y7YrWsLXPbbmtepKr22i8Z4O3V5QE9DbZK908dh5Xya4Un57SDIKwB9eow==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", + "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", "dev": true }, "@webassemblyjs/helper-module-context": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.8.5.tgz", - "integrity": "sha512-/O1B236mN7UNEU4t9X7Pj38i4VoU8CcMHyy3l2cV/kIF4U5KoHXDVqcDuOs1ltkac90IM4vZdHc52t1x8Yfs3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", + "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "mamacro": "^0.0.3" + "@webassemblyjs/ast": "1.9.0" } }, "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.8.5.tgz", - "integrity": "sha512-Cu4YMYG3Ddl72CbmpjU/wbP6SACcOPVbHN1dI4VJNJVgFwaKf1ppeFJrwydOG3NDHxVGuCfPlLZNyEdIYlQ6QQ==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", + "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", "dev": true }, "@webassemblyjs/helper-wasm-section": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.8.5.tgz", - "integrity": "sha512-VV083zwR+VTrIWWtgIUpqfvVdK4ff38loRmrdDBgBT8ADXYsEZ5mPQ4Nde90N3UYatHdYoDIFb7oHzMncI02tA==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", + "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0" } }, "@webassemblyjs/ieee754": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.8.5.tgz", - "integrity": "sha512-aaCvQYrvKbY/n6wKHb/ylAJr27GglahUO89CcGXMItrOBqRarUMxWLJgxm9PJNuKULwN5n1csT9bYoMeZOGF3g==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", + "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", "dev": true, "requires": { "@xtuc/ieee754": "^1.2.0" } }, "@webassemblyjs/leb128": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.8.5.tgz", - "integrity": "sha512-plYUuUwleLIziknvlP8VpTgO4kqNaH57Y3JnNa6DLpu/sGcP6hbVdfdX5aHAV716pQBKrfuU26BJK29qY37J7A==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", + "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", "dev": true, "requires": { "@xtuc/long": "4.2.2" } }, "@webassemblyjs/utf8": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.8.5.tgz", - "integrity": "sha512-U7zgftmQriw37tfD934UNInokz6yTmn29inT2cAetAsaU9YeVCveWEwhKL1Mg4yS7q//NGdzy79nlXh3bT8Kjw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", + "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", "dev": true }, "@webassemblyjs/wasm-edit": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.8.5.tgz", - "integrity": "sha512-A41EMy8MWw5yvqj7MQzkDjU29K7UJq1VrX2vWLzfpRHt3ISftOXqrtojn7nlPsZ9Ijhp5NwuODuycSvfAO/26Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", + "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/helper-wasm-section": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-opt": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", - "@webassemblyjs/wast-printer": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/helper-wasm-section": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-opt": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", + "@webassemblyjs/wast-printer": "1.9.0" } }, "@webassemblyjs/wasm-gen": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.8.5.tgz", - "integrity": "sha512-BCZBT0LURC0CXDzj5FXSc2FPTsxwp3nWcqXQdOZE4U7h7i8FqtFK5Egia6f9raQLpEKT1VL7zr4r3+QX6zArWg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", + "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wasm-opt": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.8.5.tgz", - "integrity": "sha512-HKo2mO/Uh9A6ojzu7cjslGaHaUU14LdLbGEKqTR7PBKwT6LdPtLLh9fPY33rmr5wcOMrsWDbbdCHq4hQUdd37Q==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", + "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-buffer": "1.8.5", - "@webassemblyjs/wasm-gen": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-buffer": "1.9.0", + "@webassemblyjs/wasm-gen": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0" } }, "@webassemblyjs/wasm-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.8.5.tgz", - "integrity": "sha512-pi0SYE9T6tfcMkthwcgCpL0cM9nRYr6/6fjgDtL6q/ZqKHdMWvxitRi5JcZ7RI4SNJJYnYNaWy5UUrHQy998lw==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", + "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-wasm-bytecode": "1.8.5", - "@webassemblyjs/ieee754": "1.8.5", - "@webassemblyjs/leb128": "1.8.5", - "@webassemblyjs/utf8": "1.8.5" + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-wasm-bytecode": "1.9.0", + "@webassemblyjs/ieee754": "1.9.0", + "@webassemblyjs/leb128": "1.9.0", + "@webassemblyjs/utf8": "1.9.0" } }, "@webassemblyjs/wast-parser": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.8.5.tgz", - "integrity": "sha512-daXC1FyKWHF1i11obK086QRlsMsY4+tIOKgBqI1lxAnkp9xe9YMcgOxm9kLe+ttjs5aWV2KKE1TWJCN57/Btsg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", + "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/floating-point-hex-parser": "1.8.5", - "@webassemblyjs/helper-api-error": "1.8.5", - "@webassemblyjs/helper-code-frame": "1.8.5", - "@webassemblyjs/helper-fsm": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/floating-point-hex-parser": "1.9.0", + "@webassemblyjs/helper-api-error": "1.9.0", + "@webassemblyjs/helper-code-frame": "1.9.0", + "@webassemblyjs/helper-fsm": "1.9.0", "@xtuc/long": "4.2.2" } }, "@webassemblyjs/wast-printer": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.8.5.tgz", - "integrity": "sha512-w0U0pD4EhlnvRyeJzBqaVSJAo9w/ce7/WPogeXLzGkO6hzhr4GnQIZ4W4uUt5b9ooAaXPtnXlj0gzsXEOUNYMg==", + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", + "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/wast-parser": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/wast-parser": "1.9.0", "@xtuc/long": "4.2.2" } }, @@ -197,9 +196,9 @@ "dev": true }, "acorn": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.0.tgz", - "integrity": "sha512-gac8OEcQ2Li1dxIEWGZzsp2BitJxwkwcOm0zHAJLcPJaVvm58FRnk6RkuLRpU1EujipU2ZFODv2P9DLMfnV8mw==", + "version": "6.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.1.tgz", + "integrity": "sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA==", "dev": true }, "ajv": { @@ -248,24 +247,13 @@ } }, "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", + "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", "dev": true, "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" } }, "aproba": { @@ -436,9 +424,9 @@ "dev": true }, "aws4": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.0.tgz", - "integrity": "sha512-Uvq6hVe90D0B2WEnUqtdgY1bATGz3mw33nH9Y+dmA+w5DHvUmBgkr5rM/KCHpCsiFNRUfokW/szpPPgMK2hm4A==", + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.9.1.tgz", + "integrity": "sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug==", "dev": true }, "balanced-match": { @@ -524,21 +512,11 @@ "dev": true }, "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.0.0.tgz", + "integrity": "sha512-Phlt0plgpIIBOGTT/ehfFnbNlfsDEiqmzE2KRXoX1bLIlir4X/MR+zSyBEkL05ffWgnRSf/DXv+WrUAVr93/ow==", "dev": true }, - "bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "optional": true, - "requires": { - "file-uri-to-path": "1.0.0" - } - }, "block-stream": { "version": "0.0.9", "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", @@ -571,32 +549,12 @@ } }, "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dev": true, "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "fill-range": "^7.0.1" } }, "brorand": { @@ -712,9 +670,9 @@ "dev": true }, "cacache": { - "version": "12.0.3", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.3.tgz", - "integrity": "sha512-kqdmfXEGFepesTuROHMs3MpFLWrPkSSpRqOw80RCflZXy/khxaArvFrQ7uJxSUduzAufc6G0g1VUCOZXxWavPw==", + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", "dev": true, "requires": { "bluebird": "^3.5.5", @@ -822,29 +780,25 @@ } }, "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.1.tgz", + "integrity": "sha512-4QYCEWOcK3OJrxwvyyAOxFuhpvOVCYkr33LPfFNBjAD/w3sEzWsp2BUOkI4l9bHvWioAd0rc6NlHUOEaWkTeqg==", "dev": true, "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.2", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.3.0" } }, "chownr": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.3.tgz", - "integrity": "sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", "dev": true }, "chrome-trace-event": { @@ -890,9 +844,9 @@ } }, "clipboard": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.4.tgz", - "integrity": "sha512-Vw26VSLRpJfBofiVaFb/I8PVfdI1OxKcYShe6fm0sP/DtmiWQNCjhM/okTvdCo0G+lMMm1rMYbk4IK4x1X+kgQ==", + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.6.tgz", + "integrity": "sha512-g5zbiixBRk/wyKakSwCKd7vQXDjFnAMGHoEyBogG/bw9kTD9GvdAvaoRR1ALcEzt3pVKxZR0pViekPMIS0QyGg==", "requires": { "good-listener": "^1.2.2", "select": "^1.1.2", @@ -928,9 +882,9 @@ "dev": true }, "codemirror": { - "version": "5.50.0", - "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.50.0.tgz", - "integrity": "sha512-32LAmGcBNhKtJP4WGgkcaCVQDyChAyaWA6jasg778ziZzo3PWBuhpAQIJMO8//Id45RoaLyXjuhcRUBoS8Vg+Q==" + "version": "5.52.2", + "resolved": "https://registry.npmjs.org/codemirror/-/codemirror-5.52.2.tgz", + "integrity": "sha512-WCGCixNUck2HGvY8/ZNI1jYfxPG5cRHv0VjmWuNzbtCLz8qYA5d+je4QhSSCtCaagyeOwMi/HmmPTjBgiTm2lQ==" }, "collection-visit": { "version": "1.0.0", @@ -1113,9 +1067,9 @@ } }, "css-loader": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.0.tgz", - "integrity": "sha512-JornYo4RAXl1Mzt0lOSVPmArzAMV3rGY2VuwtaDc732WTWjdwTaeS19nCGWMcSCf305Q396lhhDAJEWWM0SgPQ==", + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-3.4.2.tgz", + "integrity": "sha512-jYq4zdZT0oS0Iykt+fqnzVLRIeiPWhka+7BqPn+oSIpWJAHak5tmB/WZrJ2a21JhCeFyNnnlroSl8c+MtVndzA==", "dev": true, "requires": { "camelcase": "^5.3.1", @@ -1284,9 +1238,9 @@ "dev": true }, "dropzone": { - "version": "5.5.1", - "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.5.1.tgz", - "integrity": "sha512-3VduRWLxx9hbVr42QieQN25mx/I61/mRdUSuxAmDGdDqZIN8qtP7tcKMa3KfpJjuGjOJGYYUzzeq6eGDnkzesA==" + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.7.0.tgz", + "integrity": "sha512-kOltiZXH5cO/72I22JjE+w6BoT6uaVLfWdFMsi1PMKFkU6BZWpqRwjnsRm0o6ANGTBuZar5Piu7m/CbKqRPiYg==" }, "duplexify": { "version": "3.7.1", @@ -1448,9 +1402,9 @@ "dev": true }, "events": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.0.0.tgz", - "integrity": "sha512-Dc381HFWJzEOhQ+d8pkNon++bk9h6cdAoAj4iE6Q4y6xgTzySWXlKn05/TVNpjnfRqi/X0EpJEJohPjNI3zpVA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.1.0.tgz", + "integrity": "sha512-Rv+u8MLHNOdMjTAFeT3nCjHn2aGlx435FP/sDHNaRhDEMwyI/aB22Kj2qIN8R0cw3z28psEQLYwxVKLsKrMgWg==", "dev": true }, "evp_bytestokey": { @@ -1648,39 +1602,18 @@ "dev": true }, "figgy-pudding": { - "version": "3.5.1", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.1.tgz", - "integrity": "sha512-vNKxJHTEKNThjfrdJwHc7brvM6eVevuO5nTj6ez8ZQ1qbXTvGthucRF7S4vf2cr71QVnT70V34v0S1DyQsti0w==", + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", "dev": true }, - "file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "optional": true - }, "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } + "to-regex-range": "^5.0.1" } }, "find-cache-dir": { @@ -1787,562 +1720,11 @@ "dev": true }, "fsevents": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.11.tgz", - "integrity": "sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw==", + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.2.tgz", + "integrity": "sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA==", "dev": true, - "optional": true, - "requires": { - "bindings": "^1.5.0", - "nan": "^2.12.1", - "node-pre-gyp": "*" - }, - "dependencies": { - "abbrev": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "ansi-regex": { - "version": "2.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "aproba": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - }, - "are-we-there-yet": { - "version": "1.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "balanced-match": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "brace-expansion": { - "version": "1.1.11", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "chownr": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true - }, - "code-point-at": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "concat-map": { - "version": "0.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "console-control-strings": { - "version": "1.1.0", - "bundled": true, - "dev": true, - "optional": true - }, - "core-util-is": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "debug": { - "version": "3.2.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ms": "^2.1.1" - } - }, - "deep-extend": { - "version": "0.6.0", - "bundled": true, - "dev": true, - "optional": true - }, - "delegates": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "detect-libc": { - "version": "1.0.3", - "bundled": true, - "dev": true, - "optional": true - }, - "fs-minipass": { - "version": "1.2.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.6.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "gauge": { - "version": "2.7.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - } - }, - "glob": { - "version": "7.1.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-unicode": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "iconv-lite": { - "version": "0.4.24", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "ignore-walk": { - "version": "3.0.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "inflight": { - "version": "1.0.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "bundled": true, - "dev": true, - "optional": true - }, - "ini": { - "version": "1.3.5", - "bundled": true, - "dev": true, - "optional": true - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "minimatch": { - "version": "3.0.4", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "0.0.8", - "bundled": true, - "dev": true, - "optional": true - }, - "minipass": { - "version": "2.9.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "minizlib": { - "version": "1.3.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minipass": "^2.9.0" - } - }, - "mkdirp": { - "version": "0.5.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "minimist": "0.0.8" - } - }, - "ms": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "needle": { - "version": "2.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "debug": "^3.2.6", - "iconv-lite": "^0.4.4", - "sax": "^1.2.4" - } - }, - "node-pre-gyp": { - "version": "0.14.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "detect-libc": "^1.0.2", - "mkdirp": "^0.5.1", - "needle": "^2.2.1", - "nopt": "^4.0.1", - "npm-packlist": "^1.1.6", - "npmlog": "^4.0.2", - "rc": "^1.2.7", - "rimraf": "^2.6.1", - "semver": "^5.3.0", - "tar": "^4.4.2" - } - }, - "nopt": { - "version": "4.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "abbrev": "1", - "osenv": "^0.1.4" - } - }, - "npm-bundled": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-normalize-package-bin": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "npm-packlist": { - "version": "1.4.7", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1" - } - }, - "npmlog": { - "version": "4.1.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "number-is-nan": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "object-assign": { - "version": "4.1.1", - "bundled": true, - "dev": true, - "optional": true - }, - "once": { - "version": "1.4.0", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "wrappy": "1" - } - }, - "os-homedir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "os-tmpdir": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "osenv": { - "version": "0.1.5", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "process-nextick-args": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "rc": { - "version": "1.2.8", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "dependencies": { - "minimist": { - "version": "1.2.0", - "bundled": true, - "dev": true, - "optional": true - } - } - }, - "readable-stream": { - "version": "2.3.6", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "rimraf": { - "version": "2.7.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "glob": "^7.1.3" - } - }, - "safe-buffer": { - "version": "5.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "safer-buffer": { - "version": "2.1.2", - "bundled": true, - "dev": true, - "optional": true - }, - "sax": { - "version": "1.2.4", - "bundled": true, - "dev": true, - "optional": true - }, - "semver": { - "version": "5.7.1", - "bundled": true, - "dev": true, - "optional": true - }, - "set-blocking": { - "version": "2.0.0", - "bundled": true, - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "string-width": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.0.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "safe-buffer": "~5.1.0" - } - }, - "strip-ansi": { - "version": "3.0.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "strip-json-comments": { - "version": "2.0.1", - "bundled": true, - "dev": true, - "optional": true - }, - "tar": { - "version": "4.4.13", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.1.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.8.6", - "minizlib": "^1.2.1", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.2", - "yallist": "^3.0.3" - } - }, - "util-deprecate": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "wide-align": { - "version": "1.1.3", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "string-width": "^1.0.2 || 2" - } - }, - "wrappy": { - "version": "1.0.2", - "bundled": true, - "dev": true, - "optional": true - }, - "yallist": { - "version": "3.1.1", - "bundled": true, - "dev": true, - "optional": true - } - } + "optional": true }, "fstream": { "version": "1.0.12", @@ -2438,24 +1820,12 @@ } }, "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.0.tgz", + "integrity": "sha512-qjtRgnIVmOfnKUE3NJAQEdk+lKrxfw8t5ke7SXtfMTHcjsBfOfWXCQfdb30zfDoZQ2IRSIiidmjtbHZPZ++Ihw==", "dev": true, "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } + "is-glob": "^4.0.1" } }, "global-modules": { @@ -2494,13 +1864,13 @@ } }, "globule": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.0.tgz", - "integrity": "sha512-YlD4kdMqRCQHrhVdonet4TdRtv1/sZKepvoxNT4Nrhrp5HI8XFfc8kFlGlBn2myBo80aGp8Eft259mbcUJhgSg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.1.tgz", + "integrity": "sha512-OVyWOHgw29yosRHCHo7NncwR1hW5ew0W/UrvtwvjefVJeQ26q4/8r8FmPsSF1hJ93IgWkyv16pCTz6WblMzm/g==", "dev": true, "requires": { "glob": "~7.1.1", - "lodash": "~4.17.10", + "lodash": "~4.17.12", "minimatch": "~3.0.2" } }, @@ -2591,6 +1961,26 @@ "kind-of": "^4.0.0" }, "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, "kind-of": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", @@ -2790,12 +2180,12 @@ "dev": true }, "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "requires": { - "binary-extensions": "^1.0.0" + "binary-extensions": "^2.0.0" } }, "is-buffer": { @@ -2877,13 +2267,10 @@ "dev": true }, "is-finite": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.0.2.tgz", - "integrity": "sha1-zGZ3aVYCvlUO8R6LSqYwU0K20Ko=", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true }, "is-fullwidth-code-point": { "version": "1.0.0", @@ -2904,24 +2291,10 @@ } }, "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true }, "is-plain-obj": { "version": "1.1.0", @@ -3011,9 +2384,9 @@ "dev": true }, "js-base64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.1.tgz", - "integrity": "sha512-M7kLczedRMYX4L8Mdh4MzyAMM9O5osx+4FcOQuTvr3A9F2D9S5JXheN0ewNbrvK2UatkTRhL5ejGmGSjNMiZuw==", + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.5.2.tgz", + "integrity": "sha512-Vg8czh0Q7sFBSUMWWArX/miJeBWYBPpdU/3M/DKSaekLMqrqVPaedp+5mZhie/r0lgrcaYBfwXatEew6gwgiQQ==", "dev": true }, "jsbn": { @@ -3074,9 +2447,9 @@ } }, "kind-of": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.2.tgz", - "integrity": "sha512-s5kLOcnH0XqDO+FvuaLX8DDjZ18CGFk7VygH40QoKPUQhW4e2rvM0rwUq0t8IQDOwYSeLK01U90OjzBTme2QqA==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "dev": true }, "lcid": { @@ -3097,16 +2470,23 @@ } }, "livereload": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.8.2.tgz", - "integrity": "sha512-8wCvhiCL4cGVoT3U5xoe+UjpiiVZLrlOvr6dbhb1VlyC5QarhrlyRRt4z7EMGO4KSgXj+tKF/dr284F28/wI+g==", + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.9.1.tgz", + "integrity": "sha512-9g7sua11kkyZNo2hLRCG3LuZZwqexoyEyecSlV8cAsfAVVCZqLzVir6XDqmH0r+Vzgnd5LrdHDMyjtFnJQLAYw==", "dev": true, "requires": { - "chokidar": "^2.1.5", + "chokidar": "^3.3.0", + "livereload-js": "^3.1.0", "opts": ">= 1.2.0", "ws": "^6.2.1" } }, + "livereload-js": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/livereload-js/-/livereload-js-3.2.2.tgz", + "integrity": "sha512-xhScbNeC687ZINjEf/bD+BMiPx4s4q0mehcLb3zCc8+mykOtmaBR4vqzyIV9rIGdG9JjHaT0LiFdscvivCjX1Q==", + "dev": true + }, "load-json-file": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", @@ -3207,12 +2587,6 @@ } } }, - "mamacro": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/mamacro/-/mamacro-0.0.3.tgz", - "integrity": "sha512-qMEwh+UujcQ+kbz3T6V+wAmO2U8veoq2w+3wY8MquqwVA3jChfwY+Tk52GZKDfACEPjuZ7r2oJLejwpt8jtwTA==", - "dev": true - }, "map-age-cleaner": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", @@ -3340,6 +2714,90 @@ "regex-not": "^1.0.0", "snapdragon": "^0.8.1", "to-regex": "^3.0.2" + }, + "dependencies": { + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } } }, "miller-rabin": { @@ -3353,18 +2811,18 @@ } }, "mime-db": { - "version": "1.42.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.42.0.tgz", - "integrity": "sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ==", + "version": "1.43.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.43.0.tgz", + "integrity": "sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ==", "dev": true }, "mime-types": { - "version": "2.1.25", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.25.tgz", - "integrity": "sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg==", + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.26.tgz", + "integrity": "sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ==", "dev": true, "requires": { - "mime-db": "1.42.0" + "mime-db": "1.43.0" } }, "mimic-fn": { @@ -3420,9 +2878,9 @@ } }, "minimist": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz", - "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ=", + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", "dev": true }, "mississippi": { @@ -3465,20 +2923,12 @@ } }, "mkdirp": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz", - "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=", + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", "dev": true, "requires": { - "minimist": "0.0.8" - }, - "dependencies": { - "minimist": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", - "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", - "dev": true - } + "minimist": "^1.2.5" } }, "move-concurrently": { @@ -3606,9 +3056,9 @@ } }, "node-sass": { - "version": "4.13.0", - "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.0.tgz", - "integrity": "sha512-W1XBrvoJ1dy7VsvTAS5q1V45lREbTlZQqFbiHb3R3OTTCma0XBtuG6xZ6Z4506nR4lmHPTqVRwxT6KgtWC97CA==", + "version": "4.13.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.13.1.tgz", + "integrity": "sha512-TTWFx+ZhyDx1Biiez2nB0L3YrCZ/8oHagaDalbuBSlqXgUPsdkUSzJsVxeDO9LtPB49+Fh3WQl3slABo6AotNw==", "dev": true, "requires": { "async-foreach": "^0.1.3", @@ -3941,9 +3391,9 @@ "dev": true }, "p-limit": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.1.tgz", - "integrity": "sha512-85Tk+90UCVWvbDavCLKPOLC9vvY8OwEX/RtKF+/1OADJMVlFfEHOiMTPVyxg7mk/dKa+ipdHm0OUkTvCpMTuwg==", + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.2.2.tgz", + "integrity": "sha512-WGR+xHecKTr7EbUEhyLSh5Dube9JtdiG78ufaeLxTgpudf/20KqyMioIUZJAezlTIi6evxuoUs9YXc11cU+yzQ==", "dev": true, "requires": { "p-try": "^2.0.0" @@ -3965,9 +3415,9 @@ "dev": true }, "pako": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.10.tgz", - "integrity": "sha512-0DTvPVU3ed8+HNXOu5Bs+o//Mbdj9VNQMUOe9oKCwh8l0GNwpTDMKCWbRjgtD291AWnkAgkqA/LOnQS8AmS1tw==", + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", "dev": true }, "parallel-transform": { @@ -4087,6 +3537,12 @@ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", "dev": true }, + "picomatch": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.1.tgz", + "integrity": "sha512-ISBaA8xQNmwELC7eOjqFKMESB2VIqt4PPDD0nsS95b/9dZXvVKOlz9keMSnoGGKcOHXfTvDD6WMaRoSc9UuhRA==", + "dev": true + }, "pidtree": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz", @@ -4141,9 +3597,9 @@ "dev": true }, "postcss": { - "version": "7.0.25", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.25.tgz", - "integrity": "sha512-NXXVvWq9icrm/TgQC0O6YVFi4StfJz46M1iNd/h6B26Nvh/HKI+q4YZtFN/EjcInZliEscO/WL10BXnc1E5nwg==", + "version": "7.0.27", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.27.tgz", + "integrity": "sha512-WuQETPMcW9Uf1/22HWUWP9lgsIC+KEHg2kozMflKjbeUtw9ujvFX6QmIfozaErDkmLWS9WEnEdEe6Uo9/BNTdQ==", "dev": true, "requires": { "chalk": "^2.4.2", @@ -4237,9 +3693,9 @@ } }, "postcss-value-parser": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.2.tgz", - "integrity": "sha512-LmeoohTpp/K4UiyQCwuGWlONxXamGzCMtFxLq4W1nZVGIQLYvMCJx3yAF9qyyuFpflABI9yVdtJAqbihOsCsJQ==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.0.3.tgz", + "integrity": "sha512-N7h4pG+Nnu5BEIzyeaaIYWs0LI5XC40OrRh5L60z0QjFsqGWcHcbkBvpe1WYpcIS9yQ8sOi/vIPt1ejQCrMVrg==", "dev": true }, "prepend-http": { @@ -4279,9 +3735,9 @@ "dev": true }, "psl": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.6.0.tgz", - "integrity": "sha512-SYKKmVel98NCOYXpkwUqZqh0ahZeeKfmisiLIcEZdsb+WbLv02g/dI5BUmZnIyOe7RzZtLax81nnb2HbvC2tzA==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.7.0.tgz", + "integrity": "sha512-5NsSEDv8zY70ScRnOTn7bK7eanl2MvFrOrS/R6x+dBt5g1ghnj9Zv90kO8GwT8gxcu2ANyFprnFYB85IogIJOQ==", "dev": true }, "public-encrypt": { @@ -4406,9 +3862,9 @@ } }, "readable-stream": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", - "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", "dev": true, "requires": { "core-util-is": "~1.0.0", @@ -4421,14 +3877,12 @@ } }, "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.3.0.tgz", + "integrity": "sha512-zz0pAkSPOXXm1viEwygWIPSPkcBYjW1xU5j/JBh5t9bGCJwa6f9+BJa6VaB2g+b55yVrmXzqkyLf4xaWYM0IkQ==", "dev": true, "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" + "picomatch": "^2.0.7" } }, "redent": { @@ -4479,9 +3933,9 @@ } }, "request": { - "version": "2.88.0", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz", - "integrity": "sha512-NAqBSrijGLZdM0WZNsInLJpkJokL72XYjUpnB0iwsRgxh7dB6COrHnTBNwN0E+lHDAJzu7kLAkDeY08z2/A0hg==", + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", "dev": true, "requires": { "aws-sign2": "~0.7.0", @@ -4491,7 +3945,7 @@ "extend": "~3.0.2", "forever-agent": "~0.6.1", "form-data": "~2.3.2", - "har-validator": "~5.1.0", + "har-validator": "~5.1.3", "http-signature": "~1.2.0", "is-typedarray": "~1.0.0", "isstream": "~0.1.2", @@ -4501,7 +3955,7 @@ "performance-now": "^2.1.0", "qs": "~6.5.2", "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", + "tough-cookie": "~2.5.0", "tunnel-agent": "^0.6.0", "uuid": "^3.3.2" } @@ -4630,15 +4084,15 @@ } }, "sass-loader": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.0.tgz", - "integrity": "sha512-+qeMu563PN7rPdit2+n5uuYVR0SSVwm0JsOUsaJXzgYcClWSlmX0iHDnmeOobPkf5kUglVot3QS6SyLyaQoJ4w==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-8.0.2.tgz", + "integrity": "sha512-7o4dbSK8/Ol2KflEmSco4jTjQoV988bM82P9CZdmo9hR3RLnvNc0ufMNdMrB0caq38JQ/FgF4/7RcbcfKzxoFQ==", "dev": true, "requires": { "clone-deep": "^4.0.1", "loader-utils": "^1.2.3", "neo-async": "^2.6.1", - "schema-utils": "^2.1.0", + "schema-utils": "^2.6.1", "semver": "^6.3.0" }, "dependencies": { @@ -4651,13 +4105,33 @@ } }, "schema-utils": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.1.tgz", - "integrity": "sha512-0WXHDs1VDJyo+Zqs9TKLKyD/h7yDpHUhEFsM2CzkICFdoX1av+GBq/J2xRTFfsQO5kBfhZzANf2VcIm84jqDbg==", + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.6.5.tgz", + "integrity": "sha512-5KXuwKziQrTVHh8j/Uxz+QUbxkaLW9X/86NBlx/gnKgtsZA2GIVMUn17qWhRFwF8jdYb3Dig5hRO/W5mZqy6SQ==", "dev": true, "requires": { - "ajv": "^6.10.2", + "ajv": "^6.12.0", "ajv-keywords": "^3.4.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.0.tgz", + "integrity": "sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "fast-deep-equal": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz", + "integrity": "sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA==", + "dev": true + } } }, "scss-tokenizer": { @@ -4908,9 +4382,9 @@ } }, "sortablejs": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.1.tgz", - "integrity": "sha512-N6r7GrVmO8RW1rn0cTdvK3JR0BcqecAJ0PmYMCL3ZuqTH3pY+9QyqkmJSkkLyyDvd+AJnwaxTP22Ybr/83V9hQ==" + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.10.2.tgz", + "integrity": "sha512-YkPGufevysvfwn5rfdlGyrGjt7/CRHwvRPogD/lC+TnvcN29jDpCifKP+rBqf+LRldfXSTh+0CGLcSg0VIxq3A==" }, "source-list-map": { "version": "2.0.1", @@ -4925,12 +4399,12 @@ "dev": true }, "source-map-resolve": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.2.tgz", - "integrity": "sha512-MjqsvNwyz1s0k81Goz/9vRBe9SZdB09Bdw+/zYyO+3CuPk6fouTaxscHkgtE8jKvf01kVfl8riHzERQ/kefaSA==", + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", "dev": true, "requires": { - "atob": "^2.1.1", + "atob": "^2.1.2", "decode-uri-component": "^0.2.0", "resolve-url": "^0.2.1", "source-map-url": "^0.4.0", @@ -5165,13 +4639,13 @@ } }, "style-loader": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.1.1.tgz", - "integrity": "sha512-oIVF12trRq0od4Yojg7q0K3Lq/O6Ix/AYgVosykrVg+kWxxxUyk8KhKCCmekyGSUiVK1xxlAQymLWWdh6S9lOg==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-1.1.3.tgz", + "integrity": "sha512-rlkH7X/22yuwFYK357fMN/BxYOorfnfq0eD7+vqlemSK4wEcejFF1dg4zxP0euBW8NrYx2WZzZ8PPFevr7D+Kw==", "dev": true, "requires": { "loader-utils": "^1.2.3", - "schema-utils": "^2.0.1" + "schema-utils": "^2.6.4" } }, "supports-color": { @@ -5201,9 +4675,9 @@ } }, "terser": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.4.3.tgz", - "integrity": "sha512-0ikKraVtRDKGzHrzkCv5rUNDzqlhmhowOBqC0XqUHFpW+vJ45+20/IFBcebwKfiS2Z9fJin6Eo+F1zLZsxi8RA==", + "version": "4.6.10", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.6.10.tgz", + "integrity": "sha512-qbF/3UOo11Hggsbsqm2hPa6+L4w7bkr+09FNseEe8xrcVD3APGLFqE+Oz1ZKAxjYnFsj80rLOfgAtJ0LNJjtTA==", "dev": true, "requires": { "commander": "^2.20.0", @@ -5261,9 +4735,9 @@ } }, "tiny-emitter": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.0.2.tgz", - "integrity": "sha512-2NM0auVBGft5tee/OxP4PI3d8WItkDM+fPnaRAVo6xTDI2knbz9eC5ArWGqtGlYqiH3RU5yMpdyTTO7MguC4ow==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" }, "to-arraybuffer": { "version": "1.0.1", @@ -5304,31 +4778,22 @@ } }, "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" + "is-number": "^7.0.0" } }, "tough-cookie": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.4.3.tgz", - "integrity": "sha512-Q5srk/4vDM54WJsJio3XNn6K2sCG+CQ8G5Wz6bZhRZoAe/+TxjWB/GlFAnYEbkYVlON9FMk/fE3h2RLpPXo4lQ==", + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", "dev": true, "requires": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } + "psl": "^1.1.28", + "punycode": "^2.1.1" } }, "trim-newlines": { @@ -5347,9 +4812,9 @@ } }, "tslib": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.10.0.tgz", - "integrity": "sha512-qOebF53frne81cf0S9B41ByenJ3/IuH8yJKngAX35CmiZySA0khhkovshKK+jGCaMnVomla7gVlIcc3EvKPbTQ==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.11.1.tgz", + "integrity": "sha512-aZW88SY8kQbU7gpV19lN24LtXh/yD4ZZg6qieAJDDg+YBsJcSmLGK9QpnUjAKVG/xefmvJGd1WUmfpT/g6AJGA==", "dev": true }, "tty-browserify": { @@ -5529,9 +4994,9 @@ "dev": true }, "uuid": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.3.tgz", - "integrity": "sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", "dev": true }, "v8-compile-cache": { @@ -5581,26 +5046,733 @@ } }, "watchpack": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.0.tgz", - "integrity": "sha512-i6dHe3EyLjMmDlU1/bGQpEw25XSjkJULPuAVKCbNRefQVq48yXKUpwg538F7AZTf9kyr57zj++pQFltUa5H7yA==", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.6.1.tgz", + "integrity": "sha512-+IF9hfUFOrYOOaKyfaI7h7dquUIOgyEMoQMLA7OP5FxegKA2+XdXThAZ9TU2kucfhDH7rfMHs1oPYziVGWRnZA==", "dev": true, "requires": { - "chokidar": "^2.0.2", + "chokidar": "^2.1.8", "graceful-fs": "^4.1.2", "neo-async": "^2.5.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + } + }, + "fsevents": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.12.tgz", + "integrity": "sha512-Ggd/Ktt7E7I8pxZRbGIs7vwqAPscSESMrCSkx2FtWeqmheJgCo2R74fTsZFCifr0VTPwqRpPv17+6b8Zp7th0Q==", + "dev": true, + "optional": true, + "requires": { + "nan": "^2.12.1", + "node-pre-gyp": "*" + }, + "dependencies": { + "abbrev": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "aproba": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "optional": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "chownr": { + "version": "1.1.4", + "bundled": true, + "dev": true, + "optional": true + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "debug": { + "version": "3.2.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "deep-extend": { + "version": "0.6.0", + "bundled": true, + "dev": true, + "optional": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "detect-libc": { + "version": "1.0.3", + "bundled": true, + "dev": true, + "optional": true + }, + "fs-minipass": { + "version": "1.2.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "glob": { + "version": "7.1.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "iconv-lite": { + "version": "0.4.24", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore-walk": { + "version": "3.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "optional": true + }, + "ini": { + "version": "1.3.5", + "bundled": true, + "dev": true, + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "bundled": true, + "dev": true, + "optional": true + }, + "minipass": { + "version": "2.9.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mkdirp": { + "version": "0.5.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "needle": { + "version": "2.3.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.4.4", + "sax": "^1.2.4" + } + }, + "node-pre-gyp": { + "version": "0.14.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "detect-libc": "^1.0.2", + "mkdirp": "^0.5.1", + "needle": "^2.2.1", + "nopt": "^4.0.1", + "npm-packlist": "^1.1.6", + "npmlog": "^4.0.2", + "rc": "^1.2.7", + "rimraf": "^2.6.1", + "semver": "^5.3.0", + "tar": "^4.4.2" + } + }, + "nopt": { + "version": "4.0.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "npm-bundled": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "npm-packlist": { + "version": "1.4.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "optional": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "wrappy": "1" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "os-tmpdir": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "osenv": { + "version": "0.1.5", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "process-nextick-args": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "rc": { + "version": "1.2.8", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rimraf": { + "version": "2.7.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true, + "dev": true, + "optional": true + }, + "sax": { + "version": "1.2.4", + "bundled": true, + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "bundled": true, + "dev": true, + "optional": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "optional": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "string_decoder": { + "version": "1.1.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "bundled": true, + "dev": true, + "optional": true + }, + "tar": { + "version": "4.4.13", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "optional": true + }, + "yallist": { + "version": "3.1.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } } }, "webpack": { - "version": "4.41.4", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.41.4.tgz", - "integrity": "sha512-Lc+2uB6NjpCWsHI3trkoISOI64h9QYIXenbEWj3bn3oyjfB1lEBXjWAfAyY2sM0rZn41oD5V91OLwKRwS6Wp8Q==", + "version": "4.42.1", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.42.1.tgz", + "integrity": "sha512-SGfYMigqEfdGchGhFFJ9KyRpQKnipvEvjc1TwrXEPCM6H5Wywu10ka8o3KGrMzSMxMQKt8aCHUFh5DaQ9UmyRg==", "dev": true, "requires": { - "@webassemblyjs/ast": "1.8.5", - "@webassemblyjs/helper-module-context": "1.8.5", - "@webassemblyjs/wasm-edit": "1.8.5", - "@webassemblyjs/wasm-parser": "1.8.5", + "@webassemblyjs/ast": "1.9.0", + "@webassemblyjs/helper-module-context": "1.9.0", + "@webassemblyjs/wasm-edit": "1.9.0", + "@webassemblyjs/wasm-parser": "1.9.0", "acorn": "^6.2.1", "ajv": "^6.10.2", "ajv-keywords": "^3.4.1", @@ -5612,7 +5784,7 @@ "loader-utils": "^1.2.3", "memory-fs": "^0.4.1", "micromatch": "^3.1.10", - "mkdirp": "^0.5.1", + "mkdirp": "^0.5.3", "neo-async": "^2.6.1", "node-libs-browser": "^2.2.1", "schema-utils": "^1.0.0", @@ -5622,6 +5794,21 @@ "webpack-sources": "^1.4.1" }, "dependencies": { + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, "schema-utils": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", @@ -5636,9 +5823,9 @@ } }, "webpack-cli": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.10.tgz", - "integrity": "sha512-u1dgND9+MXaEt74sJR4PR7qkPxXUSQ0RXYq8x1L6Jg1MYVEmGPrH6Ah6C4arD4r0J1P5HKjRqpab36k0eIzPqg==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-3.3.11.tgz", + "integrity": "sha512-dXlfuml7xvAFwYUPsrtQAA9e4DOe58gnzSxhgrO/ZM/gyXTBowrsYeubyN4mqGhYdpXMFNyQ6emjJS9M7OBd4g==", "dev": true, "requires": { "chalk": "2.4.2", @@ -5842,9 +6029,9 @@ } }, "yargs-parser": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.1.tgz", - "integrity": "sha512-oVAVsHz6uFrg3XQheFII8ESO2ssAf9luWuAd6Wexsu4F3OtIW0o8IribPXYrD4WC24LWtPrJlGy87y5udK+dxQ==", + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", "dev": true, "requires": { "camelcase": "^5.0.0", diff --git a/package.json b/package.json index 8877cb9e8..a05851987 100644 --- a/package.json +++ b/package.json @@ -10,23 +10,23 @@ "permissions": "chown -R $USER:$USER bootstrap/cache storage public/uploads" }, "devDependencies": { - "css-loader": "^3.4.0", - "livereload": "^0.8.2", + "css-loader": "^3.4.2", + "livereload": "^0.9.1", "mini-css-extract-plugin": "^0.9.0", - "node-sass": "^4.13.0", + "node-sass": "^4.13.1", "npm-run-all": "^4.1.5", - "sass-loader": "^8.0.0", - "style-loader": "^1.1.1", - "webpack": "^4.41.4", - "webpack-cli": "^3.3.10" + "sass-loader": "^8.0.2", + "style-loader": "^1.1.3", + "webpack": "^4.42.1", + "webpack-cli": "^3.3.11" }, "dependencies": { - "clipboard": "^2.0.4", - "codemirror": "^5.50.0", - "dropzone": "^5.5.1", + "clipboard": "^2.0.6", + "codemirror": "^5.52.2", + "dropzone": "^5.7.0", "markdown-it": "^10.0.0", "markdown-it-task-lists": "^2.1.1", - "sortablejs": "^1.10.1", + "sortablejs": "^1.10.2", "vue": "^2.6.11", "vuedraggable": "^2.23.2" }, diff --git a/public/.htaccess b/public/.htaccess index 0d55354ec..abe87b39d 100644 --- a/public/.htaccess +++ b/public/.htaccess @@ -5,6 +5,10 @@ RewriteEngine On + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + # Redirect Trailing Slashes If Not A Folder... RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ /$1 [L,R=301] diff --git a/readme.md b/readme.md index 5b51b8eab..2c68d094c 100644 --- a/readme.md +++ b/readme.md @@ -13,6 +13,8 @@ A platform for storing and organising information and documentation. Details for * [Demo Instance](https://demo.bookstackapp.com) * [Admin Login](https://demo.bookstackapp.com/login?email=admin@example.com&password=password) * [BookStack Blog](https://www.bookstackapp.com/blog) +* [Issue List](https://github.com/BookStackApp/BookStack/issues) +* [Discord Chat](https://discord.gg/ztkBqR2) ## 📚 Project Definition @@ -49,7 +51,7 @@ All development on BookStack is currently done on the master branch. When it's t * [Node.js](https://nodejs.org/en/) v10.0+ -SASS is used to help the CSS development and the JavaScript is run through babel to allow for writing ES6 code. This is done using webpack. To run the build task you can use the following commands: +This project uses SASS for CSS development and this is built, along with the JavaScript, using webpack. The below npm commands can be used to install the dependencies & run the build tasks: ``` bash # Install NPM Dependencies @@ -78,7 +80,7 @@ Once done you can run `php vendor/bin/phpunit` in the application root directory ### 📜 Code Standards -PHP code within BookStack is generally to [PSR-2](http://www.php-fig.org/psr/psr-2/) standards. From the BookStack root folder you can run `./vendor/bin/phpcs` to check code is formatted correctly and `./vendor/bin/phpcbf` to auto-fix non-PSR-2 code. +PHP code within BookStack is generally to [PSR-2](http://www.php-fig.org/psr/psr-2/) standards. From the BookStack root folder you can run `./vendor/bin/phpcs` to check code is formatted correctly and `./vendor/bin/phpcbf` to auto-fix non-PSR-2 code. Please don't auto-fix code unless it's related to changes you've made otherwise you'll likely cause git conflicts. ### 🐋 Development using Docker @@ -118,7 +120,9 @@ Please note, translations in BookStack are provided to the "Crowdin Global Trans Feel free to create issues to request new features or to report bugs & problems. Just please follow the template given when creating the issue. -Pull requests are welcome. Unless a small tweak or language update, It may be best to open the pull request early or create an issue for your intended change to discuss how it will fit in to the project and plan out the merge. Pull requests should be created from the `master` branch since they will be merged back into `master` once done. Please do not build from or request a merge into the `release` branch as this is only for publishing releases. If you are looking to alter CSS or JavaScript content please edit the source files found in `resources/assets`. Any CSS or JS files within `public` are built from these source files and therefore should not be edited directly. +Pull requests are welcome. Unless a small tweak or language update, It may be best to open the pull request early or create an issue for your intended change to discuss how it will fit in to the project and plan out the merge. Just because a feature request exists, or is tagged, does not mean that feature would be accepted into the core project. + +Pull requests should be created from the `master` branch since they will be merged back into `master` once done. Please do not build from or request a merge into the `release` branch as this is only for publishing releases. If you are looking to alter CSS or JavaScript content please edit the source files found in `resources/assets`. Any CSS or JS files within `public` are built from these source files and therefore should not be edited directly. The project's code of conduct [can be found here](https://github.com/BookStackApp/BookStack/blob/master/.github/CODE_OF_CONDUCT.md). diff --git a/resources/js/components/dropdown.js b/resources/js/components/dropdown.js index 4de1e239b..367c956ce 100644 --- a/resources/js/components/dropdown.js +++ b/resources/js/components/dropdown.js @@ -11,6 +11,7 @@ class DropDown { this.menu = elem.querySelector('.dropdown-menu, [dropdown-menu]'); this.moveMenu = elem.hasAttribute('dropdown-move-menu'); this.toggle = elem.querySelector('[dropdown-toggle]'); + this.direction = (document.dir === 'rtl') ? 'right' : 'left'; this.body = document.body; this.showing = false; this.setupListeners(); @@ -28,7 +29,11 @@ class DropDown { this.rect = this.menu.getBoundingClientRect(); this.body.appendChild(this.menu); this.menu.style.position = 'fixed'; - this.menu.style.left = `${this.rect.left}px`; + if (this.direction === 'right') { + this.menu.style.right = `${(this.rect.right - this.rect.width)}px`; + } else { + this.menu.style.left = `${this.rect.left}px`; + } this.menu.style.top = `${this.rect.top}px`; this.menu.style.width = `${this.rect.width}px`; } @@ -67,7 +72,7 @@ class DropDown { this.toggle.setAttribute('aria-expanded', 'false'); if (this.moveMenu) { this.menu.style.position = ''; - this.menu.style.left = ''; + this.menu.style[this.direction] = ''; this.menu.style.top = ''; this.menu.style.width = ''; this.container.appendChild(this.menu); diff --git a/resources/js/components/markdown-editor.js b/resources/js/components/markdown-editor.js index 25d6bde47..f88cb7651 100644 --- a/resources/js/components/markdown-editor.js +++ b/resources/js/components/markdown-editor.js @@ -411,17 +411,23 @@ class MarkdownEditor { }); } + getDrawioUrl() { + const drawioUrlElem = document.querySelector('[drawio-url]'); + return drawioUrlElem ? drawioUrlElem.getAttribute('drawio-url') : false; + } + // Show draw.io if enabled and handle save. actionStartDrawing() { - if (document.querySelector('[drawio-enabled]').getAttribute('drawio-enabled') !== 'true') return; - let cursorPos = this.cm.getCursor('from'); + const url = this.getDrawioUrl(); + if (!url) return; - DrawIO.show(() => { + const cursorPos = this.cm.getCursor('from'); + + DrawIO.show(url,() => { return Promise.resolve(''); }, (pngData) => { - // let id = "image-" + Math.random().toString(16).slice(2); - // let loadingImage = window.baseUrl('/loading.gif'); - let data = { + + const data = { image: pngData, uploaded_to: Number(document.getElementById('page-editor').getAttribute('page-id')) }; @@ -445,15 +451,15 @@ class MarkdownEditor { // Show draw.io if enabled and handle save. actionEditDrawing(imgContainer) { - const drawingDisabled = document.querySelector('[drawio-enabled]').getAttribute('drawio-enabled') !== 'true'; - if (drawingDisabled) { + const drawioUrl = this.getDrawioUrl(); + if (!drawioUrl) { return; } const cursorPos = this.cm.getCursor('from'); const drawingId = imgContainer.getAttribute('drawio-diagram'); - DrawIO.show(() => { + DrawIO.show(drawioUrl, () => { return DrawIO.load(drawingId); }, (pngData) => { diff --git a/resources/js/components/notification.js b/resources/js/components/notification.js index f7edb08aa..35bab4ea6 100644 --- a/resources/js/components/notification.js +++ b/resources/js/components/notification.js @@ -28,7 +28,11 @@ class Notification { this.elem.classList.add('showing'); }, 1); - if (this.autohide) setTimeout(this.hide.bind(this), 2000); + if (this.autohide) { + const words = textToShow.split(' ').length; + const timeToShow = Math.max(2000, 1000 + (250 * words)); + setTimeout(this.hide.bind(this), timeToShow); + } } hide() { diff --git a/resources/js/components/template-manager.js b/resources/js/components/template-manager.js index d004a4307..f8b19a40c 100644 --- a/resources/js/components/template-manager.js +++ b/resources/js/components/template-manager.js @@ -56,6 +56,10 @@ class TemplateManager { setupSearchBox() { const searchBox = this.elem.querySelector('.search-box'); + + // Search box may not exist if there are no existing templates in the system. + if (!searchBox) return; + const input = searchBox.querySelector('input'); const submitButton = searchBox.querySelector('button'); const cancelButton = searchBox.querySelector('button.search-box-cancel'); @@ -70,7 +74,7 @@ class TemplateManager { } performSearch = performSearch.bind(this); - // Searchbox enter press + // Search box enter press searchBox.addEventListener('keypress', event => { if (event.key === 'Enter') { event.preventDefault(); diff --git a/resources/js/components/wysiwyg-editor.js b/resources/js/components/wysiwyg-editor.js index 7818db260..be1bac6be 100644 --- a/resources/js/components/wysiwyg-editor.js +++ b/resources/js/components/wysiwyg-editor.js @@ -139,19 +139,21 @@ function codePlugin() { } function showPopup(editor) { - let selectedNode = editor.selection.getNode(); + const selectedNode = editor.selection.getNode(); if (!elemIsCodeBlock(selectedNode)) { - let providedCode = editor.selection.getNode().textContent; + const providedCode = editor.selection.getNode().textContent; window.vues['code-editor'].open(providedCode, '', (code, lang) => { - let wrap = document.createElement('div'); + const wrap = document.createElement('div'); wrap.innerHTML = `
`; wrap.querySelector('code').innerText = code; editor.formatter.toggle('pre'); - let node = editor.selection.getNode(); + const node = editor.selection.getNode(); editor.dom.setHTML(node, wrap.querySelector('pre').innerHTML); editor.fire('SetContent'); + + editor.focus() }); return; } @@ -160,15 +162,17 @@ function codePlugin() { let currentCode = selectedNode.querySelector('textarea').textContent; window.vues['code-editor'].open(currentCode, lang, (code, lang) => { - let editorElem = selectedNode.querySelector('.CodeMirror'); - let cmInstance = editorElem.CodeMirror; + const editorElem = selectedNode.querySelector('.CodeMirror'); + const cmInstance = editorElem.CodeMirror; if (cmInstance) { Code.setContent(cmInstance, code); Code.setMode(cmInstance, lang, code); } - let textArea = selectedNode.querySelector('textarea'); + const textArea = selectedNode.querySelector('textarea'); if (textArea) textArea.textContent = code; selectedNode.setAttribute('data-lang', lang); + + editor.focus() }); } @@ -238,7 +242,7 @@ function codePlugin() { }); } -function drawIoPlugin() { +function drawIoPlugin(drawioUrl) { let pageEditor = null; let currentNode = null; @@ -266,7 +270,7 @@ function drawIoPlugin() { function showDrawingEditor(mceEditor, selectedNode = null) { pageEditor = mceEditor; currentNode = selectedNode; - DrawIO.show(drawingInit, updateContent); + DrawIO.show(drawioUrl, drawingInit, updateContent); } async function updateContent(pngData) { @@ -423,10 +427,14 @@ class WysiwygEditor { loadPlugins() { codePlugin(); customHrPlugin(); - if (document.querySelector('[drawio-enabled]').getAttribute('drawio-enabled') === 'true') { - drawIoPlugin(); + + const drawioUrlElem = document.querySelector('[drawio-url]'); + if (drawioUrlElem) { + const url = drawioUrlElem.getAttribute('drawio-url'); + drawIoPlugin(url); this.plugins += ' drawio'; } + if (this.textDirection === 'rtl') { this.plugins += ' directionality' } @@ -500,7 +508,15 @@ class WysiwygEditor { const originalField = win.document.getElementById(field_name); originalField.value = entity.link; const mceForm = originalField.closest('.mce-form'); - mceForm.querySelectorAll('input')[2].value = entity.name; + const inputs = mceForm.querySelectorAll('input'); + + // Set text to display if not empty + if (!inputs[1].value) { + inputs[1].value = entity.name; + } + + // Set title field + inputs[2].value = entity.name; }); } diff --git a/resources/js/services/code.js b/resources/js/services/code.js index a8cede5f4..14801de9c 100644 --- a/resources/js/services/code.js +++ b/resources/js/services/code.js @@ -5,15 +5,18 @@ import Clipboard from "clipboard/dist/clipboard.min"; import 'codemirror/mode/css/css'; import 'codemirror/mode/clike/clike'; import 'codemirror/mode/diff/diff'; +import 'codemirror/mode/fortran/fortran'; import 'codemirror/mode/go/go'; +import 'codemirror/mode/haskell/haskell'; import 'codemirror/mode/htmlmixed/htmlmixed'; import 'codemirror/mode/javascript/javascript'; import 'codemirror/mode/julia/julia'; import 'codemirror/mode/lua/lua'; -import 'codemirror/mode/haskell/haskell'; import 'codemirror/mode/markdown/markdown'; import 'codemirror/mode/mllike/mllike'; import 'codemirror/mode/nginx/nginx'; +import 'codemirror/mode/perl/perl'; +import 'codemirror/mode/pascal/pascal'; import 'codemirror/mode/php/php'; import 'codemirror/mode/powershell/powershell'; import 'codemirror/mode/properties/properties'; @@ -25,7 +28,6 @@ import 'codemirror/mode/sql/sql'; import 'codemirror/mode/toml/toml'; import 'codemirror/mode/xml/xml'; import 'codemirror/mode/yaml/yaml'; -import 'codemirror/mode/pascal/pascal'; // Addons import 'codemirror/addon/scroll/scrollpastend'; @@ -43,6 +45,8 @@ const modeMap = { 'c#': 'text/x-csharp', csharp: 'text/x-csharp', diff: 'diff', + for: 'fortran', + fortran: 'fortran', go: 'go', haskell: 'haskell', hs: 'haskell', @@ -59,6 +63,8 @@ const modeMap = { markdown: 'markdown', ml: 'mllike', nginx: 'nginx', + perl: 'perl', + pl: 'perl', powershell: 'powershell', properties: 'properties', ocaml: 'mllike', diff --git a/resources/js/services/drawio.js b/resources/js/services/drawio.js index a570737d1..17e57cd6b 100644 --- a/resources/js/services/drawio.js +++ b/resources/js/services/drawio.js @@ -1,22 +1,21 @@ - -const drawIoUrl = 'https://www.draw.io/?embed=1&ui=atlas&spin=1&proto=json'; let iFrame = null; let onInit, onSave; /** * Show the draw.io editor. - * @param onInitCallback - Must return a promise with the xml to load for the editor. - * @param onSaveCallback - Is called with the drawing data on save. + * @param {String} drawioUrl + * @param {Function} onInitCallback - Must return a promise with the xml to load for the editor. + * @param {Function} onSaveCallback - Is called with the drawing data on save. */ -function show(onInitCallback, onSaveCallback) { +function show(drawioUrl, onInitCallback, onSaveCallback) { onInit = onInitCallback; onSave = onSaveCallback; iFrame = document.createElement('iframe'); iFrame.setAttribute('frameborder', '0'); window.addEventListener('message', drawReceive); - iFrame.setAttribute('src', drawIoUrl); + iFrame.setAttribute('src', drawioUrl); iFrame.setAttribute('class', 'fullscreen'); iFrame.style.backgroundColor = '#FFFFFF'; document.body.appendChild(iFrame); diff --git a/resources/js/vues/code-editor.js b/resources/js/vues/code-editor.js index 48b4e1766..f888e6227 100644 --- a/resources/js/vues/code-editor.js +++ b/resources/js/vues/code-editor.js @@ -5,6 +5,7 @@ const methods = { if (!this.editor) this.editor = codeLib.popupEditor(this.$refs.editor, this.language); this.$refs.overlay.components.overlay.show(() => { codeLib.updateLayout(this.editor); + this.editor.focus(); }); }, hide() { diff --git a/resources/lang/ar/errors.php b/resources/lang/ar/errors.php index c1f53e171..2714d3dbb 100644 --- a/resources/lang/ar/errors.php +++ b/resources/lang/ar/errors.php @@ -83,6 +83,7 @@ return [ // Error pages '404_page_not_found' => 'لم يتم العثور على الصفحة', 'sorry_page_not_found' => 'عفواً, لا يمكن العثور على الصفحة التي تبحث عنها.', + 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.', 'return_home' => 'العودة للصفحة الرئيسية', 'error_occurred' => 'حدث خطأ', 'app_down' => ':appName لا يعمل حالياً', @@ -96,4 +97,7 @@ return [ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls', 'api_user_token_expired' => 'The authorization token used has expired', + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Error thrown when sending a test email:', + ]; diff --git a/resources/lang/ar/settings.php b/resources/lang/ar/settings.php index c3216aa07..56b0a51be 100755 --- a/resources/lang/ar/settings.php +++ b/resources/lang/ar/settings.php @@ -185,27 +185,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => 'Dansk', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/cs/auth.php b/resources/lang/cs/auth.php index fbda0150d..ff84f2ae9 100644 --- a/resources/lang/cs/auth.php +++ b/resources/lang/cs/auth.php @@ -18,7 +18,7 @@ return [ 'name' => 'Jméno', 'username' => 'Jméno účtu', - 'email' => 'Email', + 'email' => 'E-mail', 'password' => 'Heslo', 'password_confirm' => 'Potvrdit heslo', 'password_hint' => 'Musí mít víc než 7 znaků', @@ -26,8 +26,8 @@ return [ 'remember_me' => 'Neodhlašovat', 'ldap_email_hint' => 'Zadejte email, který chcete přiřadit k tomuto účtu.', 'create_account' => 'Vytvořit účet', - 'already_have_account' => 'Already have an account?', - 'dont_have_account' => 'Don\'t have an account?', + 'already_have_account' => 'Máte už založený účet?', + 'dont_have_account' => 'Nemáte učet?', 'social_login' => 'Přihlášení přes sociální sítě', 'social_registration' => 'Registrace přes sociální sítě', 'social_registration_text' => 'Registrovat a přihlásit se přes jinou službu', @@ -66,12 +66,12 @@ return [ 'email_not_confirmed_resend_button' => 'Znovu poslat email pro potvrzení emailové adresy', // User Invite - 'user_invite_email_subject' => 'You have been invited to join :appName!', - 'user_invite_email_greeting' => 'An account has been created for you on :appName.', - 'user_invite_email_text' => 'Click the button below to set an account password and gain access:', - 'user_invite_email_action' => 'Set Account Password', - 'user_invite_page_welcome' => 'Welcome to :appName!', - 'user_invite_page_text' => 'To finalise your account and gain access you need to set a password which will be used to log-in to :appName on future visits.', - 'user_invite_page_confirm_button' => 'Confirm Password', - 'user_invite_success' => 'Password set, you now have access to :appName!' + 'user_invite_email_subject' => 'Byl jste pozván do :appName!', + 'user_invite_email_greeting' => 'Byl pro vás vytvořen účet na :appName.', + 'user_invite_email_text' => 'Klikněte na tlačítko níže pro nastavení hesla k účtu a získání přístupu:', + 'user_invite_email_action' => 'Nastavit heslo účtu', + 'user_invite_page_welcome' => 'Vítejte v :appName!', + 'user_invite_page_text' => 'Chcete-li dokončit svůj účet a získat přístup, musíte nastavit heslo, které bude použito k přihlášení do :appName při budoucích návštěvách.', + 'user_invite_page_confirm_button' => 'Potvrdit heslo', + 'user_invite_success' => 'Heslo nastaveno, nyní máte přístup k :appName!' ]; \ No newline at end of file diff --git a/resources/lang/cs/common.php b/resources/lang/cs/common.php index 52d596838..785648180 100644 --- a/resources/lang/cs/common.php +++ b/resources/lang/cs/common.php @@ -11,20 +11,20 @@ return [ 'save' => 'Uložit', 'continue' => 'Pokračovat', 'select' => 'Zvolit', - 'toggle_all' => 'Toggle All', + 'toggle_all' => 'Přepnout vše', 'more' => 'Více', // Form Labels 'name' => 'Jméno', 'description' => 'Popis', - 'role' => 'Role', + 'role' => 'Funkce', 'cover_image' => 'Obrázek na přebal', 'cover_image_description' => 'Obrázek by měl být asi 440 × 250px.', // Actions 'actions' => 'Akce', 'view' => 'Pohled', - 'view_all' => 'View All', + 'view_all' => 'Zobrazit vše', 'create' => 'Vytvořit', 'update' => 'Aktualizovat', 'edit' => 'Upravit', @@ -35,19 +35,19 @@ return [ 'delete' => 'Smazat', 'search' => 'Hledat', 'search_clear' => 'Vyčistit hledání', - 'reset' => 'Reset', + 'reset' => 'Resetovat', 'remove' => 'Odstranit', 'add' => 'Přidat', - 'fullscreen' => 'Fullscreen', + 'fullscreen' => 'Celá obrazovka', // Sort Options - 'sort_options' => 'Sort Options', - 'sort_direction_toggle' => 'Sort Direction Toggle', - 'sort_ascending' => 'Sort Ascending', - 'sort_descending' => 'Sort Descending', - 'sort_name' => 'Name', - 'sort_created_at' => 'Created Date', - 'sort_updated_at' => 'Updated Date', + 'sort_options' => 'Možnosti řazení', + 'sort_direction_toggle' => 'Přepínač směru řazení', + 'sort_ascending' => 'Řadit vzestupně', + 'sort_descending' => 'Řadit sestupně', + 'sort_name' => 'Jméno', + 'sort_created_at' => 'Datum vytvoření', + 'sort_updated_at' => 'Datum aktualizace', // Misc 'deleted_user' => 'Smazaný uživatel', @@ -60,16 +60,16 @@ return [ 'grid_view' => 'Zobrazit dlaždice', 'list_view' => 'Zobrazit seznam', 'default' => 'Výchozí', - 'breadcrumb' => 'Breadcrumb', + 'breadcrumb' => 'Drobečková navigace', // Header - 'profile_menu' => 'Profile Menu', + 'profile_menu' => 'Nabídka profilu', 'view_profile' => 'Ukázat profil', 'edit_profile' => 'Upravit profil', // Layout tabs 'tab_info' => 'Info', - 'tab_content' => 'Content', + 'tab_content' => 'Obsah', // Email Content 'email_action_help' => 'Pokud se vám nedaří kliknout na tlačítko ":actionText", zkopírujte odkaz níže přímo do webového prohlížeče:', diff --git a/resources/lang/cs/errors.php b/resources/lang/cs/errors.php index ebcf3f44e..f3b87fc02 100644 --- a/resources/lang/cs/errors.php +++ b/resources/lang/cs/errors.php @@ -83,6 +83,7 @@ return [ // Error pages '404_page_not_found' => 'Stránka nenalezena', 'sorry_page_not_found' => 'Omlouváme se, ale stránka, kterou hledáte nebyla nalezena.', + 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.', 'return_home' => 'Návrat domů', 'error_occurred' => 'Nastala chyba', 'app_down' => ':appName je momentálně vypnutá', @@ -96,4 +97,7 @@ return [ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls', 'api_user_token_expired' => 'The authorization token used has expired', + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Error thrown when sending a test email:', + ]; diff --git a/resources/lang/cs/settings.php b/resources/lang/cs/settings.php index 7488560a7..e36a53009 100644 --- a/resources/lang/cs/settings.php +++ b/resources/lang/cs/settings.php @@ -185,27 +185,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => 'Dansk', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/da/auth.php b/resources/lang/da/auth.php index fe1b62079..01c725ee6 100644 --- a/resources/lang/da/auth.php +++ b/resources/lang/da/auth.php @@ -34,44 +34,44 @@ return [ 'register_thanks' => 'Tak for registreringen!', 'register_confirm' => 'Check venligst din e-mail og klik deri på bekræftelses knappen for at tilgå :appName.', - 'registrations_disabled' => 'Registrations are currently disabled', - 'registration_email_domain_invalid' => 'That email domain does not have access to this application', - 'register_success' => 'Thanks for signing up! You are now registered and signed in.', + 'registrations_disabled' => 'Registrering er i øjeblikket deaktiveret', + 'registration_email_domain_invalid' => 'E-Mail domænet har ikke adgang til denne applikation', + 'register_success' => 'Tak for din registrering. Du er nu registeret og logget ind.', // Password Reset - 'reset_password' => 'Reset Password', - 'reset_password_send_instructions' => 'Enter your email below and you will be sent an email with a password reset link.', - 'reset_password_send_button' => 'Send Reset Link', - 'reset_password_sent_success' => 'A password reset link has been sent to :email.', - 'reset_password_success' => 'Your password has been successfully reset.', - 'email_reset_subject' => 'Reset your :appName password', - 'email_reset_text' => 'You are receiving this email because we received a password reset request for your account.', - 'email_reset_not_requested' => 'If you did not request a password reset, no further action is required.', + 'reset_password' => 'Nulstil adgangskode', + 'reset_password_send_instructions' => 'Indtast din E-Mail herunder og du vil blive sendt en E-Mail med et link til at nulstille din adgangskode.', + 'reset_password_send_button' => 'Send link til nulstilling', + 'reset_password_sent_success' => 'Et link til at nulstille adgangskoden er blevet sendt til :email.', + 'reset_password_success' => 'Din adgangskode er blevet nulstillet.', + 'email_reset_subject' => 'Nulstil din :appName adgangskode', + 'email_reset_text' => 'Du modtager denne E-Mail fordi vi har modtaget en anmodning om at nulstille din adgangskode.', + 'email_reset_not_requested' => 'Hvis du ikke har anmodet om at få din adgangskode nulstillet, behøver du ikke at foretage dig noget.', // Email Confirmation - 'email_confirm_subject' => 'Confirm your email on :appName', - 'email_confirm_greeting' => 'Thanks for joining :appName!', - 'email_confirm_text' => 'Please confirm your email address by clicking the button below:', - 'email_confirm_action' => 'Confirm Email', - 'email_confirm_send_error' => 'Email confirmation required but the system could not send the email. Contact the admin to ensure email is set up correctly.', - 'email_confirm_success' => 'Your email has been confirmed!', - 'email_confirm_resent' => 'Confirmation email resent, Please check your inbox.', + 'email_confirm_subject' => 'Bekræft din E-Mail på :appName', + 'email_confirm_greeting' => 'Tak for at oprette dig på :appName!', + 'email_confirm_text' => 'Bekræft venligst din E-Mail adresse ved at klikke på linket nedenfor:', + 'email_confirm_action' => 'Bekræft E-Mail', + 'email_confirm_send_error' => 'E-Mail-bekræftelse kræves, men systemet kunne ikke sende E-Mailen. Kontakt administratoren for at sikre, at E-Mail er konfigureret korrekt.', + 'email_confirm_success' => 'Din E-Mail er blevet bekræftet!', + 'email_confirm_resent' => 'Bekræftelsesmail sendt, tjek venligst din indboks.', - 'email_not_confirmed' => 'Email Address Not Confirmed', - 'email_not_confirmed_text' => 'Your email address has not yet been confirmed.', - 'email_not_confirmed_click_link' => 'Please click the link in the email that was sent shortly after you registered.', - 'email_not_confirmed_resend' => 'If you cannot find the email you can re-send the confirmation email by submitting the form below.', - 'email_not_confirmed_resend_button' => 'Resend Confirmation Email', + 'email_not_confirmed' => 'E-Mail adresse ikke bekræftet', + 'email_not_confirmed_text' => 'Din E-Mail adresse er endnu ikke blevet bekræftet.', + 'email_not_confirmed_click_link' => 'Klik venligst på linket i E-Mailen der blev sendt kort efter du registrerede dig.', + 'email_not_confirmed_resend' => 'Hvis du ikke kan finde E-Mailen, kan du du få gensendt bekræftelsesemailen ved at trykke herunder.', + 'email_not_confirmed_resend_button' => 'Gensend bekræftelsesemail', // User Invite - 'user_invite_email_subject' => 'You have been invited to join :appName!', - 'user_invite_email_greeting' => 'An account has been created for you on :appName.', - 'user_invite_email_text' => 'Click the button below to set an account password and gain access:', - 'user_invite_email_action' => 'Set Account Password', - 'user_invite_page_welcome' => 'Welcome to :appName!', - 'user_invite_page_text' => 'To finalise your account and gain access you need to set a password which will be used to log-in to :appName on future visits.', - 'user_invite_page_confirm_button' => 'Confirm Password', - 'user_invite_success' => 'Password set, you now have access to :appName!' + 'user_invite_email_subject' => 'Du er blevet inviteret til :appName!', + 'user_invite_email_greeting' => 'En konto er blevet oprettet til dig på :appName.', + 'user_invite_email_text' => 'Klik på knappen nedenunderm for at sætte en adgangskode og opnå adgang:', + 'user_invite_email_action' => 'Set adgangskode', + 'user_invite_page_welcome' => 'Velkommen til :appName!', + 'user_invite_page_text' => 'For at færdiggøre din konto og få adgang skal du indstille en adgangskode, der bruges til at logge ind på :appName ved fremtidige besøg.', + 'user_invite_page_confirm_button' => 'Bekræft adgangskode', + 'user_invite_success' => 'Adgangskode indstillet, du har nu adgang til :appName!' ]; \ No newline at end of file diff --git a/resources/lang/da/common.php b/resources/lang/da/common.php index be37d11ae..aaec2cc7a 100644 --- a/resources/lang/da/common.php +++ b/resources/lang/da/common.php @@ -19,10 +19,10 @@ return [ 'description' => 'Beskrivelse', 'role' => 'Rolle', 'cover_image' => 'Coverbillede', - 'cover_image_description' => 'This image should be approx 440x250px.', + 'cover_image_description' => 'Dette billede skal være omtrent 440x250px.', // Actions - 'actions' => 'Actions', + 'actions' => 'Handlinger', 'view' => 'Vis', 'view_all' => 'Vis alle', 'create' => 'Opret', @@ -42,36 +42,36 @@ return [ // Sort Options 'sort_options' => 'Sorteringsindstillinger', - 'sort_direction_toggle' => 'Sort Direction Toggle', - 'sort_ascending' => 'Sort Ascending', - 'sort_descending' => 'Sort Descending', - 'sort_name' => 'Name', - 'sort_created_at' => 'Created Date', - 'sort_updated_at' => 'Updated Date', + 'sort_direction_toggle' => 'Sorteringsretning', + 'sort_ascending' => 'Sorter stigende', + 'sort_descending' => 'Sorter faldende', + 'sort_name' => 'Navn', + 'sort_created_at' => 'Oprettelsesdato', + 'sort_updated_at' => 'Opdateringsdato', // Misc - 'deleted_user' => 'Deleted User', - 'no_activity' => 'No activity to show', - 'no_items' => 'No items available', - 'back_to_top' => 'Back to top', - 'toggle_details' => 'Toggle Details', - 'toggle_thumbnails' => 'Toggle Thumbnails', - 'details' => 'Details', - 'grid_view' => 'Grid View', - 'list_view' => 'List View', - 'default' => 'Default', - 'breadcrumb' => 'Breadcrumb', + 'deleted_user' => 'Slettet bruger', + 'no_activity' => 'Ingen aktivitet at vise', + 'no_items' => 'Intet indhold tilgængeligt', + 'back_to_top' => 'Tilbage til toppen', + 'toggle_details' => 'Vis/skjul detaljer', + 'toggle_thumbnails' => 'Vis/skjul miniaturer', + 'details' => 'Detaljer', + 'grid_view' => 'Gittervisning', + 'list_view' => 'Listevisning', + 'default' => 'Standard', + 'breadcrumb' => 'Brødkrumme', // Header - 'profile_menu' => 'Profile Menu', - 'view_profile' => 'View Profile', - 'edit_profile' => 'Edit Profile', + 'profile_menu' => 'Profilmenu', + 'view_profile' => 'Vis profil', + 'edit_profile' => 'Redigér Profil', // Layout tabs 'tab_info' => 'Info', - 'tab_content' => 'Content', + 'tab_content' => 'Indhold', // Email Content - 'email_action_help' => 'If you’re having trouble clicking the ":actionText" button, copy and paste the URL below into your web browser:', - 'email_rights' => 'All rights reserved', + 'email_action_help' => 'Hvis du har problemer med at trykke på ":actionText" knappen, prøv at kopiere og indsætte linket herunder ind i din webbrowser:', + 'email_rights' => 'Alle rettigheder forbeholdes', ]; diff --git a/resources/lang/da/components.php b/resources/lang/da/components.php new file mode 100644 index 000000000..135dc9d56 --- /dev/null +++ b/resources/lang/da/components.php @@ -0,0 +1,33 @@ + 'Billedselektion', + 'image_all' => 'Alt', + 'image_all_title' => 'Se alle billeder', + 'image_book_title' => 'Vis billeder uploadet til denne bog', + 'image_page_title' => 'Vis billeder uploadet til denne side', + 'image_search_hint' => 'Søg efter billednavn', + 'image_uploaded' => 'Uploadet :uploadedDate', + 'image_load_more' => 'Indlæse mere', + 'image_image_name' => 'Billednavn', + 'image_delete_used' => 'Dette billede er brugt på siderne nedenfor.', + 'image_delete_confirm' => 'Tryk på slet igen for at bekræft at du ønsker at slette dette billede.', + 'image_select_image' => 'Vælg billede', + 'image_dropzone' => 'Træk-og-slip billede eller klik her for at uploade', + 'images_deleted' => 'Billede slettet', + 'image_preview' => 'Billedeksempel', + 'image_upload_success' => 'Foto uploadet', + 'image_update_success' => 'Billeddetaljer succesfuldt opdateret', + 'image_delete_success' => 'Billede slettet', + 'image_upload_remove' => 'Fjern', + + // Code Editor + 'code_editor' => 'Rediger kode', + 'code_language' => 'Kodesprog', + 'code_content' => 'Kodeindhold', + 'code_save' => 'Gem kode', +]; diff --git a/resources/lang/da/entities.php b/resources/lang/da/entities.php new file mode 100644 index 000000000..3a2467773 --- /dev/null +++ b/resources/lang/da/entities.php @@ -0,0 +1,314 @@ + 'Nyligt oprettet', + 'recently_created_pages' => 'Nyligt oprettede sider', + 'recently_updated_pages' => 'Nyligt opdaterede sider', + 'recently_created_chapters' => 'Nyligt oprettede kapitler', + 'recently_created_books' => 'Nyligt oprettede bøger', + 'recently_created_shelves' => 'Nyligt oprettede reoler', + 'recently_update' => 'Opdateret for nyligt', + 'recently_viewed' => 'Senest viste', + 'recent_activity' => 'Seneste aktivitet', + 'create_now' => 'Opret en nu', + 'revisions' => 'Revisioner', + 'meta_revision' => 'Revision #:revisionCount', + 'meta_created' => 'Oprettet :timeLength', + 'meta_created_name' => 'Oprettet :timeLength af :user', + 'meta_updated' => 'Opdateret :timeLength', + 'meta_updated_name' => 'Opdateret :timeLength af :user', + 'entity_select' => 'Vælg emne', + 'images' => 'Billeder', + 'my_recent_drafts' => 'Mine seneste kladder', + 'my_recently_viewed' => 'Mine senest viste', + 'no_pages_viewed' => 'Du har ikke besøgt nogle sider', + 'no_pages_recently_created' => 'Ingen sider er blevet oprettet for nyligt', + 'no_pages_recently_updated' => 'Ingen sider er blevet opdateret for nyligt', + 'export' => 'Exporter', + 'export_html' => 'Indeholdt webfil', + 'export_pdf' => 'PDF-fil', + 'export_text' => 'Almindelig tekstfil', + + // Permissions and restrictions + 'permissions' => 'Rettigheder', + 'permissions_intro' => 'Når de er aktiveret, vil disse tilladelser have prioritet over alle indstillede rolletilladelser.', + 'permissions_enable' => 'Aktivér tilpassede tilladelser', + 'permissions_save' => 'Gem tilladelser', + + // Search + 'search_results' => 'Søgeresultater', + 'search_total_results_found' => ':count resultat fundet|:count resultater fundet', + 'search_clear' => 'Ryd søgning', + 'search_no_pages' => 'Ingen sider matchede søgning', + 'search_for_term' => 'Søgning for :term', + 'search_more' => 'Flere resultater', + 'search_filters' => 'Søgefiltre', + 'search_content_type' => 'Indholdstype', + 'search_exact_matches' => 'Nøjagtige matches', + 'search_tags' => 'Tagsøgninger', + 'search_options' => 'Indstillinger', + 'search_viewed_by_me' => 'Set af mig', + 'search_not_viewed_by_me' => 'Ikke set af mig', + 'search_permissions_set' => 'Rettigheders sæt', + 'search_created_by_me' => 'Oprettet af mig', + 'search_updated_by_me' => 'Opdateret af mig', + 'search_date_options' => 'Datoindstillinger', + 'search_updated_before' => 'Opdateret før', + 'search_updated_after' => 'Opdateret efter', + 'search_created_before' => 'Oprettet før', + 'search_created_after' => 'Oprettet efter', + 'search_set_date' => 'Sæt dato', + 'search_update' => 'Opdatér søgning', + + // Shelves + 'shelf' => 'Reol', + 'shelves' => 'Reoler', + 'x_shelves' => ':count reol|:count reoler', + 'shelves_long' => 'Bogreoler', + 'shelves_empty' => 'Ingen reoler er blevet oprettet', + 'shelves_create' => 'Opret ny reol', + 'shelves_popular' => 'Populære reoler', + 'shelves_new' => 'Nye reoler', + 'shelves_new_action' => 'Ny reol', + 'shelves_popular_empty' => 'De mest populære reoler vil blive vist her.', + 'shelves_new_empty' => 'De nyeste reoler vil blive vist her.', + 'shelves_save' => 'Gem reol', + 'shelves_books' => 'Bøger på denne reol', + 'shelves_add_books' => 'Tilføj bøger til denne reol', + 'shelves_drag_books' => 'Træk bog her for at tilføje dem til denne reol', + 'shelves_empty_contents' => 'Denne reol har ingen bøger tilknyttet til den', + 'shelves_edit_and_assign' => 'Rediger reol for at tilføje bøger', + 'shelves_edit_named' => 'Rediger reol :name', + 'shelves_edit' => 'Rediger reol', + 'shelves_delete' => 'Slet reol', + 'shelves_delete_named' => 'Slet bogreol :name', + 'shelves_delete_explain' => "Dette vil slette bogreolen med navn ':name'. Bøger heri vil ikke blive slettet.", + 'shelves_delete_confirmation' => 'Er du sikker på at du vil slette denne bogreol?', + 'shelves_permissions' => 'Reoltilladelser', + 'shelves_permissions_updated' => 'Reoltilladelser opdateret', + 'shelves_permissions_active' => 'Aktive reoltilladelser', + 'shelves_copy_permissions_to_books' => 'Kopier tilladelser til bøger', + 'shelves_copy_permissions' => 'Kopier tilladelser', + 'shelves_copy_permissions_explain' => 'Dette vil anvende de aktuelle tilladelsesindstillinger på denne boghylde på alle bøger indeholdt i. Før aktivering skal du sikre dig, at ændringer i tilladelserne til denne boghylde er blevet gemt.', + 'shelves_copy_permission_success' => 'Reolstilladelser kopieret til :count bøger', + + // Books + 'book' => 'Bog', + 'books' => 'Bøger', + 'x_books' => ':count bog|:count bøger', + 'books_empty' => 'Ingen bøger er blevet oprettet', + 'books_popular' => 'Populære bøger', + 'books_recent' => 'Nylige bøger', + 'books_new' => 'Nye bøger', + 'books_new_action' => 'Ny bog', + 'books_popular_empty' => 'De mest populære bøger vil blive vist her.', + 'books_new_empty' => 'De nyeste boger vil blive vist her.', + 'books_create' => 'Lav en ny bog', + 'books_delete' => 'Slet bog', + 'books_delete_named' => 'Slet bog :bookName', + 'books_delete_explain' => 'Dette vil slette bogen ved navn \':bookName\'. Alle sider og kapitler vil blive slettet.', + 'books_delete_confirmation' => 'Er du sikker på at du vil slette denne bog?', + 'books_edit' => 'Rediger bog', + 'books_edit_named' => 'Rediger bog :bookName', + 'books_form_book_name' => 'Bognavn', + 'books_save' => 'Gem bog', + 'books_permissions' => 'Bogtilladelser', + 'books_permissions_updated' => 'Bogtilladelser opdateret', + 'books_empty_contents' => 'Ingen sider eller kapitler er blevet oprettet i denne bog.', + 'books_empty_create_page' => 'Opret en ny side', + 'books_empty_sort_current_book' => 'Sortér denne bog', + 'books_empty_add_chapter' => 'Tilføj et kapitel', + 'books_permissions_active' => 'Aktive bogtilladelser', + 'books_search_this' => 'Søg i denne bog', + 'books_navigation' => 'Bognavigation', + 'books_sort' => 'Sorter bogindhold', + 'books_sort_named' => 'Sorter bog :bookName', + 'books_sort_name' => 'Sortér efter navn', + 'books_sort_created' => 'Sortér efter oprettelsesdato', + 'books_sort_updated' => 'Sortér efter opdateringsdato', + 'books_sort_chapters_first' => 'Kapitler først', + 'books_sort_chapters_last' => 'Kapitler sidst', + 'books_sort_show_other' => 'Vis andre bøger', + 'books_sort_save' => 'Gem ny ordre', + + // Chapters + 'chapter' => 'Kapitel', + 'chapters' => 'Kapitler', + 'x_chapters' => ':count kapitel|:count kapitler', + 'chapters_popular' => 'Populære kapitler', + 'chapters_new' => 'Nyt kapitel', + 'chapters_create' => 'Opret nyt kapitel', + 'chapters_delete' => 'Slet kapitel', + 'chapters_delete_named' => 'Slet kapitel :chapterName', + 'chapters_delete_explain' => 'Dette vil slette kapitlet med navnet \':chapterName\'. Alle sider fjernes og tilføjes direkte til den tilhørende bog.', + 'chapters_delete_confirm' => 'Er du sikker på du vil slette dette kapitel?', + 'chapters_edit' => 'Rediger kapitel', + 'chapters_edit_named' => 'Rediger kapitel :chapterName', + 'chapters_save' => 'Gem kapitel', + 'chapters_move' => 'Flyt kapitel', + 'chapters_move_named' => 'Flyt kapitel :chapterName', + 'chapter_move_success' => 'Kapitel flyttet til :bookName', + 'chapters_permissions' => 'Kapiteltilladelser', + 'chapters_empty' => 'Der er lige nu ingen sider i dette kapitel.', + 'chapters_permissions_active' => 'Aktive kapiteltilladelser', + 'chapters_permissions_success' => 'Kapiteltilladelser opdateret', + 'chapters_search_this' => 'Søg i dette kapitel', + + // Pages + 'page' => 'Side', + 'pages' => 'Sider', + 'x_pages' => ':count Side|:count Sider', + 'pages_popular' => 'Populære sider', + 'pages_new' => 'Ny side', + 'pages_attachments' => 'Vedhæftninger', + 'pages_navigation' => 'Sidenavigation', + 'pages_delete' => 'Slet side', + 'pages_delete_named' => 'Slet side :pageName', + 'pages_delete_draft_named' => 'Slet kladdesidde :pageName', + 'pages_delete_draft' => 'Slet kladdeside', + 'pages_delete_success' => 'Side slettet', + 'pages_delete_draft_success' => 'Kladdeside slettet', + 'pages_delete_confirm' => 'Er du sikker på, du vil slette denne side?', + 'pages_delete_draft_confirm' => 'Er du sikker på at du vil slette denne kladdesidde?', + 'pages_editing_named' => 'Redigerer :pageName', + 'pages_edit_draft_options' => 'Kladdeindstillinger', + 'pages_edit_save_draft' => 'Gem kladde', + 'pages_edit_draft' => 'Rediger sidekladde', + 'pages_editing_draft' => 'Redigerer kladde', + 'pages_editing_page' => 'Redigerer side', + 'pages_edit_draft_save_at' => 'Kladde gemt ved ', + 'pages_edit_delete_draft' => 'Slet kladde', + 'pages_edit_discard_draft' => 'Kassér kladde', + 'pages_edit_set_changelog' => 'Sæt ændringsoversigt', + 'pages_edit_enter_changelog_desc' => 'Indtast en kort beskrivelse af ændringer du har lavet', + 'pages_edit_enter_changelog' => 'Indtast ændringsoversigt', + 'pages_save' => 'Gem siden', + 'pages_title' => 'Overskrift', + 'pages_name' => 'Sidenavn', + 'pages_md_editor' => 'Editor', + 'pages_md_preview' => 'Forhåndsvisning', + 'pages_md_insert_image' => 'Indsæt billede', + 'pages_md_insert_link' => 'Indsæt emnelink', + 'pages_md_insert_drawing' => 'Indsæt tegning', + 'pages_not_in_chapter' => 'Side er ikke i et kapitel', + 'pages_move' => 'Flyt side', + 'pages_move_success' => 'Flyt side til ":parentName"', + 'pages_copy' => 'Kopier side', + 'pages_copy_desination' => 'Kopier destination', + 'pages_copy_success' => 'Side kopieret succesfuldt', + 'pages_permissions' => 'Sidetilladelser', + 'pages_permissions_success' => 'Sidetilladelser opdateret', + 'pages_revision' => 'Revision', + 'pages_revisions' => 'Sidserevisioner', + 'pages_revisions_named' => 'Siderevisioner for :pageName', + 'pages_revision_named' => 'Siderevision for :pageName', + 'pages_revisions_created_by' => 'Oprettet af', + 'pages_revisions_date' => 'Revisionsdato', + 'pages_revisions_number' => '#', + 'pages_revisions_numbered' => 'Revision #:id', + 'pages_revisions_numbered_changes' => 'Revision #:id ændringer', + 'pages_revisions_changelog' => 'Ændringsoversigt', + 'pages_revisions_changes' => 'Ændringer', + 'pages_revisions_current' => 'Nuværende version', + 'pages_revisions_preview' => 'Forhåndsvisning', + 'pages_revisions_restore' => 'Gendan', + 'pages_revisions_none' => 'Denne side har ingen revisioner', + 'pages_copy_link' => 'Kopier link', + 'pages_edit_content_link' => 'Redigér indhold', + 'pages_permissions_active' => 'Aktive sidetilladelser', + 'pages_initial_revision' => 'Første udgivelse', + 'pages_initial_name' => 'Ny side', + 'pages_editing_draft_notification' => 'Du redigerer en kladde der sidst var gemt :timeDiff.', + 'pages_draft_edited_notification' => 'Siden har været opdateret siden da. Det er anbefalet at du kasserer denne kladde.', + 'pages_draft_edit_active' => [ + 'start_a' => ':count brugerer har begyndt at redigere denne side', + 'start_b' => ':userName er begyndt at redigere denne side', + 'time_a' => 'siden siden sidst blev opdateret', + 'time_b' => 'i de sidste :minCount minutter', + 'message' => ':start : time. Pas på ikke at overskrive hinandens opdateringer!', + ], + 'pages_draft_discarded' => 'Kladde kasseret, editoren er blevet opdateret med aktuelt sideindhold', + 'pages_specific' => 'Specifik side', + 'pages_is_template' => 'Sideskabelon', + + // Editor Sidebar + 'page_tags' => 'Sidetags', + 'chapter_tags' => 'Kapiteltags', + 'book_tags' => 'Bogtags', + 'shelf_tags' => 'Reoltags', + 'tag' => 'Tag', + 'tags' => 'Tags', + 'tag_name' => 'Tagnavn', + 'tag_value' => 'Tagværdi (valgfri)', + 'tags_explain' => "Tilføj nogle tags for bedre at kategorisere dit indhold. \n Du kan tildele en værdi til et tag for mere dybdegående organisering.", + 'tags_add' => 'Tilføj endnu et tag', + 'tags_remove' => 'Fjern dette tag', + 'attachments' => 'Vedhæftninger', + 'attachments_explain' => 'Upload nogle filer, eller vedhæft nogle links, der skal vises på siden. Disse er synlige i sidepanelet.', + 'attachments_explain_instant_save' => 'Ændringer her gemmes med det samme.', + 'attachments_items' => 'Vedhæftede emner', + 'attachments_upload' => 'Upload fil', + 'attachments_link' => 'Vedhæft link', + 'attachments_set_link' => 'Sæt link', + 'attachments_delete_confirm' => 'Tryk på slet igen for at bekræft at du ønsker at slette denne vedhæftning.', + 'attachments_dropzone' => 'Slip filer eller klik her for at vedhæfte en fil', + 'attachments_no_files' => 'Ingen filer er blevet overført', + 'attachments_explain_link' => 'Du kan vedhæfte et link, hvis du foretrækker ikke at uploade en fil. Dette kan være et link til en anden side eller et link til en fil i skyen.', + 'attachments_link_name' => 'Linknavn', + 'attachment_link' => 'Vedhæftningslink', + 'attachments_link_url' => 'Link til filen', + 'attachments_link_url_hint' => 'Adresse (URL) på side eller fil', + 'attach' => 'Vedhæft', + 'attachments_edit_file' => 'Rediger fil', + 'attachments_edit_file_name' => 'Filnavn', + 'attachments_edit_drop_upload' => 'Slip filer eller klik her for at uploade og overskrive', + 'attachments_order_updated' => 'Vedhæftningsordre opdateret', + 'attachments_updated_success' => 'Vedhæftningsdetaljer opdateret', + 'attachments_deleted' => 'Vedhæftning slettet', + 'attachments_file_uploaded' => 'Filen blev uploadet korrekt', + 'attachments_file_updated' => 'Filen blev opdateret korrekt', + 'attachments_link_attached' => 'Link succesfuldt vedhæftet til side', + 'templates' => 'Skabeloner', + 'templates_set_as_template' => 'Side er en skabelon', + 'templates_explain_set_as_template' => 'Du kan indstille denne side som en skabelon, så dens indhold bruges, når du opretter andre sider. Andre brugere vil kunne bruge denne skabelon, hvis de har visningstilladelser til denne side.', + 'templates_replace_content' => 'Udskift sideindhold', + 'templates_append_content' => 'Tilføj efter sideindhold', + 'templates_prepend_content' => 'Tilføj før sideindhold', + + // Profile View + 'profile_user_for_x' => 'Bruger i :time', + 'profile_created_content' => 'Oprettet indhold', + 'profile_not_created_pages' => ':userName har ikke oprettet nogle sider', + 'profile_not_created_chapters' => ':userName har ikke oprettet nogle kapitler', + 'profile_not_created_books' => ':userName har ikke oprettet nogle bøger', + 'profile_not_created_shelves' => ':userName har ikke oprettet nogle reoler', + + // Comments + 'comment' => 'Kommentar', + 'comments' => 'Kommentarer', + 'comment_add' => 'Tilføj kommentar', + 'comment_placeholder' => 'Skriv en kommentar her', + 'comment_count' => '{0} Ingen kommentarer|{1} 1 Kommentar|[2,*] :count kommentarer', + 'comment_save' => 'Gem kommentar', + 'comment_saving' => 'Gemmer kommentar...', + 'comment_deleting' => 'Sletter kommentar...', + 'comment_new' => 'Ny kommentar', + 'comment_created' => 'kommenteret :createDiff', + 'comment_updated' => 'Opdateret :updateDiff af :username', + 'comment_deleted_success' => 'Kommentar slettet', + 'comment_created_success' => 'Kommentaren er tilføjet', + 'comment_updated_success' => 'Kommentaren er opdateret', + 'comment_delete_confirm' => 'Er du sikker på, at du vil slette denne kommentar?', + 'comment_in_reply_to' => 'Som svar til :commentId', + + // Revision + 'revision_delete_confirm' => 'Er du sikker på at du vil slette denne revision?', + 'revision_restore_confirm' => 'Er du sikker på at du ønsker at gendanne denne revision? Nuværende sideindhold vil blive erstattet.', + 'revision_delete_success' => 'Revision slettet', + 'revision_cannot_delete_latest' => 'Kan ikke slette seneste revision.' +]; \ No newline at end of file diff --git a/resources/lang/da/errors.php b/resources/lang/da/errors.php index e92dab45c..e5a388c33 100644 --- a/resources/lang/da/errors.php +++ b/resources/lang/da/errors.php @@ -13,87 +13,91 @@ return [ 'email_already_confirmed' => 'Email er allerede bekræftet. Prøv at logge ind.', 'email_confirmation_invalid' => 'Denne bekræftelsestoken er ikke gyldig eller er allerede blevet brugt. Prøv at registrere dig igen.', 'email_confirmation_expired' => 'Bekræftelsestoken er udløbet. En ny bekræftelsesmail er blevet sendt.', - 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed', - 'ldap_fail_anonymous' => 'LDAP access failed using anonymous bind', + 'email_confirmation_awaiting' => 'Mail-adressen for din konto i brug er nød til at blive bekræftet', + 'ldap_fail_anonymous' => 'LDAP-adgang fejlede ved brugen af annonym bind', 'ldap_fail_authed' => 'LDAP adgang fejlede med de givne DN & kodeord oplysninger', 'ldap_extension_not_installed' => 'LDAP PHP udvidelse er ikke installeret', 'ldap_cannot_connect' => 'Kan ikke forbinde til ldap server. Indledende forbindelse mislykkedes', 'saml_already_logged_in' => 'Allerede logget ind', 'saml_user_not_registered' => 'Brugeren :name er ikke registreret, og automatisk registrering er slået fra', - 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system', - 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.', - 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization', - 'social_no_action_defined' => 'No action defined', - 'social_login_bad_response' => "Error received during :socialAccount login: \n:error", - 'social_account_in_use' => 'This :socialAccount account is already in use, Try logging in via the :socialAccount option.', - 'social_account_email_in_use' => 'The email :email is already in use. If you already have an account you can connect your :socialAccount account from your profile settings.', - 'social_account_existing' => 'This :socialAccount is already attached to your profile.', - 'social_account_already_used_existing' => 'This :socialAccount account is already used by another user.', - 'social_account_not_used' => 'This :socialAccount account is not linked to any users. Please attach it in your profile settings. ', - 'social_account_register_instructions' => 'If you do not yet have an account, You can register an account using the :socialAccount option.', - 'social_driver_not_found' => 'Social driver not found', - 'social_driver_not_configured' => 'Your :socialAccount social settings are not configured correctly.', - 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.', + 'saml_no_email_address' => 'Kunne ikke finde en e-mail-adresse for denne bruger i de data, der leveres af det eksterne godkendelsessystem', + 'saml_invalid_response_id' => 'Anmodningen fra det eksterne godkendelsessystem genkendes ikke af en proces, der er startet af denne applikation. Navigering tilbage efter et login kan forårsage dette problem.', + 'saml_fail_authed' => 'Login ved hjælp af :system failed, systemet har ikke givet tilladelse', + 'social_no_action_defined' => 'Ingen handling er defineret', + 'social_login_bad_response' => "Der opstod en fejl under :socialAccount login:\n:error", + 'social_account_in_use' => 'Denne :socialAccount konto er allerede i brug, prøv at logge ind med :socialAccount loginmetoden.', + 'social_account_email_in_use' => 'Emailen :email er allerede i brug. Hvis du allerede har en konto, kan du forbinde din :socialAccount fra dine profilindstillinger.', + 'social_account_existing' => ':socialAccount er allerede tilknyttet din profil.', + 'social_account_already_used_existing' => 'Denne :socialAccount konto er allerede i brug af en anden bruger.', + 'social_account_not_used' => 'Denne :socialAccount konto er ikke tilknyttet nogle brugere. Tilknyt den i dine profilindstillinger. ', + 'social_account_register_instructions' => 'Hvis du ikke har en konto, kan du registrere en konto gennem :socialAccount loginmetoden.', + 'social_driver_not_found' => 'Socialdriver ikke fundet', + 'social_driver_not_configured' => 'Dine :socialAccount indstillinger er ikke konfigureret korret.', + 'invite_token_expired' => 'Dette invitationslink er udløbet. I stedet kan du prøve at nulstille din kontos kodeord.', // System - 'path_not_writable' => 'File path :filePath could not be uploaded to. Ensure it is writable to the server.', - 'cannot_get_image_from_url' => 'Cannot get image from :url', - 'cannot_create_thumbs' => 'The server cannot create thumbnails. Please check you have the GD PHP extension installed.', - 'server_upload_limit' => 'The server does not allow uploads of this size. Please try a smaller file size.', - 'uploaded' => 'The server does not allow uploads of this size. Please try a smaller file size.', - 'image_upload_error' => 'An error occurred uploading the image', - 'image_upload_type_error' => 'The image type being uploaded is invalid', - 'file_upload_timeout' => 'The file upload has timed out.', + 'path_not_writable' => 'Filsti :filePath kunne ikke uploades til. Sørg for at den kan skrives til af webserveren.', + 'cannot_get_image_from_url' => 'Kan ikke finde billede på :url', + 'cannot_create_thumbs' => 'Serveren kan ikke oprette miniaturer. Kontroller, at GD PHP-udvidelsen er installeret.', + 'server_upload_limit' => 'Serveren tillader ikke uploads af denne størrelse. Prøv en mindre filstørrelse.', + 'uploaded' => 'Serveren tillader ikke uploads af denne størrelse. Prøv en mindre filstørrelse.', + 'image_upload_error' => 'Der opstod en fejl ved upload af billedet', + 'image_upload_type_error' => 'Billedtypen, der uploades, er ugyldig', + 'file_upload_timeout' => 'Filuploaden udløb.', // Attachments - 'attachment_page_mismatch' => 'Page mismatch during attachment update', - 'attachment_not_found' => 'Attachment not found', + 'attachment_page_mismatch' => 'Der blev fundet en uoverensstemmelse på siden under opdatering af vedhæftet fil', + 'attachment_not_found' => 'Vedhæftning ikke fundet', // Pages - 'page_draft_autosave_fail' => 'Failed to save draft. Ensure you have internet connection before saving this page', - 'page_custom_home_deletion' => 'Cannot delete a page while it is set as a homepage', + 'page_draft_autosave_fail' => 'Kunne ikke gemme kladde. Tjek at du har internetforbindelse før du gemmer siden', + 'page_custom_home_deletion' => 'Kan ikke slette en side der er sat som forside', // Entities - 'entity_not_found' => 'Entity not found', - 'bookshelf_not_found' => 'Bookshelf not found', - 'book_not_found' => 'Book not found', - 'page_not_found' => 'Page not found', - 'chapter_not_found' => 'Chapter not found', - 'selected_book_not_found' => 'The selected book was not found', - 'selected_book_chapter_not_found' => 'The selected Book or Chapter was not found', - 'guests_cannot_save_drafts' => 'Guests cannot save drafts', + 'entity_not_found' => 'Emne ikke fundet', + 'bookshelf_not_found' => 'Bogreol ikke fundet', + 'book_not_found' => 'Bog ikke fundet', + 'page_not_found' => 'Side ikke fundet', + 'chapter_not_found' => 'Kapitel ikke fundet', + 'selected_book_not_found' => 'Den valgte bog kunne ikke findes', + 'selected_book_chapter_not_found' => 'Den valgte bog eller kapitel kunne ikke findes', + 'guests_cannot_save_drafts' => 'Gæster kan ikke gemme kladder', // Users - 'users_cannot_delete_only_admin' => 'You cannot delete the only admin', - 'users_cannot_delete_guest' => 'You cannot delete the guest user', + 'users_cannot_delete_only_admin' => 'Du kan ikke slette den eneste admin', + 'users_cannot_delete_guest' => 'Du kan ikke slette gæstebrugeren', // Roles - 'role_cannot_be_edited' => 'This role cannot be edited', - 'role_system_cannot_be_deleted' => 'This role is a system role and cannot be deleted', - 'role_registration_default_cannot_delete' => 'This role cannot be deleted while set as the default registration role', - 'role_cannot_remove_only_admin' => 'This user is the only user assigned to the administrator role. Assign the administrator role to another user before attempting to remove it here.', + 'role_cannot_be_edited' => 'Denne rolle kan ikke redigeres', + 'role_system_cannot_be_deleted' => 'Denne rolle er en systemrolle og kan ikke slettes', + 'role_registration_default_cannot_delete' => 'Kan ikke slette rollen mens den er sat som standardrolle for registrerede brugere', + 'role_cannot_remove_only_admin' => 'Denne bruger er den eneste bruger der har administratorrollen. Tilføj en anden bruger til administratorrollen før du forsøger at slette den her.', // Comments - 'comment_list' => 'An error occurred while fetching the comments.', - 'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.', - 'comment_add' => 'An error occurred while adding / updating the comment.', - 'comment_delete' => 'An error occurred while deleting the comment.', - 'empty_comment' => 'Cannot add an empty comment.', + 'comment_list' => 'Der opstod en fejl under hentning af kommentarerne.', + 'cannot_add_comment_to_draft' => 'Du kan ikke kommentere på en kladde.', + 'comment_add' => 'Der opstod en fejl under tilføjelse/opdatering af kommentaren.', + 'comment_delete' => 'Der opstod en fejl under sletning af kommentaren.', + 'empty_comment' => 'Kan ikke tilføje en tom kommentar.', // Error pages - '404_page_not_found' => 'Page Not Found', - 'sorry_page_not_found' => 'Sorry, The page you were looking for could not be found.', - 'return_home' => 'Return to home', - 'error_occurred' => 'An Error Occurred', - 'app_down' => ':appName is down right now', - 'back_soon' => 'It will be back up soon.', + '404_page_not_found' => 'Siden blev ikke fundet', + 'sorry_page_not_found' => 'Beklager, siden du leder efter blev ikke fundet.', + 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.', + 'return_home' => 'Gå tilbage til hjem', + 'error_occurred' => 'Der opstod en fejl', + 'app_down' => ':appName er nede lige nu', + 'back_soon' => 'Den er oppe igen snart.', // API errors - 'api_no_authorization_found' => 'No authorization token found on the request', - 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect', - 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token', - 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect', - 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls', - 'api_user_token_expired' => 'The authorization token used has expired', + 'api_no_authorization_found' => 'Der blev ikke fundet nogen autorisationstoken på anmodningen', + 'api_bad_authorization_format' => 'En autorisationstoken blev fundet på anmodningen, men formatet var forkert', + 'api_user_token_not_found' => 'Der blev ikke fundet nogen matchende API-token for det angivne autorisationstoken', + 'api_incorrect_token_secret' => 'Hemmeligheden leveret til det givne anvendte API-token er forkert', + 'api_user_no_api_permission' => 'Ejeren af den brugte API token har ikke adgang til at foretage API-kald', + 'api_user_token_expired' => 'Den brugte godkendelsestoken er udløbet', + + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Følgende fejl opstod under afsendelse af testemail:', ]; diff --git a/resources/lang/da/pagination.php b/resources/lang/da/pagination.php new file mode 100644 index 000000000..85bd12fc3 --- /dev/null +++ b/resources/lang/da/pagination.php @@ -0,0 +1,12 @@ + '« Previous', + 'next' => 'Next »', + +]; diff --git a/resources/lang/da/settings.php b/resources/lang/da/settings.php index b653f0950..8427d3722 100644 --- a/resources/lang/da/settings.php +++ b/resources/lang/da/settings.php @@ -12,74 +12,74 @@ return [ 'settings_save_success' => 'Indstillinger gemt', // App Settings - 'app_customization' => 'Customization', - 'app_features_security' => 'Features & Security', - 'app_name' => 'Application Name', - 'app_name_desc' => 'This name is shown in the header and in any system-sent emails.', - 'app_name_header' => 'Show name in header', + 'app_customization' => 'Tilpasning', + 'app_features_security' => 'Funktioner & sikkerhed', + 'app_name' => 'Programnavn', + 'app_name_desc' => 'Dette er navnet vist i headeren og i systemafsendte E-Mails.', + 'app_name_header' => 'Vis navn i header', 'app_public_access' => 'Offentlig adgang', - 'app_public_access_desc' => 'Enabling this option will allow visitors, that are not logged-in, to access content in your BookStack instance.', - 'app_public_access_desc_guest' => 'Access for public visitors can be controlled through the "Guest" user.', + 'app_public_access_desc' => 'Aktivering af denne funktion giver besøgende, der ikke er logget ind, adgang til indhold i din BookStack-instans.', + 'app_public_access_desc_guest' => 'Adgang for ikke-registrerede besøgende kan kontrolleres via "Gæst" -brugeren.', 'app_public_access_toggle' => 'Tillad offentlig adgang', - 'app_public_viewing' => 'Allow public viewing?', - 'app_secure_images' => 'Higher Security Image Uploads', - 'app_secure_images_toggle' => 'Enable higher security image uploads', - 'app_secure_images_desc' => 'For performance reasons, all images are public. This option adds a random, hard-to-guess string in front of image urls. Ensure directory indexes are not enabled to prevent easy access.', - 'app_editor' => 'Page Editor', - 'app_editor_desc' => 'Select which editor will be used by all users to edit pages.', - 'app_custom_html' => 'Custom HTML Head Content', - 'app_custom_html_desc' => 'Any content added here will be inserted into the bottom of the section of every page. This is handy for overriding styles or adding analytics code.', - 'app_custom_html_disabled_notice' => 'Custom HTML head content is disabled on this settings page to ensure any breaking changes can be reverted.', - 'app_logo' => 'Application Logo', - 'app_logo_desc' => 'This image should be 43px in height.
Large images will be scaled down.', - 'app_primary_color' => 'Application Primary Color', - 'app_primary_color_desc' => 'Sets the primary color for the application including the banner, buttons, and links.', - 'app_homepage' => 'Application Homepage', - 'app_homepage_desc' => 'Select a view to show on the homepage instead of the default view. Page permissions are ignored for selected pages.', + 'app_public_viewing' => 'Tillad offentlig visning?', + 'app_secure_images' => 'Højere sikkerhed for billeduploads', + 'app_secure_images_toggle' => 'Aktiver højere sikkerhed for billeduploads', + 'app_secure_images_desc' => 'Af ydeevneårsager er alle billeder offentlige. Denne funktion tilføjer en tilfældig, vanskelig at gætte streng foran billed-Url\'er. Sørg for, at mappeindekser ikke er aktiveret for at forhindre nem adgang.', + 'app_editor' => 'Sideeditor', + 'app_editor_desc' => 'Vælg hvilken editor der skal bruges af alle brugere til at redigere sider.', + 'app_custom_html' => 'Tilpasset HTML head-indhold', + 'app_custom_html_desc' => 'Al indhold tilføjet her, vil blive indsat i bunden af sektionen på alle sider. Dette er brugbart til overskrivning af styling og tilføjelse af analysekode.', + 'app_custom_html_disabled_notice' => 'Brugerdefineret HTML-head indhold er deaktiveret på denne indstillingsside for at sikre, at ødelæggende ændringer kan rettes.', + 'app_logo' => 'Programlogo', + 'app_logo_desc' => 'Dette billede skal være 43px højt.
Større billeder vil blive skaleret ned.', + 'app_primary_color' => 'Primær programfarve', + 'app_primary_color_desc' => 'Sætter den primære farve for applikationen herunder banneret, knapper og links.', + 'app_homepage' => 'Programforside', + 'app_homepage_desc' => 'Vælg en visning, der skal vises på startsiden i stedet for standardvisningen. Sidetilladelser ignoreres for valgte sider.', 'app_homepage_select' => 'Vælg en side', - 'app_disable_comments' => 'Disable Comments', - 'app_disable_comments_toggle' => 'Disable comments', - 'app_disable_comments_desc' => 'Disables comments across all pages in the application.
Existing comments are not shown.', + 'app_disable_comments' => 'Deaktiver kommentarer', + 'app_disable_comments_toggle' => 'Deaktiver kommentar', + 'app_disable_comments_desc' => 'Deaktiverer kommentarer på tværs af alle sider i applikationen.
Eksisterende kommentarer vises ikke.', // Color settings - 'content_colors' => 'Content Colors', - 'content_colors_desc' => 'Sets colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.', - 'bookshelf_color' => 'Shelf Color', - 'book_color' => 'Book Color', - 'chapter_color' => 'Chapter Color', + 'content_colors' => 'Indholdsfarver', + 'content_colors_desc' => 'Sætter farver for alle elementer i sideorganisationshierarkiet. Valg af farver med en lignende lysstyrke som standardfarverne anbefales af hensyn til læsbarhed.', + 'bookshelf_color' => 'Bogreolfarve', + 'book_color' => 'Bogfarve', + 'chapter_color' => 'Kapitelfarve', 'page_color' => 'Sidefarve', - 'page_draft_color' => 'Page Draft Color', + 'page_draft_color' => 'Sidekladdefarve', // Registration Settings 'reg_settings' => 'Registrering', 'reg_enable' => 'Aktivér tilmelding', 'reg_enable_toggle' => 'Aktivér tilmelding', - 'reg_enable_desc' => 'When registration is enabled user will be able to sign themselves up as an application user. Upon registration they are given a single, default user role.', - 'reg_default_role' => 'Default user role after registration', - 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.', + 'reg_enable_desc' => 'Når registrering er aktiveret, vil alle kunne registrere sig som en applikationsbruger. Ved registrering får de en standardbrugerrolle.', + 'reg_default_role' => 'Standardrolle efter registrering', + 'reg_enable_external_warning' => 'Indstillingen ovenfor ignoreres, mens ekstern LDAP- eller SAML-godkendelse er aktiv. Brugerkonti for ikke-eksisterende medlemmer oprettes automatisk, hvis godkendelse mod det eksterne system, der er i brug, er vellykket.', 'reg_email_confirmation' => 'Email bekræftelse', - 'reg_email_confirmation_toggle' => 'Require email confirmation', - 'reg_confirm_email_desc' => 'If domain restriction is used then email confirmation will be required and this option will be ignored.', - 'reg_confirm_restrict_domain' => 'Domain Restriction', - 'reg_confirm_restrict_domain_desc' => 'Enter a comma separated list of email domains you would like to restrict registration to. Users will be sent an email to confirm their address before being allowed to interact with the application.
Note that users will be able to change their email addresses after successful registration.', - 'reg_confirm_restrict_domain_placeholder' => 'No restriction set', + 'reg_email_confirmation_toggle' => 'Kræv E-Mail bekræftelse', + 'reg_confirm_email_desc' => 'Hvis domænebegrænsning bruges, kræves e-mail-bekræftelse, og denne indstilling ignoreres.', + 'reg_confirm_restrict_domain' => 'Domæneregistrering', + 'reg_confirm_restrict_domain_desc' => 'Indtast en kommasepareret liste over e-mail-domæner, som du vil begrænse registreringen til. Brugere får en E-Mail for at bekræfte deres adresse, før de får tilladelse til at interagere med applikationen.
Bemærk, at brugere vil kunne ændre deres e-mail-adresser efter vellykket registrering.', + 'reg_confirm_restrict_domain_placeholder' => 'Ingen restriktion opsat', // Maintenance settings 'maint' => 'Vedligeholdelse', - 'maint_image_cleanup' => 'Cleanup Images', - 'maint_image_cleanup_desc' => "Scans page & revision content to check which images and drawings are currently in use and which images are redundant. Ensure you create a full database and image backup before running this.", - 'maint_image_cleanup_ignore_revisions' => 'Ignore images in revisions', - 'maint_image_cleanup_run' => 'Run Cleanup', - 'maint_image_cleanup_warning' => ':count potentially unused images were found. Are you sure you want to delete these images?', - 'maint_image_cleanup_success' => ':count potentially unused images found and deleted!', - 'maint_image_cleanup_nothing_found' => 'No unused images found, Nothing deleted!', - 'maint_send_test_email' => 'Send a Test Email', - 'maint_send_test_email_desc' => 'This sends a test email to your email address specified in your profile.', - 'maint_send_test_email_run' => 'Send test email', - 'maint_send_test_email_success' => 'Email sent to :address', - 'maint_send_test_email_mail_subject' => 'Test Email', - 'maint_send_test_email_mail_greeting' => 'Email delivery seems to work!', - 'maint_send_test_email_mail_text' => 'Congratulations! As you received this email notification, your email settings seem to be configured properly.', + 'maint_image_cleanup' => 'Ryd op i billeder', + 'maint_image_cleanup_desc' => "Scanner side & revisionsindhold for at kontrollere, hvilke billeder og tegninger, der i øjeblikket er i brug, og hvilke billeder, der er overflødige. Sørg for, at du opretter en komplet database og billedbackup, før du kører dette.", + 'maint_image_cleanup_ignore_revisions' => 'Ignorer billeder i revisioner', + 'maint_image_cleanup_run' => 'Kør Oprydning', + 'maint_image_cleanup_warning' => 'der blev fundet :count potentielt ubrugte billeder. Er du sikker på, at du vil slette disse billeder?', + 'maint_image_cleanup_success' => ':count: potentielt ubrugte billeder fundet og slettet!', + 'maint_image_cleanup_nothing_found' => 'Ingen ubrugte billeder fundet, intet slettet!', + 'maint_send_test_email' => 'Send en Testemail', + 'maint_send_test_email_desc' => 'Dette sender en testmail til din mailadresse specificeret på din profil.', + 'maint_send_test_email_run' => 'Afsend test E-Mail', + 'maint_send_test_email_success' => 'E-Mail sendt til :address', + 'maint_send_test_email_mail_subject' => 'Test E-Mail', + 'maint_send_test_email_mail_greeting' => 'E-Mail levering ser ud til at virke!', + 'maint_send_test_email_mail_text' => 'Tillykke! Da du har modtaget denne mailnotifikation, ser det ud som om, at dine mailindstillinger er opsat korrekt.', // Role Settings 'roles' => 'Roller', @@ -87,34 +87,34 @@ return [ 'role_create' => 'Opret en ny rolle', 'role_create_success' => 'Rollen blev oprette korrekt', 'role_delete' => 'Slet rolle', - 'role_delete_confirm' => 'This will delete the role with the name \':roleName\'.', - 'role_delete_users_assigned' => 'This role has :userCount users assigned to it. If you would like to migrate the users from this role select a new role below.', - 'role_delete_no_migration' => "Don't migrate users", - 'role_delete_sure' => 'Are you sure you want to delete this role?', - 'role_delete_success' => 'Role successfully deleted', + 'role_delete_confirm' => 'Dette vil slette rollen med navnet \':roleName\'.', + 'role_delete_users_assigned' => 'Denne rolle er tildelt :userCount brugere. Hvis du vil rykke disse brugere fra denne rolle, kan du vælge en ny nedenunder.', + 'role_delete_no_migration' => "Ryk ikke brugere", + 'role_delete_sure' => 'Er du sikker på, at du vil slette denne rolle?', + 'role_delete_success' => 'Rollen blev slettet', 'role_edit' => 'Rediger rolle', - 'role_details' => 'Role Details', + 'role_details' => 'Rolledetaljer', 'role_name' => 'Rollenavn', - 'role_desc' => 'Short Description of Role', - 'role_external_auth_id' => 'External Authentication IDs', - 'role_system' => 'System Permissions', + 'role_desc' => 'Kort beskrivelse af rolle', + 'role_external_auth_id' => 'Eksterne godkendelses-IDer', + 'role_system' => 'Systemtilladelser', 'role_manage_users' => 'Administrere brugere', - 'role_manage_roles' => 'Manage roles & role permissions', - 'role_manage_entity_permissions' => 'Manage all book, chapter & page permissions', - 'role_manage_own_entity_permissions' => 'Manage permissions on own book, chapter & pages', - 'role_manage_page_templates' => 'Manage page templates', - 'role_access_api' => 'Access system API', - 'role_manage_settings' => 'Manage app settings', - 'role_asset' => 'Asset Permissions', - 'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.', - 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.', + 'role_manage_roles' => 'Administrer roller & rollerettigheder', + 'role_manage_entity_permissions' => 'Administrer alle bog-, kapitel- & side-rettigheder', + 'role_manage_own_entity_permissions' => 'Administrer tilladelser på egne bøger, kapitler og sider', + 'role_manage_page_templates' => 'Administrer side-skabeloner', + 'role_access_api' => 'Tilgå system-API', + 'role_manage_settings' => 'Administrer app-indstillinger', + 'role_asset' => 'Tilladelser for medier og "assets"', + 'role_asset_desc' => 'Disse tilladelser kontrollerer standardadgang til medier og "assets" i systemet. Tilladelser til bøger, kapitler og sider tilsidesætter disse tilladelser.', + 'role_asset_admins' => 'Administratorer får automatisk adgang til alt indhold, men disse indstillinger kan vise eller skjule UI-indstillinger.', 'role_all' => 'Alle', 'role_own' => 'Eget', - 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to', - 'role_save' => 'Save Role', - 'role_update_success' => 'Role successfully updated', - 'role_users' => 'Users in this role', - 'role_users_none' => 'No users are currently assigned to this role', + 'role_controlled_by_asset' => 'Styres af det medie/"asset", de uploades til', + 'role_save' => 'Gem rolle', + 'role_update_success' => 'Rollen blev opdateret', + 'role_users' => 'Brugere med denne rolle', + 'role_users_none' => 'Ingen brugere er i øjeblikket tildelt denne rolle', // Users 'users' => 'Brugere', @@ -122,62 +122,62 @@ return [ 'users_add_new' => 'Tilføj ny bruger', 'users_search' => 'Søg efter brugere', 'users_details' => 'Brugeroplysninger', - 'users_details_desc' => 'Set a display name and an email address for this user. The email address will be used for logging into the application.', - 'users_details_desc_no_email' => 'Set a display name for this user so others can recognise them.', + 'users_details_desc' => 'Angiv et visningsnavn og en E-Mail-adresse for denne bruger. E-Mail-adressen bruges til at logge ind på applikationen.', + 'users_details_desc_no_email' => 'Sætter et visningsnavn for denne bruger, så andre kan genkende dem.', 'users_role' => 'Brugerroller', - 'users_role_desc' => 'Select which roles this user will be assigned to. If a user is assigned to multiple roles the permissions from those roles will stack and they will receive all abilities of the assigned roles.', - 'users_password' => 'User Password', - 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 6 characters long.', - 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.', - 'users_send_invite_option' => 'Send user invite email', + 'users_role_desc' => 'Vælg hvilke roller denne bruger skal tildeles. Hvis en bruger er tildelt flere roller, sammenføres tilladelserne fra disse roller, og de får alle evnerne fra de tildelte roller.', + 'users_password' => 'Brugeradgangskode', + 'users_password_desc' => 'Sæt et kodeord, der bruges til at logge på applikationen. Dette skal være mindst 6 tegn langt.', + 'users_send_invite_text' => 'Du kan vælge at sende denne bruger en invitation på E-Mail, som giver dem mulighed for at indstille deres egen adgangskode, ellers kan du indstille deres adgangskode selv.', + 'users_send_invite_option' => 'Send bruger en invitationsmail', 'users_external_auth_id' => 'Ekstern godkendelses ID', - 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.', - 'users_password_warning' => 'Only fill the below if you would like to change your password.', - 'users_system_public' => 'This user represents any guest users that visit your instance. It cannot be used to log in but is assigned automatically.', - 'users_delete' => 'Delete User', - 'users_delete_named' => 'Delete user :userName', - 'users_delete_warning' => 'This will fully delete this user with the name \':userName\' from the system.', - 'users_delete_confirm' => 'Are you sure you want to delete this user?', - 'users_delete_success' => 'Users successfully removed', - 'users_edit' => 'Edit User', - 'users_edit_profile' => 'Edit Profile', - 'users_edit_success' => 'User successfully updated', - 'users_avatar' => 'User Avatar', - 'users_avatar_desc' => 'Select an image to represent this user. This should be approx 256px square.', - 'users_preferred_language' => 'Preferred Language', - 'users_preferred_language_desc' => 'This option will change the language used for the user-interface of the application. This will not affect any user-created content.', - 'users_social_accounts' => 'Social Accounts', - 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not revoke previously authorized access. Revoke access from your profile settings on the connected social account.', - 'users_social_connect' => 'Connect Account', - 'users_social_disconnect' => 'Disconnect Account', + 'users_external_auth_id_desc' => 'Dette er det ID, der bruges til at matche denne bruger ved kommunikation med dit eksterne godkendelsessystem.', + 'users_password_warning' => 'Udfyld kun nedenstående, hvis du vil ændre din adgangskode.', + 'users_system_public' => 'Denne bruger repræsenterer alle gæstebrugere, der besøger din instans. Den kan ikke bruges til at logge på, men tildeles automatisk.', + 'users_delete' => 'Slet bruger', + 'users_delete_named' => 'Slet bruger :userName', + 'users_delete_warning' => 'Dette vil helt slette denne bruger med navnet \':userName\' fra systemet.', + 'users_delete_confirm' => 'Er du sikker på, at du vil slette denne bruger?', + 'users_delete_success' => 'Brugere blev fjernet', + 'users_edit' => 'Rediger bruger', + 'users_edit_profile' => 'Rediger profil', + 'users_edit_success' => 'Bruger suscesfuldt opdateret', + 'users_avatar' => 'Brugeravatar', + 'users_avatar_desc' => 'Vælg et billede for at repræsentere denne bruger. Dette skal være ca. 256px kvadratisk.', + 'users_preferred_language' => 'Foretrukket sprog', + 'users_preferred_language_desc' => 'Denne indstilling ændrer det sprog, der bruges til applikationens brugergrænseflade. Dette påvirker ikke noget brugeroprettet indhold.', + 'users_social_accounts' => 'Sociale konti', + 'users_social_accounts_info' => 'Her kan du forbinde dine andre konti for hurtigere og lettere login. Afbrydelse af en konto her tilbagekalder ikke tidligere autoriseret adgang. Tilbagekald adgang fra dine profilindstillinger på den tilsluttede sociale konto.', + 'users_social_connect' => 'Forbind konto', + 'users_social_disconnect' => 'Frakobl konto', 'users_social_connected' => ':socialAccount kontoen blev knyttet til din profil.', 'users_social_disconnected' => ':socialAccount kontoen blev afbrudt fra din profil.', 'users_api_tokens' => 'API Tokens', - 'users_api_tokens_none' => 'No API tokens have been created for this user', - 'users_api_tokens_create' => 'Create Token', - 'users_api_tokens_expires' => 'Expires', - 'users_api_tokens_docs' => 'API Documentation', + 'users_api_tokens_none' => 'Ingen API tokens er blevet oprettet for denne bruger', + 'users_api_tokens_create' => 'Opret Token', + 'users_api_tokens_expires' => 'Udløber', + 'users_api_tokens_docs' => 'API-dokumentation', // API Tokens - 'user_api_token_create' => 'Create API Token', - 'user_api_token_name' => 'Name', - 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.', - 'user_api_token_expiry' => 'Expiry Date', - 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.', - 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.', - 'user_api_token_create_success' => 'API token successfully created', - 'user_api_token_update_success' => 'API token successfully updated', + 'user_api_token_create' => 'Opret API-token', + 'user_api_token_name' => 'Navn', + 'user_api_token_name_desc' => 'Giv din token et læsbart navn som en fremtidig påmindelse om dets tilsigtede formål.', + 'user_api_token_expiry' => 'Udløbsdato', + 'user_api_token_expiry_desc' => 'Indstil en dato, hvorpå denne token udløber. Efter denne dato fungerer anmodninger, der er lavet med denne token, ikke længere. Hvis du lader dette felt være tomt, udløber den 100 år ud i fremtiden.', + 'user_api_token_create_secret_message' => 'Umiddelbart efter oprettelse af denne token genereres og vises et "Token-ID" og Token hemmelighed". Hemmeligheden vises kun en gang, så husk at kopiere værdien til et sikkert sted inden du fortsætter.', + 'user_api_token_create_success' => 'API token succesfuldt oprettet', + 'user_api_token_update_success' => 'API token succesfuldt opdateret', 'user_api_token' => 'API Token', - 'user_api_token_id' => 'Token ID', - 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.', - 'user_api_token_secret' => 'Token Secret', - 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.', - 'user_api_token_created' => 'Token Created :timeAgo', - 'user_api_token_updated' => 'Token Updated :timeAgo', - 'user_api_token_delete' => 'Delete Token', - 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.', - 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?', - 'user_api_token_delete_success' => 'API token successfully deleted', + 'user_api_token_id' => 'Token-ID', + 'user_api_token_id_desc' => 'Dette er en ikke-redigerbar systemgenereret identifikator for denne token, som skal sendes i API-anmodninger.', + 'user_api_token_secret' => 'Token hemmelighed', + 'user_api_token_secret_desc' => 'Dette er et system genereret hemmelighed for denne token, som skal sendes i API-anmodninger. Dette vises kun denne ene gang, så kopier denne værdi til et sikkert sted.', + 'user_api_token_created' => 'Token oprettet :timeAgo', + 'user_api_token_updated' => 'Token opdateret :timeAgo', + 'user_api_token_delete' => 'Slet Token', + 'user_api_token_delete_warning' => 'Dette vil helt slette API-token\'en med navnet \':tokenName\' fra systemet.', + 'user_api_token_delete_confirm' => 'Er du sikker på, at du vil slette denne API-token?', + 'user_api_token_delete_success' => 'API-token slettet', //! If editing translations files directly please ignore this in all //! languages apart from en. Content will be auto-copied from en. @@ -185,27 +185,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => 'Dansk', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/da/validation.php b/resources/lang/da/validation.php new file mode 100644 index 000000000..79ed1bdf4 --- /dev/null +++ b/resources/lang/da/validation.php @@ -0,0 +1,114 @@ + ':attribute skal være accepteret.', + 'active_url' => ':attribute er ikke en gyldig URL.', + 'after' => ':attribute skal være en dato efter :date.', + 'alpha' => ':attribute må kun indeholde bogstaver.', + 'alpha_dash' => ':attribute må kun bestå af bogstaver, tal, binde- og under-streger.', + 'alpha_num' => ':attribute må kun indeholde bogstaver og tal.', + 'array' => ':attribute skal være et array.', + 'before' => ':attribute skal være en dato før :date.', + 'between' => [ + 'numeric' => ':attribute skal være mellem :min og :max.', + 'file' => ':attribute skal være mellem :min og :max kilobytes.', + 'string' => ':attribute skal være mellem :min og :max tegn.', + 'array' => ':attribute skal have mellem :min og :max elementer.', + ], + 'boolean' => ':attribute-feltet skal være enten sandt eller falsk.', + 'confirmed' => ':attribute-bekræftelsen matcher ikke.', + 'date' => ':attribute er ikke en gyldig dato.', + 'date_format' => ':attribute matcher ikke formatet :format.', + 'different' => ':attribute og :other skal være forskellige.', + 'digits' => ':attribute skal være :digits cifre.', + 'digits_between' => ':attribute skal være mellem :min og :max cifre.', + 'email' => ':attribute skal være en gyldig mail-adresse.', + 'ends_with' => ':attribute skal slutte på en af følgende værdier: :values', + 'filled' => ':attribute er obligatorisk.', + 'gt' => [ + 'numeric' => ':attribute skal være større end :value.', + 'file' => ':attribute skal være større end :value kilobytes.', + 'string' => ':attribute skal have mere end :value tegn.', + 'array' => ':attribute skal indeholde mere end :value elementer.', + ], + 'gte' => [ + 'numeric' => ':attribute skal mindst være :value.', + 'file' => ':attribute skal være mindst :value kilobytes.', + 'string' => ':attribute skal indeholde mindst :value tegn.', + 'array' => ':attribute skal have :value elementer eller flere.', + ], + 'exists' => 'Den valgte :attribute er ikke gyldig.', + 'image' => ':attribute skal være et billede.', + 'image_extension' => ':attribute skal være et gyldigt og understøttet billedformat.', + 'in' => 'Den valgte :attribute er ikke gyldig.', + 'integer' => ':attribute skal være et heltal.', + 'ip' => ':attribute skal være en gyldig IP-adresse.', + 'ipv4' => ':attribute skal være en gyldig IPv4-adresse.', + 'ipv6' => ':attribute skal være en gyldig IPv6-adresse.', + 'json' => ':attribute skal være en gyldig JSON-streng.', + 'lt' => [ + 'numeric' => ':attribute skal være mindre end :value.', + 'file' => ':attribute skal være mindre end :value kilobytes.', + 'string' => ':attribute skal have mindre end :value tegn.', + 'array' => ':attribute skal indeholde mindre end :value elementer.', + ], + 'lte' => [ + 'numeric' => ':attribute skal være mindre end eller lig med :value.', + 'file' => 'The :attribute skal være mindre eller lig med :value kilobytes.', + 'string' => ':attribute skal maks være :value tegn.', + 'array' => ':attribute må ikke indeholde mere end :value elementer.', + ], + 'max' => [ + 'numeric' => ':attribute må ikke overstige :max.', + 'file' => ':attribute må ikke overstige :max kilobytes.', + 'string' => ':attribute må ikke overstige :max. tegn.', + 'array' => ':attribute må ikke have mere end :max elementer.', + ], + 'mimes' => ':attribute skal være en fil af typen: :values.', + 'min' => [ + 'numeric' => ':attribute skal mindst være :min.', + 'file' => ':attribute skal være mindst :min kilobytes.', + 'string' => ':attribute skal mindst være :min tegn.', + 'array' => ':attribute skal have mindst :min elementer.', + ], + 'no_double_extension' => ':attribute må kun indeholde én filtype.', + 'not_in' => 'Den valgte :attribute er ikke gyldig.', + 'not_regex' => ':attribute-formatet er ugyldigt.', + 'numeric' => ':attribute skal være et tal.', + 'regex' => ':attribute-formatet er ugyldigt.', + 'required' => ':attribute er obligatorisk.', + 'required_if' => ':attribute skal udfyldes når :other er :value.', + 'required_with' => ':attribute skal udfyldes når :values er udfyldt.', + 'required_with_all' => ':attribute skal udfyldes når :values er udfyldt.', + 'required_without' => ':attribute skal udfyldes når :values ikke er udfyldt.', + 'required_without_all' => ':attribute skal udfyldes når ingen af :values er udfyldt.', + 'same' => ':attribute og :other skal være ens.', + 'size' => [ + 'numeric' => ':attribute skal være :size.', + 'file' => ':attribute skal være :size kilobytes.', + 'string' => ':attribute skal være :size tegn.', + 'array' => ':attribute skal indeholde :size elementer.', + ], + 'string' => ':attribute skal være tekst.', + 'timezone' => ':attribute skal være en gyldig zone.', + 'unique' => ':attribute er allerede i brug.', + 'url' => ':attribute-formatet er ugyldigt.', + 'uploaded' => 'Filen kunne ikke oploades. Serveren accepterer muligvis ikke filer af denne størrelse.', + + // Custom validation lines + 'custom' => [ + 'password-confirm' => [ + 'required_with' => 'Adgangskodebekræftelse påkrævet', + ], + ], + + // Custom validation attributes + 'attributes' => [], +]; diff --git a/resources/lang/de/errors.php b/resources/lang/de/errors.php index 1b81bf36e..205a8a632 100644 --- a/resources/lang/de/errors.php +++ b/resources/lang/de/errors.php @@ -83,6 +83,7 @@ return [ // Error pages '404_page_not_found' => 'Seite nicht gefunden', 'sorry_page_not_found' => 'Entschuldigung. Die Seite, die Sie angefordert haben, wurde nicht gefunden.', + 'sorry_page_not_found_permission_warning' => 'Wenn Sie erwartet haben, dass diese Seite existiert, haben Sie möglicherweise nicht die Berechtigung, sie anzuzeigen.', 'return_home' => 'Zurück zur Startseite', 'error_occurred' => 'Es ist ein Fehler aufgetreten', 'app_down' => ':appName befindet sich aktuell im Wartungsmodus.', @@ -96,4 +97,7 @@ return [ 'api_user_no_api_permission' => 'Der Besitzer des verwendeten API-Token hat keine Berechtigung für API-Aufrufe', 'api_user_token_expired' => 'Das verwendete Autorisierungs-Token ist abgelaufen', + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Fehler beim Senden einer Test E-Mail:', + ]; diff --git a/resources/lang/de/settings.php b/resources/lang/de/settings.php index 98a04b062..263c0f923 100644 --- a/resources/lang/de/settings.php +++ b/resources/lang/de/settings.php @@ -58,7 +58,7 @@ Wenn Sie nicht eingeben, wird die Anwendung auf die Standardfarbe zurückgesetzt 'reg_enable_toggle' => 'Registrierung erlauben', 'reg_enable_desc' => 'Wenn die Registrierung erlaubt ist, kann sich der Benutzer als Anwendungsbenutzer anmelden. Bei der Registrierung erhält er eine einzige, voreingestellte Benutzerrolle.', 'reg_default_role' => 'Standard-Benutzerrolle nach Registrierung', - 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.', + 'reg_enable_external_warning' => 'Die obige Option wird ignoriert, während eine externe LDAP oder SAML Authentifizierung aktiv ist. Benutzerkonten für nicht existierende Mitglieder werden automatisch erzeugt, wenn die Authentifizierung gegen das verwendete externe System erfolgreich ist.', 'reg_email_confirmation' => 'Bestätigung per E-Mail', 'reg_email_confirmation_toggle' => 'Bestätigung per E-Mail erforderlich', 'reg_confirm_email_desc' => 'Falls die Einschränkung für Domains genutzt wird, ist die Bestätigung per E-Mail zwingend erforderlich und der untenstehende Wert wird ignoriert.', @@ -134,7 +134,7 @@ Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung 'users_send_invite_text' => 'Sie können diesem Benutzer eine Einladungs-E-Mail senden, die es ihm erlaubt, sein eigenes Passwort zu setzen, andernfalls können Sie sein Passwort selbst setzen.', 'users_send_invite_option' => 'Benutzer-Einladungs-E-Mail senden', 'users_external_auth_id' => 'Externe Authentifizierungs-ID', - 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.', + 'users_external_auth_id_desc' => 'Dies ist die ID, mit der dieser Benutzer bei der Kommunikation mit Ihrem externen Authentifizierungssystem übereinstimmt.', 'users_password_warning' => 'Füllen Sie die folgenden Felder nur aus, wenn Sie Ihr Passwort ändern möchten:', 'users_system_public' => 'Dieser Benutzer repräsentiert alle unangemeldeten Benutzer, die diese Seite betrachten. Er kann nicht zum Anmelden benutzt werden, sondern wird automatisch zugeordnet.', 'users_delete' => 'Benutzer löschen', @@ -188,27 +188,29 @@ Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => 'Dänisch', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/de_informal/auth.php b/resources/lang/de_informal/auth.php index c91cd4129..4528eda40 100644 --- a/resources/lang/de_informal/auth.php +++ b/resources/lang/de_informal/auth.php @@ -20,7 +20,7 @@ return [ 'username' => 'Benutzername', 'email' => 'E-Mail', 'password' => 'Passwort', - 'password_confirm' => 'Passwort bestätigen', + 'password_confirm' => 'Passwort bestätigen', 'password_hint' => 'Mindestlänge: 7 Zeichen', 'forgot_password' => 'Passwort vergessen?', 'remember_me' => 'Angemeldet bleiben', @@ -32,11 +32,11 @@ return [ 'social_registration' => 'Mit Sozialem Netzwerk registrieren', 'social_registration_text' => 'Mit einer dieser Dienste registrieren oder anmelden', - 'register_thanks' => 'Vielen Dank für Ihre Registrierung!', + 'register_thanks' => 'Vielen Dank für deine Registrierung!', 'register_confirm' => 'Bitte prüfe Deinen Posteingang und bestätig die Registrierung.', '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! Die Daten sind gespeichert und Du bist angemeldet.', + 'register_success' => 'Vielen Dank für deine Registrierung! Du bist jetzt registriert und eingeloggt.', // Password Reset @@ -47,7 +47,7 @@ return [ 'reset_password_success' => 'Dein Passwort wurde erfolgreich zurückgesetzt.', 'email_reset_subject' => 'Passwort zurücksetzen für :appName', 'email_reset_text' => 'Du erhältsts diese E-Mail, weil jemand versucht hat, Dein Passwort zurückzusetzen.', - 'email_reset_not_requested' => 'Wenn Du das nicht warst, brauchst Du nichts weiter zu tun.', + 'email_reset_not_requested' => 'Wenn du das zurücksetzen des Passworts nicht angefordert hast, ist keine weitere Aktion erforderlich.', // Email Confirmation @@ -55,8 +55,8 @@ return [ 'email_confirm_greeting' => 'Danke, dass Du dich für :appName registrierst hast!', 'email_confirm_text' => 'Bitte bestätige Deine E-Mail-Adresse, indem Du auf die Schaltfläche klickst:', 'email_confirm_action' => 'E-Mail-Adresse bestätigen', - 'email_confirm_send_error' => 'Leider konnte die für die Registrierung notwendige E-Mail zur Bestätigung Deine E-Mail-Adresse nicht versandt werden. Bitte kontaktiere den Systemadministrator!', - 'email_confirm_success' => 'Deine E-Mail-Adresse wurde bestätigt!', + 'email_confirm_send_error' => 'Leider konnte die für die Registrierung notwendige E-Mail zur Bestätigung Deiner E-Mail-Adresse nicht versandt werden. Bitte kontaktiere den Systemadministrator!', + 'email_confirm_success' => 'Deine E-Mail-Adresse wurde bestätigt!', 'email_confirm_resent' => 'Bestätigungs-E-Mail wurde erneut versendet, bitte überprüfe Deinen Posteingang.', 'email_not_confirmed' => 'E-Mail-Adresse ist nicht bestätigt', @@ -67,11 +67,11 @@ return [ // User Invite 'user_invite_email_subject' => 'Du wurdest eingeladen :appName beizutreten!', - 'user_invite_email_greeting' => 'Ein Konto wurde für Sie auf :appName erstellt.', - 'user_invite_email_text' => 'Klicken Sie auf die Schaltfläche unten, um ein Passwort festzulegen und Zugriff zu erhalten:', - 'user_invite_email_action' => 'Account-Passwort festlegen', + 'user_invite_email_greeting' => 'Ein Konto wurde für dich auf :appName erstellt.', + 'user_invite_email_text' => 'Klicke auf die Schaltfläche unten, um ein Passwort festzulegen und Zugriff zu erhalten:', + 'user_invite_email_action' => 'Konto-Passwort festlegen', 'user_invite_page_welcome' => 'Willkommen bei :appName!', 'user_invite_page_text' => 'Um die Anmeldung abzuschließen und Zugriff auf :appName zu bekommen muss noch ein Passwort festgelegt werden. Dieses wird in Zukunft zum Einloggen benötigt.', - 'user_invite_page_confirm_button' => 'Passwort wiederholen', - 'user_invite_success' => 'Passwort gesetzt, Sie haben nun Zugriff auf :appName!' + 'user_invite_page_confirm_button' => 'Passwort bestätigen', + 'user_invite_success' => 'Das Passwort wurde gesetzt, du hast nun Zugriff auf :appName!' ]; \ No newline at end of file diff --git a/resources/lang/de_informal/entities.php b/resources/lang/de_informal/entities.php index e0cbedf91..3888035c3 100644 --- a/resources/lang/de_informal/entities.php +++ b/resources/lang/de_informal/entities.php @@ -275,7 +275,7 @@ return [ 'attachments_link_attached' => 'Link erfolgreich der Seite hinzugefügt', 'templates' => 'Vorlagen', 'templates_set_as_template' => 'Seite ist eine Vorlage', - 'templates_explain_set_as_template' => 'Sie können diese Seite als Vorlage festlegen, damit deren Inhalt beim Erstellen anderer Seiten verwendet werden kann. Andere Benutzer können diese Vorlage verwenden, wenn sie die Zugriffsrechte für diese Seite haben.', + 'templates_explain_set_as_template' => 'Du kannst diese Seite als Vorlage festlegen, damit deren Inhalt beim Erstellen anderer Seiten verwendet werden kann. Andere Benutzer können diese Vorlage verwenden, wenn diese die Zugriffsrechte für diese Seite haben.', 'templates_replace_content' => 'Seiteninhalt ersetzen', 'templates_append_content' => 'An Seiteninhalt anhängen', 'templates_prepend_content' => 'Seiteninhalt voranstellen', diff --git a/resources/lang/de_informal/errors.php b/resources/lang/de_informal/errors.php index a5dac12eb..3707dbf13 100644 --- a/resources/lang/de_informal/errors.php +++ b/resources/lang/de_informal/errors.php @@ -16,15 +16,15 @@ return [ 'email_confirmation_awaiting' => 'Die E-Mail-Adresse für das verwendete Konto muss bestätigt werden', 'ldap_fail_anonymous' => 'Anonymer LDAP-Zugriff ist fehlgeschlafgen', 'ldap_fail_authed' => 'LDAP-Zugriff mit DN und Passwort ist fehlgeschlagen', - 'ldap_extension_not_installed' => 'LDAP-PHP-Erweiterung ist nicht installiert.', - 'ldap_cannot_connect' => 'Die Verbindung zum LDAP-Server ist fehlgeschlagen. Beim initialen Verbindungsaufbau trat ein Fehler auf.', + 'ldap_extension_not_installed' => 'LDAP-PHP-Erweiterung ist nicht installiert', + 'ldap_cannot_connect' => 'Die Verbindung zum LDAP-Server ist fehlgeschlagen. Beim initialen Verbindungsaufbau trat ein Fehler auf', 'saml_already_logged_in' => 'Du bist bereits angemeldet', 'saml_user_not_registered' => 'Kein Benutzer mit ID :name registriert und die automatische Registrierung ist deaktiviert', 'saml_no_email_address' => 'Es konnte keine E-Mail-Adresse für diesen Benutzer in den vom externen Authentifizierungssystem zur Verfügung gestellten Daten gefunden werden', 'saml_invalid_response_id' => 'Die Anfrage vom externen Authentifizierungssystem wird von einem von dieser Anwendung gestarteten Prozess nicht erkannt. Das Zurückgehen nach einem Login könnte dieses Problem verursachen.', 'saml_fail_authed' => 'Anmeldung mit :system fehlgeschlagen, System konnte keine erfolgreiche Autorisierung bereitstellen', 'social_no_action_defined' => 'Es ist keine Aktion definiert', - 'social_login_bad_response' => "Fehler bei der :socialAccount-Anmeldung: \n:error", + 'social_login_bad_response' => "Fehler bei :socialAccount Login: \n:error", 'social_account_in_use' => 'Dieses :socialAccount-Konto wird bereits verwendet. Bitte melde dich mit dem :socialAccount-Konto an.', 'social_account_email_in_use' => 'Die E-Mail-Adresse ":email" ist bereits registriert. Wenn Du bereits registriert bist, kannst Du Dein :socialAccount-Konto in Deinen Profil-Einstellungen verknüpfen.', 'social_account_existing' => 'Dieses :socialAccount-Konto ist bereits mit Ihrem Profil verknüpft.', @@ -83,6 +83,7 @@ return [ // Error pages '404_page_not_found' => 'Seite nicht gefunden', 'sorry_page_not_found' => 'Entschuldigung. Die Seite, die Du angefordert hast, wurde nicht gefunden.', + 'sorry_page_not_found_permission_warning' => 'Wenn du erwartet hast, dass diese Seite existiert, hast du möglicherweise nicht die Berechtigung, sie anzuzeigen.', 'return_home' => 'Zurück zur Startseite', 'error_occurred' => 'Es ist ein Fehler aufgetreten', 'app_down' => ':appName befindet sich aktuell im Wartungsmodus.', @@ -92,8 +93,11 @@ return [ 'api_no_authorization_found' => 'Kein Autorisierungs-Token für die Anfrage gefunden', 'api_bad_authorization_format' => 'Ein Autorisierungs-Token wurde auf die Anfrage gefunden, aber das Format schien falsch zu sein', 'api_user_token_not_found' => 'Es wurde kein passender API-Token für den angegebenen Autorisierungs-Token gefunden', - 'api_incorrect_token_secret' => 'Das für den angegebenen API-Token angegebene Kennwort ist falsch', + 'api_incorrect_token_secret' => 'Das für den API-Token angegebene geheimen Token ist falsch', 'api_user_no_api_permission' => 'Der Besitzer des verwendeten API-Token hat keine Berechtigung für API-Aufrufe', 'api_user_token_expired' => 'Das verwendete Autorisierungs-Token ist abgelaufen', + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Fehler beim Senden einer Test E-Mail:', + ]; diff --git a/resources/lang/de_informal/settings.php b/resources/lang/de_informal/settings.php index fb563ffdf..9af19031d 100644 --- a/resources/lang/de_informal/settings.php +++ b/resources/lang/de_informal/settings.php @@ -23,7 +23,7 @@ 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 höherer Sicherheit', + '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 eratene, Zeichenketten zu Bild-URLs hinzu. Stellen sie sicher, dass Verzeichnisindizes deaktiviert sind, um einen einfachen Zugriff zu verhindern.', 'app_editor' => 'Seiteneditor', 'app_editor_desc' => 'Wähle den Editor aus, der von allen Benutzern genutzt werden soll, um Seiten zu editieren.', @@ -58,7 +58,7 @@ Wenn Du nichts eingibst, wird die Anwendung auf die Standardfarbe zurückgesetzt 'reg_enable_toggle' => 'Registrierung erlauben', 'reg_enable_desc' => 'Wenn die Registrierung erlaubt ist, kann sich der Benutzer als Anwendungsbenutzer anmelden. Bei der Registrierung erhält er eine einzige, voreingestellte Benutzerrolle.', 'reg_default_role' => 'Standard-Benutzerrolle nach Registrierung', - 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.', + 'reg_enable_external_warning' => 'Die obige Option wird ignoriert, während eine externe LDAP oder SAML Authentifizierung aktiv ist. Benutzerkonten für nicht existierende Mitglieder werden automatisch erzeugt, wenn die Authentifizierung gegen das verwendete externe System erfolgreich ist.', 'reg_email_confirmation' => 'Bestätigung per E-Mail', 'reg_email_confirmation_toggle' => 'Bestätigung per E-Mail erforderlich', 'reg_confirm_email_desc' => 'Falls die Einschränkung für Domains genutzt wird, ist die Bestätigung per E-Mail zwingend erforderlich und der untenstehende Wert wird ignoriert.', @@ -77,12 +77,12 @@ Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung '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_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_success' => 'E-Mail wurde an :address gesendet', 'maint_send_test_email_mail_subject' => 'Test E-Mail', 'maint_send_test_email_mail_greeting' => 'E-Mail-Versand scheint zu funktionieren!', - 'maint_send_test_email_mail_text' => 'Glückwunsch! Da Sie diese E-Mail Benachrichtigung erhalten haben, scheinen Ihre E-Mail-Einstellungen korrekt konfiguriert zu sein.', + 'maint_send_test_email_mail_text' => 'Glückwunsch! Da du diese E-Mail Benachrichtigung erhalten hast, scheinen deine E-Mail-Einstellungen korrekt konfiguriert zu sein.', // Role Settings 'roles' => 'Rollen', @@ -131,10 +131,10 @@ Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung 'users_role_desc' => 'Wählen Sie aus, welchen Rollen dieser Benutzer zugeordnet werden soll. Wenn ein Benutzer mehreren Rollen zugeordnet ist, werden die Berechtigungen dieser Rollen gestapelt und er erhält alle Fähigkeiten der zugewiesenen Rollen.', 'users_password' => 'Benutzerpasswort', 'users_password_desc' => 'Legen Sie ein Passwort fest, mit dem Sie sich anmelden möchten. Diese muss mindestens 5 Zeichen lang sein.', - 'users_send_invite_text' => 'Sie können diesem Benutzer eine Einladungs-E-Mail senden, die es ihm erlaubt, sein eigenes Passwort zu setzen, andernfalls können Sie sein Passwort selbst setzen.', + 'users_send_invite_text' => 'Du kannst diesem Benutzer eine Einladungs-E-Mail senden, die es ihm erlaubt, sein eigenes Passwort zu setzen, andernfalls kannst du sein Passwort selbst setzen.', 'users_send_invite_option' => 'Benutzer-Einladungs-E-Mail senden', 'users_external_auth_id' => 'Externe Authentifizierungs-ID', - 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.', + 'users_external_auth_id_desc' => 'Dies ist die ID, die verwendet wird, um diesen Benutzer bei der Kommunikation mit deinem externen Authentifizierungssystem abzugleichen.', 'users_password_warning' => 'Fülle die folgenden Felder nur aus, wenn Du Dein Passwort ändern möchtest:', 'users_system_public' => 'Dieser Benutzer repräsentiert alle unangemeldeten Benutzer, die diese Seite betrachten. Er kann nicht zum Anmelden benutzt werden, sondern wird automatisch zugeordnet.', 'users_delete' => 'Benutzer löschen', @@ -164,22 +164,22 @@ Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung // API Tokens 'user_api_token_create' => 'Neuen API-Token erstellen', 'user_api_token_name' => 'Name', - 'user_api_token_name_desc' => 'Geben Sie Ihrem Token einen aussagekräftigen Namen als spätere Erinnerung an seinen Verwendungszweck.', + 'user_api_token_name_desc' => 'Gebe deinem Token einen aussagekräftigen Namen als spätere Erinnerung an seinen Verwendungszweck.', 'user_api_token_expiry' => 'Ablaufdatum', - 'user_api_token_expiry_desc' => 'Legen Sie ein Datum fest, an dem dieser Token abläuft. Nach diesem Datum funktionieren Anfragen, die mit diesem Token gestellt werden, nicht mehr. Wenn Sie dieses Feld leer lassen, wird ein Ablaufdatum von 100 Jahren in der Zukunft festgelegt.', - 'user_api_token_create_secret_message' => 'Unmittelbar nach der Erstellung dieses Tokens wird eine "Token ID" & ein "Token Kennwort" generiert und angezeigt. Das Kennwort wird nur ein einziges Mal angezeigt. Stellen Sie also sicher, dass Sie den Inhalt an einen sicheren Ort kopieren, bevor Sie fortfahren.', + 'user_api_token_expiry_desc' => 'Lege ein Datum fest, an dem dieser Token abläuft. Nach diesem Datum funktionieren Anfragen, die mit diesem Token gestellt werden, nicht mehr. Wenn du dieses Feld leer lässt, wird ein Ablaufdatum von 100 Jahren in der Zukunft festgelegt.', + 'user_api_token_create_secret_message' => 'Unmittelbar nach der Erstellung dieses Tokens wird eine "Token ID" & ein "Token Kennwort" generiert und angezeigt. Das Kennwort wird nur ein einziges Mal angezeigt. Stelle also sicher, dass du den Inhalt an einen sicheren Ort kopierst, bevor du fortfährst.', 'user_api_token_create_success' => 'API-Token erfolgreich erstellt', 'user_api_token_update_success' => 'API-Token erfolgreich aktualisiert', 'user_api_token' => 'API-Token', 'user_api_token_id' => 'Token ID', 'user_api_token_id_desc' => 'Dies ist ein nicht editierbarer, vom System generierter Identifikator für diesen Token, welcher bei API-Anfragen angegeben werden muss.', 'user_api_token_secret' => 'Token Kennwort', - 'user_api_token_secret_desc' => 'Dies ist ein systemgeneriertes Kennwort für diesen Token, das bei API-Anfragen zur Verfügung gestellt werden muss. Es wird nur dieses eine Mal angezeigt, deshalb kopieren Sie diesen Wert an einen sicheren und geschützten Ort.', + 'user_api_token_secret_desc' => 'Dies ist ein systemgeneriertes Kennwort für diesen Token, das bei API-Anfragen zur Verfügung gestellt werden muss. Es wird nur dieses eine Mal angezeigt, deshalb kopiere diesen an einen sicheren und geschützten Ort.', 'user_api_token_created' => 'Token erstellt :timeAgo', 'user_api_token_updated' => 'Token aktualisiert :timeAgo', 'user_api_token_delete' => 'Lösche Token', 'user_api_token_delete_warning' => 'Dies löscht den API-Token mit dem Namen \':tokenName\' vollständig aus dem System.', - 'user_api_token_delete_confirm' => 'Sind Sie sicher, dass Sie diesen API-Token löschen möchten?', + 'user_api_token_delete_confirm' => 'Bist du sicher, dass du diesen API-Token löschen möchtest?', 'user_api_token_delete_success' => 'API-Token erfolgreich gelöscht', //! If editing translations files directly please ignore this in all @@ -188,27 +188,29 @@ Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => 'Dänisch', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slowenisch', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/de_informal/validation.php b/resources/lang/de_informal/validation.php index b6105d192..4be384468 100644 --- a/resources/lang/de_informal/validation.php +++ b/resources/lang/de_informal/validation.php @@ -34,14 +34,14 @@ return [ 'filled' => ':attribute ist erforderlich.', 'gt' => [ 'numeric' => ':attribute muss größer als :value sein.', - 'file' => ':attribute muss mindestens :value Kilobytes groß sein.', + 'file' => ':attribute muss mindestens größer als :value Kilobytes sein.', 'string' => ':attribute muss mehr als :value Zeichen haben.', - 'array' => ':attribute muss mindestens :value Elemente haben.', + 'array' => ':attribute muss mehr als :value Elemente haben.', ], 'gte' => [ 'numeric' => ':attribute muss größer-gleich :value sein.', - 'file' => ':attribute muss mindestens :value Kilobytes groß sein.', - 'string' => ':attribute muss mindestens :value Zeichen enthalten.', + 'file' => ':attribute muss größer-gleich :value Kilobytes sein.', + 'string' => ':attribute muss mindestens :value Zeichen haben.', 'array' => ':attribute muss :value Elemente oder mehr haben.', ], 'exists' => ':attribute ist ungültig.', @@ -52,9 +52,9 @@ return [ 'ip' => ':attribute muss eine valide 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.', + 'json' => ':attribute muss ein gültiger JSON-String sein.', 'lt' => [ - 'numeric' => ':attribute muss kleiner sein :value sein.', + 'numeric' => ':attribute muss kleiner als :value sein.', 'file' => ':attribute muss kleiner als :value Kilobytes sein.', 'string' => ':attribute muss weniger als :value Zeichen haben.', 'array' => ':attribute muss weniger als :value Elemente haben.', @@ -62,7 +62,7 @@ return [ 'lte' => [ 'numeric' => ':attribute muss kleiner oder gleich :value sein.', 'file' => ':attribute muss kleiner oder gleich :value Kilobytes sein.', - 'string' => ':attribute darf höchstens :value Zeichen besitzen.', + 'string' => ':attribute muss :value oder weniger Zeichen haben.', 'array' => ':attribute darf höchstens :value Elemente haben.', ], 'max' => [ @@ -80,7 +80,7 @@ return [ ], 'no_double_extension' => ':attribute darf nur eine gültige Dateiendung', 'not_in' => ':attribute ist ungültig.', - 'not_regex' => ':attribute ist kein valides Format.', + '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.', diff --git a/resources/lang/en/auth.php b/resources/lang/en/auth.php index 6961e049b..d64fce93a 100644 --- a/resources/lang/en/auth.php +++ b/resources/lang/en/auth.php @@ -43,7 +43,7 @@ return [ 'reset_password' => 'Reset Password', 'reset_password_send_instructions' => 'Enter your email below and you will be sent an email with a password reset link.', 'reset_password_send_button' => 'Send Reset Link', - 'reset_password_sent_success' => 'A password reset link has been sent to :email.', + 'reset_password_sent' => 'A password reset link will be sent to :email if that email address is found in the system.', 'reset_password_success' => 'Your password has been successfully reset.', 'email_reset_subject' => 'Reset your :appName password', 'email_reset_text' => 'You are receiving this email because we received a password reset request for your account.', diff --git a/resources/lang/en/errors.php b/resources/lang/en/errors.php index 38f1ce28a..06a5285f5 100644 --- a/resources/lang/en/errors.php +++ b/resources/lang/en/errors.php @@ -83,6 +83,7 @@ return [ // Error pages '404_page_not_found' => 'Page Not Found', 'sorry_page_not_found' => 'Sorry, The page you were looking for could not be found.', + 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.', 'return_home' => 'Return to home', 'error_occurred' => 'An Error Occurred', 'app_down' => ':appName is down right now', diff --git a/resources/lang/en/passwords.php b/resources/lang/en/passwords.php index f41ca7868..b408f3c2f 100644 --- a/resources/lang/en/passwords.php +++ b/resources/lang/en/passwords.php @@ -8,7 +8,7 @@ return [ 'password' => 'Passwords must be at least eight characters and match the confirmation.', 'user' => "We can't find a user with that e-mail address.", - 'token' => 'This password reset token is invalid.', + 'token' => 'The password reset token is invalid for this email address.', 'sent' => 'We have e-mailed your password reset link!', 'reset' => 'Your password has been reset!', diff --git a/resources/lang/en/settings.php b/resources/lang/en/settings.php index ab274256f..f1345c743 100755 --- a/resources/lang/en/settings.php +++ b/resources/lang/en/settings.php @@ -185,27 +185,30 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => 'Dansk', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'he' => 'עברית', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/es/activities.php b/resources/lang/es/activities.php index aa90d9cd3..e89b69fd3 100644 --- a/resources/lang/es/activities.php +++ b/resources/lang/es/activities.php @@ -7,41 +7,41 @@ return [ // Pages 'page_create' => 'página creada', - 'page_create_notification' => 'Página creada exitosamente', + 'page_create_notification' => 'Página creada correctamente', 'page_update' => 'página actualizada', - 'page_update_notification' => 'Página actualizada exitosamente', - 'page_delete' => 'página borrada', - 'page_delete_notification' => 'Página borrada exitosamente', + 'page_update_notification' => 'Página actualizada correctamente', + 'page_delete' => 'página eliminada', + 'page_delete_notification' => 'Página eliminada correctamente', 'page_restore' => 'página restaurada', - 'page_restore_notification' => 'Página restaurada exitosamente', + 'page_restore_notification' => 'Página restaurada correctamente', 'page_move' => 'página movida', // Chapters 'chapter_create' => 'capítulo creado', - 'chapter_create_notification' => 'Capítulo creado exitosamente', + 'chapter_create_notification' => 'Capítulo creado correctamente', 'chapter_update' => 'capítulo actualizado', - 'chapter_update_notification' => 'Capítulo actualizado exitosamente', - 'chapter_delete' => 'capítulo borrado', - 'chapter_delete_notification' => 'Capítulo borrado exitosamente', + 'chapter_update_notification' => 'Capítulo actualizado correctamente', + 'chapter_delete' => 'capítulo eliminado', + 'chapter_delete_notification' => 'Capítulo eliminado correctamente', 'chapter_move' => 'capítulo movido', // Books 'book_create' => 'libro creado', - 'book_create_notification' => 'Libro creado exitosamente', + 'book_create_notification' => 'Libro creado correctamente', 'book_update' => 'libro actualizado', - 'book_update_notification' => 'Libro actualizado exitosamente', - 'book_delete' => 'libro borrado', - 'book_delete_notification' => 'Libro borrado exitosamente', + 'book_update_notification' => 'Libro actualizado correctamente', + 'book_delete' => 'libro eliminado', + 'book_delete_notification' => 'Libro eliminado correctamente', 'book_sort' => 'libro ordenado', - 'book_sort_notification' => 'Libro reordenado exitosamente', + 'book_sort_notification' => 'Libro reordenado correctamente', // Bookshelves 'bookshelf_create' => 'estante creado', - 'bookshelf_create_notification' => 'Estante creado exitosamente', + 'bookshelf_create_notification' => 'Estante creado correctamente', 'bookshelf_update' => 'estante actualizado', - 'bookshelf_update_notification' => 'Estante actualizado exitosamente', - 'bookshelf_delete' => 'estante borrado', - 'bookshelf_delete_notification' => 'Estante borrado exitosamente', + 'bookshelf_update_notification' => 'Estante actualizado correctamente', + 'bookshelf_delete' => 'estante eliminado', + 'bookshelf_delete_notification' => 'Estante eliminado correctamente', // Other 'commented_on' => 'comentada el', diff --git a/resources/lang/es/auth.php b/resources/lang/es/auth.php index 3636507fe..00ff8b137 100644 --- a/resources/lang/es/auth.php +++ b/resources/lang/es/auth.php @@ -6,15 +6,15 @@ */ 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 coinciden con nuestros registros.', + 'throttle' => 'Demasiados intentos de inicio de sesión. Por favor, inténtalo de nuevo en :seconds segundos.', // Login & Register 'sign_up' => 'Registrarse', 'log_in' => 'Acceder', 'log_in_with' => 'Acceder con :socialDriver', 'sign_up_with' => 'Registrarse con :socialDriver', - 'logout' => 'Salir', + 'logout' => 'Cerrar sesión', 'name' => 'Nombre', 'username' => 'Usuario', diff --git a/resources/lang/es/errors.php b/resources/lang/es/errors.php index 65b20afc7..ce69b6157 100644 --- a/resources/lang/es/errors.php +++ b/resources/lang/es/errors.php @@ -83,6 +83,7 @@ return [ // Error pages '404_page_not_found' => 'Página no encontrada', 'sorry_page_not_found' => 'Lo sentimos, la página a la que intenta acceder no pudo ser encontrada.', + 'sorry_page_not_found_permission_warning' => 'Si esperaba que esta página existiera, puede que no tenga permiso para verla.', 'return_home' => 'Volver a la página de inicio', 'error_occurred' => 'Ha ocurrido un error', 'app_down' => 'La aplicación :appName se encuentra caída en este momento', @@ -96,4 +97,7 @@ return [ 'api_user_no_api_permission' => 'El propietario del token API usado no tiene permiso para hacer llamadas API', 'api_user_token_expired' => 'El token de autorización usado ha caducado', + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Error al enviar un email de prueba:', + ]; diff --git a/resources/lang/es/settings.php b/resources/lang/es/settings.php index ff5c40ee1..57b91d033 100644 --- a/resources/lang/es/settings.php +++ b/resources/lang/es/settings.php @@ -56,7 +56,7 @@ return [ 'reg_enable_toggle' => 'Habilitar registro', 'reg_enable_desc' => 'Cuando se habilita el registro los usuarios podrán registrarse como usuarios de la aplicación. Al registrarse se les asigna un rol único por defecto.', 'reg_default_role' => 'Rol de usuario por defecto después del registro', - 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.', + 'reg_enable_external_warning' => 'La opción anterior no se utiliza mientras la autenticación LDAP o SAML externa esté activa. Las cuentas de usuario para los miembros no existentes se crearán automáticamente si la autenticación en el sistema externo en uso es exitosa.', 'reg_email_confirmation' => 'Confirmación por Email', 'reg_email_confirmation_toggle' => 'Requerir confirmación por Email', 'reg_confirm_email_desc' => 'Si se emplea la restricción por dominio, entonces se requerirá la confirmación por correo electrónico y esta opción será ignorada.', @@ -185,27 +185,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => 'Danés', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/es_AR/errors.php b/resources/lang/es_AR/errors.php index a3ce98e08..c640492fe 100644 --- a/resources/lang/es_AR/errors.php +++ b/resources/lang/es_AR/errors.php @@ -83,6 +83,7 @@ return [ // Error pages '404_page_not_found' => 'Página no encontrada', 'sorry_page_not_found' => 'Lo sentimos, la página que intenta acceder no pudo ser encontrada.', + 'sorry_page_not_found_permission_warning' => 'Si esperaba que esta página existiera, puede que no tenga permiso para verla.', 'return_home' => 'Volver al home', 'error_occurred' => 'Ha ocurrido un error', 'app_down' => 'La aplicación :appName se encuentra caída en este momento', @@ -96,4 +97,7 @@ return [ 'api_user_no_api_permission' => 'El propietario del token API usado no tiene permiso para hacer llamadas API', 'api_user_token_expired' => 'El token de autorización usado ha caducado', + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Error al enviar un email de prueba:', + ]; diff --git a/resources/lang/es_AR/settings.php b/resources/lang/es_AR/settings.php index 465e2ed07..f218dd95c 100644 --- a/resources/lang/es_AR/settings.php +++ b/resources/lang/es_AR/settings.php @@ -56,7 +56,7 @@ return [ 'reg_enable_toggle' => 'Habilitar registro', 'reg_enable_desc' => 'Cuando se habilita el registro, el usuario podrá crear su usuario en la aplicación. Con el regsitro, se le otorga un rol de usuario único y por defecto.', 'reg_default_role' => 'Rol de usuario por defecto despúes del registro', - 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.', + 'reg_enable_external_warning' => 'La opción anterior no se utiliza mientras la autenticación LDAP o SAML externa esté activa. Las cuentas de usuario para los miembros no existentes se crearán automáticamente si la autenticación en el sistema externo en uso es exitosa.', 'reg_email_confirmation' => 'Confirmación de correo electrónico', 'reg_email_confirmation_toggle' => 'Requerir confirmación de correo electrónico', 'reg_confirm_email_desc' => 'Si se utiliza la restricción por dominio, entonces se requerirá la confirmación por correo electrónico y se ignorará el valor a continuación.', @@ -186,27 +186,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => 'Danés', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/fa/activities.php b/resources/lang/fa/activities.php new file mode 100644 index 000000000..4cac54b2a --- /dev/null +++ b/resources/lang/fa/activities.php @@ -0,0 +1,48 @@ + 'created page', + 'page_create_notification' => 'Page Successfully Created', + 'page_update' => 'updated page', + 'page_update_notification' => 'Page Successfully Updated', + 'page_delete' => 'deleted page', + 'page_delete_notification' => 'Page Successfully Deleted', + 'page_restore' => 'restored page', + 'page_restore_notification' => 'Page Successfully Restored', + 'page_move' => 'moved page', + + // Chapters + 'chapter_create' => 'created chapter', + 'chapter_create_notification' => 'Chapter Successfully Created', + 'chapter_update' => 'updated chapter', + 'chapter_update_notification' => 'Chapter Successfully Updated', + 'chapter_delete' => 'deleted chapter', + 'chapter_delete_notification' => 'Chapter Successfully Deleted', + 'chapter_move' => 'moved chapter', + + // Books + 'book_create' => 'created book', + 'book_create_notification' => 'Book Successfully Created', + 'book_update' => 'updated book', + 'book_update_notification' => 'Book Successfully Updated', + 'book_delete' => 'deleted book', + 'book_delete_notification' => 'Book Successfully Deleted', + 'book_sort' => 'sorted book', + 'book_sort_notification' => 'Book Successfully Re-sorted', + + // Bookshelves + 'bookshelf_create' => 'created Bookshelf', + 'bookshelf_create_notification' => 'Bookshelf Successfully Created', + 'bookshelf_update' => 'updated bookshelf', + 'bookshelf_update_notification' => 'Bookshelf Successfully Updated', + 'bookshelf_delete' => 'deleted bookshelf', + 'bookshelf_delete_notification' => 'Bookshelf Successfully Deleted', + + // Other + 'commented_on' => 'commented on', +]; diff --git a/resources/lang/fa/auth.php b/resources/lang/fa/auth.php new file mode 100644 index 000000000..6961e049b --- /dev/null +++ b/resources/lang/fa/auth.php @@ -0,0 +1,77 @@ + 'These credentials do not match our records.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + + // Login & Register + 'sign_up' => 'Sign up', + 'log_in' => 'Log in', + 'log_in_with' => 'Login with :socialDriver', + 'sign_up_with' => 'Sign up with :socialDriver', + 'logout' => 'Logout', + + 'name' => 'Name', + 'username' => 'Username', + 'email' => 'Email', + 'password' => 'Password', + 'password_confirm' => 'Confirm Password', + 'password_hint' => 'Must be over 7 characters', + 'forgot_password' => 'Forgot Password?', + 'remember_me' => 'Remember Me', + 'ldap_email_hint' => 'Please enter an email to use for this account.', + 'create_account' => 'Create Account', + 'already_have_account' => 'Already have an account?', + 'dont_have_account' => 'Don\'t have an account?', + 'social_login' => 'Social Login', + 'social_registration' => 'Social Registration', + 'social_registration_text' => 'Register and sign in using another service.', + + 'register_thanks' => 'Thanks for registering!', + 'register_confirm' => 'Please check your email and click the confirmation button to access :appName.', + 'registrations_disabled' => 'Registrations are currently disabled', + 'registration_email_domain_invalid' => 'That email domain does not have access to this application', + 'register_success' => 'Thanks for signing up! You are now registered and signed in.', + + + // Password Reset + 'reset_password' => 'Reset Password', + 'reset_password_send_instructions' => 'Enter your email below and you will be sent an email with a password reset link.', + 'reset_password_send_button' => 'Send Reset Link', + 'reset_password_sent_success' => 'A password reset link has been sent to :email.', + 'reset_password_success' => 'Your password has been successfully reset.', + 'email_reset_subject' => 'Reset your :appName password', + 'email_reset_text' => 'You are receiving this email because we received a password reset request for your account.', + 'email_reset_not_requested' => 'If you did not request a password reset, no further action is required.', + + + // Email Confirmation + 'email_confirm_subject' => 'Confirm your email on :appName', + 'email_confirm_greeting' => 'Thanks for joining :appName!', + 'email_confirm_text' => 'Please confirm your email address by clicking the button below:', + 'email_confirm_action' => 'Confirm Email', + 'email_confirm_send_error' => 'Email confirmation required but the system could not send the email. Contact the admin to ensure email is set up correctly.', + 'email_confirm_success' => 'Your email has been confirmed!', + 'email_confirm_resent' => 'Confirmation email resent, Please check your inbox.', + + 'email_not_confirmed' => 'Email Address Not Confirmed', + 'email_not_confirmed_text' => 'Your email address has not yet been confirmed.', + 'email_not_confirmed_click_link' => 'Please click the link in the email that was sent shortly after you registered.', + 'email_not_confirmed_resend' => 'If you cannot find the email you can re-send the confirmation email by submitting the form below.', + 'email_not_confirmed_resend_button' => 'Resend Confirmation Email', + + // User Invite + 'user_invite_email_subject' => 'You have been invited to join :appName!', + 'user_invite_email_greeting' => 'An account has been created for you on :appName.', + 'user_invite_email_text' => 'Click the button below to set an account password and gain access:', + 'user_invite_email_action' => 'Set Account Password', + 'user_invite_page_welcome' => 'Welcome to :appName!', + 'user_invite_page_text' => 'To finalise your account and gain access you need to set a password which will be used to log-in to :appName on future visits.', + 'user_invite_page_confirm_button' => 'Confirm Password', + 'user_invite_success' => 'Password set, you now have access to :appName!' +]; \ No newline at end of file diff --git a/resources/lang/fa/common.php b/resources/lang/fa/common.php new file mode 100644 index 000000000..c8b4a2b22 --- /dev/null +++ b/resources/lang/fa/common.php @@ -0,0 +1,77 @@ + 'Cancel', + 'confirm' => 'Confirm', + 'back' => 'Back', + 'save' => 'Save', + 'continue' => 'Continue', + 'select' => 'Select', + 'toggle_all' => 'Toggle All', + 'more' => 'More', + + // Form Labels + 'name' => 'Name', + 'description' => 'Description', + 'role' => 'Role', + 'cover_image' => 'Cover image', + 'cover_image_description' => 'This image should be approx 440x250px.', + + // Actions + 'actions' => 'Actions', + 'view' => 'View', + 'view_all' => 'View All', + 'create' => 'Create', + 'update' => 'Update', + 'edit' => 'Edit', + 'sort' => 'Sort', + 'move' => 'Move', + 'copy' => 'Copy', + 'reply' => 'Reply', + 'delete' => 'Delete', + 'search' => 'Search', + 'search_clear' => 'Clear Search', + 'reset' => 'Reset', + 'remove' => 'Remove', + 'add' => 'Add', + 'fullscreen' => 'Fullscreen', + + // Sort Options + 'sort_options' => 'Sort Options', + 'sort_direction_toggle' => 'Sort Direction Toggle', + 'sort_ascending' => 'Sort Ascending', + 'sort_descending' => 'Sort Descending', + 'sort_name' => 'Name', + 'sort_created_at' => 'Created Date', + 'sort_updated_at' => 'Updated Date', + + // Misc + 'deleted_user' => 'Deleted User', + 'no_activity' => 'No activity to show', + 'no_items' => 'No items available', + 'back_to_top' => 'Back to top', + 'toggle_details' => 'Toggle Details', + 'toggle_thumbnails' => 'Toggle Thumbnails', + 'details' => 'Details', + 'grid_view' => 'Grid View', + 'list_view' => 'List View', + 'default' => 'Default', + 'breadcrumb' => 'Breadcrumb', + + // Header + 'profile_menu' => 'Profile Menu', + 'view_profile' => 'View Profile', + 'edit_profile' => 'Edit Profile', + + // Layout tabs + 'tab_info' => 'Info', + 'tab_content' => 'Content', + + // Email Content + 'email_action_help' => 'If you’re having trouble clicking the ":actionText" button, copy and paste the URL below into your web browser:', + 'email_rights' => 'All rights reserved', +]; diff --git a/resources/lang/fa/components.php b/resources/lang/fa/components.php new file mode 100644 index 000000000..d8e8981fb --- /dev/null +++ b/resources/lang/fa/components.php @@ -0,0 +1,33 @@ + 'Image Select', + 'image_all' => 'All', + 'image_all_title' => 'View all images', + 'image_book_title' => 'View images uploaded to this book', + 'image_page_title' => 'View images uploaded to this page', + 'image_search_hint' => 'Search by image name', + 'image_uploaded' => 'Uploaded :uploadedDate', + 'image_load_more' => 'Load More', + 'image_image_name' => 'Image Name', + 'image_delete_used' => 'This image is used in the pages below.', + 'image_delete_confirm' => 'Click delete again to confirm you want to delete this image.', + 'image_select_image' => 'Select Image', + 'image_dropzone' => 'Drop images or click here to upload', + 'images_deleted' => 'Images Deleted', + 'image_preview' => 'Image Preview', + 'image_upload_success' => 'Image uploaded successfully', + 'image_update_success' => 'Image details successfully updated', + 'image_delete_success' => 'Image successfully deleted', + 'image_upload_remove' => 'Remove', + + // Code Editor + 'code_editor' => 'Edit Code', + 'code_language' => 'Code Language', + 'code_content' => 'Code Content', + 'code_save' => 'Save Code', +]; diff --git a/resources/lang/fa/entities.php b/resources/lang/fa/entities.php new file mode 100644 index 000000000..6bbc723b0 --- /dev/null +++ b/resources/lang/fa/entities.php @@ -0,0 +1,314 @@ + 'Recently Created', + 'recently_created_pages' => 'Recently Created Pages', + 'recently_updated_pages' => 'Recently Updated Pages', + 'recently_created_chapters' => 'Recently Created Chapters', + 'recently_created_books' => 'Recently Created Books', + 'recently_created_shelves' => 'Recently Created Shelves', + 'recently_update' => 'Recently Updated', + 'recently_viewed' => 'Recently Viewed', + 'recent_activity' => 'Recent Activity', + 'create_now' => 'Create one now', + 'revisions' => 'Revisions', + 'meta_revision' => 'Revision #:revisionCount', + 'meta_created' => 'Created :timeLength', + 'meta_created_name' => 'Created :timeLength by :user', + 'meta_updated' => 'Updated :timeLength', + 'meta_updated_name' => 'Updated :timeLength by :user', + 'entity_select' => 'Entity Select', + 'images' => 'Images', + 'my_recent_drafts' => 'My Recent Drafts', + 'my_recently_viewed' => 'My Recently Viewed', + 'no_pages_viewed' => 'You have not viewed any pages', + 'no_pages_recently_created' => 'No pages have been recently created', + 'no_pages_recently_updated' => 'No pages have been recently updated', + 'export' => 'Export', + 'export_html' => 'Contained Web File', + 'export_pdf' => 'PDF File', + 'export_text' => 'Plain Text File', + + // Permissions and restrictions + 'permissions' => 'Permissions', + 'permissions_intro' => 'Once enabled, These permissions will take priority over any set role permissions.', + 'permissions_enable' => 'Enable Custom Permissions', + 'permissions_save' => 'Save Permissions', + + // Search + 'search_results' => 'Search Results', + 'search_total_results_found' => ':count result found|:count total results found', + 'search_clear' => 'Clear Search', + 'search_no_pages' => 'No pages matched this search', + 'search_for_term' => 'Search for :term', + 'search_more' => 'More Results', + 'search_filters' => 'Search Filters', + 'search_content_type' => 'Content Type', + 'search_exact_matches' => 'Exact Matches', + 'search_tags' => 'Tag Searches', + 'search_options' => 'Options', + 'search_viewed_by_me' => 'Viewed by me', + 'search_not_viewed_by_me' => 'Not viewed by me', + 'search_permissions_set' => 'Permissions set', + 'search_created_by_me' => 'Created by me', + 'search_updated_by_me' => 'Updated by me', + 'search_date_options' => 'Date Options', + 'search_updated_before' => 'Updated before', + 'search_updated_after' => 'Updated after', + 'search_created_before' => 'Created before', + 'search_created_after' => 'Created after', + 'search_set_date' => 'Set Date', + 'search_update' => 'Update Search', + + // Shelves + 'shelf' => 'Shelf', + 'shelves' => 'Shelves', + 'x_shelves' => ':count Shelf|:count Shelves', + 'shelves_long' => 'Bookshelves', + 'shelves_empty' => 'No shelves have been created', + 'shelves_create' => 'Create New Shelf', + 'shelves_popular' => 'Popular Shelves', + 'shelves_new' => 'New Shelves', + 'shelves_new_action' => 'New Shelf', + 'shelves_popular_empty' => 'The most popular shelves will appear here.', + 'shelves_new_empty' => 'The most recently created shelves will appear here.', + 'shelves_save' => 'Save Shelf', + 'shelves_books' => 'Books on this shelf', + 'shelves_add_books' => 'Add books to this shelf', + 'shelves_drag_books' => 'Drag books here to add them to this shelf', + 'shelves_empty_contents' => 'This shelf has no books assigned to it', + 'shelves_edit_and_assign' => 'Edit shelf to assign books', + 'shelves_edit_named' => 'Edit Bookshelf :name', + 'shelves_edit' => 'Edit Bookshelf', + 'shelves_delete' => 'Delete Bookshelf', + 'shelves_delete_named' => 'Delete Bookshelf :name', + 'shelves_delete_explain' => "This will delete the bookshelf with the name ':name'. Contained books will not be deleted.", + 'shelves_delete_confirmation' => 'Are you sure you want to delete this bookshelf?', + 'shelves_permissions' => 'Bookshelf Permissions', + 'shelves_permissions_updated' => 'Bookshelf Permissions Updated', + 'shelves_permissions_active' => 'Bookshelf Permissions Active', + 'shelves_copy_permissions_to_books' => 'Copy Permissions to Books', + 'shelves_copy_permissions' => 'Copy Permissions', + 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this bookshelf to all books contained within. Before activating, ensure any changes to the permissions of this bookshelf have been saved.', + 'shelves_copy_permission_success' => 'Bookshelf permissions copied to :count books', + + // Books + 'book' => 'Book', + 'books' => 'Books', + 'x_books' => ':count Book|:count Books', + 'books_empty' => 'No books have been created', + 'books_popular' => 'Popular Books', + 'books_recent' => 'Recent Books', + 'books_new' => 'New Books', + 'books_new_action' => 'New Book', + 'books_popular_empty' => 'The most popular books will appear here.', + 'books_new_empty' => 'The most recently created books will appear here.', + 'books_create' => 'Create New Book', + 'books_delete' => 'Delete Book', + 'books_delete_named' => 'Delete Book :bookName', + 'books_delete_explain' => 'This will delete the book with the name \':bookName\'. All pages and chapters will be removed.', + 'books_delete_confirmation' => 'Are you sure you want to delete this book?', + 'books_edit' => 'Edit Book', + 'books_edit_named' => 'Edit Book :bookName', + 'books_form_book_name' => 'Book Name', + 'books_save' => 'Save Book', + 'books_permissions' => 'Book Permissions', + 'books_permissions_updated' => 'Book Permissions Updated', + 'books_empty_contents' => 'No pages or chapters have been created for this book.', + 'books_empty_create_page' => 'Create a new page', + 'books_empty_sort_current_book' => 'Sort the current book', + 'books_empty_add_chapter' => 'Add a chapter', + 'books_permissions_active' => 'Book Permissions Active', + 'books_search_this' => 'Search this book', + 'books_navigation' => 'Book Navigation', + 'books_sort' => 'Sort Book Contents', + 'books_sort_named' => 'Sort Book :bookName', + 'books_sort_name' => 'Sort by Name', + 'books_sort_created' => 'Sort by Created Date', + 'books_sort_updated' => 'Sort by Updated Date', + 'books_sort_chapters_first' => 'Chapters First', + 'books_sort_chapters_last' => 'Chapters Last', + 'books_sort_show_other' => 'Show Other Books', + 'books_sort_save' => 'Save New Order', + + // Chapters + 'chapter' => 'Chapter', + 'chapters' => 'Chapters', + 'x_chapters' => ':count Chapter|:count Chapters', + 'chapters_popular' => 'Popular Chapters', + 'chapters_new' => 'New Chapter', + 'chapters_create' => 'Create New Chapter', + 'chapters_delete' => 'Delete Chapter', + 'chapters_delete_named' => 'Delete Chapter :chapterName', + 'chapters_delete_explain' => 'This will delete the chapter with the name \':chapterName\'. All pages will be removed and added directly to the parent book.', + 'chapters_delete_confirm' => 'Are you sure you want to delete this chapter?', + 'chapters_edit' => 'Edit Chapter', + 'chapters_edit_named' => 'Edit Chapter :chapterName', + 'chapters_save' => 'Save Chapter', + 'chapters_move' => 'Move Chapter', + 'chapters_move_named' => 'Move Chapter :chapterName', + 'chapter_move_success' => 'Chapter moved to :bookName', + 'chapters_permissions' => 'Chapter Permissions', + 'chapters_empty' => 'No pages are currently in this chapter.', + 'chapters_permissions_active' => 'Chapter Permissions Active', + 'chapters_permissions_success' => 'Chapter Permissions Updated', + 'chapters_search_this' => 'Search this chapter', + + // Pages + 'page' => 'Page', + 'pages' => 'Pages', + 'x_pages' => ':count Page|:count Pages', + 'pages_popular' => 'Popular Pages', + 'pages_new' => 'New Page', + 'pages_attachments' => 'Attachments', + 'pages_navigation' => 'Page Navigation', + 'pages_delete' => 'Delete Page', + 'pages_delete_named' => 'Delete Page :pageName', + 'pages_delete_draft_named' => 'Delete Draft Page :pageName', + 'pages_delete_draft' => 'Delete Draft Page', + 'pages_delete_success' => 'Page deleted', + 'pages_delete_draft_success' => 'Draft page deleted', + 'pages_delete_confirm' => 'Are you sure you want to delete this page?', + 'pages_delete_draft_confirm' => 'Are you sure you want to delete this draft page?', + 'pages_editing_named' => 'Editing Page :pageName', + 'pages_edit_draft_options' => 'Draft Options', + 'pages_edit_save_draft' => 'Save Draft', + 'pages_edit_draft' => 'Edit Page Draft', + 'pages_editing_draft' => 'Editing Draft', + 'pages_editing_page' => 'Editing Page', + 'pages_edit_draft_save_at' => 'Draft saved at ', + 'pages_edit_delete_draft' => 'Delete Draft', + 'pages_edit_discard_draft' => 'Discard Draft', + 'pages_edit_set_changelog' => 'Set Changelog', + 'pages_edit_enter_changelog_desc' => 'Enter a brief description of the changes you\'ve made', + 'pages_edit_enter_changelog' => 'Enter Changelog', + 'pages_save' => 'Save Page', + 'pages_title' => 'Page Title', + 'pages_name' => 'Page Name', + 'pages_md_editor' => 'Editor', + 'pages_md_preview' => 'Preview', + 'pages_md_insert_image' => 'Insert Image', + 'pages_md_insert_link' => 'Insert Entity Link', + 'pages_md_insert_drawing' => 'Insert Drawing', + 'pages_not_in_chapter' => 'Page is not in a chapter', + 'pages_move' => 'Move Page', + 'pages_move_success' => 'Page moved to ":parentName"', + 'pages_copy' => 'Copy Page', + 'pages_copy_desination' => 'Copy Destination', + 'pages_copy_success' => 'Page successfully copied', + 'pages_permissions' => 'Page Permissions', + 'pages_permissions_success' => 'Page permissions updated', + 'pages_revision' => 'Revision', + 'pages_revisions' => 'Page Revisions', + 'pages_revisions_named' => 'Page Revisions for :pageName', + 'pages_revision_named' => 'Page Revision for :pageName', + 'pages_revisions_created_by' => 'Created By', + 'pages_revisions_date' => 'Revision Date', + 'pages_revisions_number' => '#', + 'pages_revisions_numbered' => 'Revision #:id', + 'pages_revisions_numbered_changes' => 'Revision #:id Changes', + 'pages_revisions_changelog' => 'Changelog', + 'pages_revisions_changes' => 'Changes', + 'pages_revisions_current' => 'Current Version', + 'pages_revisions_preview' => 'Preview', + 'pages_revisions_restore' => 'Restore', + 'pages_revisions_none' => 'This page has no revisions', + 'pages_copy_link' => 'Copy Link', + 'pages_edit_content_link' => 'Edit Content', + 'pages_permissions_active' => 'Page Permissions Active', + 'pages_initial_revision' => 'Initial publish', + 'pages_initial_name' => 'New Page', + 'pages_editing_draft_notification' => 'You are currently editing a draft that was last saved :timeDiff.', + 'pages_draft_edited_notification' => 'This page has been updated by since that time. It is recommended that you discard this draft.', + 'pages_draft_edit_active' => [ + 'start_a' => ':count users have started editing this page', + 'start_b' => ':userName has started editing this page', + 'time_a' => 'since the page was last updated', + 'time_b' => 'in the last :minCount minutes', + 'message' => ':start :time. Take care not to overwrite each other\'s updates!', + ], + 'pages_draft_discarded' => 'Draft discarded, The editor has been updated with the current page content', + 'pages_specific' => 'Specific Page', + 'pages_is_template' => 'Page Template', + + // Editor Sidebar + 'page_tags' => 'Page Tags', + 'chapter_tags' => 'Chapter Tags', + 'book_tags' => 'Book Tags', + 'shelf_tags' => 'Shelf Tags', + 'tag' => 'Tag', + 'tags' => 'Tags', + 'tag_name' => 'Tag Name', + 'tag_value' => 'Tag Value (Optional)', + 'tags_explain' => "Add some tags to better categorise your content. \n You can assign a value to a tag for more in-depth organisation.", + 'tags_add' => 'Add another tag', + 'tags_remove' => 'Remove this tag', + 'attachments' => 'Attachments', + 'attachments_explain' => 'Upload some files or attach some links to display on your page. These are visible in the page sidebar.', + 'attachments_explain_instant_save' => 'Changes here are saved instantly.', + 'attachments_items' => 'Attached Items', + 'attachments_upload' => 'Upload File', + 'attachments_link' => 'Attach Link', + 'attachments_set_link' => 'Set Link', + 'attachments_delete_confirm' => 'Click delete again to confirm you want to delete this attachment.', + 'attachments_dropzone' => 'Drop files or click here to attach a file', + 'attachments_no_files' => 'No files have been uploaded', + 'attachments_explain_link' => 'You can attach a link if you\'d prefer not to upload a file. This can be a link to another page or a link to a file in the cloud.', + 'attachments_link_name' => 'Link Name', + 'attachment_link' => 'Attachment link', + 'attachments_link_url' => 'Link to file', + 'attachments_link_url_hint' => 'Url of site or file', + 'attach' => 'Attach', + 'attachments_edit_file' => 'Edit File', + 'attachments_edit_file_name' => 'File Name', + 'attachments_edit_drop_upload' => 'Drop files or click here to upload and overwrite', + 'attachments_order_updated' => 'Attachment order updated', + 'attachments_updated_success' => 'Attachment details updated', + 'attachments_deleted' => 'Attachment deleted', + 'attachments_file_uploaded' => 'File successfully uploaded', + 'attachments_file_updated' => 'File successfully updated', + 'attachments_link_attached' => 'Link successfully attached to page', + 'templates' => 'Templates', + 'templates_set_as_template' => 'Page is a template', + 'templates_explain_set_as_template' => 'You can set this page as a template so its contents be utilized when creating other pages. Other users will be able to use this template if they have view permissions for this page.', + 'templates_replace_content' => 'Replace page content', + 'templates_append_content' => 'Append to page content', + 'templates_prepend_content' => 'Prepend to page content', + + // Profile View + 'profile_user_for_x' => 'User for :time', + 'profile_created_content' => 'Created Content', + 'profile_not_created_pages' => ':userName has not created any pages', + 'profile_not_created_chapters' => ':userName has not created any chapters', + 'profile_not_created_books' => ':userName has not created any books', + 'profile_not_created_shelves' => ':userName has not created any shelves', + + // Comments + 'comment' => 'Comment', + 'comments' => 'Comments', + 'comment_add' => 'Add Comment', + 'comment_placeholder' => 'Leave a comment here', + 'comment_count' => '{0} No Comments|{1} 1 Comment|[2,*] :count Comments', + 'comment_save' => 'Save Comment', + 'comment_saving' => 'Saving comment...', + 'comment_deleting' => 'Deleting comment...', + 'comment_new' => 'New Comment', + 'comment_created' => 'commented :createDiff', + 'comment_updated' => 'Updated :updateDiff by :username', + 'comment_deleted_success' => 'Comment deleted', + 'comment_created_success' => 'Comment added', + 'comment_updated_success' => 'Comment updated', + 'comment_delete_confirm' => 'Are you sure you want to delete this comment?', + 'comment_in_reply_to' => 'In reply to :commentId', + + // Revision + 'revision_delete_confirm' => 'Are you sure you want to delete this revision?', + 'revision_restore_confirm' => 'Are you sure you want to restore this revision? The current page contents will be replaced.', + 'revision_delete_success' => 'Revision deleted', + 'revision_cannot_delete_latest' => 'Cannot delete the latest revision.' +]; \ No newline at end of file diff --git a/resources/lang/fa/errors.php b/resources/lang/fa/errors.php new file mode 100644 index 000000000..06a5285f5 --- /dev/null +++ b/resources/lang/fa/errors.php @@ -0,0 +1,103 @@ + 'You do not have permission to access the requested page.', + 'permissionJson' => 'You do not have permission to perform the requested action.', + + // Auth + 'error_user_exists_different_creds' => 'A user with the email :email already exists but with different credentials.', + 'email_already_confirmed' => 'Email has already been confirmed, Try logging in.', + 'email_confirmation_invalid' => 'This confirmation token is not valid or has already been used, Please try registering again.', + 'email_confirmation_expired' => 'The confirmation token has expired, A new confirmation email has been sent.', + 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed', + 'ldap_fail_anonymous' => 'LDAP access failed using anonymous bind', + 'ldap_fail_authed' => 'LDAP access failed using given dn & password details', + 'ldap_extension_not_installed' => 'LDAP PHP extension not installed', + 'ldap_cannot_connect' => 'Cannot connect to ldap server, Initial connection failed', + 'saml_already_logged_in' => 'Already logged in', + 'saml_user_not_registered' => 'The user :name is not registered and automatic registration is disabled', + 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system', + 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.', + 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization', + 'social_no_action_defined' => 'No action defined', + 'social_login_bad_response' => "Error received during :socialAccount login: \n:error", + 'social_account_in_use' => 'This :socialAccount account is already in use, Try logging in via the :socialAccount option.', + 'social_account_email_in_use' => 'The email :email is already in use. If you already have an account you can connect your :socialAccount account from your profile settings.', + 'social_account_existing' => 'This :socialAccount is already attached to your profile.', + 'social_account_already_used_existing' => 'This :socialAccount account is already used by another user.', + 'social_account_not_used' => 'This :socialAccount account is not linked to any users. Please attach it in your profile settings. ', + 'social_account_register_instructions' => 'If you do not yet have an account, You can register an account using the :socialAccount option.', + 'social_driver_not_found' => 'Social driver not found', + 'social_driver_not_configured' => 'Your :socialAccount social settings are not configured correctly.', + 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.', + + // System + 'path_not_writable' => 'File path :filePath could not be uploaded to. Ensure it is writable to the server.', + 'cannot_get_image_from_url' => 'Cannot get image from :url', + 'cannot_create_thumbs' => 'The server cannot create thumbnails. Please check you have the GD PHP extension installed.', + 'server_upload_limit' => 'The server does not allow uploads of this size. Please try a smaller file size.', + 'uploaded' => 'The server does not allow uploads of this size. Please try a smaller file size.', + 'image_upload_error' => 'An error occurred uploading the image', + 'image_upload_type_error' => 'The image type being uploaded is invalid', + 'file_upload_timeout' => 'The file upload has timed out.', + + // Attachments + 'attachment_page_mismatch' => 'Page mismatch during attachment update', + 'attachment_not_found' => 'Attachment not found', + + // Pages + 'page_draft_autosave_fail' => 'Failed to save draft. Ensure you have internet connection before saving this page', + 'page_custom_home_deletion' => 'Cannot delete a page while it is set as a homepage', + + // Entities + 'entity_not_found' => 'Entity not found', + 'bookshelf_not_found' => 'Bookshelf not found', + 'book_not_found' => 'Book not found', + 'page_not_found' => 'Page not found', + 'chapter_not_found' => 'Chapter not found', + 'selected_book_not_found' => 'The selected book was not found', + 'selected_book_chapter_not_found' => 'The selected Book or Chapter was not found', + 'guests_cannot_save_drafts' => 'Guests cannot save drafts', + + // Users + 'users_cannot_delete_only_admin' => 'You cannot delete the only admin', + 'users_cannot_delete_guest' => 'You cannot delete the guest user', + + // Roles + 'role_cannot_be_edited' => 'This role cannot be edited', + 'role_system_cannot_be_deleted' => 'This role is a system role and cannot be deleted', + 'role_registration_default_cannot_delete' => 'This role cannot be deleted while set as the default registration role', + 'role_cannot_remove_only_admin' => 'This user is the only user assigned to the administrator role. Assign the administrator role to another user before attempting to remove it here.', + + // Comments + 'comment_list' => 'An error occurred while fetching the comments.', + 'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.', + 'comment_add' => 'An error occurred while adding / updating the comment.', + 'comment_delete' => 'An error occurred while deleting the comment.', + 'empty_comment' => 'Cannot add an empty comment.', + + // Error pages + '404_page_not_found' => 'Page Not Found', + 'sorry_page_not_found' => 'Sorry, The page you were looking for could not be found.', + 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.', + 'return_home' => 'Return to home', + 'error_occurred' => 'An Error Occurred', + 'app_down' => ':appName is down right now', + 'back_soon' => 'It will be back up soon.', + + // API errors + 'api_no_authorization_found' => 'No authorization token found on the request', + 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect', + 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token', + 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect', + 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls', + 'api_user_token_expired' => 'The authorization token used has expired', + + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Error thrown when sending a test email:', + +]; diff --git a/resources/lang/fa/pagination.php b/resources/lang/fa/pagination.php new file mode 100644 index 000000000..85bd12fc3 --- /dev/null +++ b/resources/lang/fa/pagination.php @@ -0,0 +1,12 @@ + '« Previous', + 'next' => 'Next »', + +]; diff --git a/resources/lang/fa/passwords.php b/resources/lang/fa/passwords.php new file mode 100644 index 000000000..f41ca7868 --- /dev/null +++ b/resources/lang/fa/passwords.php @@ -0,0 +1,15 @@ + 'Passwords must be at least eight characters and match the confirmation.', + 'user' => "We can't find a user with that e-mail address.", + 'token' => 'This password reset token is invalid.', + 'sent' => 'We have e-mailed your password reset link!', + 'reset' => 'Your password has been reset!', + +]; diff --git a/resources/lang/fa/settings.php b/resources/lang/fa/settings.php new file mode 100644 index 000000000..35bb09cd4 --- /dev/null +++ b/resources/lang/fa/settings.php @@ -0,0 +1,213 @@ + 'Settings', + 'settings_save' => 'Save Settings', + 'settings_save_success' => 'Settings saved', + + // App Settings + 'app_customization' => 'Customization', + 'app_features_security' => 'Features & Security', + 'app_name' => 'Application Name', + 'app_name_desc' => 'This name is shown in the header and in any system-sent emails.', + 'app_name_header' => 'Show name in header', + 'app_public_access' => 'Public Access', + 'app_public_access_desc' => 'Enabling this option will allow visitors, that are not logged-in, to access content in your BookStack instance.', + 'app_public_access_desc_guest' => 'Access for public visitors can be controlled through the "Guest" user.', + 'app_public_access_toggle' => 'Allow public access', + 'app_public_viewing' => 'Allow public viewing?', + 'app_secure_images' => 'Higher Security Image Uploads', + 'app_secure_images_toggle' => 'Enable higher security image uploads', + 'app_secure_images_desc' => 'For performance reasons, all images are public. This option adds a random, hard-to-guess string in front of image urls. Ensure directory indexes are not enabled to prevent easy access.', + 'app_editor' => 'Page Editor', + 'app_editor_desc' => 'Select which editor will be used by all users to edit pages.', + 'app_custom_html' => 'Custom HTML Head Content', + 'app_custom_html_desc' => 'Any content added here will be inserted into the bottom of the section of every page. This is handy for overriding styles or adding analytics code.', + 'app_custom_html_disabled_notice' => 'Custom HTML head content is disabled on this settings page to ensure any breaking changes can be reverted.', + 'app_logo' => 'Application Logo', + 'app_logo_desc' => 'This image should be 43px in height.
Large images will be scaled down.', + 'app_primary_color' => 'Application Primary Color', + 'app_primary_color_desc' => 'Sets the primary color for the application including the banner, buttons, and links.', + 'app_homepage' => 'Application Homepage', + 'app_homepage_desc' => 'Select a view to show on the homepage instead of the default view. Page permissions are ignored for selected pages.', + 'app_homepage_select' => 'Select a page', + 'app_disable_comments' => 'Disable Comments', + 'app_disable_comments_toggle' => 'Disable comments', + 'app_disable_comments_desc' => 'Disables comments across all pages in the application.
Existing comments are not shown.', + + // Color settings + 'content_colors' => 'Content Colors', + 'content_colors_desc' => 'Sets colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.', + 'bookshelf_color' => 'Shelf Color', + 'book_color' => 'Book Color', + 'chapter_color' => 'Chapter Color', + 'page_color' => 'Page Color', + 'page_draft_color' => 'Page Draft Color', + + // Registration Settings + 'reg_settings' => 'Registration', + 'reg_enable' => 'Enable Registration', + 'reg_enable_toggle' => 'Enable registration', + 'reg_enable_desc' => 'When registration is enabled user will be able to sign themselves up as an application user. Upon registration they are given a single, default user role.', + 'reg_default_role' => 'Default user role after registration', + 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.', + 'reg_email_confirmation' => 'Email Confirmation', + 'reg_email_confirmation_toggle' => 'Require email confirmation', + 'reg_confirm_email_desc' => 'If domain restriction is used then email confirmation will be required and this option will be ignored.', + 'reg_confirm_restrict_domain' => 'Domain Restriction', + 'reg_confirm_restrict_domain_desc' => 'Enter a comma separated list of email domains you would like to restrict registration to. Users will be sent an email to confirm their address before being allowed to interact with the application.
Note that users will be able to change their email addresses after successful registration.', + 'reg_confirm_restrict_domain_placeholder' => 'No restriction set', + + // Maintenance settings + 'maint' => 'Maintenance', + 'maint_image_cleanup' => 'Cleanup Images', + 'maint_image_cleanup_desc' => "Scans page & revision content to check which images and drawings are currently in use and which images are redundant. Ensure you create a full database and image backup before running this.", + 'maint_image_cleanup_ignore_revisions' => 'Ignore images in revisions', + 'maint_image_cleanup_run' => 'Run Cleanup', + 'maint_image_cleanup_warning' => ':count potentially unused images were found. Are you sure you want to delete these images?', + 'maint_image_cleanup_success' => ':count potentially unused images found and deleted!', + 'maint_image_cleanup_nothing_found' => 'No unused images found, Nothing deleted!', + 'maint_send_test_email' => 'Send a Test Email', + 'maint_send_test_email_desc' => 'This sends a test email to your email address specified in your profile.', + 'maint_send_test_email_run' => 'Send test email', + 'maint_send_test_email_success' => 'Email sent to :address', + 'maint_send_test_email_mail_subject' => 'Test Email', + 'maint_send_test_email_mail_greeting' => 'Email delivery seems to work!', + 'maint_send_test_email_mail_text' => 'Congratulations! As you received this email notification, your email settings seem to be configured properly.', + + // Role Settings + 'roles' => 'Roles', + 'role_user_roles' => 'User Roles', + 'role_create' => 'Create New Role', + 'role_create_success' => 'Role successfully created', + 'role_delete' => 'Delete Role', + 'role_delete_confirm' => 'This will delete the role with the name \':roleName\'.', + 'role_delete_users_assigned' => 'This role has :userCount users assigned to it. If you would like to migrate the users from this role select a new role below.', + 'role_delete_no_migration' => "Don't migrate users", + 'role_delete_sure' => 'Are you sure you want to delete this role?', + 'role_delete_success' => 'Role successfully deleted', + 'role_edit' => 'Edit Role', + 'role_details' => 'Role Details', + 'role_name' => 'Role Name', + 'role_desc' => 'Short Description of Role', + 'role_external_auth_id' => 'External Authentication IDs', + 'role_system' => 'System Permissions', + 'role_manage_users' => 'Manage users', + 'role_manage_roles' => 'Manage roles & role permissions', + 'role_manage_entity_permissions' => 'Manage all book, chapter & page permissions', + 'role_manage_own_entity_permissions' => 'Manage permissions on own book, chapter & pages', + 'role_manage_page_templates' => 'Manage page templates', + 'role_access_api' => 'Access system API', + 'role_manage_settings' => 'Manage app settings', + 'role_asset' => 'Asset Permissions', + 'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.', + 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.', + 'role_all' => 'All', + 'role_own' => 'Own', + 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to', + 'role_save' => 'Save Role', + 'role_update_success' => 'Role successfully updated', + 'role_users' => 'Users in this role', + 'role_users_none' => 'No users are currently assigned to this role', + + // Users + 'users' => 'Users', + 'user_profile' => 'User Profile', + 'users_add_new' => 'Add New User', + 'users_search' => 'Search Users', + 'users_details' => 'User Details', + 'users_details_desc' => 'Set a display name and an email address for this user. The email address will be used for logging into the application.', + 'users_details_desc_no_email' => 'Set a display name for this user so others can recognise them.', + 'users_role' => 'User Roles', + 'users_role_desc' => 'Select which roles this user will be assigned to. If a user is assigned to multiple roles the permissions from those roles will stack and they will receive all abilities of the assigned roles.', + 'users_password' => 'User Password', + 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 6 characters long.', + 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.', + 'users_send_invite_option' => 'Send user invite email', + 'users_external_auth_id' => 'External Authentication ID', + 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.', + 'users_password_warning' => 'Only fill the below if you would like to change your password.', + 'users_system_public' => 'This user represents any guest users that visit your instance. It cannot be used to log in but is assigned automatically.', + 'users_delete' => 'Delete User', + 'users_delete_named' => 'Delete user :userName', + 'users_delete_warning' => 'This will fully delete this user with the name \':userName\' from the system.', + 'users_delete_confirm' => 'Are you sure you want to delete this user?', + 'users_delete_success' => 'Users successfully removed', + 'users_edit' => 'Edit User', + 'users_edit_profile' => 'Edit Profile', + 'users_edit_success' => 'User successfully updated', + 'users_avatar' => 'User Avatar', + 'users_avatar_desc' => 'Select an image to represent this user. This should be approx 256px square.', + 'users_preferred_language' => 'Preferred Language', + 'users_preferred_language_desc' => 'This option will change the language used for the user-interface of the application. This will not affect any user-created content.', + 'users_social_accounts' => 'Social Accounts', + 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not revoke previously authorized access. Revoke access from your profile settings on the connected social account.', + 'users_social_connect' => 'Connect Account', + 'users_social_disconnect' => 'Disconnect Account', + 'users_social_connected' => ':socialAccount account was successfully attached to your profile.', + 'users_social_disconnected' => ':socialAccount account was successfully disconnected from your profile.', + 'users_api_tokens' => 'API Tokens', + 'users_api_tokens_none' => 'No API tokens have been created for this user', + 'users_api_tokens_create' => 'Create Token', + 'users_api_tokens_expires' => 'Expires', + 'users_api_tokens_docs' => 'API Documentation', + + // API Tokens + 'user_api_token_create' => 'Create API Token', + 'user_api_token_name' => 'Name', + 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.', + 'user_api_token_expiry' => 'Expiry Date', + 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.', + 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.', + 'user_api_token_create_success' => 'API token successfully created', + 'user_api_token_update_success' => 'API token successfully updated', + 'user_api_token' => 'API Token', + 'user_api_token_id' => 'Token ID', + 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.', + 'user_api_token_secret' => 'Token Secret', + 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.', + 'user_api_token_created' => 'Token Created :timeAgo', + 'user_api_token_updated' => 'Token Updated :timeAgo', + 'user_api_token_delete' => 'Delete Token', + 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.', + 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?', + 'user_api_token_delete_success' => 'API token successfully deleted', + + //! If editing translations files directly please ignore this in all + //! languages apart from en. Content will be auto-copied from en. + //!//////////////////////////////// + 'language_select' => [ + 'en' => 'English', + 'ar' => 'العربية', + 'cs' => 'Česky', + 'da' => 'Dansk', + 'de' => 'Deutsch (Sie)', + 'de_informal' => 'Deutsch (Du)', + 'es' => 'Español', + 'es_AR' => 'Español Argentina', + 'fr' => 'Français', + 'hu' => 'Magyar', + 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', + 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', + 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', + 'zh_CN' => '简体中文', + 'zh_TW' => '繁體中文', + ] + //!//////////////////////////////// +]; diff --git a/resources/lang/fa/validation.php b/resources/lang/fa/validation.php new file mode 100644 index 000000000..76b57a2a3 --- /dev/null +++ b/resources/lang/fa/validation.php @@ -0,0 +1,114 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, dashes and underscores.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'email' => 'The :attribute must be a valid email address.', + 'ends_with' => 'The :attribute must end with one of the following: :values', + 'filled' => 'The :attribute field is required.', + 'gt' => [ + 'numeric' => 'The :attribute must be greater than :value.', + 'file' => 'The :attribute must be greater than :value kilobytes.', + 'string' => 'The :attribute must be greater than :value characters.', + 'array' => 'The :attribute must have more than :value items.', + ], + 'gte' => [ + 'numeric' => 'The :attribute must be greater than or equal :value.', + 'file' => 'The :attribute must be greater than or equal :value kilobytes.', + 'string' => 'The :attribute must be greater than or equal :value characters.', + 'array' => 'The :attribute must have :value items or more.', + ], + 'exists' => 'The selected :attribute is invalid.', + 'image' => 'The :attribute must be an image.', + 'image_extension' => 'The :attribute must have a valid & supported image extension.', + 'in' => 'The selected :attribute is invalid.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'ipv4' => 'The :attribute must be a valid IPv4 address.', + 'ipv6' => 'The :attribute must be a valid IPv6 address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'lt' => [ + 'numeric' => 'The :attribute must be less than :value.', + 'file' => 'The :attribute must be less than :value kilobytes.', + 'string' => 'The :attribute must be less than :value characters.', + 'array' => 'The :attribute must have less than :value items.', + ], + 'lte' => [ + 'numeric' => 'The :attribute must be less than or equal :value.', + 'file' => 'The :attribute must be less than or equal :value kilobytes.', + 'string' => 'The :attribute must be less than or equal :value characters.', + 'array' => 'The :attribute must not have more than :value items.', + ], + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'no_double_extension' => 'The :attribute must only have a single file extension.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute format is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'url' => 'The :attribute format is invalid.', + 'uploaded' => 'The file could not be uploaded. The server may not accept files of this size.', + + // Custom validation lines + 'custom' => [ + 'password-confirm' => [ + 'required_with' => 'Password confirmation required', + ], + ], + + // Custom validation attributes + 'attributes' => [], +]; diff --git a/resources/lang/fr/common.php b/resources/lang/fr/common.php index af31f458a..9a618d73a 100644 --- a/resources/lang/fr/common.php +++ b/resources/lang/fr/common.php @@ -38,7 +38,7 @@ return [ 'reset' => 'Réinitialiser', 'remove' => 'Enlever', 'add' => 'Ajouter', - 'fullscreen' => 'Fullscreen', + 'fullscreen' => 'Plein écran', // Sort Options 'sort_options' => 'Options de tri', diff --git a/resources/lang/fr/errors.php b/resources/lang/fr/errors.php index 709b208b0..2c697e67d 100644 --- a/resources/lang/fr/errors.php +++ b/resources/lang/fr/errors.php @@ -83,6 +83,7 @@ return [ // Error pages '404_page_not_found' => 'Page non trouvée', 'sorry_page_not_found' => 'Désolé, cette page n\'a pas pu être trouvée.', + 'sorry_page_not_found_permission_warning' => 'Si vous vous attendiez à ce que cette page existe, il se peut que vous n\'ayez pas l\'autorisation de la consulter.', 'return_home' => 'Retour à l\'accueil', 'error_occurred' => 'Une erreur est survenue', 'app_down' => ':appName n\'est pas en service pour le moment', @@ -92,8 +93,11 @@ return [ 'api_no_authorization_found' => 'Aucun jeton d\'autorisation trouvé pour la demande', 'api_bad_authorization_format' => 'Un jeton d\'autorisation a été trouvé pour la requête, mais le format semble incorrect', 'api_user_token_not_found' => 'Aucun jeton API correspondant n\'a été trouvé pour le jeton d\'autorisation fourni', - 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect', - 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls', + 'api_incorrect_token_secret' => 'Le secret fourni pour le jeton d\'API utilisé est incorrect', + 'api_user_no_api_permission' => 'Le propriétaire du jeton API utilisé n\'a pas la permission de passer des appels API', 'api_user_token_expired' => 'Le jeton d\'autorisation utilisé a expiré', + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Erreur émise lors de l\'envoi d\'un e-mail de test :', + ]; diff --git a/resources/lang/fr/settings.php b/resources/lang/fr/settings.php index 2fd8980ae..ab56d8ea2 100644 --- a/resources/lang/fr/settings.php +++ b/resources/lang/fr/settings.php @@ -29,7 +29,7 @@ return [ 'app_editor_desc' => 'Sélectionnez l\'éditeur qui sera utilisé pour modifier les pages.', 'app_custom_html' => 'HTML personnalisé dans l\'en-tête', 'app_custom_html_desc' => 'Le contenu inséré ici sera ajouté en bas de la balise de toutes les pages. Vous pouvez l\'utiliser pour ajouter du CSS personnalisé ou un tracker analytique.', - 'app_custom_html_disabled_notice' => 'Custom HTML head content is disabled on this settings page to ensure any breaking changes can be reverted.', + 'app_custom_html_disabled_notice' => 'Le contenu de la tête HTML personnalisée est désactivé sur cette page de paramètres pour garantir que les modifications les plus récentes peuvent être annulées.', 'app_logo' => 'Logo de l\'Application', 'app_logo_desc' => 'Cette image doit faire 43px de hauteur.
Les images plus larges seront réduites.', 'app_primary_color' => 'Couleur principale de l\'application', @@ -56,7 +56,7 @@ return [ 'reg_enable_toggle' => 'Activer l\'inscription', 'reg_enable_desc' => 'Lorsque l\'inscription est activée, l\'utilisateur pourra s\'enregistrer en tant qu\'utilisateur de l\'application. Lors de l\'inscription, ils se voient attribuer un rôle par défaut.', 'reg_default_role' => 'Rôle par défaut lors de l\'inscription', - 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.', + 'reg_enable_external_warning' => 'L\'option ci-dessus est ignorée lorsque l\'authentification externe LDAP ou SAML est activée. Les comptes utilisateur pour les membres non existants seront créés automatiquement si l\'authentification, par rapport au système externe utilisé, est réussie.', 'reg_email_confirmation' => 'Confirmation de l\'e-mail', 'reg_email_confirmation_toggle' => 'Obliger la confirmation par e-mail ?', 'reg_confirm_email_desc' => 'Si la restriction de domaine est activée, la confirmation sera automatiquement obligatoire et cette valeur sera ignorée.', @@ -131,7 +131,7 @@ return [ 'users_send_invite_text' => 'Vous pouvez choisir d\'envoyer à cet utilisateur un email d\'invitation qui lui permet de définir son propre mot de passe, sinon vous pouvez définir son mot de passe vous-même.', 'users_send_invite_option' => 'Envoyer l\'e-mail d\'invitation', 'users_external_auth_id' => 'Identifiant d\'authentification externe', - 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.', + 'users_external_auth_id_desc' => 'C\'est l\'ID utilisé pour correspondre à cet utilisateur lors de la communication avec votre système d\'authentification externe.', 'users_password_warning' => 'Remplissez ce formulaire uniquement si vous souhaitez changer de mot de passe:', 'users_system_public' => 'Cet utilisateur représente les invités visitant votre instance. Il est assigné automatiquement aux invités.', 'users_delete' => 'Supprimer un utilisateur', @@ -161,21 +161,21 @@ return [ // API Tokens 'user_api_token_create' => 'Créer un nouveau jeton API', 'user_api_token_name' => 'Nom', - 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.', + 'user_api_token_name_desc' => 'Donnez à votre jeton un nom lisible pour l\'identifier plus tard.', 'user_api_token_expiry' => 'Date d\'expiration', - 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.', - 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.', + 'user_api_token_expiry_desc' => 'Définissez une date à laquelle ce jeton expire. Après cette date, les demandes effectuées à l\'aide de ce jeton ne fonctionneront plus. Le fait de laisser ce champ vide entraînera une expiration dans 100 ans.', + 'user_api_token_create_secret_message' => 'Immédiatement après la création de ce jeton, un "ID de jeton" "et" Secret de jeton "sera généré et affiché. Le secret ne sera affiché qu\'une seule fois, alors assurez-vous de copier la valeur dans un endroit sûr et sécurisé avant de continuer.', 'user_api_token_create_success' => 'L\'API token a été créé avec succès', 'user_api_token_update_success' => 'L\'API token a été mis à jour avec succès', 'user_api_token' => 'Token API', 'user_api_token_id' => 'Token ID', - 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.', + 'user_api_token_id_desc' => 'Il s\'agit d\'un identifiant généré par le système non modifiable pour ce jeton qui devra être fourni dans les demandes d\'API.', 'user_api_token_secret' => 'Token Secret', - 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.', + 'user_api_token_secret_desc' => 'Il s\'agit d\'un secret généré par le système pour ce jeton, qui devra être fourni dans les demandes d\'API. Cela ne sera affiché qu\'une seule fois, alors copiez cette valeur dans un endroit sûr et sécurisé.', 'user_api_token_created' => 'Jeton créé :timeAgo', 'user_api_token_updated' => 'Jeton mis à jour :timeAgo', 'user_api_token_delete' => 'Supprimer le Token', - 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.', + 'user_api_token_delete_warning' => 'Cela supprimera complètement le jeton d\'API avec le nom \':tokenName\'.', 'user_api_token_delete_confirm' => 'Souhaitez-vous vraiment effacer l\'API Token ?', 'user_api_token_delete_success' => 'L\'API token a été supprimé avec succès', @@ -185,27 +185,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => 'Danois', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/he/activities.php b/resources/lang/he/activities.php new file mode 100644 index 000000000..34860173e --- /dev/null +++ b/resources/lang/he/activities.php @@ -0,0 +1,48 @@ + 'created page', + 'page_create_notification' => 'הדף נוצר בהצלחה', + 'page_update' => 'updated page', + 'page_update_notification' => 'הדף עודכן בהצלחה', + 'page_delete' => 'deleted page', + 'page_delete_notification' => 'הדף הוסר בהצלחה', + 'page_restore' => 'restored page', + 'page_restore_notification' => 'הדף שוחזר בהצלחה', + 'page_move' => 'moved page', + + // Chapters + 'chapter_create' => 'created chapter', + 'chapter_create_notification' => 'הפרק נוצר בהצלחה', + 'chapter_update' => 'updated chapter', + 'chapter_update_notification' => 'הפרק עודכן בהצלחה', + 'chapter_delete' => 'deleted chapter', + 'chapter_delete_notification' => 'הפרק הוסר בהצלחה', + 'chapter_move' => 'moved chapter', + + // Books + 'book_create' => 'created book', + 'book_create_notification' => 'הספר נוצר בהצלחה', + 'book_update' => 'updated book', + 'book_update_notification' => 'הספר עודכן בהצלחה', + 'book_delete' => 'deleted book', + 'book_delete_notification' => 'הספר הוסר בהצלחה', + 'book_sort' => 'sorted book', + 'book_sort_notification' => 'הספר מוין מחדש בהצלחה', + + // Bookshelves + 'bookshelf_create' => 'created Bookshelf', + 'bookshelf_create_notification' => 'מדף הספרים נוצר בהצלחה', + 'bookshelf_update' => 'updated bookshelf', + 'bookshelf_update_notification' => 'מדף הספרים עודכן בהצלחה', + 'bookshelf_delete' => 'deleted bookshelf', + 'bookshelf_delete_notification' => 'מדף הספרים הוסר בהצלחה', + + // Other + 'commented_on' => 'commented on', +]; diff --git a/resources/lang/he/auth.php b/resources/lang/he/auth.php new file mode 100644 index 000000000..8a982db01 --- /dev/null +++ b/resources/lang/he/auth.php @@ -0,0 +1,77 @@ + 'פרטי ההתחברות אינם תואמים את הנתונים שלנו', + 'throttle' => 'נסיונות התחברות רבים מדי, יש להמתין :seconds שניות ולנסות שנית', + + // Login & Register + 'sign_up' => 'הרשמה', + 'log_in' => 'התחבר', + 'log_in_with' => 'התחבר באמצעות :socialDriver', + 'sign_up_with' => 'הרשם באמצעות :socialDriver', + 'logout' => 'התנתק', + + 'name' => 'שם', + 'username' => 'שם משתמש', + 'email' => 'אי-מייל', + 'password' => 'סיסמא', + 'password_confirm' => 'אימות סיסמא', + 'password_hint' => 'חייבת להיות יותר מ-5 תווים', + 'forgot_password' => 'שכחת סיסמא?', + 'remember_me' => 'זכור אותי', + 'ldap_email_hint' => 'אנא ציין כתובת אי-מייל לשימוש בחשבון זה', + 'create_account' => 'צור חשבון', + 'already_have_account' => 'יש לך כבר חשבון?', + 'dont_have_account' => 'אין לך חשבון?', + 'social_login' => 'התחברות באמצעות אתר חברתי', + 'social_registration' => 'הרשמה באמצעות אתר חברתי', + 'social_registration_text' => 'הרשם והתחבר באמצעות שירות אחר', + + 'register_thanks' => 'תודה על הרשמתך!', + 'register_confirm' => 'יש לבדוק את תיבת המייל שלך ולאשר את ההרשמה על מנת להשתמש ב:appName', + 'registrations_disabled' => 'הרשמה כרגע מבוטלת', + 'registration_email_domain_invalid' => 'לא ניתן להרשם באמצעות המייל שסופק', + 'register_success' => 'תודה על הרשמתך! ניתן כעת להתחבר', + + + // Password Reset + 'reset_password' => 'איפוס סיסמא', + 'reset_password_send_instructions' => 'יש להזין את כתובת המייל למטה ואנו נשלח אלייך הוראות לאיפוס הסיסמא', + 'reset_password_send_button' => 'שלח קישור לאיפוס סיסמא', + 'reset_password_sent_success' => 'שלחנו הוראות לאיפוס הסיסמא אל :email', + 'reset_password_success' => 'סיסמתך עודכנה בהצלחה', + 'email_reset_subject' => 'איפוס סיסמא ב :appName', + 'email_reset_text' => 'קישור זה נשלח עקב בקשה לאיפוס סיסמא בחשבון שלך', + 'email_reset_not_requested' => 'אם לא ביקשת לאפס את סיסמתך, אפשר להתעלם ממייל זה', + + + // Email Confirmation + 'email_confirm_subject' => 'אמת אי-מייל ב :appName', + 'email_confirm_greeting' => 'תודה שהצטרפת אל :appName!', + 'email_confirm_text' => 'יש לאמת את כתובת המייל של על ידי לחיצה על הכפור למטה:', + 'email_confirm_action' => 'אמת כתובת אי-מייל', + 'email_confirm_send_error' => 'נדרש אימות אי-מייל אך שליחת האי-מייל אליך נכשלה. יש ליצור קשר עם מנהל המערכת כדי לוודא שאכן ניתן לשלוח מיילים.', + 'email_confirm_success' => 'האי-מייל שלך אושר!', + 'email_confirm_resent' => 'אימות נשלח לאי-מייל שלך, יש לבדוק בתיבת הדואר הנכנס', + + 'email_not_confirmed' => 'כתובת המייל לא אומתה', + 'email_not_confirmed_text' => 'כתובת המייל שלך טרם אומתה', + 'email_not_confirmed_click_link' => 'יש ללחוץ על הקישור אשר נשלח אליך לאחר ההרשמה', + 'email_not_confirmed_resend' => 'אם אינך מוצא את המייל, ניתן לשלוח בשנית את האימות על ידי לחיצה על הכפתור למטה', + 'email_not_confirmed_resend_button' => 'שלח שוב מייל אימות', + + // User Invite + 'user_invite_email_subject' => 'You have been invited to join :appName!', + 'user_invite_email_greeting' => 'An account has been created for you on :appName.', + 'user_invite_email_text' => 'Click the button below to set an account password and gain access:', + 'user_invite_email_action' => 'Set Account Password', + 'user_invite_page_welcome' => 'Welcome to :appName!', + 'user_invite_page_text' => 'To finalise your account and gain access you need to set a password which will be used to log-in to :appName on future visits.', + 'user_invite_page_confirm_button' => 'Confirm Password', + 'user_invite_success' => 'Password set, you now have access to :appName!' +]; \ No newline at end of file diff --git a/resources/lang/he/common.php b/resources/lang/he/common.php new file mode 100644 index 000000000..55c50bfb9 --- /dev/null +++ b/resources/lang/he/common.php @@ -0,0 +1,77 @@ + 'ביטול', + 'confirm' => 'אישור', + 'back' => 'אחורה', + 'save' => 'שמור', + 'continue' => 'המשך', + 'select' => 'בחר', + 'toggle_all' => 'סמן הכל', + 'more' => 'עוד', + + // Form Labels + 'name' => 'שם', + 'description' => 'תיאור', + 'role' => 'תפקיד', + 'cover_image' => 'תמונת נושא', + 'cover_image_description' => 'התמונה צריכה להיות בסביבות 440x250px', + + // Actions + 'actions' => 'פעולות', + 'view' => 'הצג', + 'view_all' => 'הצג הכל', + 'create' => 'צור', + 'update' => 'עדכן', + 'edit' => 'ערוך', + 'sort' => 'מיין', + 'move' => 'הזז', + 'copy' => 'העתק', + 'reply' => 'השב', + 'delete' => 'מחק', + 'search' => 'חיפוש', + 'search_clear' => 'נקה חיפוש', + 'reset' => 'איפוס', + 'remove' => 'הסר', + 'add' => 'הוסף', + 'fullscreen' => 'Fullscreen', + + // Sort Options + 'sort_options' => 'Sort Options', + 'sort_direction_toggle' => 'Sort Direction Toggle', + 'sort_ascending' => 'Sort Ascending', + 'sort_descending' => 'Sort Descending', + 'sort_name' => 'שם', + 'sort_created_at' => 'תאריך יצירה', + 'sort_updated_at' => 'תאריך עדכון', + + // Misc + 'deleted_user' => 'משתמש שנמחק', + 'no_activity' => 'אין פעילות להציג', + 'no_items' => 'אין פריטים זמינים', + 'back_to_top' => 'בחזרה ללמעלה', + 'toggle_details' => 'הצג/הסתר פרטים', + 'toggle_thumbnails' => 'הצג/הסתר תמונות', + 'details' => 'פרטים', + 'grid_view' => 'תצוגת רשת', + 'list_view' => 'תצוגת רשימה', + 'default' => 'ברירת מחדל', + 'breadcrumb' => 'Breadcrumb', + + // Header + 'profile_menu' => 'Profile Menu', + 'view_profile' => 'הצג פרופיל', + 'edit_profile' => 'ערוך פרופיל', + + // Layout tabs + 'tab_info' => 'מידע', + 'tab_content' => 'תוכן', + + // Email Content + 'email_action_help' => 'אם לא ניתן ללחות על כפתור ״:actionText״, יש להעתיק ולהדביק את הכתובת למטה אל דפדפן האינטרנט שלך:', + 'email_rights' => 'כל הזכויות שמורות', +]; diff --git a/resources/lang/he/components.php b/resources/lang/he/components.php new file mode 100644 index 000000000..73dbe4e18 --- /dev/null +++ b/resources/lang/he/components.php @@ -0,0 +1,33 @@ + 'בחירת תמונה', + 'image_all' => 'הכל', + 'image_all_title' => 'הצג את כל התמונות', + 'image_book_title' => 'הצג תמונות שהועלו לספר זה', + 'image_page_title' => 'הצג תמונות שהועלו לדף זה', + 'image_search_hint' => 'חפש תמונה לפי שם', + 'image_uploaded' => 'הועלה :uploadedDate', + 'image_load_more' => 'טען עוד', + 'image_image_name' => 'שם התמונה', + 'image_delete_used' => 'תמונה זו בשימוש בדפים שמתחת', + 'image_delete_confirm' => 'לחץ ״מחק״ שוב על מנת לאשר שברצונך למחוק תמונה זו', + 'image_select_image' => 'בחר תמונה', + 'image_dropzone' => 'גרור תמונות או לחץ כאן להעלאה', + 'images_deleted' => 'התמונות נמחקו', + 'image_preview' => 'תצוגה מקדימה', + 'image_upload_success' => 'התמונה עלתה בהצלחה', + 'image_update_success' => 'פרטי התמונה עודכנו בהצלחה', + 'image_delete_success' => 'התמונה נמחקה בהצלחה', + 'image_upload_remove' => 'מחק', + + // Code Editor + 'code_editor' => 'ערוך קוד', + 'code_language' => 'שפת הקוד', + 'code_content' => 'תוכן הקוד', + 'code_save' => 'שמור קוד', +]; diff --git a/resources/lang/he/entities.php b/resources/lang/he/entities.php new file mode 100644 index 000000000..2fb0e82ec --- /dev/null +++ b/resources/lang/he/entities.php @@ -0,0 +1,314 @@ + 'נוצר לאחרונה', + 'recently_created_pages' => 'דפים שנוצרו לאחרונה', + 'recently_updated_pages' => 'דפים שעודכנו לאחרונה', + 'recently_created_chapters' => 'פרקים שנוצרו לאחרונה', + 'recently_created_books' => 'ספרים שנוצרו לאחרונה', + 'recently_created_shelves' => 'מדפים שנוצרו לאחרונה', + 'recently_update' => 'עודכן לאחרונה', + 'recently_viewed' => 'נצפה לאחרונה', + 'recent_activity' => 'פעילות לאחרונה', + 'create_now' => 'צור אחד כעת', + 'revisions' => 'עדכונים', + 'meta_revision' => 'עדכון #:revisionCount', + 'meta_created' => 'נוצר :timeLength', + 'meta_created_name' => 'נוצר :timeLength על ידי :user', + 'meta_updated' => 'עודכן :timeLength', + 'meta_updated_name' => 'עודכן :timeLength על ידי :user', + 'entity_select' => 'בחר יישות', + 'images' => 'תמונות', + 'my_recent_drafts' => 'הטיוטות האחרונות שלי', + 'my_recently_viewed' => 'הנצפים לאחרונה שלי', + 'no_pages_viewed' => 'לא צפית בדפים כלשהם', + 'no_pages_recently_created' => 'לא נוצרו דפים לאחרונה', + 'no_pages_recently_updated' => 'לא עודכנו דפים לאחרונה', + 'export' => 'ייצוא', + 'export_html' => 'דף אינטרנט', + 'export_pdf' => 'קובץ PDF', + 'export_text' => 'טקסט רגיל', + + // Permissions and restrictions + 'permissions' => 'הרשאות', + 'permissions_intro' => 'ברגע שמסומן, הרשאות אלו יגברו על כל הרשאת תפקיד שקיימת', + 'permissions_enable' => 'הפעל הרשאות מותאמות אישית', + 'permissions_save' => 'שמור הרשאות', + + // Search + 'search_results' => 'תוצאות חיפוש', + 'search_total_results_found' => ':count תוצאות נמצאו|:count סה״כ תוצאות', + 'search_clear' => 'נקה חיפוש', + 'search_no_pages' => 'לא נמצאו דפים התואמים לחיפוש', + 'search_for_term' => 'חפש את :term', + 'search_more' => 'תוצאות נוספות', + 'search_filters' => 'מסנני חיפוש', + 'search_content_type' => 'סוג התוכן', + 'search_exact_matches' => 'התאמות מדויקות', + 'search_tags' => 'חפש בתגים', + 'search_options' => 'אפשרויות', + 'search_viewed_by_me' => 'נצפו על ידי', + 'search_not_viewed_by_me' => 'שלא נצפו על ידי', + 'search_permissions_set' => 'סט הרשאות', + 'search_created_by_me' => 'שנוצרו על ידי', + 'search_updated_by_me' => 'שעודכנו על ידי', + 'search_date_options' => 'אפשרויות תאריך', + 'search_updated_before' => 'שעודכנו לפני', + 'search_updated_after' => 'שעודכנו לאחר', + 'search_created_before' => 'שנוצרו לפני', + 'search_created_after' => 'שנוצרו לאחר', + 'search_set_date' => 'הגדר תאריך', + 'search_update' => 'עדכן חיפוש', + + // Shelves + 'shelf' => 'מדף', + 'shelves' => 'מדפים', + 'x_shelves' => ':count מדף|:count מדפים', + 'shelves_long' => 'מדפים', + 'shelves_empty' => 'לא נוצרו מדפים', + 'shelves_create' => 'צור מדף חדש', + 'shelves_popular' => 'מדפים פופולרים', + 'shelves_new' => 'מדפים חדשים', + 'shelves_new_action' => 'מדף חדש', + 'shelves_popular_empty' => 'המדפים הפופולריים ביותר יופיעו כאן', + 'shelves_new_empty' => 'המדפים שנוצרו לאחרונה יופיעו כאן', + 'shelves_save' => 'שמור מדף', + 'shelves_books' => 'ספרים במדף זה', + 'shelves_add_books' => 'הוסף ספרים למדף זה', + 'shelves_drag_books' => 'גרור ספרים לכאן על מנת להוסיף אותם למדף', + 'shelves_empty_contents' => 'במדף זה לא קיימים ספרים', + 'shelves_edit_and_assign' => 'עריכת מדף להוספת ספרים', + 'shelves_edit_named' => 'עריכת מדף :name', + 'shelves_edit' => 'ערוך מדף', + 'shelves_delete' => 'מחק מדף', + 'shelves_delete_named' => 'מחיקת דף :name', + 'shelves_delete_explain' => "פעולה זו תמחק את המדף :name - הספרים שמופיעים בו ימחקו גם כן!", + 'shelves_delete_confirmation' => 'האם ברצונך למחוק את המדף?', + 'shelves_permissions' => 'הרשאות מדף', + 'shelves_permissions_updated' => 'הרשאות מדף עודכנו', + 'shelves_permissions_active' => 'הרשאות מדף פעילות', + 'shelves_copy_permissions_to_books' => 'העתק הרשאות מדף אל הספרים', + 'shelves_copy_permissions' => 'העתק הרשאות', + 'shelves_copy_permissions_explain' => 'פעולה זו תעתיק את כל הרשאות המדף לכל הספרים המשוייכים למדף זה. לפני הביצוע, יש לוודא שכל הרשאות המדף אכן נשמרו.', + 'shelves_copy_permission_success' => 'הרשאות המדף הועתקו אל :count ספרים', + + // Books + 'book' => 'ספר', + 'books' => 'ספרים', + 'x_books' => ':count ספר|:count ספרים', + 'books_empty' => 'לא נוצרו ספרים', + 'books_popular' => 'ספרים פופולריים', + 'books_recent' => 'ספרים אחרונים', + 'books_new' => 'ספרים חדשים', + 'books_new_action' => 'ספר חדש', + 'books_popular_empty' => 'הספרים הפופולריים יופיעו כאן', + 'books_new_empty' => 'הספרים שנוצרו לאחרונה יופיעו כאן', + 'books_create' => 'צור ספר חדש', + 'books_delete' => 'מחק ספר', + 'books_delete_named' => 'מחק ספר :bookName', + 'books_delete_explain' => 'פעולה זו תמחק את הספר :bookName, כל הדפים והפרקים ימחקו גם כן.', + 'books_delete_confirmation' => 'האם ברצונך למחוק את הספר הזה?', + 'books_edit' => 'ערוך ספר', + 'books_edit_named' => 'עריכת ספר :bookName', + 'books_form_book_name' => 'שם הספר', + 'books_save' => 'שמור ספר', + 'books_permissions' => 'הרשאות ספר', + 'books_permissions_updated' => 'הרשאות הספר עודכנו', + 'books_empty_contents' => 'לא נוצרו פרקים או דפים עבור ספר זה', + 'books_empty_create_page' => 'צור דף חדש', + 'books_empty_sort_current_book' => 'מיין את הספר הנוכחי', + 'books_empty_add_chapter' => 'הוסף פרק', + 'books_permissions_active' => 'הרשאות ספר פעילות', + 'books_search_this' => 'חפש בספר זה', + 'books_navigation' => 'ניווט בספר', + 'books_sort' => 'מיין את תוכן הספר', + 'books_sort_named' => 'מיין את הספר :bookName', + 'books_sort_name' => 'מיין לפי שם', + 'books_sort_created' => 'מיין לפי תאריך יצירה', + 'books_sort_updated' => 'מיין לפי תאריך עדכון', + 'books_sort_chapters_first' => 'פרקים בהתחלה', + 'books_sort_chapters_last' => 'פרקים בסוף', + 'books_sort_show_other' => 'הצג ספרים אחרונים', + 'books_sort_save' => 'שמור את הסדר החדש', + + // Chapters + 'chapter' => 'פרק', + 'chapters' => 'פרקים', + 'x_chapters' => ':count פרק|:count פרקים', + 'chapters_popular' => 'פרקים פופולריים', + 'chapters_new' => 'פרק חדש', + 'chapters_create' => 'צור פרק חדש', + 'chapters_delete' => 'מחק פרק', + 'chapters_delete_named' => 'מחק את פרק :chapterName', + 'chapters_delete_explain' => 'פעולה זו תמחוק את הפרק בשם \':chapterName\'. כל הדפים יועברו אוטומטית לספר עצמו', + 'chapters_delete_confirm' => 'האם ברצונך למחוק פרק זה?', + 'chapters_edit' => 'ערוך פרק', + 'chapters_edit_named' => 'ערוך פרק :chapterName', + 'chapters_save' => 'שמור פרק', + 'chapters_move' => 'העבר פרק', + 'chapters_move_named' => 'העבר פרק :chapterName', + 'chapter_move_success' => 'הפרק הועבר אל :bookName', + 'chapters_permissions' => 'הרשאות פרק', + 'chapters_empty' => 'לא נמצאו דפים בפרק זה.', + 'chapters_permissions_active' => 'הרשאות פרק פעילות', + 'chapters_permissions_success' => 'הרשאות פרק עודכנו', + 'chapters_search_this' => 'חפש בפרק זה', + + // Pages + 'page' => 'דף', + 'pages' => 'דפים', + 'x_pages' => ':count דף|:count דפים', + 'pages_popular' => 'דפים פופולריים', + 'pages_new' => 'דף חדש', + 'pages_attachments' => 'קבצים מצורפים', + 'pages_navigation' => 'ניווט בדף', + 'pages_delete' => 'מחק דף', + 'pages_delete_named' => 'מחק דף :pageName', + 'pages_delete_draft_named' => 'מחק טיוטת דף :pageName', + 'pages_delete_draft' => 'מחק טיוטת דף', + 'pages_delete_success' => 'הדף נמחק', + 'pages_delete_draft_success' => 'טיוטת דף נמחקה', + 'pages_delete_confirm' => 'האם ברצונך למחוק דף זה?', + 'pages_delete_draft_confirm' => 'האם ברצונך למחוק את טיוטת הדף הזה?', + 'pages_editing_named' => 'עריכת דף :pageName', + 'pages_edit_draft_options' => 'Draft Options', + 'pages_edit_save_draft' => 'שמור טיוטה', + 'pages_edit_draft' => 'ערוך טיוטת דף', + 'pages_editing_draft' => 'עריכת טיוטה', + 'pages_editing_page' => 'עריכת דף', + 'pages_edit_draft_save_at' => 'טיוטה נשמרה ב ', + 'pages_edit_delete_draft' => 'מחק טיוטה', + 'pages_edit_discard_draft' => 'התעלם מהטיוטה', + 'pages_edit_set_changelog' => 'הגדר יומן שינויים', + 'pages_edit_enter_changelog_desc' => 'ציין תיאור קצר אודות השינויים שביצעת', + 'pages_edit_enter_changelog' => 'הכנס יומן שינויים', + 'pages_save' => 'שמור דף', + 'pages_title' => 'כותרת דף', + 'pages_name' => 'שם הדף', + 'pages_md_editor' => 'עורך', + 'pages_md_preview' => 'תצוגה מקדימה', + 'pages_md_insert_image' => 'הכנס תמונה', + 'pages_md_insert_link' => 'הכנס קישור ליישות', + 'pages_md_insert_drawing' => 'הכנס סרטוט', + 'pages_not_in_chapter' => 'דף אינו חלק מפרק', + 'pages_move' => 'העבר דף', + 'pages_move_success' => 'הדף הועבר אל ":parentName"', + 'pages_copy' => 'העתק דף', + 'pages_copy_desination' => 'העתק יעד', + 'pages_copy_success' => 'הדף הועתק בהצלחה', + 'pages_permissions' => 'הרשאות דף', + 'pages_permissions_success' => 'הרשאות הדף עודכנו', + 'pages_revision' => 'נוסח', + 'pages_revisions' => 'נוסחי דף', + 'pages_revisions_named' => 'נוסחי דף עבור :pageName', + 'pages_revision_named' => 'נוסח דף עבור :pageName', + 'pages_revisions_created_by' => 'נוצר על ידי', + 'pages_revisions_date' => 'תאריך נוסח', + 'pages_revisions_number' => '#', + 'pages_revisions_numbered' => 'נוסח #:id', + 'pages_revisions_numbered_changes' => 'שינויי נוסח #:id', + 'pages_revisions_changelog' => 'יומן שינויים', + 'pages_revisions_changes' => 'שינויים', + 'pages_revisions_current' => 'גירסא נוכחית', + 'pages_revisions_preview' => 'תצוגה מקדימה', + 'pages_revisions_restore' => 'שחזר', + 'pages_revisions_none' => 'לדף זה אין נוסחים', + 'pages_copy_link' => 'העתק קישור', + 'pages_edit_content_link' => 'ערוך תוכן', + 'pages_permissions_active' => 'הרשאות דף פעילות', + 'pages_initial_revision' => 'פרסום ראשוני', + 'pages_initial_name' => 'דף חדש', + 'pages_editing_draft_notification' => 'הינך עורך טיוטה אשר נשמרה לאחרונה ב :timeDiff', + 'pages_draft_edited_notification' => 'דף זה עודכן מאז, מומלץ להתעלם מהטיוטה הזו.', + 'pages_draft_edit_active' => [ + 'start_a' => ':count משתמשים החלו לערוך דף זה', + 'start_b' => ':userName החל לערוך דף זה', + 'time_a' => 'מאז שהדף עודכן לאחרונה', + 'time_b' => 'ב :minCount דקות האחרונות', + 'message' => ':start :time. יש לשים לב לא לדרוס שינויים של משתמשים אחרים!', + ], + 'pages_draft_discarded' => 'הסקיצה נמחקה, העורך עודכן עם תוכן הדף העכשוי', + 'pages_specific' => 'דף ספציפי', + 'pages_is_template' => 'Page Template', + + // Editor Sidebar + 'page_tags' => 'תגיות דף', + 'chapter_tags' => 'תגיות פרק', + 'book_tags' => 'תגיות ספר', + 'shelf_tags' => 'תגיות מדף', + 'tag' => 'תגית', + 'tags' => 'תגיות', + 'tag_name' => 'Tag Name', + 'tag_value' => 'ערך התגית (אופציונאלי)', + 'tags_explain' => "הכנס תגיות על מנת לסדר את התוכן שלך. \n ניתן לציין ערך לתגית על מנת לבצע סידור יסודי יותר", + 'tags_add' => 'הוסף תגית נוספת', + 'tags_remove' => 'Remove this tag', + 'attachments' => 'קבצים מצורפים', + 'attachments_explain' => 'צרף קבצים או קישורים על מנת להציגם בדף שלך. צירופים אלו יהיו זמינים בתפריט הצדדי של הדף', + 'attachments_explain_instant_save' => 'שינויים נשמרים באופן מיידי', + 'attachments_items' => 'פריטים שצורפו', + 'attachments_upload' => 'העלה קובץ', + 'attachments_link' => 'צרף קישור', + 'attachments_set_link' => 'הגדר קישור', + 'attachments_delete_confirm' => 'יש ללחוץ שוב על מחיקה על מנת לאשר את מחיקת הקובץ המצורף', + 'attachments_dropzone' => 'גרור לכאן קבצים או לחץ על מנת לצרף קבצים', + 'attachments_no_files' => 'לא הועלו קבצים', + 'attachments_explain_link' => 'ניתן לצרף קישור במקום העלאת קובץ, קישור זה יכול להוביל לדף אחר או לכל קובץ באינטרנט', + 'attachments_link_name' => 'שם הקישור', + 'attachment_link' => 'כתובת הקישור', + 'attachments_link_url' => 'קישור לקובץ', + 'attachments_link_url_hint' => 'כתובת האתר או הקובץ', + 'attach' => 'צרף', + 'attachments_edit_file' => 'ערוך קובץ', + 'attachments_edit_file_name' => 'שם הקובץ', + 'attachments_edit_drop_upload' => 'גרור קבצים או לחץ כאן על מנת להעלות קבצים במקום הקבצים הקיימים', + 'attachments_order_updated' => 'סדר הקבצים עודכן', + 'attachments_updated_success' => 'פרטי הקבצים עודכנו', + 'attachments_deleted' => 'קובץ מצורף הוסר', + 'attachments_file_uploaded' => 'הקובץ עלה בהצלחה', + 'attachments_file_updated' => 'הקובץ עודכן בהצלחה', + 'attachments_link_attached' => 'הקישור צורף לדף בהצלחה', + 'templates' => 'Templates', + 'templates_set_as_template' => 'Page is a template', + 'templates_explain_set_as_template' => 'You can set this page as a template so its contents be utilized when creating other pages. Other users will be able to use this template if they have view permissions for this page.', + 'templates_replace_content' => 'Replace page content', + 'templates_append_content' => 'Append to page content', + 'templates_prepend_content' => 'Prepend to page content', + + // Profile View + 'profile_user_for_x' => 'משתמש במערכת כ :time', + 'profile_created_content' => 'תוכן שנוצר', + 'profile_not_created_pages' => 'המשתמש :userName לא יצר דפים', + 'profile_not_created_chapters' => 'המשתמש :userName לא יצר פרקים', + 'profile_not_created_books' => 'המשתמש :userName לא יצר ספרים', + 'profile_not_created_shelves' => 'המשתמש :userName לא יצר מדפים', + + // Comments + 'comment' => 'תגובה', + 'comments' => 'תגובות', + 'comment_add' => 'הוסף תגובה', + 'comment_placeholder' => 'השאר תגובה כאן', + 'comment_count' => '{0} אין תגובות|{1} 1 תגובה|[2,*] :count תגובות', + 'comment_save' => 'שמור תגובה', + 'comment_saving' => 'שומר תגובה...', + 'comment_deleting' => 'מוחק תגובה...', + 'comment_new' => 'תגובה חדשה', + 'comment_created' => 'הוגב :createDiff', + 'comment_updated' => 'עודכן :updateDiff על ידי :username', + 'comment_deleted_success' => 'התגובה נמחקה', + 'comment_created_success' => 'התגובה נוספה', + 'comment_updated_success' => 'התגובה עודכנה', + 'comment_delete_confirm' => 'האם ברצונך למחוק תגובה זו?', + 'comment_in_reply_to' => 'בתגובה ל :commentId', + + // Revision + 'revision_delete_confirm' => 'האם ברצונך למחוק נוסח זה?', + 'revision_restore_confirm' => 'האם ברצונך לשחזר נוסח זה? תוכן הדף הנוכחי יעודכן לנוסח זה.', + 'revision_delete_success' => 'נוסח נמחק', + 'revision_cannot_delete_latest' => 'לא ניתן למחוק את הנוסח האחרון' +]; \ No newline at end of file diff --git a/resources/lang/he/errors.php b/resources/lang/he/errors.php new file mode 100644 index 000000000..9920f1b98 --- /dev/null +++ b/resources/lang/he/errors.php @@ -0,0 +1,103 @@ + 'אין לך הרשאות על מנת לצפות בדף המבוקש.', + 'permissionJson' => 'אין לך הרשאות על מנת לבצע את הפעולה המבוקשת.', + + // Auth + 'error_user_exists_different_creds' => 'משתמש עם המייל :email כבר קיים אך עם פרטי הזדהות שונים', + 'email_already_confirmed' => 'המייל כבר אומת, אנא נסה להתחבר', + 'email_confirmation_invalid' => 'מפתח האימות אינו תקין או שכבר נעשה בו שימוש, אנא נסה להרשם שנית', + 'email_confirmation_expired' => 'מפתח האימות פג-תוקף, מייל אימות חדש נשלח שוב.', + 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed', + 'ldap_fail_anonymous' => 'LDAP access failed using anonymous bind', + 'ldap_fail_authed' => 'LDAP access failed using given dn & password details', + 'ldap_extension_not_installed' => 'LDAP PHP extension not installed', + 'ldap_cannot_connect' => 'Cannot connect to ldap server, Initial connection failed', + 'saml_already_logged_in' => 'Already logged in', + 'saml_user_not_registered' => 'The user :name is not registered and automatic registration is disabled', + 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system', + 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.', + 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization', + 'social_no_action_defined' => 'לא הוגדרה פעולה', + 'social_login_bad_response' => "Error received during :socialAccount login: \n:error", + 'social_account_in_use' => 'החשבון :socialAccount כבר בשימוש. אנא נסה להתחבר באמצעות אפשרות :socialAccount', + 'social_account_email_in_use' => 'המייל :email כבר נמצא בשימוש. אם כבר יש ברשותך חשבון ניתן להתחבר באמצעות :socialAccount ממסך הגדרות הפרופיל שלך.', + 'social_account_existing' => 'ה - :socialAccount כבר מחובר לחשבון שלך.', + 'social_account_already_used_existing' => 'This :socialAccount account is already used by another user.', + 'social_account_not_used' => 'החשבון :socialAccount אינו מחובר למשתמש כלשהוא. אנא חבר אותו לחשבונך במסך הגדרות הפרופיל שלך.', + 'social_account_register_instructions' => 'אם אין ברשותך חשבון, תוכל להרשם באמצעות :socialAccount', + 'social_driver_not_found' => 'Social driver not found', + 'social_driver_not_configured' => 'הגדרות ה :socialAccount אינן מוגדרות כראוי', + 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.', + + // System + 'path_not_writable' => 'לא ניתן להעלות את :filePath אנא ודא שניתן לכתוב למיקום זה', + 'cannot_get_image_from_url' => 'לא ניתן לקבל תמונה מ :url', + 'cannot_create_thumbs' => 'The server cannot create thumbnails. Please check you have the GD PHP extension installed.', + 'server_upload_limit' => 'השרת אינו מרשה העלאת קבצים במשקל זה. אנא נסה להעלות קובץ קטן יותר.', + 'uploaded' => 'השרת אינו מרשה העלאת קבצים במשקל זה. אנא נסה להעלות קובץ קטן יותר.', + 'image_upload_error' => 'התרחשה שגיאה במהלך העלאת התמונה', + 'image_upload_type_error' => 'התמונה שהועלתה אינה תקינה', + 'file_upload_timeout' => 'The file upload has timed out.', + + // Attachments + 'attachment_page_mismatch' => 'Page mismatch during attachment update', + 'attachment_not_found' => 'קובץ מצורף לא נמצא', + + // Pages + 'page_draft_autosave_fail' => 'שגיאה בשמירת הטיוטה. אנא ודא כי חיבור האינטרנט תקין לפני שמירת דף זה.', + 'page_custom_home_deletion' => 'לא ניתן למחוק דף אשר מוגדר כדף הבית', + + // Entities + 'entity_not_found' => 'פריט לא נמצא', + 'bookshelf_not_found' => 'מדף הספרים לא נמצא', + 'book_not_found' => 'ספר לא נמצא', + 'page_not_found' => 'דף לא נמצא', + 'chapter_not_found' => 'פרק לא נמצא', + 'selected_book_not_found' => 'הספר שנבחר לא נמצא', + 'selected_book_chapter_not_found' => 'הפרק או הספר שנבחר לא נמצאו', + 'guests_cannot_save_drafts' => 'אורחים אינם יכולים לשמור סקיצות', + + // Users + 'users_cannot_delete_only_admin' => 'אינך יכול למחוק את המנהל היחיד', + 'users_cannot_delete_guest' => 'אינך יכול למחוק את משתמש האורח', + + // Roles + 'role_cannot_be_edited' => 'לא ניתן לערוך תפקיד זה', + 'role_system_cannot_be_deleted' => 'תפקיד זה הינו תפקיד מערכת ולא ניתן למחיקה', + 'role_registration_default_cannot_delete' => 'לא ניתן למחוק תפקיד זה מכיוון שהוא מוגדר כתפקיד ברירת המחדל בעת הרשמה', + 'role_cannot_remove_only_admin' => 'משתמש זה הינו המשתמש היחיד המשוייך לפקיד המנהל. נסה לשייך את תפקיד המנהל למשתמש נוסף לפני הסרה כאן', + + // Comments + 'comment_list' => 'התרחשה שגיאה בעת שליפת התגובות', + 'cannot_add_comment_to_draft' => 'אינך יכול להוסיף תגובות לסקיצה זו', + 'comment_add' => 'התרחשה שגיאה בעת הוספה / עדכון התגובה', + 'comment_delete' => 'התרחשה שגיאה בעת מחיקת התגובה', + 'empty_comment' => 'לא ניתן להוסיף תגובה ריקה', + + // Error pages + '404_page_not_found' => 'דף לא קיים', + 'sorry_page_not_found' => 'מצטערים, הדף שחיפשת אינו קיים', + 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.', + 'return_home' => 'בחזרה לדף הבית', + 'error_occurred' => 'התרחשה שגיאה', + 'app_down' => ':appName כרגע אינו זמין', + 'back_soon' => 'מקווים שיחזור במהרה', + + // API errors + 'api_no_authorization_found' => 'No authorization token found on the request', + 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect', + 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token', + 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect', + 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls', + 'api_user_token_expired' => 'The authorization token used has expired', + + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Error thrown when sending a test email:', + +]; diff --git a/resources/lang/he/pagination.php b/resources/lang/he/pagination.php new file mode 100644 index 000000000..8f7c5c475 --- /dev/null +++ b/resources/lang/he/pagination.php @@ -0,0 +1,12 @@ + '« הקודם', + 'next' => 'הבא »', + +]; diff --git a/resources/lang/he/passwords.php b/resources/lang/he/passwords.php new file mode 100644 index 000000000..9ada7bcbf --- /dev/null +++ b/resources/lang/he/passwords.php @@ -0,0 +1,15 @@ + 'הסיסמא חייבת להיות בעלת 6 תווים ולהתאים לאימות', + 'user' => "לא ניתן למצוא משתמש עם המייל שסופק", + 'token' => 'איפוס הסיסמא אינו תקין', + 'sent' => 'נשלח אליך אי-מייל עם קישור לאיפוס הסיסמא', + 'reset' => 'איפוס הסיסמא הושלם בהצלחה!', + +]; diff --git a/resources/lang/he/settings.php b/resources/lang/he/settings.php new file mode 100755 index 000000000..103f9398d --- /dev/null +++ b/resources/lang/he/settings.php @@ -0,0 +1,213 @@ + 'הגדרות', + 'settings_save' => 'שמור הגדרות', + 'settings_save_success' => 'ההגדרות נשמרו', + + // App Settings + 'app_customization' => 'התאמה אישית', + 'app_features_security' => 'מאפיינים ואבטחה', + 'app_name' => 'שם היישום', + 'app_name_desc' => 'השם הזה יופיע בכותרת ובכל אי-מייל הנשלח מהמערכת', + 'app_name_header' => 'הצג שם בחלק העליון', + 'app_public_access' => 'גישה ציבורית', + 'app_public_access_desc' => 'הפעלת אפשרות זו תאפשר למשתמשים אשר אינם רשומים לגשת לתוכן שלך', + 'app_public_access_desc_guest' => 'הגדרות הרשאה למשתמשים ציבוריים ניתנות לשינוי דרך משתמש מסוג ״אורח״', + 'app_public_access_toggle' => 'אפשר גישה ציבורית', + 'app_public_viewing' => 'לאפשר גישה ציבורית?', + 'app_secure_images' => 'העלאת תמונות מאובטחת', + 'app_secure_images_toggle' => 'אפשר העלאת תמונות מאובטחת', + 'app_secure_images_desc' => 'משיקולי ביצועים, כל התמונות הינן ציבוריות. אפשרות זו מוסיפה מחרוזת אקראית שקשה לנחש לכל כתובת של תמונה. אנא ודא שאפשרות הצגת תוכן התיקייה מבוטל.', + 'app_editor' => 'עורך הדפים', + 'app_editor_desc' => 'בחר באמצעות איזה עורך תתבצע עריכת הדפים', + 'app_custom_html' => 'HTML מותאם אישית לחלק העליון', + 'app_custom_html_desc' => 'כל קוד שיתווסף כאן, יופיע בתחתית תגית ה head של כל דף. חלק זה שימושי על מנת להגדיר עיצובי CSS והתקנת קוד Analytics', + 'app_custom_html_disabled_notice' => 'קוד HTML מותאם מבוטל בדף ההגדרות על מנת לוודא ששינויים שגורמים לבעיה יוכלו להיות מבוטלים לאחר מכן', + 'app_logo' => 'לוגו היישום', + 'app_logo_desc' => 'תמונה זו צריכה להיות בגובה 43 פיקסלים. תמונות גדולות יותר יוקטנו.', + 'app_primary_color' => 'צבע עיקרי ליישום', + 'app_primary_color_desc' => 'ערך זה צריך להיות מסוג hex.
יש להשאיר ריק לשימוש בצבע ברירת המחדל', + 'app_homepage' => 'דף הבית של היישום', + 'app_homepage_desc' => 'אנא בחר דף להצגה בדף הבית במקום דף ברירת המחדל. הרשאות הדף לא יחולו בדפים הנבחרים.', + 'app_homepage_select' => 'בחר דף', + 'app_disable_comments' => 'ביטול תגובות', + 'app_disable_comments_toggle' => 'בטל תגובות', + 'app_disable_comments_desc' => 'מבטל את התגובות לאורך כל היישום, תגובות קיימות לא יוצגו.', + + // Color settings + 'content_colors' => 'Content Colors', + 'content_colors_desc' => 'Sets colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.', + 'bookshelf_color' => 'Shelf Color', + 'book_color' => 'Book Color', + 'chapter_color' => 'Chapter Color', + 'page_color' => 'Page Color', + 'page_draft_color' => 'Page Draft Color', + + // Registration Settings + 'reg_settings' => 'הרשמה', + 'reg_enable' => 'אפשר הרשמה', + 'reg_enable_toggle' => 'אפשר להרשם', + 'reg_enable_desc' => 'כאשר אפשר להרשם משתמשים יוכלו להכנס באופן עצמאי. בעת ההרשמה המשתמש יקבל הרשאה יחידה כברירת מחדל.', + 'reg_default_role' => 'הרשאה כברירת מחדל', + 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.', + 'reg_email_confirmation' => 'אימות כתובת אי-מייל', + 'reg_email_confirmation_toggle' => 'יש לאמת את כתובת המייל', + 'reg_confirm_email_desc' => 'אם מופעלת הגבלה לדומיין ספציפי אז אימות המייל לא יבוצע', + 'reg_confirm_restrict_domain' => 'הגבלה לדומיין ספציפי', + 'reg_confirm_restrict_domain_desc' => 'הכנס דומיינים מופרדים בפסיק אשר עבורם תוגבל ההרשמה. משתמשים יקבלו אי-מייל על מנת לאמת את כתובת המייל שלהם.
לתשומת לבך: משתמש יוכל לשנות את כתובת המייל שלו לאחר ההרשמה', + 'reg_confirm_restrict_domain_placeholder' => 'אין הגבלה לדומיין', + + // Maintenance settings + 'maint' => 'תחזוקה', + 'maint_image_cleanup' => 'ניקוי תמונות', + 'maint_image_cleanup_desc' => "סורק את הדפים והגרסאות על מנת למצוא אילו תמונות לא בשימוש. יש לוודא גיבוי מלא של מסד הנתונים והתמונות לפני הרצה", + 'maint_image_cleanup_ignore_revisions' => 'התעלם מהתמונות בגרסאות', + 'maint_image_cleanup_run' => 'הפעל ניקוי תמונות', + 'maint_image_cleanup_warning' => 'נמצאו כ :count תמונות אשר לא בשימוש האם ברצונך להמשיך?', + 'maint_image_cleanup_success' => ':count תמונות שלא בשימוש נמחקו', + 'maint_image_cleanup_nothing_found' => 'לא נמצאו תמונות אשר לא בשימוש, לא נמחקו קבצים כלל.', + 'maint_send_test_email' => 'Send a Test Email', + 'maint_send_test_email_desc' => 'This sends a test email to your email address specified in your profile.', + 'maint_send_test_email_run' => 'Send test email', + 'maint_send_test_email_success' => 'Email sent to :address', + 'maint_send_test_email_mail_subject' => 'Test Email', + 'maint_send_test_email_mail_greeting' => 'Email delivery seems to work!', + 'maint_send_test_email_mail_text' => 'Congratulations! As you received this email notification, your email settings seem to be configured properly.', + + // Role Settings + 'roles' => 'תפקידים', + 'role_user_roles' => 'תפקידי משתמשים', + 'role_create' => 'צור תפקיד משתמש חדש', + 'role_create_success' => 'התפקיד נוצר בהצלחה', + 'role_delete' => 'מחק תפקיד', + 'role_delete_confirm' => 'פעולה זו תמחק את התפקיד: :roleName', + 'role_delete_users_assigned' => 'לתפקיד :userCount יש משתמשים אשר משויכים אליו. אם ברצונך להעבירם לתפקיד אחר אנא בחר תפקיד מלמטה', + 'role_delete_no_migration' => "אל תעביר משתמשים לתפקיד", + 'role_delete_sure' => 'האם אתה בטוח שברצונך למחוק את התפקיד?', + 'role_delete_success' => 'התפקיד נמחק בהצלחה', + 'role_edit' => 'ערוך תפקיד', + 'role_details' => 'פרטי תפקיד', + 'role_name' => 'שם התפקיד', + 'role_desc' => 'תיאור קצר של התפקיד', + 'role_external_auth_id' => 'External Authentication IDs', + 'role_system' => 'הרשאות מערכת', + 'role_manage_users' => 'ניהול משתמשים', + 'role_manage_roles' => 'ניהול תפקידים והרשאות תפקידים', + 'role_manage_entity_permissions' => 'נהל הרשאות ספרים, פרקים ודפים', + 'role_manage_own_entity_permissions' => 'נהל הרשאות על ספרים, פרקים ודפים בבעלותך', + 'role_manage_page_templates' => 'Manage page templates', + 'role_access_api' => 'Access system API', + 'role_manage_settings' => 'ניהול הגדרות יישום', + 'role_asset' => 'הרשאות משאבים', + 'role_asset_desc' => 'הרשאות אלו שולטות בגישת ברירת המחדל למשאבים בתוך המערכת. הרשאות של ספרים, פרקים ודפים יגברו על הרשאות אלו.', + 'role_asset_admins' => 'מנהלים מקבלים הרשאה מלאה לכל התוכן אך אפשרויות אלו עלולות להציג או להסתיר אפשרויות בממשק', + 'role_all' => 'הכל', + 'role_own' => 'שלי', + 'role_controlled_by_asset' => 'נשלטים על ידי המשאב אליו הועלו', + 'role_save' => 'שמור תפקיד', + 'role_update_success' => 'התפקיד עודכן בהצלחה', + 'role_users' => 'משתמשים משוייכים לתפקיד זה', + 'role_users_none' => 'אין משתמשים המשוייכים לתפקיד זה', + + // Users + 'users' => 'משתמשים', + 'user_profile' => 'פרופיל משתמש', + 'users_add_new' => 'הוסף משתמש חדש', + 'users_search' => 'חפש משתמשים', + 'users_details' => 'פרטי משתמש', + 'users_details_desc' => 'הגדר שם לתצוגה ומייל עבור משתמש זה. כתובת המייל תשמש על מנת להתחבר למערכת', + 'users_details_desc_no_email' => 'הגדר שם לתצוגה כדי שאחרים יוכלו לזהות', + 'users_role' => 'תפקידי משתמשים', + 'users_role_desc' => 'בחר אילו תפקידים ישויכו למשתמש זה. אם המשתמש משוייך למספר תפקידים, ההרשאות יהיו כלל ההרשאות של כל התפקידים', + 'users_password' => 'סיסמא', + 'users_password_desc' => 'הגדר סיסמא עבור גישה למערכת. על הסיסמא להיות באורך של 5 תווים לפחות', + 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.', + 'users_send_invite_option' => 'Send user invite email', + 'users_external_auth_id' => 'זיהוי חיצוני - ID', + 'users_external_auth_id_desc' => 'זיהוי זה יהיה בשימוש מול מערכת ה LDAP שלך', + 'users_password_warning' => 'יש למלא רק אם ברצונך לשנות את הסיסמא.', + 'users_system_public' => 'משתמש זה מייצג את כל האורחים שלא מזוהים אשר משתמשים במערכת. לא ניתן להתחבר למשתמש זה אך הוא מוגדר כברירת מחדל', + 'users_delete' => 'מחק משתמש', + 'users_delete_named' => 'מחק משתמש :userName', + 'users_delete_warning' => 'פעולה זו תמחק את המשתמש \':userName\' מהמערכת', + 'users_delete_confirm' => 'האם ברצונך למחוק משתמש זה?', + 'users_delete_success' => 'המשתמש נמחק בהצלחה', + 'users_edit' => 'עריכת משתמש', + 'users_edit_profile' => 'עריכת פרופיל', + 'users_edit_success' => 'המשתמש עודכן בהצלחה', + 'users_avatar' => 'תמונת משתמש', + 'users_avatar_desc' => 'בחר תמונה אשר תייצג את המשתמש. על התמונה להיות ריבוע של 256px', + 'users_preferred_language' => 'שפה מועדפת', + 'users_preferred_language_desc' => 'אפשרות זו תשנע את השפה אשר מוצגת בממשק המערכת. פעולה זו לא תשנה את התוכן אשר נכתב על ידי המשתמשים.', + 'users_social_accounts' => 'רשתות חברתיות', + 'users_social_accounts_info' => 'כן ניתן לשייך חשבונות אחרים שלך לחיבור וזיהוי קל ומהיר. ניתוק חשבון אינו מנתק גישה קיימת למערכת. לביצוע ניתוק יש לשנות את ההגדרה בהגדרות של חשבון הרשת החברתית', + 'users_social_connect' => 'חיבור החשבון', + 'users_social_disconnect' => 'ניתוק חשבון', + 'users_social_connected' => 'חשבון :socialAccount חובר בהצלחה לחשבון שלך', + 'users_social_disconnected' => ':socialAccount נותק בהצלחה מהחשבון שלך', + 'users_api_tokens' => 'API Tokens', + 'users_api_tokens_none' => 'No API tokens have been created for this user', + 'users_api_tokens_create' => 'Create Token', + 'users_api_tokens_expires' => 'Expires', + 'users_api_tokens_docs' => 'API Documentation', + + // API Tokens + 'user_api_token_create' => 'Create API Token', + 'user_api_token_name' => 'Name', + 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.', + 'user_api_token_expiry' => 'Expiry Date', + 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.', + 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.', + 'user_api_token_create_success' => 'API token successfully created', + 'user_api_token_update_success' => 'API token successfully updated', + 'user_api_token' => 'API Token', + 'user_api_token_id' => 'Token ID', + 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.', + 'user_api_token_secret' => 'Token Secret', + 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.', + 'user_api_token_created' => 'Token Created :timeAgo', + 'user_api_token_updated' => 'Token Updated :timeAgo', + 'user_api_token_delete' => 'Delete Token', + 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.', + 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?', + 'user_api_token_delete_success' => 'API token successfully deleted', + + //! If editing translations files directly please ignore this in all + //! languages apart from en. Content will be auto-copied from en. + //!//////////////////////////////// + 'language_select' => [ + 'en' => 'English', + 'ar' => 'العربية', + 'cs' => 'Česky', + 'da' => 'Dansk', + 'de' => 'Deutsch (Sie)', + 'de_informal' => 'Deutsch (Du)', + 'es' => 'Español', + 'es_AR' => 'Español Argentina', + 'fr' => 'Français', + 'hu' => 'Magyar', + 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', + 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', + 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', + 'zh_CN' => '简体中文', + 'zh_TW' => '繁體中文', + ] + //!//////////////////////////////// +]; diff --git a/resources/lang/he/validation.php b/resources/lang/he/validation.php new file mode 100644 index 000000000..2797a9c21 --- /dev/null +++ b/resources/lang/he/validation.php @@ -0,0 +1,114 @@ + 'שדה :attribute חייב להיות מסומן.', + 'active_url' => 'שדה :attribute הוא לא כתובת אתר תקנית.', + 'after' => 'שדה :attribute חייב להיות תאריך אחרי :date.', + 'alpha' => 'שדה :attribute יכול להכיל אותיות בלבד.', + 'alpha_dash' => 'שדה :attribute יכול להכיל אותיות, מספרים ומקפים בלבד.', + 'alpha_num' => 'שדה :attribute יכול להכיל אותיות ומספרים בלבד.', + 'array' => 'שדה :attribute חייב להיות מערך.', + 'before' => 'שדה :attribute חייב להיות תאריך לפני :date.', + 'between' => [ + 'numeric' => 'שדה :attribute חייב להיות בין :min ל-:max.', + 'file' => 'שדה :attribute חייב להיות בין :min ל-:max קילובייטים.', + 'string' => 'שדה :attribute חייב להיות בין :min ל-:max תווים.', + 'array' => 'שדה :attribute חייב להיות בין :min ל-:max פריטים.', + ], + 'boolean' => 'שדה :attribute חייב להיות אמת או שקר.', + 'confirmed' => 'שדה האישור של :attribute לא תואם.', + 'date' => 'שדה :attribute אינו תאריך תקני.', + 'date_format' => 'שדה :attribute לא תואם את הפורמט :format.', + 'different' => 'שדה :attribute ושדה :other חייבים להיות שונים.', + 'digits' => 'שדה :attribute חייב להיות בעל :digits ספרות.', + 'digits_between' => 'שדה :attribute חייב להיות בין :min ו-:max ספרות.', + 'email' => 'שדה :attribute חייב להיות כתובת אימייל תקנית.', + 'ends_with' => 'The :attribute must end with one of the following: :values', + 'filled' => 'שדה :attribute הוא חובה.', + 'gt' => [ + 'numeric' => 'The :attribute must be greater than :value.', + 'file' => 'The :attribute must be greater than :value kilobytes.', + 'string' => 'The :attribute must be greater than :value characters.', + 'array' => 'The :attribute must have more than :value items.', + ], + 'gte' => [ + 'numeric' => 'The :attribute must be greater than or equal :value.', + 'file' => 'The :attribute must be greater than or equal :value kilobytes.', + 'string' => 'The :attribute must be greater than or equal :value characters.', + 'array' => 'The :attribute must have :value items or more.', + ], + 'exists' => 'בחירת ה-:attribute אינה תקפה.', + 'image' => 'שדה :attribute חייב להיות תמונה.', + 'image_extension' => 'שדה :attribute חייב להיות מסוג תמונה נתמך', + 'in' => 'בחירת ה-:attribute אינה תקפה.', + 'integer' => 'שדה :attribute חייב להיות מספר שלם.', + 'ip' => 'שדה :attribute חייב להיות כתובת IP תקנית.', + 'ipv4' => 'The :attribute must be a valid IPv4 address.', + 'ipv6' => 'The :attribute must be a valid IPv6 address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'lt' => [ + 'numeric' => 'The :attribute must be less than :value.', + 'file' => 'The :attribute must be less than :value kilobytes.', + 'string' => 'The :attribute must be less than :value characters.', + 'array' => 'The :attribute must have less than :value items.', + ], + 'lte' => [ + 'numeric' => 'The :attribute must be less than or equal :value.', + 'file' => 'The :attribute must be less than or equal :value kilobytes.', + 'string' => 'The :attribute must be less than or equal :value characters.', + 'array' => 'The :attribute must not have more than :value items.', + ], + 'max' => [ + 'numeric' => 'שדה :attribute אינו יכול להיות גדול מ-:max.', + 'file' => 'שדה :attribute לא יכול להיות גדול מ-:max קילובייטים.', + 'string' => 'שדה :attribute לא יכול להיות גדול מ-:max characters.', + 'array' => 'שדה :attribute לא יכול להכיל יותר מ-:max פריטים.', + ], + 'mimes' => 'שדה :attribute צריך להיות קובץ מסוג: :values.', + 'min' => [ + 'numeric' => 'שדה :attribute חייב להיות לפחות :min.', + 'file' => 'שדה :attribute חייב להיות לפחות :min קילובייטים.', + 'string' => 'שדה :attribute חייב להיות לפחות :min תווים.', + 'array' => 'שדה :attribute חייב להיות לפחות :min פריטים.', + ], + 'no_double_extension' => 'השדה :attribute חייב להיות בעל סיומת קובץ אחת בלבד.', + 'not_in' => 'בחירת ה-:attribute אינה תקפה.', + 'not_regex' => 'The :attribute format is invalid.', + 'numeric' => 'שדה :attribute חייב להיות מספר.', + 'regex' => 'שדה :attribute בעל פורמט שאינו תקין.', + 'required' => 'שדה :attribute הוא חובה.', + 'required_if' => 'שדה :attribute נחוץ כאשר :other הוא :value.', + 'required_with' => 'שדה :attribute נחוץ כאשר :values נמצא.', + 'required_with_all' => 'שדה :attribute נחוץ כאשר :values נמצא.', + 'required_without' => 'שדה :attribute נחוץ כאשר :values לא בנמצא.', + 'required_without_all' => 'שדה :attribute נחוץ כאשר אף אחד מ-:values נמצאים.', + 'same' => 'שדה :attribute ו-:other חייבים להיות זהים.', + 'size' => [ + 'numeric' => 'שדה :attribute חייב להיות :size.', + 'file' => 'שדה :attribute חייב להיות :size קילובייטים.', + 'string' => 'שדה :attribute חייב להיות :size תווים.', + 'array' => 'שדה :attribute חייב להכיל :size פריטים.', + ], + 'string' => 'שדה :attribute חייב להיות מחרוזת.', + 'timezone' => 'שדה :attribute חייב להיות איזור תקני.', + 'unique' => 'שדה :attribute כבר תפוס.', + 'url' => 'שדה :attribute בעל פורמט שאינו תקין.', + 'uploaded' => 'שדה :attribute ארעה שגיאה בעת ההעלאה.', + + // Custom validation lines + 'custom' => [ + 'password-confirm' => [ + 'required_with' => 'נדרש אימות סיסמא', + ], + ], + + // Custom validation attributes + 'attributes' => [], +]; diff --git a/resources/lang/hu/errors.php b/resources/lang/hu/errors.php index c901e5423..668e57783 100644 --- a/resources/lang/hu/errors.php +++ b/resources/lang/hu/errors.php @@ -83,6 +83,7 @@ return [ // Error pages '404_page_not_found' => 'Oldal nem található', 'sorry_page_not_found' => 'Sajnáljuk, a keresett oldal nem található.', + 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.', 'return_home' => 'Vissza a kezdőlapra', 'error_occurred' => 'Hiba örtént', 'app_down' => ':appName jelenleg nem üzemel', @@ -96,4 +97,7 @@ return [ 'api_user_no_api_permission' => 'A használt API vezérjel tulajdonosának nincs jogosultsága API hívások végrehajtásához', 'api_user_token_expired' => 'A használt hitelesítési vezérjel lejárt', + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Hiba történt egy teszt email küldésekor:', + ]; diff --git a/resources/lang/hu/settings.php b/resources/lang/hu/settings.php index 1462fee5d..8a87db85a 100644 --- a/resources/lang/hu/settings.php +++ b/resources/lang/hu/settings.php @@ -56,7 +56,7 @@ return [ 'reg_enable_toggle' => 'Regisztráció engedélyezése', 'reg_enable_desc' => 'Ha a regisztráció engedélyezett, akkor a felhasználó képes lesz bejelentkezni mint az alkalmazás egy felhasználója. Regisztráció után egy egyszerű, alapértelmezés szerinti felhasználói szerepkör lesz hozzárendelve.', 'reg_default_role' => 'Regisztráció utáni alapértelmezett felhasználói szerepkör', - 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.', + 'reg_enable_external_warning' => 'A fenti beállítási lehetőség nincs használatban, ha külső LDAP vagy SAML hitelesítés aktív. A nem létező tagok felhasználói fiókjai automatikusan létrejönnek ha a használatban lévő külső rendszeren sikeres a hitelesítés.', 'reg_email_confirmation' => 'Email megerősítés', 'reg_email_confirmation_toggle' => 'Email megerősítés szükséges', 'reg_confirm_email_desc' => 'Ha a tartomány korlátozás be van állítva, akkor email megerősítés szükséges és ez a beállítás figyelmen kívül lesz hagyva.', @@ -131,7 +131,7 @@ return [ 'users_send_invite_text' => 'Lehetséges egy meghívó emailt küldeni ennek a felhasználónak ami lehetővé teszi, hogy beállíthassa a saját jelszavát. Máskülönben a jelszót az erre jogosult felhasználónak kell beállítania.', 'users_send_invite_option' => 'Felhasználó meghívó levél küldése', 'users_external_auth_id' => 'Külső hitelesítés azonosítója', - 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.', + 'users_external_auth_id_desc' => 'Ez az azonosító lesz használva a felhasználó ellenőrzéséhez mikor a külső hitelesítő rendszerrel kommunikál.', 'users_password_warning' => 'A lenti mezőket csak a jelszó módosításához kell kitölteni.', 'users_system_public' => 'Ez a felhasználó bármelyik, a példányt megtekintő felhasználót képviseli. Nem lehet vele bejelentkezni de automatikusan hozzá lesz rendelve.', 'users_delete' => 'Felhasználó törlése', @@ -170,7 +170,7 @@ return [ 'user_api_token' => 'API vezérjel', 'user_api_token_id' => 'Vezérjel azonosító', 'user_api_token_id_desc' => 'Ez egy nem szerkeszthető, a rendszer által létrehozott azonosító ehhez a vezérjelhez amire API kérésekben lehet szükség.', - 'user_api_token_secret' => 'Token Secret', + 'user_api_token_secret' => 'Vezérjel titkos kódja', 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.', 'user_api_token_created' => 'Vezérjel létrehozva :timeAgo', 'user_api_token_updated' => 'Vezérjel frissítve :timeAgo', @@ -185,27 +185,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => 'Dansk', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/it/errors.php b/resources/lang/it/errors.php index 977f26e19..ca605cde0 100755 --- a/resources/lang/it/errors.php +++ b/resources/lang/it/errors.php @@ -13,7 +13,7 @@ return [ 'email_already_confirmed' => 'La mail è già stata confermata, esegui il login.', 'email_confirmation_invalid' => 'Questo token di conferma non è valido o già stato utilizzato, registrati nuovamente.', 'email_confirmation_expired' => 'Il token di conferma è scaduto, è stata inviata una nuova mail di conferma.', - 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed', + 'email_confirmation_awaiting' => 'L\'indirizzo email per l\'account in uso deve essere confermato', 'ldap_fail_anonymous' => 'Accesso LDAP fallito usando bind anonimo', 'ldap_fail_authed' => 'Accesso LDAP fallito usando il dn e la password inseriti', 'ldap_extension_not_installed' => 'L\'estensione PHP LDAP non è installata', @@ -83,6 +83,7 @@ return [ // Error pages '404_page_not_found' => 'Pagina Non Trovata', 'sorry_page_not_found' => 'La pagina che stavi cercando non è stata trovata.', + 'sorry_page_not_found_permission_warning' => 'Se pensi che questa pagina possa esistere, potresti non avere i permessi per visualizzarla.', 'return_home' => 'Ritorna alla home', 'error_occurred' => 'C\'è Stato un errore', 'app_down' => ':appName è offline', @@ -90,10 +91,13 @@ return [ // API errors 'api_no_authorization_found' => 'No authorization token found on the request', - 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect', + 'api_bad_authorization_format' => 'Un token di autorizzazione è stato trovato nella richiesta, ma il formato sembra non corretto', 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token', 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect', - 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls', + 'api_user_no_api_permission' => 'Il proprietario del token API utilizzato non ha il permesso di effettuare chiamate API', 'api_user_token_expired' => 'The authorization token used has expired', + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Error thrown when sending a test email:', + ]; diff --git a/resources/lang/it/settings.php b/resources/lang/it/settings.php index 3a1779f95..d4fb0b9c6 100755 --- a/resources/lang/it/settings.php +++ b/resources/lang/it/settings.php @@ -160,9 +160,9 @@ return [ // API Tokens 'user_api_token_create' => 'Create API Token', - 'user_api_token_name' => 'Name', + 'user_api_token_name' => 'Nome', 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.', - 'user_api_token_expiry' => 'Expiry Date', + 'user_api_token_expiry' => 'Data di scadenza', 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.', 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.', 'user_api_token_create_success' => 'API token successfully created', @@ -185,27 +185,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', - 'da' => 'Dansk', + 'cs' => 'Česky', + 'da' => 'Danese', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Sloveno', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/ja/components.php b/resources/lang/ja/components.php index 65e8a7a79..7cc560b43 100644 --- a/resources/lang/ja/components.php +++ b/resources/lang/ja/components.php @@ -16,17 +16,17 @@ return [ 'image_image_name' => '画像名', 'image_delete_used' => 'この画像は以下のページで利用されています。', 'image_delete_confirm' => '削除してもよろしければ、再度ボタンを押して下さい。', - 'image_select_image' => '選択', + 'image_select_image' => '画像を選択', 'image_dropzone' => '画像をドロップするか、クリックしてアップロード', 'images_deleted' => '画像を削除しました', 'image_preview' => '画像プレビュー', 'image_upload_success' => '画像がアップロードされました', 'image_update_success' => '画像が更新されました', 'image_delete_success' => '画像が削除されました', - 'image_upload_remove' => 'Remove', + 'image_upload_remove' => '削除', // Code Editor - 'code_editor' => 'プログラムブロック編集', + 'code_editor' => 'コードを編集する', 'code_language' => 'プログラミング言語の選択', 'code_content' => 'プログラム内容', 'code_save' => 'プログラムを保存', diff --git a/resources/lang/ja/errors.php b/resources/lang/ja/errors.php index cd0dd777c..ace2f77bd 100644 --- a/resources/lang/ja/errors.php +++ b/resources/lang/ja/errors.php @@ -18,7 +18,7 @@ return [ 'ldap_fail_authed' => '識別名, パスワードを用いたLDAPアクセスに失敗しました', 'ldap_extension_not_installed' => 'LDAP PHP extensionがインストールされていません', 'ldap_cannot_connect' => 'LDAPサーバに接続できませんでした', - 'saml_already_logged_in' => 'Already logged in', + 'saml_already_logged_in' => '既にログインしています', 'saml_user_not_registered' => 'The user :name is not registered and automatic registration is disabled', 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system', 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.', @@ -36,7 +36,7 @@ return [ 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.', // System - 'path_not_writable' => 'ファイルパス :filePath へアップロードできませんでした。サーバ上での書き込みを許可してください。', + 'path_not_writable' => 'ファイルパス :filePath へアップロードできませんでした。サーバ上での書き込みが許可されているか確認してください。', 'cannot_get_image_from_url' => ':url から画像を取得できませんでした。', 'cannot_create_thumbs' => 'このサーバはサムネイルを作成できません。GD PHP extensionがインストールされていることを確認してください。', 'server_upload_limit' => 'このサイズの画像をアップロードすることは許可されていません。ファイルサイズを小さくし、再試行してください。', @@ -47,7 +47,7 @@ return [ // Attachments 'attachment_page_mismatch' => '添付を更新するページが一致しません', - 'attachment_not_found' => 'Attachment not found', + 'attachment_not_found' => '添付ファイルが見つかりません。', // Pages 'page_draft_autosave_fail' => '下書きの保存に失敗しました。インターネットへ接続してください。', @@ -75,7 +75,7 @@ return [ // Comments 'comment_list' => 'An error occurred while fetching the comments.', - 'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.', + 'cannot_add_comment_to_draft' => '下書きにコメントは追加できません。', 'comment_add' => 'An error occurred while adding / updating the comment.', 'comment_delete' => 'An error occurred while deleting the comment.', 'empty_comment' => 'Cannot add an empty comment.', @@ -83,6 +83,7 @@ return [ // Error pages '404_page_not_found' => 'ページが見つかりません', 'sorry_page_not_found' => 'ページを見つけることができませんでした。', + 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.', 'return_home' => 'ホームに戻る', 'error_occurred' => 'エラーが発生しました', 'app_down' => ':appNameは現在停止しています', @@ -94,6 +95,9 @@ return [ 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token', 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect', 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls', - 'api_user_token_expired' => 'The authorization token used has expired', + 'api_user_token_expired' => '認証トークンが期限切れです。', + + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Error thrown when sending a test email:', ]; diff --git a/resources/lang/ja/settings.php b/resources/lang/ja/settings.php index 5b1f31a05..3da916877 100644 --- a/resources/lang/ja/settings.php +++ b/resources/lang/ja/settings.php @@ -185,27 +185,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => 'Dansk', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/ko/errors.php b/resources/lang/ko/errors.php index 506baf5a6..a9e917e91 100644 --- a/resources/lang/ko/errors.php +++ b/resources/lang/ko/errors.php @@ -83,6 +83,7 @@ return [ // Error pages '404_page_not_found' => '404 Not Found', 'sorry_page_not_found' => '문서를 못 찾았습니다.', + 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.', 'return_home' => '처음으로 돌아가기', 'error_occurred' => '문제가 생겼습니다.', 'app_down' => ':appName에 문제가 있는 것 같습니다', @@ -96,4 +97,7 @@ return [ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls', 'api_user_token_expired' => 'The authorization token used has expired', + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Error thrown when sending a test email:', + ]; diff --git a/resources/lang/ko/settings.php b/resources/lang/ko/settings.php index 5523ee4d3..bd23e380f 100755 --- a/resources/lang/ko/settings.php +++ b/resources/lang/ko/settings.php @@ -185,27 +185,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => 'Dansk', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/nl/errors.php b/resources/lang/nl/errors.php index 7dd2bdaa5..dca27ca39 100644 --- a/resources/lang/nl/errors.php +++ b/resources/lang/nl/errors.php @@ -83,6 +83,7 @@ return [ // Error pages '404_page_not_found' => 'Pagina Niet Gevonden', 'sorry_page_not_found' => 'Sorry, de pagina die je zocht is niet beschikbaar.', + 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.', 'return_home' => 'Terug naar home', 'error_occurred' => 'Er Ging Iets Fout', 'app_down' => ':appName is nu niet beschikbaar', @@ -96,4 +97,7 @@ return [ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls', 'api_user_token_expired' => 'The authorization token used has expired', + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Error thrown when sending a test email:', + ]; diff --git a/resources/lang/nl/settings.php b/resources/lang/nl/settings.php index 0c320be63..069ee65f8 100644 --- a/resources/lang/nl/settings.php +++ b/resources/lang/nl/settings.php @@ -185,27 +185,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => 'Dansk', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/pl/errors.php b/resources/lang/pl/errors.php index c31f04efa..5273906a0 100644 --- a/resources/lang/pl/errors.php +++ b/resources/lang/pl/errors.php @@ -83,6 +83,7 @@ return [ // Error pages '404_page_not_found' => 'Strona nie została znaleziona', 'sorry_page_not_found' => 'Przepraszamy, ale strona której szukasz nie została znaleziona.', + 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.', 'return_home' => 'Powrót do strony głównej', 'error_occurred' => 'Wystąpił błąd', 'app_down' => ':appName jest aktualnie wyłączona', @@ -96,4 +97,7 @@ return [ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls', 'api_user_token_expired' => 'The authorization token used has expired', + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Error thrown when sending a test email:', + ]; diff --git a/resources/lang/pl/settings.php b/resources/lang/pl/settings.php index 4edb214da..97f4222d6 100644 --- a/resources/lang/pl/settings.php +++ b/resources/lang/pl/settings.php @@ -185,27 +185,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => 'Dansk', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/pt/activities.php b/resources/lang/pt/activities.php new file mode 100644 index 000000000..4cac54b2a --- /dev/null +++ b/resources/lang/pt/activities.php @@ -0,0 +1,48 @@ + 'created page', + 'page_create_notification' => 'Page Successfully Created', + 'page_update' => 'updated page', + 'page_update_notification' => 'Page Successfully Updated', + 'page_delete' => 'deleted page', + 'page_delete_notification' => 'Page Successfully Deleted', + 'page_restore' => 'restored page', + 'page_restore_notification' => 'Page Successfully Restored', + 'page_move' => 'moved page', + + // Chapters + 'chapter_create' => 'created chapter', + 'chapter_create_notification' => 'Chapter Successfully Created', + 'chapter_update' => 'updated chapter', + 'chapter_update_notification' => 'Chapter Successfully Updated', + 'chapter_delete' => 'deleted chapter', + 'chapter_delete_notification' => 'Chapter Successfully Deleted', + 'chapter_move' => 'moved chapter', + + // Books + 'book_create' => 'created book', + 'book_create_notification' => 'Book Successfully Created', + 'book_update' => 'updated book', + 'book_update_notification' => 'Book Successfully Updated', + 'book_delete' => 'deleted book', + 'book_delete_notification' => 'Book Successfully Deleted', + 'book_sort' => 'sorted book', + 'book_sort_notification' => 'Book Successfully Re-sorted', + + // Bookshelves + 'bookshelf_create' => 'created Bookshelf', + 'bookshelf_create_notification' => 'Bookshelf Successfully Created', + 'bookshelf_update' => 'updated bookshelf', + 'bookshelf_update_notification' => 'Bookshelf Successfully Updated', + 'bookshelf_delete' => 'deleted bookshelf', + 'bookshelf_delete_notification' => 'Bookshelf Successfully Deleted', + + // Other + 'commented_on' => 'commented on', +]; diff --git a/resources/lang/pt/auth.php b/resources/lang/pt/auth.php new file mode 100644 index 000000000..6961e049b --- /dev/null +++ b/resources/lang/pt/auth.php @@ -0,0 +1,77 @@ + 'These credentials do not match our records.', + 'throttle' => 'Too many login attempts. Please try again in :seconds seconds.', + + // Login & Register + 'sign_up' => 'Sign up', + 'log_in' => 'Log in', + 'log_in_with' => 'Login with :socialDriver', + 'sign_up_with' => 'Sign up with :socialDriver', + 'logout' => 'Logout', + + 'name' => 'Name', + 'username' => 'Username', + 'email' => 'Email', + 'password' => 'Password', + 'password_confirm' => 'Confirm Password', + 'password_hint' => 'Must be over 7 characters', + 'forgot_password' => 'Forgot Password?', + 'remember_me' => 'Remember Me', + 'ldap_email_hint' => 'Please enter an email to use for this account.', + 'create_account' => 'Create Account', + 'already_have_account' => 'Already have an account?', + 'dont_have_account' => 'Don\'t have an account?', + 'social_login' => 'Social Login', + 'social_registration' => 'Social Registration', + 'social_registration_text' => 'Register and sign in using another service.', + + 'register_thanks' => 'Thanks for registering!', + 'register_confirm' => 'Please check your email and click the confirmation button to access :appName.', + 'registrations_disabled' => 'Registrations are currently disabled', + 'registration_email_domain_invalid' => 'That email domain does not have access to this application', + 'register_success' => 'Thanks for signing up! You are now registered and signed in.', + + + // Password Reset + 'reset_password' => 'Reset Password', + 'reset_password_send_instructions' => 'Enter your email below and you will be sent an email with a password reset link.', + 'reset_password_send_button' => 'Send Reset Link', + 'reset_password_sent_success' => 'A password reset link has been sent to :email.', + 'reset_password_success' => 'Your password has been successfully reset.', + 'email_reset_subject' => 'Reset your :appName password', + 'email_reset_text' => 'You are receiving this email because we received a password reset request for your account.', + 'email_reset_not_requested' => 'If you did not request a password reset, no further action is required.', + + + // Email Confirmation + 'email_confirm_subject' => 'Confirm your email on :appName', + 'email_confirm_greeting' => 'Thanks for joining :appName!', + 'email_confirm_text' => 'Please confirm your email address by clicking the button below:', + 'email_confirm_action' => 'Confirm Email', + 'email_confirm_send_error' => 'Email confirmation required but the system could not send the email. Contact the admin to ensure email is set up correctly.', + 'email_confirm_success' => 'Your email has been confirmed!', + 'email_confirm_resent' => 'Confirmation email resent, Please check your inbox.', + + 'email_not_confirmed' => 'Email Address Not Confirmed', + 'email_not_confirmed_text' => 'Your email address has not yet been confirmed.', + 'email_not_confirmed_click_link' => 'Please click the link in the email that was sent shortly after you registered.', + 'email_not_confirmed_resend' => 'If you cannot find the email you can re-send the confirmation email by submitting the form below.', + 'email_not_confirmed_resend_button' => 'Resend Confirmation Email', + + // User Invite + 'user_invite_email_subject' => 'You have been invited to join :appName!', + 'user_invite_email_greeting' => 'An account has been created for you on :appName.', + 'user_invite_email_text' => 'Click the button below to set an account password and gain access:', + 'user_invite_email_action' => 'Set Account Password', + 'user_invite_page_welcome' => 'Welcome to :appName!', + 'user_invite_page_text' => 'To finalise your account and gain access you need to set a password which will be used to log-in to :appName on future visits.', + 'user_invite_page_confirm_button' => 'Confirm Password', + 'user_invite_success' => 'Password set, you now have access to :appName!' +]; \ No newline at end of file diff --git a/resources/lang/pt/common.php b/resources/lang/pt/common.php new file mode 100644 index 000000000..c8b4a2b22 --- /dev/null +++ b/resources/lang/pt/common.php @@ -0,0 +1,77 @@ + 'Cancel', + 'confirm' => 'Confirm', + 'back' => 'Back', + 'save' => 'Save', + 'continue' => 'Continue', + 'select' => 'Select', + 'toggle_all' => 'Toggle All', + 'more' => 'More', + + // Form Labels + 'name' => 'Name', + 'description' => 'Description', + 'role' => 'Role', + 'cover_image' => 'Cover image', + 'cover_image_description' => 'This image should be approx 440x250px.', + + // Actions + 'actions' => 'Actions', + 'view' => 'View', + 'view_all' => 'View All', + 'create' => 'Create', + 'update' => 'Update', + 'edit' => 'Edit', + 'sort' => 'Sort', + 'move' => 'Move', + 'copy' => 'Copy', + 'reply' => 'Reply', + 'delete' => 'Delete', + 'search' => 'Search', + 'search_clear' => 'Clear Search', + 'reset' => 'Reset', + 'remove' => 'Remove', + 'add' => 'Add', + 'fullscreen' => 'Fullscreen', + + // Sort Options + 'sort_options' => 'Sort Options', + 'sort_direction_toggle' => 'Sort Direction Toggle', + 'sort_ascending' => 'Sort Ascending', + 'sort_descending' => 'Sort Descending', + 'sort_name' => 'Name', + 'sort_created_at' => 'Created Date', + 'sort_updated_at' => 'Updated Date', + + // Misc + 'deleted_user' => 'Deleted User', + 'no_activity' => 'No activity to show', + 'no_items' => 'No items available', + 'back_to_top' => 'Back to top', + 'toggle_details' => 'Toggle Details', + 'toggle_thumbnails' => 'Toggle Thumbnails', + 'details' => 'Details', + 'grid_view' => 'Grid View', + 'list_view' => 'List View', + 'default' => 'Default', + 'breadcrumb' => 'Breadcrumb', + + // Header + 'profile_menu' => 'Profile Menu', + 'view_profile' => 'View Profile', + 'edit_profile' => 'Edit Profile', + + // Layout tabs + 'tab_info' => 'Info', + 'tab_content' => 'Content', + + // Email Content + 'email_action_help' => 'If you’re having trouble clicking the ":actionText" button, copy and paste the URL below into your web browser:', + 'email_rights' => 'All rights reserved', +]; diff --git a/resources/lang/pt/components.php b/resources/lang/pt/components.php new file mode 100644 index 000000000..d8e8981fb --- /dev/null +++ b/resources/lang/pt/components.php @@ -0,0 +1,33 @@ + 'Image Select', + 'image_all' => 'All', + 'image_all_title' => 'View all images', + 'image_book_title' => 'View images uploaded to this book', + 'image_page_title' => 'View images uploaded to this page', + 'image_search_hint' => 'Search by image name', + 'image_uploaded' => 'Uploaded :uploadedDate', + 'image_load_more' => 'Load More', + 'image_image_name' => 'Image Name', + 'image_delete_used' => 'This image is used in the pages below.', + 'image_delete_confirm' => 'Click delete again to confirm you want to delete this image.', + 'image_select_image' => 'Select Image', + 'image_dropzone' => 'Drop images or click here to upload', + 'images_deleted' => 'Images Deleted', + 'image_preview' => 'Image Preview', + 'image_upload_success' => 'Image uploaded successfully', + 'image_update_success' => 'Image details successfully updated', + 'image_delete_success' => 'Image successfully deleted', + 'image_upload_remove' => 'Remove', + + // Code Editor + 'code_editor' => 'Edit Code', + 'code_language' => 'Code Language', + 'code_content' => 'Code Content', + 'code_save' => 'Save Code', +]; diff --git a/resources/lang/pt/entities.php b/resources/lang/pt/entities.php new file mode 100644 index 000000000..6bbc723b0 --- /dev/null +++ b/resources/lang/pt/entities.php @@ -0,0 +1,314 @@ + 'Recently Created', + 'recently_created_pages' => 'Recently Created Pages', + 'recently_updated_pages' => 'Recently Updated Pages', + 'recently_created_chapters' => 'Recently Created Chapters', + 'recently_created_books' => 'Recently Created Books', + 'recently_created_shelves' => 'Recently Created Shelves', + 'recently_update' => 'Recently Updated', + 'recently_viewed' => 'Recently Viewed', + 'recent_activity' => 'Recent Activity', + 'create_now' => 'Create one now', + 'revisions' => 'Revisions', + 'meta_revision' => 'Revision #:revisionCount', + 'meta_created' => 'Created :timeLength', + 'meta_created_name' => 'Created :timeLength by :user', + 'meta_updated' => 'Updated :timeLength', + 'meta_updated_name' => 'Updated :timeLength by :user', + 'entity_select' => 'Entity Select', + 'images' => 'Images', + 'my_recent_drafts' => 'My Recent Drafts', + 'my_recently_viewed' => 'My Recently Viewed', + 'no_pages_viewed' => 'You have not viewed any pages', + 'no_pages_recently_created' => 'No pages have been recently created', + 'no_pages_recently_updated' => 'No pages have been recently updated', + 'export' => 'Export', + 'export_html' => 'Contained Web File', + 'export_pdf' => 'PDF File', + 'export_text' => 'Plain Text File', + + // Permissions and restrictions + 'permissions' => 'Permissions', + 'permissions_intro' => 'Once enabled, These permissions will take priority over any set role permissions.', + 'permissions_enable' => 'Enable Custom Permissions', + 'permissions_save' => 'Save Permissions', + + // Search + 'search_results' => 'Search Results', + 'search_total_results_found' => ':count result found|:count total results found', + 'search_clear' => 'Clear Search', + 'search_no_pages' => 'No pages matched this search', + 'search_for_term' => 'Search for :term', + 'search_more' => 'More Results', + 'search_filters' => 'Search Filters', + 'search_content_type' => 'Content Type', + 'search_exact_matches' => 'Exact Matches', + 'search_tags' => 'Tag Searches', + 'search_options' => 'Options', + 'search_viewed_by_me' => 'Viewed by me', + 'search_not_viewed_by_me' => 'Not viewed by me', + 'search_permissions_set' => 'Permissions set', + 'search_created_by_me' => 'Created by me', + 'search_updated_by_me' => 'Updated by me', + 'search_date_options' => 'Date Options', + 'search_updated_before' => 'Updated before', + 'search_updated_after' => 'Updated after', + 'search_created_before' => 'Created before', + 'search_created_after' => 'Created after', + 'search_set_date' => 'Set Date', + 'search_update' => 'Update Search', + + // Shelves + 'shelf' => 'Shelf', + 'shelves' => 'Shelves', + 'x_shelves' => ':count Shelf|:count Shelves', + 'shelves_long' => 'Bookshelves', + 'shelves_empty' => 'No shelves have been created', + 'shelves_create' => 'Create New Shelf', + 'shelves_popular' => 'Popular Shelves', + 'shelves_new' => 'New Shelves', + 'shelves_new_action' => 'New Shelf', + 'shelves_popular_empty' => 'The most popular shelves will appear here.', + 'shelves_new_empty' => 'The most recently created shelves will appear here.', + 'shelves_save' => 'Save Shelf', + 'shelves_books' => 'Books on this shelf', + 'shelves_add_books' => 'Add books to this shelf', + 'shelves_drag_books' => 'Drag books here to add them to this shelf', + 'shelves_empty_contents' => 'This shelf has no books assigned to it', + 'shelves_edit_and_assign' => 'Edit shelf to assign books', + 'shelves_edit_named' => 'Edit Bookshelf :name', + 'shelves_edit' => 'Edit Bookshelf', + 'shelves_delete' => 'Delete Bookshelf', + 'shelves_delete_named' => 'Delete Bookshelf :name', + 'shelves_delete_explain' => "This will delete the bookshelf with the name ':name'. Contained books will not be deleted.", + 'shelves_delete_confirmation' => 'Are you sure you want to delete this bookshelf?', + 'shelves_permissions' => 'Bookshelf Permissions', + 'shelves_permissions_updated' => 'Bookshelf Permissions Updated', + 'shelves_permissions_active' => 'Bookshelf Permissions Active', + 'shelves_copy_permissions_to_books' => 'Copy Permissions to Books', + 'shelves_copy_permissions' => 'Copy Permissions', + 'shelves_copy_permissions_explain' => 'This will apply the current permission settings of this bookshelf to all books contained within. Before activating, ensure any changes to the permissions of this bookshelf have been saved.', + 'shelves_copy_permission_success' => 'Bookshelf permissions copied to :count books', + + // Books + 'book' => 'Book', + 'books' => 'Books', + 'x_books' => ':count Book|:count Books', + 'books_empty' => 'No books have been created', + 'books_popular' => 'Popular Books', + 'books_recent' => 'Recent Books', + 'books_new' => 'New Books', + 'books_new_action' => 'New Book', + 'books_popular_empty' => 'The most popular books will appear here.', + 'books_new_empty' => 'The most recently created books will appear here.', + 'books_create' => 'Create New Book', + 'books_delete' => 'Delete Book', + 'books_delete_named' => 'Delete Book :bookName', + 'books_delete_explain' => 'This will delete the book with the name \':bookName\'. All pages and chapters will be removed.', + 'books_delete_confirmation' => 'Are you sure you want to delete this book?', + 'books_edit' => 'Edit Book', + 'books_edit_named' => 'Edit Book :bookName', + 'books_form_book_name' => 'Book Name', + 'books_save' => 'Save Book', + 'books_permissions' => 'Book Permissions', + 'books_permissions_updated' => 'Book Permissions Updated', + 'books_empty_contents' => 'No pages or chapters have been created for this book.', + 'books_empty_create_page' => 'Create a new page', + 'books_empty_sort_current_book' => 'Sort the current book', + 'books_empty_add_chapter' => 'Add a chapter', + 'books_permissions_active' => 'Book Permissions Active', + 'books_search_this' => 'Search this book', + 'books_navigation' => 'Book Navigation', + 'books_sort' => 'Sort Book Contents', + 'books_sort_named' => 'Sort Book :bookName', + 'books_sort_name' => 'Sort by Name', + 'books_sort_created' => 'Sort by Created Date', + 'books_sort_updated' => 'Sort by Updated Date', + 'books_sort_chapters_first' => 'Chapters First', + 'books_sort_chapters_last' => 'Chapters Last', + 'books_sort_show_other' => 'Show Other Books', + 'books_sort_save' => 'Save New Order', + + // Chapters + 'chapter' => 'Chapter', + 'chapters' => 'Chapters', + 'x_chapters' => ':count Chapter|:count Chapters', + 'chapters_popular' => 'Popular Chapters', + 'chapters_new' => 'New Chapter', + 'chapters_create' => 'Create New Chapter', + 'chapters_delete' => 'Delete Chapter', + 'chapters_delete_named' => 'Delete Chapter :chapterName', + 'chapters_delete_explain' => 'This will delete the chapter with the name \':chapterName\'. All pages will be removed and added directly to the parent book.', + 'chapters_delete_confirm' => 'Are you sure you want to delete this chapter?', + 'chapters_edit' => 'Edit Chapter', + 'chapters_edit_named' => 'Edit Chapter :chapterName', + 'chapters_save' => 'Save Chapter', + 'chapters_move' => 'Move Chapter', + 'chapters_move_named' => 'Move Chapter :chapterName', + 'chapter_move_success' => 'Chapter moved to :bookName', + 'chapters_permissions' => 'Chapter Permissions', + 'chapters_empty' => 'No pages are currently in this chapter.', + 'chapters_permissions_active' => 'Chapter Permissions Active', + 'chapters_permissions_success' => 'Chapter Permissions Updated', + 'chapters_search_this' => 'Search this chapter', + + // Pages + 'page' => 'Page', + 'pages' => 'Pages', + 'x_pages' => ':count Page|:count Pages', + 'pages_popular' => 'Popular Pages', + 'pages_new' => 'New Page', + 'pages_attachments' => 'Attachments', + 'pages_navigation' => 'Page Navigation', + 'pages_delete' => 'Delete Page', + 'pages_delete_named' => 'Delete Page :pageName', + 'pages_delete_draft_named' => 'Delete Draft Page :pageName', + 'pages_delete_draft' => 'Delete Draft Page', + 'pages_delete_success' => 'Page deleted', + 'pages_delete_draft_success' => 'Draft page deleted', + 'pages_delete_confirm' => 'Are you sure you want to delete this page?', + 'pages_delete_draft_confirm' => 'Are you sure you want to delete this draft page?', + 'pages_editing_named' => 'Editing Page :pageName', + 'pages_edit_draft_options' => 'Draft Options', + 'pages_edit_save_draft' => 'Save Draft', + 'pages_edit_draft' => 'Edit Page Draft', + 'pages_editing_draft' => 'Editing Draft', + 'pages_editing_page' => 'Editing Page', + 'pages_edit_draft_save_at' => 'Draft saved at ', + 'pages_edit_delete_draft' => 'Delete Draft', + 'pages_edit_discard_draft' => 'Discard Draft', + 'pages_edit_set_changelog' => 'Set Changelog', + 'pages_edit_enter_changelog_desc' => 'Enter a brief description of the changes you\'ve made', + 'pages_edit_enter_changelog' => 'Enter Changelog', + 'pages_save' => 'Save Page', + 'pages_title' => 'Page Title', + 'pages_name' => 'Page Name', + 'pages_md_editor' => 'Editor', + 'pages_md_preview' => 'Preview', + 'pages_md_insert_image' => 'Insert Image', + 'pages_md_insert_link' => 'Insert Entity Link', + 'pages_md_insert_drawing' => 'Insert Drawing', + 'pages_not_in_chapter' => 'Page is not in a chapter', + 'pages_move' => 'Move Page', + 'pages_move_success' => 'Page moved to ":parentName"', + 'pages_copy' => 'Copy Page', + 'pages_copy_desination' => 'Copy Destination', + 'pages_copy_success' => 'Page successfully copied', + 'pages_permissions' => 'Page Permissions', + 'pages_permissions_success' => 'Page permissions updated', + 'pages_revision' => 'Revision', + 'pages_revisions' => 'Page Revisions', + 'pages_revisions_named' => 'Page Revisions for :pageName', + 'pages_revision_named' => 'Page Revision for :pageName', + 'pages_revisions_created_by' => 'Created By', + 'pages_revisions_date' => 'Revision Date', + 'pages_revisions_number' => '#', + 'pages_revisions_numbered' => 'Revision #:id', + 'pages_revisions_numbered_changes' => 'Revision #:id Changes', + 'pages_revisions_changelog' => 'Changelog', + 'pages_revisions_changes' => 'Changes', + 'pages_revisions_current' => 'Current Version', + 'pages_revisions_preview' => 'Preview', + 'pages_revisions_restore' => 'Restore', + 'pages_revisions_none' => 'This page has no revisions', + 'pages_copy_link' => 'Copy Link', + 'pages_edit_content_link' => 'Edit Content', + 'pages_permissions_active' => 'Page Permissions Active', + 'pages_initial_revision' => 'Initial publish', + 'pages_initial_name' => 'New Page', + 'pages_editing_draft_notification' => 'You are currently editing a draft that was last saved :timeDiff.', + 'pages_draft_edited_notification' => 'This page has been updated by since that time. It is recommended that you discard this draft.', + 'pages_draft_edit_active' => [ + 'start_a' => ':count users have started editing this page', + 'start_b' => ':userName has started editing this page', + 'time_a' => 'since the page was last updated', + 'time_b' => 'in the last :minCount minutes', + 'message' => ':start :time. Take care not to overwrite each other\'s updates!', + ], + 'pages_draft_discarded' => 'Draft discarded, The editor has been updated with the current page content', + 'pages_specific' => 'Specific Page', + 'pages_is_template' => 'Page Template', + + // Editor Sidebar + 'page_tags' => 'Page Tags', + 'chapter_tags' => 'Chapter Tags', + 'book_tags' => 'Book Tags', + 'shelf_tags' => 'Shelf Tags', + 'tag' => 'Tag', + 'tags' => 'Tags', + 'tag_name' => 'Tag Name', + 'tag_value' => 'Tag Value (Optional)', + 'tags_explain' => "Add some tags to better categorise your content. \n You can assign a value to a tag for more in-depth organisation.", + 'tags_add' => 'Add another tag', + 'tags_remove' => 'Remove this tag', + 'attachments' => 'Attachments', + 'attachments_explain' => 'Upload some files or attach some links to display on your page. These are visible in the page sidebar.', + 'attachments_explain_instant_save' => 'Changes here are saved instantly.', + 'attachments_items' => 'Attached Items', + 'attachments_upload' => 'Upload File', + 'attachments_link' => 'Attach Link', + 'attachments_set_link' => 'Set Link', + 'attachments_delete_confirm' => 'Click delete again to confirm you want to delete this attachment.', + 'attachments_dropzone' => 'Drop files or click here to attach a file', + 'attachments_no_files' => 'No files have been uploaded', + 'attachments_explain_link' => 'You can attach a link if you\'d prefer not to upload a file. This can be a link to another page or a link to a file in the cloud.', + 'attachments_link_name' => 'Link Name', + 'attachment_link' => 'Attachment link', + 'attachments_link_url' => 'Link to file', + 'attachments_link_url_hint' => 'Url of site or file', + 'attach' => 'Attach', + 'attachments_edit_file' => 'Edit File', + 'attachments_edit_file_name' => 'File Name', + 'attachments_edit_drop_upload' => 'Drop files or click here to upload and overwrite', + 'attachments_order_updated' => 'Attachment order updated', + 'attachments_updated_success' => 'Attachment details updated', + 'attachments_deleted' => 'Attachment deleted', + 'attachments_file_uploaded' => 'File successfully uploaded', + 'attachments_file_updated' => 'File successfully updated', + 'attachments_link_attached' => 'Link successfully attached to page', + 'templates' => 'Templates', + 'templates_set_as_template' => 'Page is a template', + 'templates_explain_set_as_template' => 'You can set this page as a template so its contents be utilized when creating other pages. Other users will be able to use this template if they have view permissions for this page.', + 'templates_replace_content' => 'Replace page content', + 'templates_append_content' => 'Append to page content', + 'templates_prepend_content' => 'Prepend to page content', + + // Profile View + 'profile_user_for_x' => 'User for :time', + 'profile_created_content' => 'Created Content', + 'profile_not_created_pages' => ':userName has not created any pages', + 'profile_not_created_chapters' => ':userName has not created any chapters', + 'profile_not_created_books' => ':userName has not created any books', + 'profile_not_created_shelves' => ':userName has not created any shelves', + + // Comments + 'comment' => 'Comment', + 'comments' => 'Comments', + 'comment_add' => 'Add Comment', + 'comment_placeholder' => 'Leave a comment here', + 'comment_count' => '{0} No Comments|{1} 1 Comment|[2,*] :count Comments', + 'comment_save' => 'Save Comment', + 'comment_saving' => 'Saving comment...', + 'comment_deleting' => 'Deleting comment...', + 'comment_new' => 'New Comment', + 'comment_created' => 'commented :createDiff', + 'comment_updated' => 'Updated :updateDiff by :username', + 'comment_deleted_success' => 'Comment deleted', + 'comment_created_success' => 'Comment added', + 'comment_updated_success' => 'Comment updated', + 'comment_delete_confirm' => 'Are you sure you want to delete this comment?', + 'comment_in_reply_to' => 'In reply to :commentId', + + // Revision + 'revision_delete_confirm' => 'Are you sure you want to delete this revision?', + 'revision_restore_confirm' => 'Are you sure you want to restore this revision? The current page contents will be replaced.', + 'revision_delete_success' => 'Revision deleted', + 'revision_cannot_delete_latest' => 'Cannot delete the latest revision.' +]; \ No newline at end of file diff --git a/resources/lang/pt/errors.php b/resources/lang/pt/errors.php new file mode 100644 index 000000000..06a5285f5 --- /dev/null +++ b/resources/lang/pt/errors.php @@ -0,0 +1,103 @@ + 'You do not have permission to access the requested page.', + 'permissionJson' => 'You do not have permission to perform the requested action.', + + // Auth + 'error_user_exists_different_creds' => 'A user with the email :email already exists but with different credentials.', + 'email_already_confirmed' => 'Email has already been confirmed, Try logging in.', + 'email_confirmation_invalid' => 'This confirmation token is not valid or has already been used, Please try registering again.', + 'email_confirmation_expired' => 'The confirmation token has expired, A new confirmation email has been sent.', + 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed', + 'ldap_fail_anonymous' => 'LDAP access failed using anonymous bind', + 'ldap_fail_authed' => 'LDAP access failed using given dn & password details', + 'ldap_extension_not_installed' => 'LDAP PHP extension not installed', + 'ldap_cannot_connect' => 'Cannot connect to ldap server, Initial connection failed', + 'saml_already_logged_in' => 'Already logged in', + 'saml_user_not_registered' => 'The user :name is not registered and automatic registration is disabled', + 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system', + 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.', + 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization', + 'social_no_action_defined' => 'No action defined', + 'social_login_bad_response' => "Error received during :socialAccount login: \n:error", + 'social_account_in_use' => 'This :socialAccount account is already in use, Try logging in via the :socialAccount option.', + 'social_account_email_in_use' => 'The email :email is already in use. If you already have an account you can connect your :socialAccount account from your profile settings.', + 'social_account_existing' => 'This :socialAccount is already attached to your profile.', + 'social_account_already_used_existing' => 'This :socialAccount account is already used by another user.', + 'social_account_not_used' => 'This :socialAccount account is not linked to any users. Please attach it in your profile settings. ', + 'social_account_register_instructions' => 'If you do not yet have an account, You can register an account using the :socialAccount option.', + 'social_driver_not_found' => 'Social driver not found', + 'social_driver_not_configured' => 'Your :socialAccount social settings are not configured correctly.', + 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.', + + // System + 'path_not_writable' => 'File path :filePath could not be uploaded to. Ensure it is writable to the server.', + 'cannot_get_image_from_url' => 'Cannot get image from :url', + 'cannot_create_thumbs' => 'The server cannot create thumbnails. Please check you have the GD PHP extension installed.', + 'server_upload_limit' => 'The server does not allow uploads of this size. Please try a smaller file size.', + 'uploaded' => 'The server does not allow uploads of this size. Please try a smaller file size.', + 'image_upload_error' => 'An error occurred uploading the image', + 'image_upload_type_error' => 'The image type being uploaded is invalid', + 'file_upload_timeout' => 'The file upload has timed out.', + + // Attachments + 'attachment_page_mismatch' => 'Page mismatch during attachment update', + 'attachment_not_found' => 'Attachment not found', + + // Pages + 'page_draft_autosave_fail' => 'Failed to save draft. Ensure you have internet connection before saving this page', + 'page_custom_home_deletion' => 'Cannot delete a page while it is set as a homepage', + + // Entities + 'entity_not_found' => 'Entity not found', + 'bookshelf_not_found' => 'Bookshelf not found', + 'book_not_found' => 'Book not found', + 'page_not_found' => 'Page not found', + 'chapter_not_found' => 'Chapter not found', + 'selected_book_not_found' => 'The selected book was not found', + 'selected_book_chapter_not_found' => 'The selected Book or Chapter was not found', + 'guests_cannot_save_drafts' => 'Guests cannot save drafts', + + // Users + 'users_cannot_delete_only_admin' => 'You cannot delete the only admin', + 'users_cannot_delete_guest' => 'You cannot delete the guest user', + + // Roles + 'role_cannot_be_edited' => 'This role cannot be edited', + 'role_system_cannot_be_deleted' => 'This role is a system role and cannot be deleted', + 'role_registration_default_cannot_delete' => 'This role cannot be deleted while set as the default registration role', + 'role_cannot_remove_only_admin' => 'This user is the only user assigned to the administrator role. Assign the administrator role to another user before attempting to remove it here.', + + // Comments + 'comment_list' => 'An error occurred while fetching the comments.', + 'cannot_add_comment_to_draft' => 'You cannot add comments to a draft.', + 'comment_add' => 'An error occurred while adding / updating the comment.', + 'comment_delete' => 'An error occurred while deleting the comment.', + 'empty_comment' => 'Cannot add an empty comment.', + + // Error pages + '404_page_not_found' => 'Page Not Found', + 'sorry_page_not_found' => 'Sorry, The page you were looking for could not be found.', + 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.', + 'return_home' => 'Return to home', + 'error_occurred' => 'An Error Occurred', + 'app_down' => ':appName is down right now', + 'back_soon' => 'It will be back up soon.', + + // API errors + 'api_no_authorization_found' => 'No authorization token found on the request', + 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect', + 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token', + 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect', + 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls', + 'api_user_token_expired' => 'The authorization token used has expired', + + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Error thrown when sending a test email:', + +]; diff --git a/resources/lang/pt/pagination.php b/resources/lang/pt/pagination.php new file mode 100644 index 000000000..85bd12fc3 --- /dev/null +++ b/resources/lang/pt/pagination.php @@ -0,0 +1,12 @@ + '« Previous', + 'next' => 'Next »', + +]; diff --git a/resources/lang/pt/passwords.php b/resources/lang/pt/passwords.php new file mode 100644 index 000000000..f41ca7868 --- /dev/null +++ b/resources/lang/pt/passwords.php @@ -0,0 +1,15 @@ + 'Passwords must be at least eight characters and match the confirmation.', + 'user' => "We can't find a user with that e-mail address.", + 'token' => 'This password reset token is invalid.', + 'sent' => 'We have e-mailed your password reset link!', + 'reset' => 'Your password has been reset!', + +]; diff --git a/resources/lang/pt/settings.php b/resources/lang/pt/settings.php new file mode 100644 index 000000000..35bb09cd4 --- /dev/null +++ b/resources/lang/pt/settings.php @@ -0,0 +1,213 @@ + 'Settings', + 'settings_save' => 'Save Settings', + 'settings_save_success' => 'Settings saved', + + // App Settings + 'app_customization' => 'Customization', + 'app_features_security' => 'Features & Security', + 'app_name' => 'Application Name', + 'app_name_desc' => 'This name is shown in the header and in any system-sent emails.', + 'app_name_header' => 'Show name in header', + 'app_public_access' => 'Public Access', + 'app_public_access_desc' => 'Enabling this option will allow visitors, that are not logged-in, to access content in your BookStack instance.', + 'app_public_access_desc_guest' => 'Access for public visitors can be controlled through the "Guest" user.', + 'app_public_access_toggle' => 'Allow public access', + 'app_public_viewing' => 'Allow public viewing?', + 'app_secure_images' => 'Higher Security Image Uploads', + 'app_secure_images_toggle' => 'Enable higher security image uploads', + 'app_secure_images_desc' => 'For performance reasons, all images are public. This option adds a random, hard-to-guess string in front of image urls. Ensure directory indexes are not enabled to prevent easy access.', + 'app_editor' => 'Page Editor', + 'app_editor_desc' => 'Select which editor will be used by all users to edit pages.', + 'app_custom_html' => 'Custom HTML Head Content', + 'app_custom_html_desc' => 'Any content added here will be inserted into the bottom of the section of every page. This is handy for overriding styles or adding analytics code.', + 'app_custom_html_disabled_notice' => 'Custom HTML head content is disabled on this settings page to ensure any breaking changes can be reverted.', + 'app_logo' => 'Application Logo', + 'app_logo_desc' => 'This image should be 43px in height.
Large images will be scaled down.', + 'app_primary_color' => 'Application Primary Color', + 'app_primary_color_desc' => 'Sets the primary color for the application including the banner, buttons, and links.', + 'app_homepage' => 'Application Homepage', + 'app_homepage_desc' => 'Select a view to show on the homepage instead of the default view. Page permissions are ignored for selected pages.', + 'app_homepage_select' => 'Select a page', + 'app_disable_comments' => 'Disable Comments', + 'app_disable_comments_toggle' => 'Disable comments', + 'app_disable_comments_desc' => 'Disables comments across all pages in the application.
Existing comments are not shown.', + + // Color settings + 'content_colors' => 'Content Colors', + 'content_colors_desc' => 'Sets colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.', + 'bookshelf_color' => 'Shelf Color', + 'book_color' => 'Book Color', + 'chapter_color' => 'Chapter Color', + 'page_color' => 'Page Color', + 'page_draft_color' => 'Page Draft Color', + + // Registration Settings + 'reg_settings' => 'Registration', + 'reg_enable' => 'Enable Registration', + 'reg_enable_toggle' => 'Enable registration', + 'reg_enable_desc' => 'When registration is enabled user will be able to sign themselves up as an application user. Upon registration they are given a single, default user role.', + 'reg_default_role' => 'Default user role after registration', + 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.', + 'reg_email_confirmation' => 'Email Confirmation', + 'reg_email_confirmation_toggle' => 'Require email confirmation', + 'reg_confirm_email_desc' => 'If domain restriction is used then email confirmation will be required and this option will be ignored.', + 'reg_confirm_restrict_domain' => 'Domain Restriction', + 'reg_confirm_restrict_domain_desc' => 'Enter a comma separated list of email domains you would like to restrict registration to. Users will be sent an email to confirm their address before being allowed to interact with the application.
Note that users will be able to change their email addresses after successful registration.', + 'reg_confirm_restrict_domain_placeholder' => 'No restriction set', + + // Maintenance settings + 'maint' => 'Maintenance', + 'maint_image_cleanup' => 'Cleanup Images', + 'maint_image_cleanup_desc' => "Scans page & revision content to check which images and drawings are currently in use and which images are redundant. Ensure you create a full database and image backup before running this.", + 'maint_image_cleanup_ignore_revisions' => 'Ignore images in revisions', + 'maint_image_cleanup_run' => 'Run Cleanup', + 'maint_image_cleanup_warning' => ':count potentially unused images were found. Are you sure you want to delete these images?', + 'maint_image_cleanup_success' => ':count potentially unused images found and deleted!', + 'maint_image_cleanup_nothing_found' => 'No unused images found, Nothing deleted!', + 'maint_send_test_email' => 'Send a Test Email', + 'maint_send_test_email_desc' => 'This sends a test email to your email address specified in your profile.', + 'maint_send_test_email_run' => 'Send test email', + 'maint_send_test_email_success' => 'Email sent to :address', + 'maint_send_test_email_mail_subject' => 'Test Email', + 'maint_send_test_email_mail_greeting' => 'Email delivery seems to work!', + 'maint_send_test_email_mail_text' => 'Congratulations! As you received this email notification, your email settings seem to be configured properly.', + + // Role Settings + 'roles' => 'Roles', + 'role_user_roles' => 'User Roles', + 'role_create' => 'Create New Role', + 'role_create_success' => 'Role successfully created', + 'role_delete' => 'Delete Role', + 'role_delete_confirm' => 'This will delete the role with the name \':roleName\'.', + 'role_delete_users_assigned' => 'This role has :userCount users assigned to it. If you would like to migrate the users from this role select a new role below.', + 'role_delete_no_migration' => "Don't migrate users", + 'role_delete_sure' => 'Are you sure you want to delete this role?', + 'role_delete_success' => 'Role successfully deleted', + 'role_edit' => 'Edit Role', + 'role_details' => 'Role Details', + 'role_name' => 'Role Name', + 'role_desc' => 'Short Description of Role', + 'role_external_auth_id' => 'External Authentication IDs', + 'role_system' => 'System Permissions', + 'role_manage_users' => 'Manage users', + 'role_manage_roles' => 'Manage roles & role permissions', + 'role_manage_entity_permissions' => 'Manage all book, chapter & page permissions', + 'role_manage_own_entity_permissions' => 'Manage permissions on own book, chapter & pages', + 'role_manage_page_templates' => 'Manage page templates', + 'role_access_api' => 'Access system API', + 'role_manage_settings' => 'Manage app settings', + 'role_asset' => 'Asset Permissions', + 'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.', + 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.', + 'role_all' => 'All', + 'role_own' => 'Own', + 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to', + 'role_save' => 'Save Role', + 'role_update_success' => 'Role successfully updated', + 'role_users' => 'Users in this role', + 'role_users_none' => 'No users are currently assigned to this role', + + // Users + 'users' => 'Users', + 'user_profile' => 'User Profile', + 'users_add_new' => 'Add New User', + 'users_search' => 'Search Users', + 'users_details' => 'User Details', + 'users_details_desc' => 'Set a display name and an email address for this user. The email address will be used for logging into the application.', + 'users_details_desc_no_email' => 'Set a display name for this user so others can recognise them.', + 'users_role' => 'User Roles', + 'users_role_desc' => 'Select which roles this user will be assigned to. If a user is assigned to multiple roles the permissions from those roles will stack and they will receive all abilities of the assigned roles.', + 'users_password' => 'User Password', + 'users_password_desc' => 'Set a password used to log-in to the application. This must be at least 6 characters long.', + 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.', + 'users_send_invite_option' => 'Send user invite email', + 'users_external_auth_id' => 'External Authentication ID', + 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.', + 'users_password_warning' => 'Only fill the below if you would like to change your password.', + 'users_system_public' => 'This user represents any guest users that visit your instance. It cannot be used to log in but is assigned automatically.', + 'users_delete' => 'Delete User', + 'users_delete_named' => 'Delete user :userName', + 'users_delete_warning' => 'This will fully delete this user with the name \':userName\' from the system.', + 'users_delete_confirm' => 'Are you sure you want to delete this user?', + 'users_delete_success' => 'Users successfully removed', + 'users_edit' => 'Edit User', + 'users_edit_profile' => 'Edit Profile', + 'users_edit_success' => 'User successfully updated', + 'users_avatar' => 'User Avatar', + 'users_avatar_desc' => 'Select an image to represent this user. This should be approx 256px square.', + 'users_preferred_language' => 'Preferred Language', + 'users_preferred_language_desc' => 'This option will change the language used for the user-interface of the application. This will not affect any user-created content.', + 'users_social_accounts' => 'Social Accounts', + 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not revoke previously authorized access. Revoke access from your profile settings on the connected social account.', + 'users_social_connect' => 'Connect Account', + 'users_social_disconnect' => 'Disconnect Account', + 'users_social_connected' => ':socialAccount account was successfully attached to your profile.', + 'users_social_disconnected' => ':socialAccount account was successfully disconnected from your profile.', + 'users_api_tokens' => 'API Tokens', + 'users_api_tokens_none' => 'No API tokens have been created for this user', + 'users_api_tokens_create' => 'Create Token', + 'users_api_tokens_expires' => 'Expires', + 'users_api_tokens_docs' => 'API Documentation', + + // API Tokens + 'user_api_token_create' => 'Create API Token', + 'user_api_token_name' => 'Name', + 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.', + 'user_api_token_expiry' => 'Expiry Date', + 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.', + 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.', + 'user_api_token_create_success' => 'API token successfully created', + 'user_api_token_update_success' => 'API token successfully updated', + 'user_api_token' => 'API Token', + 'user_api_token_id' => 'Token ID', + 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.', + 'user_api_token_secret' => 'Token Secret', + 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.', + 'user_api_token_created' => 'Token Created :timeAgo', + 'user_api_token_updated' => 'Token Updated :timeAgo', + 'user_api_token_delete' => 'Delete Token', + 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.', + 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?', + 'user_api_token_delete_success' => 'API token successfully deleted', + + //! If editing translations files directly please ignore this in all + //! languages apart from en. Content will be auto-copied from en. + //!//////////////////////////////// + 'language_select' => [ + 'en' => 'English', + 'ar' => 'العربية', + 'cs' => 'Česky', + 'da' => 'Dansk', + 'de' => 'Deutsch (Sie)', + 'de_informal' => 'Deutsch (Du)', + 'es' => 'Español', + 'es_AR' => 'Español Argentina', + 'fr' => 'Français', + 'hu' => 'Magyar', + 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', + 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', + 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', + 'zh_CN' => '简体中文', + 'zh_TW' => '繁體中文', + ] + //!//////////////////////////////// +]; diff --git a/resources/lang/pt/validation.php b/resources/lang/pt/validation.php new file mode 100644 index 000000000..76b57a2a3 --- /dev/null +++ b/resources/lang/pt/validation.php @@ -0,0 +1,114 @@ + 'The :attribute must be accepted.', + 'active_url' => 'The :attribute is not a valid URL.', + 'after' => 'The :attribute must be a date after :date.', + 'alpha' => 'The :attribute may only contain letters.', + 'alpha_dash' => 'The :attribute may only contain letters, numbers, dashes and underscores.', + 'alpha_num' => 'The :attribute may only contain letters and numbers.', + 'array' => 'The :attribute must be an array.', + 'before' => 'The :attribute must be a date before :date.', + 'between' => [ + 'numeric' => 'The :attribute must be between :min and :max.', + 'file' => 'The :attribute must be between :min and :max kilobytes.', + 'string' => 'The :attribute must be between :min and :max characters.', + 'array' => 'The :attribute must have between :min and :max items.', + ], + 'boolean' => 'The :attribute field must be true or false.', + 'confirmed' => 'The :attribute confirmation does not match.', + 'date' => 'The :attribute is not a valid date.', + 'date_format' => 'The :attribute does not match the format :format.', + 'different' => 'The :attribute and :other must be different.', + 'digits' => 'The :attribute must be :digits digits.', + 'digits_between' => 'The :attribute must be between :min and :max digits.', + 'email' => 'The :attribute must be a valid email address.', + 'ends_with' => 'The :attribute must end with one of the following: :values', + 'filled' => 'The :attribute field is required.', + 'gt' => [ + 'numeric' => 'The :attribute must be greater than :value.', + 'file' => 'The :attribute must be greater than :value kilobytes.', + 'string' => 'The :attribute must be greater than :value characters.', + 'array' => 'The :attribute must have more than :value items.', + ], + 'gte' => [ + 'numeric' => 'The :attribute must be greater than or equal :value.', + 'file' => 'The :attribute must be greater than or equal :value kilobytes.', + 'string' => 'The :attribute must be greater than or equal :value characters.', + 'array' => 'The :attribute must have :value items or more.', + ], + 'exists' => 'The selected :attribute is invalid.', + 'image' => 'The :attribute must be an image.', + 'image_extension' => 'The :attribute must have a valid & supported image extension.', + 'in' => 'The selected :attribute is invalid.', + 'integer' => 'The :attribute must be an integer.', + 'ip' => 'The :attribute must be a valid IP address.', + 'ipv4' => 'The :attribute must be a valid IPv4 address.', + 'ipv6' => 'The :attribute must be a valid IPv6 address.', + 'json' => 'The :attribute must be a valid JSON string.', + 'lt' => [ + 'numeric' => 'The :attribute must be less than :value.', + 'file' => 'The :attribute must be less than :value kilobytes.', + 'string' => 'The :attribute must be less than :value characters.', + 'array' => 'The :attribute must have less than :value items.', + ], + 'lte' => [ + 'numeric' => 'The :attribute must be less than or equal :value.', + 'file' => 'The :attribute must be less than or equal :value kilobytes.', + 'string' => 'The :attribute must be less than or equal :value characters.', + 'array' => 'The :attribute must not have more than :value items.', + ], + 'max' => [ + 'numeric' => 'The :attribute may not be greater than :max.', + 'file' => 'The :attribute may not be greater than :max kilobytes.', + 'string' => 'The :attribute may not be greater than :max characters.', + 'array' => 'The :attribute may not have more than :max items.', + ], + 'mimes' => 'The :attribute must be a file of type: :values.', + 'min' => [ + 'numeric' => 'The :attribute must be at least :min.', + 'file' => 'The :attribute must be at least :min kilobytes.', + 'string' => 'The :attribute must be at least :min characters.', + 'array' => 'The :attribute must have at least :min items.', + ], + 'no_double_extension' => 'The :attribute must only have a single file extension.', + 'not_in' => 'The selected :attribute is invalid.', + 'not_regex' => 'The :attribute format is invalid.', + 'numeric' => 'The :attribute must be a number.', + 'regex' => 'The :attribute format is invalid.', + 'required' => 'The :attribute field is required.', + 'required_if' => 'The :attribute field is required when :other is :value.', + 'required_with' => 'The :attribute field is required when :values is present.', + 'required_with_all' => 'The :attribute field is required when :values is present.', + 'required_without' => 'The :attribute field is required when :values is not present.', + 'required_without_all' => 'The :attribute field is required when none of :values are present.', + 'same' => 'The :attribute and :other must match.', + 'size' => [ + 'numeric' => 'The :attribute must be :size.', + 'file' => 'The :attribute must be :size kilobytes.', + 'string' => 'The :attribute must be :size characters.', + 'array' => 'The :attribute must contain :size items.', + ], + 'string' => 'The :attribute must be a string.', + 'timezone' => 'The :attribute must be a valid zone.', + 'unique' => 'The :attribute has already been taken.', + 'url' => 'The :attribute format is invalid.', + 'uploaded' => 'The file could not be uploaded. The server may not accept files of this size.', + + // Custom validation lines + 'custom' => [ + 'password-confirm' => [ + 'required_with' => 'Password confirmation required', + ], + ], + + // Custom validation attributes + 'attributes' => [], +]; diff --git a/resources/lang/pt_BR/errors.php b/resources/lang/pt_BR/errors.php index d7aa69bf0..0758c3e97 100644 --- a/resources/lang/pt_BR/errors.php +++ b/resources/lang/pt_BR/errors.php @@ -83,6 +83,7 @@ return [ // Error pages '404_page_not_found' => 'Página Não Encontrada', 'sorry_page_not_found' => 'Desculpe, a página que você está procurando não pôde ser encontrada.', + 'sorry_page_not_found_permission_warning' => 'Se você esperava que esta página existisse, talvez você não tenha permissão para visualizá-la.', 'return_home' => 'Retornar à página inicial', 'error_occurred' => 'Ocorreu um Erro', 'app_down' => ':appName está fora do ar no momento', @@ -96,4 +97,7 @@ return [ 'api_user_no_api_permission' => 'O proprietário do token de API utilizado não tem permissão para fazer requisições de API', 'api_user_token_expired' => 'O token de autenticação expirou', + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Erro encontrado ao enviar um e-mail de teste:', + ]; diff --git a/resources/lang/pt_BR/settings.php b/resources/lang/pt_BR/settings.php index 7c470da2a..bc78f8328 100644 --- a/resources/lang/pt_BR/settings.php +++ b/resources/lang/pt_BR/settings.php @@ -56,7 +56,7 @@ return [ 'reg_enable_toggle' => 'Habilitar cadastro', 'reg_enable_desc' => 'Quando o cadastro é habilitado, visitantes poderão cadastrar-se como usuários do aplicativo. Realizado o cadastro, recebem um único cargo padrão.', 'reg_default_role' => 'Cargo padrão para usuários após o cadastro', - 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.', + 'reg_enable_external_warning' => 'A opção acima é ignorada enquanto a autenticação externa LDAP ou SAML estiver ativa. Contas de usuários para membros não existentes serão criadas automaticamente se a autenticação pelo sistema externo em uso for bem sucedida.', 'reg_email_confirmation' => 'Confirmação de E-mail', 'reg_email_confirmation_toggle' => 'Requerer confirmação de e-mail', 'reg_confirm_email_desc' => 'Em caso da restrição de domínios estar em uso, a confirmação de e-mail será requerida e essa opção será ignorada.', @@ -131,7 +131,7 @@ return [ 'users_send_invite_text' => 'Você pode escolher enviar a este usuário um convite por e-mail que o possibilitará definir sua própria senha, ou defina você uma senha.', 'users_send_invite_option' => 'Enviar convite por e-mail', 'users_external_auth_id' => 'ID de Autenticação Externa', - 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.', + 'users_external_auth_id_desc' => 'Este ID é usado para relacionar o usuário quando comunicando com algum sistema de autenticação externo.', 'users_password_warning' => 'Apenas preencha os dados abaixo caso queira modificar a sua senha.', 'users_system_public' => 'Esse usuário representa quaisquer convidados que visitam o aplicativo. Ele não pode ser usado para login mas é automaticamente atribuído.', 'users_delete' => 'Excluir Usuário', @@ -185,27 +185,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => 'Dansk', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/ru/activities.php b/resources/lang/ru/activities.php index 7c8efcacb..06b1e354b 100644 --- a/resources/lang/ru/activities.php +++ b/resources/lang/ru/activities.php @@ -18,7 +18,7 @@ return [ // Chapters 'chapter_create' => 'создал главу', - 'chapter_create_notification' => 'глава успешно создана', + 'chapter_create_notification' => 'Глава успешно создана', 'chapter_update' => 'обновил главу', 'chapter_update_notification' => 'Глава успешно обновлена', 'chapter_delete' => 'удалил главу', @@ -36,12 +36,12 @@ return [ 'book_sort_notification' => 'Книга успешно отсортирована', // Bookshelves - 'bookshelf_create' => 'создал книжную полку', - 'bookshelf_create_notification' => 'Книжная полка успешно создана', - 'bookshelf_update' => 'обновил книжную полку', - 'bookshelf_update_notification' => 'Книжная полка успешно обновлена', - 'bookshelf_delete' => 'удалил книжную полку', - 'bookshelf_delete_notification' => 'Книжная полка успешно удалена', + 'bookshelf_create' => 'создал полку', + 'bookshelf_create_notification' => 'Полка успешно создана', + 'bookshelf_update' => 'обновил полку', + 'bookshelf_update_notification' => 'Полка успешно обновлена', + 'bookshelf_delete' => 'удалил полку', + 'bookshelf_delete_notification' => 'Полка успешно удалена', // Other 'commented_on' => 'прокомментировал', diff --git a/resources/lang/ru/auth.php b/resources/lang/ru/auth.php index 490707c83..369da7aa3 100644 --- a/resources/lang/ru/auth.php +++ b/resources/lang/ru/auth.php @@ -7,7 +7,7 @@ return [ 'failed' => 'Учетная запись не найдена.', - 'throttle' => 'Слишком много попыток входа. Пожалуйста, попробуйте позже через :seconds секунд.', + 'throttle' => 'Слишком много попыток входа. Пожалуйста, повторите попытку через :seconds секунд.', // Login & Register 'sign_up' => 'Регистрация', @@ -21,7 +21,7 @@ return [ 'email' => 'Адрес электронной почты', 'password' => 'Пароль', 'password_confirm' => 'Подтверждение пароля', - 'password_hint' => 'Должен быть больше 7 символов', + 'password_hint' => 'Минимум 8 символов', 'forgot_password' => 'Забыли пароль?', 'remember_me' => 'Запомнить меня', 'ldap_email_hint' => 'Введите адрес электронной почты для этой учетной записи.', @@ -41,11 +41,11 @@ return [ // Password Reset 'reset_password' => 'Сброс пароля', - 'reset_password_send_instructions' => 'Введите свой email ниже, и вам будет отправлено письмо со ссылкой для сброса пароля.', - 'reset_password_send_button' => 'Отправить ссылку для сброса', - 'reset_password_sent_success' => 'Ссылка для сброса была отправлена на :email.', + 'reset_password_send_instructions' => 'Введите свой адрес электронной почты ниже, и вам будет отправлено письмо со ссылкой для сброса пароля.', + 'reset_password_send_button' => 'Сбросить пароль', + 'reset_password_sent_success' => 'Ссылка для сброса пароля была отправлена на :email.', 'reset_password_success' => 'Ваш пароль был успешно сброшен.', - 'email_reset_subject' => 'Сбросить ваш :appName пароль', + 'email_reset_subject' => 'Сброс пароля от :appName', 'email_reset_text' => 'Вы получили это письмо, потому что запросили сброс пароля для вашей учетной записи.', 'email_reset_not_requested' => 'Если вы не запрашивали сброса пароля, то никаких дополнительных действий не требуется.', @@ -62,14 +62,14 @@ return [ 'email_not_confirmed' => 'Адрес электронной почты не подтвержден', 'email_not_confirmed_text' => 'Ваш email адрес все еще не подтвержден.', 'email_not_confirmed_click_link' => 'Пожалуйста, нажмите на ссылку в письме, которое было отправлено при регистрации.', - 'email_not_confirmed_resend' => 'Если вы не можете найти электронное письмо, вы можете снова отправить письмо с подтверждением по форме ниже.', + 'email_not_confirmed_resend' => 'Если вы не можете найти электронное письмо, вы можете снова отправить его с подтверждением по форме ниже.', 'email_not_confirmed_resend_button' => 'Переотправить письмо с подтверждением', // User Invite 'user_invite_email_subject' => 'Вас приглашают присоединиться к :appName!', 'user_invite_email_greeting' => 'Для вас создан аккаунт в :appName.', 'user_invite_email_text' => 'Нажмите кнопку ниже, чтобы задать пароль и получить доступ:', - 'user_invite_email_action' => 'Установить пароль аккаунту.', + 'user_invite_email_action' => 'Установить пароль для аккаунта', 'user_invite_page_welcome' => 'Добро пожаловать в :appName!', 'user_invite_page_text' => 'Завершите настройку аккаунта, установите пароль для дальнейшего входа в :appName.', 'user_invite_page_confirm_button' => 'Подтвердите пароль', diff --git a/resources/lang/ru/common.php b/resources/lang/ru/common.php index cd6661d57..50bd672e7 100644 --- a/resources/lang/ru/common.php +++ b/resources/lang/ru/common.php @@ -38,11 +38,11 @@ return [ 'reset' => 'Сбросить', 'remove' => 'Удалить', 'add' => 'Добавить', - 'fullscreen' => 'Fullscreen', + 'fullscreen' => 'На весь экран', // Sort Options 'sort_options' => 'Параметры сортировки', - 'sort_direction_toggle' => 'Переключить направления сортировки', + 'sort_direction_toggle' => 'Переключить направление сортировки', 'sort_ascending' => 'По возрастанию', 'sort_descending' => 'По убыванию', 'sort_name' => 'По имени', @@ -64,7 +64,7 @@ return [ // Header 'profile_menu' => 'Меню профиля', - 'view_profile' => 'Просмотреть профиль', + 'view_profile' => 'Посмотреть профиль', 'edit_profile' => 'Редактировать профиль', // Layout tabs @@ -72,6 +72,6 @@ return [ 'tab_content' => 'Содержание', // Email Content - 'email_action_help' => 'Если у вас возникли проблемы с нажатием кнопки \':actionText\', то скопируйте и вставьте указанный URL-адрес в свой веб-браузер:', + 'email_action_help' => 'Если у вас возникли проблемы с нажатием кнопки \':actionText\', то скопируйте и вставьте указанный URL-адрес в свой браузер:', 'email_rights' => 'Все права защищены', ]; diff --git a/resources/lang/ru/components.php b/resources/lang/ru/components.php index e9481f791..d85fca008 100644 --- a/resources/lang/ru/components.php +++ b/resources/lang/ru/components.php @@ -7,20 +7,20 @@ return [ // Image Manager 'image_select' => 'Выбрать изображение', 'image_all' => 'Все', - 'image_all_title' => 'Простмотр всех изображений', + 'image_all_title' => 'Просмотр всех изображений', 'image_book_title' => 'Просмотр всех изображений, загруженных в эту книгу', 'image_page_title' => 'Просмотр всех изображений, загруженных на эту страницу', - 'image_search_hint' => 'Поиск по имени изображения', - 'image_uploaded' => 'Загруженно :uploadedDate', + 'image_search_hint' => 'Поиск по названию изображения', + 'image_uploaded' => 'Загружено :uploadedDate', 'image_load_more' => 'Загрузить еще', - 'image_image_name' => 'Имя изображения', + 'image_image_name' => 'Название изображения', 'image_delete_used' => 'Это изображение используется на странице ниже.', 'image_delete_confirm' => 'Нажмите \'Удалить\' еще раз для подтверждения удаления.', 'image_select_image' => 'Выбрать изображение', 'image_dropzone' => 'Перетащите изображение или кликните для загрузки', 'images_deleted' => 'Изображения удалены', - 'image_preview' => 'Предосмотр изображения', - 'image_upload_success' => 'Изображение загружено успешно', + 'image_preview' => 'Предпросмотр изображения', + 'image_upload_success' => 'Изображение успешно загружено', 'image_update_success' => 'Детали изображения успешно обновлены', 'image_delete_success' => 'Изображение успешно удалено', 'image_upload_remove' => 'Удалить изображение', diff --git a/resources/lang/ru/entities.php b/resources/lang/ru/entities.php index e9fe6ba30..fc180061a 100644 --- a/resources/lang/ru/entities.php +++ b/resources/lang/ru/entities.php @@ -16,7 +16,7 @@ return [ 'recently_viewed' => 'Недавно просмотренные', 'recent_activity' => 'Недавние действия', 'create_now' => 'Создать сейчас', - 'revisions' => 'Версия', + 'revisions' => 'Версии', 'meta_revision' => 'Версия #:revisionCount', 'meta_created' => 'Создано :timeLength', 'meta_created_name' => ':user создал :timeLength', @@ -36,15 +36,15 @@ return [ // Permissions and restrictions 'permissions' => 'Разрешения', - 'permissions_intro' => 'После включения эти разрешения будут иметь приоритет над любыми установленными полномочиями.', + 'permissions_intro' => 'После включения опции эти разрешения будут иметь приоритет над любыми установленными разрешениями роли.', 'permissions_enable' => 'Включение пользовательских разрешений', 'permissions_save' => 'Сохранить разрешения', // Search 'search_results' => 'Результаты поиска', - 'search_total_results_found' => ':count результатов найдено|:count всего результатов найдено', + 'search_total_results_found' => 'Найден :count результат|Найдено :count результата|Найдено :count результатов', 'search_clear' => 'Очистить поиск', - 'search_no_pages' => 'Нет страниц, соответствующих этому поиску.', + 'search_no_pages' => 'Нет страниц, соответствующих этому поиску', 'search_for_term' => 'Искать :term', 'search_more' => 'Еще результаты', 'search_filters' => 'Фильтры поиска', @@ -68,7 +68,7 @@ return [ // Shelves 'shelf' => 'Полка', 'shelves' => 'Полки', - 'x_shelves' => ':count полок|:count полок', + 'x_shelves' => ':count полка|:count полки|:count полок', 'shelves_long' => 'Книжные полки', 'shelves_empty' => 'Полки не созданы', 'shelves_create' => 'Создать новую полку', @@ -80,7 +80,7 @@ return [ 'shelves_save' => 'Сохранить полку', 'shelves_books' => 'Книги из этой полки', 'shelves_add_books' => 'Добавить книгу в эту полку', - 'shelves_drag_books' => 'Перетащите книгу сюда, чтобы добавить на эту полку', + 'shelves_drag_books' => 'Перетащите книги сюда, чтобы добавить их на эту полку', 'shelves_empty_contents' => 'На этой полке нет книг', 'shelves_edit_and_assign' => 'Изменить полку для привязки книг', 'shelves_edit_named' => 'Редактировать полку :name', @@ -91,16 +91,16 @@ return [ 'shelves_delete_confirmation' => 'Вы уверены, что хотите удалить эту полку?', 'shelves_permissions' => 'Доступы к книжной полке', 'shelves_permissions_updated' => 'Доступы к книжной полке обновлены', - 'shelves_permissions_active' => 'Доступы к книжной полке активны', + 'shelves_permissions_active' => 'Действующие разрешения книжной полки', 'shelves_copy_permissions_to_books' => 'Наследовать доступы книгам', 'shelves_copy_permissions' => 'Копировать доступы', 'shelves_copy_permissions_explain' => 'Это применит текущие настройки доступов этой книжной полки ко всем книгам, содержащимся внутри. Перед активацией убедитесь, что все изменения в доступах этой книжной полки сохранены.', - 'shelves_copy_permission_success' => 'Доступы книжной полки скопированы для :count books', + 'shelves_copy_permission_success' => 'Доступы книжной полки скопированы для :count книг', // Books 'book' => 'Книга', 'books' => 'Книги', - 'x_books' => ':count книга|:count книг', + 'x_books' => ':count книга|:count книги|:count книг', 'books_empty' => 'Нет созданных книг', 'books_popular' => 'Популярные книги', 'books_recent' => 'Недавние книги', @@ -115,7 +115,7 @@ return [ 'books_delete_confirmation' => 'Вы действительно хотите удалить эту книгу?', 'books_edit' => 'Редактировать книгу', 'books_edit_named' => 'Редактировать книгу :bookName', - 'books_form_book_name' => 'Имя книги', + 'books_form_book_name' => 'Название книги', 'books_save' => 'Сохранить книгу', 'books_permissions' => 'Разрешения на книгу', 'books_permissions_updated' => 'Разрешения на книгу обновлены', @@ -123,23 +123,23 @@ return [ 'books_empty_create_page' => 'Создать новую страницу', 'books_empty_sort_current_book' => 'Сортировка текущей книги', 'books_empty_add_chapter' => 'Добавить главу', - 'books_permissions_active' => 'действующие разрешения на книгу', + 'books_permissions_active' => 'Действующие разрешения книги', 'books_search_this' => 'Поиск в этой книге', 'books_navigation' => 'Навигация по книге', 'books_sort' => 'Сортировка содержимого книги', 'books_sort_named' => 'Сортировка книги :bookName', - 'books_sort_name' => 'Сортировать по имени', - 'books_sort_created' => 'Сортировать по дате создания', - 'books_sort_updated' => 'Сортировать по дате обновления', - 'books_sort_chapters_first' => 'Сначала главы', - 'books_sort_chapters_last' => 'Главы последние', + 'books_sort_name' => 'По имени', + 'books_sort_created' => 'По дате создания', + 'books_sort_updated' => 'По дате обновления', + 'books_sort_chapters_first' => 'Главы в начале', + 'books_sort_chapters_last' => 'Главы в конце', 'books_sort_show_other' => 'Показать другие книги', 'books_sort_save' => 'Сохранить новый порядок', // Chapters 'chapter' => 'Глава', 'chapters' => 'Главы', - 'x_chapters' => ':count глава|:count главы', + 'x_chapters' => ':count глава|:count главы|:count глав', 'chapters_popular' => 'Популярные главы', 'chapters_new' => 'Новая глава', 'chapters_create' => 'Создать новую главу', @@ -148,7 +148,7 @@ return [ 'chapters_delete_explain' => 'Это удалит главу с именем \':chapterName\'. Все страницы главы будут удалены и перемещены напрямую в книгу.', 'chapters_delete_confirm' => 'Вы действительно хотите удалить эту главу?', 'chapters_edit' => 'Редактировать главу', - 'chapters_edit_named' => 'редактировать главу :chapterName', + 'chapters_edit_named' => 'Редактировать главу :chapterName', 'chapters_save' => 'Сохранить главу', 'chapters_move' => 'Переместить главу', 'chapters_move_named' => 'Переместить главу :chapterName', @@ -162,12 +162,12 @@ return [ // Pages 'page' => 'Страница', 'pages' => 'Страницы', - 'x_pages' => ':count страница|:count страниц', + 'x_pages' => ':count страница|:count страницы|:count страниц', 'pages_popular' => 'Популярные страницы', 'pages_new' => 'Новая страница', 'pages_attachments' => 'Вложения', 'pages_navigation' => 'Навигация на странице', - 'pages_delete' => 'Удалить устраницу', + 'pages_delete' => 'Удалить страницу', 'pages_delete_named' => 'Удалить страницу :pageName', 'pages_delete_draft_named' => 'Удалить черновик :pageName', 'pages_delete_draft' => 'Удалить черновик', @@ -183,13 +183,13 @@ return [ 'pages_editing_page' => 'Редактирование страницы', 'pages_edit_draft_save_at' => 'Черновик сохранён в ', 'pages_edit_delete_draft' => 'Удалить черновик', - 'pages_edit_discard_draft' => 'отменить черновик', + 'pages_edit_discard_draft' => 'Отменить черновик', 'pages_edit_set_changelog' => 'Задать список изменений', - 'pages_edit_enter_changelog_desc' => 'Введите краткое описание изменений, которые вы сделали', + 'pages_edit_enter_changelog_desc' => 'Введите краткое описание внесенных изменений', 'pages_edit_enter_changelog' => 'Введите список изменений', 'pages_save' => 'Сохранить страницу', 'pages_title' => 'Заголовок страницы', - 'pages_name' => 'Имя страницы', + 'pages_name' => 'Название страницы', 'pages_md_editor' => 'Редактор', 'pages_md_preview' => 'Просмотр', 'pages_md_insert_image' => 'Вставить изображение', @@ -204,14 +204,14 @@ return [ 'pages_permissions' => 'Разрешения страницы', 'pages_permissions_success' => 'Pазрешения страницы обновлены', 'pages_revision' => 'Версия', - 'pages_revisions' => 'Версия страницы', + 'pages_revisions' => 'Версии страницы', 'pages_revisions_named' => 'Версии страницы для :pageName', 'pages_revision_named' => 'Версия страницы для :pageName', 'pages_revisions_created_by' => 'Создана', 'pages_revisions_date' => 'Дата версии', 'pages_revisions_number' => '#', - 'pages_revisions_numbered' => 'Ревизия #:id', - 'pages_revisions_numbered_changes' => 'Ревизия #:id изменения', + 'pages_revisions_numbered' => 'Версия #:id', + 'pages_revisions_numbered_changes' => 'Изменения в версии #:id', 'pages_revisions_changelog' => 'Список изменений', 'pages_revisions_changes' => 'Изменения', 'pages_revisions_current' => 'Текущая версия', @@ -223,8 +223,8 @@ return [ 'pages_permissions_active' => 'Действующие разрешения на страницу', 'pages_initial_revision' => 'Первоначальное издание', 'pages_initial_name' => 'Новая страница', - 'pages_editing_draft_notification' => 'Вы в настоящее время редактируете черновик, который был сохранен :timeDiff.', - 'pages_draft_edited_notification' => 'Эта страница была обновлена до этого момента. Рекомендуется отменить этот черновик', + 'pages_editing_draft_notification' => 'В настоящее время вы редактируете черновик, который был сохранён :timeDiff.', + 'pages_draft_edited_notification' => 'Эта страница была обновлена до этого момента. Рекомендуется отменить этот черновик.', 'pages_draft_edit_active' => [ 'start_a' => ':count пользователей начали редактирование этой страницы', 'start_b' => ':userName начал редактирование этой страницы', @@ -247,8 +247,8 @@ return [ 'tag_value' => 'Значение тега (опционально)', 'tags_explain' => "Добавьте теги, чтобы лучше классифицировать ваш контент. \\n Вы можете присвоить значение тегу для более глубокой организации.", 'tags_add' => 'Добавить тег', - 'tags_remove' => 'Удалить этот тэг', - 'attachments' => 'Вложение', + 'tags_remove' => 'Удалить этот тег', + 'attachments' => 'Вложения', 'attachments_explain' => 'Загрузите несколько файлов или добавьте ссылку для отображения на своей странице. Они видны на боковой панели страницы.', 'attachments_explain_instant_save' => 'Изменения здесь сохраняются мгновенно.', 'attachments_items' => 'Прикрепленные элементы', @@ -258,34 +258,34 @@ return [ 'attachments_delete_confirm' => 'Нажмите \'Удалить\' еще раз, чтобы подтвердить удаление этого файла.', 'attachments_dropzone' => 'Перетащите файл сюда или нажмите здесь, чтобы загрузить файл', 'attachments_no_files' => 'Файлы не загружены', - 'attachments_explain_link' => 'Вы можете присоединить ссылку, если вы предпочитаете не загружать файл. Это может быть ссылка на другую страницу или ссылку на файл в облаке', - 'attachments_link_name' => 'Имя ссылки', + 'attachments_explain_link' => 'Вы можете присоединить ссылку, если вы предпочитаете не загружать файл. Это может быть ссылка на другую страницу или ссылка на файл в облаке.', + 'attachments_link_name' => 'Название ссылки', 'attachment_link' => 'Ссылка на вложение', 'attachments_link_url' => 'Ссылка на файл', 'attachments_link_url_hint' => 'URL-адрес сайта или файла', 'attach' => 'Прикрепить', 'attachments_edit_file' => 'Редактировать файл', - 'attachments_edit_file_name' => 'Имя файла', - 'attachments_edit_drop_upload' => 'перетащите файлы или нажмите здесь, чтобы загрузить и перезаписать', - 'attachments_order_updated' => 'Прикрепленный файл обновлен', - 'attachments_updated_success' => 'Детали файла обновлены', - 'attachments_deleted' => 'Приложение удалено', + 'attachments_edit_file_name' => 'Название файла', + 'attachments_edit_drop_upload' => 'Перетащите файлы или нажмите здесь, чтобы загрузить и перезаписать', + 'attachments_order_updated' => 'Порядок вложений обновлен', + 'attachments_updated_success' => 'Детали вложения обновлены', + 'attachments_deleted' => 'Вложение удалено', 'attachments_file_uploaded' => 'Файл успешно загружен', 'attachments_file_updated' => 'Файл успешно обновлен', 'attachments_link_attached' => 'Ссылка успешно присоединена к странице', 'templates' => 'Шаблоны', - 'templates_set_as_template' => 'Страница это шаблон', + 'templates_set_as_template' => 'Страница является шаблоном', 'templates_explain_set_as_template' => 'Вы можете назначить эту страницу в качестве шаблона, её содержимое будет использоваться при создании других страниц. Пользователи смогут использовать этот шаблон в случае, если имеют разрешения на просмотр этой страницы.', 'templates_replace_content' => 'Заменить содержимое страницы', 'templates_append_content' => 'Добавить к содержанию страницы', 'templates_prepend_content' => 'Добавить в начало содержимого страницы', // Profile View - 'profile_user_for_x' => 'пользователь уже :time', + 'profile_user_for_x' => 'Пользователь уже :time', 'profile_created_content' => 'Созданный контент', - 'profile_not_created_pages' => ':userName не создавал страниц', - 'profile_not_created_chapters' => ':userName не создавал глав', - 'profile_not_created_books' => ':userName не создавал ни одной книги', + 'profile_not_created_pages' => ':userName не создал ни одной страницы', + 'profile_not_created_chapters' => ':userName не создал ни одной главы', + 'profile_not_created_books' => ':userName не создал ни одной книги', 'profile_not_created_shelves' => ':userName не создал ни одной полки', // Comments @@ -295,7 +295,7 @@ return [ 'comment_placeholder' => 'Оставить комментарий здесь', 'comment_count' => '{0} Нет комментариев|{1} 1 комментарий|[2,*] :count комментария', 'comment_save' => 'Сохранить комментарий', - 'comment_saving' => 'Сохраниение комментария...', + 'comment_saving' => 'Сохранение комментария...', 'comment_deleting' => 'Удаление комментария...', 'comment_new' => 'Новый комментарий', 'comment_created' => 'прокомментировал :createDiff', @@ -307,8 +307,8 @@ return [ 'comment_in_reply_to' => 'В ответ на :commentId', // Revision - 'revision_delete_confirm' => 'Удалить эту ревизию?', - 'revision_restore_confirm' => 'Восстановить эту ревизию? Текущее содержимое будет заменено.', - 'revision_delete_success' => 'Ревизия удалена', + 'revision_delete_confirm' => 'Удалить эту версию?', + 'revision_restore_confirm' => 'Вы уверены, что хотите восстановить эту версию? Текущее содержимое страницы будет заменено.', + 'revision_delete_success' => 'Версия удалена', 'revision_cannot_delete_latest' => 'Нельзя удалить последнюю версию.' ]; \ No newline at end of file diff --git a/resources/lang/ru/errors.php b/resources/lang/ru/errors.php index 2f5f74caa..0cc4a72b1 100644 --- a/resources/lang/ru/errors.php +++ b/resources/lang/ru/errors.php @@ -9,23 +9,23 @@ return [ 'permissionJson' => 'У вас нет разрешения для запрашиваемого действия.', // Auth - 'error_user_exists_different_creds' => 'Пользователь с электронной почтой: :email уже существует, но с другими учетными данными.', - 'email_already_confirmed' => 'Электронная почта уже подтверждена, попробуйте войти в систему.', + 'error_user_exists_different_creds' => 'Пользователь с электронной почтой :email уже существует, но с другими учетными данными.', + 'email_already_confirmed' => 'Адрес электронной почты уже был подтвержден, попробуйте войти в систему.', 'email_confirmation_invalid' => 'Этот токен подтверждения недействителен или уже используется. Повторите попытку регистрации.', 'email_confirmation_expired' => 'Истек срок действия токена. Отправлено новое письмо с подтверждением.', - 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed', + 'email_confirmation_awaiting' => 'Для используемой учетной записи необходимо подтвердить адрес электронной почты', 'ldap_fail_anonymous' => 'Недопустимый доступ LDAP с использованием анонимной привязки', 'ldap_fail_authed' => 'Не удалось получить доступ к LDAP, используя данные dn & password', - 'ldap_extension_not_installed' => 'LDAP расширения для PHP не установлено', - 'ldap_cannot_connect' => 'Не удается подключиться к серверу ldap, не удалось выполнить начальное соединение', - 'saml_already_logged_in' => 'Already logged in', - 'saml_user_not_registered' => 'The user :name is not registered and automatic registration is disabled', - 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system', - 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.', - 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization', + 'ldap_extension_not_installed' => 'LDAP расширение для PHP не установлено', + 'ldap_cannot_connect' => 'Не удается подключиться к серверу LDAP, не удалось выполнить начальное соединение', + 'saml_already_logged_in' => 'Уже вошли в систему', + 'saml_user_not_registered' => 'Пользователь :name не зарегистрирован. Автоматическая регистрация отключена', + 'saml_no_email_address' => 'Не удалось найти email для этого пользователя в данных, предоставленных внешней системой аутентификации', + 'saml_invalid_response_id' => 'Запрос от внешней системы аутентификации не распознается процессом, запущенным этим приложением. Переход назад после входа в систему может вызвать эту проблему.', + 'saml_fail_authed' => 'Вход с помощью :system не удался, система не предоставила успешную авторизацию', 'social_no_action_defined' => 'Действие не определено', 'social_login_bad_response' => "При попытке входа с :socialAccount произошла ошибка: \\n:error", - 'social_account_in_use' => 'Этот :socialAccount аккаунт уже исопльзуется, попробуйте войти с параметрами :socialAccount.', + 'social_account_in_use' => 'Этот :socialAccount аккаунт уже используется, попробуйте войти с параметрами :socialAccount.', 'social_account_email_in_use' => 'Электронный ящик :email уже используется. Если у вас уже есть учетная запись, вы можете подключить свою учетную запись :socialAccount из настроек своего профиля.', 'social_account_existing' => 'Этот :socialAccount уже привязан к вашему профилю.', 'social_account_already_used_existing' => 'Этот :socialAccount уже используется другим пользователем.', @@ -36,14 +36,14 @@ return [ 'invite_token_expired' => 'Срок действия приглашения истек. Вместо этого вы можете попытаться сбросить пароль своей учетной записи.', // System - 'path_not_writable' => 'Невозможно загрузить файл по пути :filePath . Убедитесь что сервер доступен для записи.', + 'path_not_writable' => 'Невозможно загрузить файл по пути :filePath. Убедитесь что сервер доступен для записи.', 'cannot_get_image_from_url' => 'Не удается получить изображение из :url', 'cannot_create_thumbs' => 'Сервер не может создавать эскизы. Убедитесь, что у вас установлено расширение GD PHP.', - 'server_upload_limit' => 'Сервер не разрешает загрузку такого размера. Попробуйте уменьшить размер файла.', + 'server_upload_limit' => 'Сервер не разрешает загрузку файлов такого размера. Попробуйте уменьшить размер файла.', 'uploaded' => 'Сервер не позволяет загружать файлы такого размера. Пожалуйста, попробуйте файл меньше.', - 'image_upload_error' => 'Произошла ошибка при загрузке изображения.', + 'image_upload_error' => 'Произошла ошибка при загрузке изображения', 'image_upload_type_error' => 'Неправильный тип загружаемого изображения', - 'file_upload_timeout' => 'Выгрузка файла закончилась.', + 'file_upload_timeout' => 'Время загрузки файла истекло.', // Attachments 'attachment_page_mismatch' => 'Несоответствие страницы во время обновления вложения', @@ -51,7 +51,7 @@ return [ // Pages 'page_draft_autosave_fail' => 'Не удалось сохранить черновик. Перед сохранением этой страницы убедитесь, что у вас есть подключение к Интернету.', - 'page_custom_home_deletion' => 'Нельзя удалить страницу, установленную вместо главной страницы', + 'page_custom_home_deletion' => 'Невозможно удалить страницу, пока она установлена как домашняя страница', // Entities 'entity_not_found' => 'Объект не найден', @@ -61,39 +61,43 @@ return [ 'chapter_not_found' => 'Глава не найдена', 'selected_book_not_found' => 'Выбранная книга не найдена', 'selected_book_chapter_not_found' => 'Выбранная книга или глава не найдена', - 'guests_cannot_save_drafts' => 'Гости не могут сохранить черновики', + 'guests_cannot_save_drafts' => 'Гости не могут сохранять черновики', // Users 'users_cannot_delete_only_admin' => 'Вы не можете удалить единственного администратора', 'users_cannot_delete_guest' => 'Вы не можете удалить гостевого пользователя', // Roles - 'role_cannot_be_edited' => 'Невозможно отредактировать данную роль', + 'role_cannot_be_edited' => 'Эта роль не может быть изменена', 'role_system_cannot_be_deleted' => 'Эта роль является системной и не может быть удалена', - 'role_registration_default_cannot_delete' => 'Эта роль не может быть удалена, так как она устанолена в качестве роли по умолчанию', + 'role_registration_default_cannot_delete' => 'Эта роль не может быть удалена, так как она установлена в качестве роли по умолчанию', 'role_cannot_remove_only_admin' => 'Этот пользователь единственный с правами администратора. Назначьте роль администратора другому пользователю, прежде чем удалить этого.', // Comments - 'comment_list' => 'При получении комментариев произошла ошибка.', + 'comment_list' => 'Произошла ошибка при получении комментариев.', 'cannot_add_comment_to_draft' => 'Вы не можете добавлять комментарии к черновику.', - 'comment_add' => 'При добавлении / обновлении комментария произошла ошибка.', - 'comment_delete' => 'При удалении комментария произошла ошибка.', + 'comment_add' => 'Произошла ошибка при добавлении / обновлении комментария.', + 'comment_delete' => 'Произошла ошибка при удалении комментария.', 'empty_comment' => 'Нельзя добавить пустой комментарий.', // Error pages '404_page_not_found' => 'Страница не найдена', 'sorry_page_not_found' => 'Извините, страница, которую вы искали, не найдена.', + 'sorry_page_not_found_permission_warning' => 'Если вы ожидали что страница существует, возможно у вас нет прав для её просмотра.', 'return_home' => 'вернуться на главную страницу', 'error_occurred' => 'Произошла ошибка', - 'app_down' => ':appName в данный момент не достпуно', + 'app_down' => ':appName в данный момент не доступно', 'back_soon' => 'Скоро восстановится.', // API errors - 'api_no_authorization_found' => 'No authorization token found on the request', - 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect', - 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token', - 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect', - 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls', - 'api_user_token_expired' => 'The authorization token used has expired', + 'api_no_authorization_found' => 'Отсутствует токен авторизации в запросе', + 'api_bad_authorization_format' => 'Токен авторизации найден, но формат запроса неверен', + 'api_user_token_not_found' => 'Отсутствует соответствующий API токен для предоставленного токена авторизации', + 'api_incorrect_token_secret' => 'Секрет, предоставленный для данного использованного API токена неверен', + 'api_user_no_api_permission' => 'Владелец используемого API токена не имеет прав на выполнение вызовов API', + 'api_user_token_expired' => 'Срок действия используемого токена авторизации истек', + + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Ошибка при отправке тестового письма:', ]; diff --git a/resources/lang/ru/passwords.php b/resources/lang/ru/passwords.php index 5e7717803..d04970f08 100644 --- a/resources/lang/ru/passwords.php +++ b/resources/lang/ru/passwords.php @@ -6,8 +6,8 @@ */ return [ - 'password' => 'Пароль должен содержать не менее шести символов и совпадать с подтверждением.', - 'user' => "Пользователя с таким адресом не существует.", + 'password' => 'Пароль должен содержать не менее восьми символов и совпадать с подтверждением.', + 'user' => "Пользователя с данным адресом электронной почты не существует.", 'token' => 'Токен сброса пароля недействителен.', 'sent' => 'Ссылка для сброса пароля отправлена на вашу почту!', 'reset' => 'Ваш пароль был сброшен!', diff --git a/resources/lang/ru/settings.php b/resources/lang/ru/settings.php index ecd80c283..8eeb3bca1 100755 --- a/resources/lang/ru/settings.php +++ b/resources/lang/ru/settings.php @@ -13,55 +13,55 @@ return [ // App Settings 'app_customization' => 'Настройки', - 'app_features_security' => 'Функционал & Безопасность', - 'app_name' => 'Имя приложения', - 'app_name_desc' => 'Имя отображается в заголовке email отправленных системой.', - 'app_name_header' => 'Отображать имя приложения в заголовке', + 'app_features_security' => 'Функционал и безопасность', + 'app_name' => 'Название приложения', + 'app_name_desc' => 'Название отображается в заголовках и сообщениях электронной почты отправленных системой.', + 'app_name_header' => 'Отображать название приложения в заголовке', 'app_public_access' => 'Публичный доступ', 'app_public_access_desc' => 'Включение этой опции позволит неавторизованным посетителям получить доступ к содержимому вашего BookStack.', 'app_public_access_desc_guest' => 'Публичный доступ контролируется через настройки пользователя "Guest"', 'app_public_access_toggle' => 'Разрешить публичный доступ', 'app_public_viewing' => 'Разрешить публичный просмотр?', - 'app_secure_images' => 'Загрузка изображений с высоким уровнем безопасности.', + 'app_secure_images' => 'Загрузка изображений с высоким уровнем безопасности', 'app_secure_images_toggle' => 'Включить загрузку изображений с высоким уровнем безопасности', 'app_secure_images_desc' => 'Для высокой производительности все изображения являются общедоступными. Этот параметр добавляет случайную строку перед URL изображения. Убедитесь, что индексация каталогов отключена, для предотвращения легкого доступа.', - 'app_editor' => 'Редактор страницы', + 'app_editor' => 'Редактор страниц', 'app_editor_desc' => 'Выберите, какой редактор будет использоваться всеми пользователями для редактирования страниц.', 'app_custom_html' => 'Пользовательский контент заголовка HTML', 'app_custom_html_desc' => 'Любой контент, добавленный здесь, будет вставлен в нижнюю часть раздела каждой страницы. Это удобно для переопределения стилей или добавления кода аналитики.', 'app_custom_html_disabled_notice' => 'Пользовательский контент заголовка HTML отключен на этой странице, чтобы гарантировать отмену любых критических изменений', - 'app_logo' => 'Лого приложения', + 'app_logo' => 'Логотип приложения', 'app_logo_desc' => 'Это изображение должно быть 43px в высоту.
Большое изображение будет уменьшено.', 'app_primary_color' => 'Основной цвет приложения', 'app_primary_color_desc' => 'Значение должно быть указано в hex-формате.
Оставьте пустым чтобы использовать цвет по умолчанию.', 'app_homepage' => 'Стартовая страница приложения', 'app_homepage_desc' => 'Выберите страницу, которая будет отображаться на главной странице вместо стандартной. Права на страницы игнорируются для выбранных страниц.', 'app_homepage_select' => 'Выберите страницу', - 'app_disable_comments' => 'Отключение комментов', + 'app_disable_comments' => 'Отключение комментариев', 'app_disable_comments_toggle' => 'Отключить комментарии', - 'app_disable_comments_desc' => 'Отключение комментов на всех страницах. Существующие комментарии отображаться не будут.', + 'app_disable_comments_desc' => 'Отключение комментариев на всех страницах. Существующие комментарии будут скрыты.', // Color settings - 'content_colors' => 'Content Colors', - 'content_colors_desc' => 'Sets colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.', - 'bookshelf_color' => 'Shelf Color', - 'book_color' => 'Book Color', - 'chapter_color' => 'Chapter Color', - 'page_color' => 'Page Color', - 'page_draft_color' => 'Page Draft Color', + 'content_colors' => 'Цвета элементов иерархии', + 'content_colors_desc' => 'Задает цвета для всех элементов организационной иерархии страницы. Для удобства чтения рекомендуется выбирать цвета, яркость которых близка к цветам по умолчанию.', + 'bookshelf_color' => 'Цвет полки', + 'book_color' => 'Цвет книги', + 'chapter_color' => 'Цвет главы', + 'page_color' => 'Цвет страницы', + 'page_draft_color' => 'Цвет черновика страницы', // Registration Settings 'reg_settings' => 'Настройки регистрации', 'reg_enable' => 'Разрешить регистрацию', 'reg_enable_toggle' => 'Разрешить регистрацию', - 'reg_enable_desc' => 'Если регистрация разрешена, пользователь сможет зарегистрироваться в системе самостоятельно. При регистрации назначается роль пользователя по умолчанию', + 'reg_enable_desc' => 'Если регистрация разрешена, пользователь сможет зарегистрироваться в системе самостоятельно. При регистрации назначается роль пользователя по умолчанию.', 'reg_default_role' => 'Роль пользователя по умолчанию после регистрации', - 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.', + 'reg_enable_external_warning' => 'Вышеуказанный параметр игнорируется, пока активна внешняя аутентификация LDAP или SAML. Учетные записи для несуществующих пользователей будут создаваться автоматически при условии успешной аутентификации на внешнем сервере.', 'reg_email_confirmation' => 'Подтверждение электронной почты', 'reg_email_confirmation_toggle' => 'Требовать подтверждение по электронной почте', 'reg_confirm_email_desc' => 'При использовании ограничения по домену - подтверждение обязательно, этот пункт игнорируется.', 'reg_confirm_restrict_domain' => 'Ограничить регистрацию по домену', - 'reg_confirm_restrict_domain_desc' => 'Введите список доменов почты через запятую, для которых разрешена регистрация. Пользователям будет отправлено письмо для подтверждения адреса перед входом в приложение.
Обратите внимание, что пользователи смогут изменять свой адрес после регистрации.', + 'reg_confirm_restrict_domain_desc' => 'Введите список доменов почты через запятую, для которых разрешена регистрация. Пользователям будет отправлено письмо для подтверждения адреса перед входом в приложение.
Обратите внимание, что пользователи смогут изменить свой адрес после регистрации.', 'reg_confirm_restrict_domain_placeholder' => 'Без ограничений', // Maintenance settings @@ -85,27 +85,27 @@ return [ 'roles' => 'Роли', 'role_user_roles' => 'Роли пользователя', 'role_create' => 'Добавить роль', - 'role_create_success' => 'Роль упешно добавлена', + 'role_create_success' => 'Роль успешно добавлена', 'role_delete' => 'Удалить роль', 'role_delete_confirm' => 'Это удалит роль с именем \':roleName\'.', - 'role_delete_users_assigned' => 'Эта роль назначена :userCount пользователям. Если вы хотите перенести их из этой роли, выберите новую роль ниже.', - 'role_delete_no_migration' => "Не мигрировать пользователей", + 'role_delete_users_assigned' => 'Эта роль назначена :userCount пользователям. Если вы хотите перенести их, выберите новую роль ниже.', + 'role_delete_no_migration' => "Не переносить пользователей", 'role_delete_sure' => 'Вы уверены что хотите удалить данную роль?', 'role_delete_success' => 'Роль успешно удалена', 'role_edit' => 'Редактировать роль', 'role_details' => 'Детали роли', - 'role_name' => 'Имя роли', + 'role_name' => 'Название роли', 'role_desc' => 'Краткое описание роли', 'role_external_auth_id' => 'Внешние ID авторизации', 'role_system' => 'Системные разрешения', 'role_manage_users' => 'Управление пользователями', 'role_manage_roles' => 'Управление ролями и правами на роли', 'role_manage_entity_permissions' => 'Управление правами на все книги, главы и страницы', - 'role_manage_own_entity_permissions' => 'Управление разрешениями для собственных книг, разделов и страниц', + 'role_manage_own_entity_permissions' => 'Управление разрешениями для собственных книг, глав и страниц', 'role_manage_page_templates' => 'Управление шаблонами страниц', - 'role_access_api' => 'Access system API', + 'role_access_api' => 'Доступ к системному API', 'role_manage_settings' => 'Управление настройками приложения', - 'role_asset' => 'Разрешение для активации', + 'role_asset' => 'Права доступа к материалам', 'role_asset_desc' => 'Эти разрешения контролируют доступ по умолчанию к параметрам внутри системы. Разрешения на книги, главы и страницы перезапишут эти разрешения.', 'role_asset_admins' => 'Администраторы автоматически получают доступ ко всему контенту, но эти опции могут отображать или скрывать параметры пользовательского интерфейса.', 'role_all' => 'Все', @@ -123,16 +123,16 @@ return [ 'users_search' => 'Поиск пользователей', 'users_details' => 'Данные пользователя', 'users_details_desc' => 'Укажите имя и адрес электронной почты для этого пользователя. Адрес электронной почты будет использоваться для входа в приложение.', - 'users_details_desc_no_email' => 'Задайте имя для этого пользователя, чтобы другие могли его узнать', + 'users_details_desc_no_email' => 'Задайте имя для этого пользователя, чтобы другие могли его узнать.', 'users_role' => 'Роли пользователя', 'users_role_desc' => 'Назначьте роли пользователю. Если назначено несколько ролей, разрешения будут суммироваться и пользователь получит все права назначенных ролей.', 'users_password' => 'Пароль пользователя', - 'users_password_desc' => 'Установите пароль для входа в приложение. Должно быть не менее 6 символов.', - 'users_send_invite_text' => 'Вы можете отправить этому пользователю email с приглашением, которое позволит ему установить пароль самостоятельно или задайте пароль сами.', + 'users_password_desc' => 'Установите пароль для входа в приложение. Длина пароля должна быть не менее 6 символов.', + 'users_send_invite_text' => 'Вы можете отправить этому пользователю письмо с приглашением, которое позволит ему установить пароль самостоятельно или задайте пароль сами.', 'users_send_invite_option' => 'Отправить пользователю письмо с приглашением', 'users_external_auth_id' => 'Внешний ID аутентификации', - 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.', - 'users_password_warning' => 'Заполните ниже только если вы хотите сменить свой пароль.', + 'users_external_auth_id_desc' => 'Этот ID используется для связи с вашей внешней системой аутентификации.', + 'users_password_warning' => 'Заполните поля ниже только если вы хотите изменить пароль.', 'users_system_public' => 'Этот пользователь представляет любых гостевых пользователей, которые посещают ваше приложение. Он не может использоваться для входа в систему и назначается автоматически.', 'users_delete' => 'Удалить пользователя', 'users_delete_named' => 'Удалить пользователя :userName', @@ -146,38 +146,38 @@ return [ 'users_avatar_desc' => 'Выберите изображение. Изображение должно быть квадратным, размером около 256px.', 'users_preferred_language' => 'Предпочитаемый язык', 'users_preferred_language_desc' => 'Этот параметр изменит язык интерфейса приложения. Это не влияет на созданный пользователем контент.', - 'users_social_accounts' => 'Аккаунты Соцсетей', - 'users_social_accounts_info' => 'Здесь вы можете подключить другие учетные записи для более быстрого и легкого входа в систему. Отключение учетной записи здесь не возможно. Отмените доступ к настройкам вашего профиля в подключенном аккаунте соцсети.', + 'users_social_accounts' => 'Аккаунты социальных сетей', + 'users_social_accounts_info' => 'Здесь вы можете подключить другие учетные записи для более быстрого и легкого входа в систему. Отключение учетной записи здесь не возможно. Отмените доступ к настройкам вашего профиля в подключенном социальном аккаунте.', 'users_social_connect' => 'Подключить аккаунт', 'users_social_disconnect' => 'Отключить аккаунт', - 'users_social_connected' => ':socialAccount аккаунт упешно подключен к вашему профилю.', + 'users_social_connected' => ':socialAccount аккаунт успешно подключен к вашему профилю.', 'users_social_disconnected' => ':socialAccount аккаунт успешно отключен от вашего профиля.', - 'users_api_tokens' => 'API Tokens', - 'users_api_tokens_none' => 'No API tokens have been created for this user', - 'users_api_tokens_create' => 'Create Token', - 'users_api_tokens_expires' => 'Expires', - 'users_api_tokens_docs' => 'API Documentation', + 'users_api_tokens' => 'API токены', + 'users_api_tokens_none' => 'Для этого пользователя не создано API токенов', + 'users_api_tokens_create' => 'Создать токен', + 'users_api_tokens_expires' => 'Истекает', + 'users_api_tokens_docs' => 'Документация', // API Tokens - 'user_api_token_create' => 'Create API Token', - 'user_api_token_name' => 'Name', - 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.', - 'user_api_token_expiry' => 'Expiry Date', - 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.', - 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.', - 'user_api_token_create_success' => 'API token successfully created', - 'user_api_token_update_success' => 'API token successfully updated', - 'user_api_token' => 'API Token', - 'user_api_token_id' => 'Token ID', - 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.', - 'user_api_token_secret' => 'Token Secret', - 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.', - 'user_api_token_created' => 'Token Created :timeAgo', - 'user_api_token_updated' => 'Token Updated :timeAgo', - 'user_api_token_delete' => 'Delete Token', - 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.', - 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?', - 'user_api_token_delete_success' => 'API token successfully deleted', + 'user_api_token_create' => 'Создать токен', + 'user_api_token_name' => 'Имя', + 'user_api_token_name_desc' => 'Присвойте вашему токену читаемое имя, в качестве напоминания о его назначении в будущем.', + 'user_api_token_expiry' => 'Истекает', + 'user_api_token_expiry_desc' => 'Установите дату истечения срока действия этого токена. После этой даты запросы, сделанные с использованием этого токена, больше не будут работать. Если оставить это поле пустым, срок действия истечет через 100 лет.', + 'user_api_token_create_secret_message' => 'Сразу после создания этого токена будут сгенерированы и отображены идентификатор токена и секретный ключ. Секретный ключ будет показан только один раз, поэтому перед продолжением обязательно скопируйте значение в безопасное и надежное место.', + 'user_api_token_create_success' => 'API токен успешно создан', + 'user_api_token_update_success' => 'API токен успешно обновлен', + 'user_api_token' => 'API токен', + 'user_api_token_id' => 'Идентификатор токена', + 'user_api_token_id_desc' => 'Это нередактируемый системный идентификатор для этого токена, который необходимо указывать в запросах API.', + 'user_api_token_secret' => 'Секретный ключ', + 'user_api_token_secret_desc' => 'Это сгенерированный системой секретный ключ для этого токена, который необходимо будет указывать в запросах API. Он будет показан только один раз, поэтому скопируйте это значение в безопасное и надежное место.', + 'user_api_token_created' => 'Токен создан :timeAgo', + 'user_api_token_updated' => 'Токен обновлён :timeAgo', + 'user_api_token_delete' => 'Удалить токен', + 'user_api_token_delete_warning' => 'Это полностью удалит API токен с именем \':tokenName\' из системы.', + 'user_api_token_delete_confirm' => 'Вы уверены, что хотите удалить этот API токен?', + 'user_api_token_delete_success' => 'API токен успешно удален', //! If editing translations files directly please ignore this in all //! languages apart from en. Content will be auto-copied from en. @@ -185,27 +185,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => 'Dansk', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/ru/validation.php b/resources/lang/ru/validation.php index 80cd89fd5..e5e9d1eec 100644 --- a/resources/lang/ru/validation.php +++ b/resources/lang/ru/validation.php @@ -19,8 +19,8 @@ return [ 'between' => [ 'numeric' => ':attribute должен быть между :min и :max.', 'file' => ':attribute должен быть между :min и :max килобайт.', - 'string' => 'длина :attribute должена быть между :min и :max символами.', - 'array' => ':attribute должен содержать не менее :min и не более:max элементов.', + 'string' => 'длина :attribute должна быть между :min и :max символами.', + 'array' => ':attribute должен содержать не менее :min и не более :max элементов.', ], 'boolean' => ':attribute поле может быть только true или false.', 'confirmed' => ':attribute подтверждение не совпадает.', @@ -30,19 +30,19 @@ return [ 'digits' => ':attribute должен состоять из :digits цифр.', 'digits_between' => ':attribute должен иметь от :min до :max цифр.', 'email' => ':attribute должен быть корректным email адресом.', - 'ends_with' => 'The :attribute must end with one of the following: :values', + 'ends_with' => ':attribute должен заканчиваться одним из следующих: :values', 'filled' => ':attribute поле необходимо.', 'gt' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', + 'numeric' => 'Значение :attribute должно быть больше чем :value.', + 'file' => 'Значение :attribute должно быть больше :value килобайт.', + 'string' => 'Значение :attribute должно быть больше :value символов.', + 'array' => 'Значение :attribute должно содержать больше :value элементов.', ], 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal :value.', - 'file' => 'The :attribute must be greater than or equal :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal :value characters.', - 'array' => 'The :attribute must have :value items or more.', + 'numeric' => 'Значение :attribute должно быть больше или равно :value.', + 'file' => 'Значение :attribute должно быть больше или равно :value килобайт.', + 'string' => 'Значение :attribute должно быть больше или равно :value символам.', + 'array' => ':attribute должен иметь :value элементов или больше.', ], 'exists' => 'выделенный :attribute некорректен.', 'image' => ':attribute должен быть изображением.', @@ -50,20 +50,20 @@ return [ 'in' => 'выделенный :attribute некорректен.', 'integer' => ':attribute должно быть целое число.', 'ip' => ':attribute должен быть корректным IP адресом.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'json' => 'The :attribute must be a valid JSON string.', + 'ipv4' => ':attribute должен быть корректным IPv4-адресом.', + 'ipv6' => ':attribute должен быть корректным IPv6-адресом.', + 'json' => ':attribute должен быть допустимой строкой JSON.', 'lt' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', + 'numeric' => 'Значение :attribute должно быть меньше, чем :value.', + 'file' => 'Значение :attribute должно быть меньше :value килобайт.', + 'string' => 'Значение :attribute должно быть меньше :value символов.', + 'array' => 'Значение :attribute должно быть меньше :value элементов.', ], 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal :value.', - 'file' => 'The :attribute must be less than or equal :value kilobytes.', - 'string' => 'The :attribute must be less than or equal :value characters.', - 'array' => 'The :attribute must not have more than :value items.', + 'numeric' => 'Значение :attribute должно быть меньше или равно :value.', + 'file' => 'Значение :attribute должно быть меньше или равно :value килобайт.', + 'string' => 'Значение :attribute должно быть меньше или равно :value символам.', + 'array' => 'Поле :attribute не должно содержать больше :value элементов.', ], 'max' => [ 'numeric' => ':attribute не может быть больше чем :max.', @@ -73,16 +73,16 @@ return [ ], 'mimes' => ':attribute должен быть файлом с типом: :values.', 'min' => [ - 'numeric' => ':attribute должен быть хотя бы :min.', + 'numeric' => 'Поле :attribute должно быть не менее :min.', 'file' => ':attribute должен быть минимум :min килобайт.', 'string' => ':attribute должен быть минимум :min символов.', 'array' => ':attribute должен содержать хотя бы :min элементов.', ], 'no_double_extension' => ':attribute должен иметь только одно расширение файла.', 'not_in' => 'Выбранный :attribute некорректен.', - 'not_regex' => 'The :attribute format is invalid.', + 'not_regex' => 'Формат :attribute некорректен.', 'numeric' => ':attribute должен быть числом.', - 'regex' => ':attribute неправильный формат.', + 'regex' => 'Формат :attribute некорректен.', 'required' => ':attribute обязательное поле.', 'required_if' => ':attribute обязательное поле когда :other со значением :value.', 'required_with' => ':attribute обязательное поле когда :values установлено.', @@ -99,7 +99,7 @@ return [ 'string' => ':attribute должен быть строкой.', 'timezone' => ':attribute должен быть корректным часовым поясом.', 'unique' => ':attribute уже есть.', - 'url' => ':attribute имеет неправильный формат.', + 'url' => 'Формат :attribute некорректен.', 'uploaded' => 'Не удалось загрузить файл. Сервер не может принимать файлы такого размера.', // Custom validation lines diff --git a/resources/lang/sk/errors.php b/resources/lang/sk/errors.php index ef6474b4d..3b52a667c 100644 --- a/resources/lang/sk/errors.php +++ b/resources/lang/sk/errors.php @@ -83,6 +83,7 @@ return [ // Error pages '404_page_not_found' => 'Stránka nenájdená', 'sorry_page_not_found' => 'Prepáčte, stránka ktorú hľadáte nebola nájdená.', + 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.', 'return_home' => 'Vrátiť sa domov', 'error_occurred' => 'Nastala chyba', 'app_down' => ':appName je momentálne nedostupná', @@ -96,4 +97,7 @@ return [ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls', 'api_user_token_expired' => 'The authorization token used has expired', + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Error thrown when sending a test email:', + ]; diff --git a/resources/lang/sk/settings.php b/resources/lang/sk/settings.php index f4e67f2ff..ce6821890 100644 --- a/resources/lang/sk/settings.php +++ b/resources/lang/sk/settings.php @@ -185,27 +185,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => 'Dansk', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/sl/activities.php b/resources/lang/sl/activities.php new file mode 100644 index 000000000..01057f741 --- /dev/null +++ b/resources/lang/sl/activities.php @@ -0,0 +1,48 @@ + 'ustvarjena stran', + 'page_create_notification' => 'Zapis uspešno ustvarjen', + 'page_update' => 'nadgrajena stran', + 'page_update_notification' => 'Uspešno posodobljeno', + 'page_delete' => 'izbrisana stran', + 'page_delete_notification' => 'Uspešno izbrisano', + 'page_restore' => 'obnovljena stran', + 'page_restore_notification' => 'Uspešna obnovitev', + 'page_move' => 'premaknjena stran', + + // Chapters + 'chapter_create' => 'ustvarjeno poglavje', + 'chapter_create_notification' => 'Zapis uspešno ustvarjen', + 'chapter_update' => 'nadgradi poglavje', + 'chapter_update_notification' => 'Uspešno posodobljeno', + 'chapter_delete' => 'izbrisano poglavje', + 'chapter_delete_notification' => 'Uspešno izbrisano', + 'chapter_move' => 'premaknjeno poglavje', + + // Books + 'book_create' => 'knjiga ustvarjena', + 'book_create_notification' => 'Knjiga Uspešno Usvarjena', + 'book_update' => 'knjiga posodobljena', + 'book_update_notification' => 'Uspešno posodobljeno', + 'book_delete' => 'izbrisana knjiga', + 'book_delete_notification' => 'Uspešno izbrisano', + 'book_sort' => 'razvrščena knjiga', + 'book_sort_notification' => 'Knjiga Uspešno Razvrščena', + + // Bookshelves + 'bookshelf_create' => 'knjižna polica izdelana', + 'bookshelf_create_notification' => 'Knjižna Polica Izdelana', + 'bookshelf_update' => 'knjižna polica posodobljena', + 'bookshelf_update_notification' => 'Knjižna Polica Uspešno Posodobljena', + 'bookshelf_delete' => 'knjižna polica izbrisana', + 'bookshelf_delete_notification' => 'Knjižna Polica Uspešno Izbrisana', + + // Other + 'commented_on' => 'komentar na', +]; diff --git a/resources/lang/sl/auth.php b/resources/lang/sl/auth.php new file mode 100644 index 000000000..171baa328 --- /dev/null +++ b/resources/lang/sl/auth.php @@ -0,0 +1,77 @@ + 'Poverilnice se ne ujemajo s podatki v naši bazi.', + 'throttle' => 'Prekoračili ste število možnih prijav. Poskusite znova čez :seconds sekund.', + + // Login & Register + 'sign_up' => 'Registracija', + 'log_in' => 'Prijavi se', + 'log_in_with' => 'Prijavi se z :socialDriver', + 'sign_up_with' => 'Registriraj se z :socialDriver', + 'logout' => 'Odjavi se', + + 'name' => 'Ime', + 'username' => 'Uporabniško ime', + 'email' => 'E-pošta', + 'password' => 'Geslo', + 'password_confirm' => 'Potrdi geslo', + 'password_hint' => 'Mora vebovati vsaj 8 znakov', + 'forgot_password' => 'Pozabljeno geslo?', + 'remember_me' => 'Zapomni si me', + 'ldap_email_hint' => 'Prosimo vpišite e-poštni naslov za ta račun.', + 'create_account' => 'Ustvari račun', + 'already_have_account' => 'Že imate račun?', + 'dont_have_account' => 'Nimate računa?', + 'social_login' => 'Prijava z računi družbenih omrežij', + 'social_registration' => 'Registracija z družbenim omrežjem', + 'social_registration_text' => 'Registrirajte in prijavite se za uporabo drugih možnosti.', + + 'register_thanks' => 'Hvala za registracijo!', + 'register_confirm' => 'Prosimo preverite vaš e-poštni predal in kliknite na potrditveni gumb za dostop :appName.', + 'registrations_disabled' => 'Registracija trenutno ni mogoča', + 'registration_email_domain_invalid' => 'Ta e-poštna domena nima dostopa do te aplikacije', + 'register_success' => 'Hvala za registracijo! Sedaj ste registrirani in prijavljeni.', + + + // Password Reset + 'reset_password' => 'Ponastavi geslo', + 'reset_password_send_instructions' => 'Spodaj vpišite vaš e-poštni naslov in prejeli boste e-pošto s povezavo za ponastavitev gesla.', + 'reset_password_send_button' => 'Pošlji povezavo za ponastavitev', + 'reset_password_sent_success' => 'Povezava za ponastavitev gesla je bila poslana na :email.', + 'reset_password_success' => 'Vaše geslo je bilo uspešno spremenjeno.', + 'email_reset_subject' => 'Ponastavi svoje :appName geslo', + 'email_reset_text' => 'To e-poštno sporočilo ste prejeli, ker smo prejeli zahtevo za ponastavitev gesla za vaš račun.', + 'email_reset_not_requested' => 'Če niste zahtevali ponastavitve gesla, vam ni potrebno ničesar storiti.', + + + // Email Confirmation + 'email_confirm_subject' => 'Potrdi svojo e-pošto za :appName', + 'email_confirm_greeting' => 'Hvala ker ste se pridružili :appName!', + 'email_confirm_text' => 'Potrdite svoj e-naslov s klikom spodnjega gumba:', + 'email_confirm_action' => 'Potrdi e-pošto', + 'email_confirm_send_error' => 'E-poštna potrditev je zahtevana ampak sistem ni mogel poslati e-pošte. Kontaktirajte administratorja, da zagotovite, da je e-pošta pravilno nastavljena.', + 'email_confirm_success' => 'Vaš e-naslov je bil potrjen!', + 'email_confirm_resent' => 'Poslali smo vam potrditveno sporočilo. Prosimo preverite svojo elektronsko pošto.', + + 'email_not_confirmed' => 'Elektronski naslov ni potrjen', + 'email_not_confirmed_text' => 'Vaš e-naslov še ni bil potrjen.', + 'email_not_confirmed_click_link' => 'Prosimo kliknite na link v e-poštnem sporočilu, ki ste ga prejeli kmalu po registraciji.', + 'email_not_confirmed_resend' => 'Če ne najdete e-pošte jo lahko ponovno pošljete s potrditvijo obrazca.', + 'email_not_confirmed_resend_button' => 'Ponovno pošlji potrditveno e-pošto', + + // User Invite + 'user_invite_email_subject' => 'Povabljen si bil da se pridružiš :appName!', + 'user_invite_email_greeting' => 'Račun je bil ustvarjen zate na :appName.', + 'user_invite_email_text' => 'Klikni na spodnji gumb, da si nastaviš geslo in dobiš dostop:', + 'user_invite_email_action' => 'Nastavi geslo za račun', + 'user_invite_page_welcome' => 'Dobrodošli na :appName!', + 'user_invite_page_text' => 'Za zaključiti in pridobiti dostop si morate nastaviti geslo, ki bo uporabljeno za prijavo v :appName.', + 'user_invite_page_confirm_button' => 'Potrdi geslo', + 'user_invite_success' => 'Geslo nastavljeno, sedaj imaš dostop do :appName!' +]; \ No newline at end of file diff --git a/resources/lang/sl/common.php b/resources/lang/sl/common.php new file mode 100644 index 000000000..6508509ea --- /dev/null +++ b/resources/lang/sl/common.php @@ -0,0 +1,77 @@ + 'Prekliči', + 'confirm' => 'Potrdi', + 'back' => 'Nazaj', + 'save' => 'Shrani', + 'continue' => 'Naprej', + 'select' => 'Izberi', + 'toggle_all' => 'Vklopi vse', + 'more' => 'Več', + + // Form Labels + 'name' => 'Ime', + 'description' => 'Opis', + 'role' => 'Vloga', + 'cover_image' => 'Naslovna slika', + 'cover_image_description' => 'Slika naj bo okoli 440x250px velika.', + + // Actions + 'actions' => 'Dejanja', + 'view' => 'Pogled', + 'view_all' => 'Prikaži vse', + 'create' => 'Ustvari', + 'update' => 'Posodobi', + 'edit' => 'Uredi', + 'sort' => 'Razvrsti', + 'move' => 'Premakni', + 'copy' => 'Kopiraj', + 'reply' => 'Odgovori', + 'delete' => 'Izbriši', + 'search' => 'Išči', + 'search_clear' => 'Počisti iskanje', + 'reset' => 'Ponastavi', + 'remove' => 'Remove', + 'add' => 'Dodaj', + 'fullscreen' => 'Celozaslonski način', + + // Sort Options + 'sort_options' => 'Možnosti razvrščanja', + 'sort_direction_toggle' => 'Preklopi smer razvrščanja', + 'sort_ascending' => 'Razvrsti naraščajoče', + 'sort_descending' => 'Razvrsti padajoče', + 'sort_name' => 'Ime', + 'sort_created_at' => 'Datum nastanka', + 'sort_updated_at' => 'Datum posodobitve', + + // Misc + 'deleted_user' => 'Izbrisan uporabnik', + 'no_activity' => 'Ni aktivnosti za prikaz', + 'no_items' => 'Ni na voljo nobenih elementov', + 'back_to_top' => 'Nazaj na vrh', + 'toggle_details' => 'Preklopi podrobnosti', + 'toggle_thumbnails' => 'Preklopi sličice', + 'details' => 'Podrobnosti', + 'grid_view' => 'Mrežni pogled', + 'list_view' => 'Seznam', + 'default' => 'Privzeto', + 'breadcrumb' => 'Pot', + + // Header + 'profile_menu' => 'Meni profila', + 'view_profile' => 'Ogled profila', + 'edit_profile' => 'Uredi profil', + + // Layout tabs + 'tab_info' => 'Informacije', + 'tab_content' => 'Vsebina', + + // Email Content + 'email_action_help' => 'Če imate težave s klikom na ":actionText" gumb, kopirajte im prilepite spodnjo povezavo v vaš brskalnik:', + 'email_rights' => 'Vse pravice pridržane', +]; diff --git a/resources/lang/sl/components.php b/resources/lang/sl/components.php new file mode 100644 index 000000000..42e87be31 --- /dev/null +++ b/resources/lang/sl/components.php @@ -0,0 +1,33 @@ + 'Izberi slike', + 'image_all' => 'Vse', + 'image_all_title' => 'Prikaži vse slike', + 'image_book_title' => 'Preglej slike naložene v to knjigo', + 'image_page_title' => 'Preglej slike naložene na to stran', + 'image_search_hint' => 'Iskanje po nazivu slike', + 'image_uploaded' => 'Naloženo :uploadedDate', + 'image_load_more' => 'Naloži več', + 'image_image_name' => 'Ime slike', + 'image_delete_used' => 'Ta slika je uporabljena na spodnjih straneh.', + 'image_delete_confirm' => 'Ponovno kliknite izbriši, da potrdite izbris te slike.', + 'image_select_image' => 'Izberite sliko', + 'image_dropzone' => 'Povlecite slike ali kliknite tukaj za nalaganje', + 'images_deleted' => 'Slike so bile izbrisane', + 'image_preview' => 'Predogled slike', + 'image_upload_success' => 'Slika uspešno naložena', + 'image_update_success' => 'Podatki slike uspešno posodobljeni', + 'image_delete_success' => 'Uspešno izbrisano', + 'image_upload_remove' => 'Odstrani', + + // Code Editor + 'code_editor' => 'Uredi kodo', + 'code_language' => 'Koda jezika', + 'code_content' => 'Koda vsebine', + 'code_save' => 'Shrani kodo', +]; diff --git a/resources/lang/sl/entities.php b/resources/lang/sl/entities.php new file mode 100644 index 000000000..ff1382159 --- /dev/null +++ b/resources/lang/sl/entities.php @@ -0,0 +1,314 @@ + 'Nazadnje objavljeno', + 'recently_created_pages' => 'Nazadnje objavljene strani', + 'recently_updated_pages' => 'Nedavno posodobljene strani', + 'recently_created_chapters' => 'Nazadnje objavljena poglavja', + 'recently_created_books' => 'Nazadnje objavljene knjige', + 'recently_created_shelves' => 'Nazadnje objavljene police', + 'recently_update' => 'Nedavno posodobljeno', + 'recently_viewed' => 'Nedavno prikazano', + 'recent_activity' => 'Nedavna dejavnost', + 'create_now' => 'Ustvarite eno sedaj', + 'revisions' => 'Revizije', + 'meta_revision' => 'Revizije #:revisionCount', + 'meta_created' => 'Ustvarjeno :timeLength', + 'meta_created_name' => 'Created :timeLength by :user', + 'meta_updated' => 'Posodobljeno :timeLength', + 'meta_updated_name' => 'Posodobljeno :timeLength by :user', + 'entity_select' => 'Izbira entitete', + 'images' => 'Slike', + 'my_recent_drafts' => 'Moji nedavni osnutki', + 'my_recently_viewed' => 'Nedavno prikazano', + 'no_pages_viewed' => 'Niste si ogledali še nobene strani', + 'no_pages_recently_created' => 'Nedavno ni bila ustvarjena nobena stran', + 'no_pages_recently_updated' => 'Nedavno ni bila posodobljena nobena stran', + 'export' => 'Izvozi', + 'export_html' => 'Vsebuje spletno datoteko', + 'export_pdf' => 'Datoteka PDF', + 'export_text' => 'Navadna besedilna datoteka', + + // Permissions and restrictions + 'permissions' => 'Dovoljenja', + 'permissions_intro' => 'Ko so enkrat omogočena, bodo ta dovoljenja imela prednost pred dovoljenji za določanje vlog.', + 'permissions_enable' => 'Omogoči dovoljenja po meri', + 'permissions_save' => 'Shrani dovoljenja', + + // Search + 'search_results' => 'Rezultati iskanja', + 'search_total_results_found' => ':count najdenih rezultatov|:count skupaj najdenih rezultatov', + 'search_clear' => 'Počisti iskanje', + 'search_no_pages' => 'Nobena stran se ne ujema z vašim iskanjem', + 'search_for_term' => 'Išči :term', + 'search_more' => 'Prikaži več rezultatov', + 'search_filters' => 'Iskalni filtri', + 'search_content_type' => 'Vrsta vsebine', + 'search_exact_matches' => 'Natančno ujemanje', + 'search_tags' => 'Iskanje oznak', + 'search_options' => 'Možnosti', + 'search_viewed_by_me' => 'Ogledano', + 'search_not_viewed_by_me' => 'Neogledano', + 'search_permissions_set' => 'Nastavljena dovoljenja', + 'search_created_by_me' => 'Ustvaril sem jaz', + 'search_updated_by_me' => 'Posodobil sem jaz', + 'search_date_options' => 'Možnosti datuma', + 'search_updated_before' => 'Posodobljeno pred', + 'search_updated_after' => 'Posodobljeno po', + 'search_created_before' => 'Ustvarjeno pred', + 'search_created_after' => 'Ustvarjeno po', + 'search_set_date' => 'Nastavi datum', + 'search_update' => 'Posodobi iskanje', + + // Shelves + 'shelf' => 'Polica', + 'shelves' => 'Police', + 'x_shelves' => ':count Polica|:count Police', + 'shelves_long' => 'Knjižne police', + 'shelves_empty' => 'Ustvarjena ni bila nobena polica', + 'shelves_create' => 'Izdelaj novo polico', + 'shelves_popular' => 'Priljubljene police', + 'shelves_new' => 'Nove police', + 'shelves_new_action' => 'Nova polica', + 'shelves_popular_empty' => 'Najbolj priljubljene police se bodo pojavile tukaj.', + 'shelves_new_empty' => 'Zadnje ustvarjene police se bodo pojavile tukaj.', + 'shelves_save' => 'Shrani polico', + 'shelves_books' => 'Knjige na tej polici', + 'shelves_add_books' => 'Dodaj knjige na to polico', + 'shelves_drag_books' => 'Povleci knjige sem za jih dodati na to polico', + 'shelves_empty_contents' => 'Ta polica nima dodeljenih knjig', + 'shelves_edit_and_assign' => 'Uredi polico za dodajanje knjig', + 'shelves_edit_named' => 'Uredi knjižno polico :name', + 'shelves_edit' => 'Uredi knjižno polico', + 'shelves_delete' => 'Izbriši knjižno polico', + 'shelves_delete_named' => 'Izbriši knjižno polico :name', + 'shelves_delete_explain' => "To bo izbrisalo knjižno polico z imenom ':name'. Vsebovane knjige ne bodo izbrisane.", + 'shelves_delete_confirmation' => 'Ali ste prepričani, da želite izbrisati ta knjižno polico?', + 'shelves_permissions' => 'Dovoljenja knjižnih polic', + 'shelves_permissions_updated' => 'Posodobljena dovoljenja knjižnih polic', + 'shelves_permissions_active' => 'Aktivna dovoljenja knjižnih polic', + 'shelves_copy_permissions_to_books' => 'Kopiraj dovoljenja na knjige', + 'shelves_copy_permissions' => 'Kopiraj dovoljenja', + 'shelves_copy_permissions_explain' => 'To bo uporabilo trenutne nastavitve dovoljenj te knjižne police za vse knjige, ki jih vsebuje. Pred aktiviranjem zagotovite, da so shranjene vse spremembe dovoljenj te knjižne police.', + 'shelves_copy_permission_success' => 'Dovoljenja knjižne police kopirana na :count knjig', + + // Books + 'book' => 'Knjiga', + 'books' => 'Knjige', + 'x_books' => ':count Knjiga|:count Knjig', + 'books_empty' => 'Ustvarjena ni bila nobena knjiga', + 'books_popular' => 'Priljubjene knjige', + 'books_recent' => 'Zadnje knjige', + 'books_new' => 'Nove knjige', + 'books_new_action' => 'Nova knjiga', + 'books_popular_empty' => 'Najbolj priljubljene knjige se bodo pojavile tukaj.', + 'books_new_empty' => 'Zadnje ustvarjene knjige se bodo pojavile tukaj.', + 'books_create' => 'Izdelaj novo knjigo', + 'books_delete' => 'Izbriši knjigo', + 'books_delete_named' => 'Izbriši knjigo :bookName', + 'books_delete_explain' => 'To bo izbrisalo knjigo z imenom \':bookName\'. Vse strani in poglavja bodo odstranjena.', + 'books_delete_confirmation' => 'Ali ste prepričani, da želite izbrisati to knjigo?', + 'books_edit' => 'Uredi knjigo', + 'books_edit_named' => 'Uredi knjigo :bookName', + 'books_form_book_name' => 'Ime knjige', + 'books_save' => 'Shrani knjigo', + 'books_permissions' => 'Dovoljenja knjige', + 'books_permissions_updated' => 'Posodobljena dovoljenja knjige', + 'books_empty_contents' => 'Nobena stran ali poglavje ni bilo ustvarjeno za to knjigo.', + 'books_empty_create_page' => 'Ustvari novo stran', + 'books_empty_sort_current_book' => 'Razvrsti trenutno knjigo', + 'books_empty_add_chapter' => 'Dodaj poglavje', + 'books_permissions_active' => 'Aktivna dovoljenja knjige', + 'books_search_this' => 'Išči to knjigo', + 'books_navigation' => 'Navigacija knjige', + 'books_sort' => 'Razvrsti vsebine knjige', + 'books_sort_named' => 'Razvrsti knjigo :bookName', + 'books_sort_name' => 'Razvrsti po imenu', + 'books_sort_created' => 'Razvrsti po datumu nastanka', + 'books_sort_updated' => 'Razvrsti po datumu posodobitve', + 'books_sort_chapters_first' => 'Najprej poglavja', + 'books_sort_chapters_last' => 'Nazadnje poglavja', + 'books_sort_show_other' => 'Prikaži druge knjige', + 'books_sort_save' => 'Shrani novo naročilo', + + // Chapters + 'chapter' => 'Poglavje', + 'chapters' => 'Poglavja', + 'x_chapters' => ':count Poglavje|:count Poglavja', + 'chapters_popular' => 'Priljubljena poglavja', + 'chapters_new' => 'Novo poglavje', + 'chapters_create' => 'Ustvari novo poglavje', + 'chapters_delete' => 'Izbriši poglavje', + 'chapters_delete_named' => 'Izbriši poglavje :chapterName', + 'chapters_delete_explain' => 'To bo izbrisalo poglavje z \':chapterName\'. Vse strani bodo odstranjene in dodane neposredno v matično knjigo.', + 'chapters_delete_confirm' => 'Si prepričan, da želiš izbrisati to poglavje?', + 'chapters_edit' => 'Uredi poglavje', + 'chapters_edit_named' => 'Uredi poglavje :chapterName', + 'chapters_save' => 'Shrani poglavje', + 'chapters_move' => 'Premakni poglavje', + 'chapters_move_named' => 'Premakni poglavje :chapterName', + 'chapter_move_success' => 'Poglavje premaknjeno v :bookName', + 'chapters_permissions' => 'Dovoljenja poglavij', + 'chapters_empty' => 'V tem poglavju trenutno ni strani.', + 'chapters_permissions_active' => 'Aktivna dovoljenja poglavij', + 'chapters_permissions_success' => 'Posodobljena dovoljenja poglavij', + 'chapters_search_this' => 'Išči v tem poglavju', + + // Pages + 'page' => 'Stran', + 'pages' => 'Strani', + 'x_pages' => ':count Stran|:count Strani', + 'pages_popular' => 'Priljubjene strani', + 'pages_new' => 'Nova stran', + 'pages_attachments' => 'Priloge', + 'pages_navigation' => 'Navigacija po strani', + 'pages_delete' => 'Izbriši stran', + 'pages_delete_named' => 'Izbriši stran :pageName', + 'pages_delete_draft_named' => 'Izbriši osnutek strani :pageName', + 'pages_delete_draft' => 'Izbriši osnutek strani', + 'pages_delete_success' => 'Stran izbirsana', + 'pages_delete_draft_success' => 'Osnutek strani izbrisan', + 'pages_delete_confirm' => 'Ste prepričani, da želite izbrisati to stran?', + 'pages_delete_draft_confirm' => 'Ali ste prepričani, da želite izbrisati ta osnutek?', + 'pages_editing_named' => 'Urejanje strani :pageName', + 'pages_edit_draft_options' => 'Možnosti osnutka', + 'pages_edit_save_draft' => 'Shrani osnutek', + 'pages_edit_draft' => 'Uredi osnutek strani', + 'pages_editing_draft' => 'Urejanje osnutka', + 'pages_editing_page' => 'Urejanje strani', + 'pages_edit_draft_save_at' => 'Osnutek shranjen ob ', + 'pages_edit_delete_draft' => 'Izbriši osnutek', + 'pages_edit_discard_draft' => 'Zavrzi osnutek', + 'pages_edit_set_changelog' => 'Nastavi zgodovino sprememb', + 'pages_edit_enter_changelog_desc' => 'Vnesite kratek opis sprememb, ki ste jih naredili', + 'pages_edit_enter_changelog' => 'Vnesite zgodovino sprememb', + 'pages_save' => 'Shrani stran', + 'pages_title' => 'Naslov strani', + 'pages_name' => 'Ime strani', + 'pages_md_editor' => 'Urejevalnik', + 'pages_md_preview' => 'Predogled', + 'pages_md_insert_image' => 'Vstavi sliko', + 'pages_md_insert_link' => 'Vnesi povezavo entitete', + 'pages_md_insert_drawing' => 'Vstavi risbo', + 'pages_not_in_chapter' => 'Stran ni v poglavju', + 'pages_move' => 'Premakni stran', + 'pages_move_success' => 'Stran premaknjena v ":parentName"', + 'pages_copy' => 'Kopiraj stran', + 'pages_copy_desination' => 'Destinacija kopije', + 'pages_copy_success' => 'Stran uspešno kopirana', + 'pages_permissions' => 'Dovoljenja strani', + 'pages_permissions_success' => 'Posodobljena dovoljenja strani', + 'pages_revision' => 'Revizija', + 'pages_revisions' => 'Pregled strani', + 'pages_revisions_named' => 'Pregledi strani za :pageName', + 'pages_revision_named' => 'Pregled strani za :pageName', + 'pages_revisions_created_by' => 'Ustvaril', + 'pages_revisions_date' => 'Datum revizije', + 'pages_revisions_number' => '#', + 'pages_revisions_numbered' => 'Revizija #:id', + 'pages_revisions_numbered_changes' => 'Revizija #:id Changes', + 'pages_revisions_changelog' => 'Dnevnik sprememb', + 'pages_revisions_changes' => 'Spremembe', + 'pages_revisions_current' => 'Trenutna različica', + 'pages_revisions_preview' => 'Predogled', + 'pages_revisions_restore' => 'Obnovi', + 'pages_revisions_none' => 'Ta stran nima revizije', + 'pages_copy_link' => 'Kopiraj povezavo', + 'pages_edit_content_link' => 'Uredi vsebino', + 'pages_permissions_active' => 'Aktivna dovoljenja strani', + 'pages_initial_revision' => 'Prvotno objavljeno', + 'pages_initial_name' => 'Nova stran', + 'pages_editing_draft_notification' => 'Trenutno urejate osnutek ku je bil nazadnje shranjen :timeDiff.', + 'pages_draft_edited_notification' => 'Ta stran je od takrat posodobljena. Priporočamo, da zavržete ta osnutek.', + 'pages_draft_edit_active' => [ + 'start_a' => ':count uporabnikov je začelo urejati to stran', + 'start_b' => ':userName je začel urejati to stran', + 'time_a' => 'od kar je bila stran nazandnje posodobljena', + 'time_b' => 'v zadnjih :minCount minutah', + 'message' => ':start :time. Pazite, da ne boste prepisali posodobitev drug drugega!', + ], + 'pages_draft_discarded' => 'Osnutek zavržen, urejevalnik je bil posodobljen s trenutno vsebino strani', + 'pages_specific' => 'Določena stran', + 'pages_is_template' => 'Predloga strani', + + // Editor Sidebar + 'page_tags' => 'Oznake strani', + 'chapter_tags' => 'Oznake poglavja', + 'book_tags' => 'Oznake knjige', + 'shelf_tags' => 'Oznake police', + 'tag' => 'Oznaka', + 'tags' => 'Oznake', + 'tag_name' => 'Ime oznake', + 'tag_value' => 'Vrednost oznake (opcijsko)', + 'tags_explain' => "Dodajte nekaj oznak za boljšo kategorizacijo vaše vsebine.\nDodelite lahko vrednost oznake za boljšo poglobljeno organizacijo.", + 'tags_add' => 'Dodaj drugo oznako', + 'tags_remove' => 'Odstrani to oznako', + 'attachments' => 'Priloge', + 'attachments_explain' => 'Naložite nekaj datotek ali pripnite nekaj povezav, da bo prikazano na vaši strani. Te so vidne v stranski vrstici strani.', + 'attachments_explain_instant_save' => 'Spremembe tukaj so takoj shranjene.', + 'attachments_items' => 'Priloženi element', + 'attachments_upload' => 'Naloži datoteko', + 'attachments_link' => 'Pripni povezavo', + 'attachments_set_link' => 'Nastavi povezavo', + 'attachments_delete_confirm' => 'Ponovno kliknite izbriši, da potrdite izbris te priloge.', + 'attachments_dropzone' => 'Spustite datoteke ali kliknite tukaj, če želite priložiti datoteko', + 'attachments_no_files' => 'Nobena datoteka ni bila naložena', + 'attachments_explain_link' => 'Lahko pripnete povezavo, če ne želite naložiti datoteke. Lahko je povezava na drugo stran ali povezava do dateteke v oblaku.', + 'attachments_link_name' => 'Ime povezave', + 'attachment_link' => 'Povezava priponke', + 'attachments_link_url' => 'Povezava do datoteke', + 'attachments_link_url_hint' => 'Url mesta ali datoteke', + 'attach' => 'Pripni', + 'attachments_edit_file' => 'Uredi datoteko', + 'attachments_edit_file_name' => 'Ime datoteke', + 'attachments_edit_drop_upload' => 'Spustite datoteke ali kliknite tukaj, če želite naložiti in prepisati', + 'attachments_order_updated' => 'Priloga posodobljena', + 'attachments_updated_success' => 'Podrobnosti priloge posodobljene', + 'attachments_deleted' => 'Priloga izbirsana', + 'attachments_file_uploaded' => 'Datoteka uspešno naložena', + 'attachments_file_updated' => 'Datoteka uspešno posodobljena', + 'attachments_link_attached' => 'Povezava uspešno dodana na stran', + 'templates' => 'Predloge', + 'templates_set_as_template' => 'Stran je predloga', + 'templates_explain_set_as_template' => 'To stran lahko nastavite kot predlogo tako bo njena vsebina uporabljena pri izdelavi drugih strani. Ostali uporabniki bodo lahko uporabljali to predlogo, če imajo dovoljenja za to stran.', + 'templates_replace_content' => 'Zamenjaj vsebino strani', + 'templates_append_content' => 'Dodajte vsebini strani', + 'templates_prepend_content' => 'Dodaj k vsebini strani', + + // Profile View + 'profile_user_for_x' => 'Uporabnik že :time', + 'profile_created_content' => 'Ustvarjena vsebina', + 'profile_not_created_pages' => ':userName ni izdelal nobene strani', + 'profile_not_created_chapters' => ':userName ni izdelal nobenega poglavja', + 'profile_not_created_books' => ':userName ni izdelal nobene knjige', + 'profile_not_created_shelves' => ':userName ni izdelal nobene knjižne police', + + // Comments + 'comment' => 'Komentar', + 'comments' => 'Komentarji', + 'comment_add' => 'Dodaj komentar', + 'comment_placeholder' => 'Dodaj komentar', + 'comment_count' => '{0} Ni komentarjev|{1} 1 Komentar|[2,*] :count Komentarji', + 'comment_save' => 'Shrani komentar', + 'comment_saving' => 'Shranjujem komentar...', + 'comment_deleting' => 'Brišem komentar...', + 'comment_new' => 'Nov kometar', + 'comment_created' => 'komentirano :createDiff', + 'comment_updated' => 'Posodobljeno :updateDiff od :username', + 'comment_deleted_success' => 'Komentar je izbrisan', + 'comment_created_success' => 'Komentar dodan', + 'comment_updated_success' => 'Komentar posodobljen', + 'comment_delete_confirm' => 'Ste prepričani, da želite izbrisati ta komentar?', + 'comment_in_reply_to' => 'Odgovor na :commentId', + + // Revision + 'revision_delete_confirm' => 'Ali ste prepričani, da želite izbrisati to revizijo?', + 'revision_restore_confirm' => 'Ali ste prepričani da želite obnoviti to revizijo? Vsebina trenutne strani bo zamenjana.', + 'revision_delete_success' => 'Revizija izbrisana', + 'revision_cannot_delete_latest' => 'Ne morem izbrisati zadnje revizije.' +]; \ No newline at end of file diff --git a/resources/lang/sl/errors.php b/resources/lang/sl/errors.php new file mode 100644 index 000000000..bf1564eef --- /dev/null +++ b/resources/lang/sl/errors.php @@ -0,0 +1,103 @@ + 'Nimate pravic za dostop do želene strani.', + 'permissionJson' => 'Nimate dovoljenja za izvedbo zahtevanega dejanja.', + + // Auth + 'error_user_exists_different_creds' => 'Uporabnik z e-pošto :email že obstaja, vendar z drugačnimi poverilnicami.', + 'email_already_confirmed' => 'E-naslov je že bil potrjen, poskusite se prijaviti.', + 'email_confirmation_invalid' => 'Ta potrditveni žeton ni veljaven ali je že bil uporabljen. Poizkusite znova.', + 'email_confirmation_expired' => 'Potrditveni žeton je pretečen. Nova potrditvena e-pošta je bila poslana.', + 'email_confirmation_awaiting' => 'Potrebno je potrditi e-naslov', + 'ldap_fail_anonymous' => 'Dostop do LDAP ni uspel z anonimno povezavo', + 'ldap_fail_authed' => 'Neuspešen LDAP dostop z danimi podrobnostimi dn & gesla', + 'ldap_extension_not_installed' => 'PHP razširitev za LDAP ni nameščen', + 'ldap_cannot_connect' => 'Ne morem se povezati na LDAP strežnik, neuspešna začetna povezava', + 'saml_already_logged_in' => 'Že prijavljen', + 'saml_user_not_registered' => 'Uporabniško ime :name ni registrirano in avtomatska registracija je onemogočena', + 'saml_no_email_address' => 'Nisem našel e-naslova za tega uporabnika v podatkih iz zunanjega sistema za preverjanje pristnosti', + 'saml_invalid_response_id' => 'Zahteva iz zunanjega sistema za preverjanje pristnosti ni prepoznana s strani procesa zagnanega s strani te aplikacije. Pomik nazaj po prijavi je lahko povzročil te težave.', + 'saml_fail_authed' => 'Prijava z uporabo :system ni uspela, sistem ni zagotovil uspešne avtorizacije', + 'social_no_action_defined' => 'Akcija ni določena', + 'social_login_bad_response' => "Napaka pri :socialAccount prijavi:\n:error", + 'social_account_in_use' => 'Ta :socialAccount je že v uporabi. Poskusite se prijaviti z :socialAccount možnostjo.', + 'social_account_email_in_use' => 'Ta e-naslov :email je že v uporabi. Če že imate račun lahko povežete vaš :socialAccount v vaših nastavitvah profila.', + 'social_account_existing' => 'Ta :socialAccount je že dodan vašemu profilu.', + 'social_account_already_used_existing' => 'Ta :socialAccount je v uporabi s strani drugega uporabnika.', + 'social_account_not_used' => 'Ta :socialAccount ni povezan z nobenim uporabnikom. Prosimo povežite ga v vaših nastavitvah profila. ', + 'social_account_register_instructions' => 'Če še nimate računa, se lahko registrirate z uporabo :socialAccount.', + 'social_driver_not_found' => 'Socialni vtičnik ni najden', + 'social_driver_not_configured' => 'Vaše nastavitve :socialAccount niso pravilo nastavljene.', + 'invite_token_expired' => 'Ta link je pretečen. Namesto tega lahko ponastavite vaše geslo računa.', + + // System + 'path_not_writable' => 'Poti :filePath ni bilo mogoče naložiti. Prepričajte se da je zapisljiva na strežnik.', + 'cannot_get_image_from_url' => 'Ne morem pridobiti slike z :url', + 'cannot_create_thumbs' => 'Strežnik ne more izdelati sličice. Prosimo preverite če imate GD PHP razširitev nameščeno.', + 'server_upload_limit' => 'Strežnik ne dovoli nalaganj take velikosti. Prosimo poskusite manjšo velikost datoteke.', + 'uploaded' => 'Strežnik ne dovoli nalaganj take velikosti. Prosimo poskusite manjšo velikost datoteke.', + 'image_upload_error' => 'Prišlo je do napake med nalaganjem slike', + 'image_upload_type_error' => 'Napačen tip (format) slike', + 'file_upload_timeout' => 'Čas nalaganjanja datoteke je potekel.', + + // Attachments + 'attachment_page_mismatch' => 'Neskladje strani med posodobitvijo priloge', + 'attachment_not_found' => 'Priloga ni najdena', + + // Pages + 'page_draft_autosave_fail' => 'Osnutka ni bilo mogoče shraniti. Pred shranjevanjem te strani se prepričajte, da imate internetno povezavo', + 'page_custom_home_deletion' => 'Ne morem izbrisati strani dokler je nastavljena kot domača stran', + + // Entities + 'entity_not_found' => 'Entiteta ni najdena', + 'bookshelf_not_found' => 'Knjižna polica ni najdena', + 'book_not_found' => 'Knjiga ni najdena', + 'page_not_found' => 'Stran ni najdena', + 'chapter_not_found' => 'Poglavje ni najdeno', + 'selected_book_not_found' => 'Izbrana knjiga ni najdena', + 'selected_book_chapter_not_found' => 'Izbrana knjiga ali poglavje ni najdeno', + 'guests_cannot_save_drafts' => 'Gosti ne morejo shranjevati osnutkov', + + // Users + 'users_cannot_delete_only_admin' => 'Ne morete odstraniti edinega administratorja', + 'users_cannot_delete_guest' => 'Ne morete odstraniti uporabnika gost', + + // Roles + 'role_cannot_be_edited' => 'Te vloge mi možno urejati', + 'role_system_cannot_be_deleted' => 'Ta vloga je sistemska in je ni možno brisati', + 'role_registration_default_cannot_delete' => 'Te vloge ni možno brisati dokler je nastavljena kot privzeta', + 'role_cannot_remove_only_admin' => 'Ta uporabnik je edini administrator. Dodelite vlogo administratorja drugemu uporabniku preden ga poskusite brisati.', + + // Comments + 'comment_list' => 'Napaka se je pojavila pri pridobivanju komentarjev.', + 'cannot_add_comment_to_draft' => 'Ni mogoče dodajanje komentarjev v osnutek.', + 'comment_add' => 'Napaka se je pojavila pri dodajanju / posodobitev komentarjev.', + 'comment_delete' => 'Napaka se je pojavila pri brisanju komentarja.', + 'empty_comment' => 'Praznega komentarja ne morete objaviti.', + + // Error pages + '404_page_not_found' => 'Strani ni mogoče najti', + 'sorry_page_not_found' => 'Oprostite, strani ki jo iščete ni mogoče najti.', + 'sorry_page_not_found_permission_warning' => 'Če pričakujete, da ta stran obstaja, mogoče nimate pravic, da jo vidite.', + 'return_home' => 'Vrni se domov', + 'error_occurred' => 'Prišlo je do napake', + 'app_down' => ':appName trenutno ni dosegljiva', + 'back_soon' => 'Kmalu bo ponovno dosegljiva.', + + // API errors + 'api_no_authorization_found' => 'Avtorizacija ni bila najdena', + 'api_bad_authorization_format' => 'Avtorizacija je bila najdena, vendar je v napačni obliki', + 'api_user_token_not_found' => 'Za dano avtorizacijo ni bil najden noben ustrezen API', + 'api_incorrect_token_secret' => 'Skrivnost, ki je bila dana za uporabljeni žeton API, je napačna', + 'api_user_no_api_permission' => 'Lastnik API nima pravic za klicanje API', + 'api_user_token_expired' => 'Avtorizacijski žeton je pretečen', + + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Napaka se je pojavila pri pošiljanju testne e-pošte:', + +]; diff --git a/resources/lang/sl/pagination.php b/resources/lang/sl/pagination.php new file mode 100644 index 000000000..b7df08291 --- /dev/null +++ b/resources/lang/sl/pagination.php @@ -0,0 +1,12 @@ + '« Prejšnje', + 'next' => 'Naslednje »', + +]; diff --git a/resources/lang/sl/passwords.php b/resources/lang/sl/passwords.php new file mode 100644 index 000000000..12e52ef28 --- /dev/null +++ b/resources/lang/sl/passwords.php @@ -0,0 +1,15 @@ + 'Gesla morajo biti najmanj osem znakov in se morajo ujemati s potrditvijo.', + 'user' => "Ne moremo najti uporabnika s tem e-poštnim naslovom.", + 'token' => 'Žeton za ponastavitev gesla ni veljaven.', + 'sent' => 'Poslali smo vam povezavo za ponastavitev gesla!', + 'reset' => 'Vaše geslo je bilo ponastavljeno!', + +]; diff --git a/resources/lang/sl/settings.php b/resources/lang/sl/settings.php new file mode 100644 index 000000000..09e687c8c --- /dev/null +++ b/resources/lang/sl/settings.php @@ -0,0 +1,217 @@ + 'Nastavitve', + 'settings_save' => 'Shrani nastavitve', + 'settings_save_success' => 'Nastavitve, shranjene', + + // App Settings + 'app_customization' => 'Prilagajanje', + 'app_features_security' => 'Lastnosti & Varnost', + 'app_name' => 'Ime aplikacije', + 'app_name_desc' => 'To ime je prikazano v glavi in vsaki sistemski e-pošti.', + 'app_name_header' => 'Prikaži ime v glavi', + 'app_public_access' => 'Javni dostop', + 'app_public_access_desc' => 'Če omogočite to možnost, bo obiskovalcem, ki niso prijavljeni, omogočen dostop do vsebine v BookStack.', + 'app_public_access_desc_guest' => 'Dostop za javne obiskovalce je mogoče nadzorovati prek uporabnika "Gost".', + 'app_public_access_toggle' => 'Dovoli javni dostop', + 'app_public_viewing' => 'Dovoli javni pregled?', + 'app_secure_images' => 'Nalaganje slik z večjo varnostjo', + 'app_secure_images_toggle' => 'Omogoči nalaganje slik z večjo varnostjo', + 'app_secure_images_desc' => 'Zaradi delovanja so vse slike javne. Ta možnost doda naključni, hard-to-guess niz pred Url-ji slike. Prepričajte se, da indeksi imenikov niso omogočeni, da preprečite enostaven dostop.', + 'app_editor' => 'Urejevalnik strani', + 'app_editor_desc' => 'Izberite urejevalnik, ki bodo uporabniki uporabljali za urejanje strani.', + 'app_custom_html' => 'Po meri HTML vsebina glave', + 'app_custom_html_desc' => 'Katerakoli vsebina dodana tukaj, bo vstavljena na dno dela vsake strani. To je uporabno za uporabo prevladujočih slogov ali dodajanje analitike.', + 'app_custom_html_disabled_notice' => 'Po meri narejena HTML glava vsebine je onemogočena na tej strani z nastavitvami, da se zagotovi, da bodo morebitne zrušitve lahko povrnjene.', + 'app_logo' => 'Logotip aplikacije', + 'app_logo_desc' => 'Ta slika bi morala biti 43px visoka.
Velike slike bodo pomanjšane.', + 'app_primary_color' => 'Osnovna barva aplikacije', + 'app_primary_color_desc' => 'Nastavi osnovno barvo za aplikacijo vključno s pasico, gumbi in povezavami.', + 'app_homepage' => 'Domača stran aplikacije', + 'app_homepage_desc' => 'Izberi pogled, da se pokaže na domači strani, namesto osnovnega pogleda. Dovoljenja strani so prezrta za izbrane strani.', + 'app_homepage_select' => 'Izberi stran', + 'app_disable_comments' => 'Onemogoči komentarje', + 'app_disable_comments_toggle' => 'Onemogoči komentarje', + 'app_disable_comments_desc' => 'Onemogoči komentarje na vseh straneh v aplikaciji.
Obstoječi komentarji se ne prikazujejo.', + + // Color settings + 'content_colors' => 'Barve vsebine', + 'content_colors_desc' => 'Nastavi barve za vse elemente v hierarhiji. Izbor barv s podobno barvno svetlostjo je priporočljivo za osnovne barve za branje.', + 'bookshelf_color' => 'Barva police', + 'book_color' => 'knjiga barv', + 'chapter_color' => 'barvno poglavje', + 'page_color' => 'Stran barv', + 'page_draft_color' => 'stran osnutka barv', + + // Registration Settings + 'reg_settings' => 'registracija', + 'reg_enable' => 'onemogočena registracija', + 'reg_enable_toggle' => 'omogočena registracija', + 'reg_enable_desc' => 'Ko je registracija omogočena, se bo uporabnik lahko prijavil sam kot uporabnik aplikacije. Po registraciji je uporabniku dodeljena ena prevzeta vloga.', + 'reg_default_role' => 'prevzeta uporabniška vloga po registraciji', + 'reg_enable_external_warning' => 'Ta možnosti je ignorirana ko zunanja LDAP ali SAML avtentikacija je akitivna. Uporabniški računi za ne obstoječe uporabnike bodo avtomatsko izdelani, če avtentikacija zunanjih uporabljenih sistemov je uspešna.', + 'reg_email_confirmation' => 'potrditev e-pošte', + 'reg_email_confirmation_toggle' => 'potrebna potrditev e-pošte', + 'reg_confirm_email_desc' => 'Če uporabite omejitev domene, bo potrebna potrditev e-pošte in ta možnost bo prezrta.', + 'reg_confirm_restrict_domain' => 'omejitev domene', + 'reg_confirm_restrict_domain_desc' => 'Vnesite seznam domen, ločenih z vejico, na katere želite omejiti registracijo. Uporabnik bo prejel e-pošto za potrditev naslova, preden bo omogočena interakcija z aplikacijo.
Upoštevajte, da uporabnik po uspešni registrciji lahko spremeni svoj e-poštni naslov.', + 'reg_confirm_restrict_domain_placeholder' => 'Brez omejitev', + + // Maintenance settings + 'maint' => 'Vzdrževanje', + 'maint_image_cleanup' => 'odstrani /počisti slike', + 'maint_image_cleanup_desc' => "Scans page & revision content to check which images and drawings are currently in use and which images are redundant. Ensure you create a full database and image backup before running this.", + 'maint_image_cleanup_ignore_revisions' => 'Ignore images in revisions', + 'maint_image_cleanup_run' => 'zaženite čiščenje', + 'maint_image_cleanup_warning' => ':zaznano je bilo število neuporabljenih slik. Ali si prepričan, da želiš odstraniti izbrane slike?', + 'maint_image_cleanup_success' => ':najdeno in izbrisano je bilo število neuporabljenih slik!', + 'maint_image_cleanup_nothing_found' => 'Najdenih ni bilo nobenih neuporabljenih slik!', + 'maint_send_test_email' => 'Pošlji testno e-pismo', + 'maint_send_test_email_desc' => 'To pošlje testno e-pošto na vaš e-poštni naslov, naveden v vašem profilu.', + 'maint_send_test_email_run' => 'Pošlji preizkusno sporočilo', + 'maint_send_test_email_success' => 'e-pošta poslana na :naslov', + 'maint_send_test_email_mail_subject' => 'Preizkusno sporočilo', + 'maint_send_test_email_mail_greeting' => 'Zdi se, da dostava e-pošte deluje!', + 'maint_send_test_email_mail_text' => 'Čestitke! Če ste prejeli e.poštno obvestilo so bile vaše e-poštne nastavitve pravilno konfigurirane.', + + // Role Settings + 'roles' => 'Vloge', + 'role_user_roles' => 'Pravilo uporabnika', + 'role_create' => 'Izdelaj novo polico', + 'role_create_success' => 'Zapis uspešno ustvarjen', + 'role_delete' => 'Brisanje vloge', + 'role_delete_confirm' => 'Izbrisana bo vloga z imenom \':vlogaImena\'.', + 'role_delete_users_assigned' => 'This role has :userCount users assigned to it. If you would like to migrate the users from this role select a new role below.', + 'role_delete_no_migration' => "Uporabniki niso prenosljivi", + 'role_delete_sure' => 'Ali ste prepričani, da želite izbrisati to element?', + 'role_delete_success' => 'Uspešno izbrisano', + 'role_edit' => 'Uredi zapis', + 'role_details' => 'Podrobnosti zapisa', + 'role_name' => 'Ime zapisa', + 'role_desc' => 'Kratki opis ', + 'role_external_auth_id' => 'Zunanje dokazilo ID', + 'role_system' => 'Sistemska dovoljenja', + 'role_manage_users' => 'Upravljanje uporabnikov', + 'role_manage_roles' => 'Vloga upravljanja & vloga dovoljenj', + 'role_manage_entity_permissions' => 'Upravljanje vseh knjig, poglavij & dovoljenj', + 'role_manage_own_entity_permissions' => 'Manage permissions on own book, chapter & pages', + 'role_manage_page_templates' => 'Manage page templates', + 'role_access_api' => 'Access system API', + 'role_manage_settings' => 'Nastavitve za upravljanje', + 'role_asset' => 'Sistemska dovoljenja', + 'role_asset_desc' => 'These permissions control default access to the assets within the system. Permissions on Books, Chapters and Pages will override these permissions.', + 'role_asset_admins' => 'Admins are automatically given access to all content but these options may show or hide UI options.', + 'role_all' => 'Vse', + 'role_own' => 'Own', + 'role_controlled_by_asset' => ' +46/5000 +Nadzira ga sredstvo, v katerega so naloženi', + 'role_save' => 'Shrani vlogo', + 'role_update_success' => 'Vloga uspešno posodobljena', + 'role_users' => 'Uporabniki v tej vlogi', + 'role_users_none' => ' +V tej vlogi trenutno ni dodeljen noben uporabnik', + + // Users + 'users' => 'Uporabniki', + 'user_profile' => 'Uporabniški profil', + 'users_add_new' => 'Dodaj novega uporabnika', + 'users_search' => 'Išči uporabnike', + 'users_details' => 'Podatki o uporabniku', + 'users_details_desc' => 'Nastavite prikazno ime in e-poštni naslov za tega uporabnika. E-poštni naslov bo uporabljen za prijavo v aplikacijo.', + 'users_details_desc_no_email' => ' Nastavite prikazno ime za tega uporabnika, da ga bodo drugi lahko prepoznali.', + 'users_role' => 'Vloge uporabnika', + 'users_role_desc' => 'Izberi katere vloge bodo dodeljene uporabniku. Če je uporabniku dodeljenih več vlog, se dovoljenja združijo in prejmenjo vse sposobnosti dodeljenih vlog.', + 'users_password' => 'Uporabniško geslo', + 'users_password_desc' => 'Nastavite geslo, ki se uporablja za prijavo v aplikacijo. Dolg mora biti vsaj 6 znakov.', + 'users_send_invite_text' => 'Uporabniku lahko pošljete e-poštno sporočilo s povabilom, ki mu omogoča, da nastavi svoje geslo, ali ga nastavite kar sami.', + 'users_send_invite_option' => 'Pošlji uporabniku e-povabilo', + 'users_external_auth_id' => 'Zunanje dokazilo ID', + 'users_external_auth_id_desc' => 'To je ID, s katerim se ta uporabnik ujema pri komunikaciji z vašim zunanjim sistemom za preverjanje pristnosti.', + 'users_password_warning' => 'Spodaj izpolni le, če želiš spremeniti geslo.', + 'users_system_public' => 'Ta uporabnik predstavlja vse gostujoče uporabnike, ki obiščejo vaš primer. Za prijavo je ni mogoče uporabiti, ampak je dodeljena samodejno.', + 'users_delete' => 'Brisanje uporabnika', + 'users_delete_named' => 'Brisanje uporabnika :userName', + 'users_delete_warning' => 'Iz sistema se bo popolnoma izbrisal uporabnik z imenom \':userName\'', + 'users_delete_confirm' => 'Ste prepričani, da želite izbrisati izbranega uporabnika?', + 'users_delete_success' => 'Uporabniki uspešno odstranjeni.', + 'users_edit' => 'Uredi uporabnika', + 'users_edit_profile' => 'Uredi profil', + 'users_edit_success' => 'Uporabnik uspešno posodobljen', + 'users_avatar' => 'uporabnikov avatar', + 'users_avatar_desc' => 'Izberi sliko, ki predstavlja uporabnika. Velikost mora biti približno 256px.', + 'users_preferred_language' => 'Izbrani jezik', + 'users_preferred_language_desc' => 'Ta možnost bo spremenila jezik, ki se uporablja za uporabniški vmesnik aplikacije. To ne bo vplivalo na nobeno vsebino, ki jo ustvari uporabnik.', + 'users_social_accounts' => 'Družbene ikone / računi', + 'users_social_accounts_info' => 'Here you can connect your other accounts for quicker and easier login. Disconnecting an account here does not revoke previously authorized access. Revoke access from your profile settings on the connected social account.', + 'users_social_connect' => 'Povežite račun', + 'users_social_disconnect' => 'Odklop računa', + 'users_social_connected' => ':socialAccount račun je bil uspešno dodan na vašem profilu', + 'users_social_disconnected' => ':socialAccount račun je bil uspešno odstranjen iz vašega profila', + 'users_api_tokens' => 'API žeton', + 'users_api_tokens_none' => 'Nič API žetonov ni bilo ustvarjenih za uporabnika', + 'users_api_tokens_create' => 'Ustvari žeton', + 'users_api_tokens_expires' => 'Poteče', + 'users_api_tokens_docs' => 'API dokumentacija', + + // API Tokens + 'user_api_token_create' => 'Ustvari žeton', + 'user_api_token_name' => 'Ime', + 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.', + 'user_api_token_expiry' => 'Datum poteka', + 'user_api_token_expiry_desc' => 'Določi datum izteka uporabnosti žetona. Po tem datumu, zahteve poslane s tem žetonom, ne bodo več delovale. +Če pustite to polje prazno, bo iztek uporabnosti 100.let .', + 'user_api_token_create_secret_message' => 'Takoj po ustvarjanju tega žetona se ustvari in prikaže "Token ID" "in" Token Secret ". Skrivnost bo prikazana samo enkrat, zato se pred nadaljevanjem prepričajte o varnosti kopirnega mesta.', + 'user_api_token_create_success' => 'API žeton uspešno ustvarjen', + 'user_api_token_update_success' => 'API žeton uspešno posodobljen', + 'user_api_token' => 'API žeton', + 'user_api_token_id' => 'Žeton ID', + 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.', + 'user_api_token_secret' => 'Skrivnost žetona', + 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.', + 'user_api_token_created' => 'Žeton ustvarjen :timeAgo', + 'user_api_token_updated' => 'Žeton posodobljen :timeAgo', + 'user_api_token_delete' => 'Briši žeton', + 'user_api_token_delete_warning' => 'Iz sistema se bo popolnoma izbrisal API žeton z imenom \':tokenName\' ', + 'user_api_token_delete_confirm' => 'Ali ste prepričani, da želite izbrisati ta API žeton?', + 'user_api_token_delete_success' => 'API žeton uspešno izbrisan', + + //! If editing translations files directly please ignore this in all + //! languages apart from en. Content will be auto-copied from en. + //!//////////////////////////////// + 'language_select' => [ + 'en' => 'English', + 'ar' => 'العربية', + 'cs' => 'Česky', + 'da' => 'danščina', + 'de' => 'Deutsch (Sie)', + 'de_informal' => 'Deutsch (Du)', + 'es' => 'Español', + 'es_AR' => 'Español Argentina', + 'fr' => 'Français', + 'hu' => 'Magyar', + 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', + 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', + 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', + 'zh_CN' => '简体中文', + 'zh_TW' => '繁體中文', + ] + //!//////////////////////////////// +]; diff --git a/resources/lang/sl/validation.php b/resources/lang/sl/validation.php new file mode 100644 index 000000000..fec6d5602 --- /dev/null +++ b/resources/lang/sl/validation.php @@ -0,0 +1,114 @@ + ':attribute mora biti potrjen.', + 'active_url' => ':attribute ni veljaven URL.', + 'after' => ':attribute mora biti datum po :date.', + 'alpha' => ':attribute lahko vsebuje samo črke.', + 'alpha_dash' => ':attribute lahko vsebuje samo ?rke, ?tevilke in ?rtice.', + 'alpha_num' => ':attribute lahko vsebuje samo črke in številke.', + 'array' => ':attribute mora biti niz.', + 'before' => ':attribute mora biti datum pred :date.', + 'between' => [ + 'numeric' => ':attribute mora biti med :min in :max.', + 'file' => ':attribute mora biti med :min in :max kilobajti.', + 'string' => ':attribute mora biti med :min in :max znaki.', + 'array' => ':attribute mora imeti med :min in :max elementov.', + ], + 'boolean' => ':attribute polje mora biti pravilno ali napačno.', + 'confirmed' => ':attribute potrditev se ne ujema.', + 'date' => ':attribute ni veljaven datum.', + 'date_format' => ':attribute se ne ujema z obliko :format.', + 'different' => ':attribute in :other morata biti različna.', + 'digits' => 'Atribut mora biti: števnik.', + 'digits_between' => ':attribute mora biti med :min in :max števkami.', + 'email' => ':attribute mora biti veljaven e-naslov.', + 'ends_with' => 'The :attribute se mora končati z eno od določenih: :vrednost/values', + 'filled' => 'Polje ne sme biti prazno.', + 'gt' => [ + 'numeric' => ':attribute mora biti večji kot :vrednost.', + 'file' => ':attribute mora biti večji kot :vrednost kilobytes', + 'string' => ':attribute mora biti večji kot :vrednost znakov', + 'array' => ':attribute mora biti večji kot :vrednost znakov', + ], + 'gte' => [ + 'numeric' => ':attribute mora biti večji kot ali enak :vrednost.', + 'file' => ':attribute mora biti večji kot ali enak :vrednost kilobytes', + 'string' => ':attribute mora biti večji kot ali enak :vrednost znakov', + 'array' => ':attribute mora imeti :vrednost znakov ali več', + ], + 'exists' => 'Izbrani atribut je neveljaven.', + 'image' => ':attribute mora biti slika.', + 'image_extension' => ':attribute mora imeti veljavno & podprto slikovno pripono', + 'in' => 'izbran :attribute je neveljaven.', + 'integer' => ':attribute mora biti celo število.', + 'ip' => ':attribute mora biti veljaven IP naslov.', + 'ipv4' => ':attribute mora biti veljaven IPv4 naslov.', + 'ipv6' => ':attribute mora biti veljaven IPv6 naslov.', + 'json' => ':attribute mora biti veljavna JSON povezava.', + 'lt' => [ + 'numeric' => ':attribute mora biti manj kot :vrednost.', + 'file' => ':attribute mora biti manj kot :vrednost kilobytes', + 'string' => ':attribute mora biti manj kot :vrednost znakov', + 'array' => ':attribute mora imeti manj kot :vrednost znakov', + ], + 'lte' => [ + 'numeric' => ':attribute mora biti manj kot ali enak :vrednost.', + 'file' => ':attribute mora biti manj kot ali enak :vrednost kilobytes', + 'string' => ':attribute mora biti manj kot ali enak :vrednost znakov', + 'array' => ':attribute ne sme imeti več kot :vrednost elementov', + ], + 'max' => [ + 'numeric' => ':attribute ne sme biti večja od :max.', + 'file' => ':attribute ne sme biti večja od :max kilobytes.', + 'string' => 'Atribut naj ne bo večji od: max znakov.', + 'array' => ':attribute ne sme imeti več kot :max elementov.', + ], + 'mimes' => 'Atribut mora biti datoteka vrste:: vrednost.', + 'min' => [ + 'numeric' => ':attribute mora biti najmanj :min.', + 'file' => ':attribute mora biti najmanj :min KB.', + 'string' => ':attribute mora biti najmanj :min znakov.', + 'array' => ':attribute mora imeti vsaj :min elementov.', + ], + 'no_double_extension' => ':attribute mora imeti samo eno razširitveno datoteko', + 'not_in' => 'Izbrani atribut je neveljaven.', + 'not_regex' => ':attribute oblika ni veljavna.', + 'numeric' => 'Atribut mora biti število.', + 'regex' => ':attribute oblika ni veljavna.', + 'required' => 'Polje :attribute je obvezno.', + 'required_if' => 'Polje atributa je obvezno, če: drugo je: vrednost.', + 'required_with' => 'Polje atributa je obvezno, ko: so prisotne vrednosti.', + 'required_with_all' => 'Polje atributa je obvezno, ko: so prisotne vrednosti.', + 'required_without' => 'Polje atributa je obvezno, če: vrednosti niso prisotne.', + 'required_without_all' => 'Polje atributa je obvezno, če nobena od: vrednosti ni prisotna.', + 'same' => 'Atribut in: drugi se morajo ujemati.', + 'size' => [ + 'numeric' => ':attribute mora biti :velikost.', + 'file' => ':attribute mora biti :velikost KB.', + 'string' => 'Atribut mora biti: velikost znakov.', + 'array' => ':attribute mora vsebovati :velikost elementov.', + ], + 'string' => ':attribute mora biti niz.', + 'timezone' => ':attribute mora biti veljavna cona.', + 'unique' => ':attribute je že zaseden.', + 'url' => ':attribute oblika ni veljavna.', + 'uploaded' => 'Datoteke ni bilo mogoče naložiti. Strežnik morda ne sprejema datotek te velikosti.', + + // Custom validation lines + 'custom' => [ + 'password-confirm' => [ + 'required_with' => 'Potrditev gesla', + ], + ], + + // Custom validation attributes + 'attributes' => [], +]; diff --git a/resources/lang/sv/auth.php b/resources/lang/sv/auth.php index 96feee117..0ca269e2e 100644 --- a/resources/lang/sv/auth.php +++ b/resources/lang/sv/auth.php @@ -66,12 +66,12 @@ return [ 'email_not_confirmed_resend_button' => 'Skicka bekräftelse på nytt', // User Invite - 'user_invite_email_subject' => 'You have been invited to join :appName!', - 'user_invite_email_greeting' => 'An account has been created for you on :appName.', - 'user_invite_email_text' => 'Click the button below to set an account password and gain access:', - 'user_invite_email_action' => 'Set Account Password', - 'user_invite_page_welcome' => 'Welcome to :appName!', - 'user_invite_page_text' => 'To finalise your account and gain access you need to set a password which will be used to log-in to :appName on future visits.', - 'user_invite_page_confirm_button' => 'Confirm Password', - 'user_invite_success' => 'Password set, you now have access to :appName!' + 'user_invite_email_subject' => 'Du har blivit inbjuden att gå med i :appName!', + 'user_invite_email_greeting' => 'Ett konto har skapats för dig i :appName.', + 'user_invite_email_text' => 'Klicka på knappen nedan för att ange ett lösenord och få tillgång:', + 'user_invite_email_action' => 'Ange kontolösenord', + 'user_invite_page_welcome' => 'Välkommen till :appName!', + 'user_invite_page_text' => 'För att slutföra ditt konto och få åtkomst måste du ange ett lösenord som kommer att användas för att logga in på :appName vid framtida besök.', + 'user_invite_page_confirm_button' => 'Bekräfta lösenord', + 'user_invite_success' => 'Lösenord satt, du har nu tillgång till :appName!' ]; \ No newline at end of file diff --git a/resources/lang/sv/common.php b/resources/lang/sv/common.php index 1e49ad03e..1c37af277 100644 --- a/resources/lang/sv/common.php +++ b/resources/lang/sv/common.php @@ -38,13 +38,13 @@ return [ 'reset' => 'Återställ', 'remove' => 'Radera', 'add' => 'Lägg till', - 'fullscreen' => 'Fullscreen', + 'fullscreen' => 'Helskärm', // Sort Options - 'sort_options' => 'Sort Options', - 'sort_direction_toggle' => 'Sort Direction Toggle', - 'sort_ascending' => 'Sort Ascending', - 'sort_descending' => 'Sort Descending', + 'sort_options' => 'Sorteringsalternativ', + 'sort_direction_toggle' => 'Växla sorteringsriktning', + 'sort_ascending' => 'Sortera stigande', + 'sort_descending' => 'Sortera fallande', 'sort_name' => 'Namn', 'sort_created_at' => 'Skapad', 'sort_updated_at' => 'Uppdaterad', @@ -60,10 +60,10 @@ return [ 'grid_view' => 'Rutnätsvy', 'list_view' => 'Listvy', 'default' => 'Förvald', - 'breadcrumb' => 'Breadcrumb', + 'breadcrumb' => 'Brödsmula', // Header - 'profile_menu' => 'Profile Menu', + 'profile_menu' => 'Profilmeny', 'view_profile' => 'Visa profil', 'edit_profile' => 'Redigera profil', diff --git a/resources/lang/sv/entities.php b/resources/lang/sv/entities.php index bc4b3a4af..e4938fbfd 100644 --- a/resources/lang/sv/entities.php +++ b/resources/lang/sv/entities.php @@ -17,12 +17,12 @@ return [ 'recent_activity' => 'Aktivitet', 'create_now' => 'Skapa en nu', 'revisions' => 'Revisioner', - 'meta_revision' => 'Revision #:revisionCount', + 'meta_revision' => 'Revisions #:revisionCount', 'meta_created' => 'Skapad :timeLength', 'meta_created_name' => 'Skapad :timeLength av :user', 'meta_updated' => 'Uppdaterad :timeLength', 'meta_updated_name' => 'Uppdaterad :timeLength av :user', - 'entity_select' => 'Entity Select', + 'entity_select' => 'Välj enhet', 'images' => 'Bilder', 'my_recent_drafts' => 'Mina nyaste utkast', 'my_recently_viewed' => 'Mina senast visade sidor', @@ -176,7 +176,7 @@ return [ 'pages_delete_confirm' => 'Är du säker på att du vill ta bort den här sidan?', 'pages_delete_draft_confirm' => 'Är du säker på att du vill ta bort det här utkastet?', 'pages_editing_named' => 'Redigerar sida :pageName', - 'pages_edit_draft_options' => 'Draft Options', + 'pages_edit_draft_options' => 'Inställningar för utkast', 'pages_edit_save_draft' => 'Spara utkast', 'pages_edit_draft' => 'Redigera utkast', 'pages_editing_draft' => 'Redigerar utkast', @@ -203,14 +203,14 @@ return [ 'pages_copy_success' => 'Sidan har kopierats', 'pages_permissions' => 'Rättigheter för sida', 'pages_permissions_success' => 'Rättigheterna för sidan har uppdaterats', - 'pages_revision' => 'Revision', + 'pages_revision' => 'Revidering', 'pages_revisions' => 'Sidrevisioner', 'pages_revisions_named' => 'Sidrevisioner för :pageName', 'pages_revision_named' => 'Sidrevision för :pageName', 'pages_revisions_created_by' => 'Skapad av', 'pages_revisions_date' => 'Revisionsdatum', 'pages_revisions_number' => '#', - 'pages_revisions_numbered' => 'Revision #:id', + 'pages_revisions_numbered' => 'Revisions #:id', 'pages_revisions_numbered_changes' => 'Revision #:id ändringar', 'pages_revisions_changelog' => 'Ändringslogg', 'pages_revisions_changes' => 'Ändringar', @@ -234,7 +234,7 @@ return [ ], 'pages_draft_discarded' => 'Utkastet har tagits bort. Redigeringsverktyget har uppdaterats med aktuellt innehåll.', 'pages_specific' => 'Specifik sida', - 'pages_is_template' => 'Page Template', + 'pages_is_template' => 'Sidmall', // Editor Sidebar 'page_tags' => 'Sidtaggar', @@ -243,11 +243,11 @@ return [ 'shelf_tags' => 'Hylltaggar', 'tag' => 'Tagg', 'tags' => 'Taggar', - 'tag_name' => 'Tag Name', + 'tag_name' => 'Etikettnamn', 'tag_value' => 'Taggvärde (Frivilligt)', 'tags_explain' => "Lägg till taggar för att kategorisera ditt innehåll bättre. \n Du kan tilldela ett värde till en tagg för ännu bättre organisering.", 'tags_add' => 'Lägg till ännu en tagg', - 'tags_remove' => 'Remove this tag', + 'tags_remove' => 'Ta bort denna etikett', 'attachments' => 'Bilagor', 'attachments_explain' => 'Ladda upp filer eller bifoga länkar till ditt innehåll. Dessa visas i sidokolumnen.', 'attachments_explain_instant_save' => 'Ändringar här sparas omgående.', @@ -273,12 +273,12 @@ return [ 'attachments_file_uploaded' => 'Filen har laddats upp', 'attachments_file_updated' => 'Filen har uppdaterats', 'attachments_link_attached' => 'Länken har bifogats till sidan', - 'templates' => 'Templates', - 'templates_set_as_template' => 'Page is a template', - 'templates_explain_set_as_template' => 'You can set this page as a template so its contents be utilized when creating other pages. Other users will be able to use this template if they have view permissions for this page.', - 'templates_replace_content' => 'Replace page content', - 'templates_append_content' => 'Append to page content', - 'templates_prepend_content' => 'Prepend to page content', + 'templates' => 'Mallar', + 'templates_set_as_template' => 'Sidan är en mall', + 'templates_explain_set_as_template' => 'Du kan använda denna sida som en mall så att dess innehåll kan användas när du skapar andra sidor. Andra användare kommer att kunna använda denna mall om de har visningsrättigheter för den här sidan.', + 'templates_replace_content' => 'Ersätt sidinnehåll', + 'templates_append_content' => 'Lägg till till sidans innehåll', + 'templates_prepend_content' => 'Lägg till före sidans innehåll', // Profile View 'profile_user_for_x' => 'Användare i :time', diff --git a/resources/lang/sv/errors.php b/resources/lang/sv/errors.php index a00109e3d..adf22af1d 100644 --- a/resources/lang/sv/errors.php +++ b/resources/lang/sv/errors.php @@ -13,16 +13,16 @@ return [ 'email_already_confirmed' => 'E-posten har redan bekräftats, prova att logga in.', 'email_confirmation_invalid' => 'Denna bekräftelsekod är inte giltig eller har redan använts. Vänligen prova att registera dig på nytt', 'email_confirmation_expired' => 'Denna bekräftelsekod har gått ut. Vi har skickat dig en ny.', - 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed', + 'email_confirmation_awaiting' => 'E-postadressen för det konto som används måste bekräftas', 'ldap_fail_anonymous' => 'LDAP-inloggning misslyckades med anonym bindning', 'ldap_fail_authed' => 'LDAP-inloggning misslyckades med angivna dn- och lösenordsuppgifter', 'ldap_extension_not_installed' => 'LDAP PHP-tillägg inte installerat', 'ldap_cannot_connect' => 'Kan inte ansluta till ldap-servern. Anslutningen misslyckades', - 'saml_already_logged_in' => 'Already logged in', - 'saml_user_not_registered' => 'The user :name is not registered and automatic registration is disabled', - 'saml_no_email_address' => 'Could not find an email address, for this user, in the data provided by the external authentication system', - 'saml_invalid_response_id' => 'The request from the external authentication system is not recognised by a process started by this application. Navigating back after a login could cause this issue.', - 'saml_fail_authed' => 'Login using :system failed, system did not provide successful authorization', + 'saml_already_logged_in' => 'Redan inloggad', + 'saml_user_not_registered' => 'Användarnamnet är inte registrerat och automatisk registrering är inaktiverad', + 'saml_no_email_address' => 'Kunde inte hitta en e-postadress för den här användaren i data som tillhandahålls av det externa autentiseringssystemet', + 'saml_invalid_response_id' => 'En begäran från det externa autentiseringssystemet känns inte igen av en process som startats av denna applikation. Att navigera bakåt efter en inloggning kan orsaka detta problem.', + 'saml_fail_authed' => 'Inloggning med :system misslyckades, systemet godkände inte auktoriseringen', 'social_no_action_defined' => 'Ingen åtgärd definierad', 'social_login_bad_response' => "Ett fel inträffade vid inloggning genom :socialAccount: \n:error", 'social_account_in_use' => 'Detta konto från :socialAccount används redan. Testa att logga in med :socialAccount istället.', @@ -33,7 +33,7 @@ return [ 'social_account_register_instructions' => 'Om du inte har något konto ännu kan du registerar dig genom att välja :socialAccount.', 'social_driver_not_found' => 'Drivrutinen för den här tjänsten hittades inte', 'social_driver_not_configured' => 'Dina inställningar för :socialAccount är inte korrekta.', - 'invite_token_expired' => 'This invitation link has expired. You can instead try to reset your account password.', + 'invite_token_expired' => 'Denna inbjudningslänk har löpt ut. Du kan istället försöka återställa ditt kontos lösenord.', // System 'path_not_writable' => 'Kunde inte ladda upp till sökvägen :filePath. Kontrollera att webbservern har skrivåtkomst.', @@ -83,17 +83,21 @@ return [ // Error pages '404_page_not_found' => 'Sidan hittades inte', 'sorry_page_not_found' => 'Tyvärr gick det inte att hitta sidan du söker.', + 'sorry_page_not_found_permission_warning' => 'Om du förväntade dig att denna sida skulle existera, kanske du inte har behörighet att se den.', 'return_home' => 'Återvänd till startsidan', 'error_occurred' => 'Ett fel inträffade', 'app_down' => ':appName är nere just nu', 'back_soon' => 'Vi är snart tillbaka.', // API errors - 'api_no_authorization_found' => 'No authorization token found on the request', - 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect', - 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token', - 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect', - 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls', - 'api_user_token_expired' => 'The authorization token used has expired', + 'api_no_authorization_found' => 'Ingen auktoriseringstoken hittades på denna begäran', + 'api_bad_authorization_format' => 'En auktoriseringstoken hittades på denna begäran men formatet verkade felaktigt', + 'api_user_token_not_found' => 'Ingen matchande API-token hittades för den angivna auktoriseringstoken', + 'api_incorrect_token_secret' => 'Hemligheten för den angivna API-token är felaktig', + 'api_user_no_api_permission' => 'Ägaren av den använda API-token har inte behörighet att göra API-anrop', + 'api_user_token_expired' => 'Den använda auktoriseringstoken har löpt ut', + + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Ett fel uppstod när ett test mail skulle skickas:', ]; diff --git a/resources/lang/sv/settings.php b/resources/lang/sv/settings.php index 514f8f894..05284cc5a 100644 --- a/resources/lang/sv/settings.php +++ b/resources/lang/sv/settings.php @@ -29,7 +29,7 @@ return [ 'app_editor_desc' => 'Välj vilket redigeringsverktyg som ska användas av alla användare för att redigera sidor.', 'app_custom_html' => 'Egen HTML i ', 'app_custom_html_desc' => 'Eventuellt innehåll i det här fältet placeras längst ner i -sektionen på varje sida. Detta är användbart för att skriva över stilmaller eller lägga in spårningskoder.', - 'app_custom_html_disabled_notice' => 'Custom HTML head content is disabled on this settings page to ensure any breaking changes can be reverted.', + 'app_custom_html_disabled_notice' => 'Anpassat innehåll i HTML-huvud är inaktiverat på denna inställningssida för att säkerställa att eventuella ändringar som påverkar funktionaliteten kan återställas.', 'app_logo' => 'Applikationslogotyp', 'app_logo_desc' => 'Bilden bör vara minst 43px hög.
Större bilder skalas ner.', 'app_primary_color' => 'Primärfärg', @@ -42,13 +42,13 @@ return [ 'app_disable_comments_desc' => 'Inaktivera kommentarer på alla sidor i applikationen. Befintliga kommentarer visas inte.', // Color settings - 'content_colors' => 'Content Colors', - 'content_colors_desc' => 'Sets colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.', - 'bookshelf_color' => 'Shelf Color', - 'book_color' => 'Book Color', - 'chapter_color' => 'Chapter Color', - 'page_color' => 'Page Color', - 'page_draft_color' => 'Page Draft Color', + 'content_colors' => 'Innehållsfärger', + 'content_colors_desc' => 'Ställer in färger för alla element i sidornas hierarki. Att välja färger med samma ljusstyrka som standardfärgerna rekommenderas för läsbarhet.', + 'bookshelf_color' => 'Hyllfärg', + 'book_color' => 'Bokens färg', + 'chapter_color' => 'Kapitels färg', + 'page_color' => 'Sidfärg', + 'page_draft_color' => 'Färg på sidutkast', // Registration Settings 'reg_settings' => 'Registreringsinställningar', @@ -56,7 +56,7 @@ return [ 'reg_enable_toggle' => 'Tillåt registrering', 'reg_enable_desc' => 'När registrering tillåts kan användaren logga in som en användare. Vid registreringen ges de en förvald användarroll.', 'reg_default_role' => 'Standardroll efter registrering', - 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.', + 'reg_enable_external_warning' => 'Alternativet ovan ignoreras medan extern LDAP eller SAML-autentisering är aktiv. Användarkonton för icke-existerande medlemmar kommer att skapas automatiskt om autentisering mot det externa system som används lyckas.', 'reg_email_confirmation' => 'E-postbekräftelse', 'reg_email_confirmation_toggle' => 'Kräv e-postbekräftelse', 'reg_confirm_email_desc' => 'Om registrering begränas till vissa domäner kommer e-postbekräftelse alltid att krävas och den här inställningen kommer att ignoreras.', @@ -73,13 +73,13 @@ return [ 'maint_image_cleanup_warning' => 'Hittade :count bilder som potentiellt inte används. Vill du verkligen ta bort dessa bilder?', 'maint_image_cleanup_success' => 'Hittade och raderade :count bilder som potentiellt inte används!', 'maint_image_cleanup_nothing_found' => 'Hittade inga oanvända bilder, så inget har raderats!', - 'maint_send_test_email' => 'Send a Test Email', - 'maint_send_test_email_desc' => 'This sends a test email to your email address specified in your profile.', - 'maint_send_test_email_run' => 'Send test email', - 'maint_send_test_email_success' => 'Email sent to :address', - 'maint_send_test_email_mail_subject' => 'Test Email', - 'maint_send_test_email_mail_greeting' => 'Email delivery seems to work!', - 'maint_send_test_email_mail_text' => 'Congratulations! As you received this email notification, your email settings seem to be configured properly.', + 'maint_send_test_email' => 'Skicka ett testmail', + 'maint_send_test_email_desc' => 'Detta skickar ett testmeddelande till den e-postadress som anges i din profil.', + 'maint_send_test_email_run' => 'Skicka testmail', + 'maint_send_test_email_success' => 'E-post skickat till :address', + 'maint_send_test_email_mail_subject' => 'Testmejl', + 'maint_send_test_email_mail_greeting' => 'E-postleverans verkar fungera!', + 'maint_send_test_email_mail_text' => 'Grattis! Eftersom du fick detta e-postmeddelande verkar dina e-postinställningar vara korrekt konfigurerade.', // Role Settings 'roles' => 'Roller', @@ -102,8 +102,8 @@ return [ 'role_manage_roles' => 'Hantera roller & rättigheter', 'role_manage_entity_permissions' => 'Hantera rättigheter för alla böcker, kapitel och sidor', 'role_manage_own_entity_permissions' => 'Hantera rättigheter för egna böcker, kapitel och sidor', - 'role_manage_page_templates' => 'Manage page templates', - 'role_access_api' => 'Access system API', + 'role_manage_page_templates' => 'Hantera mallar', + 'role_access_api' => 'Åtkomst till systemets API', 'role_manage_settings' => 'Hantera appinställningar', 'role_asset' => 'Tillgång till innehåll', 'role_asset_desc' => 'Det här är standardinställningarna för allt innehåll i systemet. Eventuella anpassade rättigheter på böcker, kapitel och sidor skriver över dessa inställningar.', @@ -128,10 +128,10 @@ return [ 'users_role_desc' => 'Välj vilka roller den här användaren ska tilldelas. Om en användare har tilldelats flera roller kommer behörigheterna från dessa roller att staplas och de kommer att få alla rättigheter i de tilldelade rollerna.', 'users_password' => 'Användarlösenord', 'users_password_desc' => 'Ange ett lösenord som ska användas för att logga in på sidan. Lösenordet måste vara minst 5 tecken långt.', - 'users_send_invite_text' => 'You can choose to send this user an invitation email which allows them to set their own password otherwise you can set their password yourself.', - 'users_send_invite_option' => 'Send user invite email', + 'users_send_invite_text' => 'Du kan välja att skicka denna användare ett e-postmeddelande som tillåter dem att ställa in sitt eget lösenord, eller så kan du ställa in deras lösenord själv.', + 'users_send_invite_option' => 'Skicka e-post med inbjudan', 'users_external_auth_id' => 'Externt ID för autentisering', - 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.', + 'users_external_auth_id_desc' => 'Detta är det ID som används för att matcha denna användare när du kommunicerar med ditt externa autentiseringssystem.', 'users_password_warning' => 'Fyll i nedanstående fält endast om du vill byta lösenord:', 'users_system_public' => 'Den här användaren representerar eventuella gäster som använder systemet. Den kan inte användas för att logga in utan tilldeles automatiskt.', 'users_delete' => 'Ta bort användare', @@ -152,32 +152,32 @@ return [ 'users_social_disconnect' => 'Koppla från konto', 'users_social_connected' => ':socialAccount har kopplats till ditt konto.', 'users_social_disconnected' => ':socialAccount har kopplats bort från ditt konto.', - 'users_api_tokens' => 'API Tokens', - 'users_api_tokens_none' => 'No API tokens have been created for this user', - 'users_api_tokens_create' => 'Create Token', - 'users_api_tokens_expires' => 'Expires', - 'users_api_tokens_docs' => 'API Documentation', + 'users_api_tokens' => 'API-nyckel', + 'users_api_tokens_none' => 'Inga API-tokens har skapats för den här användaren', + 'users_api_tokens_create' => 'Skapa token', + 'users_api_tokens_expires' => 'Förfaller', + 'users_api_tokens_docs' => 'API-dokumentation', // API Tokens - 'user_api_token_create' => 'Create API Token', - 'user_api_token_name' => 'Name', - 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.', - 'user_api_token_expiry' => 'Expiry Date', - 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.', - 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.', - 'user_api_token_create_success' => 'API token successfully created', - 'user_api_token_update_success' => 'API token successfully updated', - 'user_api_token' => 'API Token', + 'user_api_token_create' => 'Skapa API-nyckel', + 'user_api_token_name' => 'Namn', + 'user_api_token_name_desc' => 'Ge din token ett läsbart namn som en framtida påminnelse om dess avsedda syfte.', + 'user_api_token_expiry' => 'Förfallodatum', + 'user_api_token_expiry_desc' => 'Ange ett datum då denna token går ut. Efter detta datum kommer förfrågningar som görs med denna token inte längre att fungera. Lämnar du detta fält tomt kommer utgångsdatum att sättas 100 år in i framtiden.', + 'user_api_token_create_secret_message' => 'Omedelbart efter att du skapat denna token kommer ett "Token ID" & "Token Secret" att genereras och visas. Token Secret kommer bara att visas en enda gång så se till att kopiera värdet till en säker plats innan du fortsätter.', + 'user_api_token_create_success' => 'API-token har skapats', + 'user_api_token_update_success' => 'API-token har uppdaterats', + 'user_api_token' => 'API-nyckel', 'user_api_token_id' => 'Token ID', - 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.', + 'user_api_token_id_desc' => 'Detta är en icke-redigerbar systemgenererad identifierare för denna token som måste tillhandahållas i API-förfrågningar.', 'user_api_token_secret' => 'Token Secret', - 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.', - 'user_api_token_created' => 'Token Created :timeAgo', - 'user_api_token_updated' => 'Token Updated :timeAgo', - 'user_api_token_delete' => 'Delete Token', - 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.', - 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?', - 'user_api_token_delete_success' => 'API token successfully deleted', + 'user_api_token_secret_desc' => 'Detta är en systemgenererad hemlighet för denna token som måste tillhandahållas i API-förfrågningar. Denna kommer bara att visas en gång så kopiera detta värde till en säker plats.', + 'user_api_token_created' => 'Token skapad :timeAgo', + 'user_api_token_updated' => 'Token Uppdaterad :timeAgo', + 'user_api_token_delete' => 'Ta bort token', + 'user_api_token_delete_warning' => 'Detta kommer att helt ta bort denna API-token med namnet \':tokenName\' från systemet.', + 'user_api_token_delete_confirm' => 'Är du säker på att du vill ta bort denna API-token?', + 'user_api_token_delete_success' => 'API-token har tagits bort', //! If editing translations files directly please ignore this in all //! languages apart from en. Content will be auto-copied from en. @@ -185,27 +185,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', - 'da' => 'Dansk', + 'cs' => 'Česky', + 'da' => 'Danska', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenska', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/sv/validation.php b/resources/lang/sv/validation.php index 490d1d85b..5da78b245 100644 --- a/resources/lang/sv/validation.php +++ b/resources/lang/sv/validation.php @@ -30,19 +30,19 @@ return [ 'digits' => ':attribute måste vara :digits siffror.', 'digits_between' => ':attribute måste vara mellan :min och :max siffror.', 'email' => ':attribute måste vara en giltig e-postadress.', - 'ends_with' => 'The :attribute must end with one of the following: :values', + 'ends_with' => ':attribute måste sluta med något av följande: :values', 'filled' => ':attribute är obligatoriskt.', 'gt' => [ - 'numeric' => 'The :attribute must be greater than :value.', - 'file' => 'The :attribute must be greater than :value kilobytes.', - 'string' => 'The :attribute must be greater than :value characters.', - 'array' => 'The :attribute must have more than :value items.', + 'numeric' => ':attribute måste vara större än :value.', + 'file' => ':attribute måste vara större än :value kilobytes.', + 'string' => ':attribute måste vara större än :value tecken.', + 'array' => ':attribute måste ha mer än :value objekt.', ], 'gte' => [ - 'numeric' => 'The :attribute must be greater than or equal :value.', - 'file' => 'The :attribute must be greater than or equal :value kilobytes.', - 'string' => 'The :attribute must be greater than or equal :value characters.', - 'array' => 'The :attribute must have :value items or more.', + 'numeric' => ':attribute måste vara större än eller likamed :value.', + 'file' => ':attribute måste vara större än eller lika med :value kilobytes.', + 'string' => ':attribute måste vara större än eller lika med :value tecken.', + 'array' => ':attribute måste ha :value objekt eller mer.', ], 'exists' => 'Valt värde för :attribute är ogiltigt.', 'image' => ':attribute måste vara en bild.', @@ -50,20 +50,20 @@ return [ 'in' => 'Vald :attribute är ogiltigt.', 'integer' => ':attribute måste vara en integer.', 'ip' => ':attribute måste vara en giltig IP-adress.', - 'ipv4' => 'The :attribute must be a valid IPv4 address.', - 'ipv6' => 'The :attribute must be a valid IPv6 address.', - 'json' => 'The :attribute must be a valid JSON string.', + 'ipv4' => ':attribute måste vara en giltig IPv4-adress.', + 'ipv6' => ':attribute måste vara en giltig IPv6-adress.', + 'json' => ':attribute måste vara en giltig JSON-sträng.', 'lt' => [ - 'numeric' => 'The :attribute must be less than :value.', - 'file' => 'The :attribute must be less than :value kilobytes.', - 'string' => 'The :attribute must be less than :value characters.', - 'array' => 'The :attribute must have less than :value items.', + 'numeric' => ':attribute måste vara mindre än :value.', + 'file' => ':attribute måste vara mindre än :value kilobytes.', + 'string' => ':attribute måste vara mindre än :value tecken.', + 'array' => ':attribute måste ha mindre än :value objekt.', ], 'lte' => [ - 'numeric' => 'The :attribute must be less than or equal :value.', - 'file' => 'The :attribute must be less than or equal :value kilobytes.', - 'string' => 'The :attribute must be less than or equal :value characters.', - 'array' => 'The :attribute must not have more than :value items.', + 'numeric' => ':attribute måste vara mindre än eller lika :value.', + 'file' => ':attribute måste vara mindre än eller lika med :value kilobytes.', + 'string' => ':attribute måste vara mindre än eller lika med :value tecken.', + 'array' => ':attribute får inte innehålla mer än :max objekt.', ], 'max' => [ 'numeric' => ':attribute får inte vara större än :max.', @@ -80,7 +80,7 @@ return [ ], 'no_double_extension' => ':attribute får bara ha ett filtillägg.', 'not_in' => 'Vald :attribute är inte giltig', - 'not_regex' => 'The :attribute format is invalid.', + 'not_regex' => 'Formatet på :attribute är ogiltigt.', 'numeric' => ':attribute måste vara ett nummer.', 'regex' => ':attribute har ett ogiltigt format.', 'required' => ':attribute är obligatoriskt.', diff --git a/resources/lang/tr/errors.php b/resources/lang/tr/errors.php index 4e20e3b00..50688219e 100644 --- a/resources/lang/tr/errors.php +++ b/resources/lang/tr/errors.php @@ -13,7 +13,7 @@ return [ 'email_already_confirmed' => 'E-mail halihazırda onaylanmış, giriş yapmayı dene.', 'email_confirmation_invalid' => 'Bu doğrulama tokenı daha önce kullanılmış veya geçerli değil, lütfen tekrar kayıt olmayı deneyin.', 'email_confirmation_expired' => 'Doğrulama token\'ının süresi geçmiş, yeni bir mail gönderildi.', - 'email_confirmation_awaiting' => 'The email address for the account in use needs to be confirmed', + 'email_confirmation_awaiting' => 'Kullanılan hesabın e-posta adresinin onaylanması gerekiyor', 'ldap_fail_anonymous' => 'Anonim LDAP girişi başarısız oldu', 'ldap_fail_authed' => 'Verdiğiniz bilgiler ile LDAP girişi başarısız oldu.', 'ldap_extension_not_installed' => 'LDAP PHP eklentisi yüklenmedi', @@ -83,17 +83,21 @@ return [ // Error pages '404_page_not_found' => 'Sayfa Bulunamadı', 'sorry_page_not_found' => 'Üzgünüz, aradığınız sayfa bulunamıyor.', + 'sorry_page_not_found_permission_warning' => 'Görüntüleyemediğiniz bu sayfanın var olduğunu düşünüyorsanız, görüntüleme izniniz olmayabilir.', 'return_home' => 'Anasayfaya dön', 'error_occurred' => 'Bir Hata Oluştu', 'app_down' => ':appName şu anda inaktif', 'back_soon' => 'En kısa zamanda aktif hale gelecek.', // API errors - 'api_no_authorization_found' => 'No authorization token found on the request', - 'api_bad_authorization_format' => 'An authorization token was found on the request but the format appeared incorrect', - 'api_user_token_not_found' => 'No matching API token was found for the provided authorization token', - 'api_incorrect_token_secret' => 'The secret provided for the given used API token is incorrect', - 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls', - 'api_user_token_expired' => 'The authorization token used has expired', + 'api_no_authorization_found' => 'İstekte yetkilendirme anahtarı bulunamadı', + 'api_bad_authorization_format' => 'İstekte bir yetkilendirme anahtarı bulundu, ancak biçim yanlış görünüyor', + 'api_user_token_not_found' => 'Sağlanan yetkilendirme anahtarı ile eşleşen bir API anahtarı bulunamadı', + 'api_incorrect_token_secret' => 'Kullanılan API anahtarı için sağlanan gizli anahtar doğru değil', + 'api_user_no_api_permission' => 'Kullanılan API anahtarının sahibi API çağrısı yapmak için izne sahip değil', + 'api_user_token_expired' => 'Kullanılan yetkilendirme anahtarının süresi doldu', + + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Test e-postası gönderilirken hata oluştu:', ]; diff --git a/resources/lang/tr/settings.php b/resources/lang/tr/settings.php index 4e81344bd..638796fa4 100755 --- a/resources/lang/tr/settings.php +++ b/resources/lang/tr/settings.php @@ -43,7 +43,7 @@ return [ // Color settings 'content_colors' => 'İçerik Renkleri', - 'content_colors_desc' => 'Sets colors for all elements in the page organisation hierarchy. Choosing colors with a similar brightness to the default colors is recommended for readability.', + 'content_colors_desc' => 'Sayfa organizasyon hiyerarşisi içerisindeki tüm elementler için renkleri ayarla. Renkleri benzer parlaklıkta seçmeniz okunurluk açısından önerilir.', 'bookshelf_color' => 'Raf Rengi', 'book_color' => 'Kitap Rengi', 'chapter_color' => 'Kısım Rengi', @@ -56,7 +56,7 @@ return [ 'reg_enable_toggle' => 'Kaydolmaya izin ver', 'reg_enable_desc' => 'Kayıt olmaya izin verdiğinizde kullanıcılar kendilerini uygulamaya kaydedebilecekler. Kayıt olduktan sonra kendilerine varsayılan kullanıcı rolü atanacaktır.', 'reg_default_role' => 'Kayıt olduktan sonra varsayılan kullanıcı rolü', - 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.', + 'reg_enable_external_warning' => 'Harici LDAP veya SAML kimlik doğrulaması etkinken yukarıdaki seçenek yok sayılır. Mevcut harici üyelere yönelik kimlik doğrulama başarılı olursa, mevcut olmayan üyelerin kullanıcı hesapları otomatik olarak oluşturulur.', 'reg_email_confirmation' => 'Email Doğrulama', 'reg_email_confirmation_toggle' => 'E-mail onayı gerektir', 'reg_confirm_email_desc' => 'Eğer domain kısıtlaması kullanılıyorsa o zaman email doğrulaması gereklidir ve bu seçenek yok sayılacaktır.', @@ -103,7 +103,7 @@ return [ 'role_manage_entity_permissions' => 'Bütün kitap, bölüm ve sayfa izinlerini yönet', 'role_manage_own_entity_permissions' => 'Sahip olunan kitap, bölüm ve sayfaların izinlerini yönet', 'role_manage_page_templates' => 'Sayfa şablonlarını yönet', - 'role_access_api' => 'Access system API', + 'role_access_api' => 'Sistem API\'na eriş', 'role_manage_settings' => 'Uygulama ayarlarını yönet', 'role_asset' => 'Asset Yetkileri', 'role_asset_desc' => 'Bu izinleri assetlere sistem içinden varsayılan erişimi kontrol eder. Kitaplar, bölümler ve sayfaların izinleri bu izinleri override eder.', @@ -131,7 +131,7 @@ return [ 'users_send_invite_text' => 'Bu kullanıcıya parolasını sıfırlayabilmesi için bir e-posta gönder veya şifresini sen belirle.', 'users_send_invite_option' => 'Kullanıcıya davet e-postası gönder', 'users_external_auth_id' => 'Harici Authentication ID\'si', - 'users_external_auth_id_desc' => 'This is the ID used to match this user when communicating with your external authentication system.', + 'users_external_auth_id_desc' => 'Bu ID, harici kimlik doğrulama sisteminizle iletişim kurarken bu kullanıcıyla eşleştirmek için kullanılır.', 'users_password_warning' => 'Sadece parolanızı değiştirmek istiyorsanız aşağıyı doldurunuz.', 'users_system_public' => 'Bu kullanıcı sizin uygulamanızı ziyaret eden bütün misafir kullanıcıları temsil eder. Giriş yapmak için kullanılamaz, otomatik olarak atanır.', 'users_delete' => 'Kullanıcı Sil', @@ -152,32 +152,33 @@ return [ 'users_social_disconnect' => 'Hesabın Bağlantısını Kes', 'users_social_connected' => ':socialAccount hesabı profilinize başarıyla bağlandı.', 'users_social_disconnected' => ':socialAccount hesabınızın profilinizle ilişiği başarıyla kesildi.', - 'users_api_tokens' => 'API Tokens', - 'users_api_tokens_none' => 'No API tokens have been created for this user', - 'users_api_tokens_create' => 'Create Token', - 'users_api_tokens_expires' => 'Expires', - 'users_api_tokens_docs' => 'API Documentation', + 'users_api_tokens' => 'API Anahtarları', + 'users_api_tokens_none' => 'Bu kullanıcı için oluşturulmuş API anahtarı bulunmuyor', + 'users_api_tokens_create' => 'Anahtar Oluştur', + 'users_api_tokens_expires' => 'Bitiş süresi', + 'users_api_tokens_docs' => 'API Dokümantasyonu', // API Tokens - 'user_api_token_create' => 'Create API Token', - 'user_api_token_name' => 'Name', - 'user_api_token_name_desc' => 'Give your token a readable name as a future reminder of its intended purpose.', - 'user_api_token_expiry' => 'Expiry Date', - 'user_api_token_expiry_desc' => 'Set a date at which this token expires. After this date, requests made using this token will no longer work. Leaving this field blank will set an expiry 100 years into the future.', - 'user_api_token_create_secret_message' => 'Immediately after creating this token a "Token ID"" & "Token Secret" will be generated and displayed. The secret will only be shown a single time so be sure to copy the value to somewhere safe and secure before proceeding.', - 'user_api_token_create_success' => 'API token successfully created', - 'user_api_token_update_success' => 'API token successfully updated', - 'user_api_token' => 'API Token', - 'user_api_token_id' => 'Token ID', - 'user_api_token_id_desc' => 'This is a non-editable system generated identifier for this token which will need to be provided in API requests.', - 'user_api_token_secret' => 'Token Secret', - 'user_api_token_secret_desc' => 'This is a system generated secret for this token which will need to be provided in API requests. This will only be displayed this one time so copy this value to somewhere safe and secure.', - 'user_api_token_created' => 'Token Created :timeAgo', - 'user_api_token_updated' => 'Token Updated :timeAgo', - 'user_api_token_delete' => 'Delete Token', - 'user_api_token_delete_warning' => 'This will fully delete this API token with the name \':tokenName\' from the system.', - 'user_api_token_delete_confirm' => 'Are you sure you want to delete this API token?', - 'user_api_token_delete_success' => 'API token successfully deleted', + 'user_api_token_create' => 'API Anahtarı Oluştur', + 'user_api_token_name' => 'İsim', + 'user_api_token_name_desc' => 'Anahtarınıza gelecekte ne amaçla kullanıldığını hatırlatması açısından anlamlı bir isim veriniz.', + 'user_api_token_expiry' => 'Bitiş Tarihi', + 'user_api_token_expiry_desc' => 'Bu anahtarın süresinin dolduğu bir tarih belirleyin. Bu tarihten sonra, bu anahtar kullanılarak yapılan istekler artık çalışmaz. Bu alanı boş bırakmak, bitiş tarihini 100 yıl sonrası yapar.', + 'user_api_token_create_secret_message' => 'Bu jetonu oluşturduktan hemen sonra bir "ID Anahtarı" "ve" Gizli Anahtar "oluşturulacak ve görüntülenecektir. +Gizli Anahtar yalnızca tek bir kez gösterilecektir, bu yüzden devam etmeden önce değeri güvenli bir yere kopyaladığınızdan emin olun.', + 'user_api_token_create_success' => 'API anahtarı başarıyla oluşturuldu', + 'user_api_token_update_success' => 'API anahtarı başarıyla güncellendi', + 'user_api_token' => 'API Erişim Anahtarı', + 'user_api_token_id' => 'Anahtar ID', + 'user_api_token_id_desc' => 'Bu API isteklerini karşılamak için sistem tarafından oluşturulmuş sonradan düzenlenemez bir tanımlayıcıdır.', + 'user_api_token_secret' => 'Gizli Anahtar', + 'user_api_token_secret_desc' => 'Bu, API isteklerinde sağlanması gereken anahtar için sistem tarafından oluşturulan bir gizli anahtardır. Bu yalnızca bir kez görüntülenecektir, bu nedenle bu değeri güvenli bir yere kopyalayın.', + 'user_api_token_created' => 'Anahtar :timeAgo Önce Oluşturuldu', + 'user_api_token_updated' => 'Anahtar :timeAgo Önce Güncellendi', + 'user_api_token_delete' => 'Anahtarı Sil', + 'user_api_token_delete_warning' => 'Bu işlem \':tokenName\' adındaki API anahtarını sistemden tamamen silecektir.', + 'user_api_token_delete_confirm' => 'Bu API anahtarını silmek istediğinizden emin misiniz?', + 'user_api_token_delete_success' => 'API anahtarı başarıyla silindi', //! If editing translations files directly please ignore this in all //! languages apart from en. Content will be auto-copied from en. @@ -185,27 +186,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', - 'da' => 'Dansk', + 'cs' => 'Česky', + 'da' => 'Danca', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovence', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/uk/errors.php b/resources/lang/uk/errors.php index a62911673..f3aa299ed 100644 --- a/resources/lang/uk/errors.php +++ b/resources/lang/uk/errors.php @@ -83,6 +83,7 @@ return [ // Error pages '404_page_not_found' => 'Сторінку не знайдено', 'sorry_page_not_found' => 'Вибачте, сторінку, яку ви шукали, не знайдено.', + 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.', 'return_home' => 'Повернутися на головну', 'error_occurred' => 'Виникла помилка', 'app_down' => ':appName зараз недоступний', @@ -96,4 +97,7 @@ return [ 'api_user_no_api_permission' => 'The owner of the used API token does not have permission to make API calls', 'api_user_token_expired' => 'The authorization token used has expired', + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Error thrown when sending a test email:', + ]; diff --git a/resources/lang/uk/settings.php b/resources/lang/uk/settings.php index a41dc0d36..daf8a56d5 100644 --- a/resources/lang/uk/settings.php +++ b/resources/lang/uk/settings.php @@ -185,27 +185,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => 'Dansk', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/vi/activities.php b/resources/lang/vi/activities.php new file mode 100644 index 000000000..19fae850a --- /dev/null +++ b/resources/lang/vi/activities.php @@ -0,0 +1,48 @@ + 'đã tạo trang', + 'page_create_notification' => 'Trang đã được tạo thành công', + 'page_update' => 'đã cập nhật trang', + 'page_update_notification' => 'Trang đã được cập nhật thành công', + 'page_delete' => 'đã xóa trang', + 'page_delete_notification' => 'Trang đã được xóa thành công', + 'page_restore' => 'đã khôi phục trang', + 'page_restore_notification' => 'Trang đã được khôi phục thành công', + 'page_move' => 'đã di chuyển trang', + + // Chapters + 'chapter_create' => 'đã tạo chương', + 'chapter_create_notification' => 'Chương đã được tạo thành công', + 'chapter_update' => 'đã cập nhật chương', + 'chapter_update_notification' => 'Chương đã được cập nhật thành công', + 'chapter_delete' => 'đã xóa chương', + 'chapter_delete_notification' => 'Chương đã được xóa thành công', + 'chapter_move' => 'đã di chuyển chương', + + // Books + 'book_create' => 'đã tạo sách', + 'book_create_notification' => 'Sách đã được tạo thành công', + 'book_update' => 'đã cập nhật sách', + 'book_update_notification' => 'Sách đã được cập nhật thành công', + 'book_delete' => 'đã xóa sách', + 'book_delete_notification' => 'Sách đã được xóa thành công', + 'book_sort' => 'đã sắp xếp sách', + 'book_sort_notification' => 'Sách đã được sắp xếp lại thành công', + + // Bookshelves + 'bookshelf_create' => 'đã tạo giá sách', + 'bookshelf_create_notification' => 'Giá sách đã được tạo thành công', + 'bookshelf_update' => 'cập nhật giá sách', + 'bookshelf_update_notification' => 'Giá sách đã tạo thành công', + 'bookshelf_delete' => 'đã xóa giá sách', + 'bookshelf_delete_notification' => 'Giá sách đã được xóa thành công', + + // Other + 'commented_on' => 'đã bình luận về', +]; diff --git a/resources/lang/vi/auth.php b/resources/lang/vi/auth.php new file mode 100644 index 000000000..ef8c6335f --- /dev/null +++ b/resources/lang/vi/auth.php @@ -0,0 +1,77 @@ + 'Thông tin đăng nhập này không khớp với dữ liệu của chúng tôi.', + 'throttle' => 'Quá nhiều lần đăng nhập sai. Vui lòng thử lại sau :seconds giây.', + + // Login & Register + 'sign_up' => 'Đăng ký', + 'log_in' => 'Đăng nhập', + 'log_in_with' => 'Đăng nhập với :socialDriver', + 'sign_up_with' => 'Đăng kí với :socialDriver', + 'logout' => 'Đăng xuất', + + 'name' => 'Tên', + 'username' => 'Tên đăng nhập', + 'email' => 'Email', + 'password' => 'Mật khẩu', + 'password_confirm' => 'Xác nhận mật khẩu', + 'password_hint' => 'Cần tối thiểu 7 kí tự', + 'forgot_password' => 'Quên Mật khẩu?', + 'remember_me' => 'Ghi nhớ đăng nhập', + 'ldap_email_hint' => 'Vui lòng điền một địa chỉ email để sử dụng tài khoản này.', + 'create_account' => 'Tạo Tài khoản', + 'already_have_account' => 'Bạn đã có tài khoản?', + 'dont_have_account' => 'Bạn không có tài khoản?', + 'social_login' => 'Đăng nhập bằng MXH', + 'social_registration' => 'Đăng kí bằng MXH', + 'social_registration_text' => 'Đăng kí và đăng nhập bằng dịch vụ khác.', + + 'register_thanks' => 'Cảm ơn bạn đã đăng ký!', + 'register_confirm' => 'Vui lòng kiểm tra email và bấm vào nút xác nhận để truy cập :appName.', + 'registrations_disabled' => 'Việc đăng kí đang bị tắt', + 'registration_email_domain_invalid' => 'Tên miền của email không có quyền truy cập tới ứng dụng này', + 'register_success' => 'Cảm ơn bạn đã đăng kí! Bạn đã được xác nhận và đăng nhập.', + + + // Password Reset + 'reset_password' => 'Đặt lại mật khẩu', + 'reset_password_send_instructions' => 'Nhập email vào ô dưới đây và bạn sẽ nhận được một email với liên kết để đặt lại mật khẩu.', + 'reset_password_send_button' => 'Gửi liên kết đặt lại mật khẩu', + 'reset_password_sent_success' => 'Một liên kết đặt lại mật khẩu đã được gửi tới :email.', + 'reset_password_success' => 'Mật khẩu đã được đặt lại thành công.', + 'email_reset_subject' => 'Đặt lại mật khẩu của :appName', + 'email_reset_text' => 'Bạn nhận được email này bởi vì chúng tôi nhận được một yêu cầu đặt lại mật khẩu cho tài khoản của bạn.', + 'email_reset_not_requested' => 'Nếu bạn không yêu cầu đặt lại mật khẩu, không cần có bất cứ hành động nào khác.', + + + // Email Confirmation + 'email_confirm_subject' => 'Xác nhận email trên :appName', + 'email_confirm_greeting' => 'Cảm ơn bạn đã tham gia :appName!', + 'email_confirm_text' => 'Xin hãy xác nhận địa chỉa email bằng cách bấm vào nút dưới đây:', + 'email_confirm_action' => 'Xác nhận Email', + 'email_confirm_send_error' => 'Email xác nhận cần gửi nhưng hệ thống đã không thể gửi được email. Liên hệ với quản trị viên để chắc chắn email được thiết lập đúng.', + 'email_confirm_success' => 'Email của bạn đã được xác nhận!', + 'email_confirm_resent' => 'Email xác nhận đã được gửi lại, Vui lòng kiểm tra hộp thư.', + + 'email_not_confirmed' => 'Địa chỉ email chưa được xác nhận', + 'email_not_confirmed_text' => 'Địa chỉ email của bạn hiện vẫn chưa được xác nhận.', + 'email_not_confirmed_click_link' => 'Vui lòng bấm vào liên kết trong mail được gửi trong thời gian ngắn ngay sau khi bạn đăng kí.', + 'email_not_confirmed_resend' => 'Nếu bạn không tìm thấy email bạn có thể yêu cầu gửi lại email xác nhận bằng cách gửi mẫu dưới đây.', + 'email_not_confirmed_resend_button' => 'Gửi lại email xác nhận', + + // User Invite + 'user_invite_email_subject' => 'Bạn được mời tham gia :appName!', + 'user_invite_email_greeting' => 'Một tài khoản đã được tạo dành cho bạn trên :appName.', + 'user_invite_email_text' => 'Bấm vào nút dưới đây để đặt lại mật khẩu tài khoản và lấy quyền truy cập:', + 'user_invite_email_action' => 'Đặt mật khẩu tài khoản', + 'user_invite_page_welcome' => 'Chào mừng đến với :appName!', + 'user_invite_page_text' => 'Để hoàn tất tài khoản và lấy quyền truy cập bạn cần đặt mật khẩu để sử dụng cho các lần đăng nhập sắp tới tại :appName.', + 'user_invite_page_confirm_button' => 'Xác nhận Mật khẩu', + 'user_invite_success' => 'Mật khẩu đã được thiết lập, bạn có quyền truy cập đến :appName!' +]; \ No newline at end of file diff --git a/resources/lang/vi/common.php b/resources/lang/vi/common.php new file mode 100644 index 000000000..777fb5776 --- /dev/null +++ b/resources/lang/vi/common.php @@ -0,0 +1,77 @@ + 'Huỷ', + 'confirm' => 'Xác nhận', + 'back' => 'Quay lại', + 'save' => 'Lưu', + 'continue' => 'Tiếp tục', + 'select' => 'Chọn', + 'toggle_all' => 'Bật/tắt tất cả', + 'more' => 'Thêm', + + // Form Labels + 'name' => 'Tên', + 'description' => 'Mô tả', + 'role' => 'Quyền', + 'cover_image' => 'Ảnh bìa', + 'cover_image_description' => 'Ảnh nên có kích thước 440x250px.', + + // Actions + 'actions' => 'Hành động', + 'view' => 'Xem', + 'view_all' => 'Xem tất cả', + 'create' => 'Tạo', + 'update' => 'Cập nhật', + 'edit' => 'Sửa', + 'sort' => 'Sắp xếp', + 'move' => 'Di chuyển', + 'copy' => 'Sao chép', + 'reply' => 'Trả lời', + 'delete' => 'Xóa', + 'search' => 'Tìm kiếm', + 'search_clear' => 'Xoá tìm kiếm', + 'reset' => 'Thiết lập lại', + 'remove' => 'Xóa bỏ', + 'add' => 'Thêm', + 'fullscreen' => 'Toàn màn hình', + + // Sort Options + 'sort_options' => 'Tùy Chọn Sắp Xếp', + 'sort_direction_toggle' => 'Đảo chiều sắp xếp', + 'sort_ascending' => 'Sắp xếp tăng dần', + 'sort_descending' => 'Sắp xếp giảm dần', + 'sort_name' => 'Tên', + 'sort_created_at' => 'Ngày Tạo', + 'sort_updated_at' => 'Ngày cập nhật', + + // Misc + 'deleted_user' => 'Người dùng bị xóa', + 'no_activity' => 'Không có hoạt động nào', + 'no_items' => 'Không có mục nào khả dụng', + 'back_to_top' => 'Lên đầu trang', + 'toggle_details' => 'Bật/tắt chi tiết', + 'toggle_thumbnails' => 'Bật/tắt ảnh ảnh nhỏ', + 'details' => 'Chi tiết', + 'grid_view' => 'Hiển thị dạng lưới', + 'list_view' => 'Hiển thị dạng danh sách', + 'default' => 'Mặc định', + 'breadcrumb' => 'Đường dẫn liên kết', + + // Header + 'profile_menu' => 'Menu Hồ sơ', + 'view_profile' => 'Xem Hồ sơ', + 'edit_profile' => 'Sửa Hồ sơ', + + // Layout tabs + 'tab_info' => 'Thông tin', + 'tab_content' => 'Nội dung', + + // Email Content + 'email_action_help' => 'Nếu bạn đang có vấn đề trong việc bấm nút ":actionText", sao chép và dán địa chỉ URL dưới đây vào trình duyệt web:', + 'email_rights' => 'Bản quyền đã được bảo hộ', +]; diff --git a/resources/lang/vi/components.php b/resources/lang/vi/components.php new file mode 100644 index 000000000..c1a9b343d --- /dev/null +++ b/resources/lang/vi/components.php @@ -0,0 +1,33 @@ + 'Chọn Ảnh', + 'image_all' => 'Tất cả', + 'image_all_title' => 'Xem tất cả các ảnh', + 'image_book_title' => 'Xem các ảnh đã được tải lên sách này', + 'image_page_title' => 'Xem các ảnh đã được tải lên trang này', + 'image_search_hint' => 'Tìm kiếm ảnh bằng tên', + 'image_uploaded' => 'Đã tải lên :uploadedDate', + 'image_load_more' => 'Hiện thêm', + 'image_image_name' => 'Tên Ảnh', + 'image_delete_used' => 'Ảnh này được sử dụng trong các trang dưới đây.', + 'image_delete_confirm' => 'Bấm nút xóa lần nữa để xác nhận bạn muốn xóa ảnh này.', + 'image_select_image' => 'Chọn Ảnh', + 'image_dropzone' => 'Thả các ảnh hoặc bấm vào đây để tải lên', + 'images_deleted' => 'Các ảnh đã được xóa', + 'image_preview' => 'Xem trước Ảnh', + 'image_upload_success' => 'Ảnh đã tải lên thành công', + 'image_update_success' => 'Chi tiết ảnh được cập nhật thành công', + 'image_delete_success' => 'Ảnh đã được xóa thành công', + 'image_upload_remove' => 'Xóa bỏ', + + // Code Editor + 'code_editor' => 'Sửa Mã', + 'code_language' => 'Ngôn ngữ Mã', + 'code_content' => 'Nội dung Mã', + 'code_save' => 'Lưu Mã', +]; diff --git a/resources/lang/vi/entities.php b/resources/lang/vi/entities.php new file mode 100644 index 000000000..31fbaaf7f --- /dev/null +++ b/resources/lang/vi/entities.php @@ -0,0 +1,314 @@ + 'Được tạo gần đây', + 'recently_created_pages' => 'Trang được tạo gần đây', + 'recently_updated_pages' => 'Trang được cập nhật gần đây', + 'recently_created_chapters' => 'Chương được tạo gần đây', + 'recently_created_books' => 'Sách được tạo gần đây', + 'recently_created_shelves' => 'Giá sách được tạo gần đây', + 'recently_update' => 'Được cập nhật gần đây', + 'recently_viewed' => 'Được xem gần đây', + 'recent_activity' => 'Hoạt động gần đây', + 'create_now' => 'Tạo ngay', + 'revisions' => 'Phiên bản', + 'meta_revision' => 'Phiên bản #:revisionCount', + 'meta_created' => 'Được tạo :timeLength', + 'meta_created_name' => 'Được tạo :timeLength bởi :user', + 'meta_updated' => 'Được cập nhật :timeLength', + 'meta_updated_name' => 'Được cập nhật :timeLength bởi :user', + 'entity_select' => 'Chọn thực thể', + 'images' => 'Ảnh', + 'my_recent_drafts' => 'Bản nháp gần đây của tôi', + 'my_recently_viewed' => 'Xem gần đây', + 'no_pages_viewed' => 'Bạn chưa xem bất cứ trang nào', + 'no_pages_recently_created' => 'Không có trang nào được tạo gần đây', + 'no_pages_recently_updated' => 'Không có trang nào được cập nhật gần đây', + 'export' => 'Kết xuất', + 'export_html' => 'Đang chứa tệp tin Web', + 'export_pdf' => 'Tệp PDF', + 'export_text' => 'Tệp văn bản thuần túy', + + // Permissions and restrictions + 'permissions' => 'Quyền', + 'permissions_intro' => 'Một khi được bật, các quyền này sẽ được ưu tiên trên hết tất cả các quyền hạn khác.', + 'permissions_enable' => 'Bật quyền hạn tùy chỉnh', + 'permissions_save' => 'Lưu quyền hạn', + + // Search + 'search_results' => 'Kết quả Tìm kiếm', + 'search_total_results_found' => 'Tìm thấy :count kết quả|:count tổng kết quả', + 'search_clear' => 'Xoá tìm kiếm', + 'search_no_pages' => 'Không trang nào khớp với tìm kiếm này', + 'search_for_term' => 'Tìm kiếm cho :term', + 'search_more' => 'Thêm kết quả', + 'search_filters' => 'Bộ lọc Tìm kiếm', + 'search_content_type' => 'Kiểu Nội dung', + 'search_exact_matches' => 'Hoàn toàn trùng khớp', + 'search_tags' => 'Tìm kiếm Tag', + 'search_options' => 'Tuỳ chọn', + 'search_viewed_by_me' => 'Được xem bởi tôi', + 'search_not_viewed_by_me' => 'Không được xem bởi tôi', + 'search_permissions_set' => 'Phân quyền', + 'search_created_by_me' => 'Được tạo bởi tôi', + 'search_updated_by_me' => 'Được cập nhật bởi tôi', + 'search_date_options' => 'Tùy chọn ngày', + 'search_updated_before' => 'Đã được cập nhật trước đó', + 'search_updated_after' => 'Đã được cập nhật sau', + 'search_created_before' => 'Đã được tạo trước', + 'search_created_after' => 'Đã được tạo sau', + 'search_set_date' => 'Đặt ngày', + 'search_update' => 'Cập nhật tìm kiếm', + + // Shelves + 'shelf' => 'Giá', + 'shelves' => 'Giá', + 'x_shelves' => ':count Giá |:count Giá', + 'shelves_long' => 'Giá sách', + 'shelves_empty' => 'Không có giá nào được tạo', + 'shelves_create' => 'Tạo Giá mới', + 'shelves_popular' => 'Các Giá phổ biến', + 'shelves_new' => 'Các Giá mới', + 'shelves_new_action' => 'Giá mới', + 'shelves_popular_empty' => 'Các giá phổ biến sẽ xuất hiện ở đây.', + 'shelves_new_empty' => 'Các Giá được tạo gần đây sẽ xuất hiện ở đây.', + 'shelves_save' => 'Lưu Giá', + 'shelves_books' => 'Sách trên Giá này', + 'shelves_add_books' => 'Thêm sách vào Giá này', + 'shelves_drag_books' => 'Kéo sách vào đây để thêm vào giá', + 'shelves_empty_contents' => 'Giá này không có sách nào', + 'shelves_edit_and_assign' => 'Chỉnh sửa kệ để gán sách', + 'shelves_edit_named' => 'Chỉnh sửa kệ sách :name', + 'shelves_edit' => 'Chỉnh sửa kệ sách', + 'shelves_delete' => 'Xóa kệ sách', + 'shelves_delete_named' => 'Xóa kệ sách :name', + 'shelves_delete_explain' => "Chức năng này sẽ xóa kệ sách với tên ':name'. Các sách chứa trong nó sẽ không bị xóa.", + 'shelves_delete_confirmation' => 'Bạn có chắc chắn muốn xóa kệ sách này?', + 'shelves_permissions' => 'Các quyền đối với kệ sách', + 'shelves_permissions_updated' => 'Các quyền với kệ sách đã được cập nhật', + 'shelves_permissions_active' => 'Đang bật các quyền hạn từ Kệ sách', + 'shelves_copy_permissions_to_books' => 'Sao chép các quyền cho sách', + 'shelves_copy_permissions' => 'Sao chép các quyền', + 'shelves_copy_permissions_explain' => 'Điều này sẽ áp dụng các cài đặt quyền của giá sách hiện tại với tất cả các cuốn sách bên trong. Trước khi kích hoạt, đảm bảo bất cứ thay đổi liên quan đến quyền của giá sách này đã được lưu.', + 'shelves_copy_permission_success' => 'Các quyền của giá sách đã được sao chép tới :count quyển sách', + + // Books + 'book' => 'Sách', + 'books' => 'Tất cả sách', + 'x_books' => ':count Sách|:count Tất cả sách', + 'books_empty' => 'Không có cuốn sách nào được tạo', + 'books_popular' => 'Những cuốn sách phổ biến', + 'books_recent' => 'Những cuốn sách gần đây', + 'books_new' => 'Những cuốn sách mới', + 'books_new_action' => 'Sách mới', + 'books_popular_empty' => 'Những cuốn sách phổ biến nhất sẽ xuất hiện ở đây.', + 'books_new_empty' => 'Những cuốn sách tạo gần đây sẽ được xuất hiện ở đây.', + 'books_create' => 'Tạo cuốn sách mới', + 'books_delete' => 'Xóa sách', + 'books_delete_named' => 'Xóa sách :bookName', + 'books_delete_explain' => 'Điều này sẽ xóa cuốn sách với tên \':bookName\'. Tất cả các trang và các chương sẽ bị xóa.', + 'books_delete_confirmation' => 'Bạn có chắc chắn muốn xóa cuốn sách này?', + 'books_edit' => 'Sửa sách', + 'books_edit_named' => 'Sửa sách :bookName', + 'books_form_book_name' => 'Tên sách', + 'books_save' => 'Lưu sách', + 'books_permissions' => 'Các quyền của cuốn sách', + 'books_permissions_updated' => 'Các quyền của cuốn sách đã được cập nhật', + 'books_empty_contents' => 'Không có trang hay chương nào được tạo cho cuốn sách này.', + 'books_empty_create_page' => 'Tao một trang mới', + 'books_empty_sort_current_book' => 'Sắp xếp cuốn sách này', + 'books_empty_add_chapter' => 'Thêm một chương mới', + 'books_permissions_active' => 'Đang bật các quyền hạn từ Sách', + 'books_search_this' => 'Tìm cuốn sách này', + 'books_navigation' => 'Điều hướng cuốn sách', + 'books_sort' => 'Sắp xếp nội dung cuốn sách', + 'books_sort_named' => 'Sắp xếp sách :bookName', + 'books_sort_name' => 'Sắp xếp theo tên', + 'books_sort_created' => 'Sắp xếp theo ngày tạo', + 'books_sort_updated' => 'Sắp xếp theo ngày cập nhật', + 'books_sort_chapters_first' => 'Các Chương đầu', + 'books_sort_chapters_last' => 'Các Chương cuối', + 'books_sort_show_other' => 'Hiển thị các Sách khác', + 'books_sort_save' => 'Lưu thứ tự mới', + + // Chapters + 'chapter' => 'Chương', + 'chapters' => 'Các chương', + 'x_chapters' => ':count Chương|:count Chương', + 'chapters_popular' => 'Các Chương phổ biến', + 'chapters_new' => 'Chương mới', + 'chapters_create' => 'Tạo Chương mới', + 'chapters_delete' => 'Xóa Chương', + 'chapters_delete_named' => 'Xóa Chương :chapterName', + 'chapters_delete_explain' => 'Chức năng này sẽ xóa chương với tên \':chapterName\'. Tất cả các trang sẽ bị loại bỏ và thêm trực tiếp vào sách chứa nó.', + 'chapters_delete_confirm' => 'Bạn có chắc chắn muốn xóa chương này?', + 'chapters_edit' => 'Sửa Chương', + 'chapters_edit_named' => 'Sửa chương :chapterName', + 'chapters_save' => 'Lưu Chương', + 'chapters_move' => 'Di chuyển Chương', + 'chapters_move_named' => 'Di chuyển Chương :chapterName', + 'chapter_move_success' => 'Chương được di chuyển đến :bookName', + 'chapters_permissions' => 'Quyền hạn Chương', + 'chapters_empty' => 'Không có trang nào hiện có trong chương này.', + 'chapters_permissions_active' => 'Đang bật các quyền hạn từ Chương', + 'chapters_permissions_success' => 'Quyền hạn Chương được cập nhật', + 'chapters_search_this' => 'Tìm kiếm trong Chương này', + + // Pages + 'page' => 'Trang', + 'pages' => 'Các trang', + 'x_pages' => ':count Trang|:count Trang', + 'pages_popular' => 'Các Trang phổ biến', + 'pages_new' => 'Trang Mới', + 'pages_attachments' => 'Các đính kèm', + 'pages_navigation' => 'Điều hướng Trang', + 'pages_delete' => 'Xóa Trang', + 'pages_delete_named' => 'Xóa Trang :pageName', + 'pages_delete_draft_named' => 'Xóa Trang Nháp :pageName', + 'pages_delete_draft' => 'Xóa Trang Nháp', + 'pages_delete_success' => 'Đã xóa Trang', + 'pages_delete_draft_success' => 'Đã xóa trang Nháp', + 'pages_delete_confirm' => 'Bạn có chắc chắn muốn xóa trang này?', + 'pages_delete_draft_confirm' => 'Bạn có chắc chắn muốn xóa trang nháp này?', + 'pages_editing_named' => 'Đang chỉnh sửa Trang :pageName', + 'pages_edit_draft_options' => 'Tùy chọn bản nháp', + 'pages_edit_save_draft' => 'Lưu Nháp', + 'pages_edit_draft' => 'Sửa trang nháp', + 'pages_editing_draft' => 'Đang chỉnh sửa Nháp', + 'pages_editing_page' => 'Đang chỉnh sửa Trang', + 'pages_edit_draft_save_at' => 'Bản nháp đã lưu lúc ', + 'pages_edit_delete_draft' => 'Xóa Bản nháp', + 'pages_edit_discard_draft' => 'Hủy bỏ Bản nháp', + 'pages_edit_set_changelog' => 'Đặt Changelog', + 'pages_edit_enter_changelog_desc' => 'Viết mô tả ngắn gọn cho các thay đổi mà bạn tạo', + 'pages_edit_enter_changelog' => 'Viết Changelog', + 'pages_save' => 'Lưu Trang', + 'pages_title' => 'Tiêu đề Trang', + 'pages_name' => 'Tên Trang', + 'pages_md_editor' => 'Trình chỉnh sửa', + 'pages_md_preview' => 'Xem trước', + 'pages_md_insert_image' => 'Chèn hình ảnh', + 'pages_md_insert_link' => 'Chèn liên kết thực thể', + 'pages_md_insert_drawing' => 'Chèn bản vẽ', + 'pages_not_in_chapter' => 'Trang không nằm trong một chương', + 'pages_move' => 'Di chuyển Trang', + 'pages_move_success' => 'Trang đã chuyển tới ":parentName"', + 'pages_copy' => 'Sao chép Trang', + 'pages_copy_desination' => 'Sao lưu đến', + 'pages_copy_success' => 'Trang được sao chép thành công', + 'pages_permissions' => 'Quyền hạn Trang', + 'pages_permissions_success' => 'Quyền hạn Trang được cập nhật', + 'pages_revision' => 'Phiên bản', + 'pages_revisions' => 'Phiên bản Trang', + 'pages_revisions_named' => 'Phiên bản Trang cho :pageName', + 'pages_revision_named' => 'Phiên bản Trang cho :pageName', + 'pages_revisions_created_by' => 'Tạo bởi', + 'pages_revisions_date' => 'Ngày của Phiên bản', + 'pages_revisions_number' => '#', + 'pages_revisions_numbered' => 'Phiên bản #:id', + 'pages_revisions_numbered_changes' => 'Các thay đổi của phiên bản #:id', + 'pages_revisions_changelog' => 'Nhật ký thay đổi', + 'pages_revisions_changes' => 'Các thay đổi', + 'pages_revisions_current' => 'Phiên bản hiện tại', + 'pages_revisions_preview' => 'Xem trước', + 'pages_revisions_restore' => 'Khôi phục', + 'pages_revisions_none' => 'Trang này không có phiên bản nào', + 'pages_copy_link' => 'Sao chép Liên kết', + 'pages_edit_content_link' => 'Soạn thảo Nội dung', + 'pages_permissions_active' => 'Đang bật các quyền hạn từ Trang', + 'pages_initial_revision' => 'Đăng bài mở đầu', + 'pages_initial_name' => 'Trang mới', + 'pages_editing_draft_notification' => 'Bạn hiện đang chỉnh sửa một bản nháp được lưu cách đây :timeDiff.', + 'pages_draft_edited_notification' => 'Trang này đã được cập nhật từ lúc đó. Bạn nên loại bỏ bản nháp này.', + 'pages_draft_edit_active' => [ + 'start_a' => ':count người dùng đang bắt đầu chỉnh sửa trang này', + 'start_b' => ':userName đang bắt đầu chỉnh sửa trang này', + 'time_a' => 'kể từ khi thang được cập nhật lần cuối', + 'time_b' => 'trong :minCount phút cuối', + 'message' => ':start :time. Hãy cẩn thận đừng ghi đè vào các bản cập nhật của nhau!', + ], + 'pages_draft_discarded' => 'Bản nháp đã được loại bỏ, Người sửa đã cập nhật trang với nội dung hiện tại', + 'pages_specific' => 'Trang cụ thể', + 'pages_is_template' => 'Biểu mẫu trang', + + // Editor Sidebar + 'page_tags' => 'Các Thẻ Trang', + 'chapter_tags' => 'Các Thẻ Chương', + 'book_tags' => 'Các Thẻ Sách', + 'shelf_tags' => 'Các Thẻ Kệ', + 'tag' => 'Nhãn', + 'tags' => 'Các Thẻ', + 'tag_name' => 'Tên Nhãn', + 'tag_value' => 'Giá trị Thẻ (Tùy chọn)', + 'tags_explain' => "Thêm vài thẻ để phân loại nội dung của bạn tốt hơn. \n Bạn có thể đặt giá trị cho thẻ để quản lí kĩ càng hơn.", + 'tags_add' => 'Thêm thẻ khác', + 'tags_remove' => 'Xóa thẻ này', + 'attachments' => 'Các Đính kèm', + 'attachments_explain' => 'Cập nhật một số tập tin và đính một số liên kết để hiển thị trên trang của bạn. Chúng được hiện trong sidebar của trang.', + 'attachments_explain_instant_save' => 'Các thay đổi ở đây sẽ được lưu ngay lập tức.', + 'attachments_items' => 'Đính kèm các Mục', + 'attachments_upload' => 'Tải lên Tập tin', + 'attachments_link' => 'Đính kèm Liên kết', + 'attachments_set_link' => 'Đặt Liên kết', + 'attachments_delete_confirm' => 'Bấm xóa lần nữa để xác nhận bạn muốn xóa đính kèm này.', + 'attachments_dropzone' => 'Thả các tập tin hoặc bấm vào đây để đính kèm một tập tin', + 'attachments_no_files' => 'Không có tập tin nào được tải lên', + 'attachments_explain_link' => 'Bạn có thể đính kèm một liên kết nếu bạn lựa chọn không tải lên tập tin. Liên kết này có thể trỏ đến một trang khác hoặc một tập tin ở trên mạng (đám mây).', + 'attachments_link_name' => 'Tên Liên kết', + 'attachment_link' => 'Liên kết đính kèm', + 'attachments_link_url' => 'Liên kết đến tập tin', + 'attachments_link_url_hint' => 'URL của trang hoặc tập tin', + 'attach' => 'Đính kèm', + 'attachments_edit_file' => 'Sửa tập tin', + 'attachments_edit_file_name' => 'Tên tệp tin', + 'attachments_edit_drop_upload' => 'Thả tập tin hoặc bấm vào đây để tải lên và ghi đè', + 'attachments_order_updated' => 'Đã cập nhật thứ tự đính kèm', + 'attachments_updated_success' => 'Đã cập nhật chi tiết đính kèm', + 'attachments_deleted' => 'Đính kèm đã được xóa', + 'attachments_file_uploaded' => 'Tập tin tải lên thành công', + 'attachments_file_updated' => 'Tập tin cập nhật thành công', + 'attachments_link_attached' => 'Liên kết được đính kèm đến trang thành công', + 'templates' => 'Các Mẫu', + 'templates_set_as_template' => 'Trang là một mẫu', + 'templates_explain_set_as_template' => 'Bạn có thể đặt trang này làm mẫu, nội dung của nó sẽ được sử dụng lại khi tạo các trang mới. Người dùng khác có thể sử dụng mẫu này nếu học có quyền hạn xem trang này.', + 'templates_replace_content' => 'Thay thế nội dung trang', + 'templates_append_content' => 'Viết vào nội dung trang', + 'templates_prepend_content' => 'Thêm vào đầu nội dung trang', + + // Profile View + 'profile_user_for_x' => 'Đã là người dùng trong :time', + 'profile_created_content' => 'Đã tạo nội dung', + 'profile_not_created_pages' => ':userName chưa tạo bất kỳ trang nào', + 'profile_not_created_chapters' => ':userName chưa tạo bất kì chương nào', + 'profile_not_created_books' => ':userName chưa tạo bất cứ sách nào', + 'profile_not_created_shelves' => ':userName chưa tạo bất kỳ giá sách nào', + + // Comments + 'comment' => 'Bình luận', + 'comments' => 'Các bình luận', + 'comment_add' => 'Thêm bình luận', + 'comment_placeholder' => 'Đăng bình luận tại đây', + 'comment_count' => '{0} Không có bình luận|{1} 1 Bình luận|[2,*] :count Bình luận', + 'comment_save' => 'Lưu bình luận', + 'comment_saving' => 'Đang lưu bình luận...', + 'comment_deleting' => 'Đang xóa bình luận...', + 'comment_new' => 'Bình luận mới', + 'comment_created' => 'đã bình luận :createDiff', + 'comment_updated' => 'Đã cập nhật :updateDiff bởi :username', + 'comment_deleted_success' => 'Bình luận đã bị xóa', + 'comment_created_success' => 'Đã thêm bình luận', + 'comment_updated_success' => 'Bình luận đã được cập nhật', + 'comment_delete_confirm' => 'Bạn có chắc bạn muốn xóa bình luận này?', + 'comment_in_reply_to' => 'Trả lời cho :commentId', + + // Revision + 'revision_delete_confirm' => 'Bạn có chắc bạn muốn xóa phiên bản này?', + 'revision_restore_confirm' => 'Bạn có chắc bạn muốn khôi phục phiên bản này? Nội dung trang hiện tại sẽ được thay thế.', + 'revision_delete_success' => 'Phiên bản đã được xóa', + 'revision_cannot_delete_latest' => 'Không thể xóa phiên bản mới nhất.' +]; \ No newline at end of file diff --git a/resources/lang/vi/errors.php b/resources/lang/vi/errors.php new file mode 100644 index 000000000..e93f74e64 --- /dev/null +++ b/resources/lang/vi/errors.php @@ -0,0 +1,103 @@ + 'Bạn không có quyền truy cập đến trang này.', + 'permissionJson' => 'Bạn không có quyền để thực hiện hành động này.', + + // Auth + 'error_user_exists_different_creds' => 'Đã có người sử dụng email :email nhưng với thông tin định danh khác.', + 'email_already_confirmed' => 'Email đã được xác nhận trước đó, Đang đăng nhập.', + 'email_confirmation_invalid' => 'Token xác nhận này không hợp lệ hoặc đã được sử dụng trước đó, Xin hãy thử đăng ký lại.', + 'email_confirmation_expired' => 'Token xác nhận đã hết hạn, Một email xác nhận mới đã được gửi.', + 'email_confirmation_awaiting' => 'Địa chỉ email của tài khoản bạn đang sử dụng cần phải được xác nhận', + 'ldap_fail_anonymous' => 'Truy cập đến LDAP sử dụng gán ẩn danh thất bại', + 'ldap_fail_authed' => 'Truy cập đến LDAP sử dụng dn và mật khẩu thất bại', + 'ldap_extension_not_installed' => 'Tiện ích mở rộng LDAP PHP chưa được cài đặt', + 'ldap_cannot_connect' => 'Không thể kết nối đến máy chủ LDAP, mở đầu kết nối thất bại', + 'saml_already_logged_in' => 'Đã đăng nhập', + 'saml_user_not_registered' => 'Người dùng :name chưa được đăng ký và tự động đăng ký đang bị tắt', + 'saml_no_email_address' => 'Không tìm thấy địa chỉ email cho người dùng này trong dữ liệu được cung cấp bới hệ thống xác thực ngoài', + 'saml_invalid_response_id' => 'Yêu cầu từ hệ thống xác thực bên ngoài không được nhận diện bởi quy trình chạy cho ứng dụng này. Điều hướng trở lại sau khi đăng nhập có thể đã gây ra vấn đề này.', + 'saml_fail_authed' => 'Đăng nhập sử dụng :system thất bại, hệ thống không cung cấp được sự xác thực thành công', + 'social_no_action_defined' => 'Không có hành động được xác định', + 'social_login_bad_response' => "Xảy ra lỗi trong lúc đăng nhập :socialAccount: \n:error", + 'social_account_in_use' => 'Tài khoản :socialAccount này đang được sử dụng, Vui lòng thử đăng nhập bằng tùy chọn :socialAccount.', + 'social_account_email_in_use' => 'Địa chỉ email :email đã được sử dụng. Nếu bạn đã có tài khoản bạn có thể kết nối đến tài khoản :socialAccount của mình từ cài đặt cá nhân của bạn.', + 'social_account_existing' => ':socialAccount đã được gắn với hồ sơ của bạn từ trước.', + 'social_account_already_used_existing' => 'Tài khoản :socialAccount đã được sử dụng bởi một người dùng khác.', + 'social_account_not_used' => 'Tài khoản :socialAccount này chưa được liên kết bởi bất cứ người dùng nào. Vui lòng liên kết nó tại cài đặt cá nhân của bạn. ', + 'social_account_register_instructions' => 'Nếu bạn chưa có tài khoản, Bạn có thể đăng ký một tài khoản bằng tùy chọn :socialAccount.', + 'social_driver_not_found' => 'Không tìm thấy driver cho MXH', + 'social_driver_not_configured' => 'Cài đặt MXH :socialAccount của bạn đang không được cấu hình hợp lệ.', + 'invite_token_expired' => 'Liên kết mời này đã hết hạn. Bạn có thể thử đặt lại mật khẩu của tài khoản.', + + // System + 'path_not_writable' => 'Đường dẫn tệp tin :filePath không thể tải đến được. Đảm bảo rằng đường dẫn này có thể ghi được ở trên máy chủ.', + 'cannot_get_image_from_url' => 'Không thể lấy ảnh từ :url', + 'cannot_create_thumbs' => 'Máy chủ không thể tạo ảnh nhỏ. Vui lòng kiểm tra bạn đã cài đặt tiện ích mở rộng GD PHP.', + 'server_upload_limit' => 'Máy chủ không cho phép tải lên kích thước này. Vui lòng thử lại với tệp tin nhỏ hơn.', + 'uploaded' => 'Máy chủ không cho phép tải lên kích thước này. Vui lòng thử lại với tệp tin nhỏ hơn.', + 'image_upload_error' => 'Đã xảy ra lỗi khi đang tải lên ảnh', + 'image_upload_type_error' => 'Ảnh đang được tải lên không hợp lệ', + 'file_upload_timeout' => 'Đã quá thời gian tải lên tệp tin.', + + // Attachments + 'attachment_page_mismatch' => 'Trang không trùng khớp khi cập nhật đính kèm', + 'attachment_not_found' => 'Không tìm thấy đính kèm', + + // Pages + 'page_draft_autosave_fail' => 'Lưu bản nháp thất bại. Đảm bảo rằng bạn có kết nối đến internet trước khi lưu trang này', + 'page_custom_home_deletion' => 'Không thể xóa trang khi nó đang được đặt là trang chủ', + + // Entities + 'entity_not_found' => 'Không tìm thấy thực thể', + 'bookshelf_not_found' => 'Không tìm thấy giá sách', + 'book_not_found' => 'Không tìm thấy sách', + 'page_not_found' => 'Không tìm thấy trang', + 'chapter_not_found' => 'Không tìm thấy chương', + 'selected_book_not_found' => 'Không tìm thấy sách được chọn', + 'selected_book_chapter_not_found' => 'Không tìm thấy Sách hoặc Chương được chọn', + 'guests_cannot_save_drafts' => 'Khách không thể lưu bản nháp', + + // Users + 'users_cannot_delete_only_admin' => 'Bạn không thể xóa quản trị viên duy nhất', + 'users_cannot_delete_guest' => 'Bạn không thể xóa người dùng khách', + + // Roles + 'role_cannot_be_edited' => 'Không thể chỉnh sửa quyền này', + 'role_system_cannot_be_deleted' => 'Quyền này là quyền hệ thống và không thể bị xóa', + 'role_registration_default_cannot_delete' => 'Quyền này không thể bị xóa trong khi đang đặt là quyền mặc định khi đăng ký', + 'role_cannot_remove_only_admin' => 'Người dùng này là người dùng duy nhất được chỉ định quyền quản trị viên. Gán quyền quản trị viên cho người dùng khác trước khi thử xóa người dùng này.', + + // Comments + 'comment_list' => 'Đã có lỗi xảy ra khi tải bình luận.', + 'cannot_add_comment_to_draft' => 'Bạn không thể thêm bình luận vào bản nháp.', + 'comment_add' => 'Đã xảy ra lỗi khi thêm / sửa bình luận.', + 'comment_delete' => 'Đã xảy ra lỗi khi xóa bình luận.', + 'empty_comment' => 'Không thể thêm bình luận bị bỏ trống.', + + // Error pages + '404_page_not_found' => 'Không Tìm Thấy Trang', + 'sorry_page_not_found' => 'Xin lỗi, Không tìm thấy trang bạn đang tìm kiếm.', + 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.', + 'return_home' => 'Quay lại trang chủ', + 'error_occurred' => 'Đã xảy ra lỗi', + 'app_down' => ':appName hiện đang ngoại tuyến', + 'back_soon' => 'Nó sẽ sớm hoạt động trở lại.', + + // API errors + 'api_no_authorization_found' => 'Không tìm thấy token ủy quyền trong yêu cầu', + 'api_bad_authorization_format' => 'Đã tìm thấy một token ủy quyền trong yêu cầu nhưng định dạng hiển thị không hợp lệ', + 'api_user_token_not_found' => 'Không tìm thấy token API nào khớp với token ủy quyền được cung cấp', + 'api_incorrect_token_secret' => 'Mã bí mật được cung cấp cho token API đang được sử dụng không hợp lệ', + 'api_user_no_api_permission' => 'Chủ của token API đang sử dụng không có quyền gọi API', + 'api_user_token_expired' => 'Token sử dụng cho việc ủy quyền đã hết hạn', + + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Lỗi khi gửi email thử:', + +]; diff --git a/resources/lang/vi/pagination.php b/resources/lang/vi/pagination.php new file mode 100644 index 000000000..cb3a0a5b2 --- /dev/null +++ b/resources/lang/vi/pagination.php @@ -0,0 +1,12 @@ + '« Trước', + 'next' => 'Tiếp »', + +]; diff --git a/resources/lang/vi/passwords.php b/resources/lang/vi/passwords.php new file mode 100644 index 000000000..d97296158 --- /dev/null +++ b/resources/lang/vi/passwords.php @@ -0,0 +1,15 @@ + 'Mật khẩu phải có tối thiểu 8 ký tự và và phải trùng với mật khẩu xác nhận.', + 'user' => "Chúng tôi không tìm thấy người dùng với địa chỉ email đó.", + 'token' => 'Token đặt lại mật khẩu không hợp lệ.', + 'sent' => 'Chúng tôi đã gửi email chứa liên kết đặt lại mật khẩu cho bạn!', + 'reset' => 'Mật khẩu của bạn đã được đặt lại!', + +]; diff --git a/resources/lang/vi/settings.php b/resources/lang/vi/settings.php new file mode 100644 index 000000000..8886acd7b --- /dev/null +++ b/resources/lang/vi/settings.php @@ -0,0 +1,213 @@ + 'Cài đặt', + 'settings_save' => 'Lưu Cài đặt', + 'settings_save_success' => 'Đã lưu cài đặt', + + // App Settings + 'app_customization' => 'Tuỳ biến', + 'app_features_security' => 'Chức năng & Bảo mật', + 'app_name' => 'Tên Ứng dụng', + 'app_name_desc' => 'Tên này được hiển thị trong header và trong bất kì email hệ thống được gửi.', + 'app_name_header' => 'Hiển thị tên trong header', + 'app_public_access' => 'Quyền truy cập công khai', + 'app_public_access_desc' => 'Bật tùy chọn này sẽ cho phép khách, người không cần đăng nhập, truy cập đến nội dung bản BookStack của bạn.', + 'app_public_access_desc_guest' => 'Quyền truy cập của khách có thể được điều khiển thông qua người dùng "Guest".', + 'app_public_access_toggle' => 'Cho phép truy cập công khai', + 'app_public_viewing' => 'Cho phép xem công khai?', + 'app_secure_images' => 'Bảo mật tốt hơn cho việc tải lên ảnh', + 'app_secure_images_toggle' => 'Bật bảo mật tốt hơn cho các ảnh được tải lên', + 'app_secure_images_desc' => 'Vì lí do hiệu năng, tất cả các ảnh đều được truy cập công khai. Tùy chọn này thêm một chuỗi ngẫu nhiên, khó đoán vào phần liên kết đến ảnh. Đảm bảo rằng tránh việc index thư mục để ngăn chặn việc truy cập đến ảnh một cách dễ dàng.', + 'app_editor' => 'Soạn thảo Trang', + 'app_editor_desc' => 'Chọn trình soạn thảo nào sẽ được sử dụng bởi tất cả người dùng để chỉnh sửa trang.', + 'app_custom_html' => 'Tùy chọn nội dung Head HTML', + 'app_custom_html_desc' => 'Bất cứ nội dung nào được thêm vào đây sẽ được đưa vào phần cuối của khu vực của mỗi trang. Tiện cho việc ghi đè style hoặc thêm mã phân tích dữ liệu.', + 'app_custom_html_disabled_notice' => 'Nội dung tùy biến HTML head bị tắt tại trang cài đặt này để đảm bảo mọi thay đổi làm hỏng hệ thống có để được khôi phục.', + 'app_logo' => 'Logo Ứng dụng', + 'app_logo_desc' => 'Ảnh này nên có kích thước chiều cao là 43px.
Ảnh lớn sẽ được điều chỉnh tỷ lệ xuống.', + 'app_primary_color' => 'Màu chủ đạo của Ứng dụng', + 'app_primary_color_desc' => 'Đặt màu chủ đạo của ứng dụng kể cả banner, các nút và các đường dẫn liên kết.', + 'app_homepage' => 'Trang chủ Ứng dụng', + 'app_homepage_desc' => 'Chọn hiển thị để hiện tại trang chủ thay cho hiển thị mặc định. Quyền cho trang được bỏ qua cho các trang được chọn.', + 'app_homepage_select' => 'Chọn một trang', + 'app_disable_comments' => 'Tắt bình luận', + 'app_disable_comments_toggle' => 'Tắt bình luận', + 'app_disable_comments_desc' => 'Tắt các bình luận trên tất cả các trang của ứng dụng.
Các bình luận đã tồn tại sẽ không được hiển thị.', + + // Color settings + 'content_colors' => 'Màu của phần Nội dung', + 'content_colors_desc' => 'Đặt màu cho tất cả các thành phần trong trang theo sự tổ chức kế thừa. Việc chọn màu sắc với cùng độ sáng với màu mặc định là được khuyến nghị giúp cho việc đọc thuận lợi.', + 'bookshelf_color' => 'Màu Giá sách', + 'book_color' => 'Màu Sách', + 'chapter_color' => 'Màu Chương', + 'page_color' => 'Màu Trang', + 'page_draft_color' => 'Màu Trang Nháp', + + // Registration Settings + 'reg_settings' => 'Đăng ký', + 'reg_enable' => 'Bật Đăng ký', + 'reg_enable_toggle' => 'Bật đăng ký', + 'reg_enable_desc' => 'Khi đăng ký được bật người dùng sẽ có thể tự đăng ký để trở thành người dùng của ứng dụng. Khi đăng kí người dùng sẽ được cấp một quyền sử dụng mặc định.', + 'reg_default_role' => 'Quyền người dùng sử dụng mặc định sau khi đăng kí', + 'reg_enable_external_warning' => 'Tùy chọn trên bị bỏ qua khi xác thực từ bên ngoài LDAP hoặc SAML được bật. Tài khoản người dùng chưa phải là thành viên sẽ được tự động tạo nếu xác thực với hệ thống bên ngoài thành công.', + 'reg_email_confirmation' => 'Xác nhận Email', + 'reg_email_confirmation_toggle' => 'Yêu cầu xác nhận email', + 'reg_confirm_email_desc' => 'Nếu giới hạn tên miền được sử dụng, xác nhận email là bắt buộc và tùy chọn này sẽ bị bỏ qua.', + 'reg_confirm_restrict_domain' => 'Giới hạn tên miền', + 'reg_confirm_restrict_domain_desc' => 'Điền dấu phẩy ngăn cách danh sách các tên miền email dành cho việc bạn muốn giới hạn đăng nhập. Người dùng sẽ nhận được email xác nhận địa chỉ của họ trước khi được phép tương tác với ứng dụng.
Lưu ý rằng người dùng có thể thay đổi địa chỉ email của họ sau khi đăng ký thành công.', + 'reg_confirm_restrict_domain_placeholder' => 'Không có giới hạn nào được thiết lập', + + // Maintenance settings + 'maint' => 'Bảo trì', + 'maint_image_cleanup' => 'Dọn dẹp ảnh', + 'maint_image_cleanup_desc' => "Quét nội dung trang và phiên bản để kiểm tra xem các ảnh và hình vẽ nào đang được sử dụng và ảnh nào dư thừa. Đảm bảo rằng bạn đã tạo bản sao lưu toàn dữ liệu và ảnh trước khi chạy chức năng này.", + 'maint_image_cleanup_ignore_revisions' => 'Bỏ qua ảnh trong phiên bản chỉnh sửa', + 'maint_image_cleanup_run' => 'Chạy Dọn dẹp', + 'maint_image_cleanup_warning' => 'Đã tìm thấy :count ảnh có thể không được sử dụng. Bạn muốn chắc rằng muốn xóa các ảnh này?', + 'maint_image_cleanup_success' => ':count ảnh có thể không được sử dụng đã được tìm thấy và xóa!', + 'maint_image_cleanup_nothing_found' => 'Không tìm thấy ảnh nào không được xử dụng, Không có gì để xóa!', + 'maint_send_test_email' => 'Gửi một email thử', + 'maint_send_test_email_desc' => 'Chức năng này gửi một email thử đến địa chỉ email bạn chỉ định trong hồ sơ của mình.', + 'maint_send_test_email_run' => 'Gửi email thử', + 'maint_send_test_email_success' => 'Email đã được gửi đến :address', + 'maint_send_test_email_mail_subject' => 'Thử Email', + 'maint_send_test_email_mail_greeting' => 'Chức năng gửi email có vẻ đã hoạt động!', + 'maint_send_test_email_mail_text' => 'Chúc mừng! Khi bạn nhận được email thông báo này, cài đặt email của bạn có vẻ đã được cấu hình đúng.', + + // Role Settings + 'roles' => 'Quyền', + 'role_user_roles' => 'Quyền người dùng', + 'role_create' => 'Tạo quyền mới', + 'role_create_success' => 'Quyền mới đã được tạo thành công', + 'role_delete' => 'Xóa quyền', + 'role_delete_confirm' => 'Chức năng này sẽ xóa quyền với tên \':roleName\'.', + 'role_delete_users_assigned' => 'Quyền này có :userCount người dùng được gán. Nếu bạn muốn di dời các người dùng từ quyền này hãy chọn một quyền mới bên dưới.', + 'role_delete_no_migration' => "Không di dời các người dùng", + 'role_delete_sure' => 'Bạn có chắc rằng muốn xóa quyền này?', + 'role_delete_success' => 'Quyền đã được xóa thành công', + 'role_edit' => 'Sửa quyền', + 'role_details' => 'Thông tin chi tiết Quyền', + 'role_name' => 'Tên quyền', + 'role_desc' => 'Thông tin vắn tắt của Quyền', + 'role_external_auth_id' => 'Mã của xác thực ngoài', + 'role_system' => 'Quyền Hệ thống', + 'role_manage_users' => 'Quản lý người dùng', + 'role_manage_roles' => 'Quản lý quyền và chức năng quyền', + 'role_manage_entity_permissions' => 'Quản lý tất cả quyền của các sách, chương & trang', + 'role_manage_own_entity_permissions' => 'Quản lý quyền trên sách, chương & trang bạn tạo ra', + 'role_manage_page_templates' => 'Quản lý các mẫu trang', + 'role_access_api' => 'Truy cập đến API hệ thống', + 'role_manage_settings' => 'Quản lý cài đặt của ứng dụng', + 'role_asset' => 'Quyền tài sản (asset)', + 'role_asset_desc' => 'Các quyền này điều khiển truy cập mặc định tới tài sản (asset) nằm trong hệ thống. Quyền tại Sách, Chường và Trang se ghi đè các quyền này.', + 'role_asset_admins' => 'Quản trị viên được tự động cấp quyền truy cập đến toàn bộ nội dung, tuy nhiên các tùy chọn đó có thể hiện hoặc ẩn tùy chọn giao diện.', + 'role_all' => 'Tất cả', + 'role_own' => 'Sở hữu', + 'role_controlled_by_asset' => 'Kiểm soát các tài sản (asset) người dùng tải lên', + 'role_save' => 'Lưu Quyền', + 'role_update_success' => 'Quyền đã được cập nhật thành công', + 'role_users' => 'Người dùng được gán quyền này', + 'role_users_none' => 'Không có người dùng nào hiện được gán quyền này', + + // Users + 'users' => 'Người dùng', + 'user_profile' => 'Hồ sơ người dùng', + 'users_add_new' => 'Thêm người dùng mới', + 'users_search' => 'Tìm kiếm người dùng', + 'users_details' => 'Chi tiết người dùng', + 'users_details_desc' => 'Hiển thị tên và địa chỉ email cho người dùng này. Địa chỉ email sẽ được sử dụng để đăng nhập vào ứng dụng.', + 'users_details_desc_no_email' => 'Đặt tên cho người dùng này để giúp người dùng khác nhận ra họ.', + 'users_role' => 'Quyền người dùng', + 'users_role_desc' => 'Chọn quyền mà người dùng sẽ được gán. Nếu người dùng được gán nhiều quyền, các quyền hạn sẽ ghi đè lên nhau và họ sẽ nhận được tất cả các quyền hạn từ quyền được gán.', + 'users_password' => 'Mật khẩu người dùng', + 'users_password_desc' => 'Đặt mật khẩu dùng để đăng nhập ứng dụng. Nó phải có độ dài tối thiểu 6 ký tự.', + 'users_send_invite_text' => 'Bạn có thể chọn để gửi cho người dùng này một email mời, giúp họ có thể tự đặt mật khẩu cho chính họ. Nếu không bạn có thể đặt mật khẩu cho họ.', + 'users_send_invite_option' => 'Gửi email mời người dùng', + 'users_external_auth_id' => 'Mã của xác thực ngoài', + 'users_external_auth_id_desc' => 'Đây là mã được sử dụng để xác thực với người dùng này khi giao tiếp với hệ thống xác thực bên ngoài.', + 'users_password_warning' => 'Chỉ điền ô bên dưới nếu bạn muốn thay đổi mật khẩu.', + 'users_system_public' => 'Người dùng này đại diện cho bất kỳ khách nào thăm trang của bạn. Nó được tự động gán và không thể dùng để đăng nhập.', + 'users_delete' => 'Xóa Người dùng', + 'users_delete_named' => 'Xóa người dùng :userName', + 'users_delete_warning' => 'Chức năng này sẽ hoàn toàn xóa người dùng với tên \':userName\' từ hệ thống.', + 'users_delete_confirm' => 'Bạn có chắc muốn xóa người dùng này không?', + 'users_delete_success' => 'Người dùng đã được xóa thành công', + 'users_edit' => 'Sửa người dùng', + 'users_edit_profile' => 'Sửa Hồ sơ', + 'users_edit_success' => 'Người dùng được cập nhật thành công', + 'users_avatar' => 'Ảnh đại diện', + 'users_avatar_desc' => 'Chọn ảnh đê đại hiện cho người dùng này. Ảnh nên có kích cỡ hình vuông 256px.', + 'users_preferred_language' => 'Ngôn ngữ ưu tiên', + 'users_preferred_language_desc' => 'Tùy chọn này sẽ thay đổi ngôn ngư sử dụng cho giao diện người dùng của ứng dụng. Nó sẽ không ảnh hưởng đến bất cứ nội dung nào người dùng tạo ra.', + 'users_social_accounts' => 'Tài khoản MXH', + 'users_social_accounts_info' => 'Bạn có thể kết nối đến các tài khoản khác để đăng nhập nhanh chóng và dễ dàng. Ngắt kết nối đến một tài khoản ở đây không thu hồi việc ủy quyền truy cập trước đó. Thu hồi truy cập của các tài khoản kết nối MXH từ trang cài đặt hồ sở của bạn.', + 'users_social_connect' => 'Kết nối tài khoản', + 'users_social_disconnect' => 'Ngắt kết nối tài khoản', + 'users_social_connected' => 'Tài khoản :socialAccount đã được liên kết với hồ sơ của bạn thành công.', + 'users_social_disconnected' => 'Tài khoản :socialAccount đã được ngắt kết nối khỏi hồ sơ của bạn thành công.', + 'users_api_tokens' => 'Các Token API', + 'users_api_tokens_none' => 'Khong có Token API nào được tạo cho người dùng này', + 'users_api_tokens_create' => 'Tạo Token', + 'users_api_tokens_expires' => 'Hết hạn', + 'users_api_tokens_docs' => 'Tài liệu API', + + // API Tokens + 'user_api_token_create' => 'Tạo Token API', + 'user_api_token_name' => 'Tên', + 'user_api_token_name_desc' => 'Đặt cho token của bạn một tên dễ đọc để nhắc nhở mục đích sử dụng của nó trong tương lai.', + 'user_api_token_expiry' => 'Ngày hết hạn', + 'user_api_token_expiry_desc' => 'Đặt một ngày hết hạn cho token này. Sau ngày này, các yêu cầu được tạo khi sử dụng token này sẽ không còn hoạt động. Để trống trường này sẽ đặt ngày hết hạn sau 100 năm tới.', + 'user_api_token_create_secret_message' => 'Ngay sau khi tạo token này một "Mã Token" & "Mật khẩu Token" sẽ được tạo và hiển thị. Mật khẩu sẽ chỉ được hiện một lần duy nhất nên hãy chắc rằng bạn sao lưu giá trị của nó ở nơi an toàn và bảo mật trước khi tiếp tục.', + 'user_api_token_create_success' => 'Token API đã được tạo thành công', + 'user_api_token_update_success' => 'Token API đã được cập nhật thành công', + 'user_api_token' => 'Token API', + 'user_api_token_id' => 'Mã Token', + 'user_api_token_id_desc' => 'Đây là hệ thống sinh ra định danh không thể chỉnh sửa cho token này, thứ mà sẽ cần phải cung cấp khi yêu cầu API.', + 'user_api_token_secret' => 'Mật khẩu Token', + 'user_api_token_secret_desc' => 'Đây là mật khẩu được hệ thống tạo ra cho token để phục vụ cho các yêu cầu API này. Nó sẽ chỉ được hiển thị một lần duy nhất nên hãy sao lưu nó vào nơi nào đó an toàn và bảo mật.', + 'user_api_token_created' => 'Token được tạo :timeAgo', + 'user_api_token_updated' => 'Token được cập nhật :timeAgo', + 'user_api_token_delete' => 'Xóa Token', + 'user_api_token_delete_warning' => 'Chức năng này sẽ hoàn toàn xóa token API với tên \':tokenName\' từ hệ thống.', + 'user_api_token_delete_confirm' => 'Bạn có chắc rằng muốn xóa token API này?', + 'user_api_token_delete_success' => 'Token API đã được xóa thành công', + + //! If editing translations files directly please ignore this in all + //! languages apart from en. Content will be auto-copied from en. + //!//////////////////////////////// + 'language_select' => [ + 'en' => 'English', + 'ar' => 'العربية', + 'cs' => 'Česky', + 'da' => 'Đan Mạch', + 'de' => 'Deutsch (Sie)', + 'de_informal' => 'Deutsch (Du)', + 'es' => 'Español', + 'es_AR' => 'Español Argentina', + 'fr' => 'Français', + 'hu' => 'Magyar', + 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', + 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', + 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', + 'zh_CN' => '简体中文', + 'zh_TW' => '繁體中文', + ] + //!//////////////////////////////// +]; diff --git a/resources/lang/vi/validation.php b/resources/lang/vi/validation.php new file mode 100644 index 000000000..030885408 --- /dev/null +++ b/resources/lang/vi/validation.php @@ -0,0 +1,114 @@ + ':attribute phải được chấp nhận.', + 'active_url' => ':attribute không phải là một đường dẫn hợp lệ.', + 'after' => ':attribute phải là một ngày sau :date.', + 'alpha' => ':attribute chỉ được chứa chữ cái.', + 'alpha_dash' => ':attribute chỉ được chứa chữ cái, chữ số, gạch nối và gạch dưới.', + 'alpha_num' => ':attribute chỉ được chứa chữ cái hoặc chữ số.', + 'array' => ':attribute phải là một mảng.', + 'before' => ':attribute phải là một ngày trước :date.', + 'between' => [ + 'numeric' => ':attribute phải nằm trong khoảng :min đến :max.', + 'file' => ':attribute phải nằm trong khoảng :min đến :max KB.', + 'string' => ':attribute phải trong khoảng :min đến :max ký tự.', + 'array' => ':attribute phải nằm trong khoảng :min đến :max mục.', + ], + 'boolean' => 'Trường :attribute phải có giá trị đúng hoặc sai.', + 'confirmed' => 'Xác nhận :attribute không khớp.', + 'date' => ':attribute không phải là ngày hợp lệ.', + 'date_format' => ':attribute không khớp với định dạng :format.', + 'different' => ':attribute và :other phải khác nhau.', + 'digits' => ':attribute phải có :digits chữ số.', + 'digits_between' => ':attribute phải có từ :min đến :max chữ số.', + 'email' => ':attribute phải là địa chỉ email hợp lệ.', + 'ends_with' => ':attribute phải kết thúc bằng một trong các ký tự: :values', + 'filled' => 'Trường :attribute là bắt buộc.', + 'gt' => [ + 'numeric' => ':attribute phải lớn hơn :value.', + 'file' => ':attribute phải lớn hơn :value KB.', + 'string' => ':attribute phải có nhiều hơn :value ký tự.', + 'array' => ':attribute phải có nhiều hơn :value mục.', + ], + 'gte' => [ + 'numeric' => ':attribute phải lớn hơn hoặc bằng :value.', + 'file' => ':attribute phải lớn hơn hoặc bằng :value KB.', + 'string' => ':attribute phải có nhiều hơn hoặc bằng :value ký tự.', + 'array' => ':attribute phải có :value mục trở lên.', + ], + 'exists' => ':attribute đã chọn không hợp lệ.', + 'image' => ':attribute phải là ảnh.', + 'image_extension' => ':attribute phải có định dạng ảnh hợp lệ và được hỗ trợ.', + 'in' => ':attribute đã chọn không hợp lệ.', + 'integer' => ':attribute phải là một số nguyên.', + 'ip' => ':attribute phải là một địa chỉ IP hợp lệ.', + 'ipv4' => ':attribute phải là địa chỉ IPv4 hợp lệ.', + 'ipv6' => ':attribute phải là địa chỉ IPv6 hợp lệ.', + 'json' => ':attribute phải là một chuỗi JSON hợp lệ.', + 'lt' => [ + 'numeric' => ':attribute phải nhỏ hơn :value.', + 'file' => ':attribute phải nhỏ hơn :value KB.', + 'string' => ':attribute phải có it hơn :value ký tự.', + 'array' => ':attribute phải có ít hơn :value mục.', + ], + 'lte' => [ + 'numeric' => ':attribute phải nhỏ hơn hoặc bằng :value.', + 'file' => ':attribute phải nhỏ hơn hoặc bằng :value KB.', + 'string' => ':attribute phải có ít hơn hoặc bằng :value ký tự.', + 'array' => ':attribute không được có nhiều hơn :value mục.', + ], + 'max' => [ + 'numeric' => ':attribute không được lớn hơn :max.', + 'file' => ':attribute không được lớn hơn :max KB.', + 'string' => ':attribute không được nhiều hơn :max ký tự.', + 'array' => ':attribute không thể có nhiều hơn :max mục.', + ], + 'mimes' => ':attribute phải là tệp tin có kiểu: :values.', + 'min' => [ + 'numeric' => ':attribute phải tối thiểu là :min.', + 'file' => ':attribute phải tối thiểu là :min KB.', + 'string' => ':attribute phải có tối thiểu :min ký tự.', + 'array' => ':attribute phải có tối thiểu :min mục.', + ], + 'no_double_extension' => ':attribute chỉ được có một định dạng mở rộng duy nhất.', + 'not_in' => ':attribute đã chọn không hợp lệ.', + 'not_regex' => 'Định dạng của :attribute không hợp lệ.', + 'numeric' => ':attribute phải là một số.', + 'regex' => 'Định dạng của :attribute không hợp lệ.', + 'required' => 'Trường :attribute là bắt buộc.', + 'required_if' => 'Trường :attribute là bắt buộc khi :other là :value.', + 'required_with' => 'Trường :attribute là bắt buộc khi :values tồn tại.', + 'required_with_all' => 'Trường :attribute là bắt buộc khi :values tồn tại.', + 'required_without' => 'Trường :attribute là bắt buộc khi :values không tồn tại.', + 'required_without_all' => 'Trường :attribute là bắt buộc khi không có bất cứ :values nào tồn tại.', + 'same' => ':attribute và :other phải trùng khớp với nhau.', + 'size' => [ + 'numeric' => ':attribute phải có cỡ :size.', + 'file' => ':attribute phải có cỡ :size KB.', + 'string' => ':attribute phải có :size ký tự.', + 'array' => ':attribute phải chứa :size mục.', + ], + 'string' => ':attribute phải là một chuỗi.', + 'timezone' => ':attribute phải là một khu vực hợp lệ.', + 'unique' => ':attribute đã có người sử dụng.', + 'url' => 'Định dạng của :attribute không hợp lệ.', + 'uploaded' => 'Tệp tin đã không được tải lên. Máy chủ không chấp nhận các tệp tin với dung lượng lớn như tệp tin trên.', + + // Custom validation lines + 'custom' => [ + 'password-confirm' => [ + 'required_with' => 'Bắt buộc xác nhận mật khẩu', + ], + ], + + // Custom validation attributes + 'attributes' => [], +]; diff --git a/resources/lang/zh_CN/errors.php b/resources/lang/zh_CN/errors.php index 465592b6f..21034f399 100644 --- a/resources/lang/zh_CN/errors.php +++ b/resources/lang/zh_CN/errors.php @@ -83,6 +83,7 @@ return [ // Error pages '404_page_not_found' => '无法找到页面', 'sorry_page_not_found' => '对不起,无法找到您想访问的页面。', + 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.', 'return_home' => '返回主页', 'error_occurred' => '出现错误', 'app_down' => ':appName现在正在关闭', @@ -96,4 +97,7 @@ return [ 'api_user_no_api_permission' => '使用过的 API 令牌的所有者没有进行API 调用的权限', 'api_user_token_expired' => '所使用的身份令牌已过期', + // Settings & Maintenance + 'maintenance_test_email_failure' => '发送测试电子邮件时出现错误:', + ]; diff --git a/resources/lang/zh_CN/settings.php b/resources/lang/zh_CN/settings.php index 0b936c8c0..bc01ff7ab 100755 --- a/resources/lang/zh_CN/settings.php +++ b/resources/lang/zh_CN/settings.php @@ -56,7 +56,7 @@ return [ 'reg_enable_toggle' => '启用注册', 'reg_enable_desc' => '启用注册后,用户将可以自己注册为站点用户。 注册后,他们将获得一个默认的单一用户角色。', 'reg_default_role' => '注册后的默认用户角色', - 'reg_enable_external_warning' => 'The option above is ignored while external LDAP or SAML authentication is active. User accounts for non-existing members will be auto-created if authentication, against the external system in use, is successful.', + 'reg_enable_external_warning' => '当启用外部LDAP或者SAML认证时,上面的选项会被忽略。当使用外部系统认证认证成功时,将自动创建非现有会员的用户账户。', 'reg_email_confirmation' => '邮箱确认n', 'reg_email_confirmation_toggle' => '需要电子邮件确认', 'reg_confirm_email_desc' => '如果使用域名限制,则需要Email验证,并且该值将被忽略。', @@ -185,27 +185,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => '丹麦', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/lang/zh_TW/errors.php b/resources/lang/zh_TW/errors.php index e71575e59..f44f7eb8b 100644 --- a/resources/lang/zh_TW/errors.php +++ b/resources/lang/zh_TW/errors.php @@ -83,6 +83,7 @@ return [ // Error pages '404_page_not_found' => '無法找到頁面', 'sorry_page_not_found' => '對不起,無法找到您想進入的頁面。', + 'sorry_page_not_found_permission_warning' => 'If you expected this page to exist, you might not have permission to view it.', 'return_home' => '返回首頁', 'error_occurred' => '發生錯誤', 'app_down' => ':appName現在正在關閉', @@ -96,4 +97,7 @@ return [ 'api_user_no_api_permission' => '使用的API令牌的擁有者者無權進行API調用', 'api_user_token_expired' => '授權令牌已過期', + // Settings & Maintenance + 'maintenance_test_email_failure' => 'Error thrown when sending a test email:', + ]; diff --git a/resources/lang/zh_TW/settings.php b/resources/lang/zh_TW/settings.php index 061e7ad58..02c11e5de 100644 --- a/resources/lang/zh_TW/settings.php +++ b/resources/lang/zh_TW/settings.php @@ -185,27 +185,29 @@ return [ 'language_select' => [ 'en' => 'English', 'ar' => 'العربية', + 'cs' => 'Česky', 'da' => '丹麥', 'de' => 'Deutsch (Sie)', 'de_informal' => 'Deutsch (Du)', 'es' => 'Español', 'es_AR' => 'Español Argentina', 'fr' => 'Français', - 'nl' => 'Nederlands', - 'pt_BR' => 'Português do Brasil', - 'sk' => 'Slovensky', - 'cs' => 'Česky', - 'sv' => 'Svenska', - 'ko' => '한국어', - 'ja' => '日本語', - 'pl' => 'Polski', + 'hu' => 'Magyar', 'it' => 'Italian', + 'ja' => '日本語', + 'ko' => '한국어', + 'nl' => 'Nederlands', + 'pl' => 'Polski', + 'pt_BR' => 'Português do Brasil', 'ru' => 'Русский', + 'sk' => 'Slovensky', + 'sl' => 'Slovenščina', + 'sv' => 'Svenska', + 'tr' => 'Türkçe', 'uk' => 'Українська', + 'vi' => 'Tiếng Việt', 'zh_CN' => '简体中文', 'zh_TW' => '繁體中文', - 'hu' => 'Magyar', - 'tr' => 'Türkçe', ] //!//////////////////////////////// ]; diff --git a/resources/sass/_blocks.scss b/resources/sass/_blocks.scss index ff344158f..d02d25db4 100644 --- a/resources/sass/_blocks.scss +++ b/resources/sass/_blocks.scss @@ -3,7 +3,7 @@ * Callouts */ .callout { - border-left: 3px solid #BBB; + border-inline-start: 3px solid #BBB; background-color: #EEE; padding: $-s $-s $-s $-xl; display: block; @@ -109,7 +109,7 @@ background-color: #EEE; } .svg-icon { - margin-right: 0px; + margin-inline-end: 0px; } } > div .outline input { @@ -177,8 +177,8 @@ .content-wrap.card { padding: $-m $-xxl; - margin-left: auto; - margin-right: auto; + margin-inline-start: auto; + margin-inline-end: auto; margin-bottom: $-xl; overflow: initial; min-height: 60vh; @@ -211,7 +211,7 @@ .tag-item { display: inline-flex; margin-bottom: $-xs; - margin-right: $-xs; + margin-inline-end: $-xs; border-radius: 4px; border: 1px solid #CCC; overflow: hidden; @@ -229,7 +229,7 @@ fill: #888; } .tag-value { - border-left: 1px solid #DDD; + border-inline-start: 1px solid #DDD; background-color: rgba(255, 255, 255, 0.5); } } diff --git a/resources/sass/_buttons.scss b/resources/sass/_buttons.scss index e3d9e17ca..7df1d61a4 100644 --- a/resources/sass/_buttons.scss +++ b/resources/sass/_buttons.scss @@ -66,7 +66,7 @@ button { } .button + .button { - margin-left: $-s; + margin-inline-start: $-s; } .button.small { @@ -99,26 +99,28 @@ button { .button.block { width: 100%; - text-align: left; + text-align: start; display: block; } .button.icon { .svg-icon { - margin-right: 0; + margin-inline-end: 0; } } .button.svg { + display: flex; + align-items: center; + padding: $-s $-m; + padding-bottom: ($-s - 2px); svg { display: inline-block; - position: absolute; - left: $-m; - top: $-s - 2px; width: 24px; height: 24px; + bottom: auto; + margin-inline-end: $-m; } - padding: $-s $-m ($-s - 2px) ($-m*2 + 24px); } .button[disabled] { diff --git a/resources/sass/_components.scss b/resources/sass/_components.scss index 6ef53b719..f4ed45c2c 100644 --- a/resources/sass/_components.scss +++ b/resources/sass/_components.scss @@ -7,7 +7,7 @@ padding: $-m $-l; background-color: #FFF; border-radius: 4px; - border-left: 6px solid currentColor; + border-inline-start: 6px solid currentColor; box-shadow: $bs-large; z-index: 999999; cursor: pointer; @@ -26,7 +26,7 @@ svg { width: 2.8rem; height: 2.8rem; - padding-right: $-s; + padding-inline-end: $-s; fill: currentColor; } .dismiss { @@ -63,7 +63,7 @@ transition: all ease-in-out 180ms; user-select: none; svg[data-icon="caret-right"] { - margin-right: 0; + margin-inline-end: 0; font-size: 1rem; transition: all ease-in-out 180ms; transform: rotate(0deg); @@ -73,7 +73,7 @@ transform: rotate(90deg); } svg[data-icon="caret-right"] + * { - margin-left: $-xs; + margin-inline-start: $-xs; } } @@ -243,7 +243,7 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group { width: 300px; overflow-y: auto; overflow-x: hidden; - border-left: 1px solid #DDD; + border-inline-start: 1px solid #DDD; .inner { padding: $-m; } @@ -477,7 +477,7 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group { display: block; top: 50%; left: 50%; - margin-left: -27px; + margin-inline-start: -27px; margin-top: -35px; } @@ -511,7 +511,7 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group { top: 50%; margin-top: -8px; width: 80px; - margin-left: -40px; + margin-inline-start: -40px; background: rgba(255, 255, 255, 0.9); transform: scale(1); border-radius: 8px; @@ -568,14 +568,14 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group { left: 44px; width: 0; height: 0; - border-left: 6px solid transparent; - border-right: 6px solid transparent; + border-inline-start: 6px solid transparent; + border-inline-end: 6px solid transparent; border-bottom: 6px solid $negative; } .tab-container .nav-tabs { - text-align: left; + text-align: start; border-bottom: 1px solid #DDD; margin-bottom: $-m; .tab-item { @@ -613,7 +613,7 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group { max-width: 480px; margin-bottom: $-s; a { - margin-right: $-xs; + margin-inline-end: $-xs; text-decoration: underline; } } @@ -659,7 +659,7 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group { } a { color: #666; } span { - padding-left: $-xxs; + padding-inline-start: $-xxs; } } .text-muted { @@ -692,7 +692,7 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group { height: 100%; display: flex; flex-direction: column; - border-left: 1px solid #DDD; + border-inline-start: 1px solid #DDD; } .template-item-actions button { cursor: pointer; diff --git a/resources/sass/_forms.scss b/resources/sass/_forms.scss index da0f7ef4c..f306a717b 100644 --- a/resources/sass/_forms.scss +++ b/resources/sass/_forms.scss @@ -107,15 +107,15 @@ } .markdown-display { - margin-left: -1px; + margin-inline-start: -1px; } .markdown-editor-display { background-color: #FFFFFF; body { background-color: #FFFFFF; - padding-left: 16px; - padding-right: 16px; + padding-inline-start: 16px; + pmargin-inline-end: 16px; } [drawio-diagram]:hover { outline: 2px solid var(--color-primary); @@ -155,12 +155,12 @@ label.radio, label.checkbox { font-weight: 400; user-select: none; input[type="radio"], input[type="checkbox"] { - margin-right: $-xs; + margin-inline-end: $-xs; } } label.inline.checkbox { - margin-right: $-m; + margin-inline-end: $-m; } label + p.small { @@ -288,12 +288,12 @@ input[type=color] { border: 1px solid #DDD; border-radius: 4px; .collapse-title { - margin-left: -$-m; - margin-right: -$-m; + margin-inline-start: -$-m; + margin-inline-end: -$-m; padding: $-s $-m; display: block; width: calc(100% + 32px); - text-align: left; + text-align: start; } .collapse-title, .collapse-title label { cursor: pointer; @@ -306,7 +306,7 @@ input[type=color] { .collapse-title label:before { display: inline-block; content: '▸'; - margin-right: $-m; + margin-inline-end: $-m; transition: all ease-in-out 400ms; transform: rotate(0); } @@ -373,10 +373,14 @@ div[editor-type="markdown"] .title-input.page-title input[type="text"] { position: absolute; left: 8px; top: 9px; + @include rtl { + right: 8px; + left: auto; + } } input { display: block; - padding-left: $-l + 4px; + padding-inline-start: $-l + 4px; width: 300px; max-width: 100%; } diff --git a/resources/sass/_header.scss b/resources/sass/_header.scss index 687ddd8d2..5503a0895 100644 --- a/resources/sass/_header.scss +++ b/resources/sass/_header.scss @@ -34,8 +34,8 @@ header { fill: #FFF; } .dropdown-container { - padding-left: $-m; - padding-right: 0; + padding-inline-start: $-m; + padding-inline-end: 0; } .avatar, .user-name { display: inline-block; @@ -53,7 +53,7 @@ header { vertical-align: top; } > span { - padding-left: $-xs; + padding-inline-start: $-xs; display: inline-block; padding-top: $-xxs; } @@ -62,7 +62,7 @@ header { font-size: 18px; } @include between($l, $xl) { - padding-left: $-xs; + padding-inline-start: $-xs; .name { display: none; } @@ -87,7 +87,7 @@ header .search-box { border-radius: 40px; color: #EEE; z-index: 2; - padding-left: 40px; + padding-inline-start: 40px; &:focus { outline: none; border: 1px solid rgba(255, 255, 255, 0.6); @@ -97,8 +97,12 @@ header .search-box { fill: #EEE; z-index: 1; left: 16px; + @include rtl { + left: auto; + right: 16px; + } svg { - margin-right: 0; + margin-block-end: 0; } } ::-webkit-input-placeholder { /* Chrome/Opera/Safari */ @@ -124,12 +128,12 @@ header .search-box { font-size: 1.8em; color: #fff; font-weight: 400; - padding: 14px $-l 14px 0; + @include padding(14px, $-l, 14px, 0); vertical-align: top; line-height: 1; } .logo-image { - margin: $-xs $-s $-xs 0; + @include margin($-xs, $-s, $-xs, 0); vertical-align: top; height: 43px; } @@ -151,8 +155,14 @@ header .search-box { margin: 0; bottom: -2px; } + @include rtl() { + left: $-m; + right: auto; + } } + + @include smaller-than($l) { header .header-links { display: none; @@ -169,13 +179,13 @@ header .search-box { } } header .links a, header .dropdown-container ul li a { - text-align: left; + text-align: start; display: block; padding: $-s $-m; color: $text-dark; fill: $text-dark; svg { - margin-right: $-s; + margin-inline-end: $-s; } &:hover { background-color: #EEE; @@ -186,7 +196,7 @@ header .search-box { } header .dropdown-container { display: block; - padding-left: 0; + padding-inline-start: 0; } header .links { display: block; @@ -215,7 +225,7 @@ header .search-box { border-bottom: 3px solid #BBB; cursor: pointer; &:first-child { - border-right: 1px solid #DDD; + border-inline-end: 1px solid #DDD; } &.active { border-bottom-color: currentColor; @@ -253,7 +263,7 @@ header .search-box { display: none; } > span:first-child { - margin-right: 0; + margin-block-end: 0; } } } @@ -269,7 +279,7 @@ header .search-box { } } .svg-icon { - margin-right: 0; + margin-block-end: 0; } } @@ -282,9 +292,17 @@ header .search-box { position: absolute; z-index: 80; right: -$-m; + @include rtl { + right: auto; + left: -$-m; + } .breadcrumb-listing-search .svg-icon { position: absolute; left: $-s; + @include rtl { + right: $-s; + left: auto; + } top: 11px; fill: #888; pointer-events: none; @@ -292,10 +310,10 @@ header .search-box { .breadcrumb-listing-entity-list { max-height: 400px; overflow-y: scroll; - text-align: left; + text-align: start; } input { - padding-left: $-xl; + padding-inline-start: $-xl; border-radius: 0; border: 0; border-bottom: 1px solid #DDD; @@ -337,25 +355,25 @@ header .search-box { display: inline-block; padding: $-xs $-s; &:last-child { - padding-right: 0; + padding-inline-end: 0; } &:first-child { - padding-left: 0; + padding-inline-start: 0; } } .action-buttons .dropdown-container:last-child a { - padding-right: 0; - padding-left: $-s; + padding-inline-end: 0; + padding-inline-start: $-s; } .action-buttons { - text-align: right; + text-align: end; &.text-left { - text-align: left; + text-align: start; .text-button { - padding-right: $-m; - padding-left: 0; + padding-inline-end: $-m; + padding-inline-start: 0; } } &.text-center { @@ -368,6 +386,6 @@ header .search-box { padding: $-xs $-xs; } .action-buttons .dropdown-container:last-child a { - padding-left: $-xs; + padding-inline-start: $-xs; } } \ No newline at end of file diff --git a/resources/sass/_layout.scss b/resources/sass/_layout.scss index a280e4ed1..197d5271b 100644 --- a/resources/sass/_layout.scss +++ b/resources/sass/_layout.scss @@ -4,10 +4,10 @@ */ .container { max-width: $xxl; - margin-left: auto; - margin-right: auto; - padding-left: $-m; - padding-right: $-m; + margin-inline-start: auto; + margin-inline-end: auto; + padding-inline-start: $-m; + padding-inline-end: $-m; &.small { max-width: 840px; } @@ -198,8 +198,8 @@ body.flexbox { */ .tri-layout-container { display: grid; - margin-left: $-xl; - margin-right: $-xl; + margin-inline-start: $-xl; + margin-inline-end: $-xl; grid-template-columns: 1fr 4fr 1fr; grid-template-areas: "a b c"; grid-column-gap: $-xxl; @@ -223,7 +223,7 @@ body.flexbox { ". b b"; grid-template-columns: 1fr 3fr; grid-template-rows: min-content min-content 1fr; - padding-right: $-l; + padding-inline-end: $-l; } } @include between($l, $xxl) { @@ -258,11 +258,11 @@ body.flexbox { grid-template-areas: none; grid-template-columns: 1fr; grid-column-gap: 0; - padding-right: $-xs; - padding-left: $-xs; + padding-inline-end: $-xs; + padding-inline-start: $-xs; .tri-layout-left-contents, .tri-layout-right-contents { - padding-left: $-m; - padding-right: $-m; + padding-inline-start: $-m; + padding-inline-end: $-m; } .tri-layout-left > *, .tri-layout-right > * { display: none; @@ -316,7 +316,7 @@ body.flexbox { @include smaller-than($m) { .tri-layout-container { - margin-left: 0; - margin-right: 0; + margin-inline-start: 0; + margin-inline-end: 0; } } \ No newline at end of file diff --git a/resources/sass/_lists.scss b/resources/sass/_lists.scss index 2e8fa257a..7beb63d4e 100644 --- a/resources/sass/_lists.scss +++ b/resources/sass/_lists.scss @@ -6,7 +6,7 @@ justify-self: stretch; align-self: stretch; height: auto; - margin-right: $-l; + margin-inline-end: $-l; } .icon:after { opacity: 0.5; @@ -60,7 +60,7 @@ border-radius: 0 4px 4px 0; padding: $-xs $-m; width: 100%; - text-align: left; + text-align: start; } .chapter-expansion-toggle:hover { background-color: rgba(0, 0, 0, 0.06); @@ -88,13 +88,17 @@ .sidebar-page-nav { $nav-indent: $-m; list-style: none; - margin: $-s 0 $-m $-xs; + @include margin($-s, 0, $-m, $-xs); position: relative; &:after { content: ''; display: block; position: absolute; left: 0; + @include rtl { + left: auto; + right: 0; + } background-color: rgba(0, 0, 0, 0.2); width: 2px; top: 5px; @@ -107,22 +111,22 @@ position: relative; } .h1 { - padding-left: $nav-indent; + padding-inline-start: $nav-indent; } .h2 { - padding-left: $nav-indent * 1.5; + padding-inline-start: $nav-indent * 1.5; } .h3 { - padding-left: $nav-indent * 2; + padding-inline-start: $nav-indent * 2; } .h4 { - padding-left: $nav-indent * 2.5; + padding-inline-start: $nav-indent * 2.5; } .h5 { - padding-left: $nav-indent*3; + padding-inline-start: $nav-indent*3; } .h6 { - padding-left: $nav-indent*3.5; + padding-inline-start: $nav-indent*3.5; } .current-heading { font-weight: bold; @@ -139,15 +143,19 @@ border-radius: 50%; box-shadow: 0 0 0 6px #F2F2F2; z-index: 1; + @include rtl { + left: auto; + right: -2px; + } } } // Sidebar list .book-tree .sidebar-page-list { list-style: none; - margin: $-xs -$-s 0 -$-s; - padding-left: 0; - padding-right: 0; + @include margin($-xs, -$-s, 0, -$-s); + padding-inline-start: 0; + padding-inline-end: 0; position: relative; &:after, .sub-menu:after { @@ -157,14 +165,18 @@ left: $-m; top: 1rem; bottom: 1rem; - border-left: 4px solid rgba(0, 0, 0, 0.1); + border-inline-start: 4px solid rgba(0, 0, 0, 0.1); z-index: 0; + @include rtl { + left: auto; + right: $-m; + } } ul { list-style: none; - padding-left: 1rem; - padding-right: 0; + padding-inline-start: 1rem; + padding-inline-end: 0; } .entity-list-item { @@ -183,7 +195,7 @@ } .entity-list-item.no-hover { margin-top: -$-xs; - padding-right: 0; + padding-inline-end: 0; } .entity-list-item-name { font-size: 1em; @@ -192,10 +204,10 @@ .chapter-child-menu { font-size: .8rem; margin-top: -.2rem; - margin-left: -1rem; + margin-inline-start: -1rem; } [chapter-toggle] { - padding-left: .7rem; + padding-inline-start: .7rem; padding-bottom: .2rem; } .entity-list-item .icon { @@ -218,7 +230,7 @@ .chapter-child-menu { ul.sub-menu { display: none; - padding-left: 0; + padding-inline-start: 0; position: relative; } [chapter-toggle].open + .sub-menu { @@ -254,10 +266,10 @@ justify-content: space-between; } .sort-box-options .button { - margin-left: 0; + margin-inline-start: 0; } .sortable-page-list { - margin-left: 0; + margin-inline-start: 0; padding: 0; .entity-list-item > span:first-child { align-self: flex-start; @@ -267,12 +279,12 @@ flex: 1; } > ul { - margin-left: 0; + margin-inline-start: 0; } ul { margin-bottom: $-m; margin-top: 0; - padding-left: $-m; + padding-inline-start: $-m; } li { border: 1px solid #DDD; @@ -280,7 +292,7 @@ min-height: 38px; } li.text-page, li.text-chapter { - border-left: 2px solid currentColor; + border-inline-start: 2px solid currentColor; } li:first-child { margin-top: $-xs; @@ -320,7 +332,7 @@ ul.pagination { display: inline-block; list-style: none; margin: $-m 0; - padding-left: 1px; + padding-inline-start: 1px; li { float: left; } @@ -338,7 +350,7 @@ ul.pagination { display: block; padding: $-xxs $-s; border: 1px solid #CCC; - margin-left: -1px; + margin-inline-start: -1px; user-select: none; &.disabled { cursor: not-allowed; @@ -402,13 +414,13 @@ ul.pagination { color: #666; } > span:first-child { - margin-right: $-m; + margin-inline-end: $-m; flex-basis: 1.88em; flex: none; } > span:last-child { flex: 1; - text-align: left; + text-align: start; } &:not(.no-hover) { cursor: pointer; @@ -438,7 +450,7 @@ ul.pagination { position: relative; top: 1px; svg { - margin-right: 0; + margin-inline-end: 0; } } @@ -460,7 +472,7 @@ ul.pagination { text-overflow: ellipsis; height: 2.5em; overflow: hidden; - text-align: left; + text-align: start; display: block; white-space: nowrap; } @@ -474,7 +486,7 @@ ul.pagination { background-position: 50% 50%; border-radius: 3px; position: relative; - margin-right: $-l; + margin-inline-end: $-l; &.entity-list-item-image-wide { width: 220px; @@ -484,7 +496,7 @@ ul.pagination { color: #FFF; fill: #FFF; font-size: 1.66rem; - margin-right: 0; + margin-inline-end: 0; position: absolute; bottom: $-xs; left: $-xs; @@ -550,7 +562,7 @@ ul.pagination { padding: $-xs 0; color: #555; fill: #555; - text-align: left !important; + text-align: start !important; &.wide { min-width: 220px; } @@ -577,14 +589,14 @@ ul.pagination { outline-offset: -2px; } svg { - margin-right: $-s; + margin-inline-end: $-s; display: inline-block; width: 16px; } } button { width: 100%; - text-align: left; + text-align: start; } li.border-bottom { border-bottom: 1px solid #DDD; @@ -615,7 +627,7 @@ ul.pagination { color: #FFF; fill: #FFF; font-size: 2rem; - margin-right: 0; + margin-inline-end: 0; position: absolute; bottom: 10px; left: 6px; diff --git a/resources/sass/_mixins.scss b/resources/sass/_mixins.scss index 1c45ebd30..8a6becf6b 100644 --- a/resources/sass/_mixins.scss +++ b/resources/sass/_mixins.scss @@ -8,3 +8,27 @@ @mixin between($min, $max) { @media screen and (min-width: $min) and (max-width: $max) { @content; } } + +// Padding shorthand using logical operators to better support RTL. +@mixin padding($t, $r, $b, $l) { + padding-block-start: $t; + padding-block-end: $b; + padding-inline-start: $l; + padding-inline-end: $r; +} + +// Margin shorthand using logical operators to better support RTL. +@mixin margin($t, $r, $b, $l) { + margin-block-start: $t; + margin-block-end: $b; + margin-inline-start: $l; + margin-inline-end: $r; +} + +// Create a RTL specific style block. +// Mostly used as a patch until browser support improves for logical properties. +@mixin rtl() { + html[dir=rtl] & { + @content; + } +} \ No newline at end of file diff --git a/resources/sass/_pages.scss b/resources/sass/_pages.scss index 9281a2194..701905165 100755 --- a/resources/sass/_pages.scss +++ b/resources/sass/_pages.scss @@ -59,7 +59,7 @@ body.mce-fullscreen, body.markdown-fullscreen { text-align: center; svg { fill: #FFF; - margin-right: 0; + margin-inline-end: 0; } } @@ -174,14 +174,14 @@ body.mce-fullscreen, body.markdown-fullscreen { bottom: -9px; width: 16px; height: 16px; - margin-left: -8px; + margin-inline-start: -8px; content: ''; display: block; background-color:#FFF; transform: rotate(45deg); transform-origin: 50% 50%; - border-bottom: 1px solid #CCC; - border-right: 1px solid #CCC; + border-inline-startom: 1px solid #CCC; + border-inline-end: 1px solid #CCC; z-index: 56; } input, button, a { @@ -255,7 +255,7 @@ body.mce-fullscreen, body.markdown-fullscreen { } .tabs { display: block; - border-right: 1px solid #DDD; + border-inline-end: 1px solid #DDD; width: 48px; flex: 0 1 auto; } @@ -294,8 +294,8 @@ body.mce-fullscreen, body.markdown-fullscreen { width: 100%; min-width: 50px; } - .tags td, .tag-table > div > div > div { - padding-right: $-s; + .tags td, .inline-start-table > div > div > div { + padding-inline-end: $-s; padding-top: $-s; position: relative; } @@ -319,42 +319,6 @@ body.mce-fullscreen, body.markdown-fullscreen { display: none; } -.tag-display { - position: relative; - table { - width: 100%; - margin: 0; - padding: 0; - } - tr:first-child td { - padding-top: 0; - } - .heading th { - padding: $-xs $-s; - color: rgba(100, 100, 100, 0.7); - border: 0; - font-weight: 400; - } - td { - border: 0; - border-bottom: 1px solid #EEE; - padding: $-xs $-s; - color: #444; - } - tr td:first-child { - padding-left:0; - } - .tag-value { - color: #888; - } - tr:last-child td { - border-bottom: none; - } - .tag { - padding: $-s; - } -} - .suggestion-box { position: absolute; background-color: #FFF; diff --git a/resources/sass/_spacing.scss b/resources/sass/_spacing.scss index 69ed5a2d3..57b229ab8 100644 --- a/resources/sass/_spacing.scss +++ b/resources/sass/_spacing.scss @@ -7,8 +7,8 @@ #{$prop}: $size !important; } .#{$propLetter}x-#{$sizeLetter} { - #{$prop}-left: $size !important; - #{$prop}-right: $size !important; + #{$prop}-inline-start: $size !important; + #{$prop}-inline-end: $size !important; } .#{$propLetter}y-#{$sizeLetter} { #{$prop}-top: $size !important; @@ -18,13 +18,13 @@ #{$prop}-top: $size !important; } .#{$propLetter}r-#{$sizeLetter} { - #{$prop}-right: $size !important; + #{$prop}-inline-end: $size !important; } .#{$propLetter}b-#{$sizeLetter} { #{$prop}-bottom: $size !important; } .#{$propLetter}l-#{$sizeLetter} { - #{$prop}-left: $size !important; + #{$prop}-inline-start: $size !important; } } } diff --git a/resources/sass/_tables.scss b/resources/sass/_tables.scss index a1a2fef0a..277873608 100644 --- a/resources/sass/_tables.scss +++ b/resources/sass/_tables.scss @@ -23,7 +23,7 @@ table.table { border-bottom: 1px solid rgba(0, 0, 0, 0.05); } th, td { - text-align: left; + text-align: start; border: none; padding: $-s $-s; vertical-align: middle; @@ -36,7 +36,7 @@ table.table { background-color: #EEE; } .text-right { - text-align: right; + text-align: end; } .text-center { text-align: center; diff --git a/resources/sass/_text.scss b/resources/sass/_text.scss index d28706781..8d2759b91 100644 --- a/resources/sass/_text.scss +++ b/resources/sass/_text.scss @@ -262,7 +262,6 @@ span.highlight { * Lists */ ul, ol { - overflow: hidden; p { margin: 0; } @@ -295,6 +294,13 @@ li.checkbox-item, li.task-list-item { } } +li > ol, li > ul { + margin-block-end: 0px; + margin-block-start: 0px; + padding-block-end: 0px; + padding-block-start: 0px; +} + /* * Generic text styling classes */ @@ -306,10 +312,10 @@ li.checkbox-item, li.task-list-item { text-align: center; } .text-left { - text-align: left; + text-align: start; } .text-right { - text-align: right; + text-align: end; } @each $sizeLetter, $size in $screen-sizes { @@ -318,10 +324,10 @@ li.checkbox-item, li.task-list-item { text-align: center; } .text-#{$sizeLetter}-left { - text-align: left; + text-align: start; } .text-#{$sizeLetter}-right { - text-align: right; + text-align: end; } } } @@ -377,6 +383,6 @@ span.sep { display: inline-block; position: relative; bottom: -0.105em; - margin-right: $-xs; + margin-inline-end: $-xs; pointer-events: none; } diff --git a/resources/sass/print-styles.scss b/resources/sass/print-styles.scss index 296afbe76..5cbd7f9d5 100644 --- a/resources/sass/print-styles.scss +++ b/resources/sass/print-styles.scss @@ -20,8 +20,8 @@ html, body { .tri-layout-container { grid-template-columns: 1fr; grid-template-areas: "b"; - margin-left: 0; - margin-right: 0; + margin-inline-start: 0; + margin-inline-end: 0; display: block; } @@ -30,6 +30,6 @@ html, body { } .content-wrap.card { - padding-left: 0; - padding-right: 0; + padding-inline-start: 0; + padding-inline-end: 0; } \ No newline at end of file diff --git a/resources/sass/styles.scss b/resources/sass/styles.scss index 1f4d00f6b..09d8b4100 100644 --- a/resources/sass/styles.scss +++ b/resources/sass/styles.scss @@ -74,7 +74,7 @@ $loadingSize: 10px; animation-duration: 1.4s; animation-iteration-count: infinite; animation-timing-function: cubic-bezier(.62, .28, .23, .99); - margin-right: 4px; + margin-inline-end: 4px; background-color: var(--color-page); animation-delay: 0.3s; } @@ -89,7 +89,7 @@ $loadingSize: 10px; animation-delay: 0.6s; } > span { - margin-left: $-s; + margin-inline-start: $-s; font-style: italic; color: #888; vertical-align: top; @@ -110,7 +110,7 @@ $btt-size: 40px; svg { width: $btt-size / 1.5; height: $btt-size / 1.5; - margin-right: 4px; + margin-inline-end: 4px; } width: $btt-size; height: $btt-size; @@ -138,7 +138,7 @@ $btt-size: 40px; input, button { border-radius: 0; border: 1px solid #DDD; - margin-left: -1px; + margin-inline-start: -1px; } input { flex: 5; @@ -177,8 +177,8 @@ $btt-size: 40px; overflow-y: scroll; height: 400px; background-color: #EEEEEE; - margin-right: 0; - margin-left: 0; + margin-inline-end: 0; + margin-inline-start: 0; } .entity-list-item { background-color: #FFF; @@ -252,7 +252,7 @@ $btt-size: 40px; } .list-sort { display: inline-grid; - margin-left: $-s; + margin-inline-start: $-s; grid-template-columns: minmax(120px, max-content) 40px; font-size: 0.9rem; border: 2px solid #DDD; @@ -264,14 +264,14 @@ $btt-size: 40px; color: #555; } .list-sort-type { - text-align: left; + text-align: start; } .list-sort-type, .list-sort-dir { padding: $-xs $-s; cursor: pointer; } .list-sort-dir { - border-left: 2px solid #DDD; + border-inline-start: 2px solid #DDD; fill: #888; .svg-icon { transition: transform ease-in-out 120ms; diff --git a/resources/views/api-docs/index.blade.php b/resources/views/api-docs/index.blade.php index ab4db89e8..e92b505cf 100644 --- a/resources/views/api-docs/index.blade.php +++ b/resources/views/api-docs/index.blade.php @@ -26,7 +26,7 @@ {{ $endpoint['method'] }} - {{ $endpoint['controller_method'] }} + {{ $endpoint['controller_method_kebab'] }} @endforeach @@ -186,7 +186,7 @@

{{ $model }}

@foreach($endpoints as $endpoint) -
{{ $endpoint['controller_method'] }}
+
{{ $endpoint['controller_method_kebab'] }}
{{ $endpoint['method'] }} {{ url($endpoint['uri']) }} diff --git a/resources/views/auth/forms/login/saml2.blade.php b/resources/views/auth/forms/login/saml2.blade.php index aa1913e31..7d6595894 100644 --- a/resources/views/auth/forms/login/saml2.blade.php +++ b/resources/views/auth/forms/login/saml2.blade.php @@ -4,7 +4,7 @@
diff --git a/resources/views/auth/login.blade.php b/resources/views/auth/login.blade.php index 0a21a0f62..868e0555f 100644 --- a/resources/views/auth/login.blade.php +++ b/resources/views/auth/login.blade.php @@ -17,7 +17,7 @@
@icon('auth/' . $driver) - {{ trans('auth.log_in_with', ['socialDriver' => $name]) }} + {{ trans('auth.log_in_with', ['socialDriver' => $name]) }}
@endforeach diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php index 1625ebc4c..34aa81d7b 100644 --- a/resources/views/auth/register.blade.php +++ b/resources/views/auth/register.blade.php @@ -44,7 +44,7 @@
@icon('auth/' . $driver) - {{ trans('auth.sign_up_with', ['socialDriver' => $name]) }} + {{ trans('auth.sign_up_with', ['socialDriver' => $name]) }}
@endforeach diff --git a/resources/views/base.blade.php b/resources/views/base.blade.php index 075481620..d362ef373 100644 --- a/resources/views/base.blade.php +++ b/resources/views/base.blade.php @@ -1,5 +1,5 @@ - + {{ isset($pageTitle) ? $pageTitle . ' | ' : '' }}{{ setting('app-name') }} diff --git a/resources/views/books/index.blade.php b/resources/views/books/index.blade.php index b9bd987a9..f3c3ee34b 100644 --- a/resources/views/books/index.blade.php +++ b/resources/views/books/index.blade.php @@ -43,7 +43,7 @@ @endif - @include('partials.view-toggle', ['view' => $view, 'type' => 'book']) + @include('partials.view-toggle', ['view' => $view, 'type' => 'books']) diff --git a/resources/views/books/show.blade.php b/resources/views/books/show.blade.php index cbafdb436..e3a536fc9 100644 --- a/resources/views/books/show.blade.php +++ b/resources/views/books/show.blade.php @@ -57,9 +57,7 @@ @stop - @section('right') -
{{ trans('common.details') }}
-
{{ trans('common.actions') }}
@@ -137,6 +134,13 @@
@endif + @if(count($bookParentShelves) > 0) +
+
{{ trans('entities.shelves_long') }}
+ @include('partials.entity-list', ['entities' => $bookParentShelves, 'style' => 'compact']) +
+ @endif + @if(count($activity) > 0)
{{ trans('entities.recent_activity') }}
diff --git a/resources/views/common/header.blade.php b/resources/views/common/header.blade.php index 7c837ec29..ec90739ee 100644 --- a/resources/views/common/header.blade.php +++ b/resources/views/common/header.blade.php @@ -25,7 +25,7 @@
-
- \ No newline at end of file + diff --git a/resources/views/common/home-book.blade.php b/resources/views/common/home-book.blade.php index 7644eeb88..8caae814a 100644 --- a/resources/views/common/home-book.blade.php +++ b/resources/views/common/home-book.blade.php @@ -12,7 +12,7 @@
{{ trans('common.actions') }}
- @include('partials.view-toggle', ['view' => $view, 'type' => 'book']) + @include('partials.view-toggle', ['view' => $view, 'type' => 'books']) @include('components.expand-toggle', ['target' => '.entity-list.compact .entity-item-snippet', 'key' => 'home-details'])
diff --git a/resources/views/common/home-shelves.blade.php b/resources/views/common/home-shelves.blade.php index a9c585893..bac6fa154 100644 --- a/resources/views/common/home-shelves.blade.php +++ b/resources/views/common/home-shelves.blade.php @@ -12,7 +12,7 @@
{{ trans('common.actions') }}
- @include('partials.view-toggle', ['view' => $view, 'type' => 'shelf']) + @include('partials.view-toggle', ['view' => $view, 'type' => 'shelves']) @include('components.expand-toggle', ['target' => '.entity-list.compact .entity-item-snippet', 'key' => 'home-details'])
diff --git a/resources/views/components/code-editor.blade.php b/resources/views/components/code-editor.blade.php index 70ffc350f..15f6ae252 100644 --- a/resources/views/components/code-editor.blade.php +++ b/resources/views/components/code-editor.blade.php @@ -1,6 +1,6 @@
-