diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php index 8b0ef309a..9a23fe2a1 100644 --- a/app/Http/Controllers/Auth/RegisterController.php +++ b/app/Http/Controllers/Auth/RegisterController.php @@ -8,6 +8,7 @@ use BookStack\Exceptions\UserRegistrationException; use BookStack\Repos\UserRepo; use BookStack\Services\EmailConfirmationService; use BookStack\Services\SocialAuthService; +use BookStack\SocialAccount; use BookStack\User; use Exception; use Illuminate\Http\Request; @@ -103,7 +104,7 @@ class RegisterController extends Controller * @param Request|\Illuminate\Http\Request $request * @return Response * @throws UserRegistrationException - * @throws \Illuminate\Foundation\Validation\ValidationException + * @throws \Illuminate\Validation\ValidationException */ public function postRegister(Request $request) { @@ -255,16 +256,13 @@ class RegisterController extends Controller */ public function socialCallback($socialDriver) { - if (session()->has('social-callback')) { - $action = session()->pull('social-callback'); - if ($action == 'login') { - return $this->socialAuthService->handleLoginCallback($socialDriver); - } elseif ($action == 'register') { - return $this->socialRegisterCallback($socialDriver); - } - } else { + if (!session()->has('social-callback')) { throw new SocialSignInException(trans('errors.social_no_action_defined'), '/login'); } + + $action = session()->pull('social-callback'); + if ($action == 'login') return $this->socialAuthService->handleLoginCallback($socialDriver); + if ($action == 'register') return $this->socialRegisterCallback($socialDriver); return redirect()->back(); } diff --git a/public/fonts/roboto-mono-v4-latin-regular.woff b/public/fonts/roboto-mono-v4-latin-regular.woff deleted file mode 100644 index 8cb9e6fd8..000000000 Binary files a/public/fonts/roboto-mono-v4-latin-regular.woff and /dev/null differ diff --git a/public/fonts/roboto-mono-v4-latin-regular.woff2 b/public/fonts/roboto-mono-v4-latin-regular.woff2 deleted file mode 100644 index 1f6598111..000000000 Binary files a/public/fonts/roboto-mono-v4-latin-regular.woff2 and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-100.woff b/public/fonts/roboto-v15-cyrillic_latin-100.woff deleted file mode 100644 index 4eb2be6a1..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-100.woff and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-100.woff2 b/public/fonts/roboto-v15-cyrillic_latin-100.woff2 deleted file mode 100644 index 007b90e85..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-100.woff2 and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-100italic.woff b/public/fonts/roboto-v15-cyrillic_latin-100italic.woff deleted file mode 100644 index fa7e51bc8..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-100italic.woff and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-100italic.woff2 b/public/fonts/roboto-v15-cyrillic_latin-100italic.woff2 deleted file mode 100644 index f27a169cb..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-100italic.woff2 and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-300.woff b/public/fonts/roboto-v15-cyrillic_latin-300.woff deleted file mode 100644 index ace052941..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-300.woff and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-300.woff2 b/public/fonts/roboto-v15-cyrillic_latin-300.woff2 deleted file mode 100644 index 0c093b91c..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-300.woff2 and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-300italic.woff b/public/fonts/roboto-v15-cyrillic_latin-300italic.woff deleted file mode 100644 index 7984971e7..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-300italic.woff and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-300italic.woff2 b/public/fonts/roboto-v15-cyrillic_latin-300italic.woff2 deleted file mode 100644 index 46ed6c7cc..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-300italic.woff2 and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-500.woff b/public/fonts/roboto-v15-cyrillic_latin-500.woff deleted file mode 100644 index 8ae98f2de..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-500.woff and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-500.woff2 b/public/fonts/roboto-v15-cyrillic_latin-500.woff2 deleted file mode 100644 index fba67842e..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-500.woff2 and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-500italic.woff b/public/fonts/roboto-v15-cyrillic_latin-500italic.woff deleted file mode 100644 index 560968d16..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-500italic.woff and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-500italic.woff2 b/public/fonts/roboto-v15-cyrillic_latin-500italic.woff2 deleted file mode 100644 index cc41bf873..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-500italic.woff2 and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-700.woff b/public/fonts/roboto-v15-cyrillic_latin-700.woff deleted file mode 100644 index 7d19e332d..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-700.woff and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-700.woff2 b/public/fonts/roboto-v15-cyrillic_latin-700.woff2 deleted file mode 100644 index e2274a4fb..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-700.woff2 and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-700italic.woff b/public/fonts/roboto-v15-cyrillic_latin-700italic.woff deleted file mode 100644 index 1604c8763..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-700italic.woff and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-700italic.woff2 b/public/fonts/roboto-v15-cyrillic_latin-700italic.woff2 deleted file mode 100644 index f950ca2aa..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-700italic.woff2 and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-italic.woff b/public/fonts/roboto-v15-cyrillic_latin-italic.woff deleted file mode 100644 index d76d13d6a..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-italic.woff and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-italic.woff2 b/public/fonts/roboto-v15-cyrillic_latin-italic.woff2 deleted file mode 100644 index a80f41528..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-italic.woff2 and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-regular.woff b/public/fonts/roboto-v15-cyrillic_latin-regular.woff deleted file mode 100644 index a2ada2f46..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-regular.woff and /dev/null differ diff --git a/public/fonts/roboto-v15-cyrillic_latin-regular.woff2 b/public/fonts/roboto-v15-cyrillic_latin-regular.woff2 deleted file mode 100644 index a3b35e686..000000000 Binary files a/public/fonts/roboto-v15-cyrillic_latin-regular.woff2 and /dev/null differ diff --git a/public/logo.png b/public/logo.png index 1803feebf..585f8895b 100644 Binary files a/public/logo.png and b/public/logo.png differ diff --git a/resources/assets/js/controllers.js b/resources/assets/js/controllers.js index 132580f68..8b37379fa 100644 --- a/resources/assets/js/controllers.js +++ b/resources/assets/js/controllers.js @@ -145,202 +145,6 @@ module.exports = function (ngApp, events) { }]); - ngApp.controller('PageAttachmentController', ['$scope', '$http', '$attrs', - function ($scope, $http, $attrs) { - - const pageId = $scope.uploadedTo = $attrs.pageId; - let currentOrder = ''; - $scope.files = []; - $scope.editFile = false; - $scope.file = getCleanFile(); - $scope.errors = { - link: {}, - edit: {} - }; - - function getCleanFile() { - return { - page_id: pageId - }; - } - - // Angular-UI-Sort options - $scope.sortOptions = { - handle: '.handle', - items: '> tr', - containment: "parent", - axis: "y", - stop: sortUpdate, - }; - - /** - * Event listener for sort changes. - * Updates the file ordering on the server. - * @param event - * @param ui - */ - function sortUpdate(event, ui) { - let newOrder = $scope.files.map(file => {return file.id}).join(':'); - if (newOrder === currentOrder) return; - - currentOrder = newOrder; - $http.put(window.baseUrl(`/attachments/sort/page/${pageId}`), {files: $scope.files}).then(resp => { - events.emit('success', resp.data.message); - }, checkError('sort')); - } - - /** - * Used by dropzone to get the endpoint to upload to. - * @returns {string} - */ - $scope.getUploadUrl = function (file) { - let suffix = (typeof file !== 'undefined') ? `/${file.id}` : ''; - return window.baseUrl(`/attachments/upload${suffix}`); - }; - - /** - * Get files for the current page from the server. - */ - function getFiles() { - let url = window.baseUrl(`/attachments/get/page/${pageId}`); - $http.get(url).then(resp => { - $scope.files = resp.data; - currentOrder = resp.data.map(file => {return file.id}).join(':'); - }, checkError('get')); - } - getFiles(); - - /** - * Runs on file upload, Adds an file to local file list - * and shows a success message to the user. - * @param file - * @param data - */ - $scope.uploadSuccess = function (file, data) { - $scope.$apply(() => { - $scope.files.push(data); - }); - events.emit('success', trans('entities.attachments_file_uploaded')); - }; - - /** - * Upload and overwrite an existing file. - * @param file - * @param data - */ - $scope.uploadSuccessUpdate = function (file, data) { - $scope.$apply(() => { - let search = filesIndexOf(data); - if (search !== -1) $scope.files[search] = data; - - if ($scope.editFile) { - $scope.editFile = angular.copy(data); - data.link = ''; - } - }); - events.emit('success', trans('entities.attachments_file_updated')); - }; - - /** - * Delete a file from the server and, on success, the local listing. - * @param file - */ - $scope.deleteFile = function(file) { - if (!file.deleting) { - file.deleting = true; - return; - } - $http.delete(window.baseUrl(`/attachments/${file.id}`)).then(resp => { - events.emit('success', resp.data.message); - $scope.files.splice($scope.files.indexOf(file), 1); - }, checkError('delete')); - }; - - /** - * Attach a link to a page. - * @param file - */ - $scope.attachLinkSubmit = function(file) { - file.uploaded_to = pageId; - $http.post(window.baseUrl('/attachments/link'), file).then(resp => { - $scope.files.push(resp.data); - events.emit('success', trans('entities.attachments_link_attached')); - $scope.file = getCleanFile(); - }, checkError('link')); - }; - - /** - * Start the edit mode for a file. - * @param file - */ - $scope.startEdit = function(file) { - $scope.editFile = angular.copy(file); - $scope.editFile.link = (file.external) ? file.path : ''; - }; - - /** - * Cancel edit mode - */ - $scope.cancelEdit = function() { - $scope.editFile = false; - }; - - /** - * Update the name and link of a file. - * @param file - */ - $scope.updateFile = function(file) { - $http.put(window.baseUrl(`/attachments/${file.id}`), file).then(resp => { - let search = filesIndexOf(resp.data); - if (search !== -1) $scope.files[search] = resp.data; - - if ($scope.editFile && !file.external) { - $scope.editFile.link = ''; - } - $scope.editFile = false; - events.emit('success', trans('entities.attachments_updated_success')); - }, checkError('edit')); - }; - - /** - * Get the url of a file. - */ - $scope.getFileUrl = function(file) { - return window.baseUrl('/attachments/' + file.id); - }; - - /** - * Search the local files via another file object. - * Used to search via object copies. - * @param file - * @returns int - */ - function filesIndexOf(file) { - for (let i = 0; i < $scope.files.length; i++) { - if ($scope.files[i].id == file.id) return i; - } - return -1; - } - - /** - * Check for an error response in a ajax request. - * @param errorGroupName - */ - function checkError(errorGroupName) { - $scope.errors[errorGroupName] = {}; - return function(response) { - if (typeof response.data !== 'undefined' && typeof response.data.error !== 'undefined') { - events.emit('error', response.data.error); - } - if (typeof response.data !== 'undefined' && typeof response.data.validation !== 'undefined') { - $scope.errors[errorGroupName] = response.data.validation; - console.log($scope.errors[errorGroupName]) - } - } - } - - }]); - // Controller used to reply to and add new comments ngApp.controller('CommentReplyController', ['$scope', '$http', '$timeout', function ($scope, $http, $timeout) { const MarkdownIt = require("markdown-it"); diff --git a/resources/assets/js/directives.js b/resources/assets/js/directives.js index 2a0547c97..fc92121ff 100644 --- a/resources/assets/js/directives.js +++ b/resources/assets/js/directives.js @@ -1,119 +1,10 @@ "use strict"; -const DropZone = require("dropzone"); const MarkdownIt = require("markdown-it"); const mdTasksLists = require('markdown-it-task-lists'); const code = require('./code'); module.exports = function (ngApp, events) { - /** - * Common tab controls using simple jQuery functions. - */ - ngApp.directive('tabContainer', function() { - return { - restrict: 'A', - link: function (scope, element, attrs) { - const $content = element.find('[tab-content]'); - const $buttons = element.find('[tab-button]'); - - if (attrs.tabContainer) { - let initial = attrs.tabContainer; - $buttons.filter(`[tab-button="${initial}"]`).addClass('selected'); - $content.hide().filter(`[tab-content="${initial}"]`).show(); - } else { - $content.hide().first().show(); - $buttons.first().addClass('selected'); - } - - $buttons.click(function() { - let clickedTab = $(this); - $buttons.removeClass('selected'); - $content.hide(); - let name = clickedTab.addClass('selected').attr('tab-button'); - $content.filter(`[tab-content="${name}"]`).show(); - }); - } - }; - }); - - /** - * Sub form component to allow inner-form sections to act like their own forms. - */ - ngApp.directive('subForm', function() { - return { - restrict: 'A', - link: function (scope, element, attrs) { - element.on('keypress', e => { - if (e.keyCode === 13) { - submitEvent(e); - } - }); - - element.find('button[type="submit"]').click(submitEvent); - - function submitEvent(e) { - e.preventDefault(); - if (attrs.subForm) scope.$eval(attrs.subForm); - } - } - }; - }); - - /** - * DropZone - * Used for uploading images - */ - ngApp.directive('dropZone', [function () { - return { - restrict: 'E', - template: ` -
-
{{message}}
-
- `, - scope: { - uploadUrl: '@', - eventSuccess: '=', - eventError: '=', - uploadedTo: '@', - }, - link: function (scope, element, attrs) { - scope.message = attrs.message; - if (attrs.placeholder) element[0].querySelector('.dz-message').textContent = attrs.placeholder; - let dropZone = new DropZone(element[0].querySelector('.dropzone-container'), { - url: scope.uploadUrl, - init: function () { - let dz = this; - dz.on('sending', function (file, xhr, data) { - let token = window.document.querySelector('meta[name=token]').getAttribute('content'); - data.append('_token', token); - let uploadedTo = typeof scope.uploadedTo === 'undefined' ? 0 : scope.uploadedTo; - data.append('uploaded_to', uploadedTo); - }); - if (typeof scope.eventSuccess !== 'undefined') dz.on('success', scope.eventSuccess); - dz.on('success', function (file, data) { - $(file.previewElement).fadeOut(400, function () { - dz.removeFile(file); - }); - }); - if (typeof scope.eventError !== 'undefined') dz.on('error', scope.eventError); - dz.on('error', function (file, errorMessage, xhr) { - console.log(errorMessage); - console.log(xhr); - function setMessage(message) { - $(file.previewElement).find('[data-dz-errormessage]').text(message); - } - - if (xhr.status === 413) setMessage(trans('errors.server_upload_limit')); - if (errorMessage.file) setMessage(errorMessage.file[0]); - - }); - } - }); - } - }; - }]); - /** * TinyMCE * An angular wrapper around the tinyMCE editor. diff --git a/resources/assets/js/global.js b/resources/assets/js/global.js index 28d1e3b0c..ee7cf3cc1 100644 --- a/resources/assets/js/global.js +++ b/resources/assets/js/global.js @@ -9,34 +9,6 @@ window.baseUrl = function(path) { return basePath + '/' + path; }; -const Vue = require("vue"); -const axios = require("axios"); - -let axiosInstance = axios.create({ - headers: { - 'X-CSRF-TOKEN': document.querySelector('meta[name=token]').getAttribute('content'), - 'baseURL': window.baseUrl('') - } -}); -window.$http = axiosInstance; -Vue.prototype.$http = axiosInstance; - - -// AngularJS - Create application and load components -const angular = require("angular"); -require("angular-resource"); -require("angular-animate"); -require("angular-sanitize"); -require("angular-ui-sortable"); - -let ngApp = angular.module('bookStack', ['ngResource', 'ngAnimate', 'ngSanitize', 'ui.sortable']); - -// Translation setup -// Creates a global function with name 'trans' to be used in the same way as Laravel's translation system -const Translations = require("./translations"); -let translator = new Translations(window.translations); -window.trans = translator.get.bind(translator); - // Global Event System class EventManager { constructor() { @@ -61,8 +33,45 @@ class EventManager { } window.Events = new EventManager(); + +const Vue = require("vue"); +const axios = require("axios"); + +let axiosInstance = axios.create({ + headers: { + 'X-CSRF-TOKEN': document.querySelector('meta[name=token]').getAttribute('content'), + 'baseURL': window.baseUrl('') + } +}); +axiosInstance.interceptors.request.use(resp => { + return resp; +}, err => { + if (typeof err.response === "undefined" || typeof err.response.data === "undefined") return Promise.reject(err); + if (typeof err.response.data.error !== "undefined") window.Events.emit('error', err.response.data.error); + if (typeof err.response.data.message !== "undefined") window.Events.emit('error', err.response.data.message); +}); +window.$http = axiosInstance; + +Vue.prototype.$http = axiosInstance; Vue.prototype.$events = window.Events; + +// AngularJS - Create application and load components +const angular = require("angular"); +require("angular-resource"); +require("angular-animate"); +require("angular-sanitize"); +require("angular-ui-sortable"); + +let ngApp = angular.module('bookStack', ['ngResource', 'ngAnimate', 'ngSanitize', 'ui.sortable']); + +// Translation setup +// Creates a global function with name 'trans' to be used in the same way as Laravel's translation system +const Translations = require("./translations"); +let translator = new Translations(window.translations); +window.trans = translator.get.bind(translator); + + require("./vues/vues"); require("./components"); diff --git a/resources/assets/js/vues/attachment-manager.js b/resources/assets/js/vues/attachment-manager.js new file mode 100644 index 000000000..635622b93 --- /dev/null +++ b/resources/assets/js/vues/attachment-manager.js @@ -0,0 +1,138 @@ +const draggable = require('vuedraggable'); +const dropzone = require('./components/dropzone'); + +function mounted() { + this.pageId = this.$el.getAttribute('page-id'); + this.file = this.newFile(); + + this.$http.get(window.baseUrl(`/attachments/get/page/${this.pageId}`)).then(resp => { + this.files = resp.data; + }).catch(err => { + this.checkValidationErrors('get', err); + }); +} + +let data = { + pageId: null, + files: [], + fileToEdit: null, + file: {}, + tab: 'list', + editTab: 'file', + errors: {link: {}, edit: {}, delete: {}} +}; + +const components = {dropzone, draggable}; + +let methods = { + + newFile() { + return {page_id: this.pageId}; + }, + + getFileUrl(file) { + return window.baseUrl(`/attachments/${file.id}`); + }, + + fileSortUpdate() { + this.$http.put(window.baseUrl(`/attachments/sort/page/${this.pageId}`), {files: this.files}).then(resp => { + this.$events.emit('success', resp.data.message); + }).catch(err => { + this.checkValidationErrors('sort', err); + }); + }, + + startEdit(file) { + this.fileToEdit = Object.assign({}, file); + this.fileToEdit.link = file.external ? file.path : ''; + this.editTab = file.external ? 'link' : 'file'; + }, + + deleteFile(file) { + if (!file.deleting) return file.deleting = true; + + this.$http.delete(window.baseUrl(`/attachments/${file.id}`)).then(resp => { + this.$events.emit('success', resp.data.message); + this.files.splice(this.files.indexOf(file), 1); + }).catch(err => { + this.checkValidationErrors('delete', err) + }); + }, + + uploadSuccess(upload) { + this.files.push(upload.data); + this.$events.emit('success', trans('entities.attachments_file_uploaded')); + }, + + uploadSuccessUpdate(upload) { + let fileIndex = this.filesIndex(upload.data); + if (fileIndex === -1) { + this.files.push(upload.data) + } else { + this.files.splice(fileIndex, 1, upload.data); + } + + if (this.fileToEdit && this.fileToEdit.id === upload.data.id) { + this.fileToEdit = Object.assign({}, upload.data); + } + this.$events.emit('success', trans('entities.attachments_file_updated')); + }, + + checkValidationErrors(groupName, err) { + console.error(err); + if (typeof err.response.data === "undefined" && typeof err.response.data.validation === "undefined") return; + this.errors[groupName] = err.response.data.validation; + console.log(this.errors[groupName]); + }, + + getUploadUrl(file) { + let url = window.baseUrl(`/attachments/upload`); + if (typeof file !== 'undefined') url += `/${file.id}`; + return url; + }, + + cancelEdit() { + this.fileToEdit = null; + }, + + attachNewLink(file) { + file.uploaded_to = this.pageId; + this.$http.post(window.baseUrl('/attachments/link'), file).then(resp => { + this.files.push(resp.data); + this.file = this.newFile(); + this.$events.emit('success', trans('entities.attachments_link_attached')); + }).catch(err => { + this.checkValidationErrors('link', err); + }); + }, + + updateFile(file) { + $http.put(window.baseUrl(`/attachments/${file.id}`), file).then(resp => { + let search = this.filesIndex(resp.data); + if (search === -1) { + this.files.push(resp.data); + } else { + this.files.splice(search, 1, resp.data); + } + + if (this.fileToEdit && !file.external) this.fileToEdit.link = ''; + this.fileToEdit = false; + + this.$events.emit('success', trans('entities.attachments_updated_success')); + }).catch(err => { + this.checkValidationErrors('edit', err); + }); + }, + + filesIndex(file) { + for (let i = 0, len = this.files.length; i < len; i++) { + if (this.files[i].id === file.id) return i; + } + return -1; + } + +}; + +module.exports = { + data, methods, mounted, components, +}; \ No newline at end of file diff --git a/resources/assets/js/vues/entity-search.js b/resources/assets/js/vues/entity-dashboard.js similarity index 100% rename from resources/assets/js/vues/entity-search.js rename to resources/assets/js/vues/entity-dashboard.js diff --git a/resources/assets/js/vues/image-manager.js b/resources/assets/js/vues/image-manager.js index 9e3fa013e..12ccc970d 100644 --- a/resources/assets/js/vues/image-manager.js +++ b/resources/assets/js/vues/image-manager.js @@ -127,8 +127,6 @@ const methods = { message += errors[key].join('\n'); }); this.$events.emit('error', message); - } else if (error.response.status === 403) { - this.$events.emit('error', error.response.data.error); } }); }, @@ -144,8 +142,6 @@ const methods = { }).catch(error=> { if (error.response.status === 400) { this.dependantPages = error.response.data; - } else if (error.response.status === 403) { - this.$events.emit('error', error.response.data.error); } }); }, diff --git a/resources/assets/js/vues/vues.js b/resources/assets/js/vues/vues.js index e5ab50c4d..d4c4c4574 100644 --- a/resources/assets/js/vues/vues.js +++ b/resources/assets/js/vues/vues.js @@ -6,19 +6,20 @@ function exists(id) { let vueMapping = { 'search-system': require('./search'), - 'entity-dashboard': require('./entity-search'), + 'entity-dashboard': require('./entity-dashboard'), 'code-editor': require('./code-editor'), 'image-manager': require('./image-manager'), 'tag-manager': require('./tag-manager'), + 'attachment-manager': require('./attachment-manager'), 'page-comments': require('./page-comments') }; window.vues = {}; -Object.keys(vueMapping).forEach(id => { - if (exists(id)) { - let config = vueMapping[id]; - config.el = '#' + id; - window.vues[id] = new Vue(config); - } -}); \ No newline at end of file +let ids = Object.keys(vueMapping); +for (let i = 0, len = ids.length; i < len; i++) { + if (!exists(ids[i])) continue; + let config = vueMapping[ids[i]]; + config.el = '#' + ids[i]; + window.vues[ids[i]] = new Vue(config); +} \ No newline at end of file diff --git a/resources/assets/sass/_blocks.scss b/resources/assets/sass/_blocks.scss index bd3f8ff4e..e3a0d6952 100644 --- a/resources/assets/sass/_blocks.scss +++ b/resources/assets/sass/_blocks.scss @@ -134,8 +134,7 @@ .callout { border-left: 3px solid #BBB; background-color: #EEE; - padding: $-s; - padding-left: $-xl; + padding: $-s $-s $-s $-xl; display: block; position: relative; &:before { diff --git a/resources/assets/sass/_buttons.scss b/resources/assets/sass/_buttons.scss index 6e03c9217..202eb935b 100644 --- a/resources/assets/sass/_buttons.scss +++ b/resources/assets/sass/_buttons.scss @@ -31,7 +31,6 @@ $button-border-radius: 2px; display: inline-block; border: none; font-weight: 500; - font-family: $text; outline: 0; border-radius: $button-border-radius; cursor: pointer; @@ -65,6 +64,7 @@ $button-border-radius: 2px; padding: 0; margin: 0; border: none; + user-select: none; &:focus, &:active { outline: 0; } diff --git a/resources/assets/sass/_codemirror.scss b/resources/assets/sass/_codemirror.scss index bd85218a5..e281d4c0d 100644 --- a/resources/assets/sass/_codemirror.scss +++ b/resources/assets/sass/_codemirror.scss @@ -2,7 +2,6 @@ .CodeMirror { /* Set height, width, borders, and global font properties here */ - font-family: monospace; height: 300px; color: black; } @@ -235,7 +234,6 @@ div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;} -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; border-width: 0; background: transparent; - font-family: inherit; font-size: inherit; margin: 0; white-space: pre; diff --git a/resources/assets/sass/_components.scss b/resources/assets/sass/_components.scss index 8092caa07..525b4f8f1 100644 --- a/resources/assets/sass/_components.scss +++ b/resources/assets/sass/_components.scss @@ -512,7 +512,7 @@ body.flexbox-support #entity-selector-wrap .popup-body .form-group { } -[tab-container] .nav-tabs { +.tab-container .nav-tabs { text-align: left; border-bottom: 1px solid #DDD; margin-bottom: $-m; diff --git a/resources/assets/sass/_fonts.scss b/resources/assets/sass/_fonts.scss deleted file mode 100644 index c8e8ea833..000000000 --- a/resources/assets/sass/_fonts.scss +++ /dev/null @@ -1,102 +0,0 @@ -// Generated using https://google-webfonts-helper.herokuapp.com - -/* roboto-100 - cyrillic_latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 100; - src: local('Roboto Thin'), local('Roboto-Thin'), - url('../fonts/roboto-v15-cyrillic_latin-100.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */ - url('../fonts/roboto-v15-cyrillic_latin-100.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} -/* roboto-100italic - cyrillic_latin */ -@font-face { - font-family: 'Roboto'; - font-style: italic; - font-weight: 100; - src: local('Roboto Thin Italic'), local('Roboto-ThinItalic'), - url('../fonts/roboto-v15-cyrillic_latin-100italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */ - url('../fonts/roboto-v15-cyrillic_latin-100italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} -/* roboto-300 - cyrillic_latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 300; - src: local('Roboto Light'), local('Roboto-Light'), - url('../fonts/roboto-v15-cyrillic_latin-300.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */ - url('../fonts/roboto-v15-cyrillic_latin-300.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} -/* roboto-300italic - cyrillic_latin */ -@font-face { - font-family: 'Roboto'; - font-style: italic; - font-weight: 300; - src: local('Roboto Light Italic'), local('Roboto-LightItalic'), - url('../fonts/roboto-v15-cyrillic_latin-300italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */ - url('../fonts/roboto-v15-cyrillic_latin-300italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} -/* roboto-regular - cyrillic_latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 400; - src: local('Roboto'), local('Roboto-Regular'), - url('../fonts/roboto-v15-cyrillic_latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */ - url('../fonts/roboto-v15-cyrillic_latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} -/* roboto-italic - cyrillic_latin */ -@font-face { - font-family: 'Roboto'; - font-style: italic; - font-weight: 400; - src: local('Roboto Italic'), local('Roboto-Italic'), - url('../fonts/roboto-v15-cyrillic_latin-italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */ - url('../fonts/roboto-v15-cyrillic_latin-italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} -/* roboto-500 - cyrillic_latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 500; - src: local('Roboto Medium'), local('Roboto-Medium'), - url('../fonts/roboto-v15-cyrillic_latin-500.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */ - url('../fonts/roboto-v15-cyrillic_latin-500.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} -/* roboto-500italic - cyrillic_latin */ -@font-face { - font-family: 'Roboto'; - font-style: italic; - font-weight: 500; - src: local('Roboto Medium Italic'), local('Roboto-MediumItalic'), - url('../fonts/roboto-v15-cyrillic_latin-500italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */ - url('../fonts/roboto-v15-cyrillic_latin-500italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} -/* roboto-700 - cyrillic_latin */ -@font-face { - font-family: 'Roboto'; - font-style: normal; - font-weight: 700; - src: local('Roboto Bold'), local('Roboto-Bold'), - url('../fonts/roboto-v15-cyrillic_latin-700.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */ - url('../fonts/roboto-v15-cyrillic_latin-700.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} -/* roboto-700italic - cyrillic_latin */ -@font-face { - font-family: 'Roboto'; - font-style: italic; - font-weight: 700; - src: local('Roboto Bold Italic'), local('Roboto-BoldItalic'), - url('../fonts/roboto-v15-cyrillic_latin-700italic.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */ - url('../fonts/roboto-v15-cyrillic_latin-700italic.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} - -/* roboto-mono-regular - latin */ -@font-face { - font-family: 'Roboto Mono'; - font-style: normal; - font-weight: 400; - src: local('Roboto Mono'), local('RobotoMono-Regular'), - url('../fonts/roboto-mono-v4-latin-regular.woff2') format('woff2'), /* Chrome 26+, Opera 23+ */ - url('../fonts/roboto-mono-v4-latin-regular.woff') format('woff'); /* Chrome 6+, Firefox 3.6+, IE 9+, Safari 5.1+ */ -} \ No newline at end of file diff --git a/resources/assets/sass/_forms.scss b/resources/assets/sass/_forms.scss index 866316fc5..d372359cc 100644 --- a/resources/assets/sass/_forms.scss +++ b/resources/assets/sass/_forms.scss @@ -5,7 +5,6 @@ border: 1px solid #CCC; display: inline-block; font-size: $fs-s; - font-family: $text; padding: $-xs; color: #222; width: 250px; @@ -33,7 +32,6 @@ position: relative; z-index: 5; #markdown-editor-input { - font-family: 'Roboto Mono', monospace; font-style: normal; font-weight: 400; padding: $-xs $-m; @@ -69,7 +67,6 @@ .editor-toolbar { width: 100%; padding: $-xs $-m; - font-family: 'Roboto Mono', monospace; font-size: 11px; line-height: 1.6; border-bottom: 1px solid #DDD; @@ -251,15 +248,14 @@ div[editor-type="markdown"] .title-input.page-title input[type="text"] { border: none; color: $primary; padding: 0; - margin: 0; cursor: pointer; - margin-left: $-s; - } - button[type="submit"] { - margin-left: -$-l; + position: absolute; + left: 7px; + top: 7px; } input { - padding-right: $-l; + display: block; + padding-left: $-l; width: 300px; max-width: 100%; } diff --git a/resources/assets/sass/_header.scss b/resources/assets/sass/_header.scss index ae8dd3ff5..49bd74b07 100644 --- a/resources/assets/sass/_header.scss +++ b/resources/assets/sass/_header.scss @@ -12,7 +12,6 @@ header { padding: $-m; } border-bottom: 1px solid #DDD; - //margin-bottom: $-l; .links { display: inline-block; vertical-align: top; @@ -23,26 +22,27 @@ header { } .links a { display: inline-block; - padding: $-l; + padding: $-m $-l; color: #FFF; &:last-child { padding-right: 0; } @include smaller-than($screen-md) { - padding: $-l $-s; + padding: $-m $-s; } } .avatar, .user-name { display: inline-block; } .avatar { - //margin-top: (45px/2); width: 30px; height: 30px; } .user-name { vertical-align: top; - padding-top: $-l; + padding-top: $-m; + position: relative; + top: -3px; display: inline-block; cursor: pointer; > * { @@ -66,53 +66,57 @@ header { } } } - @include smaller-than($screen-md) { + @include smaller-than($screen-sm) { text-align: center; .float.right { float: none; } - } - @include smaller-than($screen-sm) { .links a { padding: $-s; } - form.search-box { - margin-top: 0; - } .user-name { padding-top: $-s; } } - .dropdown-container { - font-size: 0.9em; +} + +.header-search { + display: inline-block; +} +header .search-box { + display: inline-block; + margin-top: $-s; + input { + background-color: rgba(0, 0, 0, 0.2); + border: 1px solid rgba(255, 255, 255, 0.3); + color: #EEE; + } + button { + color: #EEE; + } + ::-webkit-input-placeholder { /* Chrome/Opera/Safari */ + color: #DDD; + } + ::-moz-placeholder { /* Firefox 19+ */ + color: #DDD; + } + :-ms-input-placeholder { /* IE 10+ */ + color: #DDD; + } + :-moz-placeholder { /* Firefox 18- */ + color: #DDD; + } + @include smaller-than($screen-lg) { + max-width: 250px; + } + @include smaller-than($l) { + max-width: 200px; } } -form.search-box { - margin-top: $-l *0.9; - display: inline-block; - position: relative; - text-align: left; - input { - background-color: transparent; - border-radius: 24px; - border: 2px solid #EEE; - color: #EEE; - padding-left: $-m; - padding-right: $-l; - outline: 0; - } - button { - vertical-align: top; - margin-left: -$-l; - color: #FFF; - top: 6px; - right: 4px; - display: inline-block; - position: absolute; - &:hover { - color: #FFF; - } +@include smaller-than($s) { + .header-search { + display: block; } } @@ -128,12 +132,12 @@ form.search-box { font-size: 1.8em; color: #fff; font-weight: 400; - padding: $-l $-l $-l 0; + padding: 14px $-l 14px 0; vertical-align: top; line-height: 1; } .logo-image { - margin: $-m $-s $-m 0; + margin: $-xs $-s $-xs 0; vertical-align: top; height: 43px; } @@ -227,4 +231,7 @@ form.search-box { border-bottom: 2px solid $primary; } } +} +.faded-small .nav-tabs a { + padding: $-s $-m; } \ No newline at end of file diff --git a/resources/assets/sass/_html.scss b/resources/assets/sass/_html.scss index c061f9d64..27ca04eb7 100644 --- a/resources/assets/sass/_html.scss +++ b/resources/assets/sass/_html.scss @@ -12,7 +12,6 @@ html { } body { - font-family: $text; font-size: $fs-m; line-height: 1.6; color: #616161; diff --git a/resources/assets/sass/_tables.scss b/resources/assets/sass/_tables.scss index ea517fee3..31ac92f60 100644 --- a/resources/assets/sass/_tables.scss +++ b/resources/assets/sass/_tables.scss @@ -59,18 +59,9 @@ table.list-table { } } -table.file-table { - @extend .no-style; - td { - padding: $-xs; - } - .ui-sortable-helper { - display: table; - } -} - .fake-table { display: table; + width: 100%; > div { display: table-row-group; } diff --git a/resources/assets/sass/_text.scss b/resources/assets/sass/_text.scss index 2ef4bd16d..d38a5c515 100644 --- a/resources/assets/sass/_text.scss +++ b/resources/assets/sass/_text.scss @@ -1,3 +1,14 @@ +/** + * Fonts + */ + +body, button, input, select, label { + font-family: $text; +} +.Codemirror, pre, #markdown-editor-input, .editor-toolbar, .code-base { + font-family: $mono; +} + /* * Header Styles */ @@ -58,7 +69,6 @@ a, .link { cursor: pointer; text-decoration: none; transition: color ease-in-out 80ms; - font-family: $text; line-height: 1.6; &:hover { text-decoration: underline; @@ -131,7 +141,6 @@ sub, .subscript { } pre { - font-family: monospace; font-size: 12px; background-color: #f5f5f5; border: 1px solid #DDD; @@ -180,7 +189,6 @@ blockquote { .code-base { background-color: #F8F8F8; - font-family: monospace; font-size: 0.80em; border: 1px solid #DDD; border-radius: 3px; diff --git a/resources/assets/sass/_variables.scss b/resources/assets/sass/_variables.scss index 3e864aaa4..18880fa5b 100644 --- a/resources/assets/sass/_variables.scss +++ b/resources/assets/sass/_variables.scss @@ -27,8 +27,12 @@ $-xs: 6px; $-xxs: 3px; // Fonts -$heading: 'Roboto', 'DejaVu Sans', Helvetica, Arial, sans-serif; -$text: 'Roboto', 'DejaVu Sans', Helvetica, Arial, sans-serif; +$text: -apple-system, BlinkMacSystemFont, +"Segoe UI", "Oxygen", "Ubuntu", "Roboto", "Cantarell", +"Fira Sans", "Droid Sans", "Helvetica Neue", +sans-serif; +$mono: "Lucida Console", "DejaVu Sans Mono", "Ubunto Mono", Monaco, monospace; +$heading: $text; $fs-m: 15px; $fs-s: 14px; diff --git a/resources/assets/sass/export-styles.scss b/resources/assets/sass/export-styles.scss index 72b5b16b5..19579004b 100644 --- a/resources/assets/sass/export-styles.scss +++ b/resources/assets/sass/export-styles.scss @@ -1,4 +1,3 @@ -//@import "reset"; @import "variables"; @import "mixins"; @import "html"; diff --git a/resources/assets/sass/styles.scss b/resources/assets/sass/styles.scss index e40430bd8..b912bf7ee 100644 --- a/resources/assets/sass/styles.scss +++ b/resources/assets/sass/styles.scss @@ -1,6 +1,5 @@ @import "reset"; @import "variables"; -@import "fonts"; @import "mixins"; @import "html"; @import "text"; @@ -18,12 +17,11 @@ @import "pages"; @import "comments"; -[v-cloak], [v-show] { +[v-cloak] { display: none; opacity: 0; animation-name: none !important; } - [ng\:cloak], [ng-cloak], .ng-cloak { display: none !important; user-select: none; diff --git a/resources/lang/de/activities.php b/resources/lang/de/activities.php index c2d20b3a6..3318ea752 100644 --- a/resources/lang/de/activities.php +++ b/resources/lang/de/activities.php @@ -8,33 +8,33 @@ return [ */ // Pages - 'page_create' => 'Seite erstellt', - 'page_create_notification' => 'Seite erfolgreich erstellt', - 'page_update' => 'Seite aktualisiert', - 'page_update_notification' => 'Seite erfolgreich aktualisiert', - 'page_delete' => 'Seite gelöscht', - 'page_delete_notification' => 'Seite erfolgreich gelöscht', - 'page_restore' => 'Seite wiederhergstellt', - 'page_restore_notification' => 'Seite erfolgreich wiederhergstellt', - 'page_move' => 'Seite verschoben', + 'page_create' => 'hat Seite erstellt:', + 'page_create_notification' => 'hat Seite erfolgreich erstellt:', + 'page_update' => 'hat Seite aktualisiert:', + 'page_update_notification' => 'hat Seite erfolgreich aktualisiert:', + 'page_delete' => 'hat Seite gelöscht:', + 'page_delete_notification' => 'hat Seite erfolgreich gelöscht:', + 'page_restore' => 'hat Seite wiederhergstellt:', + 'page_restore_notification' => 'hat Seite erfolgreich wiederhergstellt:', + 'page_move' => 'hat Seite verschoben:', // Chapters - 'chapter_create' => 'Kapitel erstellt', - 'chapter_create_notification' => 'Kapitel erfolgreich erstellt', - 'chapter_update' => 'Kapitel aktualisiert', - 'chapter_update_notification' => 'Kapitel erfolgreich aktualisiert', - 'chapter_delete' => 'Kapitel gelöscht', - 'chapter_delete_notification' => 'Kapitel erfolgreich gelöscht', - 'chapter_move' => 'Kapitel verschoben', + 'chapter_create' => 'hat Kapitel erstellt:', + 'chapter_create_notification' => 'hat Kapitel erfolgreich erstellt:', + 'chapter_update' => 'hat Kapitel aktualisiert:', + 'chapter_update_notification' => 'hat Kapitel erfolgreich aktualisiert:', + 'chapter_delete' => 'hat Kapitel gelöscht', + 'chapter_delete_notification' => 'hat Kapitel erfolgreich gelöscht:', + 'chapter_move' => 'hat Kapitel verschoben:', // Books - 'book_create' => 'Buch erstellt', - 'book_create_notification' => 'Buch erfolgreich erstellt', - 'book_update' => 'Buch aktualisiert', - 'book_update_notification' => 'Buch erfolgreich aktualisiert', - 'book_delete' => 'Buch gelöscht', - 'book_delete_notification' => 'Buch erfolgreich gelöscht', - 'book_sort' => 'Buch sortiert', - 'book_sort_notification' => 'Buch erfolgreich neu sortiert', + 'book_create' => 'hat Buch erstellt:', + 'book_create_notification' => 'hat Buch erfolgreich erstellt:', + 'book_update' => 'hat Buch aktualisiert:', + 'book_update_notification' => 'hat Buch erfolgreich aktualisiert:', + 'book_delete' => 'hat Buch gelöscht:', + 'book_delete_notification' => 'hat Buch erfolgreich gelöscht:', + 'book_sort' => 'hat Buch sortiert:', + 'book_sort_notification' => 'hat Buch erfolgreich neu sortiert:', ]; diff --git a/resources/lang/de/auth.php b/resources/lang/de/auth.php index f253cdfa1..8f4afe654 100644 --- a/resources/lang/de/auth.php +++ b/resources/lang/de/auth.php @@ -10,8 +10,8 @@ return [ | these language lines according to your application's requirements. | */ - 'failed' => 'Dies sind keine gültigen Anmeldedaten.', - 'throttle' => 'Zu viele Anmeldeversuche. Bitte versuchen sie es in :seconds Sekunden erneut.', + 'failed' => 'Die eingegebenen Anmeldedaten sind ungültig.', + 'throttle' => 'Zu viele Anmeldeversuche. Bitte versuchen Sie es in :seconds Sekunden erneut.', /** * Login & Register @@ -29,16 +29,16 @@ return [ 'forgot_password' => 'Passwort vergessen?', 'remember_me' => 'Angemeldet bleiben', 'ldap_email_hint' => 'Bitte geben Sie eine E-Mail-Adresse ein, um diese mit dem Account zu nutzen.', - 'create_account' => 'Account anlegen', - 'social_login' => 'Social Login', - 'social_registration' => 'Social Registrierung', - 'social_registration_text' => 'Mit einem dieser Möglichkeiten registrieren oder anmelden.', + 'create_account' => 'Account registrieren', + 'social_login' => 'Mit Sozialem Netzwerk anmelden', + '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_confirm' => 'Bitte prüfen Sie Ihren E-Mail Eingang und klicken auf den Verifizieren-Button, um :appName nutzen zu können.', - 'registrations_disabled' => 'Die Registrierung ist momentan nicht möglich', - 'registration_email_domain_invalid' => 'Diese E-Mail-Domain ist für die Benutzer der Applikation nicht freigeschaltet.', + 'register_confirm' => 'Bitte prüfen Sie Ihren Posteingang und bestätigen Sie die Registrierung.', + 'registrations_disabled' => 'Eine Registrierung ist momentan nicht möglich', + 'registration_email_domain_invalid' => 'Sie können sich mit dieser E-Mail nicht registrieren.', 'register_success' => 'Vielen Dank für Ihre Registrierung! Die Daten sind gespeichert und Sie sind angemeldet.', @@ -46,30 +46,30 @@ return [ * Password Reset */ 'reset_password' => 'Passwort vergessen', - 'reset_password_send_instructions' => 'Bitte geben Sie unten Ihre E-Mail-Adresse ein und Sie erhalten eine E-Mail, um Ihr Passwort zurück zu setzen.', + 'reset_password_send_instructions' => 'Bitte geben Sie Ihre E-Mail-Adresse ein. Danach erhalten Sie eine E-Mail mit einem Link zum Zurücksetzen Ihres Passwortes.', 'reset_password_send_button' => 'Passwort zurücksetzen', - 'reset_password_sent_success' => 'Eine E-Mail mit den Instruktionen, um Ihr Passwort zurückzusetzen wurde an :email gesendet.', - 'reset_password_success' => 'Ihr Passwort wurde erfolgreich zurück gesetzt.', + 'reset_password_sent_success' => 'Eine E-Mail mit dem Link zum Zurücksetzen Ihres Passwortes wurde an :email gesendet.', + 'reset_password_success' => 'Ihr Passwort wurde erfolgreich zurückgesetzt.', 'email_reset_subject' => 'Passwort zurücksetzen für :appName', - 'email_reset_text' => 'Sie erhalten diese E-Mail, weil eine Passwort-Rücksetzung für Ihren Account beantragt wurde.', - 'email_reset_not_requested' => 'Wenn Sie die Passwort-Rücksetzung nicht ausgelöst haben, ist kein weiteres Handeln notwendig.', + 'email_reset_text' => 'Sie erhalten diese E-Mail, weil jemand versucht hat, Ihr Passwort zurückzusetzen.', + 'email_reset_not_requested' => 'Wenn Sie das nicht waren, brauchen Sie nichts weiter zu tun.', /** * Email Confirmation */ - 'email_confirm_subject' => 'Bestätigen sie ihre E-Mail Adresse bei :appName', - 'email_confirm_greeting' => 'Danke, dass sie :appName beigetreten sind!', - 'email_confirm_text' => 'Bitte bestätigen sie ihre E-Mail Adresse, indem sie auf den Button klicken:', - 'email_confirm_action' => 'E-Mail Adresse bestätigen', - 'email_confirm_send_error' => 'Bestätigungs-E-Mail benötigt, aber das System konnte die E-Mail nicht versenden. Kontaktieren sie den Administrator, um sicherzustellen, dass das Sytsem korrekt eingerichtet ist.', - 'email_confirm_success' => 'Ihre E-Mail Adresse wurde bestätigt!', - 'email_confirm_resent' => 'Bestätigungs-E-Mail wurde erneut versendet, bitte überprüfen sie ihren Posteingang.', + 'email_confirm_subject' => 'Bestätigen Sie Ihre E-Mail-Adresse für :appName', + 'email_confirm_greeting' => 'Danke, dass Sie sich für :appName registriert haben!', + 'email_confirm_text' => 'Bitte bestätigen Sie Ihre E-Mail-Adresse, indem Sie auf die Schaltfläche klicken:', + 'email_confirm_action' => 'E-Mail-Adresse bestätigen', + 'email_confirm_send_error' => 'Leider konnte die für die Registrierung notwendige E-Mail zur bestätigung Ihrer E-Mail-Adresse nicht versandt werden. Bitte kontaktieren Sie den Systemadministrator!', + 'email_confirm_success' => 'Ihre E-Mail-Adresse wurde bestätigt!', + 'email_confirm_resent' => 'Bestätigungs-E-Mail wurde erneut versendet, bitte überprüfen Sie Ihren Posteingang.', 'email_not_confirmed' => 'E-Mail-Adresse ist nicht bestätigt', 'email_not_confirmed_text' => 'Ihre E-Mail-Adresse ist bisher nicht bestätigt.', 'email_not_confirmed_click_link' => 'Bitte klicken Sie auf den Link in der E-Mail, die Sie nach der Registrierung erhalten haben.', 'email_not_confirmed_resend' => 'Wenn Sie die E-Mail nicht erhalten haben, können Sie die Nachricht erneut anfordern. Füllen Sie hierzu bitte das folgende Formular aus:', - 'email_not_confirmed_resend_button' => 'Bestätigungs E-Mail erneut senden', + 'email_not_confirmed_resend_button' => 'Bestätigungs-E-Mail erneut senden', ]; diff --git a/resources/lang/de/common.php b/resources/lang/de/common.php index 7ad1743a0..3c21a9d08 100644 --- a/resources/lang/de/common.php +++ b/resources/lang/de/common.php @@ -28,9 +28,9 @@ return [ 'edit' => 'Bearbeiten', 'sort' => 'Sortieren', 'move' => 'Verschieben', - 'delete' => 'Löschen', + 'delete' => 'Löschen', 'search' => 'Suchen', - 'search_clear' => 'Suche löschen', + 'search_clear' => 'Suche löschen', 'reset' => 'Zurücksetzen', 'remove' => 'Entfernen', @@ -38,9 +38,9 @@ return [ /** * Misc */ - 'deleted_user' => 'Gelöschte Benutzer', - 'no_activity' => 'Keine Aktivitäten zum Anzeigen', - 'no_items' => 'Keine Einträge gefunden.', + 'deleted_user' => 'Gelöschte Benutzer', + 'no_activity' => 'Keine Aktivitäten zum Anzeigen', + 'no_items' => 'Keine Einträge gefunden.', 'back_to_top' => 'nach oben', 'toggle_details' => 'Details zeigen/verstecken', @@ -53,6 +53,6 @@ return [ /** * Email Content */ - 'email_action_help' => 'Sollte es beim Anklicken des ":actionText" Buttons Probleme geben, kopieren Sie folgende URL und fügen diese in Ihrem Webbrowser ein:', + 'email_action_help' => 'Sollte es beim Anklicken der Schaltfläche ":action_text" Probleme geben, öffnen Sie folgende URL in Ihrem Browser:', 'email_rights' => 'Alle Rechte vorbehalten', -]; \ No newline at end of file +]; diff --git a/resources/lang/de/components.php b/resources/lang/de/components.php index a8538c465..26bf3e626 100644 --- a/resources/lang/de/components.php +++ b/resources/lang/de/components.php @@ -13,12 +13,12 @@ return [ 'image_uploaded' => 'Hochgeladen am :uploadedDate', 'image_load_more' => 'Mehr', 'image_image_name' => 'Bildname', - 'image_delete_confirm' => 'Dieses Bild wird auf den folgenden Seiten benutzt. Bitte klicken Sie erneut auf löschen, wenn Sie dieses Bild tatsächlich entfernen möchten.', + 'image_delete_confirm' => 'Dieses Bild wird auf den folgenden Seiten benutzt. Bitte klicken Sie erneut auf löschen, wenn Sie dieses Bild wirklich entfernen möchten.', 'image_select_image' => 'Bild auswählen', - 'image_dropzone' => 'Ziehen Sie Bilder hier hinein oder klicken Sie hier, um ein Bild auszuwählen', + 'image_dropzone' => 'Ziehen Sie Bilder hierher oder klicken Sie, um ein Bild auszuwählen', 'images_deleted' => 'Bilder gelöscht', 'image_preview' => 'Bildvorschau', 'image_upload_success' => 'Bild erfolgreich hochgeladen', 'image_update_success' => 'Bilddetails erfolgreich aktualisiert', 'image_delete_success' => 'Bild erfolgreich gelöscht' -]; \ No newline at end of file +]; diff --git a/resources/lang/de/entities.php b/resources/lang/de/entities.php index 5d7d5cdde..910218a58 100644 --- a/resources/lang/de/entities.php +++ b/resources/lang/de/entities.php @@ -4,38 +4,39 @@ return [ /** * Shared */ - 'recently_created' => 'Kürzlich angelegt', - 'recently_created_pages' => 'Kürzlich angelegte Seiten', - 'recently_updated_pages' => 'Kürzlich aktualisierte Seiten', - 'recently_created_chapters' => 'Kürzlich angelegte Kapitel', - 'recently_created_books' => 'Kürzlich angelegte Bücher', - 'recently_update' => 'Kürzlich aktualisiert', - 'recently_viewed' => 'Kürzlich angesehen', - 'recent_activity' => 'Kürzliche Aktivität', + 'recently_created' => 'Kürzlich angelegt', + 'recently_created_pages' => 'Kürzlich angelegte Seiten', + 'recently_updated_pages' => 'Kürzlich aktualisierte Seiten', + 'recently_created_chapters' => 'Kürzlich angelegte Kapitel', + 'recently_created_books' => 'Kürzlich angelegte Bücher', + 'recently_update' => 'Kürzlich aktualisiert', + 'recently_viewed' => 'Kürzlich angesehen', + 'recent_activity' => 'Kürzliche Aktivität', 'create_now' => 'Jetzt anlegen', - 'revisions' => 'Revisionen', - 'meta_created' => 'Angelegt am :timeLength', - 'meta_created_name' => 'Angelegt am :timeLength durch :user', - 'meta_updated' => 'Aktualisiert am :timeLength', - 'meta_updated_name' => 'Aktualisiert am :timeLength durch :user', + 'revisions' => 'Versionen', + 'meta_revision' => 'Version #:revisionCount', + 'meta_created' => 'Erstellt: :timeLength', + 'meta_created_name' => 'Erstellt: :timeLength von :user', + 'meta_updated' => 'Zuletzt aktualisiert: :timeLength', + 'meta_updated_name' => 'Zuletzt aktualisiert: :timeLength von :user', 'x_pages' => ':count Seiten', - 'entity_select' => 'Eintrag auswählen', + 'entity_select' => 'Eintrag auswählen', 'images' => 'Bilder', - 'my_recent_drafts' => 'Meine kürzlichen Entwürfe', - 'my_recently_viewed' => 'Kürzlich von mir angesehen', + 'my_recent_drafts' => 'Meine kürzlichen Entwürfe', + 'my_recently_viewed' => 'Kürzlich von mir angesehen', 'no_pages_viewed' => 'Sie haben bisher keine Seiten angesehen.', 'no_pages_recently_created' => 'Sie haben bisher keine Seiten angelegt.', 'no_pages_recently_updated' => 'Sie haben bisher keine Seiten aktualisiert.', 'export' => 'Exportieren', 'export_html' => 'HTML-Datei', 'export_pdf' => 'PDF-Datei', - 'export_text' => 'Text-Datei', + 'export_text' => 'Textdatei', /** * Permissions and restrictions */ 'permissions' => 'Berechtigungen', - 'permissions_intro' => 'Wenn individuelle Berechtigungen aktiviert werden, überschreiben diese Einstellungen durch Rollen zugewiesene Berechtigungen.', + 'permissions_intro' => 'Wenn individuelle Berechtigungen aktiviert werden, überschreiben diese Einstellungen durch Rollen zugewiesene Berechtigungen.', 'permissions_enable' => 'Individuelle Berechtigungen aktivieren', 'permissions_save' => 'Berechtigungen speichern', @@ -43,41 +44,58 @@ return [ * Search */ 'search_results' => 'Suchergebnisse', - 'search_clear' => 'Suche zurücksetzen', - 'search_no_pages' => 'Es wurden keine passenden Suchergebnisse gefunden', - 'search_for_term' => 'Suche nach :term', + 'search_total_results_found' => ':count Ergebnis gefunden|:count Ergebnisse gesamt', + 'search_clear' => 'Filter löschen', + 'search_no_pages' => 'Keine Seiten gefunden', + 'search_for_term' => 'Nach :term suchen', + 'search_more' => 'Mehr Ergebnisse', + 'search_filters' => 'Filter', + 'search_content_type' => 'Inhaltstyp', + 'search_exact_matches' => 'Exakte Treffer', + 'search_tags' => 'Nach Schlagwort suchen', + 'search_viewed_by_me' => 'Schon von mir angesehen', + 'search_not_viewed_by_me' => 'Noch nicht von mir angesehen', + 'search_permissions_set' => 'Berechtigungen gesetzt', + 'search_created_by_me' => 'Von mir erstellt', + 'search_updated_by_me' => 'Von mir aktualisiert', + 'search_updated_before' => 'Aktualisiert vor', + 'search_updated_after' => 'Aktualisiert nach', + 'search_created_before' => 'Erstellt vor', + 'search_created_after' => 'Erstellt nach', + 'search_set_date' => 'Datum auswählen', + 'search_update' => 'Suche aktualisieren', /** * Books */ 'book' => 'Buch', - 'books' => 'Bücher', - 'books_empty' => 'Es wurden keine Bücher angelegt', - 'books_popular' => 'Populäre Bücher', - 'books_recent' => 'Kürzlich genutzte Bücher', - 'books_popular_empty' => 'Die populärsten Bücher werden hier angezeigt.', - 'books_create' => 'Neues Buch anlegen', - 'books_delete' => 'Buch löschen', - 'books_delete_named' => 'Buch :bookName löschen', - 'books_delete_explain' => 'Sie möchten das Buch \':bookName\' löschen und alle Seiten und Kapitel entfernen.', - 'books_delete_confirmation' => 'Sind Sie sicher, dass Sie dieses Buch löschen möchten?', + 'books' => 'Bücher', + 'books_empty' => 'Keine Bücher vorhanden', + 'books_popular' => 'Beliebte Bücher', + 'books_recent' => 'Kürzlich angesehene Bücher', + 'books_popular_empty' => 'Die beliebtesten Bücher werden hier angezeigt.', + 'books_create' => 'Neues Buch erstellen', + 'books_delete' => 'Buch löschen', + 'books_delete_named' => 'Buch ":bookName" löschen', + 'books_delete_explain' => 'Das Buch ":bookName" wird gelöscht und alle zugehörigen Kapitel und Seiten entfernt.', + 'books_delete_confirmation' => 'Sind Sie sicher, dass Sie dieses Buch löschen möchten?', 'books_edit' => 'Buch bearbeiten', - 'books_edit_named' => 'Buch :bookName bearbeiten', - 'books_form_book_name' => 'Buchname', + 'books_edit_named' => 'Buch ":bookName" bearbeiten', + 'books_form_book_name' => 'Name des Buches', 'books_save' => 'Buch speichern', 'books_permissions' => 'Buch-Berechtigungen', 'books_permissions_updated' => 'Buch-Berechtigungen aktualisiert', - 'books_empty_contents' => 'Es sind noch keine Seiten oder Kapitel für dieses Buch angelegt.', + 'books_empty_contents' => 'Es sind noch keine Seiten oder Kapitel zu diesem Buch hinzugefügt worden.', 'books_empty_create_page' => 'Neue Seite anlegen', 'books_empty_or' => 'oder', 'books_empty_sort_current_book' => 'Aktuelles Buch sortieren', - 'books_empty_add_chapter' => 'Neues Kapitel hinzufügen', + 'books_empty_add_chapter' => 'Neues Kapitel hinzufügen', 'books_permissions_active' => 'Buch-Berechtigungen aktiv', 'books_search_this' => 'Dieses Buch durchsuchen', - 'books_navigation' => 'Buch-Navigation', + 'books_navigation' => 'Buchnavigation', 'books_sort' => 'Buchinhalte sortieren', - 'books_sort_named' => 'Buch :bookName sortieren', - 'books_sort_show_other' => 'Andere Bücher zeigen', + 'books_sort_named' => 'Buch ":bookName" sortieren', + 'books_sort_show_other' => 'Andere Bücher anzeigen', 'books_sort_save' => 'Neue Reihenfolge speichern', /** @@ -85,145 +103,147 @@ return [ */ 'chapter' => 'Kapitel', 'chapters' => 'Kapitel', - 'chapters_popular' => 'Populäre Kapitel', + 'chapters_popular' => 'Beliebte Kapitel', 'chapters_new' => 'Neues Kapitel', 'chapters_create' => 'Neues Kapitel anlegen', 'chapters_delete' => 'Kapitel entfernen', - 'chapters_delete_named' => 'Kapitel :chapterName entfernen', - 'chapters_delete_explain' => 'Sie möchten das Kapitel \':chapterName\' löschen und alle Seiten dem direkten Eltern-Buch hinzugefügen.', - 'chapters_delete_confirm' => 'Sind Sie sicher, dass Sie dieses Kapitel löschen möchten?', + 'chapters_delete_named' => 'Kapitel ":chapterName" entfernen', + 'chapters_delete_explain' => 'Das Kapitel ":chapterName" wird gelöscht und alle zugehörigen Seiten dem übergeordneten Buch zugeordnet.', + 'chapters_delete_confirm' => 'Sind Sie sicher, dass Sie dieses Kapitel löschen möchten?', 'chapters_edit' => 'Kapitel bearbeiten', - 'chapters_edit_named' => 'Kapitel :chapterName bearbeiten', + 'chapters_edit_named' => 'Kapitel ":chapterName" bearbeiten', 'chapters_save' => 'Kapitel speichern', 'chapters_move' => 'Kapitel verschieben', - 'chapters_move_named' => 'Kapitel :chapterName verschieben', - 'chapter_move_success' => 'Kapitel in das Buch :bookName verschoben.', + 'chapters_move_named' => 'Kapitel ":chapterName" verschieben', + 'chapter_move_success' => 'Das Kapitel wurde in das Buch ":bookName" verschoben.', 'chapters_permissions' => 'Kapitel-Berechtigungen', - 'chapters_empty' => 'Aktuell sind keine Kapitel in diesem Buch angelegt.', + 'chapters_empty' => 'Aktuell sind keine Kapitel diesem Buch hinzugefügt worden.', 'chapters_permissions_active' => 'Kapitel-Berechtigungen aktiv', 'chapters_permissions_success' => 'Kapitel-Berechtigungenen aktualisisert', + 'chapters_search_this' => 'Dieses Kapitel durchsuchen', /** * Pages */ 'page' => 'Seite', 'pages' => 'Seiten', - 'pages_popular' => 'Populäre Seiten', + 'pages_popular' => 'Beliebte Seiten', 'pages_new' => 'Neue Seite', - 'pages_attachments' => 'Anhänge', + 'pages_attachments' => 'Anhänge', 'pages_navigation' => 'Seitennavigation', - 'pages_delete' => 'Seite löschen', - 'pages_delete_named' => 'Seite :pageName löschen', - 'pages_delete_draft_named' => 'Seitenentwurf von :pageName löschen', - 'pages_delete_draft' => 'Seitenentwurf löschen', - 'pages_delete_success' => 'Seite gelöscht', - 'pages_delete_draft_success' => 'Seitenentwurf gelöscht', - 'pages_delete_confirm' => 'Sind Sie sicher, dass Sie diese Seite löschen möchen?', - 'pages_delete_draft_confirm' => 'Sind Sie sicher, dass Sie diesen Seitenentwurf löschen möchten?', - 'pages_editing_named' => 'Seite :pageName bearbeiten', - 'pages_edit_toggle_header' => 'Toggle header', + 'pages_delete' => 'Seite löschen', + 'pages_delete_named' => 'Seite ":pageName" löschen', + 'pages_delete_draft_named' => 'Seitenentwurf von ":pageName" löschen', + 'pages_delete_draft' => 'Seitenentwurf löschen', + 'pages_delete_success' => 'Seite gelöscht', + 'pages_delete_draft_success' => 'Seitenentwurf gelöscht', + 'pages_delete_confirm' => 'Sind Sie sicher, dass Sie diese Seite löschen möchen?', + 'pages_delete_draft_confirm' => 'Sind Sie sicher, dass Sie diesen Seitenentwurf löschen möchten?', + 'pages_editing_named' => 'Seite ":pageName" bearbeiten', + 'pages_edit_toggle_header' => 'Hauptmenü anzeigen/verstecken', 'pages_edit_save_draft' => 'Entwurf speichern', 'pages_edit_draft' => 'Seitenentwurf bearbeiten', 'pages_editing_draft' => 'Seitenentwurf bearbeiten', 'pages_editing_page' => 'Seite bearbeiten', 'pages_edit_draft_save_at' => 'Entwurf gespeichert um ', - 'pages_edit_delete_draft' => 'Entwurf löschen', + 'pages_edit_delete_draft' => 'Entwurf löschen', 'pages_edit_discard_draft' => 'Entwurf verwerfen', - 'pages_edit_set_changelog' => 'Veränderungshinweis setzen', - 'pages_edit_enter_changelog_desc' => 'Bitte geben Sie eine kurze Zusammenfassung Ihrer Änderungen ein', - 'pages_edit_enter_changelog' => 'Veränderungshinweis eingeben', + 'pages_edit_set_changelog' => 'Änderungsprotokoll hinzufügen', + 'pages_edit_enter_changelog_desc' => 'Bitte geben Sie eine kurze Zusammenfassung Ihrer Änderungen ein', + 'pages_edit_enter_changelog' => 'Änderungsprotokoll eingeben', 'pages_save' => 'Seite speichern', 'pages_title' => 'Seitentitel', 'pages_name' => 'Seitenname', 'pages_md_editor' => 'Redakteur', 'pages_md_preview' => 'Vorschau', - 'pages_md_insert_image' => 'Bild einfügen', - 'pages_md_insert_link' => 'Link zu einem Objekt einfügen', + 'pages_md_insert_image' => 'Bild einfügen', + 'pages_md_insert_link' => 'Link zu einem Objekt einfügen', 'pages_not_in_chapter' => 'Seite ist in keinem Kapitel', 'pages_move' => 'Seite verschieben', 'pages_move_success' => 'Seite nach ":parentName" verschoben', 'pages_permissions' => 'Seiten Berechtigungen', 'pages_permissions_success' => 'Seiten Berechtigungen aktualisiert', 'pages_revisions' => 'Seitenversionen', - 'pages_revisions_named' => 'Seitenversionen von :pageName', - 'pages_revision_named' => 'Seitenversion von :pageName', - 'pages_revisions_created_by' => 'Angelegt von', + 'pages_revisions_named' => 'Seitenversionen von ":pageName"', + 'pages_revision_named' => 'Seitenversion von ":pageName"', + 'pages_revisions_created_by' => 'Erstellt von', 'pages_revisions_date' => 'Versionsdatum', - 'pages_revisions_changelog' => 'Veränderungshinweise', - 'pages_revisions_changes' => 'Veränderungen', + 'pages_revisions_number' => '#', + 'pages_revisions_changelog' => 'Änderungsprotokoll', + 'pages_revisions_changes' => 'Änderungen', 'pages_revisions_current' => 'Aktuelle Version', 'pages_revisions_preview' => 'Vorschau', - 'pages_revisions_restore' => 'Zurück sichern', - 'pages_revisions_none' => 'Diese Seite hat keine älteren Versionen.', + 'pages_revisions_restore' => 'Wiederherstellen', + 'pages_revisions_none' => 'Diese Seite hat keine älteren Versionen.', 'pages_copy_link' => 'Link kopieren', 'pages_permissions_active' => 'Seiten-Berechtigungen aktiv', - 'pages_initial_revision' => 'Erste Veröffentlichung', + 'pages_initial_revision' => 'Erste Veröffentlichung', 'pages_initial_name' => 'Neue Seite', - 'pages_editing_draft_notification' => 'Sie bearbeiten momenten einen Entwurf, der zuletzt um :timeDiff gespeichert wurde.', - 'pages_draft_edited_notification' => 'Diese Seite wurde seit diesem Zeitpunkt verändert. Wir empfehlen Ihnen, diesen Entwurf zu verwerfen.', + 'pages_editing_draft_notification' => 'Sie bearbeiten momenten einen Entwurf, der zuletzt :timeDiff gespeichert wurde.', + 'pages_draft_edited_notification' => 'Diese Seite wurde seit diesem Zeitpunkt verändert. Wir empfehlen Ihnen, diesen Entwurf zu verwerfen.', 'pages_draft_edit_active' => [ - 'start_a' => ':count Benutzer haben die Bearbeitung dieser Seite begonnen.', - 'start_b' => ':userName hat die Bearbeitung dieser Seite begonnen.', + 'start_a' => ':count Benutzer bearbeiten derzeit diese Seite.', + 'start_b' => ':userName bearbeitet jetzt diese Seite.', 'time_a' => 'seit die Seiten zuletzt aktualisiert wurden.', 'time_b' => 'in den letzten :minCount Minuten', - 'message' => ':start :time. Achten Sie darauf keine Aktualisierungen von anderen Benutzern zu überschreiben!', + 'message' => ':start :time. Achten Sie darauf, keine Änderungen von anderen Benutzern zu überschreiben!', ], 'pages_draft_discarded' => 'Entwurf verworfen. Der aktuelle Seiteninhalt wurde geladen.', /** * Editor sidebar */ - 'page_tags' => 'Seiten-Schlagwörter', + 'page_tags' => 'Seiten-Schlagwörter', 'tag' => 'Schlagwort', - 'tags' => 'Schlagworte', - 'tag_value' => 'Schlagwortinhalt (Optional)', - 'tags_explain' => "Fügen Sie Schlagworte hinzu, um Ihren Inhalt zu kategorisieren. \n Sie können einen erklärenden Inhalt hinzufügen, um eine genauere Unterteilung vorzunehmen.", - 'tags_add' => 'Weiteres Schlagwort hinzufügen', - 'attachments' => 'Anhänge', - 'attachments_explain' => 'Sie können auf Ihrer Seite Dateien hochladen oder Links anfügen. Diese werden in der seitlich angezeigt.', - 'attachments_explain_instant_save' => 'Änderungen werden direkt gespeichert.', - 'attachments_items' => 'Angefügte Elemente', + 'tags' => 'Schlagwörter', + 'tag_value' => 'Inhalt (Optional)', + 'tags_explain' => "Fügen Sie Schlagwörter hinzu, um Ihren Inhalt zu kategorisieren.\nSie können einen erklärenden Inhalt hinzufügen, um eine genauere Unterteilung vorzunehmen.", + 'tags_add' => 'Weiteres Schlagwort hinzufügen', + 'attachments' => 'Anhänge', + 'attachments_explain' => 'Sie können auf Ihrer Seite Dateien hochladen oder Links hinzufügen. Diese werden in der Seitenleiste angezeigt.', + 'attachments_explain_instant_save' => 'Änderungen werden direkt gespeichert.', + 'attachments_items' => 'Angefügte Elemente', 'attachments_upload' => 'Datei hochladen', - 'attachments_link' => 'Link anfügen', + 'attachments_link' => 'Link hinzufügen', 'attachments_set_link' => 'Link setzen', - 'attachments_delete_confirm' => 'Klicken Sie erneut auf löschen, um diesen Anhang zu entfernen.', - 'attachments_dropzone' => 'Ziehen Sie Dateien hier hinein oder klicken Sie hier, um eine Datei auszuwählen', + 'attachments_delete_confirm' => 'Klicken Sie erneut auf löschen, um diesen Anhang zu entfernen.', + 'attachments_dropzone' => 'Ziehen Sie Dateien hierher oder klicken Sie, um eine Datei auszuwählen', 'attachments_no_files' => 'Es wurden bisher keine Dateien hochgeladen.', - 'attachments_explain_link' => 'Wenn Sie keine Datei hochladen möchten, können Sie stattdessen einen Link anfügen. Dieser Link kann auf eine andere Seite oder zu einer Datei in der Cloud weisen.', + 'attachments_explain_link' => 'Wenn Sie keine Datei hochladen möchten, können Sie stattdessen einen Link hinzufügen. Dieser Link kann auf eine andere Seite oder eine Datei im Internet weisen.', 'attachments_link_name' => 'Link-Name', 'attachment_link' => 'Link zum Anhang', 'attachments_link_url' => 'Link zu einer Datei', 'attachments_link_url_hint' => 'URL einer Seite oder Datei', - 'attach' => 'anfügen', + 'attach' => 'Hinzufügen', 'attachments_edit_file' => 'Datei bearbeiten', 'attachments_edit_file_name' => 'Dateiname', - 'attachments_edit_drop_upload' => 'Ziehen Sie Dateien hier hinein, um diese hochzuladen und zu überschreiben', - 'attachments_order_updated' => 'Reihenfolge der Anhänge aktualisiert', - 'attachments_updated_success' => 'Anhang-Details aktualisiert', - 'attachments_deleted' => 'Anhang gelöscht', - 'attachments_file_uploaded' => 'Datei erfolgrecich hochgeladen', - 'attachments_file_updated' => 'Datei erfolgreich aktualisisert', - 'attachments_link_attached' => 'Link erfolgreich der Seite hinzugefügt', + 'attachments_edit_drop_upload' => 'Ziehen Sie Dateien hierher, um diese hochzuladen und zu überschreiben', + 'attachments_order_updated' => 'Reihenfolge der Anhänge aktualisiert', + 'attachments_updated_success' => 'Anhangdetails aktualisiert', + 'attachments_deleted' => 'Anhang gelöscht', + 'attachments_file_uploaded' => 'Datei erfolgreich hochgeladen', + 'attachments_file_updated' => 'Datei erfolgreich aktualisiert', + 'attachments_link_attached' => 'Link erfolgreich der Seite hinzugefügt', /** * Profile View */ 'profile_user_for_x' => 'Benutzer seit :time', - 'profile_created_content' => 'Angelegte Inhalte', - 'profile_not_created_pages' => ':userName hat bisher keine Seiten angelegt.', - 'profile_not_created_chapters' => ':userName hat bisher keine Kapitel angelegt.', - 'profile_not_created_books' => ':userName hat bisher keine Bücher angelegt.', + 'profile_created_content' => 'Erstellte Inhalte', + 'profile_not_created_pages' => ':userName hat noch keine Seiten erstellt.', + 'profile_not_created_chapters' => ':userName hat noch keine Kapitel erstellt.', + 'profile_not_created_books' => ':userName hat noch keine Bücher erstellt.', /** * Comnents */ 'comment' => 'Kommentar', 'comments' => 'Kommentare', - 'comment_placeholder' => 'Geben Sie hier Ihre Kommentare ein, Markdown unterstützt ...', + 'comment_placeholder' => 'Geben Sie hier Ihre Kommentare ein (Markdown unterstützt)', 'no_comments' => 'Keine Kommentare', 'x_comments' => ':numComments Kommentare', 'one_comment' => '1 Kommentar', - 'comments_loading' => 'Laden ...', + 'comments_loading' => 'Laden...', 'comment_save' => 'Kommentar speichern', 'comment_reply' => 'Antworten', 'comment_edit' => 'Bearbeiten', @@ -233,7 +253,7 @@ return [ 'comment_updated' => 'Kommentar aktualisiert', 'comment_deleted' => 'Kommentar gelöscht', 'comment_updated_text' => 'Aktualisiert vor :updateDiff von', - 'comment_delete_confirm' => 'Damit wird der Inhalt des Kommentars entfernt. Bist du sicher, dass du diesen Kommentar löschen möchtest?', + 'comment_delete_confirm' => 'Der Inhalt des Kommentars wird entfernt. Bist du sicher, dass du diesen Kommentar löschen möchtest?', 'comment_create' => 'Erstellt' -]; \ No newline at end of file +]; diff --git a/resources/lang/de/errors.php b/resources/lang/de/errors.php index ff045d628..0b961f8ee 100644 --- a/resources/lang/de/errors.php +++ b/resources/lang/de/errors.php @@ -7,37 +7,37 @@ return [ */ // Pages - 'permission' => 'Sie haben keine Berechtigung auf diese Seite zuzugreifen.', - 'permissionJson' => 'Sie haben keine Berechtigung die angeforderte Aktion auszuführen.', + 'permission' => 'Sie haben keine Berechtigung, auf diese Seite zuzugreifen.', + 'permissionJson' => 'Sie haben keine Berechtigung, die angeforderte Aktion auszuführen.', // Auth - 'error_user_exists_different_creds' => 'Ein Benutzer mit der E-Mail-Adresse :email ist bereits mit anderen Anmeldedaten angelegt.', - 'email_already_confirmed' => 'Die E-Mail-Adresse ist bereits bestätigt. Bitte melden Sie sich an.', - 'email_confirmation_invalid' => 'Der Bestätigungs-Token ist nicht gültig oder wurde bereits verwendet. Bitte registrieren Sie sich erneut.', - 'email_confirmation_expired' => 'Der Bestätigungs-Token ist abgelaufen. Es wurde eine neue Bestätigungs-E-Mail gesendet.', - 'ldap_fail_anonymous' => 'Anonymer LDAP Zugriff ist fehlgeschlafgen', - 'ldap_fail_authed' => 'LDAP Zugriff mit DN & Passwort ist fehlgeschlagen', - 'ldap_extension_not_installed' => 'LDAP PHP Erweiterung ist nicht installiert.', - 'ldap_cannot_connect' => 'Die Verbindung zu LDAP-Server ist fehlgeschlagen. Beim initialen Verbindungsaufbau trat ein Fehler auf.', + 'error_user_exists_different_creds' => 'Ein Benutzer mit der E-Mail-Adresse :email ist bereits mit anderen Anmeldedaten registriert.', + 'email_already_confirmed' => 'Die E-Mail-Adresse ist bereits bestätigt. Bitte melden Sie sich an.', + 'email_confirmation_invalid' => 'Der Bestätigungslink ist nicht gültig oder wurde bereits verwendet. Bitte registrieren Sie sich erneut.', + 'email_confirmation_expired' => 'Der Bestätigungslink ist abgelaufen. Es wurde eine neue Bestätigungs-E-Mail gesendet.', + '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.', 'social_no_action_defined' => 'Es ist keine Aktion definiert', - 'social_account_in_use' => 'Dieses :socialAccount Konto wird bereits verwendet. Bitte melden Sie sich mit dem :socialAccount Konto an.', - 'social_account_email_in_use' => 'Die E-Mail-Adresse :email ist bereits registriert. Wenn Sie bereits registriert sind, können Sie Ihr :socialAccount Konto in Ihren Profil-Einstellungen verknüpfen.', - 'social_account_existing' => 'Dieses :socialAccount Konto ist bereits mit Ihrem Profil verknüpft.', - 'social_account_already_used_existing' => 'Dieses :socialAccount Konto wird bereits durch einen anderen Benutzer verwendet.', - 'social_account_not_used' => 'Dieses :socialAccount Konto ist bisher keinem Benutzer zugeordnet. Bitte verknüpfen Sie deses in Ihrem Profil-Einstellungen.', - 'social_account_register_instructions' => 'Wenn Sie bisher keinen Social-Media Konto besitzen können Sie ein solches Konto mit der :socialAccount Option anlegen.', - 'social_driver_not_found' => 'Social-Media Konto Treiber nicht gefunden', - 'social_driver_not_configured' => 'Ihr :socialAccount Konto ist nicht korrekt konfiguriert.', + 'social_account_in_use' => 'Dieses :socialAccount-Konto wird bereits verwendet. Bitte melden Sie sich mit dem :socialAccount-Konto an.', + 'social_account_email_in_use' => 'Die E-Mail-Adresse ":email" ist bereits registriert. Wenn Sie bereits registriert sind, können Sie Ihr :socialAccount-Konto in Ihren Profil-Einstellungen verknüpfen.', + 'social_account_existing' => 'Dieses :socialAccount-Konto ist bereits mit Ihrem Profil verknüpft.', + 'social_account_already_used_existing' => 'Dieses :socialAccount-Konto wird bereits von einem anderen Benutzer verwendet.', + 'social_account_not_used' => 'Dieses :socialAccount-Konto ist bisher keinem Benutzer zugeordnet. Sie können es in Ihren Profil-Einstellung.', + 'social_account_register_instructions' => 'Wenn Sie bisher keinen Social-Media Konto besitzen, können Sie ein solches Konto mit der :socialAccount Option anlegen.', + 'social_driver_not_found' => 'Treiber für Social-Media-Konten nicht gefunden', + 'social_driver_not_configured' => 'Ihr :socialAccount-Konto ist nicht korrekt konfiguriert.', // System 'path_not_writable' => 'Die Datei kann nicht in den angegebenen Pfad :filePath hochgeladen werden. Stellen Sie sicher, dass dieser Ordner auf dem Server beschreibbar ist.', 'cannot_get_image_from_url' => 'Bild konnte nicht von der URL :url geladen werden.', - 'cannot_create_thumbs' => 'Der Server kann keine Vorschau-Bilder erzeugen. Bitte prüfen Sie, ob Sie die GD PHP Erweiterung installiert haben.', - 'server_upload_limit' => 'Der Server verbietet das Hochladen von Dateien mit dieser Dateigröße. Bitte versuchen Sie es mit einer kleineren Datei.', + 'cannot_create_thumbs' => 'Der Server kann keine Vorschau-Bilder erzeugen. Bitte prüfen Sie, ob die GD PHP-Erweiterung installiert ist.', + 'server_upload_limit' => 'Der Server verbietet das Hochladen von Dateien mit dieser Dateigröße. Bitte versuchen Sie es mit einer kleineren Datei.', 'image_upload_error' => 'Beim Hochladen des Bildes trat ein Fehler auf.', // Attachments - 'attachment_page_mismatch' => 'Die Seite stimmt nach dem Hochladen des Anhangs nicht überein.', + 'attachment_page_mismatch' => 'Die Seite stimmte nach dem Hochladen des Anhangs nicht überein.', // Pages 'page_draft_autosave_fail' => 'Fehler beim Speichern des Entwurfs. Stellen Sie sicher, dass Sie mit dem Internet verbunden sind, bevor Sie den Entwurf dieser Seite speichern.', @@ -47,26 +47,18 @@ return [ 'book_not_found' => 'Buch nicht gefunden', 'page_not_found' => 'Seite nicht gefunden', 'chapter_not_found' => 'Kapitel nicht gefunden', - 'selected_book_not_found' => 'Das gewählte Buch wurde nicht gefunden.', - 'selected_book_chapter_not_found' => 'Das gewählte Buch oder Kapitel wurde nicht gefunden.', - 'guests_cannot_save_drafts' => 'Gäste können keine Entwürfe speichern', + 'selected_book_not_found' => 'Das gewählte Buch wurde nicht gefunden.', + 'selected_book_chapter_not_found' => 'Das gewählte Buch oder Kapitel wurde nicht gefunden.', + 'guests_cannot_save_drafts' => 'Gäste können keine Entwürfe speichern', // Users - 'users_cannot_delete_only_admin' => 'Sie können den einzigen Administrator nicht löschen.', - 'users_cannot_delete_guest' => 'Sie können den Gast-Benutzer nicht löschen', + 'users_cannot_delete_only_admin' => 'Sie können den einzigen Administrator nicht löschen.', + 'users_cannot_delete_guest' => 'Sie können den Gast-Benutzer nicht löschen', // Roles 'role_cannot_be_edited' => 'Diese Rolle kann nicht bearbeitet werden.', - 'role_system_cannot_be_deleted' => 'Dies ist eine Systemrolle und kann nicht gelöscht werden', - 'role_registration_default_cannot_delete' => 'Diese Rolle kann nicht gelöscht werden solange sie als Standardrolle für neue Registrierungen gesetzt ist', - - // Error pages - '404_page_not_found' => 'Seite nicht gefunden', - 'sorry_page_not_found' => 'Entschuldigung. Die Seite, die Sie angefordert haben wurde nicht gefunden.', - 'return_home' => 'Zurück zur Startseite', - 'error_occurred' => 'Es ist ein Fehler aufgetreten', - 'app_down' => ':appName befindet sich aktuell im Wartungsmodus.', - 'back_soon' => 'Wir werden so schnell wie möglich wieder online sein.', + 'role_system_cannot_be_deleted' => 'Dies ist eine Systemrolle und kann nicht gelöscht werden', + 'role_registration_default_cannot_delete' => 'Diese Rolle kann nicht gelöscht werden, solange sie als Standardrolle für neue Registrierungen gesetzt ist', // Comments 'comment_list' => 'Beim Abrufen der Kommentare ist ein Fehler aufgetreten.', @@ -74,4 +66,12 @@ return [ 'comment_add' => 'Beim Hinzufügen des Kommentars ist ein Fehler aufgetreten.', 'comment_delete' => 'Beim Löschen des Kommentars ist ein Fehler aufgetreten.', 'empty_comment' => 'Kann keinen leeren Kommentar hinzufügen', + + // Error pages + '404_page_not_found' => 'Seite nicht gefunden', + 'sorry_page_not_found' => 'Entschuldigung. Die Seite, die Sie angefordert haben, wurde nicht gefunden.', + 'return_home' => 'Zurück zur Startseite', + 'error_occurred' => 'Es ist ein Fehler aufgetreten', + 'app_down' => ':appName befindet sich aktuell im Wartungsmodus.', + 'back_soon' => 'Wir werden so schnell wie möglich wieder online sein.' ]; diff --git a/resources/lang/de/pagination.php b/resources/lang/de/pagination.php index a3bf7c8c8..6ed0e30f0 100644 --- a/resources/lang/de/pagination.php +++ b/resources/lang/de/pagination.php @@ -14,6 +14,6 @@ return [ */ 'previous' => '« Vorherige', - 'next' => 'Nächste »', + 'next' => 'Nächste »', ]; diff --git a/resources/lang/de/passwords.php b/resources/lang/de/passwords.php index c44b49baa..25ed05a04 100644 --- a/resources/lang/de/passwords.php +++ b/resources/lang/de/passwords.php @@ -13,10 +13,10 @@ return [ | */ - 'password' => 'Passörter müssen mindestens sechs Zeichen enthalten und die Wiederholung muss identisch sein.', - 'user' => "Wir können keinen Benutzer mit dieser E-Mail Adresse finden.", - 'token' => 'Dieser Passwort-Reset-Token ist ungültig.', - 'sent' => 'Wir haben Ihnen eine E-Mail mit einem Link zum Zurücksetzen des Passworts zugesendet!', - 'reset' => 'Ihr Passwort wurde zurückgesetzt!', + 'password' => 'Passörter müssen mindestens sechs Zeichen enthalten und die Wiederholung muss übereinstimmen.', + 'user' => "Es konnte kein Benutzer mit dieser E-Mail-Adresse gefunden werden.", + 'token' => 'Dieser Link zum Zurücksetzen des Passwortes ist ungültig.', + 'sent' => 'Wir haben Ihnen eine E-Mail mit einem Link zum Zurücksetzen des Passworts zugesendet!', + 'reset' => 'Ihr Passwort wurde zurückgesetzt!', ]; diff --git a/resources/lang/de/settings.php b/resources/lang/de/settings.php index 668eecf33..9435ec808 100644 --- a/resources/lang/de/settings.php +++ b/resources/lang/de/settings.php @@ -20,17 +20,17 @@ return [ 'app_name' => 'Anwendungsname', 'app_name_desc' => 'Dieser Name wird im Header und in E-Mails angezeigt.', 'app_name_header' => 'Anwendungsname im Header anzeigen?', - 'app_public_viewing' => 'Öffentliche Ansicht erlauben?', - 'app_secure_images' => 'Erhöhte Sicherheit für Bilduploads aktivieren?', - 'app_secure_images_desc' => 'Aus Leistungsgründen sind alle Bilder öffentlich sichtbar. Diese Option fügt zufällige, schwer zu eratene, Zeichenketten vor die Bild-URLs hinzu. Stellen sie sicher, dass Verzeichnindexes deaktiviert sind, um einen einfachen Zugriff zu verhindern.', + 'app_public_viewing' => 'Öffentliche Ansicht erlauben?', + 'app_secure_images' => 'Erhöhte Sicherheit für hochgeladene Bilder aktivieren?', + '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ählen sie den Editor aus, der von allen Benutzern genutzt werden soll, um Seiten zu editieren.', + 'app_editor_desc' => 'Wählen Sie den Editor aus, der von allen Benutzern genutzt werden soll, um Seiten zu editieren.', 'app_custom_html' => 'Benutzerdefinierter HTML Inhalt', - 'app_custom_html_desc' => 'Jeder Inhalt, der hier hinzugefügt wird, wird am Ende der Sektion jeder Seite eingefügt. Diese kann praktisch sein, um CSS Styles anzupassen oder Analytics Code hinzuzufügen.', + 'app_custom_html_desc' => 'Jeder Inhalt, der hier hinzugefügt wird, wird am Ende der Sektion jeder Seite eingefügt. Diese kann praktisch sein, um CSS Styles anzupassen oder Analytics-Code hinzuzufügen.', 'app_logo' => 'Anwendungslogo', - 'app_logo_desc' => 'Dieses Bild sollte 43px hoch sein.
Größere Bilder werden verkleinert.', - 'app_primary_color' => 'Primäre Anwendungsfarbe', - 'app_primary_color_desc' => 'Dies sollte ein HEX Wert sein.
Wenn Sie nicht eingeben, wird die Anwendung auf die Standardfarbe zurückgesetzt.', + 'app_logo_desc' => "Dieses Bild sollte 43px hoch sein.\nGrößere Bilder werden verkleinert.", + 'app_primary_color' => 'Primäre Anwendungsfarbe', + 'app_primary_color_desc' => "Dies sollte ein HEX Wert sein.\nWenn Sie nicht eingeben, wird die Anwendung auf die Standardfarbe zurückgesetzt.", /** * Registration settings @@ -39,11 +39,11 @@ return [ 'reg_settings' => 'Registrierungseinstellungen', 'reg_allow' => 'Registrierung erlauben?', 'reg_default_role' => 'Standard-Benutzerrolle nach Registrierung', - 'reg_confirm_email' => 'Bestätigung per E-Mail erforderlich?', - 'reg_confirm_email_desc' => 'Falls die Einschränkung für Domains genutzt wird, ist die Bestätigung per E-Mail zwingend erforderlich und der untenstehende Wert wird ignoriert.', - 'reg_confirm_restrict_domain' => 'Registrierung auf bestimmte Domains einschränken', - 'reg_confirm_restrict_domain_desc' => 'Fügen sie eine, durch Komma getrennte, Liste von E-Mail Domains hinzu, auf die die Registrierung eingeschränkt werden soll. Benutzern wird eine E-Mail gesendet, um ihre E-Mail Adresse zu bestätigen, bevor sie diese Anwendung nutzen können.
Hinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung ändern.', - 'reg_confirm_restrict_domain_placeholder' => 'Keine Einschränkung gesetzt', + 'reg_confirm_email' => 'Bestätigung per E-Mail erforderlich?', + 'reg_confirm_email_desc' => 'Falls die Einschränkung für Domains genutzt wird, ist die Bestätigung per E-Mail zwingend erforderlich und der untenstehende Wert wird ignoriert.', + 'reg_confirm_restrict_domain' => 'Registrierung auf bestimmte Domains einschränken', + 'reg_confirm_restrict_domain_desc' => "Fügen sie eine durch Komma getrennte Liste von Domains hinzu, auf die die Registrierung eingeschränkt werden soll. Benutzern wird eine E-Mail gesendet, um ihre E-Mail Adresse zu bestätigen, bevor sie diese Anwendung nutzen können.\nHinweis: Benutzer können ihre E-Mail Adresse nach erfolgreicher Registrierung ändern.", + 'reg_confirm_restrict_domain_placeholder' => 'Keine Einschränkung gesetzt', /** * Role settings @@ -53,31 +53,31 @@ return [ 'role_user_roles' => 'Benutzer-Rollen', 'role_create' => 'Neue Rolle anlegen', 'role_create_success' => 'Rolle erfolgreich angelegt', - 'role_delete' => 'Rolle löschen', - 'role_delete_confirm' => 'Sie möchten die Rolle \':roleName\' löschen.', - 'role_delete_users_assigned' => 'Diese Rolle ist :userCount Benutzern zugeordnet. Sie können unten eine neue Rolle auswählen, die Sie diesen Benutzern zuordnen möchten.', + 'role_delete' => 'Rolle löschen', + 'role_delete_confirm' => 'Sie möchten die Rolle ":roleName" löschen.', + 'role_delete_users_assigned' => 'Diese Rolle ist :userCount Benutzern zugeordnet. Sie können unten eine neue Rolle auswählen, die Sie diesen Benutzern zuordnen möchten.', 'role_delete_no_migration' => "Den Benutzern keine andere Rolle zuordnen", - 'role_delete_sure' => 'Sind Sie sicher, dass Sie diese Rolle löschen möchten?', - 'role_delete_success' => 'Rolle erfolgreich gelöscht', + 'role_delete_sure' => 'Sind Sie sicher, dass Sie diese Rolle löschen möchten?', + 'role_delete_success' => 'Rolle erfolgreich gelöscht', 'role_edit' => 'Rolle bearbeiten', - 'role_details' => 'Rollen-Details', + 'role_details' => 'Rollendetails', 'role_name' => 'Rollenname', 'role_desc' => 'Kurzbeschreibung der Rolle', 'role_system' => 'System-Berechtigungen', 'role_manage_users' => 'Benutzer verwalten', - 'role_manage_roles' => 'Rollen & Rollen-Berechtigungen verwalten', - 'role_manage_entity_permissions' => 'Alle Buch-, Kapitel und Seiten-Berechtigungen verwalten', - 'role_manage_own_entity_permissions' => 'Nur Berechtigungen eigener Bücher, Kapitel und Seiten verwalten', - 'role_manage_settings' => 'Globaleinstellungen verwalrten', + 'role_manage_roles' => 'Rollen und Rollen-Berechtigungen verwalten', + 'role_manage_entity_permissions' => 'Alle Buch-, Kapitel- und Seiten-Berechtigungen verwalten', + 'role_manage_own_entity_permissions' => 'Nur Berechtigungen eigener Bücher, Kapitel und Seiten verwalten', + 'role_manage_settings' => 'Globaleinstellungen verwalten', 'role_asset' => 'Berechtigungen', - 'role_asset_desc' => 'Diese Berechtigungen gelten für den Standard-Zugriff innerhalb des Systems. Berechtigungen für Bücher, Kapitel und Seiten überschreiben diese Berechtigungenen.', + 'role_asset_desc' => 'Diese Berechtigungen gelten für den Standard-Zugriff innerhalb des Systems. Berechtigungen für Bücher, Kapitel und Seiten überschreiben diese Berechtigungenen.', 'role_all' => 'Alle', 'role_own' => 'Eigene', - 'role_controlled_by_asset' => 'Controlled by the asset they are uploaded to', + 'role_controlled_by_asset' => 'Berechtigungen werden vom Uploadziel bestimmt', 'role_save' => 'Rolle speichern', 'role_update_success' => 'Rolle erfolgreich gespeichert', 'role_users' => 'Dieser Rolle zugeordnete Benutzer', - 'role_users_none' => 'Bisher sind dieser Rolle keiner Benutzer zugeordnet,', + 'role_users_none' => 'Bisher sind dieser Rolle keine Benutzer zugeordnet', /** * Users @@ -85,27 +85,27 @@ return [ 'users' => 'Benutzer', 'user_profile' => 'Benutzerprofil', - 'users_add_new' => 'Benutzer hinzufügen', + 'users_add_new' => 'Benutzer hinzufügen', 'users_search' => 'Benutzer suchen', 'users_role' => 'Benutzerrollen', 'users_external_auth_id' => 'Externe Authentifizierungs-ID', - '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 Gast-Benutzer, die diese Seite betrachten. Er kann nicht zum Anmelden benutzt werden, sondern wird automatisch zugeordnet.', - 'users_delete' => 'Benutzer löschen', - 'users_delete_named' => 'Benutzer :userName löschen', - 'users_delete_warning' => 'Sie möchten den Benutzer \':userName\' gänzlich aus dem System löschen.', - 'users_delete_confirm' => 'Sind Sie sicher, dass Sie diesen Benutzer löschen möchten?', - 'users_delete_success' => 'Benutzer erfolgreich gelöscht.', + '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', + 'users_delete_named' => 'Benutzer ":userName" löschen', + 'users_delete_warning' => 'Der Benutzer ":userName" wird aus dem System gelöscht.', + 'users_delete_confirm' => 'Sind Sie sicher, dass Sie diesen Benutzer löschen möchten?', + 'users_delete_success' => 'Benutzer erfolgreich gelöscht.', 'users_edit' => 'Benutzer bearbeiten', 'users_edit_profile' => 'Profil bearbeiten', 'users_edit_success' => 'Benutzer erfolgreich aktualisisert', 'users_avatar' => 'Benutzer-Bild', - 'users_avatar_desc' => 'Dieses Bild sollte einen Durchmesser von ca. 256px haben.', + 'users_avatar_desc' => 'Das Bild sollte eine Auflösung von 256x256px haben.', 'users_preferred_language' => 'Bevorzugte Sprache', 'users_social_accounts' => 'Social-Media Konten', - 'users_social_accounts_info' => 'Hier können Sie andere Social-Media Konten für eine schnellere und einfachere Anmeldung verknüpfen. Wenn Sie ein Social-Media Konto hier lösen, bleibt der Zugriff erhalteb. Entfernen Sie in diesem Falle die Berechtigung in Ihren Profil-Einstellungen des verknüpften Social-Media Kontos.', - 'users_social_connect' => 'Social-Media Konto verknüpfen', - 'users_social_disconnect' => 'Social-Media Kontoverknüpfung lösen', - 'users_social_connected' => ':socialAccount Konto wurde erfolgreich mit dem Profil verknüpft.', - 'users_social_disconnected' => ':socialAccount Konto wurde erfolgreich vom Profil gelöst.', + 'users_social_accounts_info' => 'Hier können Sie andere Social-Media-Konten für eine schnellere und einfachere Anmeldung verknüpfen. Wenn Sie ein Social-Media Konto lösen, bleibt der Zugriff erhalten. Entfernen Sie in diesem Falle die Berechtigung in Ihren Profil-Einstellungen des verknüpften Social-Media-Kontos.', + 'users_social_connect' => 'Social-Media-Konto verknüpfen', + 'users_social_disconnect' => 'Social-Media-Konto lösen', + 'users_social_connected' => ':socialAccount-Konto wurde erfolgreich mit dem Profil verknüpft.', + 'users_social_disconnected' => ':socialAccount-Konto wurde erfolgreich vom Profil gelöst.', ]; diff --git a/resources/lang/de/validation.php b/resources/lang/de/validation.php index 3a6a1bc15..5ac4b1b27 100644 --- a/resources/lang/de/validation.php +++ b/resources/lang/de/validation.php @@ -19,54 +19,54 @@ return [ 'alpha' => ':attribute kann nur Buchstaben enthalten.', 'alpha_dash' => ':attribute kann nur Buchstaben, Zahlen und Bindestriche enthalten.', 'alpha_num' => ':attribute kann nur Buchstaben und Zahlen enthalten.', - 'array' => ':attribute muss eine Array sein.', + 'array' => ':attribute muss ein Array sein.', 'before' => ':attribute muss ein Datum vor :date sein.', 'between' => [ 'numeric' => ':attribute muss zwischen :min und :max liegen.', - 'file' => ':attribute muss zwischen :min und :max Kilobytes groß sein.', + 'file' => ':attribute muss zwischen :min und :max Kilobytes groß sein.', 'string' => ':attribute muss zwischen :min und :max Zeichen lang sein.', 'array' => ':attribute muss zwischen :min und :max Elemente enthalten.', ], 'boolean' => ':attribute Feld muss wahr oder falsch sein.', - 'confirmed' => ':attribute Bestätigung stimmt nicht überein.', + 'confirmed' => ':attribute stimmt nicht überein.', 'date' => ':attribute ist kein valides Datum.', 'date_format' => ':attribute entspricht nicht dem Format :format.', - 'different' => ':attribute und :other müssen unterschiedlich sein.', + 'different' => ':attribute und :other müssen unterschiedlich sein.', 'digits' => ':attribute muss :digits Stellen haben.', 'digits_between' => ':attribute muss zwischen :min und :max Stellen haben.', - 'email' => ':attribute muss eine valide E-Mail Adresse sein.', - 'filled' => ':attribute Feld ist erforderlich.', - 'exists' => 'Markiertes :attribute ist ungültig.', + 'email' => ':attribute muss eine valide E-Mail-Adresse sein.', + 'filled' => ':attribute ist erforderlich.', + 'exists' => ':attribute ist ungültig.', 'image' => ':attribute muss ein Bild sein.', - 'in' => 'Markiertes :attribute ist ungültig.', + 'in' => ':attribute ist ungültig.', 'integer' => ':attribute muss eine Zahl sein.', 'ip' => ':attribute muss eine valide IP-Adresse sein.', 'max' => [ - 'numeric' => ':attribute darf nicht größer als :max sein.', - 'file' => ':attribute darf nicht größer als :max Kilobyte sein.', - 'string' => ':attribute darf nicht länger als :max Zeichen sein.', + 'numeric' => ':attribute darf nicht größer als :max sein.', + 'file' => ':attribute darf nicht größer als :max Kilobyte sein.', + 'string' => ':attribute darf nicht länger als :max Zeichen sein.', 'array' => ':attribute darf nicht mehr als :max Elemente enthalten.', ], 'mimes' => ':attribute muss eine Datei vom Typ: :values sein.', 'min' => [ - 'numeric' => ':attribute muss mindestens :min. sein', - 'file' => ':attribute muss mindestens :min Kilobyte groß sein.', + 'numeric' => ':attribute muss mindestens :min sein', + 'file' => ':attribute muss mindestens :min Kilobyte groß sein.', 'string' => ':attribute muss mindestens :min Zeichen lang sein.', 'array' => ':attribute muss mindesten :min Elemente enthalten.', ], - 'not_in' => 'Markiertes :attribute ist ungültig.', + 'not_in' => ':attribute ist ungültig.', 'numeric' => ':attribute muss eine Zahl sein.', - 'regex' => ':attribute Format ist ungültig.', - 'required' => ':attribute Feld ist erforderlich.', - 'required_if' => ':attribute Feld ist erforderlich, wenn :other :value ist.', - 'required_with' => ':attribute Feld ist erforderlich, wenn :values vorhanden ist.', - 'required_with_all' => ':attribute Feld ist erforderlich, wenn :values vorhanden sind.', - 'required_without' => ':attribute Feld ist erforderlich, wenn :values nicht vorhanden ist.', - 'required_without_all' => ':attribute Feld ist erforderlich, wenn :values nicht vorhanden sind.', - 'same' => ':attribute und :other muss übereinstimmen.', + 'regex' => ':attribute ist in einem ungültigen Format.', + 'required' => ':attribute ist erforderlich.', + 'required_if' => ':attribute ist erforderlich, wenn :other :value ist.', + 'required_with' => ':attribute ist erforderlich, wenn :values vorhanden ist.', + 'required_with_all' => ':attribute ist erforderlich, wenn :values vorhanden sind.', + 'required_without' => ':attribute ist erforderlich, wenn :values nicht vorhanden ist.', + 'required_without_all' => ':attribute ist erforderlich, wenn :values nicht vorhanden sind.', + 'same' => ':attribute und :other müssen übereinstimmen.', 'size' => [ 'numeric' => ':attribute muss :size sein.', - 'file' => ':attribute muss :size Kilobytes groß sein.', + 'file' => ':attribute muss :size Kilobytes groß sein.', 'string' => ':attribute muss :size Zeichen lang sein.', 'array' => ':attribute muss :size Elemente enthalten.', ], diff --git a/resources/views/base.blade.php b/resources/views/base.blade.php index b1cacf08c..1c972e4fb 100644 --- a/resources/views/base.blade.php +++ b/resources/views/base.blade.php @@ -36,7 +36,7 @@